;
;  Cromemco CDOS Z80 Assembler version 2.15
;
cr              equ     0dh
lf              equ     0ah
tab             equ     9
squote          equ     27h
bdos            equ     5
cpm             equ     0
deffcb          equ     5ch
dfcbfn          equ     deffcb+1
dfcbft          equ     deffcb+9

                org     100h

start:          LD      SP,3DCDH
                LD      IX,35F4H
                LD      DE,asmbnr
                CALL    prtmsg
                CALL    crlf
                LD      HL,3DCFH
                LD      (3DCDH),HL
                LD      HL,(6)
                LD      DE,40CFH
                CALL    subdehl
                JP      C,nomem
                SUB     A
                LD      (IX+0),A
                LD      (IX+1),A
                LD      (IX+2),A
                LD      (35EEH),A
                LD      A,'<'
                LD      (35EFH),A
                LD      A,'O'
                LD      (35ECH),A
                LD      HL,81H
                CALL    fnonsp  ;locate next non-space
clnlp:          CALL    fnxtsp  ;locate next space
                CALL    fnonsp
                AND     A
                JR      Z,dofile
                PUSH    HL
                CALL    doopts
                POP     HL
                JR      clnlp

dofile:         LD      DE,dfcbfn
                PUSH    DE
                PUSH    DE
                PUSH    DE
                PUSH    DE
                PUSH    DE
                LD      HL,fcbsrc
                CALL    cpflnm
                POP     DE
                LD      HL,fcbprn
                CALL    cpflnm
                POP     DE
                LD      HL,fcbrel
                CALL    cpflnm
                POP     DE
                LD      HL,fcbtmp
                CALL    cpflnm
                POP     DE
                LD      HL,fcb$$0
                CALL    cpflnm
                LD      DE,3D59H
                POP     HL
                LD      BC,6
                LDIR
; (dfcbft....+2) are the file extensions
                LD      A,(dfcbft)
                CALL    chkchar
                LD      (fcbsrc+3),A
                CALL    opnsrc
                LD      A,(dfcbft+1)
                CALL    toupr
                CP      'Z'
                JR      Z,norel
                SET     0,(IX+0)
                CALL    chkchar
                LD      (fcbrel+3),A
                LD      A,8
                LD      (dt2a2c),A
                LD      HL,fcbrel
                CALL    fildco
norel:          LD      A,(dfcbft+2)
                CALL    toupr
                CP      'Z'
                JR      Z,noprn
                CP      'X'
                JR      Z,seeX
                CP      'Y'
                JR      NZ,doprn
                SET     7,(IX+0)
                JR      noprn

seeX:           SET     6,(IX+0)
                JR      noprn

doprn:          CALL    chkchar
                LD      (fcbprn+3),A
                LD      HL,fcbprn
                CALL    fildco
                SET     1,(IX+0)
noprn:          BIT     2,(IX+0)
                LD      HL,fcbtmp
                CALL    NZ,fildco
                BIT     3,(IX+1)
                LD      HL,fcb$$0
                CALL    NZ,fildco
                JP      mainlp

chkchar:        SUB     20H
                RET     Z
                SUB     20H
                JR      C,invchr
                CP      5
                RET     C
invchr:         LD      DE,dsermsg
                JP      pr&lv

dsermsg:        db      'selected disk'
                db      ' error',cr,lf,0

doopts:         LD      DE,optab
dopt1:          PUSH    HL
                LD      A,(DE)
                AND     A
                JP      Z,invop
laba:           LD      A,(DE)
                AND     A
                JP      M,labb
                CALL    cmpstr
                CP      (HL)
                JR      NZ,labc
                INC     DE
                INC     HL
                JR      laba

labb:           CALL    cmpstr
                JR      NZ,labd
                POP     BC
                INC     HL
                LD      B,H
                LD      C,L
                INC     DE
                LD      A,(DE)
                LD      L,A
                INC     DE
                LD      A,(DE)
                LD      H,A
                JP      (HL)

labc:           LD      A,(DE)
                AND     A
                JP      M,labd
                INC     DE
                JR      labc

labd:           INC     DE
                INC     DE
                INC     DE
                POP     HL
                JR      dopt1

optab:          db      'RANG','E'+128
                dw      rngcod
                db      'PARIT','Y'+128
                dw      parcod
                db      'XRE','F'+128
                dw      xrfcod
                db      'SYM','B'+128
                dw      symcod
                db      'PAGE','='+128
                dw      pgecod
                db      'TOP','='+128
                dw      topcod
                db      'WIDTH','='+128
                dw      wthcod
                db      'MACRO','='+128
                dw      macod
                db      'NOCON','D'+128
                dw      ncncod
                db      'NOGE','N'+128
                dw      ngncod
                db      'CON','D'+128
                dw      cndcod
                db      'GE','N'+128
                dw      gencod
                db      'OPCOD','E'+128
                dw      opdcod
                db      'DEBU','G'+128
                dw      dbgcod
                db      'HEX','='+128
                dw      hxecod
                db      'HE','X'+128
                dw      hxcod
                db      0

invop:          LD      DE,invopmsg
                JP      pr&lv

invopmsg:       db      'invalid option',cr,lf,0

rngcod:         SET     4,(IX+0)
                RET

parcod:         SET     5,(IX+0)
                RET

xrfcod:         SET     2,(IX+0)
                RET

symcod:         SET     3,(IX+0)
                RET

pgecod:         LD      D,0AH
                CALL    getnum
                LD      (35EFH),A
                CP      0FFH
                JP      Z,invop
                RET

topcod:         LD      D,0
                CALL    getnum
                LD      (35EEH),A
                RET

wthcod:         LD      D,27H
                CALL    getnum
                LD      (35ECH),A
                RET

macod:          SET     0,(IX+1)
                LD      H,B               ;HL -> filename
                LD      L,C
                LD      DE,fcbext+3       ;DE -> FCB
                LD      C,86H             ;Convert filename to
                CALL    bdos              ; file control block
                LD      HL,fcbext
                CALL    filopn
                JR      Z,nomaclb
                JP      macros

nomaclb:        LD      DE,mlnfmsg
                jp      pr&lv

mlnfmsg:        db      'MACRO library not'
                db      ' found',cr,lf,0

ncncod:         SET     2,(IX+1)
                RES     5,(IX+1)
                RET

ngncod:         SET     1,(IX+1)
                RES     6,(IX+1)
                RET

dbgcod:         SET     4,(IX+1)
                RET

opdcod:         SET     3,(IX+1)
                RET

cndcod:         SET     5,(IX+1)
                RES     2,(IX+1)
                RET

gencod:         SET     6,(IX+1)
                RES     1,(IX+1)
                RET

hxcod:          LD      HL,0
                JR      dohex

hxecod:         LD      H,B
                LD      L,C
hxell:          LD      A,(HL)
                AND     A
                JR      Z,sethex
                CP      ' '
                JR      Z,sethex
                INC     HL
                JR      hxell

sethex:         CALL    cnvhxv
                JP      C,invop
                EX      DE,HL
dohex:          LD      (3668H),HL
                SET     0,(IX+2)
                LD      HL,hxftyp
                LD      DE,relftyp
                LD      BC,3
                LDIR
                SUB     A
                LD      (flaghx),A
                RET

hxftyp:         db      'HEX'

getnum:         PUSH    DE
                LD      H,B
                LD      L,C
                CALL    fnxtsp
                CALL    getval
                JP      C,invop
                LD      A,D
                AND     A
                JP      NZ,invop
                LD      A,E
                POP     DE
                CP      D
                JP      C,invop
                RET

fnxtsp:         LD      A,(HL)
                CP      ' '
                RET     Z
                AND     A
                RET     Z
                INC     HL
                JR      fnxtsp

mainlp:         LD      (IX+14H),1
                LD      DE,(3DCDH)
                LD      BC,3
                LD      HL,six9oh
                LDIR
                LD      (3D5FH),DE
                LD      HL,(6)
                DEC     HL
                LD      (HL),0
                LD      (366CH),HL
                CALL    init41
                LD      DE,3A93H
                LD      BC,7CH
                SUB     A
                CALL    fill
                CALL    524H
                LD      HL,3608H
                INC     (HL)
                CALL    opnsrc
                CALL    27CCH
                CALL    27D4H
                CALL    27F6H
                CALL    2822H
                CALL    init41
                CALL    524H
                CALL    crlf
                CALL    prcr
                LD      A,(360FH)
                AND     A
                CALL    Z,2865H
                CALL    24D7H
                CALL    235BH
                BIT     3,(IX+0)
                CALL    NZ,825H
                BIT     2,(IX+0)
                LD      DE,492H
                LD      HL,fcbtmp
                CALL    NZ,25A0H
                BIT     3,(IX+1)
                LD      DE,4AAH
                LD      HL,fcb$$0
                CALL    NZ,25A0H
                LD      A,(35F4H)
                AND     42H
                CP      2
                CALL    Z,flushp
                CALL    crlf
                LD      DE,eofasm
pr&lv:          CALL    prtmsg
                JP      cpm

six9oh:         db      6,9,0

asmbnr:         db      'CROMEMCO CDOS Z80'
                db      ' ASSEMBLER version'
                db      ' 02.15',cr,lf,0

eofasm:         db      'end of assembly',cr,lf,0

                db      'CROSS REFERENCE'
                db      ' LISTING',cr
                db      'OPCODE CROSS REFERENCE'
                db      ' LISTING',cr

init41:         LD      A,0FFH
                LD      (35F9H),A
                LD      HL,0
                LD      (366AH),HL
                LD      (3B8EH),HL
                SUB     A
                LD      (395EH),A
                LD      (3615H),A
                LD      (360FH),A
                LD      (3611H),A
                LD      (3614H),A
                LD      (35F8H),A
                LD      (IX+3),A
                LD      (3616H),A
                LD      DE,3B0FH
                LD      BC,2EH
                CALL    fill
                LD      HL,1
                LD      (3D67H),HL
                LD      A,0FFH
                LD      (3B16H),A
                LD      A,0DH
                LD      (3B3DH),A
                LD      A,1
                LD      (360BH),A
                LD      A,1
                LD      HL,0
                BIT     0,(IX+2)
                JR      z,it411
                SUB     A
                LD      HL,(3668H)
it411:          LD      (3609H),A
                LD      (3B17H),HL
                RET

                CALL    2B2FH
                JP      Z,prcr
                LD      HL,0
                LD      (3612H),HL
                XOR     A
                LD      (360AH),A
                LD      (360CH),A
                LD      (IX+1CH),20H
                CALL    684H
                JP      Z,5C9H
                CALL    165FH
                JR      NZ,524H
                CALL    644H
                JP      Z,5D1H
                LD      DE,35FCH
                LD      HL,fcb$$0
                BIT     3,(IX+1)
                CALL    NZ,5F1H
                CALL    1234H
                JR      C,524H
                BIT     0,(IX+1)
                JR      Z,569H
                CALL    15BEH
                JR      Z,559H
                LD      HL,90BH
                CALL    5E9H
                JR      Z,5DAH
                LD      HL,92AH
                CALL    5E9H
                JR      NZ,57EH
                CALL    5DEH
                JR      5DAH

                LD      HL,(3B17H)
                LD      A,(3609H)
                ADD     A,2
                CALL    6E0H
                LD      HL,8D9H
                LD      E,(HL)
                INC     HL
                LD      D,(HL)
                INC     HL
                LD      A,E
                OR      D
                JR      Z,5A5H
                PUSH    HL
                EX      DE,HL
                LD      DE,35FCH
                LD      B,5
                CALL    605H
                JR      Z,5B9H
                POP     HL
                INC     HL
                INC     HL
                JR      58CH

                LD      HL,0
                LD      (3617H),HL
                LD      (3618H),HL
                LD      A,7
                CALL    1D9BH
                CALL    1FE4H
                JP      524H

                POP     BC
                EX      DE,HL
                LD      HL,(35FAH)
                CALL    5FDH
                LD      A,(360FH)
                AND     A
                RET     NZ
                JP      524H

                CALL    165FH
                JP      NZ,524H
                JR      5D4H

                CALL    prcr
                CALL    206AH
                JP      524H

                LD      B,H
                LD      C,L
                JR      5BBH

                LD      A,(3602H)
                CP      20H
                RET     Z
                LD      A,13H
                JP      1D9BH

                LD      DE,35FCH
                LD      B,6
                JP      605H

                LD      A,(3608H)
                DEC     A
                RET     NZ
                LD      B,'R'
                JP      wrseq

                LD      B,D
                LD      C,E
                PUSH    HL
                LD      A,(BC)
                LD      L,A
                INC     BC
                LD      A,(BC)
                LD      H,A
                EX      (SP),HL
                RET

                PUSH    BC
                CALL    1EAEH
                LD      A,C
                POP     BC
                RET     NZ
                INC     DE
                DEC     B
                RET     Z
                DEC     A
                JR      NZ,60CH
                LD      A,(DE)
                CP      ' '
                RET     NZ
                INC     DE
                DJNZ    612H
                RET

prcr:           LD      B,cr
                JP      outit

                LD      A,(35EEH)
                AND     A
                JR      NZ,62AH
                LD      B,0CH
                JP      outit

                CALL    prcr
                LD      A,(35EFH)
                CP      (IX+5)
                JR      NZ,62AH
                RET

                LD      A,0DH
                LD      BC,50H
                CP      (HL)
                LDI
                RET     Z
                JP      PE,63BH
                LD      (DE),A
                RET

                LD      HL,3B95H
                LD      DE,67CH
                LD      B,8
                CALL    1ECCH
                RET     NZ
                LD      BC,8
                ADD     HL,BC
                CALL    fnonsp
                LD      A,(35F8H)
                CP      4
                JR      Z,675H
                INC     A
                LD      (35F8H),A
                PUSH    HL
                CALL    2BD8H
                POP     DE
                CALL    2BCAH
                JR      NZ,673H
                DEC     (IX+4)
                LD      A,0DH
                JR      677H

                SUB     A
                RET

                LD      A,6
                CALL    1D9BH
                JR      673H

                db      '*INCLUDE'

                LD      DE,3602H
                LD      BC,6
                CALL    blkfil
                LD      HL,3B95H
                LD      A,(HL)
                CP      ';'

                JR      Z,6CCH
                LD      A,(HL)
                CP      ' '

                JR      Z,69EH
                CP      tab
                JR      NZ,6AAH
                CALL    fnonsp
                PUSH    HL
                CALL    1FA6H
                POP     HL
                CP      ':'
                JR      NZ,6BAH
                LD      B,6
                LD      DE,3602H
                CALL    1F8DH
                CALL    1FA6H
                CP      ':'
                JR      NZ,6BAH
                INC     HL
                CALL    fnonsp
                LD      B,6
                LD      DE,35FCH
                CALL    1F8DH
                CALL    fnonsp
                LD      (35FAH),HL
                RET

                LD      DE,3602H
                LD      BC,6
                CALL    blkfil
                LD      DE,35FCH
                LD      BC,6
                CALL    blkfil
                SUB     A
                RET

                PUSH    AF
                LD      DE,3602H
                LD      A,(DE)
                CP      ' '
                POP     BC
                RET     Z
                PUSH    BC
                PUSH    DE
                PUSH    HL
                SUB     A
                CALL    7DAH
                POP     BC
                POP     DE
                JR      NC,723H
                POP     AF
                PUSH    AF
                BIT     7,A
                JR      NZ,704H
                LD      A,(3608H)
                DEC     A
                JR      Z,725H
                POP     HL
                DEC     A
                RET     NZ
                PUSH    HL
                POP     HL
                PUSH    BC
                CALL    734H
                POP     HL
                PUSH    AF
                AND     60H
                CP      60H
                JR      Z,71DH
                POP     AF
                BIT     7,A
                RET     NZ
                AND     A
                SBC     HL,BC
                RET     Z
                LD      A,8
                JR      720H

                POP     AF
                LD      A,2
                JP      1D9BH

                POP     AF
                RET

                PUSH    BC
                LD      B,44H
                BIT     2,(IX+0)
                LD      HL,fcbtmp
                CALL    NZ,wrseq
                POP     BC
                POP     AF
                PUSH    AF
                PUSH    BC
                LD      HL,(3DCDH)
                CALL    1EAEH
                POP     BC
                JR      Z,753H
                POP     AF
                PUSH    AF
                PUSH    BC
                LD      (3C46H),BC
                LD      (3C48H),A
                LD      BC,3
                CALL    77FH
                DEC     HL
                POP     BC
                POP     AF
                RET

                POP     AF
                PUSH    AF
                AND     1FH
                JR      Z,775H
                POP     AF
                LD      (HL),C
                INC     HL
                LD      (HL),B
                INC     HL
                LD      D,A
                BIT     7,A
                JR      Z,768H
                LD      A,(HL)
                BIT     7,A
                JR      NZ,770H
                LD      A,(HL)
                AND     1FH
                LD      A,(HL)
                JR      Z,770H
                OR      60H
                AND     0E0H
                OR      D
                LD      (HL),A
                RET

                POP     AF
                LD      C,(HL)
                INC     HL
                LD      B,(HL)
                INC     HL
                AND     40H
                OR      (HL)
                LD      (HL),A
                RET

                PUSH    DE
                PUSH    HL
                PUSH    BC
                LD      HL,(366CH)
                LD      DE,(3D5FH)
                AND     A
                SBC     HL,DE
                LD      BC,0AH
                SBC     HL,BC
                JR      C,nomem
                LD      HL,6
                ADD     HL,DE
                POP     BC
                ADD     HL,BC
                LD      (3D5FH),HL
                EX      (SP),HL
                PUSH    DE
                EX      DE,HL
                AND     A
                SBC     HL,DE
                PUSH    BC
                LD      B,H
                LD      C,L
                POP     HL
                POP     DE
                EX      (SP),HL
                DEC     DE
                DEC     HL
                EX      DE,HL
                LDDR
                INC     HL
                EX      DE,HL
                POP     BC
                POP     HL
                PUSH    BC
                LD      B,6
                LD      A,(HL)
                CALL    toupr
                LD      (DE),A
                INC     HL
                INC     DE
                DJNZ    7B4H
                POP     BC
                LD      HL,3C46H
                LDIR
                RET

