; Block bugs corrected ; Monday 01:17:18 am 19/08/85 ; ; AsmCode bug ; Monday 03:28:13 am 19/08/85 ; ; LD (IX+nn),rr added rr=HL,DE,BC ; Friday 12:30:13 am 20/09/85 ; ; LD rr,rr corrected rr=HL,DE,BC ; Thursday 12:04:04 am 17/10/85 ; ; USE files repaired ( aaagh ! ) ; Monday 11:47:32 pm 04/08/86 ; Variables EQU #B000 Write_AHL EQU #5009 ; OUTPUT #21,#22 ORG #9000,0 ; LD HL,DumpVec LD (HL),#C3 ; LD HL,Write_AHL LD (DumpVec+1),HL ; LD HL,OutputBlocks LD B,16 ; SetUpOB LD (HL),#F1 INC L ; DJNZ SetUpOB ; Start LD B,4 CALL fsGetBlock JR C NoRhume ; LD BC,Variables ; IN E,(C) OUT (C),A ; LD (WSblock),A LD A,E LD (WSblockP),A ; LD HL,cFileName ; GFNlp POP AF LD (HL),A INC HL OR A JR NZ GFNlp ; POP HL LD (pObject),HL POP AF LD (Object),A POP AF LD (GlobalHashs),A ; POP HL LD (ListO),HL LD (iListO),HL POP HL LD (ObjeO),HL LD (iObjeO),HL ; XOR A LD (TestingO),A LD (iTestingO),A ; CALL InitSymbols JR C PissOff ; LD DE,cFileName LD HL,cSList CALL fsGetList JR C ExitFail ; CALL ASSEM ; JR C ExitFail ; ReturnBlock CALL KillSymbols ; PissOff LD C,4 LD A,(WSblock) CALL fsPutBlock ; LD A,(WSblockP) LD BC,Variables OUT (C),A ; RET ; ExitFail CALL ReturnBlock ; SCF RET ; NoRhume POP AF OR A JR NZ NoRhume ; POP HL POP AF POP AF POP AF ; SCF RET ; PrintFN LD A,(DE) OR A RET Z CP #D RET Z ; CALL PRINT INC DE JR PrintFN ; Cret2 CALL Cret1 ; Cret1 PUSH AF ; LD A,#D CALL PRINT LD A,#1B CALL PRINT ; POP AF RET ; PrintSP PUSH AF LD A,32 CALL PRINT POP AF RET ; PrintCR PUSH AF LD A,#D CALL PRINT POP AF RET ; DeclLabel LD C,A LD A,(bNewSym) LD (pLabBlock),A CALL SetwSymC ; LD HL,(pNewSym) ; INC L ; EndFlag INC L ; SymVal INC L ; Block INC L ; NextPtr INC L ; " INC L ; Length ; LD (pLabText),HL LD (pLabel),HL ; LD A,C CALL ReadLabel ; LD (pLabVal),HL ; LD A,(PassNo) OR A JP NZ DeclLabP2 ; PUSH DE ; CALL FindLabel JR C DLexists ; ; Label does not exist ; LD HL,(HashPtr) PUSH HL ; LD A,(HL) INC HL LD E,(HL) INC HL LD D,(HL) ; LD HL,(pLabText) ; DEC L LD (HL),B DEC L LD (HL),D DEC L LD (HL),E DEC L LD (HL),A ; LD DE,wSymB-wSymC ADD HL,DE ; EX DE,HL ; POP HL ; LD A,(bNewSym) LD (HL),A INC HL LD (HL),E INC HL LD (HL),D ; LD HL,(pNewSym) ; LD (HL),#FF ; INC L LD A,(SymO) LD (HL),A ; LD DE,-33 ADD HL,DE LD (pNewSym),HL ; LD A,H CP wSymC/256 JP C SymNewBlock ; LD (HL),0 ; DLexists POP DE RET ; DeclLabP2 LD A,(bOldSym) LD (pLabBlock),A CALL SetwSymC ; LD HL,(pOldSym) ; INC L INC L INC L INC L INC L ; LD B,(HL) INC L ; LD (pLabText),HL ; LD A,L ADD A,B LD L,A ; LD (pLabVal),HL ; PUSH DE ; LD HL,(pOldSym) LD DE,-32 ADD HL,DE LD (pOldSym),HL ; LD A,H CP wSymC/256 JR C SymOldBlock ; POP DE RET ; SymOldBlock PUSH HL ; LD HL,(pSymbolList) INC HL LD (pSymbolList),HL ; LD A,(HL) LD (bOldSym),A CALL SetwSymC ; POP HL ; OR A ; LD HL,wSymC+#FE0 LD (pOldSym),HL ; POP DE RET ; EvalLabel LD C,A ; CP "^" JR Z EL1 ; LD A,(bNewSym) CALL SetwSymC ; LD HL,(pNewSym) LD (pLabel),HL ; LD A,C CALL ReadLabel ; PUSH DE ; CALL FindLabel JR NC ELa ; LD E,(HL) INC L LD D,(HL) ; EX DE,HL EX AF,AF' ; ELa POP DE CCF RET NC ; LD HL,0 RET ; EL1 CALL AssertGlob JP C ErrorC ; LD A,(bNewSym) CALL SetwSymC ; LD HL,(pNewSym) LD (pLabel),HL ; INC DE LD A,(DE) CALL ReadLabel ; PUSH DE ; CALL FindLabel JR NC EL1a ; LD E,(HL) INC L LD D,(HL) ; EX DE,HL EX AF,AF' ; EL1a PUSH AF PUSH BC PUSH HL ; CALL AssertLoc ; POP HL POP BC POP AF ; POP DE ; CCF RET NC ; LD HL,0 RET ; SymNewBlock PUSH HL ; LD HL,(pSymbolList) INC HL ; LD B,4 CALL fsGetBlock ; LD (HL),A LD (pSymbolList),HL INC HL LD (HL),0 ; LD (bNewSym),A CALL SetwSymC ; POP HL ; OR A ; LD HL,wSymC+#FE0 LD (pNewSym),HL ; LD (HL),0 ; POP DE RET ; ReadLabel INC DE LD B,1 LD C,A ; RLa LD (HL),A INC HL LD A,(DE) CALL Ident JR C RLc ; RLb INC B ADD A,C LD C,A ; LD A,(DE) INC DE JR RLa ; RLc CP " " JR Z RLd ; CP #A RET NZ ; INC DE ; RLd INC DE ; LD (HL)," " ; LD A,(LabelO) BIT 0,A RET NZ ; LD A,(DE) CALL Ident RET C ; INC HL INC B JP RLb ; FindLabel LD D,0 LD E,C ; LD HL,HashTable ADD HL,DE ADD HL,DE ADD HL,DE LD (HashPtr),HL ; LD C,(HL) INC HL LD E,(HL) INC HL LD D,(HL) ; FLlp LD A,C OR A RET Z ; CALL SetwSymB ; EX DE,HL ; LD C,(HL) INC HL LD E,(HL) INC HL LD D,(HL) INC HL ; LD A,(HL) CP B JR NZ FLlp ; INC HL LD A,(HL) ADD A,#80 LD A,B EX AF,AF' ; PUSH DE LD DE,(pLabel) ; FLa LD A,(DE) XOR (HL) AND #7F JR NZ FLb ; INC HL INC DE ; DJNZ FLa ; FLb EX AF,AF' LD B,A EX AF,AF' ; POP DE JR NZ FLlp SCF RET ; InitSymbols LD B,4 CALL fsGetBlock RET C ; CALL SetwSymA CALL SetwSymC ; LD (LocalHashs),A LD (bNewSym),A ; LD HL,SymbolList LD (HL),A INC HL LD (HL),0 DEC HL LD (pSymbolList),HL ; LD HL,HashTable LD DE,HashTable+1 LD BC,#2FF LD (HL),0 LDIR ; LD HL,SymbolStart LD (pNewSym),HL LD (HL),0 ; AssertLoc LD A,(LocalHashs) ; AssSyms CALL SetwSymA OR A ; RET ; AssertGlob LD A,(GlobalHashs) OR A SCF RET Z ; JP AssSyms ; KillSymbols LD A,(LocalHashs) CALL SetwSymA ; LD HL,SymbolList LD B,-1 ; KSlp LD A,(HL) INC HL INC B OR A JR NZ KSlp DEC HL DEC HL ; LD C,4 ; KSlp2 LD A,(HL) DEC HL PUSH HL PUSH BC CALL fsPutBlock POP BC POP HL ; DJNZ KSlp2 RET ; SetwSymA PUSH BC LD BC,wSymA OUT (C),A POP BC RET ; SetwSymB PUSH BC LD BC,wSymB OUT (C),A POP BC RET ; SetwSymC PUSH BC LD BC,wSymC OUT (C),A POP BC RET ; Expand1 INC HL Expand LD A,(HL) CP Tab JR Z,Expand6 CP #80 JR NC,Expand3 OR A RET Z Expand2 CALL Expand8 JR Expand1 Expand3 CP #ED JR NC,Expand1 ;2 PUSH HL LD HL,Tfil ADD A,A ADD A,L LD L,A LD A,H ADC A,0 LD H,A LD A,(HL) INC HL LD H,(HL) LD L,A JR Expand5 Expand4 CALL Expand8 INC HL Expand5 LD A,(HL) CP #20 JR NC,Expand4 POP HL JR Expand1 Expand6 INC HL LD B,(HL) LD A,#20 Expand7 CALL Expand8 DJNZ Expand7 JR Expand1 Expand8 BIT 0,C JP Z,PRINT BIT 1,C JP NZ,Dump LD (DE),A INC DE RET Tokenise INC B LD A,(DE) CP (HL) JR Z,Token2 Token1 LD A,(HL) INC HL CP #20 JR NC,Token1 CP Eof JR NZ,Tokenise SCF RET Token2 PUSH DE Token3 INC DE INC HL LD A,(DE) CP (HL) JR Z,Token3 OR A LD A,(HL) JR Z,Token6 CP Term1 JR Z,Token5 CP Term2 JR NZ,Token4 LD A,(DE) CALL Ident JR C,Token5 Token4 POP DE JR Token1 Token5 POP HL OR A RET Token6 CP Term1 JR Z,Token5 CP Term2 JR Z,Token5 POP DE JR Token1 Print LD A,Esc CALL PRINT LD HL,(P1) CALL Write LD HL,(Line) Print0 LD C,0 CALL Expand LD A,Ccr CALL PRINT Print1 CALL TestKey JR NZ,Print2 CALL ReadKey CP Esc LD (Flag2),A SCF RET Z CALL ReadKey CP Esc LD (Flag2),A SCF RET Z Print2 LD HL,(P7) LD A,H OR L RET Z DEC HL LD A,H OR L LD (P7),HL RET NZ CALL ReadKey CP Esc LD (Flag2),A SCF LD HL,(P3) LD (P7),HL RET Z CALL ReadKey CP Esc LD (Flag2),A SCF LD HL,(P3) LD (P7),HL RET Z OR A RET CmdLet CP "A RET C CP #5B CCF RET Ident1 CP #80 CCF RET C CP "< RET Ident CP #80 CCF RET C CP "< RET NC Num CP "0 RET C CP #3A CCF RET Pfx CP "# RET Z CP "' RET Z CP #22 RET Hex SUB "0 RET C CP 10 CCF RET NC SUB 7 CP 10 RET C CP 17 CCF RET Skip2 INC DE Skip1 INC DE Skip LD A,(DE) CP #20 JR Z,Skip1 CP #0A JR Z,Skip2 RET Skipt2 INC DE Skipt1 INC DE Skipt LD A,(DE) CP #20 JR Z,Skipt1 CP #0A JR Z,Skipt2 OR A RET Z CP ": RET Z CP "; RET Rdstg LD B,A LD A,(Count) INC A LD (Count),A LD C,0 Rdstg1 LD A,(DE) INC DE CP B JR Z,Rdstg3 OR A JR Z,Rdstg4 CP #20 JR Z,Rdstg2 LD C,#FF Rdstg2 INC C LD (HL),A INC HL JR Rdstg1 Rdstg3 LD (HL),Null INC HL RET Rdstg4 LD (HL),A CP C SCF RET Z DEC HL DEC C JR Rdstg4 Read CALL Skip CP "# JR Z,ReadHex CALL Num RET C ReadDec SUB "0 LD H,0 LD L,A Read1 INC DE LD A,(DE) CALL Num CCF RET NC SUB "0 LD B,H LD C,L ADD HL,HL RET C ADD HL,HL RET C ADD HL,BC RET C ADD HL,HL RET C ADD A,L LD L,A JR NC,Read1 INC H JR NZ,Read1 RET ReadHex INC DE LD A,(DE) CALL Hex RET C LD H,0 LD L,A Read3 INC DE LD A,(DE) CALL Hex CCF RET NC ADD HL,HL RET C ADD HL,HL RET C ADD HL,HL RET C ADD HL,HL RET C OR L LD L,A JR Read3 ; ReadBin INC DE LD A,(DE) CALL Bin RET C LD H,0 LD L,A RB1 CALL Skip1 CALL Bin CCF RET NC RRCA ADC HL,HL RET C JR RB1 ; Bin SUB "0" RET C CP 2 CCF RET ; Write LD C,1 LD DE,0-10000 CALL Write1 LD DE,0-1000 CALL Write1 LD DE,0-100 CALL Write1 LD DE,0-10 CALL Write1 LD A,L ADD A,"0 CALL PRINT WriteS LD A,#20 CALL PRINT RET Write1 XOR A Write2 INC A ADD HL,DE JR C,Write2 SBC HL,DE CP C JR Z,WriteS DEC C ADD A,#2F CALL PRINT RET C0 LD B,0 ; get bit field in B for a reg CP ; return NZ if not recognised RET Z INC B CP RET Z INC B CP RET Z INC B CP RET Z INC B CP H ; H = either H,IXH,IYH RET Z INC B CP L ; L = either L,IXL,IYL RET Z INC B INC B CP RET ; C1 LD B,7 ; Get bit field for all Flags CP RET Z DEC B CP

