; ; DZ80 V3.4.1 8080 Disassembly of archive/VT100.bin ; 2016/08/03 14:55 ; ; Comments beginning with ";;" borrowed from Adam Mayer (https://github.com/phooky) ; See https://github.com/phooky/VT100-Hax/blob/master/ROMs/haxrom.d80 ; Additional information at http://vt100romhax.tumblr.com/post/90789754818/day-four-rom-checksums ; ; All other comments/annotations by Jeff Parsons ; org 0 ; X0000: di lxi sp,X204e jmp X003b ; org 8 ; X0008: call X00fd ei ret ; X000d: nop ; org 10h ; call X03cc ei X0014: ret ; nop ; org 18h ; call X03cc call X00fd ei ret ; call X04cf ret ; nop ; org 28h ; call X04cf ret ; nop ; org 30h ; X0030: call X03cc call X04cf ei ret ; jmp X0030 ; X003b: mvi e,1 X003d: di mvi a,0fh out 62h ;; 0x0f to NVR latch cma ;; invert A (0xf0) out 42h ;; 0xf0 to brightness ;; ;; Run checksum on each 2K ROM, indicating with ;; the keyboard LEDs which is being scanned. ;; The # of the chip being scanned is stored in B. ;; xra a ;; zero A mov d,a ;; zero D, L, H mov l,a mov h,a X0049: inr a ;; next 2K ROM mov b,a ;; store the current ROM # in B out 82h ;; show current ROM on LEDs mvi c,8 ;; Checksum over 8 256B blocks X004f: rlc ;; Rotate A left xra m ;; A <- A ^ memory inr l ;; next memory address jnz X004f ;; ... repeat until end of block inr h ;; next block dcr c ;; decrement block count jnz X004f ;; ... repeat until end of chip ora a ;; Check the value of the accumulator X005b: jnz X005b ;; If it's not zero, hang forever mov a,b ;; Put the ROM # back in the accumulator cpi 4 ;; If it's not 4... jnz X0049 ;; repeat for the next ROM inr a out 82h ;; write 5 to LEDs (turns on L2 and L4) mvi c,0aah ;; Test pattern: 0xaa mvi b,2ch ;; 0x2c is the top of RAM on the basic board in 42h ;; ani 2 ;; flags buffer &= 0x02 : is AVO installed? jnz X0074 ;; if bit 2 is not set, AVO is installed mvi b,40h ;; 0x40 is the top of RAM on the AVO X0074: mov h,b ;; load HL with top of RAM dcx h ;; dec HL X0076: mvi m,0 ;; M <- 0 dcx h ;; dec HL mov a,h ;; a <- h cpi 1fh ;; compare to 1f (top of ROM) jnz X0076 ;; continue to zero if not at ROM inx h ;; ;; Zero all RAM. C gets the high byte of the address of the top of ;; RAM, HL is loaded with it, and it zeros memory all the way down, ;; leaving the start of RAM in HL ;; ;; From start of RAM, test that it's all zero ;; X0080: mov a,m ;; read a byte of memory ora a jz X0090 ;; if it's zero, skip ahead ani 0fh mov a,h jnz X00a1 ;; err cpi 30h jc X00a1 ;; err X0090: mov m,c ;; run test pattern through ram mov a,m xra c jz X00a8 ;; jump to 00a8 if ok ani 0fh mov a,h jnz X00a1 ;; err cpi 30h jnc X00a8 ;; ok X00a1: mvi d,1 cpi 2ch X00a5: jc X00a5 ;; Hang if non-AVO memory X00a8: xra a inx h ora l jnz X0080 ora h cmp b jnz X0080 mov a,c ;; Repeat mem test with pattern 0x55 rlc mov c,a jc X0074 ;; ;; Memory test is done ;; push d call X02a4 ;; zero scratch and screen mem call X02eb ;; Set a number of scratch values to fixed values call X175b ;; .... more memory initialization pop d X00c4: jz X00cb mov a,d ori 2 mov d,a X00cb: mvi a,2fh sta X21c9 out 62h X00d2: lxi b,X0fff ei X00d6: mvi a,8 ana e mvi a,7fh jnz X00e0 mvi a,0ffh X00e0: out 82h dcx b mov a,b ora c jnz X00d6 out 82h lda X2068 ora a jm X00f5 mov a,d ori 4 mov d,a X00f5: push d call X03a2 pop d jmp X0875 ;; ;; Keyboard interrupt handler ;; X00fd: push psw in 82h ;; Read from keyboard port push h push b mov b,a ;; copy b <- a sui 7ch ;; subtract 0x7c from a jm X011a ;; jump to 011a if a is a normal key mov h,a ;; otherwise h <- a X0109: inr h ;; h++ mvi a,10h ;; a <- 0x10 rrc X010d: rlc dcr h jnz X010d lxi h,X2068 ;; load keys flag addresss ora m ;; or in control bit mov m,a ;; store again jmp X012d ;; jump to end to interrupt ; X011a: lxi h,X2068 ;; load keys flag address mvi a,7 ana m ;; load key counter cpi 4 ;; if overflow.. (>3 keys) jp X012d ;; discard keypress and end interrupt inr m ;; otherwise increment key counter lxi h,X206a ;; load key address buffer? call X13de ;; add key counter to address buffer mov m,b ;; save key to address buffer X012d: pop b pop h pop psw ret ;; ;; End of keyboard interrupt handler ;; X0131: ani 7fh mov c,a lda X207b ora a jnz X01ff X013b: mov a,c cpi 1 jz X01c3 lda X21a7 ani 20h jnz X0175 lda X2178 ora a jnz X015f mov a,c cpi 41h jm X015b mvi a,1bh call X0f18 X015b: mov a,c jmp X080d ; X015f: mvi a,1bh call X0f18 mov a,c cpi 41h jp X015b mvi a,3fh X016c: call X0f18 mov a,c adi 40h jmp X080d ; X0175: lda X2178 ora a jnz X019e mov a,c cpi 41h jm X015b cpi 50h jm X019e X0187: mvi a,1bh call X0f18 mvi a,4fh X018e: call X0f18 jmp X015b ; X0194: mvi a,1bh call X0f18 mvi a,5bh jmp X018e ; X019e: lda X21bc ora a jz X01b5 mov a,c cpi 41h jp X0187 X01ab: mvi a,1bh call X0f18 mvi a,4fh jmp X016c ; X01b5: mov a,c cpi 41h jm X01ab cpi 50h jm X0194 jmp X0187 ; X01c3: lxi h,X0815 push h lda X21a5 ora a rnz call X0853 lxi b,X020e lxi h,X2068 mov a,m ani 10h jnz X0900 mov a,m ani 20h jz X01e4 lxi b,X00d2 X01e4: mvi a,25h ori 8 ora b out 1 lda X207f add c mov c,a X01f0: push b call X1493 pop b lda X207f cmp c jnz X01f0 jmp X0394 ; X01ff: lxi h,X0812 push h xra a sta X2130 sta X21b8 lxi h,X21a3 mov a,c X020e: sui 41h mov b,a X0211: mov a,m X0212: jz X0222 dcr b jz X0226 dcr b jz X1815 dcr b jz X181e ret ; X0222: dcr a rm mov m,a ret ; X0226: inr a cpi 20h rz mov m,a ret ; X022c: lda X21a7 cma ani 10h lxi h,X21a5 ora m jnz X0841 lda X21bf lxi b,X0211 ana b jnz X0245 mvi c,13h X0245: mov a,c sui 11h sta X21c4 call X0f7e jmp X0812 ; X0251: di lxi sp,X204e lxi h,2000h push h mov a,m rar jc X0265 in 42h ani 2 jz X0269 X0265: inr a sta X21c8 X0269: call X03a2 lda X2050 dcr a sta X2153 pop h mov a,m mvi m,7fh ora a jz X0298 jp X0285 lxi h,X21cb mvi m,0ah ani 7fh X0285: sta X21bd adi 30h lhld X20f6 mov m,a cpi 34h jz X0298 mvi a,20h sta X21a5 X0298: call X0bf2 lxi b,X0011 call X0f7e jmp X03ae ;; ;; Zero all scratch and screen RAM above stack ;; X02a4: lxi h,X204e ;; HL <- 0x204e (top of stack) lxi d,X0fb2 ;; DE <- 0x0fb2 mvi b,0 ;; B <- 0 call X1083 ;; memset(0x204e,0,0xfb2) cma ;; invert A sta X2104 ;; store A in 0x2104 lxi h,X2004 ;; HL <- 0x2004 shld X2052 ;; *(0x2052) = 0x2004 lxi h,X22d0 ;; HL <- 0x22d0 shld X20f6 ;; *(20f6) = 0x22d0 ret ;; ;; Initialize start of screen RAM and wipe attribute RAM to 0xff ;; X02c0: call X0a15 ;; 0x2140 = 0xe605 lxi h,2000h ;; HL = 0x2000 lxi d,X02d9 ;; DE = 0x02d9 mvi b,12h ;; B = 18 call memmov ;; copy 18 bytes from 0x02d9 to 0x2000 lxi h,X3000 ;; HL = 0x3000 lxi d,X1000 ;; DE = 0x1000 mvi b,0ffh ;; B = 0xFF jmp X1083 ;; Set all of attribute RAM to 0xFF and return ;; ;; 0x02d9 through 0x02eb are the initial values for the screen RAM; ;; it's copied into low RAM at 0x2000 during init. ;; X02d9: db 07fh,070h,003h db 07fh,0f2h,0d0h db 07fh,070h,006h db 07fh,070h,00ch db 07fh,070h,00fh db 07fh,070h,003h ;; ;; Initialize several scratch values. We don't know what all of these are for yet. ;; X02eb: lxi h,X0212 ;; HL = 0x0212 shld X212d ;; Store 0x1202 at 0x212d mvi a,35h ;; A = 0x35 sta X212c ;; 0x212c = 0x35 mvi a,1 ;; A = 1 sta X205b ;; 0x205b = 1 sta X2176 ;; 0x2176 = 1 lxi h,X07ff ;; HL = 0x07ff shld X2149 ;; store 0xff07 at 0x2149 mvi a,2 ;; A = 2 sta X2073 ;; 0x2073 = 2 mvi a,0f7h ;; A = 0xf7 sta X20fa ;; 0x20fa = 0xf7 in 42h ;; read flags buffer ani 4 ;; And it with 0x04 (check graphics flag) mvi a,1 ;; A=1 jnz X031a ;; if no graphics skip sta X2079 ;; else store 1 in 0x2079 X031a: mvi a,0ffh ;; A = 0xff sta X210e ;; 0x210e = 0xff sta X21ba ;; 0x21ba = 0xff mvi h,80h ;; H = 0x80 mov l,h ;; L = 0x80 shld X20c0 ;; Store 0x8080 at 0x20c0 ret ; X0329: mvi a,40h out 1 lda X2158 out 2 lda X21a4 out 1 call X0394 mvi a,10h sta X21c9 out 62h ret ; X0342: lda X21a2 ora a jz X034b mvi a,10h X034b: mov b,a out 0c2h lda X207c out 0c2h cpi 20h lxi h,X0970 jnz X035e lxi h,X0370 X035e: shld X2001 lda X21a8 ani 10h rz mov a,b out 0c2h ret ; X036b: lda X21a6 ani 20h X0370: jnz X0375 mvi a,1 X0375: ori 0ah out 0a2h lda X215b ori 0ch out 0a2h ret ; X0381: lda X21a2 ora a jz X0b63 jmp X0b77 ;; ;; Performs a memmove(HL,DE,B) ;; memmov: X038b: ldax d ;; Load memory at DE into accumulator mov m,a ;; Store it at HL inx h ;; HL++ inx d ;; DE++ dcr b ;; B-- jnz X038b ;; until B is zero ret ; X0394: lda X21a5 ora a mvi a,1 jnz X039f mvi a,5 X039f: jmp X1f7b ; X03a2: call X0381 call X1ddb call X036b jmp X0342 ; X03ae: call X1488 call X0587 lxi h,X2177 mov a,m ora a mvi m,0 cnz X1a20 lda X21a5 ora a jz X03ae xra a sta X2144 jmp X03ae ;; ;; Receiver interrupt handler ;; X03cc: push psw push b push h in 0 ;; Read from PUSART data ani 7fh jz X043a mov c,a lda X21a5 ora a jnz X043a in 1 ;; Read from PUSART ctrl ani 38h jz X03ed mvi c,1ah mvi a,27h ori 10h out 1 X03ed: mov a,c cpi 7fh jz X0437 lda X21a7 ani 10h mov a,c jz X0409 lxi h,X21c2 cpi 11h jz X043e cpi 13h jz X0444 X0409: lxi h,X20c0 mov c,m mov b,h stax b mov a,c inr a ani 0bfh mov m,a mov b,a lda X20c1 sub b jnz X0427 mov m,c mov a,b inr a ani 0bfh mov l,a mvi m,1ah jmp X0431 ; X0427: jp X042c adi 40h X042c: cpi 20h jnz X0437 X0431: lxi b,X0113 call X0f7e X0437: call X0e47 X043a: pop h pop b pop psw ret ;; ;; End of keyboard interrupt handler ;; X043e: mvi a,0feh ana m jmp X0447 ; X0444: mvi a,1 ora m X0447: mov m,a jmp X0437 ; X044b: db 30h dad h lxi sp,X3221 mov b,b inx sp inx h inr m inr h dcr m dcr h mvi m,5eh stc mvi h,38h lhld X2839 dcr l mov e,a dcr a dcx h mov h,b mov a,m mov e,e mov a,e mov e,l mov a,l dcx sp lda X3f2f daa shld X3c2c mvi l,3eh mov e,h mov a,h db 20h X0476: KBTab: db 20h, 7fh, 7fh, 7fh, 00h, 'p', 'o', 'y', 't', 'w', 'q' db 0c3h, 00h, 00h, 00h, ']', '[', 'i', 'u', 'r', 'e', '1' db 0c4h, 00h, 0c2h, 081h, '`', '-', '9', '7', '4', '3', 1bh db 0c1h, 0d2h, 0d0h, 08h, '=', '0', '8', '6', '5', '2', 09h db 0b7h, 0d3h, 0d1h, 0b0h, 0ah, '\', 'l', 'k', 'g', 'f', 'a' db 0b8h, 8dh, 0b2h, 0b1h, 00h, 27h, 3bh, 'j', 'h', 'd', 's' db 0aeh, 0ach, 0b5h, 0b4h, 0dh, '.', ',', 'n', 'b', 'x', 82h db 0b9h, 0b3h, 0b6h, 0adh, 00h, '/', 'm', ' ', 'v', 'c', 'z' rst 7 ;; ;; Vertical interrupt handler ;; X04cf: push psw push h push d call X104e push b mvi a,9 out 0a2h ei lda X2065 ora a jnz X050b lxi h,X2051 ora m jz X053e mvi a,1 sta X2065 ora m mvi m,0 mvi a,1 sta X205b lda X2156 jp X0505 mvi a,99h sta X205b lda X2155 dcr a X0505: call X122f sta X207a X050b: lxi b,X205b ldax b lxi h,X205a add m daa ani 0fh mov m,a mov d,a ani 3 out 0a2h mov a,d rar ana a rar ori 4 out 0a2h mov a,d ora a jnz X053e sta X2065 ldax b ora a lda X2156 jm X0538 lda X2155 dcr a X0538: call X11ce sta X207a X053e: lxi h,X2078 mov a,m ora a jz X054f dcr m ani 4 rrc rrc rrc sta X2146 X054f: lxi h,X212c mov a,m dcr a jnz X0569 mvi m,35h mvi a,8 out 0a2h lxi h,X21cb mov a,m ora a jz X056a out 0a2h xri 1 X0569: mov m,a X056a: mvi a,40h sta X2148 lxi h,X207f inr m lda X21a3 out 42h lda X2158 out 2 lda X21c9 out 62h pop b pop d pop h pop psw ret ; X0587: lda X21a5 lxi h,X207b ora m rnz call X0675 rz X0593: mov b,a lda X207b ora a mov a,b jnz X05a9 lda X2079 rlc mov a,b jc X05a9 cpi 20h jc X08b2 X05a9: lhld X2140 pchl ; X05ad: cpi 1bh jnz X05cc lxi h,X05b8 jmp X0a18 ; X05b8: cpi 32h jnz X05c5 mvi a,1 sta X2079 jmp X0a15 ; X05c5: mov b,a mvi a,1bh call X05d2 mov a,b X05cc: call X05d2 jmp X0c62 ; X05d2: mov c,a X05d3: push b call X1488 pop b in 42h ani 4 jnz X05d3 mov a,c out 0e2h ret ; X05e3: call X0c46 X05e6: push psw cpi 7fh jz X0673 push h push d push b mov c,a lxi h,X20fc mov d,m inx h mov a,d add l mov l,a mov a,d sui 2 jp X05ff mov a,d X05ff: sta X20fc mov d,m lda X20fa ora d mov b,a mov a,d rlc mov a,c jnc X0616 sui 5fh cpi 20h jnc X0616 mov c,a X0616: mov a,d ani 40h mov a,c jz X0624 cpi 23h jnz X0624 mvi c,1eh X0624: lda X20fb ora c mov c,a lda X2142 ora a jz X0641 lxi h,X20f8 lda X2153 cmp m jnz X0641 mvi m,0 push b call X0955 pop b X0641: lhld X20f6 mov m,c mov a,h adi 10h mov h,a mov m,b mov a,b sta X20f5 lxi h,X20f4 mov m,c lxi h,X20f8 lda X2153 cmp m jnz X0668 mov a,c sta X20f4 lda X21a8 ani 40h jmp X066d ; X0668: inr m call X1636 xra a X066d: sta X2142 X0670: pop b pop d pop h X0673: pop psw ret ; X0675: lda X21c4 ora a jnz X0685 lxi h,X20c0 mov a,m inx h sub m jnz X0687 X0685: xra a ret ; X0687: mov l,m mvi h,20h mov d,m lxi h,X20c1 mov a,m inr a ani 0bfh ori 80h mov m,a dcx h sub m jp X069c adi 40h X069c: cpi 30h jnz X06a7 lxi b,X0111 call X0f7e X06a7: mov a,d ora a ret ; X06aa: lda X2068 mov e,a ani 80h rz lxi h,X0841 push h mov a,e ani 7 cpi 4 jm X06c2 xra a sta X2067 ret ; X06c2: mov d,a mvi c,0 mvi b,4 lxi h,X206e X06ca: mov a,m ora a jz X06e8 push h push b mvi b,3 lxi h,X206a X06d6: cmp m jz X06df inx h dcr b jp X06d6 X06df: pop b pop h jz X06e7 mvi m,0 dcr c X06e7: inr c X06e8: inx h dcr b jnz X06ca mov a,e ani 8 rnz ora d jnz X06fb mvi a,0e1h sta X2072 ret ; X06fb: lxi h,X0747 push h lda X2072 inr a jz X0709 sta X2072 X0709: lda X21a6 ani 40h rz mov a,e ani 10h rnz lda X2150 lxi h,X085f mvi b,5 X071b: cmp m rz inx h dcr b jnz X071b lxi h,X2073 dcr m rnz mvi m,2 lda X2072 cpi 0ffh rnz mov a,c cpi 1 rnz mvi b,4 lxi h,X206e X0738: mov a,m ora a jnz X0743 inx h dcr b jnz X0738 ret ; X0743: pop h jmp X0776 ; X0747: mov a,c cpi 4 rp lxi b,X206a X074e: lxi h,X206e X0751: mov a,m ora a jz X075b ldax b cmp m jz X0766 X075b: inx h mov a,l cpi 72h jnz X0751 ldax b jmp X076c ; X0766: inx b dcr d jnz X074e ret ; X076c: mov b,a lda X2067 cmp b mov a,b sta X2067 rnz X0776: pop h sta X2150 cpi 7bh jz X1a1a cpi 6ah jz X022c mov b,e mov e,a lda X2144 ora a jnz X0841 mov a,e ani 0f0h rrc rrc mov d,a rrc rrc add d mov d,a mov a,e sub d lxi h,X0476 mov e,a mvi d,0 dad d mov c,m mov a,c ora a jm X0131 cpi 20h jc X07ff mov a,b ani 70h jz X07ff mov a,c cpi 7bh jnc X07c2 cpi 61h jc X07c2 ani 0dfh mov c,a jmp X07d7 ; X07c2: mov a,b ani 30h jz X07d7 lxi h,X044b X07cb: mov a,m cmp c jz X07d5 inx h inx h jmp X07cb ; X07d5: inx h mov c,m X07d7: mov a,b ani 10h jz X07ff mov a,c cpi 41h jc X07e8 cpi 5bh jc X07fc X07e8: cpi 3fh jz X07fc cpi 20h jz X07fc cpi 7bh jc X0841 cpi 7fh jnc X0841 X07fc: ani 9fh mov c,a X07ff: ora c push psw lda X21a7 ani 80h jz X080c sta X2154 X080c: pop psw X080d: ori 80h call X0f18 X0812: call X0853 X0815: lda X2150 mvi d,4 lxi h,X206e X081d: cmp m jz X0841 inx h dcr d jnz X081d mvi d,4 lxi h,X206e X082b: mov a,m ora a jz X0838 inx h dcr d jnz X082b jmp X0841 ; X0838: lda X2150 mov m,a mvi a,0e1h sta X2072 X0841: xra a lxi h,X2068 mov d,m mov m,a inx h mov m,d inx h mvi d,4 X084c: mov m,a inx h dcr d jnz X084c ret ; X0853: lda X21a7 ani 40h rz mvi a,80h sta X2147 ret ; X085f: mov a,e lhld X3a6a mov h,h lda X2130 sui 2 rnz mov d,a lda X2131 mov e,a X086f: mvi a,1 ana e jnz X003d X0875: mov a,d ora a cnz X08a7 push d call X17be pop d mvi a,2 ana e cnz X1f11 mvi a,8 cc X08a7 mvi a,4 ana e cnz X1f62 mvi a,10h cc X08a7 mov a,d ora a jnz X08a0 mvi a,8 ana e jnz X086f X08a0: mov a,d sta 2000h jmp X0251 ; X08a7: ora d mov d,a mvi a,8 ana e rz mvi a,80h ora d mov d,a ret ; X08b2: cpi 1bh jz X099e cpi 10h jc X08d4 mov e,a sui 18h ani 0fdh rnz mov a,e cpi 1ah jz X08cb cpi 18h rnz X08cb: call X0a15 mvi a,2 X08d0: jmp X05e6 ; ret ; X08d4: sui 5 ;; subtract 5 from A and return if negative rm lxi h,X08e5 ;; load jump table at 8e5 add a ;; double a mov e,a mvi d,0 dad d ;; hl = X08e5 + 2A mov e,m ;; load DE from (HL) little-endian inx h mov d,m xchg xra a ;; zero A pchl ;; jump to address ; X08e5: dw X0900 dw X0997 ;; immediate return dw X0938 dw X0941 dw 0df9h ;; MYSTERY ADDRESS: this isn't even in AVO!!! dw X0955 dw X0955 dw X0955 dw 094bh dw X08fb dw X08fc X08fb: inr a X08fc: sta X20fc ret ; X0900: lda X21a5 ora a rnz lhld X217b mov a,h cmp l rz lxi h,X2172 mvi a,10h ora m mov m,a ret ; lxi h,X2172 mov a,m ani 0efh mov m,a lxi h,X217b mov b,m inx h mvi c,14h lxi d,X215c X0924: mov a,m cmp b jz X0930 stax d inx d inx h dcr c jnz X0924 X0930: dcx d ldax d ori 80h stax d jmp X0ef3 ; X0938: lxi h,X2078 mov a,m adi 8 rc mov m,a ret ; X0941: lxi h,X20f8 mov a,m ora a rz dcr m jmp X1636 ; X094b: xra a sta X20f8 jmp X1636 ; call X094b X0955: lda X21a8 ani 20h cnz X094b lxi h,X20f9 mov d,m lda X2156 cmp d jz X0973 call X11bf mov a,b cmp d rz inr d mov m,d X0970: jmp X1636 ; X0973: lda X21a6 ani 80h jz X0998 mvi c,1 call X108e mvi a,0ffh sta X21c3 inr m call X0fe6 X0989: lda X21c3 ora a jnz X0989 sta X20f4 dcr a sta X20f5 X0997: ret ; X0998: call X101a jmp X1012 ; X099e: xra a sta X207d sta X21b8 lxi h,X09ab jmp X0a18 ; X09ab: cpi 30h jnc X09bd lxi h,X207d mov c,a mov a,m ora a jz X09bb mvi c,0ffh X09bb: mov m,c ret ; X09bd: sta X207e lxi h,X0a15 push h lda X207d ora a jnz X09dc lda X21a7 ani 20h lxi h,X0a50 jnz X09d9 lxi h,X0a1c X09d9: jmp X09f7 ; X09dc: mov b,a lda X21a7 ani 20h mov a,b rz cpi 28h lxi d,X20fd jz X0c32 cpi 29h jz X0c31 cpi 23h lxi h,X0a7b rnz X09f7: lxi d,X21b9 xra a stax d lda X207e X09ff: mov c,a X0a00: xra a add m rz inx h cmp c jz X0a0d inx h inx h jmp X0a00 ; X0a0d: stax d mov a,m inx h mov h,m mov l,a xra a pchl ; X0a14: pop h X0a15: lxi h,X05e6 ;; HL = 0x05e6 X0a18: shld X2140 ;; 0x2140 = 0xe605 ret ;; ;; This is a table of some sort. ;; X0a1c: mov b,c sbb e ldax b mov b,d sbb e ldax b mov b,e sbb e ldax b mov b,h sbb e ldax b mov b,m ldax b inr c mov b,a rrc inr c mov c,b sub m ldax b mov c,c ana e dcx b mov c,d sbb e ldax b mov c,e sbb e ldax b mov e,c lxi d,X5a0b adi 0ch dcr a rst 3 dcx b mvi a,0e5h dcx b lxi sp,X0c57 inr a xchg dcx b mov e,l mov h,b dcr c nop X0a50: mov h,e nop nop mov b,l mov d,d dad b mov c,l ana e dcx b lxi sp,X0c57 mov e,e adc m ldax b mov c,b rst 3 dcr c mov b,h mov d,l dad b stc mov l,b inr c db 38h mov m,c inr c dcr a rst 3 dcx b mvi a,0e5h dcx b mov e,d adi 0ch mov c,m mov b,m inr c mov c,a mov b,m inr c nop X0a7b: inx sp xra b stax d inr m xra h stax d dcr m mov c,d inx d mvi m,0a4h stax d stc mov h,b dcr c db 38h ana a dcr c nop lxi h,X16c2 shld X2140 pop h ret ; mvi a,48h sta X207e lxi h,X0000 shld X2130 pop h X0aa2: lxi h,X0a15 push h lda X207d ora a rnz lxi h,X0ad9 call X09f7 lda X21b9 ora a rnz lxi h,X2130 lda X214b ora a mov e,a jnz X0ac2 inr e X0ac2: mov a,m push h push d lxi h,X0af5 mov b,a call X09f7 pop d pop h lda X21b9 ora a rz inx h dcr e jnz X0ac2 ret ; X0ad9: mov b,h mvi e,18h mov b,d rlc db 18h mov b,e dcr d db 18h mov c,b mov d,e db 18h mov b,c cpi 17h mov m,d ana m dcr d mov h,m mov d,e db 18h mov a,b rst 3 stax d mov a,c mov h,h db 8 nop X0af5: mov h,e pop b inr c mov m,c mvi d,0ch mov l,m inx b dcr c mov c,d mov b,c dcr d mov c,e cm X6c14 db 0edh inx d mov l,l mov a,a inr c mov l,b jp X6713 rst 1 dcr c nop lxi h,X0b19 shld X2140 pop h ret ; X0b19: mov b,a cpi 20h jc X08b2 cpi 1bh lxi h,X2151 jnz X0b2e lxi h,X09ab shld X2140 ret ; X0b2e: mov a,m ora a jnz X0b42 mvi m,1 mov a,b sui 20h sta X2152 lxi h,X0b19 shld X2140 ret ; X0b42: mvi m,0 mov a,b sui 20h cpi 50h jnc X0b4f sta X20f8 X0b4f: call X11bf lda X2152 inr b cmp b jnc X0b5d sta X20f9 X0b5d: call X0a15 jmp X1636 ; X0b63: xra a sta X21a2 call X10ad mvi c,50h call X10f9 call X114c mvi c,50h jmp X0b89 ; X0b77: mvi a,1 sta X21a2 call X10ad mvi c,84h call X10f9 call X114c mvi c,84h X0b89: xra a sta X2155 call X11bf mov a,b sta X2156 mov a,c sta X2050 call X0342 call X1848 mvi a,1 jmp X0faa ; lxi h,X20f9 lda X2155 mov b,a mov a,m cmp b jz X0bb8 ora a rz lxi h,X20f9 dcr m jmp X1636 ; X0bb8: lda X21a6 ani 80h jz X0bd9 mvi c,1 call X108e mvi a,0ffh sta X21c3 dcr m call X0feb X0bce: lda X21c3 ora a jnz X0bce sta X20f4 ret ; X0bd9: call X102d jmp X1012 ; lxi h,X2178 mvi m,1 ret ; lxi h,X2178 mvi m,0 ret ; lxi h,X21a7 mov a,m ori 20h mov m,a X0bf2: lda X21a8 ani 80h mvi h,8 jz X0bfe mvi h,48h X0bfe: mov l,h shld X20fd shld X20ff xra a sta X20fc ret ; mvi h,88h jmp X0c11 ; mvi h,8 X0c11: mov l,h shld X20fd ret ; lxi h,X2145 mov a,b ora a jnz X0c23 mov a,m ani 0f0h mov m,a ret ; X0c23: sui 5 rp mov b,a xra a stc X0c29: ral inr b jnz X0c29 ora m mov m,a ret ; X0c31: inx d X0c32: lda X207e mov b,a lxi h,X0c4a X0c39: inx h inx h mov a,m ora a rz cmp b jnz X0c39 inx h mov a,m stax d ret ; X0c46: lxi h,X20fc inr m X0c4a: inr m ret ; mov b,c mov c,b mov b,d db 8 db 30h adc b lxi sp,X3200 add b nop X0c57: lxi h,X2079 mov a,m ora a jz X0a14 mvi m,81h pop h X0c62: lxi h,X05ad jmp X0a18 ; lxi h,X2102 lxi d,X20f8 jmp X0c77 ; lxi h,X20f8 lxi d,X2102 X0c77: mvi b,0bh call memmov jmp X1636 ; lxi h,X0c8a mov a,b ora a jz X0c97 jmp X09ff ; X0c8a: lxi b,X0ca2 inr b ana a inr c dcr b ora e inr c rlc cmp e inr c nop X0c97: sta X20fb lxi h,X20fa mov a,m ori 0f7h mov m,a ret ; X0ca2: mvi a,0fbh jmp X0cb5 ; lda X21c8 ora a jnz X0cbb mvi a,0fdh jmp X0cb5 ; mvi a,0feh X0cb5: lxi h,X20fa ana m mov m,a ret ; X0cbb: mvi a,80h sta X20fb ret ; lda X2130 ora a rnz lxi h,X2172 mov a,m ori 4 mov m,a ret ; mvi a,0fbh call X0dbf lda X21a7 ani 20h jnz X0ce3 mvi m,0dah dcx h mvi m,2fh jmp X0ef3 ; X0ce3: mvi m,3fh inx h mvi a,31h call X0db9 in 42h mov b,a cma ani 6 mov c,a mov a,b ani 8 jz X0cf9 inr c X0cf9: mov a,c ori 30h mov m,a inx h mvi m,0e3h jmp X0ef3 ; lda X21b8 ora a rnz mov a,b lxi h,X2172 cpi 6 jz X0d32 cpi 5 rnz mov a,m ori 8 mov m,a ret ; mvi a,0f7h call X0dbf mvi b,3 lda X21bd ora a mov a,b jnz X0d29 xra a X0d29: ori 30h mov m,a inx h mvi m,0eeh X0d2f: jmp X0ef3 ; X0d32: mov a,m ori 1 mov m,a ret ; mvi a,0feh call X0dbf lda X20f9 mov b,a lda X2101 ora a jz X0d4a lda X2155 X0d4a: mov c,a mov a,b sub c inr a call X0d7a call X0dbb lda X20f8 inr a call X0d7a mvi m,0d2h jmp X0ef3 ; in 42h ani 4 rnz mvi c,81h call X108e mvi a,0ffh out 0e2h nop X0d6f: call X1488 in 42h ani 4 jnz X0d6f ret ; X0d7a: mov e,a mvi d,30h mvi c,64h call X0d99 jz X0d88 mov m,a inx h dcr d X0d88: mvi c,0ah call X0d99 jz X0d93 dcr d mov m,a inx h X0d93: mov a,e ori 30h mov m,a inx h ret ; X0d99: mov a,e mvi b,30h X0d9c: inr b sub c jp X0d9c add c dcr b mov e,a mov a,b cmp d ret ; mvi a,45h sta X21c7 call X0381 mvi a,45h sta X20f4 xra a sta X21c7 ret ; X0db9: mov m,a inx h X0dbb: mvi m,3bh inx h ret ; X0dbf: lxi h,X2172 ana m mov m,a lxi h,X215c mvi m,1bh inx h mvi m,5bh inx h ret ; mov b,d mov a,b ora a jnz X0dd8 call X0de5 ret ; X0dd8: cpi 3 rnz call X0dec ret ; call X0e23 ora m mov m,a ret ; X0de5: call X0e23 cma ana m mov m,a ret ; X0dec: lxi h,X2191 X0def: xra a mov m,a inx h mov a,l cpi 0a2h jnz X0def ret ; X0df9: call X0e23 X0dfc: inr c ora a rar jc X0e0b X0e02: mov d,a ana m mov a,d jz X0dfc jmp X0e15 ; X0e0b: inx h mov a,l cpi 0a2h mvi a,80h jnz X0e02 dcr c X0e15: lda X2153 cmp c jc X0e1d mov a,c X0e1d: sta X20f8 jmp X1636 ; X0e23: lda X20f8 mov c,a X0e27: mov d,a lxi h,X2191 X0e2b: rrc rrc rrc ani 1fh add l mov l,a mov a,d ani 7 mov d,a mvi a,80h X0e38: dcr d rm rrc jmp X0e38 ; X0e3e: lda X21a5 lxi h,X207b ora m mov b,a rnz X0e47: in 42h ani 1 rz lxi h,X21c1 mov a,m ora a mvi m,0 dcx h rz mov a,m out 0 ret ; X0e59: di call X0e3e ei mov a,b ora a jnz X0e6d in 42h ani 1 rz lda X21c2 ora a rnz X0e6d: lxi h,X2173 mov a,m ora a jz X0e79 lhld X2174 pchl ; X0e79: lda X2172 ora a rz mvi e,0 X0e80: rar jc X0e89 inr e inr e jmp X0e80 ; X0e89: mvi d,0 lxi h,X0e94 dad d mov a,m inx h mov h,m mov l,a pchl ; X0e94: stc dcr c rp stax d aci 0ch dad d dcr c inx d dad b ana b mvi c,21h mov e,h db 20h mov b,m mov d,h mov e,l inx d mvi c,8 X0ea9: ldax d mov m,a inx h inx d dcr c jnz X0ea9 lxi h,X2143 dcr m mov a,m mov c,a jnz X0ec1 lxi h,X2172 mov a,m ani 0dfh mov m,a X0ec1: lda X21a5 ora a jnz X0ecf mov a,c cpi 5 jnc X0ed2 xra a X0ecf: sta X2144 X0ed2: mov a,b ani 80h ral cmc rar sta X2173 lxi h,X0ea0 shld X2174 X0ee1: mov a,b ani 7fh mov b,a lda X21a5 lxi h,X207b ora m mov a,b jnz X0593 out 0 ret ; X0ef3: lxi h,X0f01 shld X2174 xra a sta X2171 inr a sta X2173 X0f01: lxi h,X2171 mov a,m inr m lxi h,X215c add l mov l,a mov b,m mov a,b ora a jp X0ee1 xra a sta X2173 jmp X0ee1 ; X0f18: push h push d mov d,a lda X21a7 ani 10h jz X0f2b mov a,d sui 91h ani 0fdh jz X0f61 X0f2b: lxi h,X2172 mov a,m ori 20h mov m,a X0f32: lxi h,X2143 mov a,m inr m lxi h,X205c mov e,a add l mov l,a mov m,d mvi a,8dh cmp d jnz X0f4e lda X21a8 ani 20h mvi d,8ah jnz X0f32 X0f4e: lda X21a5 ora a jnz X0f5b mvi a,5 cmp e mvi a,0 rar X0f5b: sta X2144 X0f5e: pop d pop h ret ; X0f61: mov a,d ani 7fh mov d,a lxi h,X21c1 mov a,m ora a jnz X0f75 dcx h mov a,m cmp d jnz X0f75 inx h mov m,d X0f75: mov c,d mvi b,2 call X0f7e jmp X0f5e ; X0f7e: lda X21a7 ani 10h rz lda X21a5 ora a rnz mov a,c lxi h,X21bf cpi 13h mov a,b jz X0f9e cma ana m mov m,a push psw ani 2 sta X21c4 pop psw rnz X0f9e: ora m mov m,a mov a,c lxi h,X21c0 cmp m rz mov m,a inx h mov m,a ret ; X0faa: lxi h,X207f add m X0fae: cmp m rz push h push psw X0fb2: lda X207b ora a cz X1488 pop psw pop h jmp X0fae ; X0fbe: lhld X204e mov a,h ori 0f0h mov h,a shld X204e X0fc8: lda X2050 X0fcb: mov b,a mov a,h ani 0fh ori 20h mov h,a adi 10h mov d,a mov e,l mvi a,0ffh X0fd8: mvi m,0 stax d inx d inx h dcr b jnz X0fd8 inr a sta X21c3 ret ; X0fe6: mvi b,0ffh jmp X0fed ; X0feb: mvi b,1 X0fed: lxi h,X2155 mov d,m inx h mov e,m mov a,b ora a mov a,d jp X0ffa mov a,e X0ffa: call X13e6 mov a,e sub d X0fff: mov c,a X1000: lda X212b X1003: mov d,m mov m,a mov a,b add l mov l,a dcr c mov a,d jp X1003 ani 7fh sta X212b X1012: mvi a,0ffh sta X210e jmp X1636 ; X101a: call X1191 lda X2156 call X122f call X0fe6 lda X2155 dcr a jmp X103e ; X102d: call X1191 lda X2155 dcr a call X122f call X0feb lda X2156 dcr a X103e: call X11ce ei sta X207a lxi h,X2156 mov a,m dcx h sub m cpi 17h rnz X104e: lxi h,X207a mov a,m mvi m,0 ora a rz lhld X2056 xchg lhld X2058 mov m,d inx h mov m,e lhld X2179 xchg lhld X2075 mov m,d inx h mov m,e X106a: lxi h,X2056 shld X2058 shld X2075 ret ; X1074: call X13e3 ani 80h sta X2157 call X138d shld X214e ret ;; ;; memset: Set memory from HL to HL+DE-1 to value B ;; memset: X1083: mov m,b ;; M <- B inx h ;; HL++ dcx d ;; DE-- mov a,d ;; ora e ;; A = D | E jnz X1083 ;; repeat if A != 0 ret ; mvi c,0 X108e: lxi h,X2051 di lda X2065 ora m ei jz X10a7 mov a,c rar push b cc X1488 call X1493 pop b jmp X108e ; X10a7: mov a,c ral rnc jmp X1191 ; X10ad: lxi h,X0670 shld X2004 xra a sta X2051 sta X2065 sta X205a out 0a2h mvi a,4 out 0a2h call X106a ei mvi a,1 call X0faa lxi h,X22d0 mov a,h adi 10h mov d,a mov e,l lxi b,X0d2f X10d7: lda X21c7 mov m,a inx h mvi a,0ffh stax d inx d dcx b mov a,b ora c jnz X10d7 lda X21c7 sta X20f4 xra a sta X20f9 sta X20f8 mvi a,0ffh sta X20f5 ret ; X10f9: xra a sta X2051 X10fd: lda X2065 ora a jnz X10fd lxi h,X22d0 mvi b,0 dad b call X11bf inr c call X1136 push h mvi b,1 call X1136 pop h mvi m,7fh inx h shld X2054 mvi m,70h inx h mvi m,6 mov a,c call X13de mvi m,7fh dcr c mvi a,3 sta X2002 lxi h,Xd0f2 shld X2004 ret ; X1136: mvi m,7fh inx h mov d,h mov e,l inx d inx d mov a,d ori 0f0h mov m,a inx h mov m,e mov a,c call X13de dcr b jnz X1136 ret ; X114c: lxi h,X20c2 inr c inr c inr c lxi d,X22d0 mvi b,0 mvi a,19h X1159: mov m,e inx h mov m,d inx h xchg dad b xchg dcr a jnz X1159 sta X2155 call X11bf mov a,b sta X2156 inr a sta X212b lhld X20f2 mvi a,17h cmp b jz X117e lhld X20de X117e: mov a,h ori 0f0h mov h,a shld X204e lxi h,X2113 xra a X1189: mov m,a inr l inr a dcr b jp X1189 ret ; X1191: di lda X207a ora a jz X11a0 X1199: ei call X1488 jmp X1191 ; X11a0: lda X2065 ora a jnz X11b0 lda X2051 ora a ei rz jmp X1199 ; X11b0: lda X205b lxi h,X205a add m daa ani 0fh jz X1199 ei ret ; X11bf: push h mvi b,17h lda X21a2 lxi h,X21c8 ana m pop h rz mvi b,0dh ret ; X11ce: ora a jp X11e8 lxi h,X2004 push h mov a,m inx h mov l,m ori 0f0h mov h,a shld X204e call X1290 pop h mov b,d mov c,e jmp X120a ; X11e8: call X127f call X1290 push h push d xchg call X1290 mov b,d mov c,e pop d mov a,d ori 0f0h mov h,a mov l,e shld X204e pop h mov a,h ori 9fh inr a jnz X1211 call X1299 X120a: di shld X2075 jmp X1228 ; X1211: call X129d lda X2050 rrc mov d,a call X13de inx h di shld X2075 mov a,d call X13de mov m,b inx h mov m,c X1228: mov h,b mov l,c shld X2179 ei ret ; X122f: push psw call X0fbe pop psw ora a lxi h,X2004 jm X1248 call X127f mov a,h ori 9fh inr a jnz X1252 call X1299 X1248: di shld X2058 mov b,m inx h mov c,m jmp X1271 ; X1252: call X129d lda X2050 rrc mov b,a call X13de inx h di shld X2058 mov a,b mov b,m inx h mov c,m call X13de xchg lhld X204e xchg mov m,e dcx h mov m,d X1271: lhld X204e shld X2056 call X1299 mov m,b inx h mov m,c ei ret ; X127f: inr a mov b,a lxi h,X2004 X1284: mov a,m inx h mov l,m mov h,a dcr b rz call X1299 jmp X1284 ; X1290: push h call X1299 mov d,m inx h mov e,m pop h ret ; X1299: call X13db inx h X129d: mov a,h ani 0fh ori 20h mov h,a ret ; call X12b0 mov d,b call X12b0 db 30h call X12b0 db 10h X12b0: call X1191 lxi h,X2113 lda X20f9 add l mov l,a mov a,m ori 80h mov m,a call X138d call X13c3 pop h mov a,m call X1395 lda X2153 lxi h,X20f8 ora a rar cmp m jnc X1012 lxi h,X20f4 shld X20f6 jmp X1012 ; lda X2130 cpi 2 rnc sta X2176 X12e8: lxi h,X2172 mov a,m ori 2 mov m,a ret ; mvi a,0fdh call X0dbf lda X2176 ori 32h call X0db9 lda X21a9 push psw ani 0c0h ori 18h add a inr a jp X1310 rar rlc ori 4 ani 7fh X1310: call X0db9 mvi b,31h pop psw ani 20h jnz X131c inr b X131c: mov a,b call X0db9 lda X21ab rrc call X0d7a call X0dbb lda X21ac rrc call X0d7a call X0dbb mvi a,31h call X0db9 lda X21aa ani 0f0h rrc rrc rrc rrc call X0d7a mvi m,0f8h jmp X0ef3 ; X134a: lxi h,X2157 mov a,m ora a rz call X1191 lxi h,X2113 lda X20f9 add l mov l,a mov a,m ani 7fh mov m,a call X138d lda X2050 rrc mov b,a call X13de xra a X136b: mov m,a inx h dcr b jnz X136b mvi a,0f0h sta X210e call X1395 xra a sta X2157 jmp X1636 ; X1380: lda X20f9 call X13e6 X1386: lxi h,X20c2 add a add l mov l,a ret ; X138d: call X1380 X1390: mov a,m inx h mov h,m mov l,a ret ; X1395: ani 70h mov b,a lda X20f9 dcr a lxi h,X2004 jm X13bd call X13e6 mov d,a ani 7fh call X1386 call X1390 lda X2050 rrc mov e,a inx h inr d dcr d mvi d,0 dad d cm X13bd dad d X13bd: mov a,m ani 8fh ora b mov m,a ret ; X13c3: lda X2050 rrc mov d,h mov e,l call X13de xchg call X13db mvi b,3 X13d2: mov a,m stax d inx d inx h dcr b jnz X13d2 ret ; X13db: lda X2050 X13de: add l mov l,a rnc inr h ret ; X13e3: lda X20f9 X13e6: lxi h,X2113 add l mov l,a mov a,m ret ; mvi c,0 jmp X13f4 ; mvi c,0ffh X13f4: lda X21b8 ora a lxi h,X1426 jz X1404 cpi 3fh rnz lxi h,X140a X1404: mov a,b mov b,c call X09ff ret ; X140a: lxi b,X142a stax b cma inr d inx b mov d,a inr d inr b mov b,a inr d dcr b mov c,m inr d mvi b,3fh inr d rlc mov h,m inr d db 8 mov e,a inr d dad b mov l,l inr d nop X1426: inr d db 38h inr d nop X142a: lxi h,X21bc mov m,b ret ; call X1476 ana a lxi h,Xc320 jp Xcd0b hlt ; inr d xra b lxi h,Xc920 lxi h,X2101 mov m,b call X1848 ret ; call X1476 ana m lxi h,Xc980 call X1476 ana m lxi h,Xc320 mov l,e inx b lxi h,X21a2 mov m,b call X0381 ret ; call X1476 ana m lxi h,Xc940 call X1476 xra b lxi h,Xc940 call X1476 xra b lxi h,Xc310 mov b,d inx b X1476: pop h mov e,m inx h mov d,m inx h mov a,m inx h xchg mov c,a cma ana m mov m,a mov a,b ana c ora m mov m,a xchg pchl ; X1488: call X1493 ani 10h cz X06aa jmp X0e59 ;; ;; SUBROUTINE A ;; X1493: in 42h ;; Read flags buffer ani 80h ;; check if transmit buffer is empty rz ;; if zero, return lxi h,X2144 ;; HL = 0x2144 mov a,m ;; Load from 2144 ora a ;; Check if zero jz X14a2 ;; mvi a,10h ;; If not, A = 10 (else A is zero) X14a2: lxi h,X21a5 ;; ora m ;; or bits from 0x21a5 lxi h,X2145 ;; ora m ;; or bits from 0x2145 inx h ;; ora m ;; ... and 0x2146 inx h ;; ora m ;; ... and 0x2147 mvi m,0 ;; zero 0x2147 inx h ;; ora m ;; ... and 0x2148 mvi m,0 ;; zero 0x2148 out 82h ;; Write to keyboard buffer lxi h,X2074 ;; inr m ;; Increment what's at 0x2074 lda X2077 ;; load what's at 0x2077 ora a ;; return if it's not zero rnz ;; lda X2065 ;; A = 0x2065 lxi h,X2051 ;; ora m ;; return if [0x2065] | [0x2051] != 0 rnz lhld X212d dcx h mov a,h ora l jz X14d4 shld X212d ret ; X14d4: lda X21ba xri 0ffh sta X21ba lxi h,X0212 jnz X14e5 lxi h,X0109 X14e5: shld X212d lhld X20f6 mov b,m lda X2159 xra b mov m,a lxi d,X1000 dad d lda X215a xra m mov m,a ret ; mov m,h mov a,b ora a jz X1515 dcr a jz X150a dcr a rnz call X1515 X150a: lda X20f8 mov b,a inr b lhld X214e jmp X1529 ; X1515: lda X20f8 mov b,a lda X2157 ora a lda X2050 jz X1524 rrc X1524: sub b mov b,a lhld X20f6 X1529: mov a,h adi 10h mov d,a mov e,l mvi a,0ffh X1530: stax d mvi m,0 inx h inx d dcr b jnz X1530 sta X20f5 xra a sta X20f4 ret ; mov a,b ora a jz X156a dcr a jz X1555 dcr a rnz call X1555 call X156a jmp X134a ; X1555: lxi h,X20f9 mov a,m push psw mov b,a xra a mov m,a mvi c,0ffh call X1586 pop psw mov m,a call X1074 jmp X150a ; X156a: lda X20f8 ora a cz X134a call X1515 lxi h,X20f9 mov a,m push psw mov c,a mvi a,17h sub c mov b,a call X1586 pop psw mov m,a jmp X1074 ; X1586: dcr b rm inr c mov m,c push b push h call X13e3 ani 7fh mov m,a mvi a,70h call X1395 call X1074 lda X2050 mov b,a call X1529 pop h pop b jmp X1586 ; mvi c,81h call X108e call X11bf lda X2130 ora a jz X15b6 dcr a X15b6: mov d,a lda X2131 ora a jnz X15c0 mov a,b inr a X15c0: dcr a mov e,a mov a,b cmp e rc mov a,d cmp e rnc lxi h,X2155 mov m,d inx h mov m,e mov c,e mov b,d mov a,c sub b inr a mov e,a lxi h,X2004 mov a,b ora a jz X15e8 mov d,b X15dd: mov a,m ani 7fh mov m,a call X162b dcr d jnz X15dd X15e8: mov a,m ori 80h mov m,a call X162b dcr e jnz X15e8 mvi a,17h sub c jz X1605 mov d,a X15fa: mov a,m ani 7fh mov m,a call X162b dcr d jnz X15fa X1605: mov a,b sta X2155 mov a,c sta X2156 lxi h,X2113 mvi c,18h X1612: mov a,m ora a jp X1623 push h call X1386 mov a,m inx h mov h,m mov l,a call X13c3 pop h X1623: inx h dcr c jnz X1612 jmp X1848 ; X162b: inx h mov l,m ani 0fh ori 20h mov h,a inx h jmp X13db ; X1636: lxi h,X000d shld X212d xra a sta X21ba lhld X20f6 lda X20f4 mov b,a mov m,a mov a,h adi 10h mov h,a lda X20f5 mov m,a lda X2050 dcr a mov e,a lda X207b ora a jnz X167b lda X20f9 lxi h,X210e cmp m jz X167f mov m,a call X1074 xra a sta X2154 lxi h,X2157 mov a,m ora a jz X167b mov a,e dcr a ora a rar mov e,a X167b: mov a,e sta X2153 X167f: lxi h,X2153 lxi d,X20f8 ldax d cmp m jc X168c mov a,m stax d X168c: lda X21bb adi 8 sub m jnz X16a1 inx h ora m jz X16a1 call X0938 xra a sta X2154 X16a1: lda X20f8 sta X21bb lhld X214e call X13de shld X20f6 mov a,m sta X20f4 mov b,a mov a,h adi 10h mov h,a mov a,m sta X20f5 lhld X20f6 mov m,b ret ; X16c2: mov b,a lxi h,X16f1 shld X2140 xra a sta X212f sta X214b sta X207d lxi h,X2130 mvi c,0fh xra a X16d9: mov m,a inx h dcr c jnz X16d9 lxi h,X21b8 mvi m,0 mov a,b cpi 40h jnc X16f2 cpi 3ch jc X16f2 mov m,a ret ; X16f1: mov b,a X16f2: mov a,b cpi 3ah jnc X1717 sui 30h jm X1717 mov c,a lxi h,X212f mov a,m cpi 1ah jnc X1713 rlc mov b,a rlc rlc add b jc X1713 add c jnc X1715 X1713: mvi a,0ffh X1715: mov m,a ret ; X1717: lxi d,X2130 push psw lxi h,X214b mov c,m mvi b,0 xchg dad b lxi b,X212f ldax b mov m,a xra a stax b ldax d cpi 0fh jz X1732 inr a stax d X1732: pop psw X1733: mov b,a cpi 3bh rz ani 0c0h mov a,b jz X1743 sta X207e jmp X0aa2 ; X1743: lxi h,X207d add m jnc X174c mvi a,0ffh X174c: mov m,a lxi h,X1733 shld X2140 ret ; X1754: mvi d,0 mvi b,1 jmp X1762 ;; ;; Third initialization call? ;; X175b: call X02c0 ;; Initialize start of screen RAM and wipe attribute RAM to 0xff mvi b,0ah ;; B = 0x0a mvi d,1 ;; D = 1 X1762: push b ;; push B, D push d ;; call X17be ;; Display wait message pop d ;; pop D di ;; disable interrupts(???) lxi h,X217b ;; HL = 0x217b mvi e,33h ;; E = 0x33 mvi c,1 ;; C = 1 xra a ;; A = 0 X1771: sta X21ae ;; 0x21ae = A mov a,c ;; A = C sta X21ad ;; 0x21ad = A push d ;; push D,H push h ;; mov a,d ;; A=D ora a ;; or A mov a,m ;; load A from HL sta X21af ;; store it in 0x21af cz X18ae ;; if A is 0 call X18ae call X18a3 ;; call X18a3 pop h ;; pop H,D pop d lda X21af dcr e jz X179e mov m,a lda X21ad rlc xra m mov c,a inx h lda X21ae inr a jmp X1771 ; X179e: cmp m pop b mvi c,0 jz X17ac dcr b jnz X1762 call X17d0 X17ac: mov a,c ora a push psw mvi c,40h mvi a,63h call X192b lxi h,Xd0f2 shld X2004 pop psw ret ;; ;; Show wait message ;; X17be: lxi d,X17ec ;; DE = 0x17ec mvi b,7 ;; B = 7 lxi h,X21cc ;; HL = 0x21cc call memmov ;; Initialize 0x21cc to Wait message lxi h,Xcc71 ;; HL = 0xcc71 shld X2004 ;; retarget screen ram to display wait message ret ; X17d0: lxi h,X217b mvi b,27h X17d5: mvi m,80h inx h dcr b jnz X17d5 lxi d,X17f3 ;; DE = 0x17f3 mvi b,0bh ;; B = 11 call memmov ;; store mvi c,1 mvi a,30h sta X2078 ret X17ec: db 'Wait' db 07fh,070h,06h X17f3: db 0,8,06eh,020h db 0d0h,050h,0,020h db 0,0e0h,0e0h X17fe: lda X2155 lxi b,X00ff jmp X180f ; call X11bf lda X2156 mvi c,1 X180f: lxi h,X20f9 jmp X1825 ; X1815: lda X2153 lxi b,Xff01 jmp X1822 ; X181e: xra a lxi b,X00ff X1822: lxi h,X20f8 X1825: mov d,a lda X21b8 ora a jnz X0a15 lda X2130 ora a jnz X1835 inr a X1835: mov e,a mov a,m X1837: cmp d jz X1844 cmp b jz X1844 add c dcr e jnz X1837 X1844: mov m,a jmp X1636 ; X1848: lxi h,X0000 shld X2130 mvi a,0ffh sta X210e lda X2101 mov c,a lxi h,X2130 mov a,m ora a jz X1860 dcr a X1860: mov b,a mov a,c ora a jz X1869 lda X2155 X1869: add b mov b,a mov a,c ora a lda X2156 jnz X1879 mov c,b call X11bf mov a,b mov b,c X1879: cmp b jc X187e mov a,b X187e: sta X20f9 inx h mov a,m ora a jz X1888 dcr a X1888: mov b,a mov a,c ora a jnz X1895 lda X2050 dcr a jmp X1898 ; X1895: lda X2153 X1898: cmp b jc X189d mov a,b X189d: sta X20f8 jmp X1636 ; X18a3: mvi c,40h call X1928 call X18c1 jmp X18bc ; X18ae: mvi c,40h call X1928 call X19a8 call X1977 call X19d6 X18bc: mvi a,30h out 62h ret ;; ;; On h pulse, write 0x2d to NVR... this looks like it's doing a read ;; X18c1: in 42h ana c jz X18c1 X18c7: in 42h ana c jnz X18c7 mvi a,2dh ;; Write READ command to NVR latch out 62h X18d1: in 42h ana c jz X18d1 X18d7: in 42h ana c jnz X18d7 mvi a,2fh ;; Write 0x2fh (standby) to nvr latch out 62h lxi h,X21d3 ;; HL=X21d3 mvi b,0eh ;; B= 14 -- we're reading 14 bits X18e6: in 42h ana c jz X18e6 X18ec: in 42h ana c jnz X18ec ;; wait for NVR clock L mvi a,25h ;; shft bit out of nvr out 62h X18f6: in 42h ana c jz X18f6 ;; wait for NVR clock H in 42h ;; read bit and store it in memory mov m,a inx h X1900: in 42h ana c jnz X1900 ;; wait for NVR clock L dcr b jnz X18f6 ;; read next bit mvi a,2fh ;; send standby out 62h lxi d,X21d3 ;; DE=0x21d3 mvi b,0eh ;; B = 14 lxi h,X0000 ;; HL = 0 X1916: dad h ;; ldax d ;; load next char ani 20h ;; and with NVR data bit rlc ;; rotate NVR bit to high bit rlc rlc ora l mov l,a inx d dcr b jnz X1916 shld X21af ;; Store the finished data in 21af and 21ae ret ;; ;; Loads address A into NVR address register ;; X1928: lda X21ae ;; Load accumulator from 0x21ae -- (0x42) X192b: mvi b,0ffh ;; B = 0xff X192d: inr b ;; increment B sui 0ah ;; subtract 0x0a from accumulator jp X192d ;; repeat while accumulator is positive adi 0ah ;; add 0x0a to accumulator ;; B = A/10, A = A%10 -- this is almost certainly related to NVR! ;; First, fill the buffer at 21d3 with 20 bytes of 0x23 (accept address 1) lxi h,X21d3 ;; HL = 0x21d3 mvi e,23h ;; E = 0x23 mvi d,14h ;; D = 0x14 X193c: mov m,e ;; inx h ;; HL++ dcr d ;; D-- jnz X193c ;; repeat until D is zero ;; End buffer with 0x2f -- put in standby mvi m,2fh ;; Store 0x2f in 21e7 ;; Set 21d3 + a to 0x22 (accept address 0) lxi h,X21d3 ;; HL = 0x21d3 mov e,a ;; copy A to E mvi d,0 ;; clear D dad d ;; add DE to HL -- calculate address of bit A mvi m,22h ;; Store 0x22 in M ;; Set 21d3 + 10 + b to 0x22 (accept address 0) lxi h,X21d3 ;; HL = 0x21d3 mvi a,0ah ;; A = 0x0a add b ;; A = 0x0a + B mov e,a dad d mvi m,22h ;; Wait for horiz latch X1957: in 42h ana c jnz X1957 ;; Now copy from 21d3 to nvr latch, one per edge, 21 bytes lxi h,X21d3 mvi b,15h ;; X1962: in 42h ana c ;; Flags Buffer & C jz X1962 dcr b rm ;; Return if B is negative X196a: in 42h ana c jnz X196a mov a,m out 62h inx h jmp X1962 ; X1977: lhld X21af dad h dad h lxi d,X21d3 mvi b,0eh X1981: mvi a,20h dad h ral stax d inx d dcr b jnz X1981 mvi a,2fh stax d lxi h,X21d3 mvi b,0fh X1993: in 42h ana c jz X1993 X1999: in 42h ana c jnz X1999 mov a,m out 62h inx h dcr b jnz X1993 ret ; X19a8: in 42h ana c jz X19a8 X19ae: in 42h ana c jnz X19ae mvi a,2bh out 62h call X19c0 mvi a,2fh out 62h ret ; X19c0: lxi h,X013b X19c3: in 42h ana c jz X19c3 X19c9: in 42h ana c jnz X19c9 dcx h mov a,h ora l jnz X19c3 ret ; X19d6: in 42h ana c jz X19d6 X19dc: in 42h ana c jnz X19dc mvi a,29h out 62h call X19c0 mvi a,2fh out 62h ret ; X19ee: cpi 20h mvi c,43h jz X01ff lxi h,X1bb0 push h cpi 0dh jz X094b cpi 9 jz X0df9 cpi 3ah jnc X1b60 sui 30h rm add a lxi h,X1aa2 call X13de call X1390 mov a,b lxi d,X21ac pchl ; X1a1a: sta X2177 jmp X0812 ; X1a20: lda X207b xri 0ffh sta X207b jz X1a61 X1a2b: mvi c,80h call X108e lhld X2140 shld X2111 lxi h,X19ee shld X2140 lxi h,X0000 shld X2143 shld X2172 X1a45: lhld X2004 shld X21c5 lhld X20f8 shld X210d call X1bba shld X214e xra a sta X20f8 call X1bf9 jmp X1636 ; X1a61: lhld X2111 shld X2140 call X1bba lxi d,X1000 dad d lda X2050 X1a71: mvi m,0ffh inx h dcr a jnz X1a71 lxi h,X210d mov a,m sta X20f8 mvi a,0ffh inx h mov m,a call X1636 lhld X21c5 shld X2004 xra a sta X21c4 sta X21c2 in 42h ani 8 jz X1aa1 lda X2176 ora a cz X12e8 X1aa1: ret ; X1aa2: rst 1 ldax d dad b dcx d rnc ldax d jp Xfe1a ldax d ldax b dcx d shld X401b dcx d mov b,c dcx d ora m ldax d call X1b52 xra a sta X210e sta X210d lda X21a2 ora a push psw cz X0b77 pop psw cnz X0b63 jmp X1a45 ; rst 0 call X1b52 lda X20f8 ora a rz call X0e23 xra m mov m,a call X0e23 ana m mvi b,54h jnz X1ae8 X1ae6: mvi b,0 X1ae8: mov a,b sta X20f4 lda X20f8 jmp X1eea ;; ;; Below is what appears to be a bunch of dead code-- unreferenced functions (meant for use ;; by an expansion rom or patch, perhaps?). ;; call X1b52 call X0dec call X1ccd jmp X1ae6 ; lxi h,X21a5 mov a,m xri 20h mov m,a xra a sta X2144 ret ; call X094b lxi h,X225a mov a,m xri 3 mov m,a sta X2265 ani 1 sta X21be jz X1cd3 jmp X1c35 ; call X1b59 lxi h,X21a6 lda X20f8 sui 2 cpi 28h rnc nop ; org 1b34h ; mov d,a call X0e2b xra m mov m,a call X1ddb jmp X1cd3 ; dcx d xchg call X1b59 sta X20f8 mov a,m adi 10h mov m,a call X1ddb jmp X1cd3 ; X1b52: lda X21be ora a rnz pop h ret ; X1b59: lda X21be ora a rz pop h ret ; X1b60: lda X2069 ani 20h rz mov a,b cpi 53h jnz X1b72 call X1754 jmp X1b81 ; X1b72: cpi 52h jnz X1b86 call X175b ei call X03a2 call X1a2b X1b81: ei call X1bf9 ret ; X1b86: cpi 41h rnz call X1b59 call X094b mvi a,41h call X05e6 mvi a,3dh call X05e6 mvi a,20h call X05e6 lxi h,X1e9f shld X2140 pop h ret ; sbb b cpi 61h rm cpi 7bh rp ani 0dfh ret ; X1bb0: call X0394 lxi h,X19ee shld X2140 ret ; X1bba: lhld X204e jmp X1bc3 ; X1bc0: lxi h,X21cc X1bc3: mov a,h ani 0fh ori 20h mov h,a ret ; X1bca: call X1bba call X0fc8 push h mvi m,7fh inx h xchg call X1bc0 mov a,h ani 0fh ori 70h stax d inx d mov a,l stax d pop h lda X2050 mov e,a mvi b,54h X1be8: mov a,e call X0e27 ana m jz X1bf4 mov a,e call X1eea X1bf4: dcr e jnz X1be8 ret ; X1bf9: lxi b,X1cad lxi h,X2253 mvi a,0fah call X1c71 mvi c,1 mvi b,10h call X1c8a lxi b,X1cad mvi a,0fah call X1c71 mvi c,1 mvi b,50h call X1c8a lxi b,X1cb6 mvi a,0fdh call X1c71 mvi c,13h call X1c88 mvi m,7fh inx h xchg call X1bba mov a,h ori 70h stax d inx d mov a,l stax d X1c35: call X1bc0 lda X2050 mov b,a mvi a,31h X1c3e: mov m,a inx h mov c,a ani 0fh mov a,c jnz X1c49 xri 80h X1c49: inr a daa jnc X1c50 ori 80h X1c50: ani 8fh ori 30h dcr b jnz X1c3e call X1c9f call X1bca mvi a,1 X1c60: sta X21be lxi h,X2253 mov a,h mov h,l ani 0fh ori 30h mov l,a shld X2004 ret ; X1c71: push h lxi d,X1000 dad d pop d X1c77: push psw ldax b ora a jz X1c86 stax d pop psw mov m,a inx h inx d inx b jmp X1c77 ; X1c86: pop psw ret ; X1c88: mvi b,70h X1c8a: xchg X1c8b: mvi m,7fh inx h mov d,h mov e,l inx d inx d mov a,d ani 0fh ora b mov m,a inx h mov m,e inx h dcr c jnz X1c8b ret ; X1c9f: mvi m,7fh mov d,h mov e,l inx h mov a,d ani 0fh ori 70h mov m,a inx h mov m,e ret X1cad: db 'SET-UP A',0 X1cb6: db 'TO EXIT PRESS ',022h,'SET-UP',022h,0 call X1bba jmp X0fc8 ; X1cd3: call X1ccd call X1bc0 push h mvi a,4eh call X0fcb pop h push h inx h inx h mvi e,0 mvi b,4 in 42h ani 8 push psw jz X1cf0 inr b X1cf0: mvi c,4 X1cf2: call X1dcc ori 0b0h mov m,a inr e inx h dcr c jnz X1cf2 mvi c,4 X1d00: mvi m,0 inr e inx h dcr c jnz X1d00 dcr b jnz X1cf0 mvi c,4 pop psw push psw jnz X1d17 mov a,c adi 8 mov c,a X1d17: mvi m,0 inx h dcr c jnz X1d17 lxi d,X1d4b lda X21ab call X1d61 lxi d,X1d56 lda X21ac call X1d61 call X1c9f lxi d,X0008 mvi c,4 pop psw jz X1d3d inr c X1d3d: mvi a,31h pop h X1d40: mov m,a inr a dad d dcr c jnz X1d40 xra a jmp X1c60 ; X1d4b: db 20h db 20h db 20h mov d,h db 20h mov d,e mov d,b mov b,l mov b,l mov b,h db 20h X1d56: db 20h db 20h db 20h mov d,d db 20h mov d,e mov d,b mov b,l mov b,l mov b,h db 20h X1d61: mov c,a mvi b,0bh call memmov mov a,c rrc rrc mov c,a rrc rrc add c mov c,a mvi b,0 lxi d,X1d7c xchg dad b xchg mvi b,5 jmp memmov ; X1d7c: db 20h db 20h db 20h dcr m db 30h db 20h db 20h db 20h stc dcr m db 20h db 20h lxi sp,X3031 db 20h db 20h lxi sp,X3433 db 20h db 20h lxi sp,X3035 db 20h db 20h sta X3030 db 20h db 20h inx sp db 30h db 30h db 20h db 20h mvi m,30h db 30h db 20h lxi sp,X3032 db 30h db 20h lxi sp,X3038 db 30h db 20h sta X3030 db 30h db 20h sta X3034 db 30h db 20h inx sp mvi m,30h db 30h db 20h inr m db 38h db 30h db 30h db 20h dad sp mvi m,30h db 30h lxi sp,X3239 db 30h db 30h X1dcc: push h lxi h,X21a6 mov d,e mov a,e call X0e2b ana m pop h rz mvi a,1 ret ; X1ddb: lda X21ac ani 0f0h rrc rrc rrc rrc mov b,a lda X21ab ani 0f0h ora b sta X2158 ani 0f0h cpi 20h lda X21a4 jz X1dff ani 3fh ori 80h jmp X1e03 ; X1dff: ani 3fh ori 0c0h X1e03: sta X21a4 in 42h ani 8 jz X1e19 lxi h,X21a7 mov a,m ori 10h mov m,a mvi a,6eh jmp X1e31 ; X1e19: lda X21a9 ani 0c0h mov b,a lda X21a9 ani 20h rrc ori 20h ora b rrc rrc mov b,a lda X21a4 ani 0c3h ora b X1e31: sta X21a4 lda X21a9 ani 10h jz X1e3e mvi a,10h X1e3e: adi 20h sta X207c lda X21a6 ani 10h jz X1e4d mvi a,1 X1e4d: call X1e6e call X0329 lda X20f8 cpi 15h cz X0342 cpi 1dh cz X0342 cpi 0ch cz X0bf2 cpi 12h cz X0bf2 call X1636 ret ; X1e6e: ora a jz X1e79 sta X215b xra a jmp X1e94 ; X1e79: in 42h ani 2 jnz X1e90 sta X2159 mvi a,1 sta X215b mvi a,2 sta X215a jmp X036b ; X1e90: xra a sta X215b X1e94: sta X215a mvi a,80h sta X2159 jmp X036b ; X1e9f: call X1edd lxi h,X217b mov m,a inx h shld X21b4 mov b,a lxi d,X0014 call X1083 lxi h,X1eb8 shld X2140 ret ; X1eb8: call X1edd lhld X21b4 mov b,a lda X217b mov c,a cmp b jz X1ed3 mov a,l cpi 90h jz X1ed3 mov m,b inx h shld X21b4 ret ; X1ed3: mov m,c call X1ccd call X094b jmp X1bb0 ; X1edd: push psw cpi 20h jnc X1ee5 mvi a,1 X1ee5: call X05e3 pop psw ret ; X1eea: push h lxi h,X204e mov c,a lda X21a2 ora a jnz X1efc mov a,c cpi 50h jp X1f0f X1efc: mov a,m inx h mov h,m mov l,a mov a,h ani 0fh ori 20h mov h,a mov a,c add l mov l,a jnc X1f0d inr h X1f0d: mov m,b mov a,b X1f0f: pop h ret ; X1f11: push d xra a sta X21a5 mvi b,0 X1f18: mov a,b sta X2158 out 2 mvi c,1 X1f20: mov a,c out 0 lxi h,Xc000 X1f26: push b push h call X0675 pop h pop b jnz X1f48 inx h mov a,h ora l jnz X1f26 X1f36: mvi a,5 out 1 lda X2158 out 2 mvi a,25h sta X21a5 xra a stc pop d ret ; X1f48: ani 7fh cmp c jnz X1f36 mov a,c rlc cpi 80h mov c,a jnz X1f20 mov a,b adi 11h mov b,a cpi 10h jnz X1f18 xra a pop d ret ; X1f62: push d mvi d,7 X1f65: mov a,d call X1f7b call X1fa1 cmp d jnz X1f36 dcr d jnz X1f65 mvi a,5 out 1 xra a pop d ret ; X1f7b: mov b,a ani 2 rrc rrc rrc rrc ori 10h sta X21c9 out 62h mvi c,5 mov a,b ani 1 jz X1f93 mvi c,25h X1f93: mov a,b ani 4 jz X1f9d mov a,c ori 2 mov c,a X1f9d: mov a,c out 1 ret ; X1fa1: in 22h mov b,a mvi c,1 mov a,b ani 90h jz X1fb3 cpi 90h mvi a,0ffh rnz mvi c,0 X1fb3: mov a,b ani 40h jz X1fbd mov a,c ori 2 mov c,a X1fbd: in 1 rrc rrc cma ani 20h xra b ani 20h mvi a,0ffh rnz mov a,b ani 20h jnz X1fd4 mov a,c ori 4 mov c,a X1fd4: ora a mov a,c ret ; ; Last but not least, pad out to 8K (8192) bytes ; nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop ; ; Miscellaneous equates ; ; These are addresses referenced in the code but ; which are in the middle of a multibyte instruction ; or are addresses outside the initialized space ; X0011 equ 11h X00ff equ 0ffh X0111 equ 111h X0113 equ 113h X0ea0 equ 0ea0h X1ccd equ 1ccdh X2001 equ 2001h X2002 equ 2002h X2004 equ 2004h X204e equ 204eh X2050 equ 2050h X2051 equ 2051h X2052 equ 2052h X2054 equ 2054h X2056 equ 2056h X2058 equ 2058h X205a equ 205ah X205b equ 205bh X205c equ 205ch X2065 equ 2065h X2067 equ 2067h X2068 equ 2068h X2069 equ 2069h X206a equ 206ah X206e equ 206eh X2072 equ 2072h X2073 equ 2073h X2074 equ 2074h X2075 equ 2075h X2077 equ 2077h X2078 equ 2078h X2079 equ 2079h X207a equ 207ah X207b equ 207bh X207c equ 207ch X207d equ 207dh X207e equ 207eh X207f equ 207fh X20c0 equ 20c0h X20c1 equ 20c1h X20c2 equ 20c2h X20de equ 20deh X20f2 equ 20f2h X20f4 equ 20f4h X20f5 equ 20f5h X20f6 equ 20f6h X20f8 equ 20f8h X20f9 equ 20f9h X20fa equ 20fah X20fb equ 20fbh X20fc equ 20fch X20fd equ 20fdh X20ff equ 20ffh X2101 equ 2101h X2102 equ 2102h X2104 equ 2104h X210d equ 210dh X210e equ 210eh X2111 equ 2111h X2113 equ 2113h X212b equ 212bh X212c equ 212ch X212d equ 212dh X212f equ 212fh X2130 equ 2130h X2131 equ 2131h X2140 equ 2140h X2142 equ 2142h X2143 equ 2143h X2144 equ 2144h X2145 equ 2145h X2146 equ 2146h X2147 equ 2147h X2148 equ 2148h X2149 equ 2149h X214b equ 214bh X214e equ 214eh X2150 equ 2150h X2151 equ 2151h X2152 equ 2152h X2153 equ 2153h X2154 equ 2154h X2155 equ 2155h X2156 equ 2156h X2157 equ 2157h X2158 equ 2158h X2159 equ 2159h X215a equ 215ah X215b equ 215bh X215c equ 215ch X2171 equ 2171h X2172 equ 2172h X2173 equ 2173h X2174 equ 2174h X2176 equ 2176h X2177 equ 2177h X2178 equ 2178h X2179 equ 2179h X217b equ 217bh X2191 equ 2191h X21a2 equ 21a2h X21a3 equ 21a3h X21a4 equ 21a4h X21a5 equ 21a5h X21a6 equ 21a6h X21a7 equ 21a7h X21a8 equ 21a8h X21a9 equ 21a9h X21aa equ 21aah X21ab equ 21abh X21ac equ 21ach X21ad equ 21adh X21ae equ 21aeh X21af equ 21afh X21b4 equ 21b4h X21b8 equ 21b8h X21b9 equ 21b9h X21ba equ 21bah X21bb equ 21bbh X21bc equ 21bch X21bd equ 21bdh X21be equ 21beh X21bf equ 21bfh X21c0 equ 21c0h X21c1 equ 21c1h X21c2 equ 21c2h X21c3 equ 21c3h X21c4 equ 21c4h X21c5 equ 21c5h X21c7 equ 21c7h X21c8 equ 21c8h X21c9 equ 21c9h X21cb equ 21cbh X21cc equ 21cch X21d3 equ 21d3h X2253 equ 2253h X225a equ 225ah X2265 equ 2265h X22d0 equ 22d0h X2839 equ 2839h X3000 equ 3000h X3030 equ 3030h X3031 equ 3031h X3032 equ 3032h X3034 equ 3034h X3035 equ 3035h X3038 equ 3038h X3200 equ 3200h X3221 equ 3221h X3239 equ 3239h X3433 equ 3433h X3a6a equ 3a6ah X3c08 equ 3c08h X3c2c equ 3c2ch X3f2f equ 3f2fh X401b equ 401bh X4553 equ 4553h X5a0b equ 5a0bh X6081 equ 6081h X6713 equ 6713h X6c14 equ 6c14h X7fd0 equ 7fd0h Xb709 equ 0b709h Xc000 equ 0c000h Xc310 equ 0c310h Xc320 equ 0c320h Xc920 equ 0c920h Xc940 equ 0c940h Xc980 equ 0c980h Xcc71 equ 0cc71h Xcd00 equ 0cd00h Xcd0b equ 0cd0bh Xd0f2 equ 0d0f2h Xfe1a equ 0fe1ah Xff01 equ 0ff01h end