nomem:          LD      DE,nomemsg
                JP      prt&ext

nomemsg:        db      'out of memory',cr,lf,0

                EX      AF,AF'
                LD      A,(DE)
                CALL    1CC0H
                JR      C,80FH
                PUSH    DE
                LD      B,5
                INC     DE
                LD      A,(DE)
                CALL    1CC0H
                JR      NC,7F4H
                CALL    cknum
                JR      NC,7F4H
                CP      ' '
                JR      NZ,80EH
                DJNZ    7E4H
                POP     HL
                CALL    1C13H
                JR      Z,80FH
                CALL    1BFCH
                JR      Z,80FH
                EX      DE,HL
                LD      HL,818H
                LD      B,6
                CALL    605H
                JR      Z,80FH
                SCF
                RET

                POP     DE
                EX      AF,AF'
                CALL    Z,1D86H
                CALL    NZ,1D92H
                AND     A
                RET

                db      2,2
                db      'I '
                db      'R '
                db      'SP'
                db      'IX'
                db      'IY'
                db      0

                LD      HL,870H
                CALL    0DEEH
                LD      HL,(3DCDH)
                CALL    87DH
                LD      D,(HL)
                INC     HL
                LD      E,(HL)
                INC     HL
                LD      A,(35ECH)
                ADD     A,2
                RRA
                RRA
                RRA
                RRA
                AND     0FH
                LD      B,A
                LD      A,(HL)
                AND     A
                jp      Z,prcr
                PUSH    BC
                PUSH    DE
                PUSH    HL
                CALL    prtstg
                EX      (SP),HL
                ADD     HL,DE
                EX      (SP),HL
                CALL    1F29H
                LD      A,(HL)
                AND     '?'
                LD      (360AH),A
                CALL    2261H
                POP     HL
                POP     DE
                POP     BC
                DJNZ    869H
                PUSH    HL
                PUSH    DE
                CALL    prcr
                POP     DE
                POP     HL
                JR      835H

                PUSH    BC
                CALL    1DC8H
                POP     BC
                JR      841H

                db      'SYMBOL TABLE',cr

                PUSH    HL
                LD      B,0
                INC     HL
                LD      C,(HL)
                INC     HL
                PUSH    HL
                LD      DE,0
                LD      A,(HL)
                AND     A
                JR      Z,88FH
                INC     DE
                ADD     HL,BC
                JR      887H

                POP     HL
                LD      A,D
                OR      E
                PUSH    DE
                CALL    NZ,899H
                POP     DE
                POP     HL
                RET

                DEC     DE
                LD      A,D
                OR      E
                RET     Z
                PUSH    HL
                PUSH    DE
                EX      AF,AF'
                PUSH    DE
                LD      D,H
                LD      E,L
                ADD     HL,BC
                PUSH    BC
                LD      A,(DE)
                CP      (HL)
                JP      C,8D2H
                JP      NZ,8C4H
                INC     DE
                INC     HL
                DEC     C
                JP      NZ,8A5H
                POP     BC
                EX      (SP),HL
                DEC     HL
                LD      A,H
                OR      L
                EX      (SP),HL
                JP      NZ,8A4H
                POP     HL
                POP     DE
                POP     HL
                EX      AF,AF'
                JP      C,899H
                RET

                SCF
                EX      AF,AF'
                LD      A,(DE)
                LDI
                DEC     HL
                LD      (HL),A
                INC     HL
                JP      PE,8C6H
                JP      8B3H

                ADD     HL,BC
                EX      DE,HL
                ADD     HL,BC
                EX      DE,HL
                JP      8B3H

                dw      99dh
                dw      0b38h
                dw      9c8h
                dw      0b38h
                dw      9dah
                dw      0b3fh
                dw      0a0dh
                dw      0b3fh
                dw      0a4ch
                dw      5fbh
                dw      0a7bh
                dw      5fbh
                dw      0ac6h
                dw      0b4ah
                dw      0ad5h
                dw      0b65h
                dw      0ae6h
                dw      0b90h
                dw      0b05h
                dw      0bb4h
                dw      0b14h
                dw      0c00h
                dw      0b21h
                dw      0c16h
                dw      0

                db      5,7

                db      'EQU  '
                dw      0c6ch
                db      'DEFL '
                dw      0c68h
                db      'DL   '
                dw      0c68h
                db      'MACRO'
                dw      137dh
                db      0

                db      5,7

                db      'EJECT'
                dw      61fh
                db      'FORM '
                dw      61fh
                db      'TITLE'
                dw      0deeh
                db      'LIST '
                dw      0e1fh
                db      'NAME '
                dw      0cb3h
                db      'EXT  '
                dw      0cdbh
                db      'EXTRN'
                dw      0cdbh
                db      'ENTRY'
                dw      0d14h
                db      'ABS  '
                dw      0dbdh
                db      'REL  '
                dw      0dd2h
                db      'DATA '
                dw      0de0h
                db      'COM  '
                dw      0d4dh
                db      'MEND '
                dw      1534h
                db      'REM  '
                dw      0df7h
                db      'IF   '
                dw      1604h
                db      'ENDIF'
                dw      1643h
                db      0

                db      3,4
                db      'EXX'
                EXX
                db      'DAA'
                DAA
                db      'CPL'
                CPL
                db      'CCF'
                CCF
                db      'SCF'
                SCF
                db      'DI '
                DI
                db      'EI '
                EI
                db      'NOP'
                NOP
                db      'RLA'
                RLA
                db      'RRA'
                RRA
                db      0

                db      4,5
                db      'HALT'
                HALT
                db      'RLCA'
                RLCA
                db      'RRCA'
                RRCA
                db      0

                db      3,4
                db      'LDI'
                db      0a0h
                db      'LDD'
                db      0a8h
                db      'CPI'
                db      0a1h
                db      'CPD'
                db      0a9h
                db      'NEG'
                db      44h
                db      'IM0'
                db      46h
                db      'IM1'
                db      56h
                db      'IM2'
                db      5eh
                db      'RLD'
                db      6fh
                db      'RRD'
                db      67h
                db      'INI'
                db      0a2h
                db      'IND'
                db      0aah
                db      0

                db      4,5
                db      'LDIR'
                db      0b0h
                db      'LDDR'
                db      0b8h
                db      'CPIR'
                db      0b1h
                db      'CPDR'
                db      0b9h
                db      'RETI'
                db      4dh
                db      'RETN'

                db      45h
                db      'INIR'
                db      0b2h
                db      'INDR'
                db      0bah
                db      'OUTI'
                db      0a3h
                db      'OUTD'
                db      0abh
                db      'OTIR'
                db      0b3h
                db      'OTDR'
                db      0bbh
                db      0

                db      2,4
                db      'LD'
                dw      10c7h
                db      'EX'
                dw      0eb6h
                db      'JR'
                dw      0f0fh
                db      'DB'
                dw      0f24h
                db      'DM'
                dw      0f29h
                db      'DW'
                dw      0fa1h
                db      'JP'
                dw      0fd3h
                db      'IN'
                dw      1040h
                db      '  '
                dw      0e9bh
                db      'DS'
                dw      0c9ah
                db      'IM'
                dw      0ea1h
                db      0

                db      4,6
                db      'DJNZ'
                dw      0f06h
                db      'RET '
                dw      1064h
                db      'RST '
                dw      1072h
                db      'ADD '
                dw      0bcch
                db      'CALL'
                dw      1083h
                db      'OUT '
                dw      109ch
                db      'DEFB'
                dw      0f24h
                db      'DEFM'
                dw      0f29h
                db      'DEFW'
                dw      0fa1h
                db      'DEFS'
                dw      0c9ah
                db      'ORG '
                dw      0c51h
                db      'END '
                dw      0dfah
                db      0

                db      4,6
                db      'PUSH'
                PUSH    BC
                PUSH    HL
                db      'POP '
                POP     BC
                POP     HL
                db      0

                db      3,7
                db      'INC'
                INC     BC
                INC     HL
                INC     B
                INC     (HL)
                db      'DEC'
                DEC     BC
                DEC     HL
                DEC     B
                DEC     (HL)
                db      0

                db      3,4
                db      'RLC'
                db      0
                db      'RL '
                db      10h
                db      'RRC'
                db      8
                db      'RR '
                db      18h
                db      'SLA'
                db      20h
                db      'SRA'
                db      28h
                db      'SRL'
                db      38h
                db      0

                db      3,4
                db      'BIT'
                db      40h
                db      'SET'
                db      0c0h
                db      'RES'
                db      80h
                db      0

                db      3,5
                db      'ADC'
                db      8
                db      4ah
                db      'SBC'
                db      18h
                db      42h
                db      0

                db      3,4
                db      'SUB'
                db      10h
                db      'AND'
                db      20h
                db      'XOR'
                db      28h
                db      'OR '
                db      30h
                db      'CP '
                db      38h
                db      0

                LD      A,(DE)
                LD      (3617H),A
                JP      1FDCH

                LD      A,(DE)
                LD      (IX+23H),0EDH
                LD      (3618H),A
                JP      1FE0H

                PUSH    DE
                CALL    1BD0H
                JR      Z,0B5BH
                CALL    1BFCH
                CALL    NZ,1D92H
                EX      (SP),HL
                ADD     A,(HL)
                POP     HL
                JR      0B39H

                LD      (3617H),A
                SUB     A
                EX      (SP),HL
                INC     HL
                ADD     A,(HL)
                POP     HL
                JR      0B44H

                PUSH    DE
                CALL    1BD0H
                JR      Z,0B5BH
                CALL    1C01H
                JR      Z,0B56H
                CALL    1C1BH
                JR      Z,0B88H
                CALL    1BDFH
                CALL    NZ,1D92H
                EX      (SP),HL
                INC     HL
                INC     HL
                INC     HL
                SUB     A
                ADD     A,(HL)
                POP     HL
                LD      (3618H),A
                JP      1FE4H

                RLCA
                RLCA
                RLCA
                EX      (SP),HL
                INC     HL
                INC     HL
                JR      0B57H

                PUSH    DE
                CALL    1C1BH
                JR      Z,0BACH
                CALL    1BE3H
                CALL    NZ,1D92H
                SUB     A
                EX      (SP),HL
                LD      (IX+24H),0CBH
                ADD     A,6
                ADD     A,(HL)
                POP     HL
                LD      (361AH),A
                JP      1FE8H

                EX      (SP),HL
                ADD     A,(HL)
                LD      (IX+23H),0CBH
                JR      0B62H

                PUSH    DE
                CALL    16BCH
                PUSH    AF
                CALL    1C18H
                JR      Z,0BC7H
                CALL    1BE3H
                CALL    NZ,1D92H
                POP     AF
                JR      0B9DH

                LD      D,A
                POP     AF
                ADD     A,D
                JR      0BACH

                CALL    1C24H
                JR      NZ,0BDFH
                CALL    1CDEH
                CALL    1C01H
                CALL    NZ,1D92H
                ADD     A,9
                JP      0B39H

                CALL    1BD0H
                LD      DE,1D99H
                JR      NZ,0C16H
                PUSH    AF
                CALL    1CDEH
                POP     AF
                CP      0DDH

                JR      Z,0BF5H
                CALL    1C0BH
                JR      0BF8H

                CALL    1C06H
                CALL    NZ,1D92H
                ADD     A,9
                JP      0B44H

                PUSH    DE
                CALL    1C24H
                JR      NZ,0C17H
                CALL    1CDEH
                LD      (IX+23H),0EDH
                CALL    1C01H
                CALL    NZ,1D92H
                JP      0B5FH

                PUSH    DE
                CALL    0C43H
                CALL    1C1BH
                JR      Z,0C35H
                CALL    1BDFH
                JR      Z,0C3DH
                CALL    1726H
                LD      (3618H),A
                LD      A,0C6H
                EX      (SP),HL
                ADD     A,(HL)
                LD      (3617H),A
                POP     HL
                JP      22DCH

                ADD     A,80H
                EX      (SP),HL
                ADD     A,(HL)
                POP     HL
                JP      0B39H

                EX      (SP),HL
                LD      A,86H
                JP      0B80H

                LD      A,(HL)
                CALL    toupr
                CP      'A'
                RET     NZ
                INC     HL
                CALL    1CE8H
                RET     Z
                DEC     HL
                RET

                CALL    1747H
                PUSH    DE
                PUSH    BC
                CALL    1FD8H
                POP     HL
                POP     AF
                SUB     2
                LD      (3609H),A
                LD      A,1
                LD      (360BH),A
                JP      229AH

                LD      A,80H
                JR      0C6DH

                SUB     A
                PUSH    AF
                LD      A,(3602H)
                CP      20H
                CALL    Z,1D8EH
                CALL    1747H
                CALL    228AH
                LD      A,D
                AND     0BFH
                BIT     5,A
                CALL    NZ,0C91H
                LD      D,A
                POP     AF
                ADD     A,D
                PUSH    BC
                LD      H,B
                LD      L,C
                CALL    06E0H
                POP     BC
                JP      2072H

                CALL    1AD8H
                LD      BC,0
                LD      A,2
                RET

                CALL    1747H
                LD      A,D
                CP      2
                CALL    NZ,1D92H
                CALL    228AH
                PUSH    BC
                CALL    2078H
                POP     BC
                LD      A,1
                LD      (360BH),A
                JP      2296H

                CALL    2A2DH
                RET     NZ
                CALL    1FBAH
                JR      Z,0CD6H
                LD      DE,3D59H
                LD      B,6
                CALL    1F8DH
                CALL    1FA6H
                PUSH    HL
                LD      DE,3D59H
                SUB     A
                CALL    7DAH
                POP     HL
                CALL    228AH
                JP      206AH

                CALL    1D92H
                JR      0CD0H

                CALL    2A2DH
                RET     NZ
                LD      DE,3602H
                LD      B,6
                CALL    1F8DH
                CALL    1FA6H
                PUSH    HL
                LD      DE,3602H
                SUB     A
                CALL    7DAH
                JR      NC,0D03H
                LD      A,(3608H)
                CP      2
                JR      Z,0D0CH
                LD      HL,0
                LD      A,'"'
                CALL    6E0H
                POP     HL
                CALL    1CE8H
                JR      Z,0CDBH
                JP      206AH

                LD      HL,3602H
                CALL    1B4FH
                JR      0D03H

                CALL    2A2DH
                RET     NZ
                LD      DE,3602H
                LD      B,6
                CALL    1F8DH
                CALL    1FA6H
                PUSH    HL
                LD      DE,3602H
                SUB     A
                CALL    7DAH
                JR      NC,0D3CH
                LD      A,(3608H)
                CP      2
                JR      Z,0D45H
                LD      HL,0
                LD      A,40H
                CALL    6E0H
                POP     HL
                CALL    1CE8H
                JR      Z,0D14H
                JP      206AH

                LD      HL,3602H
                CALL    1B4FH
                JR      0D3CH

                CALL    2A2DH
                RET     NZ
                LD      DE,3602H
                LD      B,6
                CALL    1F8DH
                CALL    228AH
                LD      DE,3602H
                LD      A,(DE)
                CP      ' '
                JR      Z,0D6BH
                SUB     A
                CALL    7DAH
                jp      NC,206AH
                LD      A,(3B15H)
                LD      B,A
                LD      C,0
                LD      HL,3AB5H
                AND     A
                JR      Z,0D8AH
                PUSH    BC
                LD      DE,3602H
                LD      B,6
                CALL    1ECCH
                JR      Z,0DA2H
                LD      DE,6
                ADD     HL,DE
                POP     BC
                INC     C
                DJNZ    0D77H
                LD      A,C
                CP      0FH
                JR      Z,0DB5H
                INC     A
                LD      (3B15H),A
                EX      DE,HL
                LD      HL,3602H
                LD      BC,6
                LDIR
                LD      A,(3B15H)
                DEC     A
                LD      C,A
                PUSH    BC
                POP     HL
                PUSH    HL
                LD      H,0
                ADD     HL,HL
                LD      DE,3B1FH
                ADD     HL,DE
                LD      E,(HL)
                INC     HL
                LD      D,(HL)
                EX      DE,HL
                POP     BC
                LD      A,C
                ADD     A,3
                JR      0DC4H

                LD      A,11H
                CALL    1D9BH
                JP      206AH

                CALL    228AH
                XOR     A
                LD      HL,(3B19H)
                LD      (3B17H),HL
                LD      (3609H),A
                LD      A,1
                LD      (360BH),A
                JP      206AH

                CALL    2A2DH
                RET     NZ
                CALL    228AH
                LD      A,1
                LD      HL,(3B1BH)
                JR      0DC4H

                CALL    2A2DH
                RET     NZ
                CALL    228AH
                LD      A,2
                LD      HL,(3B1DH)
                JR      0DC4H

                LD      DE,3B3DH
                CALL    636H
                JP      61FH

                JP      2BE5H

                LD      A,1
                LD      (360FH),A
                LD      BC,0
                LD      D,2
                LD      A,(HL)
                CP      ';'
                JR      Z,0E13H
                CP      0DH
                JR      Z,0E13H
                CALL    1747H
                CALL    228AH
                PUSH    BC
                PUSH    DE
                CALL    2078H
                POP     BC
                POP     DE
                DEC     B
                DEC     B
                JP      286AH

                LD      B,6
                LD      DE,3C46H
                CALL    1F8DH
                PUSH    HL
                LD      HL,0E4AH
                LD      DE,3C46H
                CALL    1EAEH
                JR      NZ,0E45H
                LD      A,(HL)
                INC     HL
                LD      H,(HL)
                LD      L,A
                CALL    0E49H
                POP     HL
                LD      A,(HL)
                CP      ','
                INC     HL
                JR      Z,0E1FH
                DEC     HL
                JP      206AH

                POP     HL
                JP      1D92H

                JP      (HL)

                db      6,8
                db      'ON    '
                dw      0e7dh
                db      'OFF   '
                dw      0e82h
                db      'GEN   '
                dw      0e87h
                db      'NOGEN '
                dw      0e8ch
                db      'COND  '
                dw      0e91h
                db      'NOCOND'
                dw      0e96h
                db      0

                RES     0,(IX+3)
                RET

                SET     0,(IX+3)
                RET

                RES     2,(IX+3)
                RET

                SET     2,(IX+3)
                RET

                RES     1,(IX+3)
                RET

                SET     1,(IX+3)
                RET

                CALL    228AH
                JP      206AH

                CALL    171AH
                CP      3
                CALL    NC,1736H
                AND     A
                JR      Z,0EB1H
                RLA
                RLA
                RLA
                ADD     A,8
                ADD     A,46H
                JP      0B40H

                LD      DE,0ED8H
                CALL    1C2CH
                JP      Z,0B39H
                INC     DE
                CALL    1C2CH
                JR      Z,0EBCH
                INC     DE
                CALL    1C2CH
                CALL    NZ,1D92H
                CP      0E3H
                JR      Z,0EBCH
                LD      (3617H),A
                LD      A,0E3H
                JP      0B44H

                db      5,6
                db      'DE,HL'
                EX      DE,HL
                db      0

                db      6,7
                db      'AF,AF',squote
                EX      AF,AF'
                db      0

                db      7,8
                db      '(SP),HL'
                EX      (SP),HL
                db      '(SP),IX'
                db      0ddh
                db      '(SP),IY'
                db      0fdh
                db      0

                CALL    1CE8H
                LD      (IX+23H),10H
                JR      0F1EH

                LD      (IX+23H),18H
                CALL    1D28H
                JR      NZ,0F1EH
                LD      (3617H),A
                CALL    1CDEH
                CALL    16F3H
                JP      0B44H

                CALL    0F32H
                JR      0F67H

                CALL    0F32H
                LD      A,(DE)
                OR      80H
                LD      (DE),A
                JR      0F67H

                LD      DE,3617H
                LD      BC,50H
                LD      A,(HL)
                CP      squote
                JR      NZ,0F59H
                PUSH    HL
                INC     HL
                LD      A,C
                PUSH    AF
                CALL    1D65H
                POP     AF
                SUB     C
                JR      Z,0F58H
                DEC     A
                JR      Z,0F55H
                POP     AF
                CALL    1CE8H
                JR      Z,0F38H
                DEC     DE
                JP      228AH

                DEC     DE
                INC     C
                DEC     B
                POP     HL
                PUSH    DE
                PUSH    BC
                LD      A,B
                CALL    1712H
                POP     BC
                POP     DE
                LD      (DE),A
                INC     DE
                INC     B
                DEC     C
                JR      0F4CH

                PUSH    BC
                LD      A,B
                CP      5
                JR      C,0F8AH
                PUSH    BC
                LD      B,4
                CALL    200CH
                LD      HL,361BH
                POP     BC
                DEC     B
                DEC     B
                DEC     B
                DEC     B
                JR      Z,0F92H
                LD      A,B
                CP      5
                JR      C,0F8FH
                PUSH    BC
                LD      B,4
                CALL    2050H
                JR      0F76H

                CALL    200CH
                JR      0F92H

                CALL    2050H
                POP     BC
                PUSH    BC
                LD      HL, 3617H
                CALL    2969H
                POP     BC
                LD      C,B
                LD      B,0
                JP      2296H

                CALL    1747H
                LD      (3617H),BC
                CALL    1CE8H
                PUSH    AF
                CALL    NZ,228AH
                PUSH    HL
                LD      B,2
                CALL    22E2H
                POP     HL
                POP     AF
                RET     NZ
                CALL    1747H
                LD      (3617H),BC
                CALL    1CE8H
                PUSH    AF
                CALL    NZ,228AH
                PUSH    HL
                LD      B,2
                CALL    204DH
                LD      B,2
                CALL    22E7H
                JR      0FB5H

                CALL    1CEEH
                JR      Z,0FE8H
                CALL    1C1FH
                JR      Z,0FF9H
                CALL    1BDAH
                JR      Z,0FFEH
                LD      (IX+23H),0C3H
                JR      0FF0H

                ADD     A,0C2H
                LD      (3617H),A
                CALL    1CDEH
                CALL    1747H
                CALL    1003H
                JP      22C2H

                LD      A,0E9H
                JP      0B39H

                LD      A,0E9H
                JP      0B44H

                BIT     4,(IX+0)
                RET     Z
                LD      A,(3617H)
                CP      0E0H
                RET     NC
                LD      A,(3609H)
                ADD     A,2
                CP      (IX+16H)
                RET     NZ
                PUSH    HL
                LD      HL,(3B17H)
                INC     HL
                INC     HL
                LD      A,C
                SUB     L
                LD      L,A
                LD      A,B
                SBC     A,H
                JR      Z,102EH
                INC     A
                JR      NZ,103EH
                LD      A,L
                CP      80H
                JR      C,103EH
                JR      1033H

                LD      A,L
                CP      80H
                JR      NC,103EH
                LD      (IX+1CH),52H
                LD      HL,(3B11H)
                INC     HL
                LD      (3B11H),HL
                POP     HL
                RET

                CALL    1C13H
                CALL    NZ,1D92H
                PUSH    AF
                CALL    1CDEH
                CALL    1C29H
                JR      NZ,1054H
                POP     AF
                ADD     A,8
                JR      10C1H

                POP     AF
                CP      7
                CALL    NZ,1D92H
                LD      (IX+23H),0DBH
                CALL    1726H
                JP      22D8H

                CALL    1CEEH
                JR      Z,106DH
                LD      A,0C9H
                JR      106FH

                ADD     A,0C0H
                JP      0B39H

                CALL    171AH
                LD      C,A
                AND     0C7H
                CALL    NZ,1736H
                LD      A,C
                AND     38H
                ADD     A,0C7H
                JP      0B39H

                CALL    1CEEH
                JR      Z,1092H
                LD      (IX+23H),0CDH
                CALL    1747H
                JP      22C2H

                ADD     A,0C4H
                LD      (3617H),A
                CALL    1CDEH
                JR      108CH

                CALL    1C29H
                JR      Z,10B9H
                LD      (IX+23H),0D3H
                CALL    1726H
                EX      AF,AF'
                CALL    1CDEH
                CALL    toupr
                CP      'A'
                CALL    NZ,1D92H
                INC     HL
                EX      AF,AF'
                JP      22D8H

                CALL    1C10H
                CALL    NZ,1D92H
                ADD     A,28H
                RLCA
                RLCA
                RLCA
                JP      0B40H

                LD      DE,1107H
                CALL    1C2CH
                JP      Z,0B40H
                LD      DE,111AH
                CALL    1C2CH
                JP      Z,0B39H
                LD      DE,1139H
                CALL    1C2CH
                JR      Z,114EH
                CALL    1C13H
                JR      Z,115BH
                CALL    1C1FH
                JP      Z,119CH
                CALL    1BE8H
                JP      Z,11A8H
                CALL    1C24H
                JP      Z,11BEH
                CALL    1C01H
                JP      Z,11CDH
                CALL    1BD0H
                JP      Z,11E5H
                JP      11F0H

                db      3,4
                db      'A,I'
                LD      D,A
                db      'A,R'
                LD      E,A
                db      'I,A'
                LD      B,A
                db      'R,A'
                LD      C,A
                db      0

                db      6,7
                db      'A,(BC)'
                LD      A,(BC)
                db      'A,(DE)'
                LD      A,(DE)
                db      '(BC),A'
                LD      (BC),A
                db      '(DE),A'
                LD      (DE),A
                db      0

                db      5,6
                db      'SP,HL'
                LD      SP,HL
                db      'SP,IX'
                db      0ddh
                db      'SP,IY'
                db      0fdh
                db      0

                LD      (3617H),A
                CP      0F9H
                JP      Z,0B39H
                LD      A,0F9H
                JP      0B44H

                RLCA
                RLCA
                RLCA
                PUSH    AF
                CALL    1C18H
                JR      Z,117BH
                CALL    1BE8H
                JR      Z,1182H
                POP     BC
                LD      A,B
                CP      38H
                JR      Z,118CH
                LD      A,B
                ADD     A,6
                LD      (3617H),A
                CALL    1726H
                JP      22D8H

                POP     BC
                ADD     A,B
                ADD     A,40H
                JP      0B39H

                POP     BC
                LD      A,'F'
                ADD     A,B
                LD      (3618H),A
                JP      1FE4H

                LD      A,(HL)
                CP      '('
                JR      NZ,116FH
                LD      A,':'
                LD      (3617H),A
                CALL    1747H
                JP      22C2H

                RLCA
                RLCA
                RLCA
                PUSH    AF
                CALL    1C10H
                JR      Z,117BH
                POP     BC
                JR      116FH

                CALL    1C10H
                JR      Z,11BAH
                LD      (IX+24H),36H
                CALL    1726H
                LD      (361AH),A
                JP      22DFH

                ADD     A,70H
                JR      1186H

                CALL    1CDEH
                CP      '('
                LD      B,' '
                JR      NZ,11C9H
                LD      B,')'
                INC     B
                LD      A,B
                JR      1193H

                LD      B,A
                CALL    1CDEH
                CP      '('
                JR      NZ,11C9H
                LD      (IX+23H),0EDH
                LD      A,'K'
                ADD     A,B
                LD      (3618H),A
                CALL    1747H
                JP      22CDH

                CALL    1CDEH
                LD      A,'*'
                JR      Z,11DCH
                LD      A,'!'
                JR      11DCH

                LD      A,(HL)
                CP      '('
                CALL    NZ,1D92H
                CALL    1747H
                PUSH    BC
                CALL    1CDEH
                CALL    toupr
                CP      'A'
                JR      Z,1221H
                CALL    1BD0H
                JR      Z,122AH
                CALL    1C24H
                JR      Z,122EH
                CALL    1C01H
                CALL    NZ,1D92H
                ADD     A,'C'
                LD      (IX+23H),0EDH
                LD      (IX+24H),A
                POP     BC
                JP      22CDH

                LD      (IX+23H),32H
                INC     HL
                POP     BC
                JP      22C2H

                LD      A,'"'
                JR      121AH

                LD      (IX+23H),22H
                JR      1226H

                LD      DE,35FCH
                CALL    149EH
                RET     NC
                PUSH    HL
                LD      HL,(3B17H)
                LD      A,(3609H)
                ADD     A,2
                CALL    6E0H
                POP     HL
                LD      A,(3611H)
                CP      8
                JR      Z,128EH
                BIT     7,(HL)
                LD      A,12H
                CALL    NZ,1D9BH
                PUSH    HL
                LD      HL,0
                LD      DE,54H
                LD      A,(3611H)
                AND     A
                JR      Z,1267H
                ADD     HL,DE
                DEC     A
                JR      NZ,1263H
                LD      DE,36BEH
                ADD     HL,DE
                POP     DE
                DEC     DE
                LD      (HL),E
                INC     HL
                LD      (HL),D
                INC     HL
                LD      DE,(366AH)
                LD      (HL),E
                INC     HL
                LD      (HL),D
                INC     HL
                INC     DE
                LD      (366AH),DE
                EX      DE,HL
                LD      HL,(35FAH)
                CALL    636H
                CALL    1293H
                LD      HL,3611H
                INC     (HL)
                SCF
                RET

                LD      A,6
                CALL    1D9BH
                LD      HL,1299H
                JP      1FD8H

                DEC     C
                LD      A,(3611H)
                AND     A
                RET     Z
                LD      HL,0
                LD      DE,54H
                DEC     A
                JR      Z,2ABH
                ADD     HL,DE
                JR      12A5H