RET Z DEC B CP RET Z CP RET Z DEC B CP RET Z CP RET Z ; C9 LD B,3 ; Get bit field for JR flags CP RET Z DEC B CP RET Z DEC B CP #E4 RET Z DEC B CP RET ; C2 LD B,0 CP RET Z INC B CP RET Z INC B CALL C5 RET Z INC B CP H RET ; C3 LD B,0 CP RET Z INC B CP RET Z INC B CP H RET Z INC B CP RET ; C4 LD B,6 CP "( JR Z,C40 ; C6 LD B,7 ; rr CP RET Z LD B,0 CP RET Z INC B CP RET Z INC B CP RET Z INC B CP RET Z INC B CP RET Z INC B CP RET ; CA LD B,5 CP JR Z,CA1 CP JR Z,CA0 DEC B CP JR Z,CA1 CP RET NZ ; CA0 LD A,#FD LD (IXIY),A JP Dump ; CA1 LD A,#DD LD (IXIY),A JP Dump ; C40 PUSH DE ; HL),IX+nn),IY+nn) ; CALL Skip1 ; CALL C5 JR NZ,C45 ; POP HL JR C,C41 ; CALL Skip1 CP ") RET Z JP Error2 ; C41 LD L,0 CALL Skip1 CP "+ JR Z,C42 CP "- JR NZ,C44 ; C42 CALL Eval INC H JR Z,C42a DEC H JP NZ,Error3 BIT 7,L JR Z,C43 JP Error3 ; C42a BIT 7,L JP Z,Error3 ; C43 CALL Skip C44 CP ") JP NZ,Error2 SCF RET ; C45 POP DE RET ; C5 CP ; HL,IX+,IY+ RET Z CP JR Z,C50 CP RET NZ LD A,#FD LD (IXIY),A SCF JP Dump ; C50 LD A,#DD LD (IXIY),A SCF JP Dump ; SkipComm INC DE C8 CALL Skip CP ", RET NZ JP Skip1 ; D0 INC DE D1 LD A,B OR C JP Dump ; D2 INC DE D3 LD A,B ADD A,A ADD A,A ADD A,A OR C JP Dump ; D4 INC DE D5 LD A,B ADD A,A ADD A,A ADD A,A ADD A,A OR C JP Dump ; T1s INC DE T1 LD A,#ED CALL Dump ; T2 LD A,C JP Dump ; T3 CALL Evalb LD B,A AND C JP Z,D1 JP Error5 ; T4 JR NZ,T40 LD A,#C9 JP Dump ; T40 CALL C1 JP Z,D2 JP Error5 ; T5 LD H, CALL C2 JP Z,D4 JP Error5 ; T6 CALL Evalb CP 8 JP NC,Error1 ADD A,A ADD A,A ADD A,A OR C LD C,A CALL C8 ; T7 CALL C4 JP NZ,Error5 JR C,T70 LD A,#CB CALL Dump JP D0 ; T70 LD A,#CB CALL Dump LD A,L CALL Dump JP D0 ; T8 CALL C4 JR NZ,T80 T8a JP NC,D0 CALL D0 LD A,L JP Dump ; T80 CALL CA JP Z,D0 CALL Evalb LD L,A LD A,C OR #46 CALL Dump LD A,L JP Dump ; T9 CP JR NZ,T90 CALL SkipComm JR T8 ; T90 LD H,A LD C,#09 CALL C5 JP NZ,Error5 CALL SkipComm CALL C3 JP Z,D4 JP Error5 ; T91 CP JR NZ,T92 CALL SkipComm JR T8 ; T92 CP JP NZ,Error5 LD A,#ED CALL Dump LD H, LD C,#4A CALL SkipComm CALL C3 JP Z,D4 JP Error5 ; T93 CP JR NZ,T94 CALL SkipComm JR T8 ; T94 CP JP NZ,Error5 LD A,#ED CALL Dump LD H, LD C,#42 CALL SkipComm CALL C3 JP Z,D4 JP Error5 ; TA LD H, CALL C2 JR NZ,TA1 LD A,#03 BIT 0,C JR Z,TA0 OR 8 ; TA0 LD C,A JP D4 ; TA1 CALL C4 JP NZ,TA2 JP NC,D2 CALL D2 LD A,L JP Dump ; TA2 CALL CA JP Z,D2 JP Error5 ; TB CALL C1 JR NZ,TB0 CALL D3 CALL SkipComm JR TB2 ; TB0 LD A,#CD ; DWnn CALL Dump ; TB2 CALL Eval ; TB3 LD A,L CALL Dump LD A,H JP Dump ; TC CALL C1 JR NZ,TC1 CALL D3 CALL SkipComm JR TB2 ; TC1 CP "( JR Z,TC2 LD A,#C3 JR DWnn ; TC2 PUSH DE CALL Skip1 CALL C5 JR NZ,TC3 POP HL CALL Skip1 CP ") JP NZ,Error2 LD A, JP Dumps ; TC3 POP DE LD A,#C3 JR DWnn ; TD CALL C9 JR NZ,TD0 CALL D3 CALL SkipComm JR TD1 ; TD0 LD A,#18 CALL Dump ; TD1 LD BC,(Temp) LD A,C SUB 126 LD C,A JR NC,TD2 DEC B TD2 CALL Eval JP C,Dump SBC HL,BC LD A,H OR A JP NZ,Error3 LD A,L XOR #80 JP Dump ; TE LD A,C CALL Dump JR TD1 ; TF CALL Evalb CALL Dump CALL Skipt RET Z CALL C8 JR TF ; TG CALL TB2 CALL Skipt RET Z CALL C8 JR TG ; TH CALL Eval LD B,H LD C,L JP C,Error9 CALL Skipt JR Z,TH2 CALL C8 CALL Evalb INC BC TH1 CPI RET NV CALL Dump1 JR TH1 ; TH2 ADD IX,BC RET ; TI CALL Eval JP C,Error9 PUSH HL POP IX CALL Skipt RET Z CALL C8 LD B,H LD C,L CALL Eval OR A SBC HL,BC LD (Displace),HL LD H,B LD L,C RET ; TJ CALL Eval LD (Displace),HL RET ; TK LD (Entry),IX RET ; TL CP JR Z,TL0 CP JR Z,TL1 CP "( JP NZ,Error5 CALL Skip1 CP JP NZ,Error5 CALL Skip1 CP ") JP NZ,Error2 CALL SkipComm CALL C5 JP NZ,Error5 LD A,#E3 JP Dumps ; TL0 CALL SkipComm CP JP NZ,Error5 LD A,#EB JP Dumps ; TL1 CALL SkipComm CP JP NZ,Error5 LD A,#08 JP Dumps ; TM CP JR NZ,TM1 CALL SkipComm CP "( JP NZ,Error7 CALL Skip1 CP JR NZ,TM0 LD B,7 JR TM2 ; TM0 LD A,#DB CALL Dump CALL Evalb CALL Dump CALL Skip CP ") INC DE RET Z JP Error2 ; TM1 CALL C6 JP NZ,Error5 CALL SkipComm CP "( JP NZ,Error7 CALL Skip1 CP JP NZ,Error5 ; TM2 CALL Skip1 CP ") JP NZ,Error2 LD A,#ED CALL Dump JP D2 ; TN CP #28 JP NZ,Error7 CALL Skip1 CP JR Z,TN2 LD A,#D3 CALL Dump CALL Evalb ; TN0 CALL Dump CALL Skip CP ") JP NZ,Error2 ; TN1 CALL SkipComm CP INC DE RET Z JP Error5 ; TN2 CALL Skip1 CP ") JP NZ,Error2 LD A,#ED CALL Dump CALL SkipComm CALL C6 JP Z,D2 JP Error5 ; TO CALL Evalb CP 3 JP NC,Error1 LD L,A LD A,#ED CALL Dump LD A,#46 DEC L JR Z,TO0 DEC L JR NZ,TO1 OR 8 ; TO0 OR 16 ; TO1 JP Dump ; TP RET Z LD HL,String INC DE CALL Rdstg JR NC,TP1 DEC DE TP1 LD C,3 LD HL,String JP Expand ; TQ CP ; LD JR Z,TQ1 CP "( JP Z,TQB CP LD C,#40 JP Z,TQK CP LD C,#48 JP Z,TQK CP LD C,#50 JP Z,TQK CP LD C,#58 JP Z,TQK CALL C5 JP Z,TQM CP JP Z,TQN CP JP Z,TQO CP JP Z,TQP CP LD C,#60 JP Z,TQQ CP LD C,#68 JP Z,TQQ CP LD HL,*256+ JP Z,TQR CP LD C,#60 JP Z,TQR CP LD HL,*256+ JP Z,TQS CP LD C,#68 JP Z,TQS LD C,#47 CP JP Z,TQT LD C,#4F CP JP Z,TQT JP Error5 ; TQ1 CALL SkipComm CALL C4 JR Z,TQ2 LD A,(DE) CP "( JR Z,TQ7 CALL CA JR Z,TQ3 CP JR Z,TQ5 CP JR Z,TQ6 LD A,#3E ; TQ1a CALL Dump CALL Evalb JP Dump ; TQ2 JR C,TQ4 TQ3 LD A,#78 OR B JP Dumps ; TQ4 LD A,#7E TQ4a CALL Dump LD A,L JP Dumps ; TQ5 LD C,#5F JP T1s ; TQ6 LD C,#57 JP T1s ; TQ7 CALL Skip1 CP JR Z,TQ9 CP JR Z,TQA LD A,#3A ; DWnn] CALL DWnn ; TQ8 CALL Skip CP ") INC DE RET Z JP Error2 ; TQ9 LD A,#0A CALL Dumps JR TQ8 ; TQA LD A,#1A CALL Dumps JR TQ8 ; TQB CALL C40 ; LD ( JR Z,TQC ; CALL Skip1 ; CP JP Z,TQF ; CP JP Z,TQH ; CALL Eval ; CALL Skip CP ") ; JP NZ,Error2 ; CALL SkipComm INC DE CP JP Z,TQI CALL C5 JP Z,TQJ LD C,H LD H, CALL C3 JP NZ,Error5 LD H,C LD A,#ED CALL Dump LD C,#43 CALL D5 JP TB3 ; TQC JR C,TQD ; LD (HL), (IX+nn) , (IY+nn) ; CALL SkipComm ; (HL) CALL C6 LD A,#36 JP NZ,TQ1a LD A,#70 OR B JP Dumps ; TQD CALL SkipComm ; (IX+nn), (IY+nn) CALL C6 JR Z,TQE ; LD B,0 CP JR Z TQDrr ; LD B,2 CP JR Z TQDrr ; LD B,4 CP JR Z TQDrr ; LD A,#36 CALL Dump LD A,L JP TQ1a ; TQDrr LD A,#71 ADD A,B CALL Dump ; LD A,L CALL Dump ; LD A,(IXIY) CALL Dump ; INC L ; LD A,#70 ADD A,B CALL Dump ; LD A,L JP Dumps ; TQE LD A,#70 OR B JP TQ4a ; TQF LD A,#02 TQG CALL Dump CALL Skip1 CP ") JP NZ,Error2 CALL SkipComm CP INC DE RET Z JP Error5 ; TQH LD A,#12 JR TQG ; TQI LD A,#32 CALL Dump JP TB3 ; TQJ LD A,#22 CALL Dump JP TB3 ; TQK CALL SkipComm CALL C4 JP Z,T8a CALL CA JP Z,D0 ; TQL LD A,C AND #38 OR #06 JP TQ1a ; TQM JR C TQMixiy ; CALL SkipComm ; LD H, CALL C2 LD C,#02 JR Z TQNc ; CP "( LD A,#21 JP NZ,DWnn ; CALL C40 LD C,#6E JR Z TQNa ; LD A,#2A INC DE JP DWnn] ; TQMixiy CALL SkipComm CP "( LD A,#21 JP NZ,DWnn LD A,#2A INC DE JP DWnn] ; TQN CALL SkipComm ; LD H, CALL C2 LD C,#00 JR Z TQNc ; CP "( LD A,#01 JP NZ,DWnn ; CALL C40 LD C,#4E JR Z TQNa ; LD A,#ED CALL Dump LD A,#4B INC DE JP DWnn] ; TQNc INC DE ; LD A,C CP B RET Z ; RLCA RLCA RLCA RLCA ; OR #40 LD C,A LD A,B RLCA OR C CALL Dump ; PUSH AF LD A,(IXIY) OR A CALL NZ Dump POP AF ; OR #09 JP Dump ; TQNa JR NC TQNhl ; LD A,C CALL Dump ; LD A,L CALL Dump ; LD A,(IXIY) CALL Dump ; LD A,C SUB #08 CALL Dump ; LD A,L INC A JP Dumps ; TQNhl LD A,C CALL Dump ; LD A,#23 CALL Dump ; LD A,C SUB #08 CALL Dump ; LD A,#2B JP Dumps ; TQO CALL SkipComm ; LD H, CALL C2 LD C,#01 JR Z TQNc ; CP "( LD A,#11 JP NZ,DWnn ; CALL C40 LD C,#5E JR Z TQNa ; LD A,#ED CALL Dump LD A,#5B INC DE JP DWnn] ; TQP CALL SkipComm LD C,#F9 CALL C5 INC DE JP Z,T2 DEC DE CP "( LD A,#31 JP NZ,DWnn LD A,#ED CALL Dump LD A,#7B INC DE JP DWnn] ; TQQ CALL SkipComm CALL C4 JP Z,T8a JP TQL ; TQR LD A,#DD LD (IXIY),A CALL Dump CALL SkipComm CALL C0 JP Z,D0 JP TQL ; TQS LD A,#FD LD (IXIY),A CALL Dump CALL SkipComm CALL C0 JP Z,D0 JP TQL ; TQT CALL SkipComm CP JP Z,T1s JP Error5 ; PassCtrl LD A,(ErrorF) OR A SCF RET NZ ; LD A,(PassNo) LD B,A OR A ; EXX ; LD DE,0 LD (P1),DE ; LD DE,(Refs) JR Z,NextPass ; LD A,D OR E JR NZ PassN ; LD A,(ListPass) OR A JR NZ PassE1 ; LD A,(ListO) DEC A JP M PassE1 ; LD A,1 LD (ListPass),A ; JR NextPass ; PassE1 LD A,(SymO) DEC A SCF CCF RET M ; CALL ListSymbols ; OR A RET ; PassN LD HL,(UnResRef) OR A SBC HL,DE JP Z ErrorB ; NextPass LD (UnResRef),DE ; EXX ; LD A,B INC A LD (PassNo),A ; LD HL,(iListO) LD (ListO),HL ; LD HL,(iObjeO) LD (ObjeO),HL ; CALL AssertLoc ; LD HL,SymbolStart LD (pOldSym),HL ; LD HL,SymbolList LD (pSymbolList),HL ; LD A,(LocalHashs) LD (bOldSym),A ; CALL AssertGlob JP C A0 ; LD HL,(gpOldSym) LD (pOldSym),HL ; LD HL,(gpSymList) LD (pSymbolList),HL ; LD A,(gbOldSym) LD (bOldSym),A ; CALL AssertLoc JP A0 ; ListFN CALL PrintStr ; DEFB #D,#1B ; DEFM /Symbol Table for / DEFB 0 ; LD DE,cFileName JP PrintFN ; sLocal CALL PrintStr ; DEFM / local labels/ ; DEFB 0 RET ; sGlobal CALL PrintStr ; DEFM / global labels/ ; DEFB 0 RET ; ListSymbols CALL ListFN ; CALL sLocal ; CALL Cret2 ; CALL AssertLoc ; PUSH IX ; LD HL,SymbolStart LD IX,SymbolList ; CALL ListSlp ; POP IX ; CALL AssertGlob RET C ; CALL Cret2 ; CALL ListFN ; CALL sGlobal ; CALL Cret2 ; PUSH IX ; LD IX,(gpSymList) LD HL,(gpOldSym) ; CALL ListSlp ; POP IX RET ; ListSlp LD A,(IX) OR A RET Z ; CALL SetwSymC ; ListSlp1 LD A,(HL) INC A RET NZ ; INC L LD A,(HL) DEC L DEC A JP M ListNot ; CALL List1S ; PUSH HL CALL Print1 POP HL RET C ; ListNot LD DE,-32 ADD HL,DE ; LD A,H CP wSymC/256 JR NC ListSlp1 ; INC IX ; LD HL,wSymC + #FE0 ; JR ListSlp ; LSx POP IX ; CALL Cret2 ; RET ; List1S PUSH HL ; INC L INC L INC L INC L INC L LD B,(HL) INC L ; LD C,B ; List1Sa LD A,(HL) AND #7F CALL PRINT INC L DJNZ List1Sa ; LD A,17 SUB C LD B,A ; LD A," " List1Sb CALL PRINT DJNZ List1Sb ; LD A,(HL) INC L LD H,(HL) LD L,A ; CALL WriteHex16 ; CALL Cret1 ; POP HL RET ; RET ; gfBlock PUSH BC ; LD BC,cSList LD (pSList),BC ; LD A,(BC) LD BC,TextWind OUT (C),A ; POP BC ; LD DE,TextWind RET ; gnBlock PUSH BC ; LD BC,(pSList) LD A,(BC) OR A JR Z gnBf ; INC BC LD A,(BC) OR A JR Z gnBf ; LD (pSList),BC ; LD BC,TextWind OUT (C),A ; POP BC ; LD DE,TextWind LD A,(DE) OR A JR NZ gnBlock RET ; gnBf POP BC SCF RET ; CopypGlobs CALL AssertGlob RET C ; LD HL,(pNewSym) LD (gpOldSym),HL ; LD HL,(pSymbolList) LD (gpSymList),HL ; ; LD A,(bNewSym) LD (gbOldSym),A ; JP AssertLoc ; ASSEM LD (Stack),SP ; LD A,(ListO) DEC A JP M ASS1 ; CALL PrintStr ; DEFB #1B ; DEFM /Assembling :- / ; DEFB 0 ; LD DE,cFileName CALL PrintFN ; CALL Cret2 ; ASS1 XOR A LD (PassNo),A LD (ErrorF),A ; LD HL,0 LD (P7),HL LD (P1),HL ; LD HL,0 LD (Entry),HL ; XOR A LD (ListPass),A ; CALL CopypGlobs ; A0 LD IX,(pObject) ; LD HL,USEends LD (pUSEends),HL ; LD HL,0 LD (Displace),HL LD (StackPos),HL LD (Refs),HL ; LD BC,AsmCode ; EXX ; CALL gfBlock ; A1 LD A,(DE) OR A CALL NZ gnBlock JP C PassCtrl ; LD (pCurrLine),DE INC DE INC DE INC DE ; LD BC,(P1) INC BC LD (P1),BC ; LD (Line),DE ; A2 XOR A ; do new statement LD (USEflag),A LD (IXIY),A ; LD (Temp),IX LD (P4),DE CALL Skipt JP Z,AA CP JR NC,A9 CALL Ident1 JP C,Error0 ; CP "^" JR Z A2exp ; CALL DeclLabel ; JP C Error6 ; A2ret CALL Skip CP ;EQU JR Z,A6 ; CP ;ORG JR NZ,A8 INC DE CALL TI ; TI = dw ORG ; JR AA ; AA = move to next inst ; A2exp INC DE ; CALL AssertGlob JP C ErrorC ; LD A,(DE) CALL DeclLabel ; JP C ErrorC ; CALL AssertLoc ; JP A2ret ; A6 CALL Evals JR C,AA ; LD A,(pLabBlock) CALL SetwSymC ; LD IY,(pLabVal) ; LD A,L LD (IY),A ; LD A,H LD (IY+1),A ; LD HL,(pLabText) SET 7,(HL) ; JR AA ; A6exp CALL Evals JR C,AA ; JR AA ; A8 LD A,(pLabBlock) CALL SetwSymC ; LD IY,(pLabVal) ; LD A,IXL LD (IY),A ; LD A,IXH LD (IY+1),A ; LD HL,(pLabText) SET 7,(HL) ; LD A,(DE) A9 SUB #80 JP C,Error0 ; Not MN LD C,A LD B,0 LD HL,IFIL ADD HL,BC ADD HL,BC ADD HL,BC LD C,(HL) INC HL LD A,(HL) INC HL LD H,(HL) LD L,A ; C = Arg HL = pHandle CALL Skipt1 ; CALL CallHL ; AA CALL Skipt ; On Del ? JP NZ,Error0 CP "; JR NZ,AA2 AA1 INC DE LD A,(DE) OR A JR NZ,AA1 AA2 LD A,(ListPass) ; dw AssemList OR A JP Z AAfl ; LD A,(ListO) DEC A JP M AAfl ; PUSH DE ; Listing LD HL,(Temp) CALL WriteHex16 ; WriteAddr CALL PrintSP EXX LD HL,AsmCode ; Code Buffer LD A,C ; BC = pEnd of buffer , paged SUB L LD D,0 CP 4 JR C,AAj SUB 4 LD D,A ; LD A,(USEflag) OR A LD A,4 JR Z AAj ; XOR A LD D,A ; AAj LD B,A ; D= Remainder B=Loop LD C,#0F ; FieldLength OR A ; JR Z,AAb ; AAa LD A,(HL) INC HL PUSH BC CALL WriteHex8 POP BC DEC C DEC C CALL PrintSP DEC C DJNZ AAa AAb EX (SP),HL ; At this point bytes printed PUSH DE ; Get ptr to end of text LD B,C LD A,#20 AAc CALL PRINT ; do Tab DJNZ AAc LD DE,(P4) ; ptr to Start of inst text OR A SBC HL,DE ; get text length JR NZ,AA3 CALL PrintCR CALL Print1 ; do nLines , test esc etc. JR AA4 AA3 LD B,H ; move inst text into buffer LD C,L EX DE,HL LD DE,Buffer LDIR XOR A LD (DE),A ; add termin LD HL,Buffer CALL Print0 ; print line & print1 AA4 LD BC,AsmCode ; dump remaining bytes EXX JP C,Error4 ; esc pressed POP AF ; A := Remainder POP HL ; Buffer ptr AAg LD C,0 CP 4 JR C,AAk SUB 4 LD C,A LD A,4 AAk OR A JR Z,AAf LD B,A CALL PrintStr DEFM / / ; tab into byte field NOP AAh LD A,(HL) INC HL PUSH BC CALL WriteHex8 POP BC CALL PrintSP DJNZ AAh CALL PrintCR LD A,C JR AAg ; AAfl EXX LD BC,AsmCode EXX ; AAf LD A,(DE) INC DE OR A JP Z,A1 ; Newline JP A2 ; New statement ; CallHL JP (HL) ; DWopt RET Z ; DWoptLp CALL dwOpt RET C ; LD A,(HL) ADD A,C LD (HL),A ; JR DWoptLp ; dwOpt CALL Skip ; OR A SCF RET Z ; INC DE CP "," JR Z dwOpt ; LD C,1 CP "+" JR Z dwOpt1 ; CP "-" JR NZ dwOpt2 LD C,-1 ; dwOpt1 CALL Skip ; OR A SCF RET Z ; INC DE ; dwOpt2 LD HL,ListO CP "L" RET Z CP "l" RET Z CP RET Z ; CP "T" LD HL,TestingO RET Z ; LD HL,SymO CP "S" RET Z CP "s" RET Z ; LD HL,ObjeO CP "O" RET Z CP "o" RET Z ; SCF RET ; DWuse RET Z LD HL,String INC DE CALL Rdstg JR NC DWuse1 ; DEC DE ; DWuse1 LD A,(PassNo) OR A JR NZ USEP2 ; LD C,1 LD HL,String ; PUSH DE ; LD DE,String2 CALL Expand XOR A LD (DE),A ; CALL SaveWinds ; LD HL,USEret PUSH HL ; LD HL,(ObjeO) PUSH HL LD HL,(ListO) PUSH HL ; LD A,(LocalHashs) PUSH AF LD A,(Object) PUSH AF ; PUSH IX ; LD HL,String2 LD B,0 DWUa LD A,(HL) INC HL INC B OR A JR NZ DWUa ; DEC HL ; DWUb LD A,(HL) DEC HL PUSH AF DJNZ DWUb ; LD A,1 LD (USEflag),A ; JP Start ; USEP2 LD HL,(pUSEends) LD A,(HL) LD IXL,A INC HL ; LD A,(HL) LD IXH,A INC HL ; LD A,(HL) LD (bOldSym),A INC HL ; LD C,(HL) INC HL ; LD B,(HL) INC HL LD (pSymbolList),BC ; LD C,(HL) INC HL ; LD B,(HL) INC HL LD (pOldSym),BC ; LD (pUSEends),HL RET ; ParaSys LD BC,#F000 LD A,#E8 OUT (C),A JP #F000 ; USEret PUSH AF ; CALL LoadWinds ; LD HL,(pUSEends) ; LD A,IXL LD (HL),A INC HL ; LD A,IXH LD (HL),A INC HL ; LD A,(bNewSym) LD (HL),A INC HL ; LD DE,(pSymbolList) LD (HL),E INC HL ; LD (HL),D INC HL ; LD DE,(pNewSym) LD (HL),E INC HL ; LD (HL),D INC HL ; LD (pUSEends),HL ; LD A,(ListO) DEC A JP M USEexit ; CALL PrintStr ; DEFB #1B DEFM /Back in :- / DEFB #0 ; LD DE,cFileName CALL PrintFN ; CALL Cret2 ; USEexit POP AF ; POP DE ; JP C ErrorA ; RET ; DWoutput LD HL,WriteAHL LD (DumpVec+1),HL ; LD HL,OutputBlocks ; DWoutlp PUSH HL CALL Evalb POP HL ; LD (HL),A INC HL ; CALL Skipt RET Z ; CALL C8 ; JR DWoutlp ; WriteAHL PUSH HL PUSH DE PUSH BC PUSH AF ; LD E,L LD A,H OR %1111 0000 LD D,A ; LD A,H RRCA RRCA RRCA RRCA AND %0000 1111 LD L,A LD H,OutputBlocks / 256 ; LD L,(HL) ; LD BC,#F000 IN H,(C) ; OUT (C),L ; POP AF ; LD (DE),A ; OUT (C),H ; POP BC POP DE POP HL RET ; LoadWinds LD BC,TextWind LD A,(bUSE0) OUT (C),A ; LD BC,wSymA LD A,(bUSE1) OUT (C),A ; LD BC,wSymB LD A,(bUSE2) OUT (C),A ; LD BC,wSymC LD A,(bUSE3) OUT (C),A ; RET ; SaveWinds LD BC,TextWind IN A,(C) LD (bUSE0),A ; LD BC,wSymA IN A,(C) LD (bUSE1),A ; LD BC,wSymB IN A,(C) LD (bUSE2),A ; LD BC,wSymC IN A,(C) LD (bUSE3),A ; RET ; Dumps INC DE Dump EXX PUSH AF CALL DUMP JR NC,Dp1 LD (BC),A INC C Dp1 INC IX POP AF EXX RET Dump1 EXX PUSH AF CALL DUMP Dp2 INC IX POP AF EXX RET DUMP EX AF,AF' ; LD A,(PassNo) OR A RET Z ; LD A,(ObjeO) DEC A JP M DUMP1 ; LD A,(ErrorF) OR A JR NZ,DUMP1 ; LD D,IXH LD E,IXL ; LD HL,(Displace) ADD HL,DE ; EX AF,AF' ; CALL DumpVec ; EX AF,AF' ; DUMP1 LD A,(ListO) DEC A JP P DUMP2 ; EX AF,AF' OR A RET ; DUMP2 EX AF,AF' SCF RET ; Level0 CALL Ident1 JR NC,Level0a CP "# JR Z,Level0b CP "% JR Z,Level0g CALL Num JR NC,Level0c CP "( JR Z,Level0d CP #22 JR Z,Level0e CP "$ JR Z,Level0f JP Error0 Level0a CALL EvalLabel RET NC CALL PassChek LD A,#FF LD (Flag),A ; eval error RET PassChek EX AF,AF' LD A,(PassNo) OR A RET Z EX AF,AF' RET NZ JP Error9 Level0b CALL ReadHex RET NC JP Error1 Level0g CALL ReadBin RET NC JP Error1 Level0c CALL ReadDec RET NC JP Error1 Level0d INC DE CALL Level3 CP ") INC DE RET Z JP Error0 Level0e LD HL,Buffer INC DE CALL Rdstg JR NC,Level0e1 DEC DE Level0e1 LD HL,Buffer LD C,1 PUSH DE LD DE,String CALL Expand EX DE,HL XOR A LD D,A LD E,A LD (HL),A LD HL,String CP (HL) JR Z,Level0e2 LD E,(HL) INC HL CP (HL) JR Z,Level0e2 LD D,E LD E,(HL) Level0e2 EX DE,HL POP DE RET Level0f INC DE LD HL,(Temp) RET LevelUs INC DE LevelU CALL Skip CP "- JR Z,LevelUa CP "+ JP NZ,Level0 CALL Skip1 JP Level0 LevelUa CALL Skip1 CALL Level0 LD A,H CPL LD H,A LD A,L CPL LD L,A INC HL RET Level1s INC DE Level1 CALL LevelU Level1a CALL Skip CP "* JR Z,Level1b CP "/ JR Z,Level1c ; CP "% ; JR Z,Level1d RET Level1b PUSH HL CALL LevelUs POP BC CALL Mul JR Level1a Level1c PUSH HL CALL LevelUs POP BC CALL Div JR Level1a ;Level1d PUSH HL ; CALL LevelUs ; POP BC ; CALL Mod ; JR Level1a Level2s INC DE Level2 CALL Level1 Level2a LD A,(DE) CP "+ JR Z,Level2b CP "- JR Z,Level2c RET Level2b PUSH HL CALL Level1s POP BC CALL Add JR Level2a Level2c PUSH HL CALL Level1s POP BC CALL Sub JR Level2a Evaluate LD (StackPos),SP Level3 CALL Level2 Level3a LD A,(DE) CP "& JR Z,Level3b CP "! JR Z,Level3c CP ". JR Z,Level3d RET Level3b PUSH HL CALL Level2s POP BC CALL And JR Level3a Level3c PUSH HL CALL Level2s POP BC CALL Or JR Level3a Level3d PUSH HL CALL Level2s POP BC CALL Xor JR Level3a And LD A,L AND C LD L,A LD A,H AND B LD H,A RET Add ADD HL,BC RET Mul PUSH DE LD D,H LD E,L LD HL,0 LD A,16 Ml1 ADD HL,HL EX DE,HL ADD HL,HL EX DE,HL JR NC,Ml2 ADD HL,BC Ml2 DEC A JR NZ,Ml1 POP DE RET Or LD A,L OR C LD L,A LD A,H OR B LD H,A RET Sub LD A,C SUB L LD L,A LD A,B SBC A,H LD H,A RET Mod PUSH DE LD A,H OR L JP Z,Error1 LD D,B LD E,C LD B,H LD C,L LD HL,0 LD A,16 Md1 EX DE,HL ADD HL,HL EX DE,HL ADC HL,HL JR C,Md2 SBC HL,BC ADD HL,BC JR C,Md3 Md2 OR A SBC HL,BC INC DE Md3 DEC A JR NZ,Md1 LD B,D LD C,E POP DE RET Xor LD A,L XOR C LD L,A LD A,H XOR B LD H,A RET Div CALL Mod LD H,B LD L,C RET Evals INC DE Eval PUSH BC XOR A LD (Flag),A CALL Level3 LD A,(Flag) ADD A,A POP BC RET NC EXX LD DE,(Refs) INC DE LD (Refs),DE EXX RET Evalbs INC DE Evalb PUSH HL CALL Eval LD A,H INC A CP 2 LD A,L POP HL RET C JP Error1 Error0 DEFB 62,0,33 Error1 DEFB 62,1,33 Error2 DEFB 62,2,33 Error3 DEFB 62,3,33 Error4 DEFB 62,4,33 Error5 DEFB 62,5,33 Error6 DEFB 62,6,33 Error7 DEFB 62,7,33 Error8 DEFB 62,8,33 Error9 DEFB 62,9,33 ErrorA DEFB 62,10,33 ErrorB DEFB 62,11,33 ErrorC DEFB 62,12 PUSH DE PUSH AF LD HL,(StackPos) LD A,H OR L JR Z,Err0 LD SP,HL LD (Flag),A RET Err0 LD HL,(pCurrLine) ; INC HL ; SET 6,(HL) ; Assert Error ; CALL Print JR C,ErrorX POP AF PUSH AF LD HL,Efil LD BC,0 CPIR LD A,(HL) Err1 INC HL CALL PRINT LD A,(HL) CP #20 JR NC,Err1 ; CALL PrintStr DEFM / - in / DEFB 0 ; LD DE,cFileName CALL PrintFN ; LD A,1 LD (ErrorF),A CALL PrintCR POP AF POP DE CP 4 LD SP,(Stack) RET Z Err2 LD A,(DE) INC DE OR A JR NZ,Err2 JP A1 ; ErrorX LD SP,(Stack) OR A RET ; Efil DEFB 0 DEFM /Illegal symbol/ DEFB 1 DEFM /Expression overflow/ DEFB 2 DEFM /Missing ')'/ DEFB 3 DEFM /Illegal branch/ DEFB 4 DEFM /Escape/ DEFB 5 DEFM /Context error/ DEFB 6 DEFM /Redefined Label/ DEFB 7 DEFM /Missing '('/ DEFB 8 DEFM /Illegal mnemonic/ DEFB 9 DEFM /Undefined label/ DEFB 10 DEFM /Error in USE file/ DEFB 11 DEFM /Unresolved reference/ DEFB 12 DEFM /Fault in global Label/ DEFB 13 Tfil EQU $ DEFW Z80 DEFW Z81 DEFW Z82 DEFW Z83 DEFW Z84 DEFW Z85 DEFW Z86 DEFW Z87 DEFW Z88 DEFW Z89 DEFW Z8A DEFW Z8B DEFW Z8C DEFW Z8D DEFW Z8E DEFW Z8F DEFW Z90 DEFW Z91 DEFW Z92 DEFW Z93 DEFW Z94 DEFW Z95 DEFW Z96 DEFW Z97 DEFW Z98 DEFW Z99 DEFW Z9A DEFW Z9B DEFW Z9C DEFW Z9D DEFW Z9E DEFW Z9F DEFW ZA0 DEFW ZA1 DEFW ZA2 DEFW ZA3 DEFW ZA4 DEFW ZA5 DEFW ZA6 DEFW ZA7 DEFW ZA8 DEFW ZA9 DEFW ZAA DEFW ZAB DEFW ZAC DEFW ZAD DEFW ZAE DEFW ZAF DEFW ZB0 DEFW ZB1 DEFW ZB2 DEFW ZB3 DEFW ZB4 DEFW ZB5 DEFW ZB6 DEFW ZB7 DEFW ZB8 DEFW ZB9 DEFW ZBA DEFW ZBB DEFW ZBC DEFW ZBD DEFW ZBE DEFW ZBF DEFW ZC0 DEFW ZC1 DEFW ZC2 DEFW ZC3 DEFW ZC4 DEFW ZC5 DEFW ZC6 DEFW ZC7 DEFW ZC8 DEFW ZC9 DEFW ZCA DEFW ZCB DEFW ZCC DEFW ZCD DEFW ZCE DEFW ZCF DEFW ZD0 DEFW ZD1 DEFW ZD2 DEFW ZD3 DEFW ZD4 DEFW ZD5 DEFW ZD6 DEFW ZD7 DEFW ZD8 DEFW ZD9 DEFW ZDA DEFW ZDB DEFW ZDC DEFW ZDD DEFW ZDE DEFW ZDF DEFW ZE0 DEFW ZE1 DEFW ZE2 DEFW ZE3 DEFW ZE4 DEFW ZE5 DEFW ZE6 DEFW ZE7 DEFW ZE8 DEFW ZE9 DEFW ZEA DEFW ZEB DEFW ZEC ; CondPrint PUSH AF ; LD A,(TestingO) OR A JR NZ CP1 ; POP AF RET ; CP1 POP AF ; PrintRegs PUSH HL PUSH DE PUSH BC PUSH AF ; PUSH HL PUSH DE PUSH BC PUSH AF ; LD B,4 PRegLp POP HL CALL WriteHex16 ; LD A," " CALL PRINT DJNZ PRegLp ; LD A,#D CALL PRINT POP AF POP BC POP DE POP HL RET ; IFIL DEFB 0 ; A DEFW Error8 ; DEFB #88 ; ADC DEFW T91 ; DEFB #80 ; ADD DEFW T9 ; DEFB 0 ; AF' DEFW Error8 ; DEFB 0 ; AF DEFW Error8 ; DEFB #A0 ; AND DEFW T8 ; DEFB 0 ; B DEFW Error8 ; DEFB 0 ; BC DEFW Error8 ; DEFB #40 ; BIT DEFW T6 ; DEFB 0 ; C DEFW Error8 ; DEFB #C4 ; CALL DEFW TB ; DEFB #3F ; CCF DEFW T2 ; DEFB #B8 ; CP DEFW T8 ; DEFB #A9 ; CPD DEFW T1 ; DEFB #B9 ; CPDR DEFW T1 ; DEFB #A1 ; CPI DEFW T1 ; DEFB #B1 ; CPIR DEFW T1 ; DEFB #2F ; CPL DEFW T2 ; DEFB 0 ; D DEFW Error8 ; DEFB #27 ; DAA DEFW T2 ; DEFB 0 ; DE DEFW Error8 ; DEFB #05 ; DEC DEFW TA ; DEFB 0 ; DEFB DEFW TF ; DEFB 0 ; DEFM DEFW TP ; DEFB 0 ; DEFS DEFW TH ; DEFB 0 ; DEFW DEFW TG ; DEFB #F3 ; DI DEFW T2 ; DEFB 0 ; DISP DEFW TJ ; DEFB #10 ; DJNZ DEFW TE ; DEFB 0 ; E DEFW Error8 ; DEFB #FB ; EI DEFW T2 ; DEFB 0 ; ENT DEFW TK ; DEFB 0 ; EQU DEFW Error8 ; DEFB 0 ; EX DEFW TL ; DEFB #D9 ; EXX DEFW T2 ; DEFB 0 ; H DEFW Error8 ; DEFB #76 ; HALT DEFW T2 ; DEFB 0 ; HL DEFW Error8 ; DEFB 0 ; I DEFW Error8 ; DEFB 0 ; IM DEFW TO ; DEFB #40 ; IN DEFW TM ; DEFB #04 ; INC DEFW TA ; DEFB #AA ; IND DEFW T1 ; DEFB #BA ; INDR DEFW T1 ; DEFB #A2 ; INI DEFW T1 ; DEFB #B2 ; INIR DEFW T1 ; DEFB #DD ; IX DEFW T2 ; DEFB #FD ; IY DEFW T2 ; DEFB #C2 ; JP DEFW TC ; DEFB #20 ; JR DEFW TD ; DEFB 0 ; L DEFW Error8 ; DEFB 0 ; LD DEFW TQ ; DEFB #A8 ; LDD DEFW T1 ; DEFB #B8 ; LDDR DEFW T1 ; DEFB #A0 ; LDI DEFW T1 ; DEFB #B0 ; LDIR DEFW T1 ; DEFB 0 ; M DEFW Error8 ; DEFB 0 ; NC DEFW Error8 ; DEFB #44 ; NEG DEFW T1 ; DEFB #00 ; NOP DEFW T2 ; DEFB 0 ; NV DEFW Error8 ; DEFB 0 ; NZ DEFW Error8 ; DEFB #B0 ; OR DEFW T8 ; DEFB 0 ; ORG DEFW TI ; DEFB #BB ; OTDR DEFW T1 ; DEFB #B3 ; OTIR DEFW T1 ; DEFB #41 ; OUT DEFW TN ; DEFB #AB ; OUTD DEFW T1 ; DEFB #A3 ; OUTI DEFW T1 ; DEFB 0 ; P DEFW Error8 ; DEFB 0 ; PE DEFW Error8 ; DEFB 0 ; PO DEFW Error8 ; DEFB #C1 ; POP DEFW T5 ; DEFB #C5 ; PUSH DEFW T5 ; DEFB 0 ; R DEFW Error8 ; DEFB ; RES DEFW T6 ; DEFB #C0 ; RET DEFW T4 ; DEFB #4D ; RETI DEFW T1 ; DEFB #45 ; RETN DEFW T1 ; DEFB #10 ; RL DEFW T7 ; DEFB #17 ; RLA DEFW T2 ; DEFB 0 ; RLC DEFW T7 ; DEFB #07 ; RLCA DEFW T2 ; DEFB #6F ; RLD DEFW T1 ; DEFB #18 ; RR DEFW T7 ; DEFB #1F ; RRA DEFW T2 ; DEFB #08 ; RRC DEFW T7 ; DEFB #0F ; RRCA DEFW T2 ; DEFB #67 ; RRD DEFW T1 ; DEFB #C7 ; RST DEFW T3 ; DEFB #98 ; SBC DEFW T93 ; DEFB #37 ; SCF DEFW T2 ; DEFB #C0 ; SET DEFW T6 ; DEFB #20 ; SLA DEFW T7 ; DEFB 0 ; SP DEFW Error8 ; DEFB #28 ; SRA DEFW T7 ; DEFB #38 ; SRL DEFW T7 ; DEFB #90 ; SUB DEFW T8 ; DEFB 0 ; V DEFW Error8 ; DEFB #A8 ; XOR DEFW T8 ; DEFB 0 ; Z DEFW Error8 ; DEFB #30 ; SLI DEFW T8 ; DEFB 0 ; IXL DEFW Error8 ; DEFB 0 ; IXH DEFW Error8 ; DEFB 0 ; IYL DEFW Error8 ; DEFB 0 ; IYH DEFW Error8 ; DEFB 0 ; OPTIONS DEFW DWopt ; DEFB 0 ; USE DEFW DWuse ; DEFB 0 ; OUTPUT DEFW DWoutput; END EQU $ EQU #80 EQU #81 EQU #82 EQU #83 ; EQU #84 EQU #85 EQU #86 EQU #87 ; EQU #88 EQU #89 EQU #8A EQU #8B ; EQU #8C EQU #8D EQU #8E EQU #8F ; EQU #90 EQU #91 EQU #92 EQU #93 ; EQU #94 EQU #95 EQU #96 EQU #97 ; EQU #98 EQU #99 EQU #9A EQU #9B ; EQU #9C EQU #9D EQU #9E EQU #9F ; EQU #A0 EQU #A1 EQU #A2 EQU #A3 ; EQU #A4 EQU #A5 EQU #A6 EQU #A7 ; EQU #A8 EQU #A9 EQU #AA EQU #AB ; EQU #AC EQU #AD EQU #AE EQU #AF ; EQU #B0 EQU #B1 EQU #B2 EQU #B3 ; EQU #B4 EQU #B5 EQU #B6 EQU #B7 ; EQU #B8 EQU #B9 EQU #BA EQU #BB ; EQU #BC EQU #BD EQU #BE EQU #BF ; EQU #C0 EQU #C1 EQU #C2 EQU #C3 ; EQU #C4

