; DA8085 Version 1.3C2 ; Disassembly of mon8_80v40.bin ; File is 2048D[00800H] bytes ; Disassembled on Sat Dec 14 19:58:40 2024 ; Out of Range Label Definitions J0000 EQU 00000H ; IOBYT EQU 00003H ; A0008 EQU 00008H ; A0009 EQU 00009H ; A000A EQU 0000AH ; A000F EQU 0000FH ; A0013 EQU 00013H ; A0014 EQU 00014H ; A0064 EQU 00064H ; A00FF EQU 000FFH ; A0100 EQU 00100H ; A03E8 EQU 003E8H ; A2710 EQU 02710H ; J3000 EQU 03000H ; J3003 EQU 03003H ; J3006 EQU 03006H ; J3009 EQU 03009H ; J300C EQU 0300CH ; J300F EQU 0300FH ; J3012 EQU 03012H ; J3015 EQU 03015H ; J3018 EQU 03018H ; T301B EQU 0301BH ; T301E EQU 0301EH ; T3021 EQU 03021H ; T3024 EQU 03024H ; T3027 EQU 03027H ; C302A EQU 0302AH ; T302D EQU 0302DH ; T3030 EQU 03030H ; T3EFB EQU 03EFBH ; AFFEE EQU 0FFEEH ; AFFF8 EQU 0FFF8H ; ; Port Definitions TTYIO EQU 00000H ; TTYSC EQU 00001H ; P0002 EQU 00002H ; P0003 EQU 00003H ; CRTIO EQU 00004H ; CRTSC EQU 00005H ; P00FF EQU 000FFH ; ASEG ; ASCII character equates BS EQU 008H HT EQU 009H LF EQU 00AH CR EQU 00DH ; 192 symbols defined ; Origin set to 3800H, Binary file delta set to 0000 ORG 03800H ; Hex/ASCII dump of file ; Addr 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF ; 0000 C3 56 38 C3 D4 3C C3 B7 3E C3 79 3C C3 8F 3E C3 .V8..<..>.y<..>. ; 0010 F5 3D C3 12 3D C3 C6 3D C3 CA 3D C3 0A 3E C3 98 .=..=..=..=..>.. ; 0020 38 C3 87 39 C3 9C 3A C3 64 3B C3 67 3C C3 77 3C 8..9..:.d;.g<.w< ; 0030 C3 08 3D C3 82 3D C3 B6 3D C3 D1 3D C3 D9 3D C3 ..=..=..=..=..=. ; 0040 28 3E C3 42 3E C3 6D 3E C3 86 3F 0D 0A 38 30 38 (>.B>.m>..?..808 ; 0050 30 20 56 34 2E 30 21 03 00 36 3C 2E FF 25 7E 2F 0 V4.0!..6<..%~/ ; 0060 77 BE 2F 77 C2 5D 38 23 06 12 11 D5 3F 1B 1A 2B w./w.]8#....?..+ ; 0070 77 05 C2 6D 38 F9 21 00 01 E5 26 00 E5 E5 E5 3E w..m8.!...&....> ; 0080 C3 32 08 00 21 1B 3F 22 09 00 21 4B 38 16 0B 4E .2..!.?"..!K8..N ; 0090 23 CD 79 3C 15 C2 8F 38 FB 3E 08 D3 01 CD 08 3D #.y<...8.>.....= ; 00A0 0E 2E CD 79 3C CD 86 3F D6 41 FA 98 38 FE 18 F2 ...y<..?.A..8... ; 00B0 67 3C 87 21 BF 38 85 6F 7E 23 66 6F 0E 02 E9 EF g<.!.8.o~#fo.... ; 00C0 38 3E 39 21 30 BD 39 DE 39 00 3A 11 3A 5B 3A 67 8>9!0.9.9.:.:[:g ; 00D0 3C 67 3C 67 3C 78 3A 83 3A 96 3A 2D 30 1B 30 30 . ; 0150 11 10 27 CD 40 3D 11 E8 03 CD 40 3D 11 64 00 CD ..'.@=....@=.d.. ; 0160 40 3D 1E 0A CD 40 3D 1E 01 06 30 CD 40 3D 0E 20 @=...@=...0.@=. ; 0170 CD 8F 3E D1 E1 CD 5F 3D CD B6 3D DA 96 3A 7D E6 ..>..._=..=..:}. ; 0180 03 C2 75 39 C3 49 39 0D CD 82 3D E1 1E 00 3E 00 ..u9.I9...=...>. ; 0190 D3 01 7B 2F D3 02 CD 37 3D DB 02 2F BE CA B5 39 ..{/...7=../...9 ; 01A0 F5 CD 08 3D CD D1 3D CD 77 3C 7E CD D9 3D CD 77 ...=..=.w<~..=.w ; 01B0 3C F1 CD D9 3D 23 1C C2 8E 39 C3 98 38 CD 82 3D <...=#...9..8..= ; 01C0 D1 E1 CD 08 3D CD D1 3D CD 77 3C 7E CD D9 3D CD ....=..=.w<~..=. ; 01D0 B6 3D DA 98 38 7D E6 0F C2 C8 39 C3 C2 39 0D CD .=..8}....9..9.. ; 01E0 82 3D CD 6D 3E 0E 3A CD 8F 3E AF 57 CD 42 3E E1 .=.m>.:..>.W.B>. ; 01F0 CD 3A 3E 3E 01 CD 42 3E AF 92 CD 42 3E C3 96 3A .:>>..B>...B>..: ; 0200 0C CD 82 3D C1 D1 E1 71 CD B6 3D D2 07 3A C3 98 ...=...q..=..:.. ; 0210 38 CD 5D 3E DA 53 3A CA 2B 3A CD AE 3D D1 21 13 8.]>.S:.+:..=.!. ; 0220 00 39 72 2B 73 78 FE 0D CA 53 3A 16 02 21 14 00 .9r+sx...S:..!.. ; 0230 39 E5 0E 01 CD 82 3D 58 C1 E1 78 B1 CA 49 3A 71 9.....=X..x..I:q ; 0240 23 70 23 0A 77 23 3E CF 02 7B FE 0D CA 53 3A 15 #p#.w#>..{...S:. ; 0250 C2 31 3A CD 08 3D 21 08 00 39 E9 CD 82 3D D1 E1 .1:..=!..9...=.. ; 0260 CD 08 3D E5 19 CD D1 3D CD 77 3C E1 7D 93 6F 7C ..=....=.w<.}.o| ; 0270 9A 67 CD D1 3D C3 98 38 0D CD 82 3D E1 CD 2A 30 .g..=..8...=..*0 ; 0280 C3 98 38 0C CD 82 3D C1 D1 E1 7E 02 03 CD B6 3D ..8...=...~....= ; 0290 D2 8A 3A C3 98 38 CD E9 3D C3 98 38 0C CD 82 3D ..:..8..=..8...= ; 02A0 CD 08 3D C1 D1 E1 3E 00 D3 01 79 D3 FF 2F D3 02 ..=...>...y../.. ; 02B0 DB 02 2F BE CA E5 3A 06 F0 CD 77 3E DB 02 2F BE ../...:...w>../. ; 02C0 CA D8 3A 04 C2 B9 3A C5 0E 24 CD 79 3C CD 77 3C ..:...:..$.y<.w< ; 02D0 C1 79 CD D9 3D C3 67 3C 78 C6 11 87 87 47 CD 77 .y..=.g...:...=..:..8. ; 02F0 CD 82 3D E1 E5 CD 12 3F 06 3A 90 C2 F3 3A 57 CD ..=....?.:...:W. ; 0300 BD 3C CA 25 3B 5F CD BD 3C F5 CD BD 3C C1 4F 09 .<.%;_..<...<.O. ; 0310 CD BD 3C CD BD 3C 77 23 1D C2 13 3B CD BD 3C C2 ..<...g< ; 0340 E1 7E CD D9 3D 0E 2D CD 79 3C CD 5D 3E DA 98 38 .~..=.-.y<.]>..8 ; 0350 CA 60 3B E5 CD AE 3D D1 E1 73 78 FE 0D CA 98 38 .`;...=..sx....8 ; 0360 23 C3 41 3B 0D CD 82 3D E1 1E 00 3E 00 D3 01 7B #.A;...=...>...{ ; 0370 2F D3 02 CD 37 3D DB 02 2F 77 23 1C C2 6B 3B C3 /...7=../w#..k;. ; 0380 98 38 CD 82 3D CD 08 3D D1 E1 7D C6 10 4F 7C CE .8..=..=..}..O|. ; 0390 00 47 7B 91 4F 7A 98 DA 9F 3B 3E 10 C3 A2 3B 79 .G{.Oz...;>...;y ; 03A0 C6 11 B7 CA 98 38 D5 5F 16 00 CD 6D 3E 0E 3A CD .....8._...m>.:. ; 03B0 8F 3E 7B CD 42 3E CD 3A 3E AF CD 42 3E 7E 23 CD .>{.B>.:>..B>~#. ; 03C0 42 3E 1D C2 BD 3B AF 92 CD 42 3E D1 C3 8A 3B CD B>...;...B>...;. ; 03D0 86 3F 21 D5 3F FE 0D CA 38 3C BE CA EB 3B F5 7E .?!.?...8<...;.~ ; 03E0 B7 FA 67 3C 23 23 23 F1 C3 DA 3B CD 77 3C 23 7E ..g<###...;.w<#~ ; 03F0 EB 6F 26 00 39 EB 23 46 23 1A CD D9 3D 05 CA 06 .o&.9.#F#...=... ; 0400 3C 1B 1A CD D9 3D 04 0E 2D CD 79 3C CD 5D 3E DA <....=..-.y<.]>. ; 0410 98 38 CA 2A 3C E5 C5 CD AE 3D E1 F1 C5 F5 7D 12 .8.*<....=....}. ; 0420 C1 05 CA 28 3C 13 7C 12 C1 E1 7E B7 FA 98 38 78 ...(<.|...~...8x ; 0430 FE 0D CA 98 38 C3 EE 3B CD 08 3D CD 77 3C 7E 23 ....8..;..=.w<~# ; 0440 B7 FA 98 38 4F CD 79 3C 0E 3D CD 79 3C 7E 23 EB ...8O.y<.=.y<~#. ; 0450 6F 26 00 39 EB 46 23 1A CD D9 3D 05 CA 3B 3C 1B o&.9.F#...=..;<. ; 0460 1A CD D9 3D C3 3B 3C CD 13 3E 11 F8 FF 19 F9 0E ...=.;<..>...... ; 0470 2A CD 79 3C C3 98 38 0E 20 3A 03 00 E6 03 C2 A4 *.y<..8. :...... ; 0480 3C CD 98 3C 79 FE 0D C0 0E 05 CD 98 3C CD D4 3C <......O..?.(>.O ; 04D0 82 57 79 C9 3A 03 00 E6 03 C2 E7 3C DB 01 E6 01 .Wy.:......<.... ; 04E0 C2 DC 3C DB 00 2F C9 FE 01 C2 F8 3C DB 05 E6 01 ..<../.....<.... ; 04F0 C2 EC 3C DB 04 C3 E5 3C FE 02 CA B7 3E C3 00 30 ..<....<....>..0 ; 0500 C6 90 27 CE 40 27 4F C9 0E 0D CD 79 3C 0E 0A C3 ..'.@'O....y<... ; 0510 79 3C 3A 03 00 E6 03 C2 1F 3D DB 01 C3 26 3D FE y<:......=...&=. ; 0520 01 C2 2D 3D DB 05 E6 01 3E 00 C0 2F C9 FE 02 3E ..-=....>../...> ; 0530 FF CA 2A 3D C3 18 30 C5 06 54 05 C2 3A 3D C1 C9 ..*=..0..T..:=.. ; 0540 0E 30 7D 93 6F 7C 9A 67 DA 4F 3D 0C C3 42 3D 19 .0}.o|.g.O=..B=. ; 0550 79 FE 30 C2 5A 3D 48 C3 8F 3E 06 30 C3 57 3D 0E y.0.Z=H..>.0.W=. ; 0560 42 CD 8F 3E 06 08 7E 07 F5 3E 00 17 17 C6 4E 4F B..>..~..>....NO ; 0570 CD 8F 3E F1 05 C2 67 3D 0E 46 CD 8F 3E 0E 20 C3 ..>...g=.F..>. . ; 0580 8F 3E 21 00 00 CD 86 3F 47 CD 28 3E DA 98 3D 29 .>!....?G.(>..=) ; 0590 29 29 29 B5 6F C3 85 3D E3 E5 78 CD 60 3E D2 A6 ))).o..=..x.`>.. ; 05A0 3D 0D C2 67 3C C9 C2 67 3C 0D C2 82 3D C9 0E 01 =..g<..g<...=... ; 05B0 21 00 00 C3 88 3D 23 7C B5 37 C8 7B 95 7A 9C C9 !....=#|.7.{.z.. ; 05C0 CD 00 3D C3 79 3C 3A 03 00 C9 E5 21 03 00 71 E1 ..=.y<:....!..q. ; 05D0 C9 7C CD D9 3D 7D C3 D9 3D F5 0F 0F 0F 0F E6 0F .|..=}..=....... ; 05E0 CD C0 3D F1 E6 0F C3 C0 3D 06 3C 0E 00 CD 8F 3E ..=.....=.<....> ; 05F0 05 C2 EB 3D C9 3A 03 00 E6 C0 CA 98 3C FE 40 CA ...=.:......<.@. ; 0600 A9 3C FE 80 CA 12 30 C3 15 30 E5 CD 13 3E 44 3E .<....0..0...>D> ; 0610 C0 E1 C9 C5 21 FF 00 25 7E 2F 77 BE 2F 77 C2 17 ....!..%~/w./w.. ; 0620 3E 23 01 EE FF 09 C1 C9 D6 30 D8 C6 E9 D8 C6 06 >#.......0...... ; 0630 F2 36 3E C6 07 D8 C6 0A B7 C9 7C CD 42 3E 7D C3 .6>.......|.B>}. ; 0640 42 3E F5 0F 0F 0F 0F E6 0F CD 00 3D CD 8F 3E F1 B>.........=..>. ; 0650 F5 E6 0F CD 00 3D CD 8F 3E F1 82 57 C9 CD 86 3F .....=..>..W...? ; 0660 FE 20 C8 FE 2C C8 FE 0D 37 3F C0 37 C9 0E 0D CD . ..,...7?.7.... ; 0670 8F 3E 0E 0A C3 8F 3E 7E 2F D3 03 3E 80 D3 01 3E .>....>~/..>...> ; 0680 00 D3 01 C5 06 14 CD 37 3D 05 C2 86 3E C1 C9 3A .......7=...>..: ; 0690 03 00 E6 30 CA 98 3C FE 10 C2 AF 3E DB 01 E6 40 ...0..<....>...@ ; 06A0 CA 9C 3E 79 D3 03 3E 0A D3 01 3E 08 D3 01 C9 FE ..>y..>...>..... ; 06B0 20 CA 0C 30 C3 0F 30 E5 21 03 00 7E E6 0C C2 E4 ..0..0.!..~.... ; 06C0 3E 3E 09 D3 01 3E 08 D3 01 26 FF E6 01 CA DE 3E >>...>...&.....> ; 06D0 CD 37 3D CD 37 3D 25 C2 C5 3E AF 37 E1 C9 DB 00 .7=.7=%..>.7.... ; 06E0 2F B7 E1 C9 FE 04 C2 09 3F 3E 0C D3 01 3E 08 D3 /.......?>...>.. ; 06F0 01 26 FA DB 01 E6 20 C2 04 3F CD 37 3D 25 C2 F3 .&.... ..?.7=%.. ; 0700 3E C3 DA 3E DB 03 B7 E1 C9 E1 FE 08 CA 06 30 C3 >..>..........0. ; 0710 09 30 CD B7 3E DA 67 3C E6 7F C9 E5 D5 C5 F5 CD .0..>.g<........ ; 0720 13 3E EB 21 0A 00 39 06 04 EB 2B 72 2B 73 D1 05 .>.!..9...+r+s.. ; 0730 C2 2A 3F C1 0B F9 21 14 00 39 7E 91 23 C2 45 3F .*?...!..9~.#.E? ; 0740 7E 90 CA 53 3F 23 23 7E 91 C2 52 3F 23 7E 90 CA ~..S?##~..R?#~.. ; 0750 53 3F 03 21 0F 00 39 73 23 72 23 23 71 23 70 C5 S?.!..9s#r##q#p. ; 0760 0E 2A CD 79 3C E1 CD D1 3D 21 14 00 39 16 02 4E .*.y<...=!..9..N ; 0770 36 00 23 46 36 00 23 79 B0 CA 7E 3F 7E 02 23 15 6.#F6.#y..~?~.#. ; 0780 C2 6F 3F C3 98 38 CD D4 3C E6 7F C5 4F CD 79 3C .o?..8..<...O.y< ; 0790 79 C1 C9 43 FC A3 3F 52 F3 AB 3F 50 CF B3 3F 4C y..C..?R..?P..?L ; 07A0 3F BB 3F 54 00 43 01 42 02 31 03 54 00 50 04 31 ?.?T.C.B.1.T.P.1 ; 07B0 08 32 0C 54 00 50 10 31 20 32 30 54 00 43 40 31 .2.T.P.1 20T.C@1 ; 07C0 80 32 C0 D1 C1 F1 E1 F9 FB 21 00 00 C3 00 00 00 .2.......!...... ; 07D0 00 00 00 00 00 41 05 01 42 03 01 43 02 01 44 01 .....A..B..C..D. ; 07E0 01 45 00 01 46 04 01 48 10 01 4C 0F 01 4D 10 02 .E..F..H..L..M.. ; 07F0 50 13 02 53 07 02 FF 7B 38 00 00 00 00 00 00 00 P..S...{8....... JMP BEGIN JMP CI JMP RI JMP CO JMP PO JMP LO JMP CSTS JMP IOCHK JMP IOSET JMP MEMCHK JMP START JMP COMP JMP NULL JMP TRAN JMP LER JMP BLK JMP CRLF JMP EXPR JMP HILO JMP LADR JMP LBYTE JMP NIBBLE JMP PBYTE JMP PEOL JMP TI VERS: DB CR, LF, '8080 V4.0' ;384B- BEGIN: LXI H,IOBYT MVI M,'<' MVI L,0FFH BG0: DCR H MOV A,M CMA MOV M,A CMP M CMA MOV M,A JNZ BG0 INX H MVI B,012H LXI D,ACTBL BG1: DCX D LDAX D DCX H MOV M,A DCR B JNZ BG1 SPHL LXI H,A0100 PUSH H MVI H,0 PUSH H PUSH H PUSH H MVI A,0C3H STA A0008 LXI H,RESTART SHLD A0009 LXI H,VERS MVI D,00BH VER0: MOV C,M INX H CALL CO DCR D JNZ VER0 START: EI MVI A,BS OUT TTYSC CALL CRLF MVI C,'.' CALL CO CALL TI SUI 'A' JM START CPI 018H JP LER ADD A LXI H,TBL ADD L MOV L,A MOV A,M INX H MOV H,M MOV L,A MVI C,002H ; Possible jump table PCHL TBL: DW ASSIGN DW BNPF DW T3021 DW DISP DW EOF DW FILL DW GOTO DW HEXN DW LER DW LER DW LER DW LOAD DW LO0 DW MV0 DW T302D DW T301B DW T3030 DW READ DW SUBS DW T301E DW T3024 DW T3027 DW WRITE DW X ASSIGN: CALL TI LXI H,LTBL MVI C,004H AS0: CMP M INX H JZ AS1 INX H INX H INX H DCR C JNZ AS0 JMP LER AS1: MOV B,M INX H MOV E,M INX H MOV D,M XCHG AS2: CALL TI CPI '=' JNZ AS2 AS3: CALL TI CPI ' ' JZ AS3 MVI C,004H AS4: CMP M INX H JZ AS5 INX H DCR C JNZ AS4 JMP LER AS5: CALL TI CPI CR JNZ AS5 MOV C,M LXI H,IOBYT MOV A,M ANA B ORA C MOV M,A JMP START BNPF: CALL EXPR CALL CRLF CALL LEAD POP D POP H BN0: PUSH H PUSH D CALL PEOL MVI B,' ' LXI D,A2710 CALL DIGIT LXI D,A03E8 CALL DIGIT LXI D,A0064 CALL DIGIT MVI E,LF CALL DIGIT MVI E,001H MVI B,'0' CALL DIGIT MVI C,' ' CALL PO POP D POP H BN1: CALL ENCODE CALL HILO JC MV0 MOV A,L ANI 003H JNZ BN1 JMP BN0 COMP: DCR C CALL EXPR POP H MVI E,0 CM0: MVI A,0 OUT TTYSC MOV A,E CMA OUT P0002 CALL DELAY IN P0002 CMA CMP M JZ CM1 PUSH PSW CALL CRLF CALL LADR CALL BLK MOV A,M CALL LBYTE CALL BLK POP PSW CALL LBYTE CM1: INX H INR E JNZ CM0 JMP START DISP: CALL EXPR POP D POP H DI0: CALL CRLF CALL LADR DI1: CALL BLK MOV A,M CALL LBYTE CALL HILO JC START MOV A,L ANI 00FH JNZ DI1 JMP DI0 EOF: DCR C CALL EXPR CALL PEOL MVI C,':' CALL PO XRA A MOV D,A CALL PBYTE POP H CALL PADR MVI A,001H CALL PBYTE XRA A SUB D CALL PBYTE JMP MV0 FILL: INR C CALL EXPR POP B POP D POP H FI0: MOV M,C CALL HILO JNC FI0 JMP START GOTO: CALL PCHK JC GO3 JZ GO0 CALL EXF POP D LXI H,A0013 DAD SP MOV M,D DCX H MOV M,E MOV A,B CPI CR JZ GO3 GO0: MVI D,002H LXI H,A0014 DAD SP GO1: PUSH H MVI C,001H CALL EXPR MOV E,B POP B POP H MOV A,B ORA C JZ GO2 MOV M,C INX H MOV M,B INX H LDAX B MOV M,A INX H MVI A,0CFH STAX B GO2: MOV A,E CPI CR JZ GO3 DCR D JNZ GO1 GO3: CALL CRLF LXI H,A0008 DAD SP ; Possible jump table PCHL HEXN: CALL EXPR POP D POP H CALL CRLF PUSH H DAD D CALL LADR CALL BLK POP H MOV A,L SUB E MOV L,A MOV A,H SBB D MOV H,A CALL LADR JMP START LOAD: DCR C CALL EXPR POP H CALL C302A JMP START LO0: INR C CALL EXPR POP B POP D POP H MOVE: MOV A,M STAX B INX B CALL HILO JNC MOVE JMP START MV0: CALL LEAD JMP START NULL: INR C CALL EXPR CALL CRLF POP B POP D POP H PROG: MVI A,0 OUT TTYSC MOV A,C OUT P00FF CMA OUT P0002 IN P0002 CMA CMP M JZ PR3 MVI B,0F0H PR0: CALL PGRM IN P0002 CMA CMP M JZ PR1 INR B JNZ PR0 PUSH B MVI C,'$' CALL CO CALL BLK POP B MOV A,C CALL LBYTE JMP LER PR1: MOV A,B ADI 011H ADD A ADD A MOV B,A PR2: CALL PGRM DCR B JNZ PR2 PR3: INR C CALL HILO JNC PROG JMP START READ: DCR C CALL EXPR RED0: POP H PUSH H CALL RIX MVI B,':' SUB B JNZ RED0 MOV D,A CALL BYTE JZ RED2 MOV E,A CALL BYTE PUSH PSW CALL BYTE POP B MOV C,A DAD B CALL BYTE RED1: CALL BYTE MOV M,A INX H DCR E JNZ RED1 CALL BYTE JNZ LER JMP RED0 RED2: CALL BYTE MOV H,A CALL BYTE MOV L,A ORA H JZ RED3 ; Possible jump table PCHL RED3: POP H JMP START SUBS: DCR C CALL EXPR CALL P2C JC LER POP H SU0: MOV A,M CALL LBYTE MVI C,'-' CALL CO CALL PCHK JC START JZ SU1 PUSH H CALL EXF POP D POP H MOV M,E MOV A,B CPI CR JZ START SU1: INX H JMP SU0 TRAN: DCR C CALL EXPR POP H MVI E,0 TR0: MVI A,0 OUT TTYSC MOV A,E CMA OUT P0002 CALL DELAY IN P0002 CMA MOV M,A INX H INR E JNZ TR0 JMP START WRITE: CALL EXPR CALL CRLF POP D POP H WRI0: MOV A,L ADI 010H MOV C,A MOV A,H ACI 0 MOV B,A MOV A,E SUB C MOV C,A MOV A,D SBB B JC WRI1 MVI A,010H JMP WRI2 WRI1: MOV A,C ADI 011H WRI2: ORA A JZ START PUSH D MOV E,A MVI D,0 CALL PEOL MVI C,':' CALL PO MOV A,E CALL PBYTE CALL PADR XRA A CALL PBYTE WRI3: MOV A,M INX H CALL PBYTE DCR E JNZ WRI3 XRA A SUB D CALL PBYTE POP D JMP WRI0 X: CALL TI LXI H,ACTBL CPI CR JZ X6 X0: CMP M JZ X1 PUSH PSW MOV A,M ORA A JM LER INX H INX H INX H POP PSW JMP X0 X1: CALL BLK X2: INX H MOV A,M XCHG MOV L,A MVI H,0 DAD SP XCHG INX H MOV B,M INX H LDAX D CALL LBYTE DCR B JZ X3 DCX D LDAX D CALL LBYTE X3: INR B MVI C,'-' CALL CO CALL PCHK JC START JZ X5 PUSH H PUSH B CALL EXF POP H POP PSW PUSH B PUSH PSW MOV A,L STAX D POP B DCR B JZ X4 INX D MOV A,H STAX D X4: POP B POP H X5: MOV A,M ORA A JM START MOV A,B CPI CR JZ START JMP X2 X6: CALL CRLF X7: CALL BLK MOV A,M INX H ORA A JM START MOV C,A CALL CO MVI C,'=' CALL CO MOV A,M INX H XCHG MOV L,A MVI H,0 DAD SP XCHG MOV B,M INX H LDAX D CALL LBYTE DCR B JZ X7 DCX D LDAX D CALL LBYTE JMP X7 LER: CALL MEMSIZ LXI D,AFFF8 DAD D SPHL MVI C,'*' CALL CO JMP START BLK: MVI C,' ' CO: LDA IOBYT ANI 003H JNZ CO0 J3C81: CALL TTYOUT MOV A,C CPI CR RNZ MVI C,005H CALL TTYOUT J2C8D: CALL CI CPI 006H JNZ J2C8D MVI C,CR RET TTYOUT: IN TTYSC ANI 004H JNZ TTYOUT MOV A,C CMA OUT TTYIO RET CO0: CPI 001H JNZ CO1 CHROUT: IN CRTSC ANI 004H JNZ CHROUT MOV A,C CMA OUT CRTIO RET CO1: CPI 002H JNZ J3003 JMP LO BYTE: CALL RIX CALL NIBBLE RLC RLC RLC RLC MOV C,A CALL RIX CALL NIBBLE ORA C MOV C,A ADD D MOV D,A MOV A,C RET CI: LDA IOBYT ANI 003H JNZ CI1 TTYIN: IN TTYSC ANI 001H JNZ TTYIN IN TTYIO CI0: CMA RET CI1: CPI 001H JNZ CI2 CRTIN: IN CRTSC ANI 001H JNZ CRTIN IN CRTIO JMP CI0 CI2: CPI 002H JZ RI JMP J3000 CONV: ADI 090H DAA ACI '@' DAA MOV C,A RET CRLF: MVI C,CR CALL CO MVI C,LF JMP CO CSTS: LDA IOBYT ANI 003H JNZ CS0 IN TTYSC JMP CS1 CS0: CPI 001H JNZ CS3 IN CRTSC CS1: ANI 001H MVI A,0 CS2: RNZ CMA RET CS3: CPI 002H MVI A,0FFH JZ CS2 JMP J3018 DELAY: PUSH B MVI B,'T' DL0: DCR B JNZ DL0 POP B RET DIGIT: MVI C,'0' DG0: MOV A,L SUB E MOV L,A MOV A,H SBB D MOV H,A JC DG1 INR C JMP DG0 DG1: DAD D MOV A,C CPI '0' JNZ DG3 MOV C,B DG2: JMP PO DG3: MVI B,'0' JMP DG2 ENCODE: MVI C,'B' CALL PO MVI B,BS MOV A,M EN0: RLC PUSH PSW MVI A,0 RAL RAL ADI 'N' MOV C,A CALL PO POP PSW DCR B JNZ EN0 MVI C,'F' CALL PO MVI C,' ' JMP PO EXPR: LXI H,J0000 EX0: CALL TI EX1: MOV B,A CALL NIBBLE JC EX2 DAD H DAD H DAD H DAD H ORA L MOV L,A JMP EX0 EX2: XTHL PUSH H MOV A,B CALL P2C JNC EX3 DCR C JNZ LER RET EX3: JNZ LER DCR C JNZ EXPR RET EXF: MVI C,001H LXI H,J0000 JMP EX1 HILO: INX H MOV A,H ORA L STC RZ MOV A,E SUB L MOV A,D SBB H RET HXD: CALL CONV JMP CO IOCHK: LDA IOBYT RET IOSET: PUSH H LXI H,IOBYT MOV M,C POP H RET LADR: MOV A,H CALL LBYTE MOV A,L JMP LBYTE LBYTE: PUSH PSW RRC RRC RRC RRC ANI 00FH CALL HXD POP PSW ANI 00FH JMP HXD LEAD: MVI B,'<' LE0: MVI C,0 CALL PO DCR B JNZ LE0 RET LO: LDA IOBYT ANI 0C0H JZ TTYOUT CPI '@' JZ CHROUT CPI 080H JZ J3012 JMP J3015 MEMCHK: PUSH H CALL MEMSIZ MOV B,H MVI A,0C0H POP H RET MEMSIZ: PUSH B LXI H,A00FF MEM0: DCR H MOV A,M CMA MOV M,A CMP M CMA MOV M,A JNZ MEM0 INX H LXI B,AFFEE DAD B POP B RET NIBBLE: SUI '0' RC ADI 0E9H RC ADI 006H JP NI0 ADI 007H RC NI0: ADI LF ORA A RET PADR: MOV A,H CALL PBYTE MOV A,L JMP PBYTE PBYTE: PUSH PSW RRC RRC RRC RRC ANI 00FH CALL CONV CALL PO POP PSW PUSH PSW ANI 00FH CALL CONV CALL PO POP PSW ADD D MOV D,A RET PCHK: CALL TI P2C: CPI ' ' RZ CPI ',' RZ CPI CR STC CMC RNZ STC RET PEOL: MVI C,CR CALL PO MVI C,LF JMP PO PGRM: MOV A,M CMA OUT P0003 MVI A,080H OUT TTYSC MVI A,0 OUT TTYSC PUSH B MVI B,014H PG0: CALL DELAY DCR B JNZ PG0 POP B RET PO: LDA IOBYT ANI '0' JZ TTYOUT CPI 010H JNZ PO1 PO0: IN TTYSC ANI '@' JZ PO0 MOV A,C OUT P0003 MVI A,LF OUT TTYSC MVI A,BS OUT TTYSC RET PO1: CPI ' ' JZ J300C JMP J300F RI: PUSH H LXI H,IOBYT MOV A,M ANI 00CH JNZ RI3 MVI A,HT OUT TTYSC RI0: MVI A,BS OUT TTYSC MVI H,0FFH ANI 001H JZ RI2 CALL DELAY CALL DELAY DCR H JNZ RI0 RI1: XRA A STC POP H RET RI2: IN TTYIO CMA ORA A POP H RET RI3: CPI 004H JNZ RI6 MVI A,00CH OUT TTYSC MVI A,BS OUT TTYSC MVI H,0FAH RI4: IN TTYSC ANI ' ' JNZ RI5 CALL DELAY DCR H JNZ RI4 JMP RI1 RI5: IN P0003 ORA A POP H RET RI6: POP H CPI BS JZ J3006 JMP J3009 RIX: CALL RI JC LER ANI 07FH RET RESTART: PUSH H PUSH D PUSH B PUSH PSW CALL MEMSIZ XCHG LXI H,A000A DAD SP MVI B,004H XCHG RST0: DCX H MOV M,D DCX H MOV M,E POP D DCR B JNZ RST0 POP B DCX B SPHL LXI H,A0014 DAD SP MOV A,M SUB C INX H JNZ RST1 MOV A,M SUB B JZ RST3 RST1: INX H INX H MOV A,M SUB C JNZ RST2 INX H MOV A,M SUB B JZ RST3 RST2: INX B RST3: LXI H,A000F DAD SP MOV M,E INX H MOV M,D INX H INX H MOV M,C INX H MOV M,B PUSH B MVI C,'*' CALL CO POP H CALL LADR LXI H,A0014 DAD SP MVI D,002H RST4: MOV C,M MVI M,0 INX H MOV B,M MVI M,0 INX H MOV A,C ORA B JZ RST5 MOV A,M STAX B RST5: INX H DCR D JNZ RST4 JMP START TI: CALL CI ANI 07FH PUSH B MOV C,A CALL CO MOV A,C POP B RET LTBL: DB 'C' ;3F93- DB 0FCH ;3F94-0FCH DW ACT DB 'R' ;3F97- DB 0F3H ;3F98-0F3H DW ART DB 'P' ;3F9B- DB 0CFH ;3F9C-0CFH DW APT DB 'L' ;3F9F- DB 03FH ;3FA0-'?' DW ALT ACT: DB 'T' ;3FA3- DB 000H ;3FA4-000H DB 'C' ;3FA5- DB 001H ;3FA6-001H DB 'B' ;3FA7- DB 002H ;3FA8-002H DB '1' ;3FA9- DB 003H ;3FAA-003H ART: DB 'T' ;3FAB- DB 000H ;3FAC-000H DB 'P' ;3FAD- DB 004H ;3FAE-004H DB '1' ;3FAF- DB 008H ;3FB0-008H DB '2' ;3FB1- DB 00CH ;3FB2-00CH APT: DB 'T' ;3FB3- DB 000H ;3FB4-000H DB 'P' ;3FB5- DB 010H ;3FB6-010H DB '1' ;3FB7- DB 020H ;3FB8-' ' DB '2' ;3FB9- DB 030H ;3FBA-'0' ALT: DB 'T' ;3FBB- DB 000H ;3FBC-000H DB 'C' ;3FBD- DB 040H ;3FBE-'@' DB '1' ;3FBF- DB 080H ;3FC0-080H DB '2' ;3FC1- DB 0C0H ;3FC2-0C0H EXIT: POP D POP B POP PSW POP H SPHL EI LXI H,J0000 JMP J0000 NOP NOP NOP NOP NOP NOP ACTBL: DB 'A' ;3FD5- DB 005H ;3FD6-005H DB 001H ;3FD7-001H DB 'B' ;3FD8- DB 003H ;3FD9-003H DB 001H ;3FDA-001H DB 'C' ;3FDB- DB 002H ;3FDC-002H DB 001H ;3FDD-001H DB 'D' ;3FDE- DB 001H ;3FDF-001H DB 001H ;3FE0-001H DB 'E' ;3FE1- DB 000H ;3FE2-000H DB 001H ;3FE3-001H DB 'F' ;3FE4- DB 004H ;3FE5-004H DB 001H ;3FE6-001H DB 'H' ;3FE7- DB 010H ;3FE8-010H DB 001H ;3FE9-001H DB 'L' ;3FEA- DB 00FH ;3FEB-00FH DB 001H ;3FEC-001H DB 'M' ;3FED- DB 010H ;3FEE-010H DB 002H ;3FEF-002H DB 'P' ;3FF0- DB 013H ;3FF1-013H DB 002H ;3FF2-002H DB 'S' ;3FF3- DB 007H ;3FF4-007H DB 002H ;3FF5-002H DB 0FFH ;3FF6-0FFH DB 07BH, 038H, 000H, 000H, 000H, 000H, 000H, 000H ;3FF7-'{' '8' 000H 000H 000H 000H 000H 000H DB 000H ;3FFF-000H END