;****** unref'd from here to next "******"
                LD      DE,36BEH
                ADD     HL,DE
                PUSH    HL
                LD      E,(HL)
                INC     HL
                LD      D,(HL)
                INC     HL
                INC     HL
                INC     HL
                PUSH    HL
                LD      HL,3B95H
                LD      B,'P'
                LD      A,(DE)
                DEC     DE
                CP      0FFH
                JR      Z,12D2H
                AND     A
                JP      M,12E2H
                LD      (HL),A
                CP      cr
                JR      Z,12DAH
                INC     HL
                DJNZ    12BCH
                DEC     HL
                INC     B
                JR      12BCH

                POP     HL
                POP     HL
                LD      HL,3611H
                DEC     (HL)
                JR      129AH

                POP     HL
                POP     HL
                LD      (HL),E
                INC     HL
                LD      (HL),D
                SUB     A
                INC     A
                RET

                CP      0FEH
                JR      Z,133EH
                PUSH    DE
                POP     IY
                AND     7FH
                POP     DE
                PUSH    DE
                AND     A
                JR      Z,1304H
                PUSH    AF
                LD      A,(DE)
                CP      cr
                JR      Z,1303H
                CP      ';'
                JR      Z,1303H
                INC     DE
                CP      ','
                JR      NZ,12F1H
                POP     AF
                DEC     A
                JR      12EDH

                POP     AF
                SUB     A
                PUSH    AF
                LD      A,(DE)
                CP      cr
                JR      Z,1326H
                CP      ';'
                JR      Z,1337H
                CP      squote
                JR      Z,132CH
                CP      ','
                JR      Z,1337H
                CP      tab
                JR      Z,135EH
                CP      ' '
                JR      Z,135EH
                LD      (HL),A
                INC     HL
                INC     DE
                DJNZ    1306H
                DEC     HL
                INC     B
                POP     AF
                PUSH    IY
                POP     DE
                JR      12BCH

                POP     AF
                AND     A
                JR      Z,1332H
                LD      A,0FFH
                INC     A
                PUSH    AF
                LD      A,(DE)
                JR      131FH

                POP     AF
                PUSH    AF
                AND     A
                JR      Z,1326H
                JR      1334H

                POP     IY
                PUSH    IY
                PUSH    DE
                PUSH    HL
                PUSH    BC
                LD      L,(IY-2)
                LD      H,(IY-1)
                LD      A,'0'
                CALL    2492H
                POP     BC
                POP     HL
                POP     IY
                LD      DE,3C47H
                LD      A,cr
                LD      (3C4BH),A
                JR      1304H

                POP     AF
                PUSH    AF
                AND     A
                JR      NZ,1334H
                PUSH    DE
                INC     DE
                LD      A,(DE)
                CP      ' '
                JR      Z,1364H
                CP      tab
                JR      Z,1364H
                POP     DE
                CP      ','
                JR      Z,1326H
                CP      ';'
                JR      Z,1326H
                CP      cr
                JR      Z,1326H
                JR      1334H
