TITLE USERLIBA ver. <87/01/26>
*
**********************************************************************
* FILE HEADER BLOCK
*
NIBASC \USERLIBA\
NIBHEX 802E LEX type
CON(2) 0 flags=0
NIBHEX 0000 Mn/Hr
NIBHEX 000078 Dy/Mo/Yr
REL(5) =FILEND
*
**********************************************************************
* LEX HEADER BLOCK
*
CON(2) #52 LEX ID, see USERLIB1 for assignment
CON(2) #01 Low Token
CON(2) #13 High Token
CON(5) 0 No link
*
* Speed Table
*
NIBHEX 0 Speed table exists
CON(3) (TxTbEn)-(TxTbSt) A
CON(3) (TxTbEn)-(TxTbSt) B
CON(3) (TxTbEn)-(TxTbSt) C
CON(3) (TxTbEn)-(TxTbSt) D
CON(3) (TxTbEn)-(TxTbSt) E
CON(3) (TxTbEn)-(TxTbSt) F
CON(3) (TxTbEn)-(TxTbSt) G
CON(3) (TxTbEn)-(TxTbSt) H
CON(3) (TxEn01)-(TxTbSt) I
CON(3) (TxTbEn)-(TxTbSt) J
CON(3) (TxEn02)-(TxTbSt) K
CON(3) (TxEn05)-(TxTbSt) L
CON(3) (TxEn08)-(TxTbSt) M
CON(3) (TxTbEn)-(TxTbSt) N
CON(3) (TxTbEn)-(TxTbSt) O
CON(3) (TxTbEn)-(TxTbSt) P
CON(3) (TxTbEn)-(TxTbSt) Q
CON(3) (TxEn10)-(TxTbSt) R
CON(3) (TxEn14)-(TxTbSt) S
CON(3) (TxEn19)-(TxTbSt) T
CON(3) (TxTbEn)-(TxTbSt) U
CON(3) (TxTbEn)-(TxTbSt) V
CON(3) (TxTbEn)-(TxTbSt) W
CON(3) (TxTbEn)-(TxTbSt) X
CON(3) (TxTbEn)-(TxTbSt) Y
CON(3) (TxTbEn)-(TxTbSt) Z
NIBHEX 0 Speed table exists
*
*
CON(4) (TxTbSt)+1-(*) Offset to TEXT Table
CON(4) 0 No message table
REL(5) POLHND Offset to poll handler
*
**********************************************************************
*
* STITLE Main Table
*
CON(3) (TxEn04)-(TxTbSt)
REL(5) KEYW
NIBHEX F
*
CON(3) (TxEn16)-(TxTbSt)
REL(5) SCROLL
NIBHEX D
*
CON(3) (TxEn09)-(TxTbSt)
REL(5) MSG$
NIBHEX F
*
CON(3) (TxEn01)-(TxTbSt)
REL(5) INLINE
NIBHEX D
*
CON(3) (TxEn02)-(TxTbSt)
REL(5) KYNAM$
NIBHEX F
*
CON(3) (TxEn03)-(TxTbSt)
REL(5) KEYNUM
NIBHEX F
*
CON(3) (TxEn18)-(TxTbSt)
REL(5) STD$
NIBHEX F
*
CON(3) (TxEn05)-(TxTbSt)
REL(5) LTRIM$
NIBHEX F
*
CON(3) (TxEn13)-(TxTbSt)
REL(5) RTRIM$
NIBHEX F
*
CON(3) (TxEn19)-(TxTbSt)
REL(5) TRIM$
NIBHEX F
*
CON(3) (TxEn12)-(TxTbSt)
REL(5) RPT$
NIBHEX F
*
CON(3) (TxEn10)-(TxTbSt)
REL(5) rev$
NIBHEX F
*
CON(3) (TxEn07)-(TxTbSt)
REL(5) LWRC$
NIBHEX F
*
CON(3) (TxEn06)-(TxTbSt)
REL(5) LWRC$
NIBHEX F
*
CON(3) (TxEn11)-(TxTbSt)
REL(5) ROT$
NIBHEX F
*
CON(3) (TxEn17)-(TxTbSt)
REL(5) SPAN
NIBHEX F
*
CON(3) (TxEn08)-(TxTbSt)
REL(5) MEMBER
NIBHEX F
*
CON(3) (TxEn14)-(TxTbSt)
REL(5) SBIT$
NIBHEX F
*
CON(3) (TxEn15)-(TxTbSt)
REL(5) SBIT
NIBHEX F
*
**********************************************************************
* STITLE TEXT TABLE
*
TxTbSt
TxEn01
CON(1) (TxEn02)-(*)-4
NIBASC \INLINE\
CON(2) #04
*
TxEn02
CON(1) (TxEn03)-(*)-4
NIBASC \KEYNAM$\
CON(2) #05
*
TxEn03
CON(1) (TxEn04)-(*)-4
NIBASC \KEYNUM\
CON(2) #06
*
TxEn04
CON(1) (TxEn05)-(*)-4
NIBASC \KEYWAIT$\
CON(2) #01
*
TxEn05
CON(1) (TxEn06)-(*)-4
NIBASC \LTRIM$\
CON(2) #08
*
TxEn06
CON(1) (TxEn07)-(*)-4
NIBASC \LWC$\
CON(2) #0E
*
TxEn07
CON(1) (TxEn08)-(*)-4
NIBASC \LWRC$\
CON(2) #0D
*
TxEn08
CON(1) (TxEn09)-(*)-4
NIBASC \MEMBER\
CON(2) #11
*
TxEn09
CON(1) (TxEn10)-(*)-4
NIBASC \MSG$\
CON(2) #03
*
TxEn10
CON(1) (TxEn11)-(*)-4
NIBASC \REV$\
CON(2) #0C
*
TxEn11
CON(1) (TxEn12)-(*)-4
NIBASC \ROT$\
CON(2) #0F
*
TxEn12
CON(1) (TxEn13)-(*)-4
NIBASC \RPT$\
CON(2) #0B
*
TxEn13
CON(1) (TxEn14)-(*)-4
NIBASC \RTRIM$\
CON(2) #09
*
TxEn14
CON(1) (TxEn15)-(*)-4
NIBASC \SBIT$\
CON(2) #12
*
TxEn15
CON(1) (TxEn16)-(*)-4
NIBASC \SBIT\
CON(2) #13
*
TxEn16
CON(1) (TxEn17)-(*)-4
NIBASC \SCROLL\
CON(2) #02
*
TxEn17
CON(1) (TxEn18)-(*)-4
NIBASC \SPAN\
CON(2) #10
*
TxEn18
CON(1) (TxEn19)-(*)-4
NIBASC \STD$\
CON(2) #07
*
TxEn19
CON(1) (TxTbEn)-(*)-4
NIBASC \TRIM$\
CON(2) #0A
*
TxTbEn
NIBHEX 1FF Text table terminator
**********************************************************************
* STITLE POLL HANDLER
*
POLHND
?B=0 B VER poll?
GOYES VER$P Yes
GONC CA442 No, go handle the other CUSTUTIL polls
VER$P A=R2 Fetch AVMEMS
C=R3 Fetch stack pointer
D1=C
D1=D1- (VER$en)-(VER$st)-2 allow for our reply
CD1EX
?A>C A not enough memory?
GOYES VER$Pe exit not handled Cy=1
D1=C restore stack pointer
R3=C and save for next file
VER$st
LCASC \ Lib:a\
VER$en
DAT1=C (VER$en)-(VER$st)-2 Write our reply
VER$Pe
RTNSXM exit
*
**********************************************************************
*
*
*
* now, poll 1C, or pWTKY -- Waiting for key in KEYRD
CA442 LCHEX 1C
?B=C B
GOYES CA467
* Poll 1B, or pKYDF -- Build key defn in KEYRD
LCHEX 1B
?B=C B
GOYES CA4A0
* Poll F2, or pERROR -- Error message about to go out.
LCHEX F2
?B#C B
GOYES CA461
GOSUB CA82C
CA461 P= 1
P=P-1
CA465 RTNSXM
CA467 GOSUB CA812
GONC CA465
A=DAT1 1
?A#0 P
GOYES CA47A
GONC CA465
CA47A A=0 A
DAT1=A 1
C=RSTK
R3=C
C=D A
GOSUB CA81E
LCHEX 4E
GOSUB dspchc
C=R3
RSTK=C
C=R0
D=C A
GONC CA465
CA4A0 GOSUB CA812
GONC CA465
C=R0
GOSBVL CSRW5
RSTK=C
D1=D1+ 3
CD1EX
D0=C
R3=C
C=C+A A
D1=C
D1=D1- 3
C=RSTK
B=0 A
CA4CB B=B+1 A
D1=D1- 2
CD1EX
A=R3
?C
SCRLLd
DECOMP GOVLNG FIXDC
REL(5) DECOMP
REL(5) PARSE
INLINE
GOSUB CA7CC
GOSUB CAB2C
GOSBVL POP1S
C=0 A
LCHEX 43C
?CC A
GOYES CA5A4
CD1EX
CR1EX
D1=C
GOSBVL gtkycd
A=B A
D0=D0- 2
DAT0=A B
GONC CA554
CA5A4 LCHEX 0B
CA5A8 GOVLNG MFERR
CA5AF D1=D1- 2
CA5B2 A=DAT1 B
CD1EX
D1=C
?D<=C A
RTNYES A
C=RSTK
?B#0 A
GOYES CA57F
C=R3
AD0EX
R2=A
C=C-A A
?C=0 A
GOYES CA5A4
R1=C
C=C+1 A
C=C+1 A
C=C+1 A
B=C A
LC(3) bINLIN
GOSBVL I/OALL
GONC CA5A8
D1=D1+ 3
A=R2
D0=A
C=R1
GOSBVL MOVEU3
C=R3
D1=C
ST=0 6
ST=1 7
GOSUB CA7E0
R3=A
ST=0 7
GOSUB CA7E0
R2=A
GOSBVL REVPOP
R1=A
CD1EX
GOSUB CA81E
LCHEX 3E
GOSUB dspchc
LCHEX 20
GOSUB dspchc
LCHEX 08
GOSUB dspchc
C=0 W
A=R1
C=A A
A=R0
CSRB
CA658 C=C-1 A
GOC CA683
RSTK=C
D1=A
C=DAT1 B
GOSUB dspchc
C=RSTK
A=R0
A=A+1 A
A=A+1 A
R0=A
GONC CA658
CA678 GOSUB CA82C
GOVLNG INPOFF
CA683 GOSUB CA812
C=0 A
?ST=0 6
GOYES CA690
C=C+1 A
CA690 DAT1=C X
C=R3
GOSBVL CURSRT
A=R2
LCHEX 5F
B=C A
D0=(5) WINDLN
C=DAT0 B
B=B-C B
?A<=B B
GOYES CA6BB
A=B A
CA6BB D0=D0+ 9 D0 @ FIRSTC
DAT0=A B
D0=D0- 4 D0 @ (DSPSTA)+3
C=DAT0 B
CSTEX
ST=0 1
CSTEX
DAT0=C B
GOSBVL BLDDSP
CA6D8 GOSBVL CHEDIT
LCHEX 18
?C=A B
GOYES CA678
GOSBVL ATNCLR
GOSUB CA812
A=0 A
GOSUB CA849
GONC CA6FF
A=A+1 XS
CA6FF C=A A
D0=(5) CURSOR
C=DAT0 B
CSL A
CSL A
D0=D0- 2
C=DAT0 B
RSTK=C
C=0 A
D1=D1+ 1
C=DAT1 B
?C#0 B
GOYES CA73A
GOSUB CA849
GONC CA6D8
GOSUB CA812
LCHEX 1
DAT1=C 1
GOTO CA6D8
CA73A RSTK=C
GOSBVL FINLIN
GOSUB CA82C
GOSUB CAB33
GOSUB CA7AD
GOSUB CA838
C=RSTK
A=C A
GOSUB CA7D5
GOSUB CAB07
GOSUB CA7AD
GOSUB CA838
C=RSTK
B=C A
RSTK=C
BSR A
BSR A
A=B A
D=0 S
?A=0 XS
GOYES CA781
D=D-1 S
A=0 XS
CA781 GOSUB CA7D3
C=D S
A=C S
GOSUB CAB07
GOSUB CA7AD
GOSUB CA838
C=RSTK
A=0 A
A=C B
GOSUB CA7D3
GOSUB CAB07
nxtstm GOVLNG NXTSTM
CA7AD A=DAT0 B
LCHEX F1
?C#A B
GOYES nxtstm
D0=D0+ 2
CD0EX
D0=C
D1=(5) S-R1-2
DAT1=C A
CA7CC GOVLNG EXPEX-
CA7D3 A=A+1 A
CA7D5 GOSBVL HDFLT
SETHEX
RTN
CA7E0 GOSBVL ARGSTA
?ST=0 7
GOYES CA7F7
?A=0 S
GOYES CA7F7
ST=1 6
A=0 S
CA7F7 D1=D1+ 16
GOSUB fltdh
A=A-1 A
GOC CA80E
C=0 A
LCHEX 5F
?C>=A A
RTNYES
CA80E GOTO CA5A4
CA812 LCHEX 80A
GOVLNG I/OFND
CA81E R0=C
LCHEX 1B
dspchc GOVLNG DSPCHC
CA82C LCHEX 80A
GOVLNG I/ODAL
CA838 C=B A
GOSUB pop1r
SETHEX
B=C A
GOVLNG DEST
CA849 D0=(5) #2F478 D0 @ (DSPSTA)+3
C=DAT0 B
CSTEX
?ST=1 7
GOYES CA85A
CA85A CSTEX
RTN
CA85E GOSBVL NUMCK
CA865 LCHEX F1
?C=A B
RTNYES
CA86E GOVLNG SYNTXe
PARSE GOSBVL STRGCK
GOSUB CA865
GOSUB CA85E
GOSUB CA85E
GOSBVL STRGCK
GOSUB CA8A8
GONC CA86E
GOSUB CA8A8
GONC CA8A1
GOSUB CA8A8
CA8A1 GOVLNG RESPTR
CA8A8 GOSBVL COMCK+
RTNNC
CD1EX
D1=C
R2=C
GOSBVL EXPPAR
GOC CA8D7
?ST=1 0
GOYES CA8D7
?XM=0
GOYES CA8D2
GONC CA8D7 (B.E.T.)
CA8D2 ?ST=1 3
RTNYES
CA8D7 C=R2
D1=C
ST=1 4
GOVLNG IVVARe
*
*
*
* disassembly for KEYNUM in CUSTUTIL
*
NIBHEX 411
KEYNUM
GOSBVL SAVD1
D1=C
ST=1 10
GOSBVL GTKYC+
GOSBVL RSTD1
D1=D1+ 2
A=DAT1 A
D1=D1- 2
CD1EX
A=C+A A
D1=A
A=B A
GOSUB CA7D5
DAT1=A W
expr GOVLNG EXPR
* start of KEYNAM$ EXECUTION CODE
*
* entry for KEYNAM$
*
NIBHEX 811
KYNAM$
GOSBVL ARGSTA
D1=D1+ 16
GOSUB fltdh
C=0 A
LCHEX A8
?C>=A A
GOYES CA957
GOTO CA5A4
CA947 C=0 A
GOSBVL STRHDR
D1=D1- 16
GOTO expr
CA957 ?A=0 A
GOYES CA947
GOSUB CAB2C
GOSBVL KEYNAM
R0=A
C=0 A
CPEX 0
RSTK=C
P= 0
C=C+1 A
GOSBVL STRHDR
C=RSTK
P=C 0
A=R0
DAT1=A WP
D1=D1- 16
GOSBVL REV$
GOSUB CAB33
GOTO expr
NIBHEX 811
MSG$
GOSUB pop1r
GOSUBL fltdh
GONC MSG$07
?XM=0
GOYES MSG$15
MSG$07 A=0 A
MSG$09 R0=A
SETHEX
D1=D1+ 16
GOSBVL =R3=D10
GOSBVL =FPOLL
CON(2) =pTRANS
GOSBVL =D0=AVS
C=R0
GOSBVL TBMSG$
GOVLNG =ERRM$f
MSG$15 GOSBVL =HEXDEC
LCHEX #00256
?C<=A X
GOYES MSG$07
R0=A
ASR W
ASR A
ASR A
?C<=A A
GOYES MSG$07
GOSBVL A-MULT
C=R0
C=0 M
A=C+A A
GOSBVL DECHEX
GOC MSG$09 B.E.T.
SCRLLp GOVLNG FIXP
REL(5) SCRLLd
*
REL(5) SCRLLp
*
*
* entry for SCROLL follows. Since SCROLL is a statement
* the previous 10 nibbles are in fact offsets to the
* parse and decompile routines...
SCROLL
*
GOSBVL mgosub
CON(5) EXPEXC
GOSBVL =D1=AVE
A=DAT1 A
GOSUBL pophex
A=A-1 A
GONC SCRL10
A=0 A
SCRL10 B=0 A
B=A B
D0=(5) WINDLN
A=DAT0 B
C=0 A
LCHEX 5F
C=C-A B
?B>C B
GOYES SCRL20
C=B A
SCRL20 A=C B
SCRL30 LC(5) =DSPBFS
C=C+A A
C=C+A A
D0=C
C=DAT0 B
?C#0 B
GOYES SCRL40
A=A-1 A
GONC SCRL30
A=0 A
SCRL40 D0=(4) FIRSTC
DAT0=A B
D0=D0- 4
C=DAT0 A
CSTEX
BitsOk EQU 1
ST=0 BitsOk
CSTEX
DAT0=C A
GOSBVL =SCRLLR
GOTO nxtstm
pop1r GOVLNG POP1R
pophex GOSUB pop1r
D1=D1+ 16
fltdh GOSBVL FLTDH
RTNC
GOTO CA5A4
*
* KEYWAIT$ ENTRY FOLLOWS
NIBHEX 00 * FUNCTION WITHOUT PARMS
KEYW
CD0EX
R0=C
CD1EX
R1=C
CAADF GOSBVL SLEEP
GOC CAAFC
C=R1
D1=C
C=R0
D0=C
GOVLNG KEY$
CAAFC GOSBVL CKSREQ
GOTO CAADF
CAB07 GOSBVL D1FSTK
D1=D1- 16
CD1EX
D1=(5) AVMEME
DAT1=C A
D1=C
DAT1=A W
GOVLNG STORE
CAB2C GOVLNG SAVD0
CAB33 GOVLNG RSTD0
**************************************************
* CUSTUTIL EQUates
FIXDC EQU #05493
FIXP EQU #02A6E
EXPEXC EQU #0F186
POP1S EQU #0BD38
gtkycd EQU #08E9A
MFERR EQU #09393
I/OALL EQU #1197D
MOVEU3 EQU #1B177
REVPOP EQU #0BD31
INPOFF EQU #18B49
CURSRT EQU #096C1
EXPPAR EQU #03FD9
WINDLN EQU #2F473
BLDDSP EQU #01898
CHEDIT EQU #14C99
ATNCLR EQU #00510
CURSOR EQU #2F47E
FINLIN EQU #18A3A
NXTSTM EQU #08A48
S-R1-2 EQU #2F88B
EXPEX- EQU #0F178
HDFLT EQU #1B31B
ARGSTA EQU #0E90C
I/OFND EQU #118BA
DSPCHC EQU #01C3C
I/ODAL EQU #11A41
DEST EQU #0F7B0
DSPSTA EQU #2F475
NUMCK EQU #0369D
SYNTXe EQU #02E2B
STRGCK EQU #036BA
RESPTR EQU #03172
COMCK+ EQU #032AE
IVVARe EQU #02E66
POP1R EQU #0E8FD
FLTDH EQU #1B223
D1FSTK EQU #1955D
AVMEME EQU #2F599
STORE EQU #0F5F8
SAVD0 EQU #1C587 this is apparently now supported
RSTD0 EQU #06832 this also seems supported
=R3=D10 EQU #03526
=FPOLL EQU #1250A
=pTRANS EQU #EF
=D0=AVS EQU #09B2C
TBMSG$ EQU #099AB
=ERRM$f EQU #09806
=HEXDEC EQU #0ECAF
A-MULT EQU #1B349
DECHEX EQU #1B2D2
mgosub EQU #1AF01
=D1=AVE EQU #18651
=DSPBFS EQU #2F480
FIRSTC EQU #2F47C
=SCRLLR EQU #0212E
DEFADR EQU #2F967 key definition info, 8 nibs
SAVD1 EQU #1C578 save D1 in F-R0-1. Apparently now supported
RSTD1 EQU #1C596 restore D1 from F-R0-1. Apparently now supported
GTKYC+ EQU #08D9B Get keycode
EXPR EQU #0F23C expression execution reentry
bINLIN EQU #80A INLINE statement buffer
CSRW5 EQU #0ED2C
STRHDR EQU #0F09A string header
KEYNAM EQU #1AC04 returns keyname from keycode
REV$ EQU #1B38E
SLEEP EQU #006C2
KEY$ EQU #1ACA8
CKSREQ EQU #00721
*
*
* STD$ Extracted from DATALEX (Data managment pack)
* All other string functions in this file extracted from HP User Library
* STRINGLX file. Extracted by Michael Markov with the intent to eventually
* combine CUSTUTIL, STRINGLX and the STD$ keyword into a single file with
* a speed table. Disassembly of CUSTUTIL not finished...
**********************************************************************
*****************************
*
* Extracted from DATALEX 1/13/1987
NIBHEX 811
STD$ C=0 A
LCHEX #52
B=C A
CD0EX
D0=(5) #2F594
A=DAT0 A
D0=(4) #F6DC
C=DAT0 S
R3=C
CD1EX
D1=C
A=A+B A
?CC B
GOYES C9F2E
?D=A A
GOYES CA0D2
CA0CB GOVLNG #0944D
CA0D2 A=R1
A=A-1 A
R1=A
GOC CA0ED
C=R3
AD1EX
GOSBVL #1B0EE
GONC CA0D2
CA0ED A=R3
CD1EX
D1=C
A=A-C A
B=A A
GOTO C9EC9
* CA0FE ST=0 2
* CA101 P= 7
* END OF RPT$
NIBHEX 8422
ROT$ GOSUB CA2EC
GOSUB CA2BE
GOC CA11C
GOSUB CA2CC
ST=1 1
GOC CA125
?XM=0
GOYES CA120
CA11C GOTO C9F8A
CA120 ST=0 1
A=-A A
CA125 A=A+A A
GOC CA11C
R1=A
A=0 W
GOSUB CA2D6
R2=A
?A=0 A
GOYES CA17B
C=R1
CA13F ?C<=A A
GOYES CA14C
C=C-A A
R1=C
GONC CA13F
CA14C ?ST=1 1
GOYES CA155
GOSUB CA2FB
CA155 A=R1
GOSUB CA2FB
A=R2
GOSUB CA2FB
A=R2
C=R1
A=A-C A
GOSUB CA2FB
?ST=1 1
GOYES CA17B
A=R2
GOSUB CA2FB
CA17B A=R2
B=A A
GOTO C9EC9
* ?P# 8
* CA187 GOYES CA1AB
* CA189 GOC CA1E2
* end of ROT$
* SBIT$ ENTRY POINT
NIBHEX 888424
SBIT$
ST=1 0
CA18D P=C 15
C=0 W
C=C-1 W
R1=C
?P= 2
GOYES CA203
?P= 3
GOYES CA1D3
GOSUB CA2BE
GOC CA20A
CA1AB GOSUB CA2CC
GONC CA20A
ASRC
?A#0 A
GOYES CA20A
?A=0 S
GOYES CA1CA
A=A-1 S
?A#0 S
GOYES CA20A
A=A+1 S
CA1CA C=R1
C=A S
R1=C
CA1D3 GOSUB CA2BE
GOC CA20A
GOSUB CA2CC
GONC CA20A
ASRC
?A#0 A
GOYES CA20A
A=A+A S
GOC CA20A
ASRB
C=A S
P=C 15
C=R1
C=P 5
R1=C
CA203 GOSUB CA2BE
GONC CA20E
CA20A GOTO C9F8A
CA20E GOSUB CA2CC
GONC CA20A
C=R1
C=A A
A=0 W
GOSUB CA2D6
R0=A
?C=0 A
GOYES CA20A
C=C+C A
GOC CA20A
A=A-C A
GOC CA20A
CD1EX
D1=C
A=C+A A
AD1EX
C=DAT1 B
D=0 A
D=D+1 A
P= 5
CA247 C=C-1 P
GOC CA259
D=D+D B
GONC CA247
C=-C-1 B
GONC CA2A5
CA259 ?ST=1 0
GOYES CA281
D1=A
A=R0
CD1EX
C=C+A A
CD1EX
A=0 W
C=D&C A
?C=0 B
GOYES CA27D
P= 14
A=A+1 P
CA27D GOTO C9EDD
CA281 ?C=0 S
GOYES CA299
C=C+1 S
GONC CA2A1
B=C A
C=D&C A
BCEX A
?B=0 B
GOYES CA2A1
CA299 D=-D-1 A
C=D&C A
D=0 A
CA2A1 C=D!C A
CA2A5 DAT1=C B
D1=A
A=R0
GOTO C9ED2
* CA2B2 ?P# 4
* CA2B5 GOYES CA2E8
******************************
* SBIT ENTRY
NIBHEX 88433
SBIT ST=0 0
GOTO CA18D
CA2BE GOVLNG #0BD8D
CA2C5 GOVLNG #1B31B
CA2CC D1=D1+ 16
GOVLNG #1B223
CA2D6 GOVLNG #0BD38
CA2DD D0=(5) #2F8BB
A=DAT0 A
D0=A
RTN
CA2EC AD0EX
D0=(5) #2F8BB
DAT0=A A
RTN
CA2FB B=0 W
B=A A
SB=0
BSRB
BSRB
CD1EX
C=B+C A
C=B+C A
D1=C
D0=C
?SB=0
GOYES CA330
GONC CA32D
CA31E D1=D1- 2
A=DAT0 B
C=DAT1 B
DAT1=A B
DAT0=C B
CA32D D0=D0+ 2
CA330 B=B-1 A
GONC CA31E
RTNCC
FILEND
END