EQU #C5 EQU #C6 EQU #C7 ; EQU #C8 EQU #C9 EQU #CA EQU #CB ; EQU #CC EQU #CD EQU #CE EQU #CF ; EQU #D0 EQU #D1 EQU #D2 EQU #D3 ; EQU #D4 EQU #D5 EQU #D6 EQU #D7 ; EQU #D8 EQU #D9 EQU #DA EQU #DB ; EQU #DC EQU #DD EQU #DE EQU #DF ; EQU #E0 EQU #E1 EQU #E2 EQU #E3 ; EQU #E4 EQU #E5 EQU #E6 EQU #E7 ; EQU #E8 EQU #E9 ; EQU #EA EQU #EA ; Z80 DEFM /A/ DEFB Term2 Z81 DEFM /ADC / DEFB Term1 Z82 DEFM /ADD / DEFB Term1 Z83 DEFM /AF'/ DEFB Term2 Z84 DEFM /AF/ DEFB Term2 Z85 DEFM /AND / DEFB Term1 Z86 DEFM /B/ DEFB Term2 Z87 DEFM /BC/ DEFB Term2 Z88 DEFM /BIT / DEFB Term1 Z89 DEFM /C/ DEFB Term2 Z8A DEFM /CALL / DEFB Term1 Z8B DEFM /CCF/ DEFB Term2 Z8C DEFM /CP / DEFB Term1 Z8D DEFM /CPD/ DEFB Term2 Z8E DEFM /CPDR/ DEFB Term2 Z8F DEFM /CPI/ DEFB Term2 Z90 DEFM /CPIR/ DEFB Term2 Z91 DEFM /CPL/ DEFB Term2 Z92 DEFM /D/ DEFB Term2 Z93 DEFM /DAA/ DEFB Term2 Z94 DEFM /DE/ DEFB Term2 Z95 DEFM /DEC / DEFB Term1 Z96 DEFM /DEFB / DEFB Term1 Z97 DEFM /DEFM / DEFB Term1 Z98 DEFM /DEFS / DEFB Term1 Z99 DEFM /DEFW / DEFB Term1 Z9A DEFM /DI/ DEFB Term2 Z9B DEFM /DISP / DEFB Term1 Z9C DEFM /DJNZ / DEFB Term1 Z9D DEFM /E/ DEFB Term2 Z9E DEFM /EI/ DEFB Term2 Z9F DEFM /ENT/ DEFB Term2 ZA0 DEFM /EQU / DEFB Term1 ZA1 DEFM /EX / DEFB Term1 ZA2 DEFM /EXX/ DEFB Term2 ZA3 DEFM /H/ DEFB Term2 ZA4 DEFM /HALT/ DEFB Term2 ZA5 DEFM /HL/ DEFB Term2 ZA6 DEFM /I/ DEFB Term2 ZA7 DEFM /IM / DEFB Term1 ZA8 DEFM /IN / DEFB Term1 ZA9 DEFM /INC / DEFB Term1 ZAA DEFM /IND/ DEFB Term2 ZAB DEFM /INDR/ DEFB Term2 ZAC DEFM /INI/ DEFB Term2 ZAD DEFM /INIR/ DEFB Term2 ZAE DEFM /IX/ DEFB Term2 ZAF DEFM /IY/ DEFB Term2 ZB0 DEFM /JP / DEFB Term1 ZB1 DEFM /JR / DEFB Term1 ZB2 DEFM /L/ DEFB Term2 ZB3 DEFM /LD / DEFB Term1 ZB4 DEFM /LDD/ DEFB Term2 ZB5 DEFM /LDDR/ DEFB Term2 ZB6 DEFM /LDI/ DEFB Term2 ZB7 DEFM /LDIR/ DEFB Term2 ZB8 DEFM /M/ DEFB Term2 ZB9 DEFM /NC/ DEFB Term2 ZBA DEFM /NEG/ DEFB Term2 ZBB DEFM /NOP/ DEFB Term2 ZBC DEFM /NV/ DEFB Term2 ZBD DEFM /NZ/ DEFB Term2 ZBE DEFM /OR / DEFB Term1 ZBF DEFM /ORG / DEFB Term1 ZC0 DEFM /OTDR/ DEFB Term2 ZC1 DEFM /OTIR/ DEFB Term2 ZC2 DEFM /OUT / DEFB Term1 ZC3 DEFM /OUTD/ DEFB Term2 ZC4 DEFM /OUTI/ DEFB Term2 ZC5 DEFM /P/ DEFB Term2 ZC6 DEFM /PE/ DEFB Term2 ZC7 DEFM /PO/ DEFB Term2 ZC8 DEFM /POP / DEFB Term1 ZC9 DEFM /PUSH / DEFB Term1 ZCA DEFM /R/ DEFB Term2 ZCB DEFM /RES / DEFB Term1 ZCC DEFM /RET/ DEFB Term2 ZCD DEFM /RETI/ DEFB Term2 ZCE DEFM /RETN/ DEFB Term2 ZCF DEFM /RL / DEFB Term1 ZD0 DEFM /RLA/ DEFB Term2 ZD1 DEFM /RLC / DEFB Term1 ZD2 DEFM /RLCA/ DEFB Term2 ZD3 DEFM /RLD/ DEFB Term2 ZD4 DEFM /RR / DEFB Term1 ZD5 DEFM /RRA/ DEFB Term2 ZD6 DEFM /RRC / DEFB Term1 ZD7 DEFM /RRCA/ DEFB Term2 ZD8 DEFM /RRD/ DEFB Term2 ZD9 DEFM /RST / DEFB Term1 ZDA DEFM /SBC / DEFB Term1 ZDB DEFM /SCF/ DEFB Term2 ZDC DEFM /SET / DEFB Term1 ZDD DEFM /SLA / DEFB Term1 ZDE DEFM /SP/ DEFB Term2 ZDF DEFM /SRA / DEFB Term1 ZE0 DEFM /SRL / DEFB Term1 ZE1 DEFM /SUB / DEFB Term1 ZE2 DEFM /V/ DEFB Term2 ZE3 DEFM /XOR / DEFB Term1 ZE4 DEFM /Z/ DEFB Term2 ZE5 DEFM /SLI / DEFB Term1 ZE6 DEFM /IXL/ DEFB Term2 ZE7 DEFM /IXH/ DEFB Term2 ZE8 DEFM /IYL/ DEFB Term2 ZE9 DEFM /IYH/ DEFB Term2 ZEA DEFM /OPT / DEFB Term1 ZEB DEFM /USE / DEFB Term1 ZEC DEFM /OUTPUT / DEFB Term1 DEFB Eof ; ORG ($!#FF)+1 ; OutputBlocks DEFS 16 ; DumpVec DEFS 3 ; ORG Variables ; String DEFS #40 String2 DEFS #40 Buffer DEFS #40 AsmCode DEFS #40 cFileName DEFS #40 cSList DEFS #40 ; USEends DEFS #80 ; TextWind EQU #F000 ; fsGetList EQU #009C fsGetBlock EQU #0096 fsPutBlock EQU #0099 ; Null EQU #00 Term1 EQU #08 Term2 EQU #0A Tab EQU #0A Eof EQU #0C Ccr EQU #0D Esc EQU #1B ; PRINT EQU #0040 ENTRY EQU #0043 ReadKey EQU #0046 RETURN EQU #0049 WriteHex8 EQU #004C WriteHex16 EQU #004F PrintStr EQU #0052 TestKey EQU #0055 CommInt EQU #6C ; Line DEFS 2 Count DEFS 2 Temp DEFS 2 P1 DEFS 2 P2 DEFS 2 P3 DEFS 2 P4 DEFS 2 P5 DEFS 2 P6 DEFS 2 P7 DEFS 2 P8 DEFS 2 StackPos EQU P8 Pmax EQU $ ; WSblock DEFS 1 WSblockP DEFS 1 ; Refs DEFS 2 Displace DEFS 2 Entry DEFS 2 PassNo DEFS 1 ListPass DEFS 1 ErrorF DEFS 1 ; pCurrLine DEFS 2 ; ListO DEFS 1 SymO DEFS 1 ObjeO DEFS 1 LabelO DEFS 1 TestingO DEFS 1 ; iListO DEFS 1 iSymO DEFS 1 iObjeO DEFS 1 iLabelO DEFS 1 iTestingO DEFS 1 ; Flag DEFS 1 UnResRef DEFS 2 SaveLine DEFS 2 LForm DEFS 1 Flag2 DEFS 1 Stack DEFS 2 IXIY DEFS 1 USEflag DEFS 1 pUSEends DEFS 2 ; pSList DEFS 2 ; Object DEFS 1 pObject DEFS 2 ; bUSE0 DEFS 1 bUSE1 DEFS 1 bUSE2 DEFS 1 bUSE3 DEFS 1 ; LocalHashs DEFS 1 GlobalHashs DEFS 1 pLabBlock DEFS 1 ; pLabText DEFS 2 pLabVal DEFS 2 ; gpOldSym DEFS 2 gpSymList DEFS 2 gbOldSym DEFS 1 ; wSymA EQU #E000 wSymB EQU #D000 wSymC EQU #C000 ; ORG wSymA+#BE0 ; pNewSym DEFS 2 pOldSym DEFS 2 bNewSym DEFS 1 bOldSym DEFS 1 pSymbolList DEFS 2 ; pLabel DEFS 2 HashPtr DEFS 2 ; HashTable EQU wSymA+#C00 SymbolList EQU wSymA+#F00 ; SymbolStart EQU wSymC+#BC0