;************

                LD      DE,3602H
                LD      A,(DE)
                CP      ' '
                JP      Z,140EH
                CALL    149EH
                JR      NC,13A8H
                LD      A,(3608H)
                CP      2
                JR      Z,139BH
                SET     7,(HL)
                LD      A,12H
                CALL    1D9BH
                JR      13A2H

                BIT     7,(HL)
                JR      NZ,1394H
                CALL    1416H
                CALL    206AH
                JP      14BEH

                PUSH    DE
                LD      HL,fcb$$0
                LD      B,'D'
                BIT     3,(IX+1)
                CALL    NZ,wrseq
                POP     DE
                LD      B,6
                CALL    150FH
                SUB     A
                CALL    1517H
                CALL    1416H
                LD      A,1
                PUSH    AF
                BIT     7,(IX+1)
                JR      Z,13D0H
                CALL    2B82H
                JR      13D3H

                CALL    2B2FH
                JR      Z,1408H
                CALL    684H
                CALL    14EDH
                JR      Z,13F9H
                CALL    14FEH
                JR      Z,13F5H
                LD      HL,3B95H
                LD      A,(HL)
                CP      '#'
                CALL    Z,1453H
                CALL    1517H
                CP      cr
                JR      Z,13C5H
                INC     HL
                JR      13E5H

                POP     AF
                INC     A
                JR      13FDH

                POP     AF
                DEC     A
                JR      Z,1400H
                PUSH    AF
                JR      13E2H

                LD      A,0FFH
                CALL    1517H
                SUB     A
                INC     A
                RET

                POP     AF
                CALL    1400H
                SUB     A
                RET

                LD      A,5
                CALL    1D9BH
                jp      13A2H

                LD      HL,(35FAH)
                LD      DE,366EH
                LD      BC,50H
                LD      A,(HL)
                CP      cr
                JR      Z,1450H
                CP      ';'
                JR      Z,1450H
                CP      '#'
                CALL    NZ,1D92H
                LDI
                LD      A,(HL)
                CP      cr
                JR      Z,1450H
                CP      ';'
                JR      Z,1450H
                CP      ' '
                JR      Z,144BH
                CP      tab
                JR      Z,144BH
                CP      ','
                JR      NZ,142DH
                LDI
                CALL    fnonsp
                JR      141FH

                CALL    fnonsp
                JR      142FH

                SUB     A
                LD      (DE),A
                RET

                LD      DE,149AH
                LD      B,4
                CALL    1ECCH
                JR      NZ,1464H
                LD      DE,3
                ADD     HL,DE
                LD      A,0FEH
                RET

                LD      DE,366EH
                LD      A,80H
                PUSH    AF
                LD      A,(DE)
                AND     A
                JR      Z,1497H
                CP      ','
                JR      Z,148EH
                PUSH    HL
                LD      A,(DE)
                AND     A
                JR      Z,1493H
                CP      ','
                JR      Z,1493H
                CALL    cmpstr
                JR      NZ,1484H
                INC     HL
                INC     DE
                JR      1473H

                POP     HL
                LD      A,(DE)
                INC     DE
                AND     A
                JR      Z,1497H
                CP      ','
                JR      NZ,1485H
                POP     AF
                INC     A
                PUSH    AF
                JR      1472H

                POP     BC
                DEC     HL
                POP     AF
                RET

                POP     AF
                LD      A,(HL)
                RET

                db      '#SYM'

l149e:          LD      HL,(6)
                DEC     HL
l14a2:          LD      A,(HL)
                AND     A
                RET     z
                PUSH    DE
                LD      B,6
l14a8:          CALL    cmpstr
                JR      NZ,14B4H
                INC     DE
                DEC     HL
                DJNZ    14A8H
                POP     DE
                SCF
                RET

l14b4:          POP     DE
l14b5:          DEC     HL
                LD      A,(HL)
                CP      0FFH
                JR      NZ,14B5H
                DEC     HL
                JR      14A2H

                LD      A,1
                PUSH    AF
                BIT     7,(IX+1)
                JR      Z,14CCH
                CALL    2B82H
                JR      14CFH

                CALL    2B2FH
                JR      Z,14EAH
                CALL    684H
                CALL    206AH
                CALL    14EDH
                JR      Z,14E5H
                CALL    14FEH
                JR      NZ,14C1H
                POP     AF
                INC     A
                JR      14C0H

                POP     AF
                DEC     A
                JR      NZ,14C0H
                RET

                POP     AF
                SCF
                RET

                LD      HL,14F8H
                LD      DE,35FCH
                LD      B,6
                jp      1ECCH

                db      'MEND  '

                LD      HL,1509H
                LD      DE,35FCH
                LD      B,6
                jp      1ECCH

                db      'MACRO '

                LD      A,(DE)
                CALL    1517H
                INC     DE
                DJNZ    150FH
                RET

                PUSH    HL
                PUSH    DE
                PUSH    BC
                PUSH    AF
                LD      HL,(366CH)
                LD      (HL),A
                DEC     HL
                LD      (HL),0
                LD      (366CH),HL
                LD      DE,(3D5FH)
                CALL    subdehl
                JP      Z,nomem
                POP     AF
                POP     BC
                POP     DE
                POP     HL
                RET

                LD      A,10H
                CALL    1D9BH
                JP      206AH

macros:         LD      HL,0
                LD      (3D61H),HL
                LD      (3D62H),HL
                SET     7,(IX+1)
                LD      HL,906H
                LD      (3DCFH),HL
                LD      HL,3DD1H
                PUSH    HL
                SUB     A
                PUSH    AF
                CALL    2B82H
                JR      Z,1590H
                CALL    684H
                JR      Z,1555H
                CALL    644H
                JR      Z,1555H
                CALL    14FEH
                JR      Z,1574H
                CALL    14EDH
                JR      NZ,1555H
                POP     AF
                DEC     A
                JR      C,159DH
                JR      1554H

                POP     AF
                INC     A
                CP      1
                JR      NZ,1554H
                POP     DE
                LD      HL,3602H
                LD      BC,6
                LDIR
                LD      HL,3D64H
                LD      BC,3
                LDIR
                PUSH    DE
                LD      A,1
                JR      1554H

                POP     AF
                POP     HL
                LD      (HL),0
                INC     HL
                LD      (3DCDH),HL
                RES     7,(IX+1)
                RET

                LD      DE,15A3H
                JP      pr&lv

                db      'MACRO library'
                db      ' file error',cr,lf,0

                LD      A,(3608H)
                DEC     A
                RET     NZ
                LD      HL,3DCFH
                LD      DE,35FCH
                CALL    1EAEH
                RET     NZ
                LD      C,(HL)
                INC     HL
                LD      D,(HL)
                INC     HL
                LD      E,(HL)
                LD      HL,fcbext
                CALL    opnfil
                SET     7,(IX+1)
                LD      HL,3B95H
                LD      DE,3BE5H
                LD      BC,50H
                LDIR
                CALL    2B82H
                CALL    684H
                CALL    137DH
                RES     7,(IX+1)
                LD      HL,3BE5H
                LD      DE,3B95H
                LD      BC,50H
                LDIR
                CALL    684H
                SUB     A
                RET

                LD      A,(395EH)
                CP      8
                JR      Z,163BH
                CALL    1747H
                CALL    228AH
                LD      A,D
                CP      2
                CALL    NZ,1AD8H
                LD      A,(395EH)
                INC     A
                LD      (395EH),A
                DEC     A
                LD      HL,395FH
                CALL    addahl
                LD      A,(395EH)
                DEC     A
                JR      Z,1631H
                DEC     HL
                LD      A,(HL)
                INC     HL
                AND     A
                JR      Z,1633H
                LD      A,B
                OR      C
                LD      (HL),A
                CALL    16A4H
                CALL    Z,206AH
                RET

                LD      A,6
                CALL    1D9BH
                JP      206AH

                LD      A,(395EH)
                AND     A
                JR      Z,1657H
                CALL    228AH
                CALL    16A4H
                CALL    Z,206AH
                LD      HL,395EH
                DEC     (HL)
                RET

                LD      A,10H
                CALL    1D9BH
                JP      206AH

                LD      A,(395EH)
                AND     A
                RET     Z
                LD      HL,395FH
                CALL    addahl
                DEC     HL
                LD      A,(HL)
                AND     A
                JR      Z,1671H
                SUB     A
                RET

                CALL    1682H
                RET     Z
                CALL    1693H
                RET     Z
                CALL    16A4H
                CALL    Z,206AH
                SUB     A
                INC     A
                RET

                LD      HL,168DH
                LD      DE,35FCH
                LD      B,6
                JP      1ECCH

                db      'ENDIF '

                LD      HL,169EH
                LD      DE,35FCH
                LD      B,6
                JP      1ECCH

                db      'IF    '

                LD      A,(3614H)
                AND     A
                JR      NZ,16BAH
                BIT     5,(IX+1)
                JR      NZ,16BAH
                BIT     2,(IX+1)
                RET     NZ
                BIT     1,(IX+3)
                RET

                SUB     A
                RET

                CALL    171AH
                CP      8
                CALL    NC,1736H
                RLCA
                RLCA
                RLCA
                RET

                LD      A,(HL)
                CP      ')'
                JR      NZ,16D5H
                INC     HL
                LD      BC,0
                LD      D,2
                LD      A,C
                RET

                CALL    173BH
                LD      A,D
                CP      2
                CALL    NZ,1AD8H
                LD      A,B
                AND     A
                JR      Z,16EBH
                INC     A
                JR      NZ,16EFH
                LD      A,C
                CP      80H
                JR      C,16EFH
                RET

                LD      A,C
                CP      80H
                RET     C
                LD      A,9
                JR      1738H

                CALL    1747H
                LD      A,(3609H)
                ADD     A,2
                CP      D
                CALL    NZ,1AD8H
                LD      A,2
                LD      (360AH),A
                LD      DE,(3B17H)
                INC     DE
                INC     DE
                LD      A,C
                SUB     E
                LD      C,A
                LD      A,B
                SBC     A,D
                LD      B,A
                JR      16DEH

                CALL    1748H
                CALL    1729H
                JR      171DH

                CALL    1726H
                PUSH    AF
                LD      A,D

                CP      2
                CALL    NZ,1AD8H
                POP     AF
                RET

                CALL    1747H
                LD      A,D
                CP      2
                CALL    NZ,1AD8H
                LD      A,B
                AND     A
                JR      Z,1734H
                INC     A
                LD      A,C
                RET     Z
                LD      A,0CH
                JP      1D9BH

                SUB     A
                LD      (3C5AH),A
                LD      (3CF2H),A
                LD      BC,7FH
                JR      1797H

                SUB     A
                LD      (3667H),A
                SUB     A
                LD      (3C5AH),A
                LD      (3CF2H),A
                CALL    fnonsp
                CALL    189DH
                JR      Z,1797H
                CALL    18AAH
                JR      Z,17C8H
                CALL    18B4H
                JR      Z,178BH
                LD      A,(HL)
                CP      squote
                JP      Z,17E9H
                CALL    cknum
                JR      NC,17DFH
                CALL    1CC0H
                CALL    C,1D82H
                CALL    1B4FH
                CALL    181EH
                JP      Z,1815H
                CALL    fnonsp
                CALL    18AAH
                JR      Z,17C8H
                CALL    18D2H
                JR      NZ,17A6H
                PUSH    BC
                CALL    1870H
                POP     BC
                JR      Z,1797H
                CP      C
                JR      C,179EH
                JR      Z,179EH
                CALL    1857H
                JR      Z,1815H
                JR      1752H

                PUSH    BC
                CALL    1970H
                JR      C,1814H
                JR      178CH

                CALL    1870H
                JR      Z,17B2H
                CALL    1970H
                JR      C,1815H
                JR      17A6H

                CALL    183BH
                JR      Z,1815H
                LD      A,C
                AND     60H
                CP      20H
                LD      A,C
                JR      Z,17C1H
                AND     1FH
                LD      (360AH),A
                LD      B,D
                LD      C,E
                LD      D,A
                RET

                CALL    1870H
                JR      Z,1815H
                CP      7FH
                JR      Z,17D8H
                CALL    1970H
                JR      C,1815H
                JR      17C8H

                CALL    1885H
                JR      Z,1815H
                JR      177EH

                CALL    1AFAH
                CALL    C,1D82H
                LD      C,2
                JR      1778H

                INC     HL
                LD      BC,2
                LD      DE,3C46H
                CALL    1D65H
                LD      DE,0
                JR      NC,180CH
                INC     B
                DEC     B
                JR      Z,180FH
                LD      DE,(3C46H)
                DEC     B
                JR      Z,1808H
                LD      A,D
                LD      D,E
                LD      E,A
                JR      180FH

                LD      D,0
                JR      180FH

                CALL    1D82H
                LD      C,2
                jp      1778H

                POP     BC
                CALL    1AD8H
                LD      BC,0
                LD      D,0
                RET

                LD      A,(3C5AH)
                CP      '2'
                RET     Z
                PUSH    HL
                INC     A
                LD      (3C5AH),A
                LD      HL,3C59H
                LD      B,A
                ADD     A,B
                ADD     A,B
                CALL    addahl
                LD      (HL),E
                INC     HL
                LD      (HL),D
                INC     HL
                LD      (HL),C
                POP     HL
                SUB     A
                INC     A
                RET

                LD      A,(3C5AH)
                AND     A
                RET     Z
                PUSH    HL
                DEC     A

                LD      (3C5AH),A
                LD      HL,3C5CH
                LD      B,A
                ADD     A,B
                ADD     A,B
                CALL    addahl
                LD      E,(HL)
                INC     HL
                LD      D,(HL)
                INC     HL
                LD      C,(HL)
                POP     HL
                SUB     A
                INC     A
                RET

                LD      A,(3CF2H)
                CP      '2'
                RET     Z
                PUSH    HL
                INC     A
                LD      (3CF2H),A
                LD      HL,3CF2H
                ADD     A,A
                CALL    addahl
                LD      (HL),B
                INC     HL
                LD      (HL),C
                POP     HL
                SUB     A
                INC     A
                RET

                LD      A,(3CF2H)
                AND     A
                RET     Z
                PUSH    HL
                LD      HL,3CF2H
                ADD     A,A
                CALL    addahl
                LD      B,(HL)
                INC     HL
                LD      C,(HL)
                POP     HL
                SUB     A
                INC     A
                LD      A,C
                RET

                CALL    1870H
                RET     Z
                LD      A,(3CF2H)
                DEC     A
                LD      (3CF2H),A
                SUB     A
                INC     A
                RET

;****** unref'd from here to next "******"
                LD      A,(3CF2H)
                DEC     A
                LD      (3CF2H),A
                SUB     A
                INC     A
                RET
;*******

                LD      BC,7FH
                LD      A,(HL)
                INC     HL
                CP      '['
                RET     Z
                CP      '('
                RET     Z
                DEC     HL
                RET

                LD      A,(HL)
                INC     HL
                CP      ']'
                RET     Z
                CP      ')'
                RET     Z
                DEC     HL
                RET

                EX      DE,HL
                LD      HL,18C5H
                CALL    192FH
                JR      Z,18C3H
                LD      HL,18CCH
                CALL    1942H
                EX      DE,HL
                RET

                db      '+'
                dw      286h
                db      '-'
                dw      28ch
                db      0ffh
                db      'NO'
                db      0d4h
                dw      488h
                db      0

                EX      DE,HL
                LD      HL,18E3H
                CALL    192FH
                JR      Z,18E1H
                LD      HL,18F9H
                CALL    1942H
                EX      DE,HL
                RET

                db      '+'
                dw      306h
                db      '-'
                dw      307h
                db      '*'
                dw      101h
                db      '/'
                dw      102h
                db      '>'
                dw      70dh
                db      '<'
                dw      70eh
                db      '='
                dw      70fh
                db      0ffh

                db      'MO','D'+128
                dw      103h
                db      'SH','L'+128
                dw      104h
                db      'SH','R'+128
                dw      105h
                db      'AN','D'+128
                dw      509h
                db      'O','R'+128
                dw      60ah
                db      'XO','R'+128
                dw      60bh
                db      'L','T'+128
                dw      70eh
                db      'G','T'+128
                dw      70dh
                db      'E','Q'+128
                dw      70fh
                db      'N','E'+128
                dw      710h
                db      'L','E'+128
                dw      711h
                db      'G','E'+128
                dw      712h
                db      0

                LD      A,(HL)
                AND     A
                RET     M
                CALL    cmpstr
                JR      Z,193CH
                INC     HL
                INC     HL
                INC     HL
                JR      192FH

                INC     HL
                LD      B,(HL)
                INC     HL
                LD      C,(HL)
                INC     DE
                RET

                PUSH    DE
                LD      A,(HL)
                AND     A
                JR      Z,196DH
                CALL    cmpstr
                JR      NZ,1962H
                LD      A,(HL)
                INC     HL
                INC     DE
                AND     A
                JP      P,1943H
                LD      A,(DE)
                INC     DE
                CP      ' '
                JR      Z,195DH
                CP      tab
                JR      NZ,196DH
                POP     BC
                LD      B,(HL)
                INC     HL
                LD      C,(HL)
                RET

                LD      A,(HL)
                INC     HL
                AND     A
                JP      P,1962H
                INC     HL
                INC     HL
                POP     DE
                JR      1942H

                POP     DE
                INC     A
                RET

                PUSH    HL
                CALL    1885H
                JR      Z,19C0H
                LD      A,B
                AND     A
                JP      M,19AEH
                PUSH    BC
                CALL    183BH
                JR      Z,19BFH
                PUSH    DE
                PUSH    BC
                CALL    183BH
                JR      Z,19BDH
                EX      DE,HL
                POP     DE
                LD      B,C
                LD      C,E
                POP     DE
                EX      (SP),HL
                LD      A,H
                AND     7FH
                LD      HL,19C5H
                RLA
                CALL    addahl
                LD      A,(HL)
                INC     HL
                LD      H,(HL)
                LD      L,A
                PUSH    HL
                POP     IY
                POP     HL
                CALL    19C3H
                EX      DE,HL
                LD      A,(3D58H)
                LD      C,A
                CALL    181EH
                AND     A
                POP     HL
                RET

                PUSH    BC
                CALL    183BH
                JR      Z,19BFH
                EX      DE,HL
                LD      B,C
                LD      DE,0
                LD      C,2
                JR      198DH

                POP     HL
                POP     HL
                POP     HL
                POP     HL
                SCF
                RET

                JP      (IY)

                dw      1ad8h
                dw      19ebh
                dw      19f1h
                dw      19f7h
                dw      19fch
                dw      1a06h
                dw      1a13h
                dw      1a1ch
                dw      1a23h
                dw      1a2eh
                dw      1a38h
                dw      1a42h
                dw      1a18h
                dw      1a4ch
                dw      1a5bh
                dw      1a68h
                dw      1a72h
                dw      1a7ch
                dw      1a89h

                CALL    1A94H
                JP      1B2FH

                CALL    1A94H
                JP      1B3BH

                CALL    19F1H
                EX      DE,HL
                RET

                CALL    1A94H
                LD      A,D
                OR      E
                RET     Z
                ADD     HL,HL
                DEC     DE
                JR      19FFH

                CALL    1A94H
                LD      A,D
                OR      E
                RET     Z
                SRL     H
                RR      L
                DEC     DE
                JR      1A09H

                CALL    1AA4H
                ADD     HL,DE
                RET

                EX      DE,HL
                LD      A,B
                LD      B,C
                LD      C,A
                CALL    1ABEH
                AND     A
                SBC     HL,DE
                RET

                CALL    1A94H
                EX      DE,HL
                LD      HL,0FFFFH
                AND     A
                SBC     HL,DE
                RET

                CALL    1A94H
                LD      A,H
                AND     D
                LD      H,A
                LD      A,L
                AND     E
                LD      L, A
                RET

                CALL    1A94H
                LD      A,H
                OR      D
                LD      H,A
                LD      A,L
                OR      E
                LD      L,A
                RET

                CALL    1A94H
                LD      A,H
                XOR     D
                LD      H,A
                LD      A,L
                XOR     E
                LD      L,A
                RET

                CALL    1ABEH
                AND     A
                SBC     HL,DE
                JP      M,1A64H
                JR      Z,1A64H
                LD      HL,0FFFFH
                RET

                CALL    1ABEH
                AND     A
                SBC     HL,DE
                JP      M,1A57H
                LD      HL,0
                RET

                CALL    1ABEH
                AND     A
                SBC     HL,DE
                JR      NZ,1A64H
                JR      1A57H

                CALL    1ABEH
                AND     A
                SBC     HL,DE
                JR      Z,1A64H
                JR      1A57H

                CALL    1ABEH
                AND     A
                SBC     HL,DE
                JP      M,1A57H
                JR      Z,1A57H
                JR      1A64H

                CALL    1ABEH
                AND     A
                SBC     HL,DE
                JP      M,1A64H
                JR      1A57H

                CALL    1AE0H
                LD      A,B
                CP      C
                JR      NZ,1A9DH
                CP      2
                CALL    NZ,1AD8H
                LD      (3D58H),A
                RET

                CALL    1AE0H
                LD      A,B
                CP      2
                JR      NZ,1AB1H
                LD      A,C
                LD      (3D58H),A
                RET

                LD      A,C
                CP      2
                JR      Z,1ABBH
                CALL    1AD8H
                JR      1AADH

                LD      A,B
                JR      1AADH

                CALL    1AE0H
                LD      A,B
                CP      2
                JR      Z,1A94H
                CP      C
                JR      Z,1AD1H
                LD      A,C
                CP      2
                JR      Z,1AD3H
                CALL    1AD8H
                LD      B,2
                LD      A,B
                LD      (3D58H),A
                RET

                LD      A,3
                CALL    1D9BH
                LD      B,2
                RET

                LD      A,B
                BIT     5,A
                JR      NZ,1AEAH
                LD      A,C
                BIT     5,A
                JR      Z,1AF1H
                XOR     A
                LD      (360CH),A
                CALL    1AD8H
                LD      A,B
                AND     1FH
                LD      B,A
                LD      A,C
                AND     1FH
                LD      C,A
                RET

                PUSH    HL
                INC     HL
                CALL    1FBAH
                JR      NZ,1AFBH
                DEC     HL
                POP     BC
                LD      A,(HL)
                CALL    toupr
                CP      'H'
                JR      Z,1B1BH
                CP      'D'
                JR      Z,1B20H
                CP      'Q'
                JR      Z,1B25H
                CP      'B'
                JR      Z,1B2AH
                INC     HL
                JP      getval

                CALL    cnvhxv
                INC     HL
                RET

                CALL    getval
                INC     HL
                RET

                CALL    1E34H
                INC     HL
                RET

                CALL    1E4DH
                INC     HL
                RET

                LD      B,H
                LD      C,L
                LD      HL,0
                LD      A,D
                OR      E
                RET     Z
                ADD     HL,BC
                DEC     DE
                JR      1B34H

                LD      BC,0FFFFH
                LD      A,D
                OR      E
                JP      Z,1D8AH
                SBC     HL,DE
                INC     BC
                JR      NC,1B43H
                JR      Z,1B4BH
                ADD     HL,DE
                EX      DE,HL
                LD      H,B
                LD      L,C
                RET

                LD      DE,3C3CH
                PUSH    DE
                LD      B,6
                CALL    1F8DH
                CALL    1FA6H
                POP     DE
                LD      A,(3C3CH)
                CP      '$'
                JR      NZ,1B6AH
                LD      A,(3C3DH)
                CP      ' '
                JR      Z,1BBCH
                SUB     A
                INC     A
                PUSH    HL
                PUSH    DE
                CALL    7DAH
                POP     DE
                JR      NC,1BB5H
                PUSH    DE
                SUB     A
                LD      BC,0
                CALL    734H
                LD      (360DH),HL
                PUSH    AF
                AND     3FH
                JR      Z,1BADH
                POP     AF
                PUSH    AF
                AND     60H
                CP      60H
                CALL    Z,71EH
                POP     AF
                POP     DE
                PUSH    BC
                PUSH    AF
                LD      HL,fcbtmp
                BIT     2,(IX+0)
                CALL    NZ,5F1H
                POP     AF
                POP     DE
                POP     HL
                AND     3FH
                LD      C,A
                LD      (3D58H),A
                BIT     5,A
                RET     Z
                LD      A,1
                LD      (360CH),A
                RET

                CALL    1D96H
                POP     AF
                LD      A,2
                JR      1B85H

                LD      DE,0
                LD      C,2
                POP     HL
                RET

                PUSH    HL
                LD      HL,(3B17H)
                LD      A,(3667H)
                LD      E,A
                LD      D,0
                ADD     HL,DE
                EX      DE,HL
                POP     HL
                LD      A,(3609H)
                ADD     A,2
                LD      C,A
                RET

                LD      DE,1C3FH
                CALL    1C2CH
                LD      (3617H),A
                RET

                LD      DE,1C48H
                JR      1BD3H

                LD      A,3
                JR      1BE5H

                LD      A,4
                LD      (3C3BH),A
                LD      DE,1C55H
                CALL    1C2CH
                RET     NZ
                PUSH    AF
                CALL    16C8H
                LD      (3619H),A
                LD      B,A
                POP     AF
                LD      (3617H),A
                RET

                LD      DE,1C60H
                JR      1C2CH

                LD      DE,1C6FH
                JR      1C2CH

                LD      DE,1C7EH
                JR      1C2CH

                LD      DE,1C8DH
                JR      1C2CH

                CALL    1CDEH
                LD      DE,1C9CH
                JR      1C2CH

                CALL    1CDEH
                CALL    1C13H
                RET     Z
                LD      DE,1CADH
                JR      1C2CH

                LD      DE,1CB5H
                JR      1C2CH

                LD      DE,1CBAH
                PUSH    HL
                EX      DE,HL
                CALL    1EAEH
                EX      DE,HL
                JR      NZ,1C3AH
                ADD     HL,BC
                CALL    1FBAH
                JR      Z,1C3CH
                POP     HL
                RET

                LD      A,(DE)
                POP     BC
                RET

                db      2,3
                db      'IX'
                db      0ddh
                db      'IY'
                db      0fdh
                db      0

                db      4,5
                db      '(IX)'
                db      0ddh
                db      '(IY)'
                db      0fdh
                db      0

                db      3 , 4
                db      '(IX'
                db      0ddh
                db      '(IY'
                db      0fdh
                db      0

                db      2,3
                db      'BC'
                db      0
                db      'DE'
                db      10h
                db      'HL'
                db      20h
                db      'AF'
                db      30h
                db      0

                db      2,3
                db      'BC'
                db      0
                db      'DE'
                db      10h
                db      'HL'
                db      20h
                db      'SP'
                db      30h
                db      0

                db      2,3
                db      'BC'
                db      0
                db      'DE'
                db      10h
                db      'IX'
                db      20h
                db      'SP'
                db      30h
                db      0

                db      2,3
                db      'BC'
                db      0
                db      'DE'
                db      10h
                db      'IY'
                db      20h
                db      'SP'
                db      30h
                db      0

                db      1,2
                db      'A'
                RLCA
                db      'B'
                db      0
                db      'C'
                db      1
                db      'D'
                db      2
                db      'E'
                INC     BC
                db      'H'
                INC     B
                db      'L'
                DEC     B
                db      0

                db      4,5
                db      '(HL)'
                db      6
                db      0

                db      2,2
                db      'HL'
                db      0

                db      3,3
                db      '(C)'
                db      0

                CALL    1CD0H
                RET     NC
                CP      '.'
                JR      Z,1CCEH
                CP      '$'
                JR      Z,1CCEH
                SCF
                RET

                AND     A
                RET

                CP      'A'
                RET     C
                CP      '['
                CCF
                RET     NC
                CP      'a'
                RET     C
                CP      '{'
                CCF
                RET

                CALL    1CE8H
                CALL    NZ,1D92H
                LD      A,(HL)
                CP      '('
                RET

                LD      A,(HL)
                CP      ','
                RET     NZ
                INC     HL
                RET

                CALL    1D28H
                JR      NZ,1CF7H
                SUB     ' '
                CP      A
                RET

                LD      DE,1D19H
                CALL    1D2BH
                RET     NZ
                BIT     5,(IX+0)
                RET     Z
                CP      '('
                JR      Z,1D0BH
                CP      ' '
                JR      NZ,1CF5H
                PUSH    HL
                LD      HL,(3B13H)
                INC     HL
                LD      (3B13H),HL
                LD      (IX+1CH),'P'
                POP     HL
                RET

                db      2,3
                db      'M '
                db      38h
                db      'P '
                db      30h
                db      'PE'
                db      28h
                db      'PO'
                db      20h
                db      0

                LD      DE,1D46H
                PUSH    DE
                LD      DE,3C46H
                PUSH    DE
                LD      B,3
                CALL    1F8DH
                POP     DE
                JR      NZ,1D41H
                EX      (SP),HL
                EX      DE,HL
                CALL    1C2CH
                JR      NZ,1D41H
                POP     HL
                RET

                POP     HL
                LD      HL,(35FAH)
                RET

                db      2,3
                db      'C '
                db      38h
                db      'NC'
                db      30h
                db      'Z '
                db      28h
                db      'NZ'
                db      20h
                db      0

;****** unref'd from here to next "******"
                CALL    1747H
                LD      A,D
                PUSH    BC
                PUSH    HL
                LD      H,B
                LD      L,C
                CALL    6E0H
                POP     HL
                CALL    228AH
                POP     HL
;********
                INC     C
                LD      A,(HL)
                CP      cr
                JR      Z,1D7EH
                CP      squote
                JR      Z,1D77H
                DEC     C
                RET     Z
                LD      (DE),A
                INC     DE
                INC     HL
                INC     B
                JR      1D66H

                INC     HL
                LD      A,(HL)
                CP      squote
                JR      Z,1D6FH
                DEC     C
                SCF
                RET

;****** unref'd from here to next "******"
                POP     HL
                RET
;******

                LD      A,1
                JR      1D9BH

                LD      A,4
                JR      1D9BH

                LD      A,0EH
                JR      1D9BH

                LD      A,5
                JR      1D9BH

                LD      A,0AH
                JR      1D9BH

                LD      A,0BH
                LD      BC,0
                PUSH    AF
                LD      (IX+20H),1
                LD      A,(3612H)
                AND     A
                JR      NZ,1DADH
                POP     AF
                LD      (3612H),A
                LD      A,0
                RET

                POP     AF
                JR      1DAAH

;****** unref'd from here to next "******"
                CALL    1DCBH
                CALL    1DCBH
                CALL    1DCBH
                CALL    1DC5H
;******

                CALL    1DCBH
                CALL    1DCEH
                CALL    1DCEH
                CALL    1DCEH
                CALL    1DCEH
                CALL    1DCEH
                LD      B,' '
                JP      outit

;****** unref'd from here to next "******"
                PUSH    BC
                LD      B,(HL)
                INC     HL
                LD      C,(HL)
                INC     HL
                LD      (35F0H),HL
                LD      (35F2H),BC
                POP     BC
                RET

                CALL    1DEDH
                RET     Z
                LD      A,(35F3H)
;******
addahl:         ADD     A,L
                LD      L,A
                RET     NC
                INC     H
                RET

;****** unref'd from here to next "******"
                LD      HL,(35F0H)
                PUSH    HL
                LD      A,(35F2H)
                CALL    addahl
                LD      (35F0H),HL
                POP     HL
                LD      A,(HL)
                AND     A
                RET
;***********

                LD      A,E
                ADD     A,L
                DAA
                LD      L,A
                LD      A,D
                ADC     A,H
                DAA
                LD      H,A
                RET

                LD      B,H
                CALL    1E0CH
                LD      B,L
                LD      A,B
                RRA
                RRA
                RRA
                RRA
                CALL    1E15H
                LD      A,B
                AND     0FH
                ADD     A,30H
                LD      (DE),A
                INC     DE
                RET

getval:         PUSH    HL
                LD      HL,0
gv1:            ADD     HL,HL
                LD      D,H
                LD      E,L
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,DE
                LD      A,(BC)
                CALL    cknum
                JR      C,gv2
                CALL    onee98
                JR      NZ,gv1
                RET

gv2:            POP     HL
                RET

                PUSH    HL
                LD      HL,0
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                LD      A,(BC)
                CP      '0'
                JR      C,1E4BH
                CP      '8'
                CCF
                JR      C,1E4BH
                CALL    onee98
                JR      NZ,1E38H
                RET

                POP     HL
                RET

                PUSH    HL
                LD      HL,0
                ADD     HL,HL
                LD      A,(BC)
                CP      '0'
                JR      C,1E62H
                CP      '2'
                CCF
                JR      C,1E62H
                CALL    onee98
                JR      NZ,1E51H
                RET

                POP     HL
                RET

                db      'DM####'

cnvhxv:         PUSH    HL
                LD      HL,0
cvhv1:          ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                ADD     HL,HL
                LD      A, (BC)
                CALL    chkhxv
                JR      C,cvhv2
                CALL    onee98
                JR      NZ,cvhv1
                RET

cvhv2:          POP     HL
                RET

chkhxv:         CALL    cknum
                JR      NC,rethxv
                CP      'A'
                RET     C
                CP      'G'
                JR      C,adjhxv
                CP      'a'
                RET     C
                CP      'g'
                CCF
                RET     C
adjhxv:         ADD     A,9
rethxv:         AND     0FH
                RET

onee98:         AND     0FH
                CALL    addahl
                EX      DE,HL
                POP     HL
                EX      (SP),HL
                PUSH    HL
                INC     BC
                AND     A
                SBC     HL,BC
                POP     HL
                JR      NZ,oneeaa
                LD      A,(HL)
                RET

oneeaa:         EX      (SP),HL
                PUSH    HL
                EX      DE,HL
                RET

                CALL    1EB8H
                RET     NZ
                LD      C,B
                LD      B,0
                ADD     HL,BC
                SUB     A
                RET

                LD      B,(HL)
                INC     HL
                LD      C,(HL)
                INC     HL
                LD      A,(HL)
                AND     A
                JR      Z,1ECAH
                CALL    1ECCH
                RET     Z
                LD      A,C
                CALL    addahl
                JR      1EBCH

                INC     A
                RET

                PUSH    HL
                PUSH    DE
                PUSH    BC
                EX      DE,HL
                CALL    cmpstr
                JR      NZ,1ED9H
                INC     HL
                INC     DE
                DJNZ    1ED0H
                POP     BC
                POP     DE
                POP     HL
                RET

cmpstr:         LD      A,(DE)   ;cmp. byte (DE) to (HL)
                AND     7FH      ;  (DE) is in A
                CALL    toupr    ;  and (HL) is in C
                PUSH    BC
                LD      B,A
                LD      A,(HL)
                AND     7FH
                CALL    toupr
                LD      C,A
                LD      A,B
                CP      C
                POP     BC
                RET

toupr:          CP      'a'
                RET     C
                CP      '{'
                RET     NC
                AND     5FH
                RET

subdehl:        PUSH    HL
                AND     A
                SBC     HL,DE
                POP     HL
                RET

;****** unref'd from here to next "******"
                CALL    hxprhl
                JR      1F07H

                CALL    hxpra
                JP      1DCEH

hxprhl:         LD      A,H
                CALL    hxpra
                LD      A,L
hxpra:          LD      C,A
                RRA
                RRA
                RRA
                RRA
                CALL    cnvasc
                LD      A,C
cnvasc:         AND     0FH
                ADD     A,30H
                CP      ':'
                JR      C,numbr
                ADD     A,7
numbr:          LD      B,A
                JP      outit

;****** following call is unref'd
                CALL    01F29H

                CALL    1DCBH
                PUSH    HL
                EXX
                POP     HL
                LD      A,(HL)
                INC     HL
                LD      H,(HL)
                LD      L,A
                CALL    hxprhl
                EXX
                INC     HL
                INC     HL
                RET

;****** unref'd from here to next
                CALL    1DCBH
                LD      A,(HL)
                EXX
                CALL    1F50H
                CALL    outit
                LD      B,C
                CALL    outit
                LD      B,D
                CALL    outit
                EXX
                INC     HL
                RET

                LD      BC,3030H
                LD      D,B
                LD      E,A
                LD      A,":"
                INC     E
                DEC     E
                JR      Z,1F69H
                INC     D
                CP      D
                JR      NZ,1F58H
                LD      D,"0"
                INC     C
                CP      C
                JR      NZ,1F58H
                LD      C,D
                INC     B
                JR      1F58H

                LD      A,'0'
                CP      B
                RET     NZ
                LD      B,' '
                CP      C
                RET     NZ
                LD      C,B
                RET


prtstg:         LD      B,(HL)   ;print(?) (D) chars.
                CALL    outit    ;  pointed to by (HL)
                INC     HL
                DEC     D
                JR      NZ,prtstg
                RET

blkfil:         LD      A,' '
fill:           LD      (DE),A
                LD      H,D
                LD      L,E
                INC     DE
                DEC     BC
                LDIR
                RET

cknum:          CP      '0'
                RET     C
                CP      ':'
                CCF
                RET

                LD      C,B
                LD      B,0
                PUSH    BC
                PUSH    DE
                PUSH    HL
                CALL    blkfil
                POP     HL
                POP     DE
                POP     BC
                PUSH    BC
                CALL    1FBAH
                POP     BC
                RET     Z
                LDI
                JP      PO,1FBAH
                JR      1F99H

                PUSH    BC
                CALL    1FBAH
                POP     BC
                RET     Z
                INC     HL
                JR      1FA6H

fnonsp:         LD      A,(HL)
                CP      ' '
                JR      Z,fnsp1
                CP      tab
                RET     NZ
fnsp1:          INC     HL
                JR      fnonsp

                PUSH    DE
                EX      DE,HL
                LD      HL,1FC6H
                CALL    1EAEH
                EX      DE,HL
                LD      A,(HL)
                POP     DE
                RET

                LD      BC,2C01H
                LD      A,(2D2BH)
                CPL
                LD      HL,(2920H)
                INC     A
                LD      A,'='
                DEC     SP
                DEC     C
                ADD     HL,BC
                LD      E,L
                NOP
                LD      B,0
                JR      1FEAH

                LD      B,1
                JR      1FEAH

                LD      B,2
                JR      1FEAH

                LD      B,3
                JR      1FEAH

                LD      B,4
                CALL    1FF0H
                JP      2296H

                CALL    228AH
                PUSH    BC
                CALL    200CH
                POP     BC
                LD      A,(3608H)
                CP      2
                JR      NZ,2008H
                PUSH    BC
                LD      HL,3617H
                CALL    2969H
                POP     BC
                SUB     A
                LD      C,B
                LD      B,0
                RET

                CALL    2012H
                JP      20B4H

                PUSH    BC
                LD      HL,(3B17H)
                CALL    hxprhl
                LD      A,(3609H)
                CALL    224DH
                CALL    1DCEH
                LD      HL,3617H
                POP     BC
                LD      C,4
                LD      A,B
                AND     A
                CALL    Z,2048H
                JR      Z,2040H
                PUSH    BC
                LD      A,(HL)
                CALL    hxpra
                POP     BC
                INC     HL
                DEC     C
                DJNZ    202FH
                CALL    2261H
                LD      A,C
                AND     A
                JR      Z,2048H
                PUSH    BC
                CALL    1DCBH
                POP     BC
                DEC     C
                JR      NZ,2040H
                CALL    1DCEH
                SUB     A
                RET

                LD      HL,3617H
                PUSH    BC
                CALL    1DBFH
                POP     BC
                LD      A,(HL)
                PUSH    BC
                CALL    hxpra
                POP     BC
                INC     HL
                DJNZ    2055H
                PUSH    HL
                CALL    2261H
                CALL    prcr
                CALL    20D7H
                POP     HL
                RET

                CALL    1DBCH
                CALL    1DBFH
                JR      20B1H

                PUSH    BC
                CALL    1DC2H
                JR      2085H

                PUSH    BC
                LD      HL,(3B17H)
                CALL    hxprhl
                LD      A,(3609H)
                CALL    224DH
                CALL    1DCEH
                LD      B,'('
                CALL    outit
                POP     HL
                CALL    hxprhl
                LD      A,(360AH)
                BIT     5,A
                JR      NZ,209CH
                CP      3
                JR      C,20A6H
                CALL    2261H
                LD      B,')'
                CALL    outit
                JR      20AEH

                LD      B,')'
                CALL    outit
                CALL    1DCEH
                CALL    1DCEH
                CALL    1DCBH
                CALL    1DCEH
                LD      A,(3610H)
                LD      B,A
                CALL    outit
                LD      (3610H),A
                CALL    1DCEH
                LD      A,(3611H)
                AND     A
                LD      A,' '
                JR      Z,20CEH
                LD      A, '+'
                LD      (3B94H),A
                LD      HL,3B90H
                CALL    2BE5H
                LD      A,(3612H)
                AND     A
                RET     Z
                PUSH    AF
                CALL    24B8H
                LD      HL,(3B0FH)
                INC     HL
                LD      (3B0FH),HL
                LD      HL,2105H
                CALL    2280H
                POP     AF
                CALL    210EH
                CALL    2280H
                LD      HL,2109H
                CALL    2BE5H
                CALL    prcr
                SUB     A
                LD      (3612H),A
                LD      (3614H),A
                RET

                db      '***',' '+128
                db      ' ***',cr

                LD      HL,211CH
                LD      B,A
                DEC     B
                RET     z
                LD      A,(HL)
                INC     HL
                AND     A
                JP      M,2112H
                JR      2114H

                db      'argument erro'
                db      'r'+128
                db      'multiple definitio'
                db      'n'+128
                db      'expression erro'
                db      'r'+128
                db      'label erro'
                db      'r'+128
                db      'missing labe'
                db      'l'+128
                db      'nesting erro'
                db      'r'+128
                db      'opcode erro'
                db      'r'+128
                db      'phase erro'
                db      'r'+128
                db      'range erro'
                db      'r'+128
                db      'syntax erro'
                db      'r'+128
                db      'undefined symbo'
                db      'l'+128
                db      'value erro'
                db      'r'+128
                db      'file not foun'
                db      'd'+128
                db      'divide by zero erro'
                db      'r'+128
                db      'no matching I'
                db      'F'+128
                db      'no matching MACR'
                db      'O'+128
                db      'too many COMMON'
                db      's'+128
                db      'multiple MACRO'
                db      ' definitio'
                db      'n'+128
                db      'label not allowe'
                db      'd'+128
                db      'instruction not'
                db      ' allowe'
                db      'd'+128

                CP      3
                JR      C,2253H
                LD      A,3
                LD      HL,225DH
                CALL    addahl
                LD      B,(HL)
                JP      outit

                db      ' ',squote,'"*'

                LD      A,(360AH)
                BIT     5,A
                JR      NZ,227BH
                CP      5
                JR      NC,2273H
                AND     A
                JR      Z,2277H
                SUB     2
                JR      2278H

                LD      A,3
                JR      2278H

                SUB     A
                JP      224DH

                LD      B,'#'
                JP      outit

                LD      B,(HL)
                CALL    outit
                LD      A,(HL)
                INC     HL
                AND     A
                RET     M
                JR      2280H

                CALL    fnonsp
                CP      ';'
                RET     Z
                CP      cr
                RET     Z
                JP      1D92H

                LD      HL,(3B17H)
                ADD     HL,BC
                LD      (3B17H),HL
                EX      DE,HL
                LD      A,(3609H)
                ADD     A,A
                PUSH    AF
                LD      HL,3B19H
                CALL    addahl
                LD      (HL),E
                INC     HL
                LD      (HL),D
                LD      HL,3A91H
                POP     AF
                RET     Z
                CALL    addahl
                PUSH    HL
                LD      A,(HL)
                INC     HL
                LD      H,(HL)
                LD      L,A
                CALL    subdehl
                POP     HL
                RET     NC
                LD      (HL),E
                INC     HL
                LD      (HL),D
                RET

                LD      (3618H),BC
                CALL    228AH
                LD      B,3
                JR      22E2H

                LD      (3619H),BC
                CALL    228AH
                LD      B,4
                JR      22E2H

                LD      (3618H),BC
                JP      1FE0H

                JP      1FE8H

                PUSH    BC
                CALL    200CH
                POP     BC
                PUSH    BC
                LD      DE,3617H
                LD      A,B
                SUB     2
                JR      Z,22F9H
                LD      C,A
                LD      A,(DE)
                CALL    2953H
                INC     DE
                DEC     C
                JR      NZ,22F1H
                LD      A,(DE)
                LD      B,A
                INC     DE
                LD      A,(DE)
                LD      D,A
                LD      E,B
                LD      A,(360AH)
                AND     1FH
                SUB     2
                JR      C,231DH
                JR      Z,231DH
                CP      3
                JR      NC,2327H
                CALL    2974H
                POP     BC
                PUSH    BC
                CALL    2333H
                POP     BC
                LD      C,B
                LD      B,0
                JP      2296H

                LD      A,E
                CALL    2953H
                LD      A,D
                CALL    2953H
                JR      2311H

                PUSH    DE
                CALL    28DAH
                CALL    2908H
                POP     DE
                LD      A,3
                JR      230EH

                LD      A,(360CH)
                AND     A
                RET     Z
                LD      A,(3608H)
                CP      2
                RET     NZ
                LD      HL,(3B17H)
                LD      C,B
                LD      B,0
                DEC     BC
                DEC     BC
                ADD     HL,BC
                EX      DE,HL
                LD      HL,(360DH)
                LD      A,(HL)
                AND     0E0H
                LD      B,A
                LD      A,(3609H)
                ADD     A,2
                OR      B
                LD      (HL),A
                DEC     HL
                LD      (HL),D
                DEC     HL
                LD      (HL),E
                RET

                LD      (IX+21H),1
                LD      DE,(3B0FH)
                LD      HL,23A8H
                CALL    23E4H
                LD      DE,(3B11H)
                LD      HL,23B0H
                BIT     4,(IX+0)
                CALL    NZ,23E4H
                LD      DE,(3B13H)
                LD      HL,23BCH
                BIT     5,(IX+0)
                CALL    NZ,23E4H
                CALL    prcr
                LD      DE,(3A93H)
                LD      HL,23C9H
                LD      A,D
                OR      E
                CALL    NZ,23F8H
                LD      DE,(3A95H)
                LD      HL,23D8H
                LD      A,D
                OR      E
                CALL    NZ,23F8H
                CALL    2402H
                LD      (IX+21H),0
                RET

                db      'Errors',tab
                db      tab+128
                db      'Range Count'
                db      tab+128
                db      'Parity Count'
                db      tab+128
                db      'Program Length'
                db      tab+128
                db      'Data length'
                db      tab+128

                CALL    2280H
                EX      DE,HL
                LD      A,' '
                CALL    2492H
                LD      HL,3C47H
                LD      D,4
                CALL    prtstg
                JP      prcr

                CALL    2280H
                EX      DE,HL
                CALL    246CH
                JP      prcr

                LD      A,(3B15H)
                AND     A
                RET     Z
                PUSH    AF
                LD      HL,245DH
                CALL    2280H
                LD      HL,3AB5H
                LD      DE,3A97H
                LD      B,'/'
                CALL    outit
                PUSH    HL
                LD      B,(HL)
                CALL    outit
                LD      C,5
                INC     HL
                LD      A,(HL)
                CP      ' '
                JR      Z,2434H
                LD      B,A
                CALL    outit
                DEC     C
                JR      NZ,2420H
                LD      B,'/'
                CALL    outit
                JR      243EH

                LD      B,'/'
                CALL    outit
                LD      B,tab
                CALL    outit
                LD      B,tab
                CALL    outit
                LD      A,(DE)
                LD      L,A
                INC     DE
                LD      A,(DE)
                LD      H,A
                INC     DE
                PUSH    DE
                CALL    246CH
                CALL    prcr
                POP     DE
                POP     HL
                LD      BC,6
                ADD     HL,BC
                POP     AF
                DEC     A
                PUSH    AF
                JR      NZ,2414H
                POP     AF
                RET

                db      'COMMON Lengths'
                db      cr+128

                CALL    hxprhl
                LD      A,' '
                CALL    2492H
                CALL    1DCEH
                LD      B,'('
                CALL    outit
                LD      HL,3C46H
                LD      D,5
                LD      A,(HL)
                CP      ' '
                JR      NZ,248AH
                INC     HL
                DEC     D
                JR      NZ,2481H
                CALL    prtstg
                LD      B,')'
                JP      outit

                PUSH    AF
                LD      DE,3C4AH
                LD      A,5
                EX      AF,AF'
                PUSH    DE
                LD      DE,0AH
                CALL    1B3BH
                LD      A,E
                POP     DE
                ADD     A,30H
                LD      (DE),A
                EX      AF,AF'
                DEC     DE
                DEC     A
                JR      NZ,2498H
                LD      B,4
                POP     AF
                LD      C,A
                INC     DE
                LD      A,(DE)
                CP      30H
                RET     NZ
                LD      A,C
                LD      (DE),A
                DJNZ    24AEH
                RET

                LD      A,(3608H)
                CP      2
                RET     NZ
                CALL    2575H
                RET     C
                LD      D,H
                LD      E,L
                ADD     HL, DE
                ADD     HL, DE
                LD      DE,3967H
                ADD     HL,DE
                LD      A,(3612H)
                LD      (HL),A
                INC     HL
                LD      DE,(3B8EH)
                LD      (HL),D
                INC     HL
                LD      (HL),E
                RET

                CALL    2575H
                LD      A,H
                OR      L
                RET     Z
                CALL    prcr
                PUSH    HL
                EX      DE,HL
                LD      HL,3967H
                LD      BC,3
                CALL    899H
                POP     DE
                LD      HL,3967H
                LD      B,0
                CALL    258AH
                LD      A,(HL)
                CP      B
                JR      Z,2538H
                LD      B,A
                PUSH    HL
                PUSH    DE
                PUSH    BC
                CALL    prcr
                LD      A,(HL)
                CALL    210EH
                LD      B,'*'
                CALL    outit
                CALL    outit
                CALL    outit
                CALL    1DCEH
                LD      C,1EH
                LD      B,(HL)
                CALL    outit
                DEC     C
                LD      A,(HL)
                INC     HL
                AND     A
                jp      P,2513H
                CALL    1DCEH
                LD      B,'*'
                CALL    outit
                CALL    outit
                CALL    outit
                CALL    1DCEH
                DEC     C
                JR      NZ,252CH
                POP     BC
                POP     DE
                POP     HL
                CALL    258AH
                INC     HL
                LD      A,(HL)
                INC     HL
                PUSH    HL
                LD      L,(HL)
                LD      H,A
                PUSH    BC
                CALL    hxprhl
                POP     BC
                POP     HL
                INC     HL
                DEC     DE
                LD      A,D
                OR      E
                JR      Z,2564H
                PUSH    BC
                CALL    1DCEH
                POP     BC
                DEC     C
                JR      NZ,24F4H
                LD      A,(HL)
                CP      B
                JR      NZ,24F4H
                PUSH    HL
                PUSH    DE
                PUSH    BC
                LD      HL,256AH
                CALL    2280H
                POP     BC
                POP     DE
                POP     HL
                JR      24F1H

                CALL    prcr
                JP      prcr

                DEC     C
                ADD     HL,BC
                ADD     HL,BC
                ADD     HL,BC
                ADD     HL,BC
                JR      NZ,2591H
                JR      NZ,2593H
                JR      NZ,2515H
                LD      HL,(3B0FH)
                LD      A,H
                AND     A
                JR      NZ,2583H
                LD      A,L
                CP      'c'
                JR      Z,2588H
                JR      C,2588H
                LD      HL,64H
                SCF
                RET

                AND     A
                RET

                PUSH    HL
                PUSH    DE
                PUSH    BC
                LD      A,(35ECH)
                SUB     '$'
                LD      L,A
                LD      H,0
                LD      DE,5
                CALL    1B3BH
                POP     BC
                LD      C,L
                POP     DE
                POP     HL
                RET

                PUSH    HL
                EX      DE,HL
                CALL    0DEEH
                POP     HL
                PUSH    HL
                CALL    wr&clos
                POP     HL
                PUSH    HL
                CALL    filopn
                SUB     A
                LD      (262DH),A
                POP     HL
                PUSH    HL
                CALL    262EH
                JR      C,25C7H
                LD      HL,3DD1H
                LD      (3C3CH),HL
                CALL    267CH
                POP     HL
                JP      delfil

                EX      AF,AF'
                LD      (262BH),DE
                POP     HL
                PUSH    HL
                INC     HL
                INC     HL
                INC     HL
                LD      DE,2FABH
                LD      BC,21H
                LDIR
                LD      HL,2FA8H
                CALL    filopn
                LD      (IY+0),0
                LD      HL,262DH
                INC     (HL)
                LD      DE,3DD1H
                LD      HL,2FA8H
                LD      A,(DE)
                AND     A
                JR      Z,25F8H
                LD      B,tab
                CALL    wrque
                JR      25EDH

                EX      AF,AF'
                JR      NC,2603H
                POP     HL
                PUSH    HL
                CALL    262EH
                EX      AF,AF'
                JR      25E3H

                LD      DE,2FA8H
                CALL    wr&clos
                LD      A,(262DH)
                LD      B,A
                LD      C,0
                LD      HL,3DCFH
                ADD     HL,BC
                LD      DE,(6)
                CALL    subdehl
                jp      NC,nomem
                LD      DE,(262BH)
                CALL    271AH
                CALL    267CH
                POP     HL
                JP      delfil

                dw      0
                db      0

                PUSH    HL
                LD      DE,3DD1H
                LD      HL,(6)
                LD      BC,0AH
                AND     A
                SBC     HL,BC
                CALL    subdehl
                JR      C,2648H
                POP     HL
                PUSH    HL
                CALL    265AH
                JR      NC,2632H
                AND     A
                PUSH    AF
                SUB     A
                LD      (DE),A
                LD      HL,909H
                LD      (3DCFH),HL
                LD      HL,3DCFH
                CALL    87DH
                POP     AF
                POP     HL
                RET

                CALL    2672H
                RET     C
                CP      1AH
                JR      Z,2670H
                LD      (DE),A
                INC     DE
                LD      B,8
                CALL    2672H
                RET     C
                LD      (DE),A
                INC     DE
                DJNZ    2666H
                AND     A
                RET

                SCF
                RET

                PUSH    HL
                PUSH    DE
                PUSH    BC
                CALL    rdnxt
                POP     BC
                POP     DE
                POP     HL
                RET

                CALL    26FEH
                JP      Z,prcr
                PUSH    HL
                LD      D,6
                CALL    prtstg
                CALL    1DCBH
                POP     HL
                LD      DE,3C46H
                LD      BC,6
                LDIR
                LD      A,(HL)
                CP      'D'
                INC     HL
                JR      NZ,26A4H
                CALL    26F7H
                CALL    1DCEH
                SUB     A
                EX      AF,AF'
                JR      26D9H

                PUSH    AF
                CALL    1DC2H
                SUB     A
                EX      AF,AF'
                EX      AF,AF'
                LD      B,A
                INC     A
                EX      AF,AF'
                LD      A,B
                ADD     A,A
                ADD     A,A
                ADD     A,B
                ADD     A,13H
                LD      B,A
                LD      A,(35ECH)
                SUB     B
                JR      NC,26C7H
                CALL    prcr
                CALL    1DBCH
                CALL    1DC2H
                LD      A,1
                EX      AF,AF'
                POP     AF
                CP      'D'
                JR      Z,26D1H
                CALL    1DCEH
                JR      26D6H

                LD      B,'#'
                CALL    outit
                CALL    26F7H
                CALL    26FEH
                jp      Z,prcr
                LD      DE,3C46H
                LD      B,6
                CALL    1ECCH
                JR      NZ,26F2H
                LD      BC,6
                ADD     HL,BC
                LD      A,(HL)
                PUSH    AF
                INC     HL
                JR      26AAH

                CALL    prcr
                JR      2682H

                LD      D,(HL)
                INC     HL
                LD      E,(HL)
                EX      DE,HL
                JP      hxprhl

                LD      A,(262DH)
                AND     A
                JR      NZ,2716H
                LD      HL,(3C3CH)
                LD      A,(HL)
                AND     A
                RET     Z
                PUSH    HL
                PUSH    DE
                LD      DE,9
                ADD     HL,DE
                LD      (3C3CH),HL
                POP     DE
                POP     HL
                RET

                CALL    275DH
                RET

                LD      A,B
                LD      BC,0
                LD      HL,3DCFH
                EX      AF,AF'
                PUSH    DE
                PUSH    BC
                PUSH    HL
                LD      (HL),D
                INC     HL
                LD      (HL),E
                LD      DE,0BH
                ADD     HL,DE
                EX      DE,HL
                LD      HL,23H
                ADD     HL,DE
                LD      A,L
                LD      (DE),A
                INC     DE
                LD      A,H
                LD      (DE),A
                INC     DE
                LD      HL,2FABH
                LD      BC,21H
                LDIR
                POP     HL
                POP     DE
                PUSH    DE
                PUSH    HL
                LD      BC,0BH
                ADD     HL,BC
                CALL    calcoff
                POP     DE
                PUSH    DE
                CALL    27AAH
                POP     BC
                POP     HL
                POP     DE
                ADD     HL,DE
                PUSH    HL
                PUSH    BC
                POP     HL
                POP     BC
                INC     H
                EX      AF,AF'
                DEC     A
                JR      NZ,2721H
                RET

                LD      DE,3DCFH

                LD      HL,2798H
                LD      A,(262DH)
                LD      C,A
                PUSH    DE
                LD      A,(DE)
                CP      0FFH
                JR      Z,2777H
                INC     DE
                INC     DE
                LD      B,tab
                CALL    1ECCH
                JR      C,2777H
                EX      DE,HL
                POP     DE
                INC     D
                DEC     C
                JR      NZ,2767H
                LD      DE,2798H
                CALL    subdehl
                RET     Z
                PUSH    HL
                LD      BC,9
                LD      DE,27A1H
                LDIR
                POP     DE
                DEC     DE
                DEC     DE
                CALL    27AAH
                LD      HL,27A1H
                SUB     A
                INC     A
                RET

                db      0ffh,0ffh,0ffh,0ffh
                db      0ffh,0ffh,0ffh,0ffh
                db      0ffh
                db      0,0,0,0,0,0,0,0,0

                PUSH    DE
                LD      A,(DE)
                LD      B,A
                INC     DE
                LD      A,(DE)
                LD      C,A
                OR      B
                JR      NZ,27B8H
                POP     DE
                LD      A,0FFH
                LD      (DE),A
                RET

                POP     DE
                PUSH    DE
                DEC     BC
                LD      A,B
                LD      (DE),A
                INC     DE
                LD      A,C
                LD      (DE),A
                INC     DE
                LD      HL,9
                ADD     HL,DE
                CALL    265AH
                JR      C,27B3H
                POP     DE
                RET

                LD      HL,3D59H
                LD      A,2
                jp      two92f

                LD      HL,(3DCDH)
                INC     HL
                INC     HL
                LD      A,(HL)
                AND     A
                RET     Z
                PUSH    HL
                LD      DE,8
                ADD     HL,DE
                LD      A,(HL)
                AND     60H
                CP      40H
                JR      NZ,27EFH
                POP     HL
                PUSH    HL
                LD      A,0
                CALL    two92f
                POP     HL
                LD      DE,9
                ADD     HL,DE
                JR      27D9H

                LD      HL,(3DCDH)
                INC     HL
                INC     HL
                LD      A,(HL)
                AND     A
                RET     Z
                PUSH    HL
                LD      DE,8
                ADD     HL,DE
                LD      A,(HL)
                AND     60H
                CP      40H
                LD      A,(HL)
                JR      NZ,281BH
                AND     1FH
                SUB     2
                LD      B,A
                DEC     HL
                LD      D,(HL)
                DEC     HL
                LD      E,(HL)
                POP     HL
                PUSH    HL
                LD      A,7
                CALL    two92f
                POP     HL
                LD      DE,9
                ADD     HL,DE
                JR      27FBH

                LD      HL,3A97H
                LD      B,0
                LD      E,(HL)
                INC     HL
                LD      D,(HL)
                INC     HL
                LD      A,D
                OR      E
                JR      Z,2845H
                PUSH    HL
                PUSH    BC
                LD      HL,3AB5H
                LD      A,B
                ADD     A,A
                LD      B,A
                ADD     A,B
                ADD     A,B
                CALL    addahl
                LD      B,0
                LD      A,5
                CALL    two92f
                POP     BC
                POP     HL
                INC     B
                LD      A,0FH
                CP      B
                JR      NZ,2827H
                LD      DE,(3A95H)
                LD      B,0
                LD      A,D
                OR      E
                JR      Z,285AH
                LD      A,0AH
                CALL    297DH
                LD      DE,(3A93H)
                LD      B,1
                LD      A,0DH
                JP      297DH

                LD      DE,0
                LD      B,0
                BIT     0,(IX+0)
                RET     Z
                LD      A,(3608H)
                CP      2
                RET     NZ
                BIT     0,(IX+2)
                JR      NZ,2898H
                PUSH    BC
                PUSH    DE
                CALL    28A9H
                POP     DE
                POP     BC
                LD      A,0EH
                CALL    297DH
                CALL    chkrel
                LD      A,0FH
                CALL    297DH
                CALL    chkrel
                LD      HL,fcbrel
                jp      wr&clos

                PUSH    DE
                CALL    whxlin
                POP     HL
                LD      (hexbuf),HL
                SUB     A
                LD      (flaghx),A
                CALL    2AB2H
                JR      2892H

                LD      HL,(3DCDH)
                INC     HL
                INC     HL
                LD      A,(HL)
                AND     A
                RET     Z
                PUSH    HL
                LD      DE,8
                ADD     HL,DE
                LD      A,(HL)
                AND     60H
                CP      20H
                LD      A,(HL)
                JR      NZ,28D3H
                AND     1FH
                SUB     2
                LD      B,A
                DEC     HL
                LD      D,(HL)
                DEC     HL
                LD      E,(HL)
                POP     HL
                PUSH    HL
                LD      A,B
                OR      D
                OR      E
                JR      Z,28D3H
                LD      A,6
                CALL    two92f
                POP     HL
                LD      DE,9
                ADD     HL,DE
                JR      28AEH

                PUSH    AF
                LD      A,(360BH)
                AND     A
                JR      Z,2906H
                PUSH    HL
                PUSH    DE
                PUSH    BC
                LD      A,(3609H)
                CP      3
                JR      C,28F2H
                CALL    2908H
                LD      A,3
                JR      28F5H

                LD      A,(3609H)
                LD      B,A
                LD      DE,(3B17H)
                LD      A,0BH
                CALL    297DH
                XOR     A
                LD      (360BH),A
                POP     BC
                POP     DE
                POP     HL
                POP     AF
                RET

                PUSH    HL
                PUSH    DE
                PUSH    BC
                PUSH    AF
                LD      B,A
                LD      A,(3B16H)
                CP      B
                JR      Z,292AH
                LD      A,B
                LD      (3B16H),A
                SUB     3
                LD      L,A
                LD      H,0
                ADD     HL,HL
                LD      D,H
                LD      E,L
                ADD     HL,DE
                ADD     HL,DE
                LD      DE,3AB5H
                ADD     HL,DE
                LD      A,1
                CALL    two92f
                POP     AF
                POP     BC
                POP     DE
                POP     HL
                RET

two92f:         PUSH    AF
                LD      A,(HL)
                CP      ' '
                JR      Z,two949
                PUSH    HL
                PUSH    DE
                LD      DE,6
two93a:         LD      A,(HL)
                CP      ' '
                JR      Z,two944
                INC     HL
                INC     D
                DEC     E
                JR      NZ,two93a
two944:         LD      C,D
                POP     DE
                POP     HL
                JR      294EH

two949:         LD      HL,two952
                LD      C,1
                POP     AF
                JP      297DH

two952:         AND     B
                BIT     0,(IX+2)
                jp      NZ,2A3DH
                CALL    28DAH
                AND     A
                CALL    bufrel
                PUSH    BC
                LD      B,8
                CALL    29D6H
                POP     BC
                RET

                LD      A,B
                AND     A
                RET     Z
                LD      A,(HL)
                CALL    2953H
                INC     HL
                DEC     B
                JR      2969H

                CALL    28DAH
                SCF
                CALL    bufrel
                JR      29BCH

                BIT     0,(IX+2)
                RET     NZ
                PUSH    AF
                XOR     A
                CALL    29B0H
                POP     AF
                PUSH    AF
                PUSH    BC
                LD      B,4
                CALL    29C8H
                POP     BC
                POP     AF
                CP      0FH
                RET     z
                CP      5
                JR      C,two9a1
                PUSH    AF
                LD      A,B
                CALL    29BCH
                POP     AF
                CP      0AH
                RET     NC
two9a1:         LD      A,C
                LD      B,3
                CALL    29C8H
two9a7:         LD      A,(HL)
                CALL    2961H
                INC     HL
                DEC     C
                JR      NZ,two9a7
                RET

                SCF
                CALL    bufrel
                PUSH    BC
                LD      B,2
                CALL    29C8H
                POP     BC
                RET

                CALL    29B4H
                LD      A,E
                CALL    2961H
                LD      A,D
                CALL    2961H
                RET

                PUSH    BC
                PUSH    AF
                LD      A,9
                SUB     B
                LD      C,A
                POP     AF
                DEC     c
                JR      Z,29D5H
                ADD     A,A
                JR      29CFH

                POP     BC
                ADD     A,A
                CALL    bufrel
                DJNZ    29D6H
                RET

bufrel:         PUSH    AF
                LD      A,(3608H)
                CP      2

                JR       NZ,twoa00
                BIT      0,(IX+0)
                JR       Z,twoa00
                POP      AF
                PUSH     AF
                LD       A,(dt2a2b)
                RLA
                LD       (dt2a2b),A
                LD       A,(dt2a2c)
                DEC      A
                LD       (dt2a2c),A
                JR       NZ,twoa00
                CALL     wrtrel
twoa00:         POP      AF
                RET

wrtrel:         PUSH     HL
                PUSH     DE
                PUSH     BC
                PUSH     AF
                LD       A,(dt2a2b)
                LD       HL,fcbrel
                CALL     wrnxt
                LD       A,8
                LD       (dt2a2c),A
                POP      AF
                POP      BC
                POP      DE
                POP      HL
                RET

chkrel:         LD       A,(dt2a2c)
                CP       8
                RET      Z
                LD       B,A
                LD       A,(dt2a2b)
twoa23:         ADD      A,A
                DJNZ     twoa23
                LD       (dt2a2b),A
                JR       wrtrel

dt2a2b:         db       0
dt2a2c:         db       0

                BIT      0,(IX+2)
                RET      Z
                LD       A,14H
                CALL     1D9BH
                CALL     206AH
                SUB      A
                INC      A
                RET

                PUSH     AF
                LD       A,(3608H)
                CP       2
                JR       Z,2A47H
                POP      AF
                RET

                POP      AF
                PUSH     HL
                PUSH     DE
                PUSH     BC
                PUSH     AF
                LD       A,(360BH)
                AND      A
                JR       Z,twoa62
                CALL     whxlin
                SUB      A
                LD       (360BH),A
                LD       (flaghx),A
                LD       HL,(3B17H)
                LD       (hexbuf),HL
twoa62:         LD       HL,hexdat
                LD       A,(flaghx)
                CALL     addahl
                POP      AF
                LD       (HL),A
                LD       A,(flaghx)
                INC      A
                LD        (flaghx),A
                CP        1CH
                JR        C,twoa8a
                CALL      whxlin
                LD        HL,(hexbuf)
                LD        A,1CH
                CALL      addahl
                LD        (hexbuf),HL
                SUB       A
                LD        (flaghx),A
twoa8a:         POP       BC
                POP       DE
                POP       HL
                RET

hexbuf:         db        0,0
flaghx:         db        0
hexdat:         db        0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0

whxlin:         LD        A,(flaghx)
                AND       A
                RET       Z
                BIT       0,(IX+0)
                RET       Z
                LD        A,':'
                CALL      twob13
                LD        A,(flaghx)
                LD        B,A
                LD        E,0
                CALL      byt2hx
                LD        HL,(hexbuf)
                LD        A,H
                CALL      byt2hx
                LD        A,L
                CALL      byt2hx
                SUB       A
                CALL      byt2hx
                LD        HL,hexdat
                INC       B
twoad8:         DEC       B
                JR        Z,twoae2
                LD        A,(HL)
                CALL      byt2hx
                INC       HL
                JR        twoad8

twoae2:         LD        A,E
                NEG
                CALL      byt2hx
                LD        A,cr
                CALL      twob13
                LD        A,lf
                JP        twob13

byt2hx:         PUSH      AF
                ADD       A,E
                LD        E,A
                POP       AF
                PUSH      HL
                PUSH      DE
                PUSH      BC
                PUSH      AF
                RRA
                RRA
                RRA
                RRA
                CALL      snd2hx
                POP       AF
                CALL      snd2hx
                POP       BC
                POP       DE
                POP       HL
                RET

snd2hx:         AND       0FH
                CP        lf
                JR        C,twob11
                ADD       A,7
twob11:         ADD       A,30H
twob13:         LD        HL,fcbrel
                JP        wrnxt

prt&ext:        CALL      prtmsg
                JP        cpm

prtmsg:         LD        A,(DE)   ;(DE)->msg.
                AND       A
                RET       Z
                PUSH      DE
                LD        E,A      ;(E)=character
                LD        D,0
                LD        C,2      ;write console
                CALL      bdos
                POP       DE
                INC       DE
                JR        prtmsg

                LD        HL,(3B8EH)
                LD        DE,1
                CALL      1DFEH
                LD        (3B8EH),HL
                LD        DE,3B90H
                LD        HL,(3B8EH)
                CALL      1E07H
                LD        A,' '
                LD        (3B94H),A
                CALL      129AH
                RET       NZ
                CALL      2B82H
                RET       NZ
                LD        A,(35F8H)
                AND       A
                RET       Z
                DEC       A
                LD        (35F8H),A
                LD        HL,2B62H
                CALL      2BE5H
                JR        2B4DH

                db        tab,tab,tab
                db        '(***** end of'
                db        ' include *****)'
                db        cr

                LD        HL,3D61H
                LD        DE,3D64H
                LD        BC,3
                LDIR
                LD        HL,3B95H
                LD        B,'P'
                PUSH      HL
                PUSH      BC
                BIT       7,(IX+1)
                LD        HL,fcbext
                JR        NZ,2BA3H
                LD        A,(35F8H)
                CALL      2BD8H
                CALL      rdnxt
                POP       BC
                POP       HL
                RET       Z
                CP        1AH
                RET       Z
                LD        (HL),A
                CP        cr
                JR        Z,2BC4H
                CP        tab
                JR        Z,2BBDH
                CP        0EH
                JR        Z,2BBDH
                CP        ' '
                JR        C,2B92H
                INC       HL
                DJNZ      2B92H
                INC       B
                DEC       HL
                JR        2B92H

                LD        A,B
                SUB       'P'
                JR        Z,2B82H
                RET

                PUSH      HL
                INC       HL
                INC       HL
                INC       HL
                EX        DE,HL
                LD        C,86H     ;convert filename to
                CALL      bdos      ; FCB
                POP       HL
                JP        filopn

                LD        HL,fcbsrc
                AND       A
                RET       Z
                LD        DE,24H
                ADD       HL,DE
                DEC       A
                JR        NZ,2BE0H
                RET

                LD        B,(HL)
                CALL      outit
                LD        A,(HL)
                CP        cr
                RET       Z
                INC       HL
                JR        2BE5H

outit:          LD        A,B
                AND       7FH
                LD        B,A
                PUSH      HL
                PUSH      DE
                PUSH      BC
                LD        A,(3614H)
                AND       A
                JR        NZ,outit2
                BIT       0,(IX+3)
                JR        NZ,outit9
                BIT       6,(IX+1)
                JR        NZ,outit2
                BIT       1,(IX+1)
                JR        NZ,outit1
                BIT       2,(IX+3)
                JR        Z,outit2
outit1:         LD        A,(3611H)
                AND       A
                JR        NZ,outit9
outit2:         LD        A,B
                CP        0CH
                JR        NZ,outit3
                CALL      outita
                JR        outit9

outit3:         LD        A,(35F9H)
                CP        (IX-5)
                JR        C,outit4
                CALL      outita
                POP       BC
                PUSH      BC
outit4:         LD        A,B
                CP        cr
                JR        NZ,outit5
                CALL      twod01
                SUB       A
                LD        (35EDH),A
                INC       (IX+5)
                JR        outit9

outit5:         LD        A,(35EDH)
                CP        (IX-8)
                JR        C,outit7
outit6:         CALL      prcr
                LD        B,tab

                CALL      outit
                CALL      outit
                CALL      outit
                POP       BC
                PUSH      BC
outit7:         LD        A, B
                CP        9
                JR        NZ,outit8
                LD        A,(35EDH)
                AND       0F8H
                ADD       A, 8
                CP        (IX-8)
                JR        C,outitx
                JR        outit6

outit8:         LD        A,(35EDH)
                INC       A
outitx:         LD        (35EDH),A
                CALL      twod01
outit9:         POP       BC
                POP       DE
                POP       HL
                RET

outita:         SET       1,(IX+2)
                LD        A,(35EEH)
                AND       A
                JR        NZ,twoc8d
                LD        B,0CH
                CALL      twod01
                JR        twoc9d

twoc8d:         LD        C,A
                LD        A,(35F9H)
                CP        0FFH
                JR        Z,twoc9d
twoc95:         LD        B,cr
                CALL      twod01
                DEC       C
                JR        NZ,twoc95
twoc9d:         SUB       A
                LD        (35F9H),A
                LD        (35EDH),A
                LD        HL,paghed
                LD        D,35H
                CALL      prtstg
                LD        HL,(3D67H)
                CALL      hxprhl
                LD        DE,1
                CALL      1DFEH
                LD        (3D67H),HL
                CALL      prcr
                LD        HL,3B3DH
                CALL      2BE5H
                CALL      prcr
                RES       1,(IX+2)
                RET

paghed:         db        'CROMEMCO CDOS Z80'
                db        ' ASSEMBLER version'
                db        ' 02.15',tab,tab
                db        '     PAGE '

twod01:         LD        A,(3608H)
                CP        2
                RET       NZ
                PUSH      BC
                LD        A,(3615H)
                AND       A
                JR        NZ,twodl4
                LD        A,(3614H)
                AND       A
                JR        Z,twodlf
twodl4:         BIT       1,(IX+2)
                JR        NZ,twodlf
                CALL      conout
                JR        twod26

twodlf:         BIT       6,(IX+0)
                CALL      NZ,conout

twod26:         BIT       7,(IX+0)
                CALL      NZ,twod53
                BIT       1,(IX+0)
                JR        Z,twod3a
                LD        A,B
                LD        HL,fcbprn
                CALL      wrnxt
twod3a:         POP       BC
                LD        A,B
                LD        B,lf
                CP        cr
                JR        Z,twod01
                RET

crlf:           LD        B,cr
                CALL      conout
                LD        B,lf
conout:         PUSH      BC
                LD        E,B      ;(E)=character
                LD        C,2      ;write console
                CALL      bdos
                POP       BC
                RET

twod53:         LD        A,B
                CP        9
                JR        Z,twod77
                CP        cr
                JR        Z,twod7l
                CP        ' '
                JR        C,twod64
                LD        HL,twod8a
                INC       (HL)
twod64:         PUSH      HL
                PUSH      DE
                PUSH      BC
                LD        E,B      ;(E)=character
                LD        C,5      ;write to list device
                CALL      bdos
                POP       BC
                POP       DE
                POP       HL
                RET

twod7l:         SUB       A
                LD        (twod8a),A
                JR        twod64

twod77:         LD        A,(twod8a)
                LD        B,A
                AND       0F8H
                ADD       A,8
                SUB       B
                LD        C,A
                LD        B,' '
twod83:         CALL      twod53
                DEC       C
                JR        NZ,twod83
                RET

twod8a:         db        0

flushp:         LD        HL,fcbprn
                jp        wr&clos

wrseq:          LD        A,(DE)
                CP        ' '
                RET       Z
                PUSH      BC
                PUSH      DE
                PUSH      HL
                PUSH      BC
                LD        B,6
                CALL      wrque
                POP       AF
                POP       HL
                PUSH      HL
                CALL      wrnxt
                POP       HL
                PUSH      HL
                LD        A,(3B8FH)
                CALL      wrnxt
                POP       HL
                PUSH      HL
                LD        A,(3B8EH)
                CALL      wrnxt
                POP       HL
                POP       DE
                POP       BC
                RET

cpflnm:         PUSH      HL
                LD        BC,4
                ADD       HL,BC
                EX        DE,HL
                LD        BC,8
                LDIR
                POP       HL
                RET

opnsrc:         LD        HL,fcbsrc
                CALL      filopn
                RET       NZ
                LD        DE,srcnfd
                JP        prt&ext

srcnfd:         db        'source file not'
                db        ' found',cr,lf,0

filopn:         PUSH      HL
                CALL      setbuf
                LD        (IY+0FH),0
                LD        (IY+0),80H
                LD        (IY+23H),0
                POP       DE
                INC       DE      ;DE -> FCB
                INC       DE
                INC       DE
                LD        C,0FH   ;open disk file
                CALL      bdos
                CP        0FFH
                RET

fildco:         PUSH      HL
                CALL      setbuf
                LD        (IY+0),0
                POP       DE
                INC       DE
                INC       DE      ;DE -> FCB
                INC       DE
                PUSH      DE
                PUSH      DE
                LD        C,13H   ;delete file
                CALL      bdos
                POP       DE      ;DE -> FCB
                LD        C,16H   ;create file
                CALL      bdos
                CP        0FFH
                JR        Z,nospce
                POP       DE      ;DE -> FCB
                LD        C,0FH   ;open file
                JP        bdos

nospce:         LD        DE,nospmsg
                JP        prt&ext

nospmsg:        db        'no directory'
                db        ' space',cr,lf,0

rdnxt:          PUSH      HL
                POP       IY
                LD        A,(HL)
                CP        80H
                JR        NZ,rdnxt1
                PUSH      HL
                CALL      setbuf
                POP       DE
                INC       DE      ;DE -> FCB
                INC       DE
                INC       DE
                LD        C,14H   ;read next record
                CALL      bdos
                DEC       A
                RET       Z
                LD        (IY+0),0
rdnxt1:         LD        HL,3D63H
                INC       (HL)
                JR        NZ,rdnxt2
                DEC       HL
                INC       (HL)
                JR        NZ,rdnxt2
                DEC       HL
                INC       (HL)
rdnxt2:         LD        A,(IY+0)
                INC       (IY+0)
                LD        H,(IY+2)
                LD        L,(IY+1)
                CALL      addahl
                LD        A,(HL)
                AND       A
                RET

wrque:          PUSH      HL
                PUSH      DE
                PUSH      BC
                LD        A,(DE)
                CALL      wrnxt
                POP       BC
                POP       DE
                POP       HL
                INC       DE
                DJNZ      wrque
                RET

wrnxt:          PUSH      AF
                PUSH      HL
                POP       IY
                LD        A,(IY+0)
                LD        L,(IY+1)
                LD        H,(IY+2)
                CALL      addahl
                POP       AF
                LD        (HL),A
                INC       (IY+0)
                LD        A,(IY+0)
                CP        80H
                RET       NZ
                LD        (IY+0),0
                PUSH      IY
                POP       HL
                PUSH      HL
                CALL      setbuf
                POP       DE
                INC       DE
                INC       DE      ;DE -> FCB
                INC       DE
                LD        C,15H   ;write next record
                CALL      bdos
                AND       A
                RET       Z
                PUSH      IY
                POP       HL
                LD        DE,4
                ADD       HL,DE
                LD        DE,wermgfn
                LD        BC,8
                LDIR              ;copy filename
                INC       DE
                LD        BC,3
                LDIR              ;and extension
                LD        DE,wermsg       ;into error msg.
                JP        prt&ext

wermsg:         db        'write error, file - '
wermgfn:        db        'FILENAME.EXT'
                db        cr,lf,0

wr&clos:        PUSH      HL
                CALL      setbuf
wcloop:         POP       HL
                PUSH      HL
                LD        A,1AH
                CALL      wrnxt
                LD        A,(IY+0)
                AND       A
                JR        NZ,wcloop
                POP       DE
                INC       DE      ;DE -> FCB
                INC       DE
                INC       DE
                LD        C,10H   ;close disk file
                JP        bdos

delfil:         PUSH      HL
                CALL      setbuf
                POP       DE
                INC       DE      ;DE -> FCB
                INC       DE
                INC       DE
                LD        C,13H   ;delete file
                JP        bdos

setbuf:         PUSH      HL
                POP       IY
                LD        D,(IY+2)        ;DE -> buffer
                LD        E,(IY+1)
                LD        C,1AH           ;set disk buffer
                JP        bdos

calcoff:        PUSH      HL
                LD        C,0
                LD        H,D
                LD        L,E
                CALL      sixX
                ADD       HL,DE
                CALL      C,docary
                EX        DE,HL
                POP       HL
                JP        opnfil

sixX:           CALL      twoX
                CALL      twoX
twoX:           ADD       HL,HL
                RET       NC
docary:         INC       C
                RET

opnfil:         PUSH      BC
                PUSH      DE
                CALL      setbuf
                POP       DE
                POP       BC
                LD        A,E
                AND       7FH
                LD        (IY+0),A
                LD        A,E
                RLA
                LD        A,D
                RLA
                AND       7FH
                PUSH      AF
                LD        A,D
                RLCA
                RLCA
                AND       3
                LD        B,A
                LD        A,C
                RLA
                RLA
                AND       0EH
                ADD       A,B
                LD        (IY+0FH),A
                PUSH      IY
                POP       DE
                INC       DE
                INC       DE      ;DE -> FCB
                INC       DE
                PUSH      DE
                LD        C,0FH   ;open disk file
                CALL      bdos
                POP       DE      ; DE -> FCB
                POP       AF
                LD        (IY+23H),A
                LD        C,14H   ;read next record
                CALL      bdos
                RET

fcbsrc:         db        0
                dw        31ech

                db        0,'FILENAMEZ80'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

                db        0
                dw        336ch

                db        0,'FILENAMEZ80'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

                db        0
                dw        33ech

                db        0,'FILENAMEZ80'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

                db        0
                dw        346ch

                db        0,'FILENAMEZ80'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

                db        0
                dw        34ech

                db        0,'FILENAMEZ80'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

fcbext:         db        0
                dw        356ch

                db        0,0,0,0,0,0,0,0,0

                db        'EXT'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

fcbrel:         db        0
                dw        32ech

                db        0,0,0,0,0,0,0,0,0

relftyp:        db        'REL'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

fcbprn:         db        0
                dw        326ch

                db        0,0,0,0,0,0,0,0,0

                db        'PRN'
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

fcbtmp:         db        0
                dw        316ch

                db        0,0,0,0,0,0,0,0,0

                db        '$$$'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0

fcb$$0:         db        0
                dw        30ech

                db        0,0,0,0,0,0,0,0,0

                db        '$$0'

                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0,0,0,0,0,0,0,0
                db        0

                end

