OTHELLO  € ANIMAL € ANIMOB  € AWARI € MAZES )€ GIN 7€ GINOB U€ GO s € GOB ~€ ONSETS †€ OTH2 ” € AUTHORS ¡€ LINES º € LINES2 Ä € LINES3 Î € LINES4 Ø € ALLFIGS â € ROT2  € PAD € SNAKE  € CIRCLE € MAN € PAC #2€2 PUZZLE U € POB _  DRAW g € PUZ2 q€ PUZ3 …€ DRAW2 ˜€ MOM §€ SAVEPUZ Ë€ FACE ¹€ DRAW3 Í€ PAD5 ဠMAN2 〠TEMP ÷€ FIGS ù € BULLSEYE€ MOUNTAIN+€ CASSIE =€ SPLASH O€ PMAKE a € SIDES k€ CUTUP p € FIXUP z € PMAKE2 „€ MANIP ˜ JIG š€ COLOR ˜ TESTP ž€ DROB ¡  0010 LXI H,TABLE 0020 COLLP:MOV A,M 0030 CPI 0FFH 0040 JZ DONE 0050 OUT 33 0060 INX H 0070 MOV A,M 0080 OUT 38 0090 INX H 0100 MOV A,M 0110 OUT 37 0120 INX H 0130 MOV A,M 0140 OUT 36 0150 INX H 0160 JMP COLLP 0170 DONE: 0180 LXI H,0 0190 CLY:MOV A,H 0200 OUT 34 0210 CLX:MOV A,L 0220 OUT 33 0230 MVI A,1 0240 OUT 32 0250 INR L 0260 JNZ CLX 0270 INR H 0280 JNZ CLY 0290 LXI H,17136+6000H 0300 BACK:LXI D,2020H 0310 CALL PUT 0320 XRA A 0330 CALL 110H 0340 CPI 3 0350 RZ 0360 CPI ' ' 0370 JZ BACK 0380 LXI B,-504 0390 DAD B 0392 DAD B 0400 JMP BACK 0410 RET 0420 PUT:PUSH B 0430 MVI B,21 0440 PTY:MVI C,24 0450 MOV A,D 0460 OUT 33 0470 PTX:MOV A,E 0480 CMA 0490 OUT 34 0500 MOV A,M 0510 ANI 1 0520 JZ OK 0530 MVI A,2 0540 OK:PUSH B 0550 PUSH D 0560 PUSH H 0570 MOV C,A 0580 LXI H,707H 0590 Y1:MOV A,D 0600 OUT 33 0610 X1:MOV A,E 0620 CMA 0630 OUT 34 0640 MOV A,C 0650 OUT 32 0660 INR E 0670 DCR L 0680 JNZ X1 0690 MVI L,7 0700 MOV A,E 0710 SUB L 0720 MOV E,A 0730 INR D 0740 DCR H 0750 JNZ Y1 0760 MOV A,D 0770 SUB L 0780 MOV D,A 0790 POP H 0800 POP D 0810 POP B 0820 INX H 0830 MOV A,E 0840 ADI 8 0850 MOV E,A 0860 DCR C 0870 JNZ PTX 0880 MOV A,E 0890 SUI 192 0900 MOV E,A 0910 MOV A,D 0920 ADI 8 0930 MOV D,A 0940 DCR B 0950 JNZ PTY 0960 MOV A,D 0970 SUI 168 0980 MOV D,A 0990 POP B 1000 RET 1010 TABLE:DB 0,0,0,0 1020 DB 1,255,0,0 1030 DB 2,255,255,255 1040 DB 255 1040 0680 CALL OFF 0690 DCR C 0700 JNZ MLOOP 0710 JMP OLOOP 0720 ON: 0730 ONLP:MOV A,M 0740 ADD D 0750 OUT 33 0760 INX H 0770 MOV A,M 0780 ADD E 0790 OUT 34 0800 INX H 0810 MOV A,M 0820 CPI 80H 0830 RZ 0840 OUT 32 0850 INX H ESAG 1310 MOV A,B 1320 CALL PRDEC 1330 CALL CRLF 1340 JMP MLOOP 1350 ILLGL:LXI H,ILLM 1360 CALL MESAG 1370 JMP MLOOP 1380 PRDEC:LXI B,100 1390 MOV D,A 1400 CALL DIGIT 1410 MVI C,10 1420 CALL DIGIT 1430 MOV A,D 1440 ADI 30H 1450 JMP CO 1460 DIGIT:MVI E,-1 1470 MOV A,D 1480 DGLP:INR E 1490 SUB C 1500 JNC DGLP 1510 ADD C 1520 MOV D,A 1530 MOV A,E 1540 ORA B 1550 MOV B,A 1560 RZ 1570 MVI A,30H 1580 ADD E 1590 JMP CO 1600 MESAG:MOV A,M 1610 ORA A 1620 RZ 1630 CALL CO 1640 INX H 1650 JMP MESAG 1660 TEST:MOV E,B 1670 MVI D,0 1680 MOV A,D 1690 STA COUNT 1700 LXI H,BOARD 1710 DAD D 1720 MOV A,M 1730 ORA A 1740 JNZ BAD 1750 MVI A,3 1760 SUB C 1770 STA Y2 1780 MVI A,8 1790 STA CNTR 1800 TSTLP:PUSH B 1810 XRA A 1820 STA CNT1 1830 LDA CNTR 1840 MOV E,A 1850 MVI D,0 1860 LXI H,STEPS-1 1870 DAD D 1880 MOV C,M 1890 TLP1:MOV A,B 1900 ADD C 1910 MOV B,A 1920 MOV E,A 1930 LXI H,BOARD 1940 DAD D 1950 LDA Y2 1960 CMP M 1970 JNZ SET0 1980 LXI H,CNT1 1990 INR M 2000 JMP TLP1 2010 SET0:MOV B,D 2020 XCHG 2030 LXI H,FLAGS-1 2040 LDA CNTR 2050 MOV C,A 2060 DAD B 2070 MVI M,0 2080 XCHG 2090 POP B 2100 MOV A,C 2110 CMP M 2120 JNZ IS0 2130 LDA CNT1 2140 STAX D 2150 MOV D,A 2160 LDA COUNT 2170 ADD D 2180 STA COUNT 2190 IS0:LXI H,CNTR 2200 DCR M 2210 JNZ TSTLP 2220 BAD:LDA COUNT 2230 ORA A 2240 RET 2250 MOVE:LXI H,BOARD 2260 MOV E,B 2270 MVI D,0 2280 DAD D 2290 MOV M,C 2300 MVI A,8 2310 STA CNTR 2320 MVLP:LDA CNTR 2330 MOV E,A 2340 MVI D,0 2350 LXI H,FLAGS-1 2360 DAD D 2370 MOV E,M 2380 MOV A,E 2390 ORA A 2400 JZ DONXT 2410 STA CNT1 2420 PUSH B 2430 LDA CNTR 2440 MOV E,A 2450 MVI D,0 2460 LXI H,STEPS-1 2470 DAD D 2480 MOV A,M 2490 STA STEP 2500 MVLP1:LDA STEP 2510 ADD B 2520 MOV B,A 2530 MOV E,B 2540 LXI H,BOARD 2550 DAD D 2560 MOV M,C 2570 LXI H,CNT1 2580 DCR M 2590 JNZ MVLP1 2600 POP B 2610 DONXT:LXI H,CNTR 2620 DCR M 2630 JNZ MVLP 2640 LXI H,USED 2650 INR M 2660 MOV A,M 2670 CPI 64 2680 RC 2690 POP H 2700 END:LXI H,GMOV 2710 CALL MESAG 2720 LDA YOU 2730 MOV B,A 2740 LDA ME 2750 CMP B 2760 LXI H,TIE 2770 JZ OK 2780 LXI H,IWIN 2790 JNC OK 2800 LXI H,YWIN 2810 OK:CALL MESAG 2820 CALL CRLF 2830 JMP START 2840 CI:XRA A 2850 JMP DOS+10H 2855 CRLF:MVI A,13 2856 CALL CO 2857 MVI A,10 2860 CO:PUSH B 2870 MOV B,A 2880 XRA A 2890 CALL DOS+0DH 2900 POP B 2910 RET 2950 TIE:DB 'TIE GAME.',0 2960 IWIN:DB 'I WIN!',0 2970 YWIN:DB 'YOU WIN.',0 2980 CHARS:DB '.XO' 2990 BOARD:DS 100 3000 YOU:DS 1 3010 ME:DS 1 3020 USED:DS 1 3030 YMOV:DB 'YOUR MOVE ? ',0 &3040 ILLM:DB 'ILLEGAL MOVE.',13,10,0 3050 GMOV:DB 'GAME OVER.',0 3060 OEQ:DB ' O=',0 3070 XEQ:DB ' X=',0 3080 CNTR:DS 1 3090 CNT1:DS 1 3100 COUNT:DS 1 3110 FLAGS:DS 8 '3120 STEPS:DB -11,-10,-9,1,11,10,9,-1 3130 Y2:DS 1 3140 CMOV:DS 1 3150 STEP:DS 1 3160 IMVTO:DB 'I MOVE TO ',0 -3170 MOVES:DB 11,18,81,88,13,16,31,38,61,68 (3180 DB 83,86,33,36,63,66,14,15,41,48 (3190 DB 51,58,84,85,34,35,43,46,53,56 (3200 DB 64,65,24,25,42,47,52,57,74,75 (3210 DB 23,26,32,37,62,67,73,76,12,17 (3220 DB 21,28,71,78,82,87,22,27,72,77 32201F3 :08462730472A8147EBE5D5CDB0 :08462FD9122DDA4135E1CD620B :0846378D46D113CA44463A80B6 :08463F9B473DC21946CDE2453F :0846476C22CE46CD734623110F :08464FC0D0467E1213230DC2F8 :084657DB5146CD5D2E21C74663 :08465F60C329310100021E01B4 :084667007EBBC82300010 DOS:EQU 100H 0020 START CALL CRLF 0030 LXI H,TOAAM 0040 CALL MESAG 0050 CALL CRLF 0060 CALL CRLF 0070 LXI H,LIST 0080 BEGIN CALL CRLF 0090 MOV A,M 0100 MOV B,M 0110 ORA A 0120 JZ NEXT 0130 SHLD SAVE1 0140 XCHG 0150 LXI H,GUESS 0160 CALL MESAG 0170 XCHG 0180 NEXT INX H 0190 MOV A,M 0200 ASK CALL PRINT 0210 INX H 0220 MOV A,M 0230 CPI 13 0240 JNZ ASK 0250 MVI A,'?' 0260 CALL PRINT 0270 CHRIN CALL CHAR 0280 CPI 'Q' 0290 JZ DOS+28H 0300 CPI 3 0310 JZ RSTRT 0320 CPI 'Y' 0330 JZ YES 0340 CPI 'N' 0350 JNZ CHRIN 0360 CALL PRINT 0370 NO MOV A,B 0380 ORA A 0390 JNZ NO1 0400 INX H 0410 INX H 0420 JMP NEW 0430 NO1 CALL CRLF 0440 LHLD END 0450 XCHG 0460 LXI H,ANIMM 0470 CALL MESAG 0480 CALL KBRD 0490 XCHG 0500 MVI M,1 0510 INX H 0520 CALL MOVE 0530 XCHG 0540 LHLD SAVE2 0550 MOV M,E 0560 INX H 0570 MOV M,D 0580 LXI H,QMESG 0590 CALL MESAG 0600 CALL KBRD 0610 XCHG 0620 MVI M,0 0630 INX H 0640 CALL MOVE 0650 XCHG 0660 LXI H,AFYA 0670 CALL MESAG 0680 PIKUP CALL CHAR 0690 CPI 3 0700 JZ RSTRT 0710 CPI 'Y' 0720 JZ YES2 0730 CPI 'N' 0740 JNZ PIKUP 0750 CALL PRINT 0760 NO2 LHLD SAVE1 0770 XCHG 0780 MOV M,E 0790 INX H 0800 MOV M,D 0810 INX H 0820 XCHG 0830 LHLD END 0840 BACK XCHG 0850 MOV M,E 0860 INX H 0870 MOV M,D 0880 INX H 0890 SHLD END 0900 JMP START 0910 YES2 CALL PRINT 0920 LHLD END 0930 XCHG 0940 MOV M,E 0950 INX H 0960 MOV M,D 0970 INX H 0980 XCHG 0990 LHLD SAVE1 1000 JMP BACK 1010 YES CALL PRINT 1020 MOV A,B 1030 ORA A 1040 JNZ START 1050 NEW INX H 1060 SHLD SAVE2 1070 MOV C,M 1080 INX H 1090 MOV H,M 1100 MOV L,C 1110 JMP BEGIN 1120 MESAG MOV A,M 1130 CALL PRINT 1140 INX H 1150 MOV A,M 1160 CPI 35 1170 RZ 1180 JMP MESAG+1 1190 RSTRT LXI H,FROM 1200 LXI D,YES9 1210 MOV M,E 1220 INX H 1230 MOV M,D 1240 INX H 1250 LXI D,NO9 1260 MOV M,E 1270 INX H 1280 MOV M,D 1290 JMP START 1300 KBRD PUSH H 1310 LXI H,MEM 1320 INPUT CALL CHAR 1330 CPI 7FH 1340 JZ BSPC 1350 CPI 3 1360 JZ RSTRT 1370 CALL PRINT 1380 JMP NEXT9 1390 BSPC:DCX H 1400 MOV A,M 1410 INX H 1420 CPI 255 1430 JZ INPUT 1435 DCX H 1440 MVI A,8 1450 CALL PRINT 1460 JMP INPUT 1470 NEXT9 MOV M,A 1480 INX H 1490 CPI 13 1500 JNZ INPUT 1510 POP H 1520 JMP CRLF 1530 CRLF MVI A,13 1540 CALL PRINT 1550 MVI A,10 1560 PRINT:PUSH B 1570 MOV B,A 1580 XRA A 1590 CALL DOS+0DH 1600 POP B 1610 RET 1620 CHAR:XRA A 1630 JMP DOS+10H 1640 MOVE LXI D,MEM 1650 MVI B,13 1660 WORK LDAX D 1670 MOV M,A 1680 INX D 1690 INX H 1700 CMP B 1710 RZ 1720 JMP WORK 1730 SAVE DS 2 1740 SAVE1 DS 2 1750 SAVE2 DS 2 1760 DB 255 1770 MEM DS 100 1780 END DW LAST 1790 GUESS DB 'WAS IT A #' (1800 ANIMM DB 'WHAT WAS YOUR ANIMAL?#' ,1810 QMESG DB 'WHAT SHOULD I HAVE ASKED?#' 61820 AFYA DB 'FOR YOUR ANIMAL THE ANSWER WOULD BE?#' %1830 TOAAM DB 'THINK OF AN ANIMAL#' 1840 LIST DB 0 1850 DB 'DOES IT HAVE HAIR' 1860 DB 13 1870 FROM DW YES9 1880 DW NO9 1890 NO9 DB 1 1900 DB 'BIRD' 1910 DB 13 1920 YES9 DB 1 1930 DB 'DOG' 1940 DB 13 1950 LAST:EQU $ 19502100 MOV A,C 2110 CMP M 2120 JNZ IS0 2130 LDA CNT1 2140 STAX D 2150 MOV D,A 2160 LDA COUNT 2170 ADD D 2180 STA COUNT 2190 IS0:LXI H,CNTR 2200 DCR M 2210 JNZ TSTLP 2220 BAD:LDA COUNT 2230 ORA A 2240 RET 2250 MOVE:LXI H,BOARD 226Í3! ‚Íá€Í3Í3!3‚Í3~F·Ê&€"Vë!ÁÍá€ë#~Í:#~þ Â(€>?Í:ÍBþQÊ(þÊí€þYÊ΀þNÂ7€Í:x·Â[€##ÃÖ€Í3*¿ë!ËÍá€Íë6#ÍFë*Xs#r!áÍá€Íë6#ÍFë!ûÍá€ÍBþÊí€þYʼ€þN€Í:*Vës#r#ë*¿ës#r#"¿Ã€Í:*¿ës#r#ë*Vñ€Í:x·Â€#"XN#fiÀ~Í:#~þ#ÈÃâ€!F‚P‚s#r#J‚s#rÀå![ÍBþÊþÊí€Í:Ã(+~#þÿÊ+>Í:Ãw#þ ÂáÃ3> Í:> ÅG¯Í ÁɯÃ[ w#¸ÈÃKH‚P‚vƒÿDOES IT EAT CARROTS OCEAN G AND HAVE HORNS 2p4p6p8r8r:rv>vz>z<|<~<€<€>‚>„>„<‚<‚:‚8€8~8³‚S‚™ƒWAS IT A #WHAT WAS YOUR ANIMAL?#WHAT SHOULD I HAVE ASKED?#FOR YOUR ANIMAL THE ANSWER WOULD BE?#THINK OF AN ANIMAL#DOES IT HAVE HAIR Z‚ƒBIRD DOG COW DOES IT GIVE MILK AND GO 'MOO,MOO' U‚ˆ‚LION IS IT KING OF THE JUNGLE ‚‚«‚PIG DOES IT GO 'OINK,OINK' ¦‚Í‚GOAT DOES IT EAT NEARLY ANYTHING AND HAVE HORNS Ç‚YƒSNAKE DOES IT HAVE LEGS ?ƒ!ƒFISH DOES IT HAVE GILLS ƒý‚FROG DOES IT CROAK 9ƒJ‚WHALE DOES IT LIVE IN THE OCEAN Rƒ€ƒRABBIT DOES IT EAT CARROTS xƒP‚`Z`XbXdXdVdTbT`T^T\T\V^V^X\X\ZZZTdVhVjVlTlTnVnLVRVRTPTPRRRRXTXTVTTTRVRVPVNXNXLZLR\T\ZRXRXPVTJLLLLJNJPJTPTNXJ\H^H`H\LbLdL\RdRp r"r"t$t$r$p&v&x$x"x"z zzzz(v(x(z&z$z,|.|.~.€0€*~,~(~(€(‚*‚*€,€|~€€‚„„„„‚€€‚‚€‚‚„„†ˆŠŒŒŠŠŒŽ ŽŽŒŠ Š"Š"ˆ"†"„$„$‚$€"€ €€‚ ‚"‚€‚„††„ „ † ˆˆˆˆ†$†$ˆ$Š*†,†.„0„2„2†2ˆ4ˆ6ˆ8ˆ8Š6Š4Š2Š2Œ0Œ.Œ.Ž..’,’,”.”.–,–,˜.˜.š.œ0œ2œ4œ4ž2ž*”*–(–&–&˜&š(š*š*˜(˜&’$’$""’"”$”&”(”"Ž"Œ ŒTrTtTvRv\r^rdndpfpfrftfvfxdxdzfzf|d|b|bzbxfjflhlhjjjljllnlnjpjrjtjtlrlpldfbf`f`h^h\h\f^f^d\d\b^b`bbbbdddfdfffhZjZlXfVfVdXdd`dbb\bZdZd\f\h\hZfZfXhXjXlXlVjVh^j^j`h`jblbnbn`l`l^n^n\p\r\t\t^t`r`p`pbrbxfxdzdzbxbx`z`|`|^z^z\zZxZxXxVzVzX|X|Z~Z~X~V|V|T|R~R~T€T€V‚V‚X„X„Z†Z†\ˆ\ˆ^ˆ`Š`Š^Š\ŠZˆZˆXŠXŠVŒVŒXŽXŽZZXV’V’T”T”V–V˜V˜T˜R˜P˜NšNšPšRšTšVšX˜X˜Z˜\–\–Z–X”X’X’Z”Z”\”^–^–`”`’`’^’\\^`bd’d’b”b”d”f”h’hhf’fxhxjxlxnznzlzj|j|l~l€l‚l‚n‚p‚r‚t€t€v€x€z~z|z||~|€|€~€€~€|€z€z~|~~~rnpnnnnpnrntltlvjvjtjrjplplrrpppprptrtttvtvrtrrrzp|p~p~n|nxtxvvvvxtxtv|r~r~tzvzzx|z|rzr|p|pznzn|l|l~j~j|jzhzhxhvhthrhphnjnjlt~t€v€z‚|‚|„~„€„€‚‚‚‚€‚~„~†~†€†‚„‚„€r‚r€p€p‚n‚l‚j‚j€l€n€n~p~r~p†pˆnˆn†l†h„h‚f‚d‚b‚`‚`€^€\€\‚^‚^„`„`†^†^ˆ\ˆ\†\„h†f†d†d„f„hˆfˆfŠhŠhŒjŒjŠlŒlŽnŽpŽpp’n’n”p”p–p˜r˜r–r”r’pŠvŒvŽvv’x’z’z||’~’~~Žv”x”t˜tšvšv˜xšxœxžzž|ž|œ|š|˜~˜~š~œ~ž€ž€ ‚ ‚ž„ž„œ„š‚š‚œ€œ€š€˜‚˜‚–‚”‚’‚‚ބބ„’„”†”ˆ”ˆ’ˆ††’zšzœ|–‚Œ„Œ„Š„ˆ„†„„†„†††ˆ†ŠˆŠˆŒ†Œ†ŽˆŽŠŽŒŽŒŽŽŽŽ’Ž’Œ’ВДЖˆ–†–„–„˜†˜†šˆšˆœŠœŠžˆžˆ † †¢†¤ˆ¤ˆ¦†¦†¨ˆ¨ˆªŠªŠ¬Š®ˆ®ˆ¬†¬†ª„ª‚ª‚¬€¬~¬~ª~¨€¨‚¨‚¦„¦„¨~Š~ˆ€ˆ‚ˆ‚Š€Š|ŠzŠzŒx|ˆ|†NxVxVvJ€H€F„F†H†J†J„L„L†N†P†R†T†T„V„H„T€R„\~^~^|^z\z\|Z|X|Xx^vbtBŠBŒBŽB@@’>’>”>–@–@”B”B’D’F’H’HFDDŽDŒDŠHˆFŒHŒJŒLŒLŠNŠPŠPŒNŒNŽNLLŽJŽHŽFŽRŠRŒRŽRPP’N’N”N–P–P”R”T”T–T˜TšTœVœVšV˜V–V”X”Z”\”\–^–`–b–b˜`˜^˜^š\š\œZœZžZ Z¢\¢^¢^¤`¤b¤b¢d¢d f fždždœfœhœhšh˜h–j–j”l”l’j’h’h”f”f–f˜d˜dšbš`š`œ^œ^ž`žbžb ` ^ \ \žTŒTŽTVXX’V’T’R’VŒXŒZŒZŠZˆXˆXŠZ†8€6†4†<†<ˆ>ˆ@ˆ@Š@Œ>Œ<Œ<Š>Š<>@@@BBDD@@>>HJJJ H H J JHFFDLNNNPPPPRRTVVTTVV V VXZ\\\^``^^`` ^ \ Z Z Z\^^^\ZZXXLNJLNRTT T"V"V X X"X$V$V&X&P"N"N$P$R$R"R L"P&P(R(R&T&T$N*P*T(\*^*^(^&`&b&d&d$b$`$^$\(\^^\``b d f fffhhjlljj j"l"l$l&n&n(n*p*p(p&r&r(t(v(x(x&x$v$v"v t r p n nppnnnnljh:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4: \ ^^```^\\ZZZ86644<<<<::::<<<>@@@@BDDFFHHFFHJJHHH H J LLLJ<>>@@BB B D"D$D$B"B"@">"< < > @: :$>$@&@(@(>*>*<(<&>,6.6062646444222240408284868888:8<:<:::8:686666484:4:2<2<0>0@0@2@4>4>20:2:4:6:6<0<,@.@0@2@:>:@<@<>>>><<<<:<8>8>6<6<48D:D:BD>F@F@D@B>B>@@@B@D@F@F>FT>R>P>N>L>J>J`@`@^>^<^<\Z>XV@VBVDVFVFTDTDRBRBPBNBLDLFLFNDNDPFPHPJPJRHRFR,\*\*^*`(`(b(d&d$d"d"f ffh h j"j"h$h$j&j&h&f(f.\.^.`,`,b*b*d,d4`6`6b4b4d4f4h(h(j(l*l*j,j,l.l.j0n2n2p2r2t4t6t8t8r6r6p4p4n8j:jf@f@dBdBfBh@h@j@lBlBjDjDlDnFnFlFjFhDhDfFfHfHhJhJjHj0010 DOS:EQU 100H 0020 MVI B,3 0030 LXI H,YSIDE 0040 MVI C,13 0050 SET1 MOV M,B 0060 INX H 0070 DCR C 0080 JNZ SET1 0090 MOV A,C 0100 STA YPOT 0110 STA MPOT 0120 CALL BOARD 0130 YMOVE LXI H,YSIDE 0140 MVI B,6 0150 MVI C,0 0160 END1 MOV A,M 0170 CMP C 0180 JNZ YMOV1 0190 INX H 0200 DCR B 0210 JNZ END1 0220 JMP MMOVE 0230 YMOV1 LXI H,YMOVM 0240 CALL MESAG 0250 PIKUP:CALL CI 0260 CPI '1' 0270 JC PIKUP 0280 CPI '7' 0290 JNC PIKUP 0300 MOV C,A 0310 SUI 49 0640 LXI D,NBRD 0650 MOVE MOV A,M 0660 STAX D 0670 INX D 0680 INX H 0690 DCR B 0700 JNZ MOVE 0710 LXI H,MSIDE 0720 SHLD SAVE1 0730 SHLD SAVE2 0740 XCHG 0750 LDA MPOT 0760 STA GREAT 0770 MVI A,6 0780 STA CNTR 0790 FIND CALL MOVE2 0800 LHLD SAVE1 0810 MOV A,M 0820 ORA A 0830 JZ NEXT3 0840 MVI B,1 0850 CALL PITS 0860 LDA GREAT 0870 MOV B,A 0880 LDA MPOT 0890 CMP B 0900 JC NEXT3 0910 STA GREAT 0920 LHLD SAVE1 0930 SHLD SAVE2 0940 NEXT3 LHLD SAVE1 0950 INX H 0960 SHLD SAVE1 0970 LXI H,CNTR 0980 DCR M 0990 JNZ FIND 1000 CALL MOVE2 1010 LHLD SAVE2 1020 MVI B,1 1030 CALL PITS 1040 LXI H,MMOVM 1050 CALL MESAG 1060 LHLD SAVE2 1070 LXI D,-MSIDE 1080 DAD D 1090 MOV A,L 1100 ADI 177 1110 CALL PRINT 1120 CALL BOARD 1130 LDA AGAIN 1140 CPI 2 1150 JZ MMOVE 1160 JMP YMOVE 1170 MOVE2 LXI H,NBRD 1180 LXI D,YSIDE 1190 MVI B,14 1200 WORK MOV A,M 1210 STAX D 1220 INX D 1230 INX H 1240 DCR B 1250 JNZ WORK 1260 RET 1270 END:JMP DOS+28H 1280 PITS XRA A 1290 STA AGAIN 1300 MOV C,M 1310 MVI M,0 1320 ROTAT INX H 1330 MOV A,M 1340 CPI 255 1350 JNZ NEXT9 1360 LXI H,YSIDE 1370 NEXT9 INR M 1380 DCR C 1390 JNZ ROTAT 1400 XCHG 1410 LXI H,-MPOT 1420PRINT 2560 CALL PRINT 2570 JMP PRINT 2580 BLANK MVI A,32 2590 CALL PRINT 2600 JMP NDIGT 2610 YSIDE DS 6 2620 YPOT DS 1 2630 MSIDE DS 6 2640 MPOT DS 1 2650 DB 255 %2660 YMOVM DB 'YOUR MOVE (1-6) ? #' 2670 AGAIN DS 1 2680 NBRD DS 14 2690 CNTR DS 1 2700 SAVE1 DS 2 2710 SAVE2 DS 2 2720 GREAT DS 1 2730 MMOVM:DB 'I MOVE TO #' 27300010 DOS:EQU 100H 0020 LINES:EQU 2 0030 JMP START 0040 WID1:DB 4EH 0050 LEN1:DB 60H 0060 START:CALL CLR2 0070 LDA WID1 0080 ADD A 0090 DCR A 0100 STA WID 0110 DCR A 0120 MOV E,A 0130 MVI D,0 0140 LDA LEN1 0150 ADD A 0160 DCR A 0170 STA LEN 0180 DCR A 0190 CALL MULT 0200 CALL ROT 0210 CALL ROT 0220 SHLD NUM 0230 LDA WID1 0240 MOV L,A 0250 MVI H,0 0260 DAD H 0270 DAD H 0280 DAD H 0290 INX H 0300 SHLD WID9 0310 MVI H,1 0320 LDA LEN 0330 MOV D,A 0340 YLP:MVI L,1 0350 LDA WID 0360 MOV E,A 0370 HLP:CALL ON 0380 INR L 0390 DCR E 0400 JNZ HLP 0410 INR H 0420 DCR D 0430 JNZ YLP 0440 LXI H,202H 0450 CALL OFF 0460 SHLD MEM 0470 LXI H,1 0480 SHLD USED 0490 LXI H,MEM 0500 SHLD TAKE 0510 INX H 0520 INX H 0530 SHLD PUT 0540 GET:LHLD TAKE 0550 MOV E,M 0560 INX H 0570 MOV D,M 0580 INX H 0590 SHLD TAKE 0600 XCHG 0610 SHLD POS 0620 ZER:XRA A 0630 STA COUNT 0640 INRC:LXI H,COUNT 0650 INR M 0660 MOV A,M 0670 CPI 10 0680 JNC GET 0690 CALL RND 0700 LHLD POS 0710 CALL STEP 0720 SHLD MID 0730 CALL STEP 0740 SHLD NEW 0750 CALL BIT 0760 JZ INRC 0770 SHLD POS 0780 CALL OFF 0790 XCHG 0800 LHLD MID 0810 CALL OFF 0820 LHLD PUT 0830 MOV M,E 0840 INX H 0850 MOV M,D 0860 INX H 0870 SHLD PUT 0880 LHLD USED 0890 INX H 0900 SHLD USED 0910 XCHG 0920 LHLD NUM 0930 MOV A,E 0940 CMP L 0950 JNZ ZER 0960 MOV A,D 0970 CMP H 0980 JNZ ZER 0990 MVI A,1BH 0991 CALL PO 0992 MVI A,5BH 0993 CALL PO 1060 MVI A,1BH 1070 CALL PO 1080 MVI A,'T' 1090 CALL PO 1100 MVI A,31H 1110 CALL PO 1120 MVI A,36H 1130 CALL PO 1140 LXI H,-16 1150 SHLD SUB 1160 CALL CLEAR 1170 MVI D,2 1180 LDA LEN 1190 ADI 3 1200 MOV H,A 1210 YLP5:MVI E,2 1220 LDA WID 1230 ADI 3 1240 MOV L,A 1250 XLP:PUSH H 1260 XCHG 1270 SHLD POS 1280 XCHG 1290 PUSH D 1300 DCR E 1310 CALL BITDE 1320 CNZ LSIDE 1330 POP D 1340 PUSH D 1350 DCR D 1360 CALL BITDE 1370 CNZ TOP 1380 POP D 1390 POP H 1400 INR E 1410 INR E 1420 MOV A,E 1430 CMP L 1440 JNZ XLP 1450 INR D 1460 INR D 1470 MOV A,D 1480 CMP H 1490 JNZ YLP5 1500 MVI B,LINES 1510 LAST:CALL DUMP 1520 DCR B 1530 JNZ LAST 1540 RET 150010 DOS:EQU 100H 0020 LINES:EQU 2 0030 JMP START 0040 WID1:DB 4EH 0050 LEN1:DB 60H 0060 START:CALL CLR2 0070 LDA WID1 0080 ADD A 0090 DCR A 0100 STA WID 0110 DCR A 0120 MOV E,A 0130 MVI D,0 0140 LDA LEN1 0150 ADD A 0160 DCR A 0170 STA LEN 0180 DCR A 0190 CALL MULT 0200 CALL ROT 0210 CALL ROT 0220 SHLD NUM 0230 LDA WID1 0240 MOV L,A 0250 MVI H,0 0260 DAD H 0270 DAD H 0280 DAD H 0290 INX H 0300 SHLD WID9 0310 MVI H,1 0320 LDA LEN 0330 MOV D,A 0340 YLP:MVI L,1 0350 LDA WID 0360 MOV E,A 0370 HLP:CALL ON 0380 INR L 0390 DCR E 0400 JNZ HLP 0410 INR H 0420 DCR D 0430 JNZ YLP 0440 LXI H,202H 0450 CALL OFF 0460 SHLD MEM 0470 LXI H,1 0480 SHLD USED 0490 LXI H,MEM 0500 SHLD TAKE 0510 INX H 0520 INX H 0530 SHLD PUT 0540 GET:LHLD TAKE 0550 MOV E,M 0560 INX H 0570 MOV D,M 0580 INX H 0590 SHLD TAKE 0600 XCHG 0610 SHLD POS 0620 ZER:XRA A 0630 STA COUNT 0640 INRC:LXI H,COUNT 0650 INR M 0660 MOV A,M 0670 CPI 10 0680 JNC GET 0690 CALL RND 0700 LHLD POS 0710 CALL STEP 0720 SHLD MID 0730 CALL STEP 0740 SHLD NEW 0750 CALL BIT 0760 JZ INRC 0770 SHLD POS 0780 CALL OFF 0790 XCHG 0800 LHLD MID 0810 CALL OFF 0820 LHLD PUT 0830 MOV M,E 0840 INX H 0850 MOV M,D 0860 INX H 0870 SHLD PUT 0880 LHLD USED 0890 INX H 0900 SHLD USED 0910 XCHG 0920 LHLD NUM 0930 MOV A,E 0940 CMP L 0950 JNZ ZER 0960 MOV A,D 0970 CMP H 0980 JNZ ZER 0990 MVI A,1BH 0991 CALL PO 0992 MVI A,5BH 0993 CALL PO 1060 MVI A,1BH 1070 CALL PO 1080 MVI A,'T' 1090 CALL PO 1100 MVI A,31H 1110 CALL PO 1120 MVI A,36H 1130 CALL PO 1140 LXI H,-16 1150 SHLD SUB 1160 CALL CLEAR 1170 MVI D,2 1180 LDA LEN 1190 ADI 3 1200 MOV H,A 1210 YLP5:MVI E,2 1220 LDA WID 1230 ADI 3 1240 MOV L,A 1250 XLP:PUSH H 1260 XCHG 1270 SHLD POS 1280 XCHG 1290 PUSH D 1300 DCR E 1310 CALL BITDE 1320 CNZ LSIDE 1330 POP D 1340 PUSH D 1350 DCR D 1360 CALL BITDE 1370 CNZ TOP 1380 POP D 1390 POP H 1400 INR E 1410 INR E 1420 MOV A,E 1430 CMP L 1440 JNZ XLP 1450 INR D 1460 INR D 1470 MOV A,D 1480 CMP H 1490 JNZ YLP5 1500 MVI B,LINES 1510 LAST:CALL DUMP 1520 DCR B 1530 JNZ LAST 1540 RET 1550 BITDE:XCHG 1560 CALL BIT 1570 XCHG 1580 RET 1590 BIT:PUSH H 1600 CALL SET 1610 ANA M 1620 POP H 1630 RET 1640 LSIDE:CALL SETDH 1650 MVI B,9 1660 SDLP:CALL PLOT 1670 INX H 1680 DCR B 1690 JNZ SDLP 1700 RET 1710 TOP:LHLD POS 1720 XCHG 1730 MOV A,D 1740 CPI 2 1750 JNZ CHEK2 1760 MOV A,E 1770 CPI 2 1780 RZ 1790 CHEK2:LDA LEN 1800 INR A 1810 CMP D 1820 JNZ NOT 1830 LDA WID 1840 DCR A 1850 CMP E 1860 RZ 1870 NOT:CALL SETDH 1880 MVI B,9 1890 TPLP:CALL PLOT 1900 INX D 1910 DCR B 1920 JNZ TPLP 1930 RET 1940 SETDH:LHLD POS 1950 XCHG 1960 MOV L,E 1970 DCR L 1980 DCR L 1990 MVI H,0 2000 DAD H 2010 DAD H 2020 XCHG 2030 MOV L,H 2040 DCR L 2050 DCR L 2060 MVI H,0 2070 DAD H 2080 DAD H 2090 RET 2100 PLOT:PUSH B 2110 PUSH D 2120 PUSH H 2130 MOV B,H 2140 MOV C,L 2150 LHLD SUB 2160 DAD B 2170 JNC OK 2180 CALL DUMP 2190 DAD B 2200 OK:LXI B,16 2210 DAD B 2220 MOV A,L 2230 ANI 7 2240 MOV C,A 2250 MVI B,0 2260 MOV A,L 2270 ANI 0F8H 2280 MOV L,A 2290 DAD H 2300 DAD H 2310 DAD H 2320 DAD H 2330 DAD H 2340 DAD H 2350 DAD H 2360 DAD D 2370 LXI D,BUFFR 2380 DAD D 2390 MOV A,M 2400 XCHG 2410 LXI H,BITS2 2420 DAD B 2430 ORA M 2440 STAX D 2450 POP H 2460 POP D 2470 POP B 2480 RET 2490 DUMP:PUSH B 2500 PUSH D 2510 MVI A,1BH 2520 CALL PO 2530 MVI A,'S' 2540 CALL PO 2550 LHLD WID9 2560 LXI D,-1000 2570 CALL DIGIT 2580 LXI D,-100 2590 CALL DIGIT 2600 LXI D,-10 2610 CALL DIGIT 2620 MOV A,L 2630 ORI 30H 2640 CALL PO 2650 LHLD WID9 2660 XCHG 2670 LXI H,BUFFR 2680 DMPLP:MOV A,M 2690 CALL PO 2700 INX H 2710 DCX D 2720 MOV A,D 2730 ORA E 2740 JNZ DMPLP 2750 LXI D,BUFFR 2760 LXI H,BUFFR+1024 #2770 LXI B,1024 ;1024*LINES-1024 2780 MVLP:MOV A,M 2790 STAX D 2800 INX D 2810 INX H 2820 DCX B 2830 MOV A,B 2840 ORA C 2850 JNZ MVLP 2860 LXI H,BUFFR+1024 2870 LXI D,1024 2880 MVI B,0 2890 ZR:MOV M,B 2900 INX H 2910 DCX D 2920 MOV A,D 2930 ORA E 2940 JNZ ZR 2950 LXI D,-8 2960 LHLD SUB 2970 DAD D 2980 SHLD SUB 2990 MVI A,13 3000 CALL PO 3010 MVI A,10 3020 CALL PO 3030 POP D 3040 POP B 3050 RET 3060 DIGIT:MVI A,02FH 3070 DGLP:SHLD LNUM 3080 INR A 3090 DAD D 3100 JC DGLP 3110 LHLD LNUM 3120 JMP PO 3130 LNUM:DS 2 3140 CLEAR:LXI H,BUFFR 3150 LXI D,2048 3160 MVI B,0 3170 CLRLP:MOV M,B 3180 INX H 3190 DCX D 3200 MOV A,D 3210 ORA E 3220 JNZ CLRLP 3230 RET 3240 STEP:ANI 3 3250 JZ UP 3260 CPI 1 3270 JZ RIGHT 3280 CPI 2 3290 JZ DOWN 3300 LEFT:DCR L 3310 RET 3320 UP:DCR H 3330 RET 3340 DOWN:INR H 3350 RET 3360 RIGHT:INR L 3370 RET 3380 RND:PUSH B 3390 PUSH H 3400 LXI H,SH+3 3410 MVI B,8 3420 MOV A,M 3430 RTOP:RLC 3440 RLC 3450 RLC 3460 XRA M 3470 RAL 3480 RAL 3490 DCX H 3500 DCX H 3510 DCX H 3520 MOV A,M 3530 RAL 3540 MOV M,A 3550 INX H 3560 MOV A,M 3570 RAL 3580 MOV M,A 3590 INX H 3600 MOV A,M 3610 RAL 3620 MOV M,A 3630 INX H 3640 MOV A,M 3650 RAL 3660 MOV M,A 3670 DCR B 3680 JNZ RTOP 3690 POP H 3700 POP B 3710 RET 3720 SH:DB 55H 3730 DS 3 3740 MULT:LXI H,0 3750 MVI B,8 3760 MLTLP:DAD H 3770 RAL 3780 JNC DEC 3790 DAD D 3800 DEC:DCR B 3810 JNZ MLTLP 3820 RET 3830 ROT:STC 3840 CMC 3850 MOV A,H 3860 RAR 3870 MOV H,A 3880 MOV A,L 3890 RAR 3900 MOV L,A 3910 RET 3920 USED:DS 2 3930 NUM:DS 2 3940 POS:DS 2 3950 PUT:DS 2 3960 TAKE:DS 2 3970 NEW:DS 2 3980 MID:DS 2 3990 COUNT:DS 1 4000 WID:DB 40 4010 LEN:DB 40 4020 SUB:DS 2 4030 WID9:DS 2 4040 ON:PUSH H 4050 CALL SET 4060 ORA M 4070 MOV M,A 4080 POP H 4090 RET 4100 OFF:PUSH H 4110 CALL SET 4120 CMA 4130 ANA M 4140 MOV M,A 4150 POP H 4160 RET 4170 SET:PUSH B 4180 PUSH D 4190 MOV A,H 4200 RRC 4210 RRC 4220 RRC 4230 ANI 1FH 4240 MOV D,A 4250 MOV E,L 4260 MOV A,H 4270 ANI 7 4280 MOV C,A 4290 MVI B,0 4300 LXI H,BITS 4310 DAD B 4320 MOV A,M 4330 LHLD TBADD 4340 DAD D 4350 POP D 4360 POP B 4370 RET #4380 BITS:DB 128,64,32,16,8,4,2,1 $4390 BITS2:DB 1,2,4,8,16,32,64,128 4400 CLR2:LHLD TBADD 4410 LXI D,4096+4096 4420 MVI B,0 4430 C2LP:MOV M,B 4440 INX H 4450 DCX D 4460 MOV A,D 4470 ORA E 4480 JNZ C2LP 4490 RET 4500 PCRLF:MVI A,13 4510 CALL PO 4520 MVI A,10 4530 PO:PUSH B 4540 MOV B,A 4550 MVI A,1 4560 CALL DOS+0DH 4570 MOV A,B 4580 POP B 4590 RET 4600 BUFFR:DS 2048 4610 TBADD:DW TAB 4620 TAB:DS 8192 4630 MEM:EQU $ 4630DOS:EQU 100H GINVAL:EQU 234 ;NO REASON FOR 234 FIELD:EQU 50 WARM:EQU 128H JMP START SHOWFLAG:DB 1 START:LXI SP,0BFFFH MVI A,1 STA CCNTR LXI H,MYTAB PUSH H MVI E,1 CALL SETUP POP D CALL COUNT STA CUR LXI H,YUTAB MVI E,0 CALL SETUP CALL LISTU JMP DECK MLOOP:CALL LISTU LXI H,TPMSG CALL MESAG LDA TOP CALL PRCARD2 LXI H,QMSG CALL INPUT LDA IBUFF CPI 'A' JZ ARRANGE CPI 'T' JZ FTOP CPI 'D' JNZ ERROR DECK:LXI H,UDRAW CALL MESAG CALL CARD PUSH PSW CALL PRCARD2 LXI H,QEST2 CALL GETNUM POP B ORA A JZ DISC1 CPI 11 JNC DISC1 MOV E,A MVI D,0 LXI H,YUTAB-1 DAD D MOV A,M MOV M,B MOV B,A DISC1:MOV A,B STA TOP CALL SETUSED LXI D,YUTAB CALL COUNT CPI GINVAL JZ YUGIN LDA SHOWFLAG ORA A CNZ SHOWME LXI D,MYTAB CALL COUNT STA CUR LDA TOP CALL BEST CPI GINVAL JZ TAKIT LDA CUR SUB B JC TAKIT LXI H,IDRAW CALL MESAG CALL CARD PUSH PSW CALL BEST POP D LDA CUR SUB B MOV A,B STA CUR MOV A,D STA PICKUP JNC DISCARD LXI H,MYTAB MOV A,C CALL ADDAH MOV A,M MOV M,D DISCARD:MOV B,A STA TOP CALL SETUSED LDA SHOWFLAG ORA A CNZ SHOWCARD LXI H,IDISC CALL MESAG MOV A,B CALL PRCARD2 CALL CRLF LDA SHOWFLAG ORA A CNZ CI LDA CUR CPI GINVAL JNZ MLOOP LXI H,IGIN CALL MESAG LXI H,CHAINS GLP:MOV A,M CPI 3 JC DONTPR CALL CRLF MOV A,M INX H CPI 0FFH JZ PLAYAG MOV B,A GLP2:MOV A,B ORA A JZ GLP DCR B MOV A,M INX H XCHG LXI H,MYTAB CALL ADDAH MOV A,M XCHG CALL PRCARD2 MOV A,B ORA A MVI A,',' CNZ CO JMP GLP2 DONTPR:MOV E,A MVI D,0 DAD D INX H JMP GLP SHOWCARD:LXI H,SCRD CALL MESAG LDA PICKUP CALL PRCARD2 JMP CRLF SHOWME:LXI H,MYMSG CALL MESAG LXI H,MYTAB JMP LIST YUGIN:LXI H,UGINM CALL MESAG PLAYAG:LXI H,TRYAG CALL INPUT LDA IBUFF CPI 'Y' JZ START JMP WARM TAKIT:LXI H,ITOP CALL MESAG LDA TOP STA PICKUP MOV D,A MOV A,B STA CUR MVI B,0 LXI H,MYTAB DAD B MOV A,M MOV M,D JMP DISCARD FTOP:LXI H,QEST3 CALL GETNUM ORA A JZ FTOP CPI 11 JNC FTOP MOV E,A MVI D,0 LXI H,YUTAB-1 DAD D MOV B,M LDA TOP MOV M,A JMP DISC1 ARRANGE:LXI H,QEST4 CALL INPUT MVI B,10 LXI D,YUTAB LXI H,BUFF1 TBMV:LDAX D MOV M,A INX D INX H DCR B JNZ TBMV LXI H,IBUFF LXI D,YUTAB ARRLP:PUSH D CALL GETNUM1 POP D ORA A JZ NEXTNUM CPI 11 JNC NEXTNUM MOV C,A MVI B,0 PUSH H LXI H,BUFF1-1 DAD B MOV A,M MVI M,0FFH CMP M POP H JZ NEXTNUM STAX D INX D NEXTNUM:DCX H MOV A,M INX H CPI 0DH JNZ ARRLP LXI H,BUFF1 MVI B,10 CMPCT:MOV A,M CPI -1 JZ DECB STAX D INX D DECB:INX H DCR B JNZ CMPCT JMP MLOOP COUNT:XCHG SHLD HANDADD XCHG PUSH B PUSH D PUSH H LXI B,0 LXI H,PAIRS PLOOP1:XRA A STA FLAG PLOOP:INR C CALL PAIR MVI A,9 CMP C JNZ PLOOP INR B MOV C,B CMP B JNZ PLOOP1 MVI M,0FFH LXI D,PAIRS LXI H,CHAINS CHLP:LDAX D CPI 0FFH JZ CHDONE CPI 0FEH JZ SKIP2 BIT 6,A ;ABCDE JNZ NOCHAIN PUSH H MOV H,D MOV L,E BKLP:SHLD SAVE CALL SRCH2 JC AFTER DCX H MOV A,M JMP BKLP AFTER:POP H MOV B,H MOV C,L MVI M,0 INX H PUSH D XCHG LHLD SAVE AFTLP:MOV A,M ANI 7FH STAX D INX D MVI M,0FEH INX H LDAX B INR A STAX B MOV A,M ANI 7FH STAX D MOV A,M MVI M,0FEH CALL SRCH1 JNC AFTLP LDAX B INR A STAX B INX D XCHG POP D SKIP2:INX D INX D JMP CHLP NOCHAIN:MVI M,2 INX H MOV M,A INX H MVI A,0FEH STAX D INX D LDAX D MOV M,A INX H MVI A,0FEH STAX D INX D JMP CHLP CHDONE:MVI M,0FFH ;PUSH B ;PUSH D ;PUSH H ;LXI H,CHAINS ;ILP:MOV A,M ;ORA A ;CNZ CRLF ;MOV A,M ;INX H ;CPI 0FFH ;JZ DON99 ;MOV B,A ;ILP2:MOV A,B ;ORA A ;JZ ILP ;DCR B ;MOV A,M ;INX H ;XCHG ;LHLD HANDADD ;CALL ADDAH ;MOV A,M ;XCHG ;CALL PRCARD2 ;MVI A,20H ;MVI C,5 ;SP3:CALL CO ;DCR C ;JNZ SP3 ;JMP ILP2 ;DON99:CALL CI ;POP H ;POP D ;POP B LXI D,CHAINS FIXCH:LDAX D CPI 0FFH JZ DONEF XCHG SHLD OLD XCHG MOV L,A MVI H,0 STA NUM STA CNTR DAD D INX H SHLD NEXTADD LOOK:LDA CNTR ORA A JZ NOMORE DCR A STA CNTR INX D LDAX D SDED ADDR MOV B,A LHLD NEXTADD LOOK2:MOV A,M CPI -1 JZ LOOK STA NUM2 SHLD OLD2 MOV C,M LOOK3:INX H SHLD ADDR2 MOV A,C ORA A JZ LOOK2 DCR C MOV A,C STA CNTR5 MOV A,M CMP B JNZ LOOK3 LDA NUM2 MOV B,A LDA NUM CMP B JC FEWER CPI 3 JC LOOK3 PUSH B PUSH D CALL SET1 STA TYPE1 SBCD LENS1 SDED NEWADD1 SHLD INADD1 CALL SET2 STA TYPE2 SBCD LENS2 SDED NEWADD2 SHLD INADD2 ;MOV M,C ;GOES TO HERE IF SECOND CHAIN IS ;MOV A,B ;LESS THAN FIRST CHAIN (NUM2 ½ÂT.$¼ÂTÉ!x±ÈË8ËÒ·ë)ëì!·ÍVÃ!ÂÍVÃõÍìÍæÚäÍ+G:€2ñÉ> ¼Ø½ÉæÊþÊþÊþÊ:0800000131FFBF210000CD52C8 :08000883022C3E0CBDC2060070 :080010062E0024BCC2060021EB :080018DB2E04CD58033A4F041E :0800201BFE59C25200CD8E02F5 :0800286D21D503CD5803214FD2 :080030B604CD3D03CD7402DAE4 :080038C07902572B7ED640CDA2 :080040D87402DA79026F62CD77 :080048D85A02C279023E01CD33 :080050D85302CD69010628CD49 :080058D8BC00CAA3000604CDC8 :080060D8BC00CAA300061ECDA6 :080068D8F000CAA3000603CD85 :080070D8F000CAA3000614CD6C :080078D82A01CAA3000602CD3B :080080D82A01CAA3000614CD21 :080088D8F000CAA300060ACD5E :080090DBF000CAA300CD53010F :0800983367CD53016FCD5A020D :0800A063C295003E0ACD530234 :0800A836EB210604CD9103EBB8 :0800B06DCD5E01CD9B03CD690E :0800B8B301C32500AFCDF20036 :0800C030C0226504C53E089121 :0800C80C47C604CD1B020E0516 :0800D06DCD1502DAE600CD5AF0 :0800D8B302CAE40078CD1B025B :0800E0300DC2D000C1C9C12AD4 :0800E8DB6504CD0B01C3C00070 :0800F0183EFF326804210000F4 :0800F80C110060CD5A024F3AD1 :080100CC6804A1C220010E0825 :080108031AB8C8130DC2080167 :080110062C3E0CBDC2FB002EC3 :0801180C0024BCC2FB00B7C9B6 :0801200CEB3E08CDA503EBC377 :080128D81001CDF000C0AF3288 :080130D967043A67043C326709 :0801388C04130DCA4D011AB825 :0801406CC232013A6704E603C8 :08014863CA3201AFC9CD1001F9 :0801506CC32D01CDAA03E61FCB :08015818FE0CD25301C97C3CD6 :08016061CD07037DC641C38692 :0801688602210060224B0421F4 :080170190000224904AF324DD1 :0801789B04AF3264042A490420 :080180633A4D04C604CDFE01F3 :0801881BD604CDFE01CDFE01E2 :0801906DCDFE01CDFE013A64C4 :080198B1042A4B047723224B2A :0801A08C04FE05CADB01FE32EE :0801A86CCAE401214D04347E10 :0801B01BFE08DA79012A49045B :0801B8062C3E0CBDC272012EA3 :0801C00C0024BCC27201C9212C :0801C800000078B1C8CB38CB70 :0801D03019D2D50119EB29EB1E :0801D86DC3CA0121F203CD91B0 :0801E0B603C3ED0121FD03CDBF :0801E8DB9103CD8E02212004FE :0801F06CCD58033A4F04FE598F :0801F860CA0000C32801F5CD27 :080200DB1B02CD1502DA13022B :08020866CD5A02473A640480F6 :08021060326404F1C93E0BBC2D :08021803D8BDC9E607CA410283 :08022018FE01CA4302FE02CAE6 :080228C64602FE03CA4802FEAD :0802303104CA4B02FE05CA4D60 :0802388C02FE06CA5002252DBE :08024000C925C9252CC92CC9F0 :08024800242CC924C9242DC98E :080250062DC9AFE5CD6202776E :0802580CE1C9E5CD62027EE173 :08026000B7C9D5EB6A26005472 :0802680129292929291911692D :080270800419D1C93DFE0C3FC9 :08027836C921E203CD9103C355 :080280C02500AFC31001C54702 :08028801AFCD0D01C1C9CD9BF1 :0802908C030604CDF3020641C4 :080298060E0C3E20CD8602CDBE :0802A0CC860278CD8602040D24 :0802A86CC29A02CD9B032100F8 :0802B00C007C3CCD32033E043E :0802B8189047CDF3027C3CCD08 :0802C0C607033E20CD8602CDE6 :0802C8DB8602CD5A02CDE802EB :0802D03078CD86022C3E0CBDF6 :0802D86CC2C202CD9B032E0093 :0802E006243E0CBCC2B102C9A8 :0802E800062EB7C806583DC8F8 :0802F003064FC93E20CD860232 :0802F83105C2F502C97ECD8675 :0803008C022305C2FD02C9C5F0 :08030801D51E00470E64CD1E55 :0803108C030E0ACD1E0378C612 :0803180C30D1C1C3860216FFAF :0803200C781491D221038147EE :080328007AB35FC87AC630C346 :080330C086020601FE0AD80492 :08033800FE64D804C916007E22 :0803400C23D630DA5603FE0A45 :08034860D256035F7A878782B9 :0803500C878357C33F037AC9F0 :08035863CD91030600214F045F :08036060CD8202FE03CA2801F0 :0803680C77FE5FCA8203FE0D53 :08037061CA9B0378FE14CA6008 :08037886037E2304CD8602C337 :080380C6600378B7CA600305EB :0803880D2B3E5FCD8602C36020 :08039086037EB7C8CD86022367 :08039863C391033E0DCD860203 :0803A0183E0AC38602856FD0E6 :0803A80624C9C5E521D40306B2 :0803B000087E070707AE1717CE :0803B8002B2B2B7E1777237E0F :0803C0001777237E1777237ED7 :0803C80C177705C2B203E1C175 :0803D000C901001234594F5518 :0803D80052204D4F5645203F15 :0803E0002000494C4C45474147 :0803E8004C204D4F56452E0D2F :0803F0000A00594F552057493E :0803F8004E2E0D0A00492057AA :08040000494E210D0A004920BC :080408004D4F564520544F20D2 :080410000057484154205351EC :0804180055415245203F200030 :08042000504C415920414741B5 :08042800494E203F2000444F23 :0804300020594F552057414EA1 :080438005420544F20474F20CF :080440004649525354203F20AD :08044800000100010001001495 :070463000000010000007F12 :0105E8000012 :00000001FF ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0005 DOS:EQU 100H 0007 WARM:EQU DOS+28H 0010 START:CALL RND 0020 ANI 7 0030 CPI 2 0040 JC START 0050 STA NUM 0060 MOV B,A 0070 LXI H,CARDS 0080 CRLP:MVI M,0 0090 CRLP1:CALL RND 0100 ANI 15 0110 MOV C,A 0120 LXI D,CARDS 0130 CRLP2:LDAX D 0140 CMP C 0150 JZ CRLP1 0160 CALL DEHL 0170 INX D 0180 JNZ CRLP2 0190 MOV A,C 0200 MOV M,A 0210 INX H 0220 DCR B 0230 JNZ CRLP 0240 LDA NUM 0250 MOV B,A 0260 FND:CALL RND 0270 ANI 15 0280 JZ FND 0290 CMP B 0300 JNC FND 0310 STA NUM1 0320 LXI H,FLAGS 0330 MVI B,15 0340 XRA A 0350 FLLP:MOV M,A 0360 INX H 0370 DCR B 0380 JNZ FLLP 0390 XRA A 0400 STA RDBUF 0410 CALL SHOW 0420 NOWIN:LXI H,MSG1 0430 CALL PMESG 0440 LDA NUM1 0450 CALL PNUM 0460 CALL CRLF 0490 MVI A,3EH 0500 CALL CHOUT 0510 CALL READ 0520 CALL CMPCT 0530 LXI H,FLAGS 0540 LXI D,CARDS 0550 LDA NUM 0560 MOV B,A 0570 CLP:PUSH B 0580 PUSH D 0590 PUSH H 0600 LDAX D 0610 CALL EVAL 0620 POP H 0630 POP D 0640 POP B 0650 MOV M,A 0660 INX D 0670 INX H 0680 DCR B 0690 JNZ CLP 0700 CALL SHOW 0710 LXI H,FLAGS 0720 LDA NUM1 0730 MOV C,A 0740 LDA NUM 0750 SUB C 0760 MOV B,A 0770 TLP1:MOV A,M 0780 INX H 0790 DCR A 0800 JNZ NOWIN 0810 DCR C 0820 JNZ TLP1 0830 TLP2:MOV A,M 0840 INX H 0850 ORA A 0860 JNZ NOWIN 0870 DCR B 0880 JNZ TLP2 0885 CALL CRLF 0890 LXI H,RDBUF 0900 CALL PMESG 0905 CALL CRLF 0910 LXI H,WINM 0920 CALL PMESG 0930 CALL CI 0940 JMP START 0950 EVAL:STA BITS 0960 LXI H,CBUF 0970 LXI D,CBUF1 0975 MOV A,M 0976 INR A 0977 JZ PUT0 0980 ELP:MOV A,M 0990 STAX D 1000 INX D 1010 INX H 1020 CPI 0FFH 1030 JZ DONE1 1040 CPI 10H 1050 JZ ISNOT 1060 CPI 4 1070 JNC ELP 1080 CALL GBIT 1090 DCX D 1100 STAX D 1110 INX D 1120 JMP ELP 1130 ISNOT:MOV A,M 1140 CALL GBIT 1150 CMA 1160 ANI 1 1170 DCX D 1180 STAX D 1190 INX D 1200 INX H 1210 JMP ELP 1220 GBIT:MOV B,A 1230 INR B 1240 LDA BITS 1250 RLC 1260 RTLP:RRC 1270 DCR B 1280 JNZ RTLP 1290 ANI 1 1300 RET 1301 PUT0:XRA A 1302 STAX D 1303 INX D 1304 DCR A 1305 STAX D 1310 DONE1:LXI H,CBUF1 1320 MVI B,17 1330 CALL DOOP 1340 LXI H,CBUF1 1350 MVI B,18 1360 CALL DOOP 1370 LDA CBUF1 1380 ORA A 1390 RET 1400 DOOP:MOV A,M 1410 CPI 0FFH 1420 RZ 1430 INX H 1440 CMP B 1450 JNZ DOOP 1460 MOV C,M 1470 DCX H 1480 DCX H 1490 CALL OP 1500 MOV M,A 1510 INX H 1520 PUSH H 1530 MOV D,H 1540 MOV E,L 1550 INX H 1560 INX H 1570 MVLP:MOV A,M 1580 STAX D 1590 INX D 1600 INX H 1610 CPI 0FFH 1620 JNZ MVLP 1630 POP H 1640 JMP DOOP 1650 OP:MOV A,B 1660 CPI 17 1670 JZ AND 1680 MOV A,C 1690 ORA M 1700 RET 1710 AND:MOV A,C 1720 ANA M 1730 RET 1740 READ:LXI H,RDBUF 1750 MVI B,0 1760 RDLP:CALL CI 1762 CPI 3 1763 JZ WARM 1770 CPI 7FH 1780 JZ BACK 1790 CPI 'G'-40H 1800 JZ REPET 1810 MOV M,A 1820 INX H 1840 INR B 1850 CALL CHOUT 1860 CPI 0DH 1870 JNZ RDLP 1875 MVI M,0 1880 RET 1900 REPET:MOV A,M 1905 CPI 0DH 1906 JZ RDLP 1907 CALL CHOUT 1920 INX H 1940 INR B 1960 JMP REPET 1970 BACK:MOV A,B 1980 ORA A 1990 JZ RDLP 2000 DCR B 2010 DCX H 2020 MVI A,8 2030 CALL CHOUT 2040 JMP RDLP 2050 CMPCT:LXI H,CBUF 2060 SHLD PNTR 2070 LXI H,RDBUF 2080 CMPLP:LXI D,WORDS 2090 FLP:PUSH H 2100 MVI B,3 2110 FLP1:MOV A,M 2120 CPI 0DH 2130 JZ FINSH 2140 LDAX D 2150 CPI 0FFH 2160 JZ NONE 2170 ORA A 2180 JZ FOUND 2190 CMP M 2200 JNZ NEXT 2210 INX D 2220 INX H 2230 DCR B 2240 JNZ FLP1 2250 DCX D 2260 FOUND:INX D 2270 LDAX D 2280 POP D 2290 XCHG 2300 LHLD PNTR 2310 MOV M,A 2320 INX H 2330 SHLD PNTR 2340 MVI M,0FFH 2350 XCHG 2360 JMP CMPLP 2370 FINSH:LHLD PNTR 2371 MVI M,0FFH 2372 POP H 2380 RET 2390 NONE:POP H 2400 INX H 2410 JMP CMPLP 2420 NEXT:POP H 2430 INR B 2440 STPLP:INX D 2450 DCR B 2460 JNZ STPLP 2470 JMP FLP 2480 CRLF:MVI A,0DH 2481 CALL CHOUT 2482 MVI A,10 2483 CHOUT:PUSH B 2484 MOV B,A 2485 XRA A 2486 CALL DOS+0DH 2487 POP B 2488 RET 2489 CI:XRA A 2490 JMP DOS+10H 2560 SHOW:CALL CRLF 2561 CALL CRLF 2580 MVI B,8 2590 SHLP1:LDA NUM 2600 MOV C,A 2610 MOV A,B 2620 CPI 4 2630 CZ LINE 2640 SHLP:LXI H,FLAGS 2650 LDA NUM 2660 SUB C 2670 MOV E,A 2680 MVI D,0 2690 DAD D 2700 MOV A,B 2710 CPI 5 2720 RAL 2730 XRA M 2740 ANI 1 2750 JNZ PSPC 2760 LXI D,-16 2770 DAD D 2780 MOV A,B 2790 DCR A 2800 ANI 3 2810 INR A 2820 MOV D,A 2830 MOV A,M 2840 RLC 2850 RTLP1:RRC 2860 DCR D 2870 JNZ RTLP1 2880 ANI 1 2890 JZ PSPC 2900 LXI H,CLORS-4 2910 LXI D,4 2920 MOV A,B 2930 DCR A 2940 ANI 3 2950 INR A 2960 STLP1:DAD D 2970 DCR A 2980 JNZ STLP1 2990 MVI D,4 3000 PCLOR:MOV A,M 3010 CALL CHOUT 3020 INX H 3030 DCR D 3040 JNZ PCLOR 3050 DEC:DCR C 3060 JNZ SHLP 3070 CALL CRLF 3080 DCR B 3090 JNZ SHLP1 3100 RET 3110 LINE:MOV D,C 3120 LNLP:MOV A,C 3130 SUB D 3140 INR A 3150 CALL PNUM1 3160 MVI A,'-' 3170 CALL CHOUT 3180 DCR D 3190 JNZ LNLP 3200 JMP CRLF 3210 PSPC:MVI D,4 3220 MVI A,20H 3230 SPCLP:CALL CHOUT 3240 DCR D 3250 JNZ SPCLP 3260 JMP DEC 3270 DEHL:MOV A,D 3280 CMP H 3290 RNZ 3300 MOV A,E 3310 CMP L 3320 RET 3330 PMESG:MOV A,M 3340 ORA A 3350 RZ 3360 CALL CHOUT 3370 INX H 3380 JMP PMESG 3390 PNUM1:MVI H,100 3400 MVI L,0 3410 CALL DIG1 3420 MVI H,10 3430 CALL DIG1 3440 ADI 30H 3450 JMP CHOUT 3460 DIG1:MVI E,-1 3470 DGLP1:INR E 3480 SUB H 3490 JNC DGLP1 3500 ADD H 3510 MOV H,A 3520 MOV A,E 3530 ORA L 3540 MOV L,A 3550 JZ PDG2 3560 MVI A,30H 3570 ADD E 3580 CALL CHOUT 3590 MOV A,H 3600 RET 3610 PDG2:MVI A,'-' 3620 CALL CHOUT 3630 MOV A,H 3640 RET 3650 PNUM:MVI B,100 3660 MVI C,0 3670 CALL DIGIT 3680 MVI B,10 3690 CALL DIGIT 3700 ADI 30H 3710 JMP CHOUT 3720 DIGIT:MVI D,-1 3730 DGLP:INR D 3740 SUB B 3750 JNC DGLP 3760 ADD B 3770 MOV E,A 3780 MOV A,C 3790 ORA D 3800 MOV C,A 3810 MOV A,E 3820 RZ 3830 MVI A,30H 3840 ADD D 3850 CALL CHOUT 3860 MOV A,E 3870 RET 3880 RND:PUSH B 3890 PUSH H 3900 LXI H,SH+3 3910 MVI B,8 3920 MOV A,M 3930 RTOP:RLC 3940 RLC 3950 RLC 3960 XRA M 3970 RAL 3980 RAL 3990 DCX H 4000 DCX H 4010 DCX H 4020 MOV A,M 4030 RAL 4040 MOV M,A 4050 INX H 4060 MOV A,M 4070 RAL 4080 MOV M,A 4090 INX H 4100 MOV A,M 4110 RAL 4120 MOV M,A 4130 INX H 4140 MOV A,M 4150 RAL 4160 MOV M,A 4170 DCR B 4180 JNZ RTOP 4190 POP H 4200 POP B 4210 RET 4220 SH:DS 4 4230 NUM:DS 1 4240 NUM1:DS 1 4250 RDBUF:DS 128 4260 CBUF:DS 64 4270 CBUF1:DS 64 4280 CARDS:DS 16 4290 FLAGS:DS 16 4300 BITS:DS 1 4310 PNTR:DS 2 $4320 MSG1:DB 'SELECT THE FIRST ',0 "4330 CLORS:DB 'BLU RED GRN TAN ' "4340 WINM:DB 'YOU WIN',0DH,0AH,0 4350 WORDS:DB 'BLU',0 4360 DB 'RED',1 4370 DB 'GRN',2 4380 DB 'TAN',3 4390 DB 'NOT',16 4400 DB 'AND',17 4410 DB 'OR',0,18 4420 DB 0FFH 44200010 DOS:EQU 100H 0020 WARM:EQU DOS+28H 0030 START:LXI H,BOARD 0040 LXI B,100 0050 FLLP:MOV M,B 0060 INX H 0070 DCR C 0080 JNZ FLLP 0090 MVI A,1 0100 STA BOARD+45 0110 STA BOARD+54 0120 INR A 0130 STA BOARD+44 0140 STA BOARD+55 0150 STA YOU 0160 STA ME 0170 MVI A,4 0180 STA USED 0190 MLOOP:LXI B,3108H 0200 MVI A,20H 0210 MOV D,A 0220 CALL CO 0230 CALL CO 0240 CALL CO 0250 TPLP:MOV A,B 0260 CALL CO 0270 MOV A,D 0280 CALL CO 0290 CALL CO 0300 INR B 0310 DCR C 0320 JNZ TPLP 0330 CALL CRLF 0340 MVI B,8 0350 LXI H,BOARD+11 0360 MVI D,0 0370 YLOOP:MVI C,8 0380 MVI A,39H 0390 SUB B 0400 CALL CO 0410 XLOOP:MVI A,32 0420 CALL CO 0430 CALL CO 0440 MOV E,M 0450 PUSH H 0460 LXI H,CHARS 0470 DAD D 0480 MOV A,M 0490 CALL CO 0500 POP H 0510 INX H 0520 DCR C 0530 JNZ XLOOP 0540 CALL CRLF 0550 INX H 0560 INX H 0570 DCR B 0580 JNZ YLOOP 0590 LXI H,OEQ 0600 CALL MESAG 0610 LDA ME 0620 CALL PRDEC 0630 LXI H,XEQ 0640 CALL MESAG 0650 LDA YOU 0660 CALL PRDEC 0670 CALL CRLF 0680 LDA USED 0690 CPI 64 0700 JNC END 0710 LXI H,YMOV 0720 CALL MESAG 0730 LXI B,0 0740 RDLP:CALL CI 0750 CPI 3 0760 JZ WARM 0770 CPI 'P' 0780 JZ PASS 0790 CPI 0DH 0800 JZ DONRD 0810 CPI 31H 0820 JC RDLP 0830 CPI 39H 0840 JNC RDLP 0850 MOV B,C 0860 CALL CO 0870 SUI 30H 0880 MOV C,A 0890 JMP RDLP 0900 DONRD:CALL CRLF 0910 MOV A,B 0920 ADD A 0930 ADD A 0940 ADD B 0950 ADD A 0960 ADD C 0970 MOV B,A 0980 MVI C,1 0990 CALL TEST 1000 JZ ILLGL 1010 MOV D,A 1020 LDA YOU 1030 ADD D 1040 INR A 1050 STA YOU 1060 LDA ME 1070 SUB D 1080 STA ME 1090 CALL MOVE 1100 PASS2: 1110 MVI C,2 1120 XRA A 1130 STA CMOV 1140 MOVME:LDA CMOV 1150 MOV E,A 1160 MVI D,0 1170 LXI H,MOVES 1180 DAD D 1190 MOV B,M 1200 CALL TEST 1210 JNZ DOIT 1220 LXI H,CMOV 1230 INR M 1240 MOV A,M 1250 CPI 61 1260 JC MOVME 1270 JMP MLOOP 1280 JMP MOVME 1290 DOIT:MOV D,A 1300 LDA ME 1310 ADD D 1320 INR A 1330 STA ME 1340 LDA YOU 1350 SUB D 1360 STA YOU 1370 CALL MOVE 1380 LXI H,IMVTO 1390 CALL MESAG 1400 MOV A,B 1410 CALL PRDEC 1420 CALL CRLF 1430 JMP MLOOP 1440 PASS:CALL CRLF 1441 LXI B,0B01H 1450 MVI D,8 1460 PS1:MVI E,8 1470 PS2:PUSH D 1471 PUSH B 1480 CALL TEST 1483 POP B 1485 POP D 1490 JNZ ILLGL 1500 INR B 1510 DCR E 1520 JNZ PS2 1530 INR B 1531 INR B 1560 DCR D 1570 JNZ PS1 1580 JMP PASS2 1610 ILLGL:LXI H,ILLM 1620 CALL MESAG 1630 JMP MLOOP 1640 PRDEC:LXI B,100 1650 MOV D,A 1660 CALL DIGIT 1670 MVI C,10 1680 CALL DIGIT 1690 MOV A,D 1700 ADI 30H 1710 JMP CO 1720 DIGIT:MVI E,-1 1730 MOV A,D 1740 DGLP:INR E 1750 SUB C 1760 JNC DGLP 1770 ADD C 1780 MOV D,A 1790 MOV A,E 1800 ORA B 1810 MOV B,A 1820 RZ 1830 MVI A,30H 1840 ADD E 1850 JMP CO 1860 MESAG:MOV A,M 1870 ORA A 1880 RZ 1890 CALL CO 1900 INX H 1910 JMP MESAG 1920 TEST:MOV E,B 1930 MVI D,0 1940 MOV A,D 1950 STA COUNT 1960 LXI H,BOARD 1970 DAD D 1980 MOV A,M 1990 ORA A 2000 JNZ BAD 2010 MVI A,3 2020 SUB C 2030 STA Y2 2040 MVI A,8 2050 STA CNTR 2060 TSTLP:PUSH B 2070 XRA A 2080 STA CNT1 2090 LDA CNTR 2100 MOV E,A 2110 MVI D,0 2120 LXI H,STEPS-1 2130 DAD D 2140 MOV C,M 2150 TLP1:MOV A,B 2160 ADD C 2170 MOV B,A 2180 MOV E,A 2190 LXI H,BOARD 2200 DAD D 2210 LDA Y2 2220 CMP M 2230 JNZ SET0 2240 LXI H,CNT1 2250 INR M 2260 JMP TLP1 2270 SET0:MOV B,D 2280 XCHG 2290 LXI H,FLAGS-1 2300 LDA CNTR 2310 MOV C,A 2320 DAD B 2330 MVI M,0 2340 XCHG 2350 POP B 2360 MOV A,C 2370 CMP M 2380 JNZ IS0 2390 LDA CNT1 2400 STAX D 2410 MOV D,A 2420 LDA COUNT 2430 ADD D 2440 STA COUNT 2450 IS0:LXI H,CNTR 2460 DCR M 2470 JNZ TSTLP 2480 BAD:LDA COUNT 2490 ORA A 2500 RET 2510 MOVE:LXI H,BOARD 2520 MOV E,B 2530 MVI D,0 2540 DAD D 2550 MOV M,C 2560 MVI A,8 2570 STA CNTR 2580 MVLP:LDA CNTR 2590 MOV E,A 2600 MVI D,0 2610 LXI H,FLAGS-1 2620 DAD D 2630 MOV E,M 2640 MOV A,E 2650 ORA A 2660 JZ DONXT 2670 STA CNT1 2680 PUSH B 2690 LDA CNTR 2700 MOV E,A 2710 MVI D,0 2720 LXI H,STEPS-1 2730 DAD D 2740 MOV A,M 2750 STA STEP 2760 MVLP1:LDA STEP 2770 ADD B 2780 MOV B,A 2790 MOV E,B 2800 LXI H,BOARD 2810 DAD D 2820 MOV M,C 2830 LXI H,CNT1 2840 DCR M 2850 JNZ MVLP1 2860 POP B 2870 DONXT:LXI H,CNTR 2880 DCR M 2890 JNZ MVLP 2900 LXI H,USED 2910 INR M 2920 RET 2930 MOV A,M 2940 CPI 64 2950 RC 2960 POP H 2970 END:LXI H,GMOV 2980 CALL MESAG 2990 LDA YOU 3000 MOV B,A 3010 LDA ME 3020 CMP B 3030 LXI H,TIE 3040 JZ OK 3050 LXI H,IWIN 3060 JNC OK 3070 LXI H,YWIN 3080 OK:CALL MESAG 3090 CALL CRLF 3100 JMP START 3110 CI:XRA A 3120 JMP DOS+10H 3130 CRLF:MVI A,13 3140 CALL CO 3150 MVI A,10 3160 CO:PUSH B 3170 MOV B,A 3180 XRA A 3190 CALL DOS+0DH 3200 POP B 3210 RET 3220 TIE:DB 'TIE GAME.',0 3230 IWIN:DB 'I WIN!',0 3240 YWIN:DB 'YOU WIN.',0 3250 CHARS:DB '.XO' 3260 BOARD:DS 100 3270 YOU:DS 1 3280 ME:DS 1 3290 USED:DS 1 3300 YMOV:DB 'YOUR MOVE ? ',0 &3310 ILLM:DB 'ILLEGAL MOVE.',13,10,0 3320 GMOV:DB 'GAME OVER.',0 3330 OEQ:DB ' O=',0 3340 XEQ:DB ' X=',0 3350 CNTR:DS 1 3360 CNT1:DS 1 3370 COUNT:DS 1 3380 FLAGS:DS 8 '3390 STEPS:DB -11,-10,-9,1,11,10,9,-1 3400 Y2:DS 1 3410 CMOV:DS 1 3420 STEP:DS 1 3430 IMVTO:DB 'I MOVE TO ',0 -3440 MOVES:DB 11,18,81,88,13,16,31,38,61,68 (3450 DB 83,86,33,36,63,66,14,15,41,48 (3460 DB 51,58,84,85,34,35,43,46,53,56 (3470 DB 64,65,24,25,42,47,52,57,74,75 (3480 DB 23,26,32,37,62,67,73,76,12,17 (3490 DB 21,28,71,78,82,87,22,27,72,77 3490:DS 2 3950 PUT:DS 2 3960 TAKE:DS 2 3970 NEW:DS 2 3980 MID:DS 2 3990 COUNT:DS 1 4000 WID:DB 40 4010 LEN:DB 40 4020 SUB:DS 2 4030 WID9:DS 2 4040 ON:PUSH H 4050 CALL SET 4060 ORA M 4070 MOV M,A 4080 POP H 4090 RET 4100 OFF:PUSH H 4110 C 0010 DOS:EQU 100H 0020 VNUM:EQU 64 0030 ANUM:EQU 5 0040 BNUM:EQU 5 0050 CNUM:EQU 5 0060 DNUM:EQU 5 0070 MINE:EQU 5 0080 START:CALL ZEROS 0090 CALL CME 0100 CALL CME 0110 CALL CME 0120 CALL CME 0130 CALL CYOU 0140 CALL CYOU 0150 CALL CYOU 0160 CALL CYOU 0170 MLOOP:LXI H,CTABL 0180 MVI B,11 0190 LXI D,0 0200 ELP:MVI C,4 0210 XRA A 0220 ELP2:ADD M 0230 INX H 0240 DCR C 0250 JNZ ELP2 0260 CPI 4 0270 JZ PYOU 0280 CPI 20 0290 JNZ QUIT 0300 PME:INR E 0310 JMP GOON 0320 PYOU:INR D 0330 GOON:DCR B 0340 JNZ ELP 0350 LXI H,ENDM 0360 CALL MESAG 0370 MOV A,D 0380 CMP E 0390 JC IWON 0400 LXI H,YWIN 0410 CALL MESAG 0420 JMP START 0430 IWON:LXI H,IWIN 0440 CALL MESAG 0450 JMP START 0460 QUIT:LXI H,YHAND 0470 CALL MESAG 0480 CALL PRHND 0490 LXI H,QUEST 0500 CALL INPUT 0510 CALL LOOK 0520 JNZ BAD 0530 STA CARD 0540 MVI B,1 0550 CALL MASK 0560 JNZ CANT 0570 LDA CARD 0580 LXI H,CTABL 0590 CALL ADDAH 0600 MOV A,M 0610 CPI MINE 0620 JNZ DRAW !0630 ;YOU ASK ME AND I HAVE IT. 0640 MVI M,1 0650 LXI H,IHAVE 0660 CALL MESAG 0670 LDA CARD 0680 MVI B,0C0H 0690 CALL ON 0700 LDA CARD 0710 MVI B,16 0720 CALL ONALL 0730 JMP MLOOP 0740 DRAW:LXI H,NOHAV 0750 CALL MESAG 0760 CALL CYOU 0770 JC MTURN 0780 MOV B,A 0790 LDA CARD 0800 CMP B 0810 JNZ MTURN -0820 ; YOU ASK ME,I DON'T HAVE,YOU DRAW IT. 0830 LXI H,LUCK 0840 CALL MESAG 0850 LDA CARD 0860 MVI B,40H 0870 CALL ON 0880 LDA CARD 0890 MVI B,10H 0900 CALL ONALL 0910 JMP MLOOP 30920 ; YOU ASK ME,I DON'T HAVE,YOU DON'T DRAW IT. 0930 MTURN:LDA CARD 0940 MVI B,10H 0950 CALL ONALL 0960 DOME:LXI H,VALUS 0970 LXI D,CTABL 0980 MVI B,11 0990 XRA A 1000 STA MOST 1010 STA WHICH 1020 MAXLP:MVI C,4 1030 PUSH D 1040 MXLP2:LDAX D 1050 CPI MINE 1060 JZ THIS 1070 INX D 1080 DCR C 1090 JNZ MXLP2 1100 POP D 1110 INX D 1120 INX D 1130 INX D 1140 INX D 1150 INX H 1160 INX H 1170 INX H 1180 INX H 1190 JMP NEXT1 1200 THIS:POP D 1210 MVI C,4 1220 MXLP3:LDAX D 1230 CPI MINE 1240 ;JZ NEXT4 1250 LDA MOST 1260 CMP M 1270 JC BIGGR 1280 JNZ NEXT4 1290 PUSH H 1300 LXI H,CNTR 1310 INR M 1320 MOV A,M 1330 LXI H,SAMES 1340 CALL ADDAH 1350 MVI A,12 1360 SUB B 1370 ADD A 1380 ADD A 1390 SUB C 1400 MOV M,A 1410 POP H 1420 JMP NEXT4 1430 BIGGR:MOV A,M 1440 STA MOST 1450 MVI A,12 1460 SUB B 1470 ADD A 1480 ADD A 1490 SUB C 1500 STA WHICH 1510 STA SAMES 1520 XRA A 1530 STA CNTR 1540 NEXT4:INX D 1550 INX H 1560 DCR C 1570 JNZ MXLP3 1580 NEXT1:DCR B 1590 JNZ MAXLP 1600 LDA CNTR 1610 ORA A 1620 JZ NOSAM 1630 INR A 1640 MOV B,A 1650 RFND:CALL RND 1660 ANI 63 1670 CMP B 1680 JNC RFND 1690 LXI H,SAMES 1700 CALL ADDAH 1710 MOV A,M 1720 STA WHICH 1730 NOSAM: 1740 JMP NOSHW 1750 LXI H,CTABL 1760 MVI C,44 1770 MELP:CALL FOUR 1780 MOV A,M 1790 CPI MINE 1800 MVI A,'V' 1810 JZ PCHR 1820 MVI A,' ' 1830 PCHR:CALL CHOUT 1840 INX H 1850 DCR C 1860 JNZ MELP 1870 CALL CRLF 1880 CALL PVALS 1890 CALL CRLF 1900 LDA WHICH 1910 CALL SPACE 1920 MVI A,'^' 1930 CALL CHOUT 1940 CALL CRLF 1950 NOSHW: 1960 MVI B,18H 1970 LDA WHICH 1980 CALL OFF 1990 LXI H,DOHAV 2000 CALL MESAG 2010 LDA WHICH 2020 CALL PRCD2 2030 LXI H,QMARK 2040 CALL INPUT 2050 LDA WHICH 2060 LXI H,CTABL 2070 CALL ADDAH 2080 MOV A,M 2090 CPI 1 2100 JNZ DONOT 2110 LDA BUFFR 2120 CPI 'Y' 2130 CNZ LIE1 2140 JMP TAKE 2150 DONOT:LDA BUFFR 2160 CPI 'Y' 2170 CZ LIE2 2180 CALL CME 2190 JC YTURN 2200 MOV B,A 2210 LDA WHICH 2220 CMP B 2230 JNZ YTURN 2240 ;MVI B,-VNUM +2250 ;I ASK YOU,YOU DON'T HAVE,I DRAW IT. 2260 LXI H,IGOT 2270 CALL MESAG 2280 JMP DOME 12290 ;I ASK YOU,YOU DON'T HAVE,I DON'T DRAW IT. 2300 YTURN:MVI B,2 2310 LDA WHICH 2320 CALL OFF 2330 JMP MLOOP 2340 ;I ASK YOU,YOU HAVE IT. 2350 TAKE:MVI M,MINE 2360 MVI B,8 2370 LDA WHICH 2380 CALL ONALL 2390 MVI B,0D8H 2400 LDA WHICH 2410 CALL OFF 2420 JMP DOME 2430 PVALS:LXI H,VALUS 2440 MVI C,44 2450 VALLP:CALL FOUR 2460 MOV A,M 2470 ORI 80H 2480 CALL CHOUT 2490 INX H 2500 DCR C 2510 JNZ VALLP 2520 RET 2530 SPACE:MOV C,A 2540 SPCLP:CALL FOUR 2550 MOV A,C 2560 ORA A 2570 RZ 2580 MVI A,20H 2590 CALL CHOUT 2600 DCR C 2610 JMP SPCLP 2620 RET 2630 FOUR:MVI A,44 2640 SUB C 2650 ANI 3 2660 RNZ 2670 MVI A,20H 2680 JMP CHOUT 2690 CANT:LXI H,CANTM 2700 CALL MESAG 2710 JMP MLOOP 2720 LIE1:PUSH H 2730 LXI H,LIEM 2740 CALL MESAG 2750 LXI H,LIEM1 2760 CALL MESAG 2770 POP H 2780 RET 2790 LIE2:PUSH H 2800 LXI H,LIEM 2810 CALL MESAG 2820 LXI H,LIEM2 2830 CALL MESAG 2840 POP H 2850 RET 2860 BAD:LXI H,WRONG 2870 CALL MESAG 2880 JMP MLOOP 2890 MASK:ANI 0FCH 2900 LXI H,CTABL 2910 CALL ADDAH 2920 MVI C,4 2930 MOV A,B 2940 MSKLP:CMP M 2950 RZ 2960 INX H 2970 DCR C 2980 JNZ MSKLP 2990 INR C 3000 RET 3010 LOOK:LXI H,CARDS 3020 MVI B,44 3030 LKLP:LXI D,BUFFR 3040 MVI C,16 3050 LKLP2:LDAX D 3060 CPI 13 3070 JZ HERE 3080 CMP M 3090 JNZ SKIP 3100 INX D 3110 INX H 3120 DCR C 3130 JNZ LKLP2 3140 HERE:MVI A,44 3150 SUB B 3160 MOV B,A 3170 XRA A 3180 MOV A,B 3190 RET 3200 SKIP:MOV A,C 3210 CALL ADDAH 3220 DCR B 3230 JNZ LKLP 3240 INR B 3250 RET 3260 ADDAH:ADD L 3270 MOV L,A 3280 RNC 3290 INR H 3300 RET 3310 INPUT:CALL MESAG 3320 LXI H,BUFFR 3330 MVI B,0 3340 IN1:INR B 3350 IN2:CALL CHIN 3360 CPI 3 3370 JZ 128H 3380 CPI 7FH 3390 JZ BACK 3400 CPI 127 3410 JZ BACK 3420 MOV M,A 3430 CPI 13 3440 JZ CHOUT 3450 MOV A,B 3460 CPI 20 3470 JNC IN2 3480 MOV A,M 3490 INX H 3500 CALL CHOUT 3510 JMP IN1 3520 BACK:DCR B 3530 JZ IN1 3540 DCX H 3550 MVI A,8 3560 CALL CHOUT 3570 JMP IN2 3580 PRHND:LXI H,CTABL 3590 MVI B,11 3600 ALOOP:MVI C,4 3610 XRA A 3620 STA FLAG 3630 BLOOP:MOV A,M 3640 CPI 1 3650 JNZ NBOOK 3660 LDA FLAG 3670 INR A 3680 STA FLAG 3720 MVI A,' ' 3730 PRINT:CALL CHOUT 3732 CALL CHOUT 3733 CALL CHOUT 3734 CALL CHOUT 3735 CALL PRCRD 3750 NBOOK:INX H 3760 DCR C 3770 JNZ BLOOP 3780 LDA FLAG 3790 ORA A 3800 JZ NONE 3810 CPI 4 3820 JZ NONE2 3850 DCX H 3860 DCX H 3870 DCX H 3880 DCX H 3890 MVI C,4 3900 OLOOP:MOV A,M 3910 CPI 1 3920 JZ GOTIT 3940 LDA FLAG 3950 INR A 3960 STA FLAG 3980 MVI A,' ' 3990 CALL CHOUT 3991 CALL CHOUT 3992 CALL CHOUT 3993 CALL CHOUT 3994 CALL INVCD 4000 GOTIT:INX H 4010 DCR C 4020 JNZ OLOOP 4030 NONE2:CALL CRLF 4040 NONE:DCR B 4050 JNZ ALOOP 4060 RET 4070 PRCD2:PUSH H 4080 JMP PRCD3 4090 PRCRD:PUSH H 4100 MVI A,11 4110 SUB B 4120 ADD A 4130 ADD A 4140 ADI 4 4150 SUB C 4160 PRCD3:MOV L,A 4170 MVI H,0 4180 DAD H 4190 DAD H 4200 DAD H 4210 DAD H 4220 LXI D,CARDS 4230 DAD D 4240 MVI E,15 4250 PRLP:MOV A,M 4260 CALL CHOUT 4270 INX H 4280 DCR E 4290 JNZ PRLP 4300 POP H 4310 RET 4311 INVCD:MVI A,1BH 4312 CALL CO 4313 MVI A,')' 4314 CALL CO 4315 CALL PRCRD 4316 MVI A,1BH 4317 CALL CO 4318 MVI A,'(' 4319 JMP CO 4320 INVRD:PUSH H 4330 MVI A,11 4340 SUB B 4350 ADD A 4360 ADD A 4370 ADI 4 4380 SUB C 4390 MOV L,A 4400 MVI H,0 4410 DAD H 4420 DAD H 4430 DAD H 4440 DAD H 4450 LXI D,CARDS 4460 DAD D 4470 MVI E,15 4480 IPRLP:MOV A,M 4490 CALL INVCH 4500 INX H 4510 DCR E 4520 JNZ IPRLP 4530 POP H 4540 RET 4550 INVCH:CPI 20H 4560 JZ CHOUT 4570 ORI 80H 4580 JMP CHOUT 4590 ZEROS:LXI H,CTABL 4600 LXI D,44 4610 LXI B,VALUS 4620 MVI A,82H 4630 ZLP:MOV M,D 4640 STAX B 4650 INX B 4660 INX H 4670 DCR E 4680 JNZ ZLP 4690 RET 4700 PCARD:CALL RMOD 4710 MOV E,A 4720 MVI D,0 4730 MOV C,E 4740 FNDCD:LXI H,CTABL 4750 DAD D 4760 MOV A,M 4770 ORA A 4780 JZ FOUND 4790 MOV A,E 4800 INR A 4810 CALL MOD 4820 MOV E,A 4830 CMP C 4840 JNZ FNDCD 4850 LXI H,NOMOR 4860 CALL MESAG 4870 STC 4880 RET 4890 FOUND:MOV A,E 4900 RET 4910 CYOU:CALL PCARD 4920 RC 4930 MVI M,1 4940 ;ACC SHOULD HAVE CARD 4950 MOV D,A 4960 LXI H,YDRAW 4970 CALL MESAG 4980 MOV H,D 4990 MOV A,D 5000 CALL PRCD2 5010 CALL CRLF 5020 MOV A,H 5030 ORA A 5040 RET 5050 CME:CALL PCARD 5060 RC 5070 MVI M,MINE 5080 STA SAVE 5090 MVI B,80H 5100 CALL OFF 5110 LDA SAVE 5120 RET 5130 ON:LXI H,VALUS 5140 CALL ADDAH 5150 MOV A,M 5160 ORA B 5170 MOV M,A 5180 RET 5190 OFF:LXI H,VALUS 5200 CALL ADDAH 5210 MOV A,B 5220 CMA 5230 ANA M 5240 MOV M,A 5250 RET 5260 ONALL:ANI 0FCH 5270 LXI H,VALUS 5280 CALL ADDAH 5290 MVI C,4 5300 ONALP:MOV A,M 5310 ORA B 5320 MOV M,A 5330 INX H 5340 DCR C 5350 JNZ ONALP 5360 RET 5370 CHVAL:LXI H,VALUS 5380 CALL ADDAH 5390 MOV A,M 5400 ADD B 5410 MOV M,A 5420 ORA A 5430 RET 5440 OTHRS:MOV D,A 5450 ANI 0FCH 5460 LXI H,VALUS 5470 CALL ADDAH 5480 MVI C,4 5490 OTHLP:MVI A,4 5500 SUB C 5510 XRA D 5520 ANI 3 5530 JZ SKIP2 5540 MOV A,M 5550 ADD B 5560 MOV M,A 5570 SKIP2:INX H 5580 DCR C 5590 JNZ OTHLP 5600 RET 5610 RMOD:CALL RND 5620 ANI 63 5630 CPI 44 5640 JNC RMOD 5650 RET 5660 MOD:CPI 44 5670 RC 5680 SUI 44 5690 RET 5700 MESAG:MOV A,M 5710 ORA A 5720 RZ 5730 CALL CHOUT 5740 INX H 5750 JMP MESAG 5760 RND:PUSH B 5770 PUSH H 5780 LXI H,SH+3 5790 MVI B,8 5800 MOV A,M 5810 RTOP:RLC 5820 RLC 5830 RLC 5840 XRA M 5850 RAL 5860 RAL 5870 DCX H 5880 DCX H 5890 DCX H 5900 MOV A,M 5910 RAL 5920 MOV M,A 5930 INX H 5940 MOV A,M 5950 RAL 5960 MOV M,A 5970 INX H 5980 MOV A,M 5990 RAL 6000 MOV M,A 6010 INX H 6020 MOV A,M 6030 RAL 6040 MOV M,A 6050 DCR B 6060 JNZ RTOP 6070 POP H 6080 POP B 6090 RET 6100 SH:DS 4 6110 CRLF:MVI A,13 6120 CHOUT:CALL CO 6130 CPI 13 6140 RNZ 6150 MVI A,10 6160 CO:PUSH B 6170 MOV B,A 6180 XRA A 6190 CALL DOS+0DH 6200 POP B 6210 RET 6220 CHIN: 6230 CI:XRA A 6240 JMP DOS+10H 6250 CTABL:DS 44 -6260 YHAND:DB 13,13,'YOU ARE HOLDING:',13,0 /6270 QUEST:DB 'WHAT DO YOU WANT FROM ME ? ',0 06280 WRONG:DB 'WHAT? TRY TYPING IT OVER.',13,0 :6290 CANTM:DB 'IT IS ILLEGAL TO ASK FOR THAT CARD.',13,0 6300 MENUM:DS 1 6310 YOUNM:DS 1 6320 FLAG:DS 1 56330 CARDS:DB 'PRINCE&PAUPER ','HUCK FINN ' 06340 DB 'TOM SAWYER ','MYST.STRANGER ' 06350 DB 'THE ALHAMBRA ','RIP VAN WINKLE ' 06360 DB 'TALESOFTRAVELER ','SLEEPY HOLLOW ' 06370 DB 'THE DEERSLAYER ','THE SPY ' 06380 DB 'LAST MOHICAN ','THE PATHFINDER ' 06390 DB 'HIAWATHAN SONG ','EVANGELINE ' 06400 DB 'VILLAGE SMITH ','MILES STANDISH ' 06410 DB 'THE BROOK ','IDYLLS OF KING ' 06420 DB 'LIGHT BRIGADE ','CROSSING BAR ' 06430 DB 'IVANHOE ','KENILWORTH ' 06440 DB 'THE TALISMAN ','LADY OF LAKE ' 06450 DB 'KIDNAPPED ','JEKYLL&HYDE ' 66460 DB 'TREASUREISLAND ','CHILD',27H,'S VERSES ' 06470 DB 'ONCE USED TALES ','SCARLET LETTER ' 06480 DB 'SEVEN GABLES ','WONDER BOOK ' 06490 DB 'HAMLET ','ROMEO&JULIET ' 06500 DB 'THE TEMPEST ','JULIUS CAESAR ' 06510 DB 'PICKWICK PAPERS ','COPPERFIELD ' 06520 DB 'X-MAS CAROL ','OLIVER TWIST ' 06530 DB 'OLD FASH.GIRL ','LITTLE WOMEN ' 06540 DB 'LITTLE MEN ','EIGHT COUSINS ' 6550 BUFFR:DS 30 6560 CARD:DS 1 .6570 LUCK:DB 'WHAT LUCK! YOU DREW IT--',13,0 *6580 IHAVE:DB 'YOU RAT! I HAVE IT.',13,0 6590 YDRAW:DB 'YOU DRAW ',0 <6600 NOMOR:DB 'THERE ARE NO MORE CARDS TO DRAW FROM.',13,0 6610 VALUS:DS 44 /6620 NOHAV:DB 'I DO NOT HAVE THAT CARD.',13,0 6630 MOST:DS 1 6640 WHICH:DS 1 6650 DOHAV:DB 'DO YOU HAVE ',0 6660 QMARK:DB 13,'? ',0 36670 IGOT:DB 'I DREW IT--ALL RIGHT FOR YOU!',13,0 -6680 LIEM:DB 'YOU CAN',27H,'T LIE TO ME!',0 56690 LIEM1:DB ' I',27H,'M TAKING IT BY FORCE!',13,0 ;6700 LIEM2:DB ' I DON',27H,'T SEE IT IN YOUR HAND--',13,0 6710 SAVE:DS 1 6720 CNTR:DS 1 6730 SAMES:DS 44 '6740 IWIN:DB 'I WON! YOU LOSER!',13,0 56750 YWIN:DB 'YOU WON?! WELL,I WASN',27H,'T REALLY' 6760 DB ' TRYING.',13,0 6770 ENDM:DB 'GAME OVER.',13,0 6770 0010 DOS:EQU 100H 0020 CALL CLR2 0030 LXI H,LINES 0040 DRAW:MOV D,M 0050 INX H 0060 MOV E,M 0070 MOV A,D 0073 CPI 43 0074 JNZ NOT 0075 MOV A,E 0076 CPI 43 0077 JZ DONE 0090 NOT: 0100 INX H 0110 MOV A,M 0120 INX H 0121 PUSH H 0122 MOV L,M 0130 MOV H,A 0131 CALL LINE 0132 POP H 0133 INX H 0134 JMP DRAW 0135 DONE:JMP DUMP 0150 LINE:SHLD ENDP 0160 MOV A,H 0170 SUB D 0180 CALL SGN 0190 STA SDY 0200 MOV A,L 0210 SUB E 0220 CALL SGN 0230 STA SDX 0240 MOV A,H 0250 SUB D 0260 CC NEGA 0270 MOV B,A 0280 CMA 0290 INR A 0300 STA DELTY 0310 MOV A,L 0320 SUB E 0330 CC NEGA 0340 STA DELTX 0360 LXI H,0 0390 LINLP:CALL ON 0400 LBCD ENDP 0410 MOV A,D 0420 CMP B 0430 JNZ MOVE 0440 MOV A,E 0450 CMP C 0460 RZ 0470 MOVE:CALL STEP 0490 JMP LINLP 0500 STEP:MOV A,H 0501 ORA L 0502 JZ BOTH 0503 MOV A,H 0504 ORA A 0510 JM YSTEP 0520 XSTEP:LDA SDX 0530 ADD E 0540 MOV E,A 0550 LDA DELTY 0560 MOV C,A 0570 MVI B,0FFH 0580 DAD B 0590 RET 0591 BOTH:CALL XSTEP 0600 YSTEP:LDA SDY 0610 ADD D 0620 MOV D,A 0630 LDA DELTX 0640 MOV C,A 0650 MVI B,0 0660 DAD B 0670 RET 0680 SGN:MVI A,0 0690 RZ 0700 INR A 0710 RNC 0720 DCR A 0730 DCR A 0740 RET 0750 NEGA:CMA 0760 INR A 0770 RET 0780 ENDP:DS 2 0790 DELTX:DS 1 0800 DELTY:DS 1 0810 SDX:DS 1 0820 SDY:DS 1 0830 DUMP:LXI H,TAB 0840 LXI B,2000H 0842 LXI D,SPACE 0843 CALL PMESG 0850 DMLPY:LXI D,STUFF 0860 CALL PMESG 0862 DMLPX:MOV A,M 0863 CALL PO 0864 INX H 0865 DCR C 0866 JNZ DMLPX 0867 CALL PCRLF 0868 DCR B 0869 JNZ DMLPY 0870 RET 0940 ON:PUSH H 0950 CALL SET 0960 ORA M 0970 MOV M,A 0980 POP H 0990 RET 1000 OFF:PUSH H 1010 CALL SET 1020 CMA 1030 ANA M 1040 MOV M,A 1050 POP H 1060 RET 1070 SET:PUSH B 1080 PUSH D 1090 XCHG 1100 MOV A,H 1110 RRC 1120 RRC 1130 RRC 1140 ANI 1FH 1150 MOV D,A 1160 MOV E,L 1170 MOV A,H 1180 ANI 7 1190 MOV C,A 1200 MVI B,0 1210 LXI H,BITS 1220 DAD B 1230 MOV A,M 1240 LXI H,TAB 1250 DAD D 1260 POP D 1270 POP B 1280 RET #1290 BITS:DB 1,2,4,8,16,32,64,128 $1300 BITS2:DB 1,2,4,8,16,32,64,128 1310 CLR2:LXI H,TAB 1320 LXI D,4096+4096 1330 MVI B,0 1340 C2LP:MOV M,B 1350 INX H 1360 DCX D 1370 MOV A,D 1380 ORA E 1390 JNZ C2LP 1400 RET 1410 PMESG:LDAX D 1420 ORA A 1430 RZ 1440 CALL PO 1450 INX D 1460 JMP PMESG 1470 PCRLF:MVI A,13 1480 CALL PO 1490 MVI A,10 1500 PO:PUSH B 1510 MOV B,A 1520 MVI A,1 1530 CALL DOS+0DH 1540 MOV A,B 1550 POP B 1560 RET 1570 STUFF:DB 1BH,'S0256',0 1572 SPACE:DB 1BH,'T16',0 1580 TAB:DS 8192 =1590 LINES:DB 0,0,255,255,0,255,255,0,0,0,80,140,0,0,140,80 1591 DB 250,200,100,250 :1592 DB 0,0,0,255,0,255,255,255,255,255,255,0,255,0,0,0 1593 DB 43,43 1593 0010 DOS:EQU 100H 0020 CALL CLR2 0030 LXI H,LINES 0040 DRAW:MOV D,M 0050 INX H 0060 MOV E,M 0070 MOV A,D 0080 CPI 43 0090 JNZ NOT 0100 MOV A,E 0110 CPI 43 0120 JZ DONE 0130 NOT: 0140 INX H 0150 MOV A,M 0160 INX H 0170 PUSH H 0180 MOV L,M 0190 MOV H,A 0200 CALL LINE 0210 POP H 0220 INX H 0230 JMP DRAW 0240 DONE:JMP DUMP 0250 LINE:SHLD ENDP 0260 MOV A,H 0270 SUB D 0280 CALL SGN 0290 STA SDY 0300 MOV A,L 0310 SUB E 0320 CALL SGN 0330 STA SDX 0340 MOV A,H 0350 SUB D 0360 CC NEGA 0370 MOV B,A 0380 CMA 0390 INR A 0400 STA DELTY 0410 MOV A,L 0420 SUB E 0430 CC NEGA 0440 STA DELTX 0450 LXI H,0 0460 LINLP:CALL ON 0470 LBCD ENDP 0480 MOV A,D 0490 CMP B 0500 JNZ MOVE 0510 MOV A,E 0520 CMP C 0530 RZ 0540 MOVE:CALL STEP 0550 JMP LINLP 0560 STEP:MOV A,H 0570 ORA L 0580 JZ BOTH 0590 MOV A,H 0600 ORA A 0610 JM YSTEP 0620 XSTEP:LDA SDX 0630 ADD E 0640 MOV E,A 0650 LDA DELTY 0660 MOV C,A 0670 MVI B,0FFH 0680 DAD B 0690 RET 0700 BOTH:CALL XSTEP 0710 YSTEP:LDA SDY 0720 ADD D 0730 MOV D,A 0740 LDA DELTX 0750 MOV C,A 0760 MVI B,0 0770 DAD B 0780 RET 0790 SGN:MVI A,0 0800 RZ 0810 INR A 0820 RNC 0830 DCR A 0840 DCR A 0850 RET 0860 NEGA:CMA 0870 INR A 0880 RET 0890 ENDP:DS 2 0900 DELTX:DS 1 0910 DELTY:DS 1 0920 SDX:DS 1 0930 SDY:DS 1 0940 DUMP:LXI H,TAB 0950 LXI B,2000H 0960 LXI D,SPACE 0970 CALL PMESG 0980 DMLPY:LXI D,STUFF 0990 CALL PMESG 1000 DX2:PUSH H 1010 DMLPX:MOV A,M 1020 CALL FIX 1030 CALL PO 1040 CALL PO 1050 INX H 1060 DCR C 1070 JNZ DMLPX 1080 POP H 1081 CALL PCRLF 1082 LXI D,STUFF 1083 CALL PMESG 1090 DMX3:MOV A,M 1100 RRC 1110 RRC 1120 RRC 1130 RRC 1140 CALL FIX 1150 CALL PO 1160 CALL PO 1170 INX H 1180 DCR C 1190 JNZ DMX3 1200 CALL PCRLF 1210 DCR B 1220 JNZ DMLPY 1230 RET 1240 FIX:MOV D,A 1250 XRA A 1260 MVI E,4 1270 FLP:RRC 1271 RRC 1272 RR D 1280 JNC ZER 1290 ORI 0C0H 1300 ZER:DCR E 1330 JNZ FLP 1340 RET 1350 ON:PUSH H 1360 CALL SET 1370 ORA M 1380 MOV M,A 1390 POP H 1400 RET 1410 OFF:PUSH H 1420 CALL SET 1430 CMA 1440 ANA M 1450 MOV M,A 1460 POP H 1470 RET 1480 SET:PUSH B 1490 PUSH D 1500 XCHG 1510 MOV A,H 1520 RRC 1530 RRC 1540 RRC 1550 ANI 1FH 1560 MOV D,A 1570 MOV E,L 1580 MOV A,H 1590 ANI 7 1600 MOV C,A 1610 MVI B,0 1620 LXI H,BITS 1630 DAD B 1640 MOV A,M 1650 LXI H,TAB 1660 DAD D 1670 POP D 1680 POP B 1690 RET #1700 BITS:DB 1,2,4,8,16,32,64,128 $1710 BITS2:DB 1,2,4,8,16,32,64,128 1720 CLR2:LXI H,TAB 1730 LXI D,4096+4096 1740 MVI B,0 1750 C2LP:MOV M,B 1760 INX H 1770 DCX D 1780 MOV A,D 1790 ORA E 1800 JNZ C2LP 1810 RET 1820 PMESG:LDAX D 1830 ORA A 1840 RZ 1850 CALL PO 1860 INX D 1870 JMP PMESG 1880 PCRLF:MVI A,13 1890 CALL PO 1900 MVI A,10 1910 PO:PUSH B 1920 MOV B,A 1930 MVI A,1 1940 CALL DOS+0DH 1950 MOV A,B 1960 POP B 1970 RET 1980 STUFF:DB 1BH,'S0512',0 1990 SPACE:DB 1BH,'T16',0 2000 TAB:DS 8192 =2010 LINES:DB 0,0,255,255,0,255,255,0,0,0,80,140,0,0,140,80 2020 DB 250,200,100,250 :2030 DB 0,0,0,255,0,255,255,255,255,255,255,0,255,0,0,0 2040 DB 43,43 2040ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0010 P:EQU 32 0020 DOS:EQU 100H 0030 CALL CLR2 0040 LXI H,LINES 0050 DRAW:MVI D,0 0060 MOV E,M 0070 SDED SY 0080 INX H 0090 MOV E,M 0100 SDED SX 0110 MOV A,E 0120 CPI 43 0130 JNZ NOT 0140 MOV A,E 0150 CPI 43 0160 JZ DONE 0170 NOT: 0180 INX H 0190 MOV E,M 0200 SDED EY 0210 INX H 0220 MOV E,M 0230 SDED EX 0240 INX H 0250 PUSH H 0260 CALL LINE 0270 POP H 0280 JMP DRAW 0290 DONE:JMP DUMP 0300 LINE:LHLD SX 0310 SHLD X 0320 XCHG 0330 LHLD EX 0340 CALL SUBDE 0350 CALL SGN 0360 SHLD SDX 0370 LHLD SY 0380 SHLD Y 0390 XCHG 0400 LHLD EY 0410 CALL SUBDE 0420 CALL SGN 0430 SHLD SDY 0440 LHLD SX 0450 XCHG 0460 LHLD EX 0470 CALL SUBDE 0480 CC NEGHL 0490 SHLD DELTX 0500 LHLD SY 0510 XCHG 0520 LHLD EY 0530 CALL SUBDE 0540 CNC NEGHL 0550 SHLD DELTY 0560 LXI H,0 0570 SHLD COUNT 0580 LINLP:LHLD Y 0590 XCHG 0600 LHLD X 0610 CALL ON 0620 LHLD EY 0630 CALL SUBDE 0640 ORA L 0650 JNZ MOVE 0660 LHLD X 0670 XCHG 0680 LHLD EX 0690 CALL SUBDE 0700 ORA L 0710 RZ 0720 MOVE:CALL STEP 0730 JMP LINLP 0740 STEP:LHLD COUNT 0750 MOV A,H 0760 ORA L 0770 JZ BOTH 0780 MOV A,H 0790 ORA A 0800 JM YSTEP 0810 XSTEP:LHLD SDX 0820 XCHG 0830 LHLD X 0840 DAD D 0850 SHLD X 0860 LHLD DELTY 0870 XCHG 0880 LHLD COUNT 0890 DAD D 0900 SHLD COUNT 0910 RET 0920 BOTH:CALL XSTEP 0930 YSTEP:LHLD SDY 0940 XCHG 0950 LHLD Y 0960 DAD D 0970 SHLD Y 0980 LHLD DELTX 0990 XCHG 1000 LHLD COUNT 1010 DAD D 1020 SHLD COUNT 1030 RET 1040 SGN:MOV A,H 1050 ORA L 1055 MOV A,H 1060 LXI H,0 1070 RZ 1077 ORA A 1080 INX H 1090 RP 1100 DCX H 1110 DCX H 1120 RET 1130 NEGHL:MOV A,H 1140 CMA 1150 MOV H,A 1160 MOV A,L 1170 CMA 1180 MOV L,A 1190 INX H 1200 RET 1210 SUBDE:MOV A,L 1220 SUB E 1230 MOV L,A 1240 MOV A,H 1250 SBB D 1260 MOV H,A 1270 RET 1280 DUMP:LXI H,0 1290 MVI B,64 1300 LXI D,SPACE 1310 CALL PMESG 1320 DMLPY:LXI D,STUFF 1330 CALL PMESG 1340 LX2:MOV A,H 1350 OUT P+5 1360 DMLPX:MOV A,L 1370 OUT P+4 1380 XTHL 1390 XTHL 1400 IN P+6 1410 CALL PO 1420 INR L 1430 JNZ DMLPX 1440 INR H 1450 ANI 1 1460 JNZ LX2 1470 CALL PCRLF 1480 DCR B 1490 JNZ DMLPY 1500 RET 1510 ON:PUSH B 1520 CALL SET 1530 ORA B 1540 OUT P+6 1550 POP B 1560 RET 1570 OFF:PUSH B 1580 CALL SET 1590 CMA 1600 ANA B 1610 OUT P+6 1620 POP B 1630 RET 1640 SET:PUSH D 1650 PUSH H 1660 MOV A,L 1670 OUT P+4 1680 MOV C,E 1690 CALL ROTDE 1700 CALL ROTDE 1710 MOV A,E 1720 ANI 0FEH 1730 ORA H 1740 OUT P+5 1750 MOV A,C 1760 ANI 7 1770 MOV E,A 1780 MVI D,0 1790 LXI H,BITS 1800 DAD D 1810 IN P+6 1820 MOV B,A 1830 MOV A,M 1840 POP H 1850 POP D 1860 RET 1870 ROTDE:MOV A,D 1880 ORA A 1890 RAR 1900 MOV D,A 1910 MOV A,E 1920 RAR 1930 MOV E,A 1940 RET #1950 BITS:DB 1,2,4,8,16,32,64,128 $1960 BITS2:DB 1,2,4,8,16,32,64,128 1970 CLR2:LXI H,0 1980 MOV B,H 1990 CLP1:MOV A,H 2000 OUT P+5 2010 CLP2:MOV A,L 2020 OUT P+4 2030 MOV A,B 2040 OUT P+6 2050 XTHL 2060 XTHL 2070 INR L 2080 JNZ CLP2 2090 INR H 2100 JNZ CLP1 2110 RET 2120 PMESG:LDAX D 2130 ORA A 2140 RZ 2150 CALL PO 2160 INX D 2170 JMP PMESG 2180 PCRLF:MVI A,13 2190 CALL PO 2200 MVI A,10 2210 PO:PUSH B 2220 MOV B,A 2230 MVI A,1 2240 CALL DOS+0DH 2250 MOV A,B 2260 POP B 2270 RET 2280 STUFF:DB 1BH,'S0512',0 2290 SPACE:DB 1BH,'T16',0 2300 SX:DS 2 2310 SY:DS 2 2320 EX:DS 2 2330 EY:DS 2 2340 X:DS 2 2350 Y:DS 2 2360 COUNT:DS 2 2370 SDX:DS 2 2380 SDY:DS 2 2390 DELTX:DS 2 2392 DELTY:DS 2 =2400 LINES:DB 0,0,255,255,0,255,255,0,0,0,80,140,0,0,140,80 2410 DB 250,200,100,250 :2420 DB 0,0,0,255,0,255,255,255,255,255,255,0,255,0,0,0 2430 DB 43,43 2430 0010 DOS:EQU 100H 0020 CALL CLR2 0030 LXI H,LINES 0040 DRAW:MOV D,M 0050 INX H 0060 MOV E,M 0070 MOV A,D 0080 CPI 43 0090 JNZ NOT 0100 MOV A,E 0110 CPI 43 0120 JZ DONE 0130 NOT: 0140 INX H 0150 MOV A,M 0160 INX H 0170 PUSH H 0180 MOV L,M 0190 MOV H,A 0200 CALL LINE 0210 POP H 0220 INX H 0230 JMP DRAW 0240 DONE:JMP DUMP 0250 LINE:SHLD ENDP 0260 MOV A,H 0270 SUB D 0280 CALL SGN 0290 STA SDY 0300 MOV A,L 0310 SUB E 0320 CALL SGN 0330 STA SDX 0340 MOV A,H 0350 SUB D 0360 CC NEGA 0370 MOV B,A 0380 CMA 0390 INR A 0400 STA DELTY 0410 MOV A,L 0420 SUB E 0430 CC NEGA 0440 STA DELTX 0450 LXI H,0 0460 LINLP:CALL ON 0470 LBCD ENDP 0480 MOV A,D 0490 CMP B 0500 JNZ MOVE 0510 MOV A,E 0520 CMP C 0530 RZ 0540 MOVE:CALL STEP 0550 JMP LINLP 0560 STEP:PUSH H 0570 DAD H 0580 CALL TBOTH 0590 POP H 0600 JNC BOTH 0610 MOV A,H 0620 ORA A 0630 JM YSTEP 0640 XSTEP:LDA SDX 0650 ADD E 0660 MOV E,A 0670 LDA DELTY 0680 MOV C,A 0690 MVI B,0FFH 0700 DAD B 0710 RET 0720 BOTH:CALL XSTEP 0730 YSTEP:LDA SDY 0740 ADD D 0750 MOV D,A 0760 LDA DELTX 0770 MOV C,A 0780 MVI B,0 0790 DAD B 0800 RET 0810 SGN:MVI A,0 0820 RZ 0830 INR A 0840 RNC 0850 DCR A 0860 DCR A 0870 RET 0880 NEGA:CMA 0890 INR A 0900 RET 0910 TBOTH:MOV A,H 0911 ORA A 0912 JM CHKY 0913 RNZ 0914 LDA DELTX 0915 CMP L 0916 CMC 0917 RET 0918 CHKY:INR H 0919 RNZ 0920 LDA DELTY 0921 CMP L 0922 RET 0930 0940 0950 0960 ENDP:DS 2 0970 DELTX:DS 1 0980 DELTY:DS 1 0990 SDX:DS 1 1000 SDY:DS 1 1010 DUMP:LXI H,TAB 1020 LXI B,2000H 1030 LXI D,SPACE 1040 CALL PMESG 1050 DMLPY:LXI D,STUFF 1060 CALL PMESG 1070 DMLPX:MOV A,M 1080 CALL PO 1090 INX H 1100 DCR C 1110 JNZ DMLPX 1120 CALL PCRLF 1130 DCR B 1140 JNZ DMLPY 1150 RET 1160 ON:PUSH H 1170 CALL SET 1180 ORA M 1190 MOV M,A 1200 POP H 1210 RET 1220 OFF:PUSH H 1230 CALL SET 1240 CMA 1250 ANA M 1260 MOV M,A 1270 POP H 1280 RET 1290 SET:PUSH B 1300 PUSH D 1310 XCHG 1320 MOV A,H 1330 RRC 1340 RRC 1350 RRC 1360 ANI 1FH 1370 MOV D,A 1380 MOV E,L 1390 MOV A,H 1400 ANI 7 1410 MOV C,A 1420 MVI B,0 1430 LXI H,BITS 1440 DAD B 1450 MOV A,M 1460 LXI H,TAB 1470 DAD D 1480 POP D 1490 POP B 1500 RET #1510 BITS:DB 1,2,4,8,16,32,64,128 $1520 BITS2:DB 1,2,4,8,16,32,64,128 1530 CLR2:LXI H,TAB 1540 LXI D,4096+4096 1550 MVI B,0 1560 C2LP:MOV M,B 1570 INX H 1580 DCX D 1590 MOV A,D 1600 ORA E 1610 JNZ C2LP 1620 RET 1630 PMESG:LDAX D 1640 ORA A 1650 RZ 1660 CALL PO 1670 INX D 1680 JMP PMESG 1690 PCRLF:MVI A,13 1700 CALL PO 1710 MVI A,10 1720 PO:PUSH B 1730 MOV B,A 1740 MVI A,1 1750 CALL DOS+0DH 1760 MOV A,B 1770 POP B 1780 RET 1790 STUFF:DB 1BH,'S0256',0 1800 SPACE:DB 1BH,'T16',0 1810 TAB:DS 8192 =1820 LINES:DB 0,0,255,255,0,255,255,0,0,0,80,140,0,0,140,80 1830 DB 250,200,100,250 :1840 DB 0,0,0,255,0,255,255,255,255,255,255,0,255,0,0,0 1850 DB 43,43 1850˜w&¿g•?D5u3¿"'C”?q™@I¾‘T>  ” 11,0 8 Lõ7â4096\Põ6â4096ã15â256\CõLã256ã64ã11\DõLã12â16ã12  ˆ šª 2 Iõ0 ± 511 ° 255ç32 7 I2õ511åI 5< ZõPàP,0)ãPàPã2,I)ãPàPã4,I)ãPàPã6,511)\ZõÍàL) "F ZõPàP,511)ãPàPã2,I2)\ZõÍàL) "P ZõPàPã4,I2)ãPàPã6, ˆ‰ŠŽˆ?މ?ŽŠŽ‹‡?ˆ?‰?Š?‹ˆ?‰?Š?‹‘‰?‘Š?‘‹?’‰’Š?’‹?’Œ“‰“Š?“‹?“Œ”‰”Š?”‹?”Œ?”•‰•Š?•‹?•Œ?•–‰–Š?–‹?–Œ?–—…?—†?—‡?—ˆ?—‰?—Š?—‹?—Œ?—˜…?˜†?˜‡?˜ˆ?˜‰?˜Š?˜‹?˜Œ?˜™Š™‹™Œ™šŠš‹šŒššŽ›Š›‹›Œ››Žœ‰œŠœ‹œŒœ‰Š‹Œžˆž‰žŠž‹žŒžžŽžžŸˆŸ‰ŸŠŸ‹ŸŒŸŸŽŸŸ ‡ ˆ ‰ Š ‹ Œ  ‘¡‡¡ˆ¡‰¡Š¡‹¡Œ¡‘¢Š¢‹¢Œ¢£‹£Œ£¤Œ¤¤Ž¥¥Ž¦Ž¦§Ž§§¨¨Ž¨¨©Œ©©Ž©©€€€ˆ‰ŠŽˆ?މ?ŽŠŽ‹‡?ˆ?‰?Š?‹ˆ?‰?Š?‹‘‰?‘Š?‘‹?’‰’Š?’‹?’Œ“‰“Š?“‹?“Œ?”‰”Š?”‹?”Œ?”•…?•†?•‰•Š?•‹?•Œ?•–…?–†?–‡?–ˆ?–‰?–Š?–‹?–Œ?–—ˆ?—‰?—Š?—‹?—Œ—˜Š˜‹˜Œ˜™Š™‹™Œ™šŠš‹šŒššŽ›ˆ›‰›Š›‹›Œ››Žœ‡œˆœ‰œŠœ‹œŒœœŽ†‡ˆ‰Š‹Œž…ž†ž‡žˆž‰ž‹žŒžŸ„Ÿ…Ÿ†Ÿ‡ŸˆŸ‹ŸŒŸ „ … † ‡ ˆ ‰ ‹ Œ¡‡¡ˆ¡‰¡Š¡Œ¡¢Š¢‹¢Œ¢¢Ž£‹£Œ££Ž££¤‹¤Ž¤¤¤‘¥¥¥‘¥’¦‘¦’¦“§’§“¨’¨“©‘©’€€€ŒˆŒ‰ŒŠˆ?‰?Ћއ?Žˆ?މ?ŽŠ?Ž‹ˆ?‰?Š?‹‰?Š?‹?‘‰‘Š?‘‹?‘Œ’‰’Š?’‹?’Œ’?“…?“†?“‰“Š?“‹?“Œ?““Ž?”…?”†?”‡?”ˆ?”‰”Š?”‹?”Œ?””Ž?”?•ˆ?•‰?•Š?•‹?•Œ?••Ž?•?–‰?–Š?–‹?–Œ––Ž?–?—Š—‹—Œ——Ž?˜Š˜‹˜Œ˜˜Ž?˜?™‰™Š™‹™Œ™™Žš‡šˆš‰šŠš‹šŒššŽ›†›‡›ˆ›‰›Š›‹›Œ››Žœ…œ†œ‡œˆœ‰œŠœ‹œŒœœŽœ„…†‡ˆ‰ŠŒŽž„ž…ž†ž‡žžŽžžŸ…Ÿ†Ÿ‡ŸˆŸŽŸŸ † ‡ ˆ   ‘ ’¡‡¡ˆ¡¡‘¡’¡“¢ˆ¢‰¢‘¢’¢“£ˆ£‰£Š£’£“£”¤ˆ¤‰¤“¤”¤•¥ˆ¥‰¥”¥•¥–¦ˆ¦•¦–§•§–¨–©–€€€ŒˆŒ‰ŒŠˆ?‰?Ћއ?Žˆ?މ?ŽŠ?Ž‹ˆ?‰?Š?‹‰?Š?‹?‘‰‘Š?‘‹?‘Œ’‰?’Š?’‹?’Œ“‰?“Š?“‹?“Œ““Ž?”„?”…?”‰?”Š?”‹?”Œ””Ž?”?•„?•…?•†?•‡?•ˆ?•‰?•Š?•‹•Œ••Ž?•?–ˆ?–‰?–Š?–‹–Œ––Ž?—Š—‹—Œ——Ž?˜Š˜‹˜Œ˜˜Ž?™Š™‹™Œ™™Žšˆš‰šŠš‹šŒššŽ›†›‡›ˆ›‰›Š›‹›Œ››Žœ…œ†œ‡œˆœ‰œŠœ‹œŒœœŽ„…†‡ˆ‰Š‹ŒŽžƒž„ž…ž†ž‡žŒžžŽžŸƒŸ„Ÿ…ŸŒŸŸŽŸ ƒ „ …  Ž   ‘ ’¡ƒ¡„¡…¡¡¡‘¡’¡“¢„¢…¢¢‘¢’¢“¢”¢•£„£…£“£”£•£–£—¤„¤…¤–¤—¥„¥…¥—¦ƒ¦„¦…¦—§‚§ƒ§„€€€‹ˆ‹‰‹ŠŒˆ?Œ‰?ŒŠŒ‹‡?ˆ?‰?Š?‹Žˆ?މ?ŽŠ?Ž‹Š?‹?‰Š?‹?Œ?‘‰‘Š?‘‹?‘Œ?’‰’Š?’‹?’Œ?’“‰“Š?“‹?“Œ?““Ž?”‰”Š?”‹?”Œ””Ž?”?•ˆ?•‰?•Š?•‹?•Œ••Ž?–‡?–ˆ?–‰?–Š?–‹–Œ–—…?—†?—‡?—ˆ?—Š—‹—Œ—˜…?˜†?˜Š˜‹˜Œ˜˜Ž™‰™Š™‹™Œ™™Žš‰šŠš‹šŒššŽ›‡›ˆ›‰›Š›‹›Œ››Žœ†œ‡œˆœ‰œŠœ‹œŒœœŽ†‡ˆ‰ŒŽž…ž†ž‡žˆžŒžžŽžŸ„Ÿ…Ÿ†Ÿ‡ŸŸŽŸŸŸ‘Ÿ’Ÿ“Ÿ”Ÿ• „ … † Ž   ‘ ’ “ ” • –¡„¡…¡¡¡‘¡–¡—¢„¢…£ƒ£„£…¤ƒ¤„¥ƒ¥„¦‚¦ƒ§€§§‚§ƒ€€€ŒˆŒ‰ŒŠˆ?‰?Ћއ?Žˆ?މ?ŽŠ?Ž‹ˆ?‰?Š?‹‰?Š?‹?‘‰‘Š?‘‹?‘Œ’‰’Š?’‹?’Œ?“‰“Š?“‹?“Œ?“”‰”Š?”‹?”Œ?””Ž?•‰•Š•‹?•Œ?••Ž?•?–‰–Š–‹?–Œ?––Ž?–?—Š?—‹?—Œ?——Ž?˜Š?˜‹?˜Œ˜™‰?™Š?™‹™Œ™™Žšˆ?š‰?šŠš‹šŒššŽ›ˆ?›‰?›Š›‹›Œ››Žœˆœ‰œŠœ‹œŒœœŽˆ‰Š‹Œ”•ž‡žˆž‰žŠž‹žŒžž’ž“ž”ž•ž–Ÿ†Ÿ‡ŸˆŸ‰Ÿ‹ŸŒŸŸŽŸŸ‘Ÿ’Ÿ“Ÿ•Ÿ–Ÿ— † ‡ ˆ Œ  Ž   ‘ ’¡†¡‡¡ˆ¡Œ¡¡Ž¡¡¢…¢†¢‡¢¢Ž£…£†£‡¤…¤†¤‡¥…¥†¦…¦†§„§…§†¨‚¨ƒ¨„¨…¨†€€€ˆ‰ŠŽˆ?މ?ŽŠŽ‹‡?ˆ?‰?Š?‹ˆ?‰?Š?‹‘‰?‘Š?‘‹?’‰’Š?’‹?’Œ“‰“Š?“‹?“Œ?”‰”Š?”‹?”Œ?”•‰•Š?•‹?•Œ?•–‰–Š–‹?–Œ?–—‰—Š—‹?—Œ?—?˜Š˜‹˜Œ?˜?™ˆ?™‰?™Š™‹™Œ?™?š‡?šˆ?šŠš‹šŒ?ššŽ›Š›‹›Œ?›?›ŽœŠœ‹œŒ?œ?œŽ‰Š‹ŒŽ’“ž‰žŠž‹žŒžžŽž‘ž’ž“ž”ŸˆŸ‰ŸŠŸ‹ŸŒŸŸŽŸŸŸ‘Ÿ’Ÿ”Ÿ• ˆ ‰ Š ‹ Œ  Ž  ¡ˆ¡‰¡Š¡‹¡Œ¡¡Ž¡¢‰¢Š¢‹¢Œ¢¢Ž£‰£Š£‹¤‰¤Š¤‹¥‰¥Š¥‹¦Š¦‹§Š§‹¨‰¨Š¨‹©‡©ˆ©‰©Š©‹€€€ˆ‰ŠŽˆ?މ?ŽŠŽ‹‡?ˆ?‰?Š?‹ˆ?‰?Š?‹‘‰?‘Š?‘‹?’‰’Š?’‹?’Œ?’?“‰“Š?“‹?“Œ?“?“Ž?”‰”Š”‹”Œ?”?”Ž?•‰•Š•‹•Œ•?•Ž?•?–‰–Š–‹–Œ––Ž?–?—„?—…?—†?—‡?—ˆ?—‰?—Š—‹—Œ——Ž?—?˜„?˜…?˜†?˜‡?˜ˆ?˜‰?˜Š˜‹˜Œ˜˜Ž?˜?™Š™‹™Œ™™Ž?™?šŠš‹šŒššŽš?š?›Š›‹›Œ››Ž›?›?œ‰œŠœ‹œŒœ‰Š‹Œžˆž‰žŠž‹žŒžžŽžžŸˆŸ‰ŸŠŸ‹ŸŒŸŸŽŸŸ ‡ ˆ ‰ Š ‹ Œ  ‘¡‡¡ˆ¡‰¡Š¡‹¡Œ¡‘¢Š¢‹¢Œ¢£‹£Œ£¤Œ¤¤Ž¥¥Ž¦Ž¦§Ž§§¨¨Ž¨¨©Œ©©Ž©©€€€ˆ‰ŠŽˆ?މ?ŽŠŽ‹‡?ˆ?‰?Š?‹ˆ?‰?Š?‹‘‰?‘Š?‘‹?’‰’Š?’‹?’Œ?’?“‰“Š?“‹?“Œ?“?“Ž?”‰”Š”‹?”Œ?”?”Ž?”?•ƒ?•„?•‰•Š•‹•Œ••Ž?•?•?–ƒ?–„?–…?–†?–‡?–ˆ?–‰–Š–‹–Œ––?–?—…?—†?—‡?—ˆ?—‰—Š—‹—Œ——?—?˜Š˜‹˜Œ˜˜?˜?™Š™‹™Œ™™?™?šŠš‹šŒššŽš?š‘?›ˆ›‰›Š›‹›Œ››Žœ‡œˆœ‰œŠœ‹œŒœœŽ†‡ˆ‰Š‹Œž…ž†ž‡žˆž‰ž‹žŒžŸ„Ÿ…Ÿ†Ÿ‡ŸˆŸ‹ŸŒŸ „ … † ‡ ˆ ‰ ‹ Œ¡‡¡ˆ¡‰¡Š¡Œ¡¢Š¢‹¢Œ¢¢Ž£‹£Œ££Ž££¤‹¤Ž¤¤¤‘¥¥¥‘¥’¦‘¦’¦“§’§“¨’¨“©‘©’€€€ŒˆŒ‰ŒŠˆ?‰?Ћއ?Žˆ?މ?ŽŠ?Ž‹ˆ?‰?Š?‹‰?Š?‹?‘‰‘Š?‘‹?‘Œ?‘?’„?’…?’‰’Š?’‹?’Œ?’?’Ž?’?“„?“…?“†?“‰“Š“‹?“Œ?“?“Ž?“?“?”…?”†?”‡?”‰”Š”‹”Œ””?”?•†?•‡?•ˆ?•‰•Š•‹•Œ••?•?–ˆ?–‰–Š–‹–Œ––?–?—Š—‹—Œ——?—?˜Š˜‹˜Œ˜˜?˜?™‰™Š™‹™Œ™™Žš‡šˆš‰šŠš‹šŒššŽ›†›‡›ˆ›‰›Š›‹›Œ››Žœ…œ†œ‡œˆœ‰œŠœ‹œŒœœŽœ„…†‡ˆ‰ŠŒŽž„ž…ž†ž‡žžŽžžŸ…Ÿ†Ÿ‡ŸˆŸŽŸŸ † ‡ ˆ   ‘ ’¡‡¡ˆ¡¡‘¡’¡“¢ˆ¢‰¢‘¢’¢“£ˆ£‰£Š£’£“£”¤ˆ¤‰¤“¤”¤•¥ˆ¥‰¥”¥•¥–¦ˆ¦•¦–§•§–¨–©–€€€ŒˆŒ‰ŒŠˆ?‰?Ћއ?Žˆ?މ?ŽŠ?Ž‹ˆ?‰?Š?‹‰?Š?‹?‘‰‘Š?‘‹?‘Œ?’‰’Š?’‹?’Œ?’?“‰“Š?“‹?“Œ?“?“Ž?”„?”…?”‰”Š”‹”Œ?”?”Ž?”?•„?•…?•†?•‡?•ˆ?•‰•Š•‹•Œ•?•Ž?•?–ˆ?–‰–Š–‹–Œ–?–Ž?—Š—‹—Œ—?—Ž?˜Š˜‹˜Œ?˜?˜Ž?™Š™‹™Œ?™?™Žšˆš‰šŠš‹šŒššŽ›†›‡›ˆ›‰›Š›‹›Œ››Žœ…œ†œ‡œˆœ‰œŠœ‹œŒœœŽ„…†‡ˆ‰Š‹ŒŽžƒž„ž…ž†ž‡žŒžžŽžŸƒŸ„Ÿ…ŸŒŸŸŽŸ ƒ „ …  Ž   ‘ ’¡ƒ¡„¡…¡¡¡‘¡’¡“¢„¢…¢¢‘¢’¢“¢”¢•£„£…£“£”£•£–£—¤„¤…¤–¤—¥„¥…¥—¦ƒ¦„¦…¦—§‚§ƒ§„€€€‹ˆ‹‰‹ŠŒˆ?Œ‰?ŒŠŒ‹‡?ˆ?‰?Š?‹Žˆ?މ?ŽŠ?Ž‹‰?Š?‹?‰Š?‹?Œ‘‰?‘Š?‘‹?‘Œ?’‰?’Š?’‹?’Œ?’?“‰“Š?“‹?“Œ?“?“Ž?”‰”Š”‹”Œ”?”Ž?”?•‡?•ˆ?•‰•Š•‹•Œ?•?•Ž?–…?–†?–‡?–ˆ?–‰?–Š–‹–Œ?–?—…?—†?—Š—‹?—Œ?—?˜Š?˜‹?˜Œ?˜˜Ž™‰™Š?™‹?™Œ™™Žš‰šŠš‹šŒššŽ›‡›ˆ›‰›Š›‹›Œ››Žœ†œ‡œˆœ‰œŠœ‹œŒœœŽ†‡ˆ‰ŒŽž…ž†ž‡žˆžŒžžŽžŸ„Ÿ…Ÿ†Ÿ‡ŸŸŽŸŸŸ‘Ÿ’Ÿ“Ÿ”Ÿ• „ … † Ž   ‘ ’ “ ” • –¡„¡…¡¡¡‘¡–¡—¢„¢…£ƒ£„£…¤ƒ¤„¥ƒ¥„¦‚¦ƒ§€§§‚§ƒ€€€ŒˆŒ‰ŒŠˆ?‰?Ћއ?Žˆ?މ?ŽŠ?Ž‹ˆ?‰?Š?‹‰?Š?‹?‘‰‘Š?‘‹?‘Œ’‰’Š?’‹?’Œ?“‰“Š?“‹?“Œ?“?”‰”Š”‹?”Œ?”?”Ž?•‰•Š•‹•Œ?•?•Ž?•?–‰–Š–‹–Œ–?–Ž?–?—Š—‹—Œ?—?—Ž?˜Š?˜‹?˜Œ?˜?™ˆ?™‰?™Š?™‹?™Œ?™™Žšˆ?š‰?šŠš‹šŒššŽ›ˆ›‰›Š›‹›Œ››Žœˆœ‰œŠœ‹œŒœœŽˆ‰Š‹Œ”•ž‡žˆž‰žŠž‹žŒžž’ž“ž”ž•ž–Ÿ†Ÿ‡ŸˆŸ‰Ÿ‹ŸŒŸŸŽŸŸ‘Ÿ’Ÿ“Ÿ•Ÿ–Ÿ— † ‡ ˆ Œ  Ž   ‘ ’¡†¡‡¡ˆ¡Œ¡¡Ž¡¡¢…¢†¢‡¢¢Ž£…£†£‡¤…¤†¤‡¥…¥†¦…¦†§„§…§†¨‚¨ƒ¨„¨…¨†€€€ˆ‰ŠŽˆ?މ?ŽŠŽ‹‡?ˆ?‰?Š?‹ˆ?‰?Š?‹‘‰?‘Š?‘‹?’‰’Š?’‹?’Œ“‰“Š?“‹?“Œ?”‰”Š?”‹?”Œ?”?•‰•Š•‹?•Œ?•?–‰–Š–‹?–Œ?–?–Ž?—‰—Š—‹—Œ?—?—Ž?˜Š?˜‹?˜Œ?˜?™‡?™ˆ?™‰?™Š?™‹?™Œ?™š‡?šˆ?šŠš‹šŒššŽ›Š›‹›Œ››ŽœŠœ‹œŒœœŽ‰Š‹ŒŽ’“ž‰žŠž‹žŒžžŽž‘ž’ž“ž”ŸˆŸ‰ŸŠŸ‹ŸŒŸŸŽŸŸŸ‘Ÿ’Ÿ”Ÿ• ˆ ‰ Š ‹ Œ  Ž  ¡ˆ¡‰¡Š¡‹¡Œ¡¡Ž¡¢‰¢Š¢‹¢Œ¢¢Ž£‰£Š£‹¤‰¤Š¤‹¥‰¥Š¥‹¦Š¦‹§Š§‹¨‰¨Š¨‹©‡©ˆ©‰©Š©‹€€€“ƒ“„“…“‡“ˆ“‰”‚”ƒ?”„?”…?”†”‡”ˆ”‰”Š”‹•ƒ?•„?•…?•†?•‡?•ˆ•‰•Š•‹•Œ•–ƒ?–„?–…?–†?–‡–ˆ–‰–Š–‹–Œ––Ž—ƒ?—„?—…?—Š—‹—Œ——Ž—˜‚?˜ƒ?˜„?˜Œ˜˜Ž˜˜™?™‚?™ƒ?™™Ž™™š?š‚?ššŽšš›€?›?››Ž››œ€?œ?œœŽœœŽžžŽžžž‘ŸŸŽŸŸŸ‘Ÿ’  Ž   ‘ ’ “¡¡Ž¡‘¡’¡“¡”¢¢Ž¢’¢“¢”££Ž£“£”£•¤¤Ž¤¤”¤•¤–¥¥Ž¥¥•¥–¦¦Ž¦–¦—§§—¨€€€ˆ‰Š‹ŒŽ‘„‘…‘†?‘‡?‘ˆ?‘‰?‘Š?‘‹‘Œ‘‘Ž‘‘‘‘‘’’ƒ’„’…?’†?’‡?’ˆ?’‰?’Š?’‹’Œ’’Ž’’’‘’’’““ƒ“„?“…?“†?“ˆ?“‰?“Š?“““‘“’““”…?”ˆ?”‰?”Š?”””‘”’”“•‰?•Š?•••‘•’•“–‰?–Š?–––‘–’—‰?—Š?—‹?———‘—’˜Š?˜‹?˜˜˜‘˜’™Š?™‹?™™™‘™’šŠ?š‹?ššš‘›Š?›‹?›››‘œŠ?œœœ‘‘žžž‘ŸŸ  ¡¡¡‘¢¢££¤€€€‰Œ‰‰Ž‰ŠŠŠ‹ŠŒŠŠŽŠŠ‹ˆ‹‰‹Š‹‹‹Œ‹‹Ž‹‹‹‘Œ‡ŒˆŒ‰ŒŠŒ‹ŒŒŒŒŽŒŒŒ‘†‡ˆ‰Š‹ŒŽ‘Ž†Ž‡ŽˆŽ‰ŽŠŽ‹ŽŽŽŽŽ‘…†‡ˆ‰ŠŽ‘„…?†‡?ˆ?‰?Ž‘‘„‘…?‘†?‘‡?‘ˆ?‘‰?‘Š?‘Ž‘‘‘‘’„’…?’†?’‡?’ˆ?’‰?’Š?’‹?’Œ?’Ž’’’‘“…“†“‹?“Œ?“?“Ž?“?“?“‘”?”Ž?”?”?”‘?”’?••‘?•’?–‘–’–“—’—“—”˜“˜”˜•™”™•š•›•€€€ˆ‰ˆŠˆ‹ˆŒˆ‰‡‰ˆ‰‰‰Š‰‹‰Œ‰‰ŽŠ†Š‡ŠˆŠ‰ŠŠŠ‹ŠŒŠŠŽ‹…‹†‹‡‹ˆ‹‰‹Š‹‹‹Œ‹‹Ž‹Œ…Œ†Œ‡ŒˆŒ‰ŒŒŒŒŽŒ…†‡ˆ‰ŒŽŽ„ޅކ?އ?Žˆ?މ?ŽŠ?Ž‹?ŽŒ?Ž?ŽŽ?Ž?Ž?Ž‘?Ž˜Ž™„…?†?‡?ˆ?‰?Š?‹?Œ??Ž???‘?“”•–—˜™š„?…?†?‡?Ž‘’“”•–𛑄‘…?‘†?‘‡?‘ˆ?‘Ž‘‘‘‘‘’‘“’„’…’†?’‡?“…“†“‡€€€…•…–…—†Š†‹†Œ†“†”†•†–‡‰‡Š‡‹‡Œ‡‡“‡”‡•ˆˆˆ‰ˆŠˆ‹ˆŒˆˆŽˆ“ˆ”‰‡‰ˆ‰‰‰Š‰‹‰Œ‰‰Ž‰’‰“‰”Š‡ŠˆŠ‰ŠŠŠ‹ŠŒŠŠŽŠŠ‘Š’Š“‹‡‹ˆ‹‰‹Š‹‹‹Œ‹?‹Ž?‹?‹?‹‘?‹’?‹“?‹”?Œ‡ŒˆŒ‰ŒŠŒ‹?ŒŒ?Œ?ŒŽ?Œ?Œ?Œ‘?Œ’?Œ“?‡ˆ‰?Š?‹?Œ??Ž‘’Ž‡ŽˆŽ‰?ŽŠ?Ž‹?ŽŒ?ŽŽŽŽŽŽ‘ˆ‰?Š?‹?Ž‘‰?Š?‹?Ž‘‰‘Š?‘‹?‘Œ?’‰’Š’‹?’Œ?“Š“‹“Œ€€€‚ƒƒ„„„‘……‘…’†‘†’†“‡Š‡‹‡Œ‡‡‘‡’‡“?‡”?ˆ‰ˆŠˆ‹ˆŒˆˆŽˆˆ’?ˆ“?ˆ”?‰‰‰Š‰‹‰Œ‰‰Ž‰‰‰‘?‰’?‰“?‰”‰•ŠˆŠ‰ŠŠŠ‹ŠŒŠŠŽŠŠ?Š‘?Š’?ГДЕ‹ˆ‹‰‹Š‹‹‹Œ‹‹Ž?‹?‹?‹‘?‹’‹“‹”‹•ŒˆŒ‰ŒŠŒ‹ŒŒŒ?ŒŽ?Œ?Œ?Œ‘Œ’Œ“Œ”‰Š‹Œ??Ž??Ž‰ŽŠŽ‹ŽŒ?Ž?ŽŽ?ŽŽ?Š‹ŒŽ???‘?Ž??‘?’‘‘‘‘€€€€ˆˆ‰Š‚‰‚Š‚‹‚ŒƒŠƒ‹ƒŒƒƒŽ?ƒ?„Œ„„Ž?„?„……Ž?…?……‘†Ž?†?††‘†’‡‰‡Š‡‹‡Œ‡‡Ž?‡?‡‡‘‡’ˆˆˆ‰ˆŠˆ‹ˆŒˆˆŽ?ˆ?ˆˆ‘‰ˆ‰‰‰Š‰‹‰Œ‰‰Ž?‰?ŠˆŠ‰ŠŠŠ‹ŠŒŠŠŽ?Š?Š?Š“?‹ˆ‹‰‹Š‹‹‹Œ‹‹Ž?‹?‹?‹’?‹“?‹”?‹•ŒˆŒ‰ŒŠŒ‹ŒŒŒŒŽ?Œ?Œ?Œ‘?Œ’?Œ“?Œ”?Œ•‰Š‹ŒŽ’“”Ž‹ŽŒŽŽŽŽ€€€ƒ‚„‚„Œ?„?…‚…ƒ…„………†…‡…ˆ…‰…Š…‹…Œ?…?†‚†ƒ†„†…†††‡†ˆ†‰†Š†‹†Œ†?†Ž?‡†‡‡‡ˆ‡‰‡Š‡‹‡Œ‡?‡Ž?ˆŠˆ‹ˆŒˆˆŽ?ˆ?‰‰‰Š‰‹‰Œ‰Ž?‰?‰?‰•?ŠˆŠ‰ŠŠŠ‹Š?Š?Š”?Š•?Š–?Š—‹ˆ‹‰‹Š‹‹‹?‹?‹‘?‹’?‹“?‹”?‹•?‹–‹—ŒˆŒ‰ŒŠŒ‹ŒŒŒŒŽŒŒ?Œ‘?Œ’?Œ“?Œ”?Œ•Œ–ˆ‰Š‹ŒŽ?‘?’?“Ž‰ŽŠŽ‹ŽŒŽŽŽŽŽŽ‘Ž’Š‹ŒŽ€€€„‡?„ˆ?…ˆ?…‰?†‰?†Š?‡‰?‡Š?‡‹?ˆˆ‚ˆƒˆ„ˆŠ?ˆ‹?ˆŒ?ˆ’?ˆ“?ˆ”‰€‰‰‚‰ƒ‰„‰…‰‹?‰Œ?‰?‰‘?‰’?‰“?‰”‰•ŠŠ€ŠŠ‚ŠƒŠ„Š…Š†ŠŒ?Š?ŠŽ?Š‘?Š’?Š“?Š”?Š•‹~‹‹€‹‹„‹…‹†‹‡‹?‹Ž?‹?‹‘‹’?‹“?‹”ŒxŒyŒ|Œ}Œ~ŒŒ…Œ†Œ‡ŒˆŒŒŽ?Œ?Œ?Œ‘Œ’yz{|}~…†‡ˆ‰ŒŽ??‘ŽzŽ{Ž|Ž†Ž‡ŽˆŽ‰ŽŠŽ‹ŽŒŽŽŽŽŽ{†‡ˆ‰Š‹ŒŽ‡ˆ‰Š‹Œ‘ˆ‘‰‘Š‘‹€€€ƒŠ?ƒ‹?„‹?„Œ?„“„”„•…Œ?…?…Ž?…“?…”?…•…–†?†Ž?†?†’?†“?†”?†•?†–‡Ž?‡?‡?‡“?‡”?‡•?‡–ˆ?ˆ?ˆ‘?ˆ’?ˆ“?ˆ”?ˆ•?‰?‰‘?‰’?‰“?‰”‰•Š‘?Š’?Š“?Š”?Š•‹‘‹’?‹“?‹”?‹•Œ‘Œ’Œ“Œ”Œ•‘’“”ŽŽ‘Ž’Ž“†‡ˆ‰Š‹ŒŽ‘’“…†‡ˆ‰Š‹ŒŽ‘’‘…‘†‘‡‘ˆ‘‰‘Š‘‹‘Œ‘‘Ž‘‘’„’…’†’‡“ƒ“„“…“†”‚”ƒ”„••‚•ƒ–€––‚—~——€——‚€€€‡ˆ?‡‰?ˆ‰?ˆŠ?‰Š?‰‹?‰Œ?‰‘‰’‰“Š‹?ŠŒ?Š?Š‘?Š’?ГД‹Œ?‹?‹Ž?‹?‹‘?‹’?‹“?‹”Œ?ŒŽ?Œ?Œ‘?Œ’?Œ“?Œ”Ž???‘?’“Ž?Ž?Ž‘?Ž’?Ž“?‘?’?“‘’“‘‘‘‘‘’’’’‘’’“““‘“’”Ž”””‘••Ž•••‘–Œ––Ž–––‘—‹—Œ——Ž——˜Š˜‹˜Œ˜˜Ž˜™‰™Š™‹™Œ™™Žš‰šŠš‹šŒššŽ›‰›Š›‹›Œ›œˆœ‰œŠœ‹œŒœˆ‰Š‹Œžˆž‰žŠž‹žŒžŸˆŸ‰Ÿ‹ŸŒŸ ˆ ‰ Œ ¡ˆ¡‰¡Œ¡¢ˆ¢‰¢Œ¢£‡£ˆ£‰£Œ££Ž¤†¤‡¤Œ¤¤Ž¥‹¥Œ€€€ŒŒŽŒ?Ž?ŽŒ?Ž?ŽŽ?Ž?Ž?Ž??Ž???‘‘Ž?‘?‘’Œ’?’Ž?’?’“Œ?“?“Ž?“?“”Š?”‹?”Œ?”?”Ž””•‡?•ˆ?•‰?•Š?•‹?•Œ••Ž••–„?–…?–†?–‡?–ˆ?–‰?–Œ––Ž––—„?—…?—†?——Ž——˜˜Ž˜˜™™Ž™™šŒššŽšš›Œ››Ž››œŒœœŽœœŒŽžŒžžŽžžŸŒŸŸŽŸŸ Œ  Ž  ¡Œ¡¡Ž¡¡¢Œ¢¢Ž¢¢£Œ££££‘¤Œ¤¤¤¤‘¥Œ¥¥¥‘¦Œ¦¦‘¦’§Œ§§‘§’¨‹¨Œ¨¨‘¨’¨“©‰©Š©‹©Œ©©©©‘©’€€€Ž‡ŽˆŽ‰‡?ˆ?‰Š†?‡?ˆ?‰?Š‘‡?‘ˆ?‘‰?‘Š’ˆ?’‰?’Š?“ˆ“‰?“Š?“‹”ˆ”‰?”Š?”‹?•ˆ•‰?•Š?•‹?•Œ?–ˆ–‰–Š?–‹?–Œ?—‰—Š?—‹?—Œ?˜‰?˜Š?˜‹?˜Œ?™ˆ?™‰?™Š?™‹?™Œ™š‡?šˆ?š‰?šŠš‹šŒš›…?›†?›‡?›ˆ?›Š›‹›Œ››Žœ…?œ†?œ‰œŠœ‹œŒœœŽˆ‰Š‹ŒŽž‡žˆž‰žŠž‹žŒžŸ†Ÿ‡ŸˆŸ‰ŸŠŸ‹ŸŒŸ † ‡ ˆ ‰ Š ‹ Œ¡…¡†¡‡¡ˆ¡Š¡‹¡Œ¢…¢†¢‡¢ˆ¢Š¢‹¢Œ¢£†£‡£ˆ£‰£‹£Œ££Ž¤‡¤ˆ¤‰¤Œ¤¤Ž¥‡¥ˆ¥‰¥¥Ž¥¦ˆ¦‰¦Š¦Ž¦¦§‰§Š§‹§§¨‰¨Š¨‹¨Ž¨¨©‡©ˆ©‰©Š©Œ©©Ž©€€€ŒŠŒ‹ŒŒ‰Š‹ŒŽ‰ŽŠŽ‹ŽŒŽŠ‹ŒŠ?‹?Œ?‘ˆ?‘‰?‘Š‘‹‘Œ‘?‘Ž?’‡?’ˆ?’‰’Š’‹’Œ’’Ž?’?“†?“‡?“ˆ?“‰“Š“‹“Œ““Ž?“?“?”†?”‡?”ˆ”‰”Š”‹”Œ””Ž”?”?•†?•‡?•ˆ•‰•Š•‹•Œ••Ž•?•?–†?–‡?–ˆ–‰–Š–‹–Œ––Ž–?–?—…?—†?—‡?—‰—Š—‹—Œ——?—?—‘?˜…?˜†?˜‰˜Š˜‹˜Œ˜˜?˜‘?™„?™…?™†?™‰™Š™‹™Œ™™?™‘?™’?šƒ?š„?š…?šˆš‰šŠš‹šŒššŽš‘?š’?š“?›ƒ?›„?›ˆ›‰›Š›‹›Œ››Ž›’?›“?œˆœ‰œŠœ‹œŒœœŽ‡ˆ‰Š‹ŒŽž‡žˆž‰žŠžŒžžŽžŸ‡ŸˆŸ‰ŸŠŸŒŸŸŽŸ ‡ ˆ ‰ Š Œ  Ž ¡‡¡ˆ¡‰¡¡Ž¡¢†¢‡¢ˆ¢‰¢¢Ž¢¢£†£‡£ˆ£Ž££¤†¤‡¤ˆ¤Ž¤¤¥†¥‡¥ˆ¥Ž¥¥¦†¦‡¦¦§†§‡§§¨…¨†¨‡¨¨¨‘©„©…©†©‡©©©‘©’€€€0010 CALL SETUP 0020 MVI A,8 0030 STA CNTR 0040 OLP:LXI H,CNTR 0050 MOV B,M 0060 LXI D,8080H 0070 LXI H,80C0H 0080 CALL ROTAT 0090 LXI H,CNTR 0100 INR M 0110 XRA A 0120 CALL 110H 0130 CPI 3 0140 JNZ OLP 0150 RET 0160 ;B=ANGLE 0-63 0170 ;DE=READING POSITION 0180 ;HL=WRITING POSITION 0190 ROTAT:SHLD PUT 0200 CALL READ 0210 XCHG 0220 SHLD GET 0230 CALL DOT 0240 MOV A,B 0250 ANI 15 0260 MOV L,A 0270 MVI H,0 0280 DAD H 0290 DAD H 0300 DAD H 0310 LXI D,SHIFT 0320 DAD D 0330 LXI D,ARCS 0340 MVI C,8 0350 MVLP:MOV A,M 0360 STAX D 0370 INX D 0380 INX H 0390 DCR C 0400 JNZ MVLP 0410 MOV A,B 0420 RRC 0430 RRC 0440 RRC 0450 RRC 0460 ANI 3 0470 JZ DONE 0480 MOV B,A 0490 ADDLP:LXI D,ARCS 0500 LXI H,QLENS 0510 MVI C,8 0520 ADD2:LDAX D 0530 ADD M 0540 STAX D 0550 INX D 0560 INX H 0570 DCR C 0580 JNZ ADD2 0590 DCR B 0600 JNZ ADDLP 0610 DONE: 0620 MVI C,8 0630 LXI H,MEM 0640 SHLD ADDR 0650 LXI H,LENS 0660 SHLD LPNTR 0670 RTLP:LHLD LPNTR 0680 MOV B,M 0690 LHLD ADDR 0700 SHLD FIRST 0710 RTLP2:LHLD GET 0720 XCHG 0730 LHLD ADDR 0740 MOV A,D 0750 ADD M 0760 MOV D,A 0770 INX H 0780 MOV A,E 0790 ADD M 0800 MOV E,A 0810 INX H 0820 SHLD ADDR 0830 CALL READ 0840 STA COLOR 0850 LHLD LPNTR 0860 MOV A,M 0870 LXI D,ARCS-LENS 0880 DAD D 0890 MOV D,A 0900 SUB B 0910 ADD M 0920 CMP D 0930 JC OK 0940 SUB D 0950 OK:MOV E,A 0960 MVI D,0 0970 LHLD FIRST 0980 DAD D 0990 DAD D 1000 XCHG 1010 LHLD PUT 1020 XCHG 1030 MOV A,D 1040 ADD M 1050 MOV D,A 1060 INX H 1070 MOV A,E 1080 ADD M 1090 MOV E,A 1100 LDA COLOR 1110 CALL DOT 1120 DCR B 1130 JNZ RTLP2 1140 LHLD LPNTR 1150 INX H 1160 SHLD LPNTR 1170 DCR C 1180 JNZ RTLP 1190 RET 1200 SETUP:LXI H,DATA 1210 LXI D,MEM 1220 MVI C,8 1230 MLOOP:SHLD ADDR 1240 MOV B,M 1250 INX H 1260 LP1:MOV A,M 1270 STAX D 1280 INX D 1290 INX H 1300 MOV A,M 1310 STAX D 1320 INX D 1330 INX H 1340 DCR B 1350 JNZ LP1 1360 LHLD ADDR 1370 MOV B,M 1380 INX H 1390 LP2:INX H 1400 MOV A,M 1410 STAX D 1420 INX D 1430 DCX H 1440 MOV A,M 1450 CMA 1460 INR A 1470 STAX D 1480 INX D 1490 INX H 1500 INX H 1510 DCR B 1520 JNZ LP2 1530 LHLD ADDR 1540 MOV B,M 1550 INX H 1560 LP3:MOV A,M 1570 CMA 1580 INR A 1590 STAX D 1600 INX D 1610 INX H 1620 MOV A,M 1630 CMA 1640 INR A 1650 STAX D 1660 INX D 1670 INX H 1680 DCR B 1690 JNZ LP3 1700 LHLD ADDR 1710 MOV B,M 1720 INX H 1730 LP4:INX H 1740 MOV A,M 1750 CMA 1760 INR A 1770 STAX D 1780 INX D 1790 DCX H 1800 MOV A,M 1810 STAX D 1820 INX D 1830 INX H 1840 INX H 1850 DCR B 1860 JNZ LP4 1870 DCR C 1880 JNZ MLOOP 1890 RET 1900 DOT:PUSH PSW 1910 CALL SET 1920 POP PSW 1930 OUT 32 1940 RET 1950 READ:CALL SET 1960 IN 32 1970 ORA A 1980 RET 1990 SET:MOV A,D 2000 OUT 33 2010 MOV A,E 2020 CMA 2030 OUT 34 2040 RET 2050 LPNTR:DS 2 2060 GET:DS 2 2070 PUT:DS 2 2080 FIRST:DS 2 2090 COLOR:DS 1 2100 ADDR:DS 2 2110 CNTR:DS 1 2120 ARCS:DS 8 %2130 LENS:DB 8,12,16,24,28,32,36,40 2140 QLENS:DB 2,3,4,6,7,8,9,10 /2150 SHIFT:DB 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1 *2160 DB 0,0,1,1,1,1,1,1,0,1,1,1,1,2,2,2 *2170 DB 1,1,1,2,2,2,2,3,1,1,1,2,2,3,3,3 *2180 DB 1,1,2,2,3,3,3,4,1,1,2,3,3,4,4,4 *2190 DB 1,2,2,3,4,4,5,5,1,2,2,3,4,5,5,6 *2200 DB 1,2,3,4,4,5,6,6,1,2,3,4,5,6,6,7 *2210 DB 2,2,3,5,5,6,7,8,2,2,3,5,6,7,7,8 *2220 DB 2,3,4,5,6,7,8,9,2,3,4,6,7,8,8,9 2230 DATA: 2240 C1:DB 2,-1,0,-1,1 2250 C2:DB 3,-2,0,-2,1,-1,2 "2260 C3:DB 4,-3,0,-3,1,-2,2,-1,3 ,2270 C4:DB 6,-4,0,-4,1,-3,2,-3,3,-2,3,-1,4 12280 C5:DB 7,-5,0,-5,1,-4,2,-4,3,-3,4,-2,4,-1,5 62290 C6:DB 8,-6,0,-6,1,-5,2,-5,3,-4,4,-3,5,-2,5,-1,6 ;2300 C7:DB 9,-7,0,-7,1,-6,2,-6,3,-5,4,-4,5,-3,6,-2,6,-1,7 A2310 C8:DB 10,-8,0,-8,1,-7,2,-7,3,-6,4,-5,5,-4,6,-3,7,-2,7,-1,8 2320 MEM:EQU $ 2320ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0050 MVI B,0 0100 CLP:MOV A,B 0150 OUT 33 0200 OUT 36 0250 OUT 37 0300 OUT 38 0350 INR B 0400 JNZ CLP 0450 LXI H,0 0500 LP1:MOV A,H 0550 OUT 34 0600 LP2:MOV A,L 0650 OUT 33 0700 XRA A 0750 OUT 32 0800 INR L 0850 JNZ LP2 0900 INR H 0950 JNZ LP1 1000 MLOOP:IN 30 1010 ADD A 1050 OUT 33 1100 IN 31 1111 ADD A 1150 CMA 1200 OUT 34 1250 IN 24 1251 ANI 80H 1252 JNZ OK 1253 MVI A,255 1300 OUT 32 1320 OK: 1350 CALL 116H 1400 JNZ MLOOP 1450 RET 14500010 NUM:EQU 20 /0020 NUM4:EQU NUM+NUM+NUM+NUM+NUM+NUM+NUM+NUM 0030 NUM8:EQU NUM4+NUM4 0040 LXI H,TABLE 0050 LXI D,TABLE+1 0060 LXI B,NUM8-1 0070 MVI M,80H 0080 LDIR 0090 LXI H,8000H 0100 SHLD X 0110 SHLD Y 0120 XRA A 0130 OUT 48 0140 CALL SETUP 0150 LXI H,0A000H 0160 DFLP:MOV E,M 0170 INX H 0180 MOV D,M 0190 INX H 0200 DFLP2:MOV A,E 0210 OUT 42 0220 MOV A,D 0230 OUT 43 0240 INX D 0250 MOV A,M 0260 OUT 39 0270 INX H 0280 MOV A,M 0290 OUT 40 0300 INX H 0310 MVI A,2 0320 OUT 41 0330 MOV A,M 0340 CPI 80H 0350 JNZ DFLP2 0360 XRA A 0370 OUT 41 0380 INX H 0390 INX H 0400 MOV A,M 0410 CPI 80H 0420 JNZ DFLP 0430 LXI H,COLS 0440 CLLP:MOV A,M 0450 OUT 33 0460 INX H 0470 MOV A,M 0480 OUT 38 0490 INX H 0500 MOV A,M 0510 OUT 37 0520 INX H 0530 MOV A,M 0540 OUT 36 0550 INX H 0560 MOV A,M 0570 ORA A 0580 JNZ CLLP 0590 MLOOP:CALL 116H 0600 RZ 0610 CALL YOU 0620 LXI H,TABLE+NUM8-1 0630 LXI D,TABLE+NUM8-3 0640 LXI B,NUM8-2 0650 XCHG 0660 LDDR 0670 LHLD XYPOS 0680 SHLD TABLE 0690 BLANK:IN 33 0700 ANI 1 0710 JNZ BLANK 0720 LXI H,TABLE+2 0730 MVI C,NUM 0740 LXI D,14 0750 ERLP:MOV A,M 0760 OUT 33 0770 INX H 0780 MOV A,M 0790 OUT 34 0800 INX H 0810 DAD D 0820 XRA A 0830 OUT 42 0840 OUT 43 0850 OUT 44 0860 OUT 45 0870 OUT 47 0880 CALL WAIT 0890 DCR C 0900 JNZ ERLP 0910 LXI H,TABLE+NUM8 0920 MVI C,NUM 0930 LXI D,-14 0940 PUTLP: 0950 DAD D 0960 DCX H 0970 MOV A,M 0980 OUT 34 0990 DCX H 1000 MOV A,M 1010 OUT 33 1020 XRA A 1030 OUT 42 1040 OUT 43 1050 OUT 45 1060 MVI A,32 1070 SUB C 1080 ANI 7 1090 ADI 16 1100 OUT 44 1110 OUT 47 1120 CALL WAIT 1130 DCR C 1140 JNZ PUTLP 1150 JMP MLOOP 1160 WAIT:IN 33 1170 ANI 16 1180 JZ WAIT 1190 RET 1200 YOU:IN 25 1210 CALL FIX 1220 LHLD X 1230 DAD D 1240 SHLD X 1250 MOV C,H 1260 IN 26 1270 CMA 1280 CALL FIX 1290 LHLD Y 1300 DAD D 1310 SHLD Y 1320 MOV L,H 1330 MOV A,C 1340 CMA 1350 MOV H,A 1360 SHLD XYPOS 1370 RET 1380 FIX:MOV L,A 1390 MVI H,0 1400 ORA A 1410 JP OK 1420 DCR H 1430 OK:DAD H 1440 DAD H 1450 DAD H 1460 XCHG 1470 RET 1480 X:DS 2 1490 Y:DS 2 1500 XYPOS:DS 2 1510 TABLE:DS NUM8 1520 DEFS:DW 0 <1530 DB -5,-5,-5,-4,-5,-3,-5,-2,-5,-1,-5,0,-5,1,-5,2,-5,3 @1540 DB -5,4,-5,5,-4,5,-3,5,-2,5,-1,5,0,5,1,5,2,5,3,5,4,5,5,5 <1550 DB 5,4,5,3,5,2,5,1,5,0,5,-1,5,-2,5,-3,5,-4,5,-5,4,-5 61560 DB 3,-5,2,-5,1,-5,0,-5,-1,-5,-2,-5,-3,-5,-4,-5 1570 DB 80H,80H 1580 DB 80H 1590 COLS:DB 16,0,0,0 1600 DB 17,255,0,0 1610 DB 18,0,255,0 1620 DB 19,255,255,0 1630 DB 20,0,0,255 1640 DB 21,255,0,255 1650 DB 22,0,255,255 1660 DB 23,255,255,255 1670 DB 0 1680 SETUP:MVI C,10 1690 XRA A 1700 OUT 43 1710 LP:MVI A,10 1720 SUB C 1730 OUT 42 1740 XRA A 1750 OUT 39 1760 OUT 40 1770 MVI A,2 1780 OUT 41 1790 DCR C 1800 JNZ LP 1810 MVI A,0 1820 OUT 41 1830 XRA A 1840 OUT 33 1850 OUT 34 1860 MVI B,0 1870 LOOP:MOV A,B 1880 OUT 32 1890 OUT 44 1900 XRA A 1910 OUT 42 1920 OUT 43 1930 OUT 45 1940 OUT 46 1950 WT3:IN 33 1960 ANI 16 1970 JZ WT3 1980 INR B 1990 JNZ LOOP 2000 RET 2000˜w&¿g•?D5u3¿"'C”?q™@I¾‘T>  Zõ40960 Rõ15  R2õRâR  IõåR ± R ( KõÄàR2åIâI) - JõåK ± K 2 I2õÆàI)\„ I2ô0 ² I2õI2ã256 < J2õÆàJ)\„ J2ô0 ² J2õJ2ã256 F • Z,I2\• Zã1,J2\ZõZã2 P ƒ J\ƒ I C-C%C C ñòûòüòýòþòÿòòòòòòóùóúóûóüóýóþóÿóóóóóóóóô÷ôøôùôúôûôüôýôþôÿôôôôôôôôôô õöõ÷õøõùõúõûõüõýõþõÿõõõõõõõõõõ õ öõööö÷öøöùöúöûöüöýöþöÿöööööööööö ö ö ÷ô÷õ÷ö÷÷÷ø÷ù÷ú÷û÷ü÷ý÷þ÷ÿ÷÷÷÷÷÷÷÷÷÷ ÷ ÷ ÷ øôøõøöø÷øøøùøúøûøüøýøþøÿøøøøøøøøøø ø ø ø ùóùôùõùöù÷ùøùùùúùûùüùýùþùÿùùùùùùùùùù ù ù ù ù úóúôúõúöú÷úøúùúúúûúüúýúþúÿúúúúúúúúúú ú ú ú ú ûòûóûôûõûöû÷ûøûùûúûûûüûýûþûÿûûûûûûûûûû û û û û ûüòüóüôüõüöü÷üøüùüúüûüüüýüþüÿüüüüüüüüüü ü ü ü ü üýòýóýôýõýöý÷ýøýùýúýûýüýýýþýÿýýýýýýýýýý ý ý ý ý ýþòþóþôþõþöþ÷þøþùþúþûþüþýþþþÿþþþþþþþþþþ þ þ þ þ þÿòÿóÿôÿõÿöÿ÷ÿøÿùÿúÿûÿüÿýÿþÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ ÿ ÿ ÿñòóôõö÷øùúûüýþÿ òóôõö÷øùúûüýþÿ     òóôõö÷øùúûüýþÿ     òóôõö÷øùúûüýþÿ     òóôõö÷øùúûüýþÿ     òóôõö÷øùúûüýþÿ     óôõö÷øùúûüýþÿ     óôõö÷øùúûüýþÿ     ôõö÷øùúûüýþÿ    ô õ ö ÷ ø ù ú û ü ý þ ÿ         õ ö ÷ ø ù ú û ü ý þ ÿ         ö ÷ ø ù ú û ü ý þ ÿ         ÷ ø ù ú û ü ý þ ÿ         ù ú û ü ý þ ÿ       ûüýþÿ€€€þÿ€€€€€€œ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ((°Æœ(0010 MEM:EQU 4F00H 0020 C1:EQU 32 0030 XRA A 0040 OUT 48 0050 LXI H,8000H 0060 ZLP:MOV A,H 0070 OUT 43 0080 MOV A,L 0090 OUT 42 0100 XRA A 0110 OUT 39 0120 OUT 40 0130 MVI A,3 0140 OUT 41 0150 INX H 0160 MOV A,H 0170 CPI 90H 0180 JC ZLP 0190 MVI A,C1 0200 OUT 32 0210 XRA A 0220 OUT 44 0230 OUT 42 0240 MVI A,80H 0250 OUT 45 0260 OUT 43 0270 OUT 46 0280 CALL WAIT 0290 LXI H,TABLE 0300 CLP:MOV A,M 0310 INR A 0320 JZ DONE 0330 DCR A 0340 OUT 33 0350 INX H 0360 MOV A,M 0370 OUT 38 0380 INX H 0390 MOV A,M 0400 OUT 37 0410 INX H 0420 MOV A,M 0430 OUT 36 0440 INX H 0450 JMP CLP 0460 DONE: 0470 MVI A,26 0480 STA ADDR 0490 LXI B,MEM 0500 LXI D,0 0510 LXI H,5000H 0520 SET2:MOV A,E 0530 STAX B 0540 INX B 0550 MOV A,D 0560 STAX B 0570 INX B 0580 PUSH D 0590 SET:MOV A,D 0600 OUT 43 0610 MOV A,E 0620 OUT 42 0630 INX D 0640 MOV A,M 0650 SUI 88H 0660 OUT 39 0670 OUT 33 0680 INX H 0690 MOV A,M 0700 SUI 88H 0710 OUT 40 0720 OUT 34 0730 INX H 0740 MVI A,3 0750 OUT 41 0760 MOV A,M 0770 OUT 32 0780 INX H 0790 MOV A,M 0800 CPI 80H 0810 JNZ SET 0820 MVI A,1 0830 OUT 41 0840 INX H 0850 INX H 0860 INX H 0870 XRA A 0880 OUT 33 0890 OUT 34 0900 XTHL 0910 MOV A,H 0920 OUT 43 0930 OUT 45 0940 MOV A,L 0950 OUT 42 0960 OUT 44 0970 OUT 46 0980 POP H 0990 CALL WAIT 1000 LDA ADDR 1010 DCR A 1020 STA ADDR 1030 JNZ SET2 1040 LXI H,0 1050 LPY:MOV A,H 1060 OUT 34 1070 LPX:MOV A,L 1080 OUT 33 1090 MVI A,C1 1100 OUT 32 1110 INR L 1120 JNZ LPX 1130 INR H 1140 JNZ LPY 1150 ; RUNNING AT 6000H 1160 ; POINTS AT 5F00H 1170 OLOOP:LXI H,MEM 1180 SHLD POINT 1190 MVI C,14 1200 MLOOP:CALL 116H 1210 CPI 3 1220 RZ 1230 ORA A 1240 CNZ JUMP 1250 LHLD POINT 1260 MOV E,M 1270 INX H 1280 MOV D,M 1290 INX H 1300 SHLD POINT 1310 XCHG 1320 SHLD ADDR 1330 LXI D,0 1340 ONLP:MOV A,E 1350 ADI 24 1360 MOV E,A 1370 MOV A,D 1380 ADI 4 1390 MOV D,A 1400 LHLD ADDR 1410 CALL ON 1420 MOV A,D 1430 ORA E 1440 JNZ ONLP 1450 MVI B,2 1460 WT1:IN 33 1470 ANI 1 1480 JZ WT1 1490 WT2:IN 33 1500 ANI 1 1510 JNZ WT2 1520 DCR B 1530 JNZ WT1 1540 OFFLP: 1550 MOV A,E 1560 ADI 24 1570 MOV E,A 1580 MOV A,D 1590 ADI 4 1600 MOV D,A 1610 LHLD ADDR 1620 CALL OFF 1630 MOV A,D 1640 ORA E 1650 JNZ OFFLP 1660 DCR C 1670 JNZ MLOOP 1680 JMP OLOOP 1690 JUMP:LXI H,MEM+28 1700 SHLD POINT 1710 MVI C,12 1720 ANI 7 1730 OUT 48 1740 RET 1750 ON: 1760 MOV A,H 1770 OUT 43 1780 OUT 45 1790 MOV A,L 1800 OUT 42 1810 OUT 44 1820 MOV A,D 1830 OUT 33 1840 MOV A,E 1850 CMA 1860 OUT 34 1870 OUT 47 1880 WAIT:IN 33 1890 ANI 16 1900 JZ WAIT 1910 RET 1920 OFF:MVI A,80H 1930 OUT 45 1940 XRA A 1950 OUT 44 1960 MOV A,H 1970 OUT 43 1980 MOV A,L 1990 OUT 42 2000 MOV A,D 2010 OUT 33 2020 MOV A,E 2030 CMA 2040 OUT 34 2050 OUT 47 2060 JMP WAIT 2070 ADDR:DS 2 2080 POINT:DS 2 2090 POS:DS 2 2100 TABLE:DB 0,0,0,0 2110 DB 3FH,0FFH,0FFH,0FFH 2120 DB 32,0FFH,0,0 2130 DB 0FFH 2130˜w&¿g•?D5u3¿"'C”?q™@I¾‘T>  Zõ40960 Rõ15  R2õRâR  IõåR ± R ( KõÄàR2åIâI) - JõåK ± K 2 I2õÆàI)\„ I2ô0 ² I2õI2ã256 < J2õÆàJ)\„ J2ô0 ² J2õJ2ã256 F • Z,I2\• Zã1,J2\ZõZã2 P ƒ J\ƒ I C-C%C C0005 LEN:EQU 5 0010 DIST:EQU 3 0015 JVAL:EQU 40 0020 OFSET:EQU 16 0025 KNUM:EQU 4 30030 MSIZE:EQU KNUM+KNUM+KNUM+KNUM+KNUM+KNUM+KNUM 0035 BCOL:EQU 4 0040 TIME:EQU 40 0045 START: 0050 LXI H,CTAB 0055 CLP:MOV A,M 0060 OUT 33 0065 INX H 0070 MOV A,M 0075 OUT 38 0080 INX H 0085 MOV A,M 0090 OUT 37 0095 INX H 0100 MOV A,M 0105 OUT 36 0110 INX H 0115 MOV A,M 0120 INR A 0125 JNZ CLP 0130 CALL SET2 0135 XRA A 0140 CALL CLEAR 0145 LXI H,FTAB 0150 LXI D,FTAB+1 0155 MVI M,0 0160 LXI B,128 0165 LDIR 0170 CALL BOARD 0175 MVI A,2 0180 OUT 48 0185 XRA A 0190 STA EFLAG 0195 LXI H,TESTS 0200 LXI D,KMEM 0205 LXI B,MSIZE 0210 LDIR 0215 LXI H,PTEST 0220 LXI D,PAC1 0225 LXI B,6 0230 LDIR 0235 HERE: 0240 CALL DEFB 0245 MVI D,188 0250 MVI E,112 0255 MVI A,24 0260 OUT 45 0265 XRA A 0270 OUT 42 0275 OUT 44 0280 MVI A,80H 0285 OUT 43 0290 CALL SET 0295 OUT 46 0300 CALL FIGWT 0305 LXI H,SCORE 0310 LXI D,SCORE+1 0315 MVI M,0 0320 LXI B,LEN 0325 LDIR 0330 MLOOP:EQU $ 0335 LHLD PAC1+4 0340 SHLD PSAVE 0345 LXI H,PAC1 0350 CALL PLAY 0355 LDA FFLAG 0360 ORA A 0365 JNZ NOFS 0370 IN 24 0380 ANI 8 0385 JNZ NOFS 0390 LXI H,PAC1 0395 CALL PLAY 0400 NOFS:EQU $ 0405 LHLD PAC1+4 0410 SHLD NPOS 0415 LXI H,KMEM 0420 LXI D,TEMP 0425 LXI B,MSIZE 0430 LDIR 0435 CALL MKILL 0440 MVI A,1 0445 OUT 2 0450 HLT:IN 33 0455 ANI 1 0460 JNZ HLT 0465 CALL PUTB 0470 LDED PSAVE 0475 MVI A,24 0480 OUT 45 0485 XRA A 0490 OUT 44 0495 OUT 42 0500 MVI A,80H 0505 OUT 43 0510 CALL SET 0515 OUT 47 0520 CALL FIGWT 0525 LDA FFLAG 0530 ORA A 0535 JZ NFOOD 0540 LDED NPOS 0545 INR E 0550 INR E 0555 CALL READ 0560 MOV B,A 0565 DCR E 0570 DCR E 0575 LHLD PNTS+18 0580 MOV A,H 0585 OUT 43 0590 MOV A,L 0595 OUT 42 0600 MVI A,18 0605 OUT 44 0610 XRA A 0615 OUT 45 0620 CALL SET 0625 OUT 47 0630 CALL FIGWT 0635 MOV A,B 0640 CPI 3 0645 JNZ NFOOD 0650 ENERG:MVI A,1 0655 STA EFLAG 0660 LXI H,200H 0665 SHLD ECNTR 0670 MVI B,4 0675 CALL ADDSC 0680 MVI A,1 0685 STA EVAL 0690 NFOOD:MVI A,2 0695 OUT 48 0700 CALL DEFB 0705 MVI A,24 0710 OUT 45 0715 XRA A 0720 OUT 42 0725 OUT 44 0730 MVI A,80H 0735 OUT 43 0740 LDED NPOS 0745 CALL SET 0750 OUT 46 0755 CALL FIGWT 0760 LDA NUM2 0765 OUT 48 0770 LDA NUM 0775 ADI 5 0780 ADD A 0785 MOV E,A 0790 MVI D,0 0795 LXI H,PNTS 0800 DAD D 0805 MOV A,M 0810 OUT 42 0815 INX H 0820 MOV A,M 0825 OUT 43 0830 XRA A 0835 OUT 45 0840 MVI A,14 0845 OUT 44 0850 OUT 47 0855 CALL FIGWT 0860 MVI A,2 0865 OUT 48 0870 CALL PUTK 0875 LXI H,SCORE 0880 LXI D,5400H 0885 CALL PUTSC 0890 LXI H,SCORE 0895 LXI D,HIGH 0900 LXI B,LEN 0905 HTEST:LDAX D 0910 CMP M 0915 JC NEWH 0920 JNZ LOW 0925 INX D 0930 INX H 0935 DCR C 0940 JNZ HTEST 0945 JMP LOW 0950 NEWH:LDIR 0955 LOW:LXI H,HIGH 0960 LXI D,54C0H 0965 CALL PUTSC 0970 WAIT:IN 24 0975 BIT 2,A 0980 JZ WAIT 0985 BIT 0,A 0990 JZ START 0995 CALL 116H 1000 CPI 3 1005 JNZ MLOOP 1010 JMP 0E00H 1015 DEAD:IN 24 1020 ANI 1 1025 JNZ DEAD 1030 JMP START 1035 XFIX:ORA A 1040 JZ OFFL 1045 CPI 27 1050 CMC 1055 RNZ 1060 OFFR:MVI A,1 1065 STC 1070 RET 1075 OFFL:MVI A,26 1080 STC 1085 RET 1090 ADDAH:ADD L 1095 MOV L,A 1100 RNC 1105 INR H 1110 RET 1115 DEFB:LXI IX,KMEM 1120 MVI H,KNUM 1125 LXI B,7 1130 DBLP:MOV D,IX,1 1135 MOV E,IX,2 1140 DAD IX,B 1145 MVI A,31 1150 ADD H 1155 OUT 45 1160 XRA A 1165 OUT 44 1170 OUT 42 1175 MVI A,80H 1180 OUT 43 1185 CALL SET 1190 OUT 46 1195 CALL FIGWT 1200 DCR H 1205 JNZ DBLP 1210 RET 1215 PUTB:LXI IX,TEMP 1220 MVI H,KNUM 1225 LXI B,7 1230 PBLP:MOV D,IX,1 1235 MOV E,IX,2 1240 DAD IX,B 1245 MVI A,31 1250 ADD H 1255 OUT 45 1260 XRA A 1265 OUT 44 1270 OUT 42 1275 MVI A,80H 1280 OUT 43 1285 CALL SET 1290 OUT 47 1295 CALL FIGWT 1300 DCR H 1305 JNZ PBLP 1310 RET 1315 PUTK:LXI IX,KMEM 1320 MVI H,KNUM 1325 LXI B,7 1330 PKLP:MOV D,IX,1 1335 MOV E,IX,2 1340 CALL SET 1345 MOV L,IX,0 1350 LDA EFLAG 1355 ORA A 1360 MOV A,L 1365 JZ NOVUL 1370 LDA ECNTR+1 1375 ORA A 1380 JNZ NOFLS 1385 LDA ECNTR 1390 CPI 96 1395 JC FLASH 1400 NOFLS:MVI A,4 1405 JMP NOVUL 1410 FLASH:ANI 16 1415 MVI A,4 1420 JNZ NOVUL 1425 MOV A,L 1430 NOVUL: 1435 MOV L,A 1440 PUSH H 1445 MVI H,0 1450 DAD H 1455 LXI D,POINT 1460 DAD D 1465 MOV E,M 1470 INX H 1475 MOV D,M 1480 MOV A,D 1485 OUT 43 1490 MOV A,E 1495 OUT 42 1500 POP H 1505 MOV A,L 1510 CPI 4 1515 MVI A,12 1520 JZ BLUE 1525 MOV A,H 1530 ADD A 1535 ADD H 1540 SUI 3 1545 BLUE:OUT 44 1550 XRA A 1555 OUT 45 1560 OUT 47 1565 CALL FIGWT 1570 DAD IX,B 1575 DCR H 1580 JNZ PKLP 1585 LHLD ECNTR 1590 DCX H 1595 SHLD ECNTR 1600 MOV A,H 1605 ORA L 1610 RNZ 1615 SWAP:XRA A 1620 STA EFLAG 1625 RET 1630 MKILL:LXI IX,KMEM 1635 MVI B,KNUM 1640 MKLP:MOV A,IX,0 1645 STA DIR 1650 MOV D,IX,1 1655 MOV E,IX,2 1660 MOV A,IX,5 1665 ANI 1 1670 JNZ ALIVE 1675 LDA DIR 1680 CALL STEP 1685 MOV IX,1,D 1690 MOV IX,2,E 1695 LDA NPOS 1700 SUB E 1705 CC NEGA 1710 CPI DIST 1715 JNC ALIVE 1720 LDA NPOS+1 1725 SUB D 1730 CC NEGA 1735 CPI DIST 1740 JNC ALIVE 1745 LDA EFLAG 1750 ORA A 1755 JZ DEAD 1760 PUSH B 1765 LDA EVAL 1770 MOV B,A 1775 ADD A 1780 STA EVAL 1785 CALL ADDD2 1790 POP B 1795 MVI IX,3,14 1800 MVI IX,4,13 1805 MVI IX,1,116 1810 MVI IX,2,112 1815 ALIVE:MOV D,IX,3 1820 MOV E,IX,4 1825 DCR IX,5 1830 JZ NODE 1835 LDA EFLAG 1840 ORA A 1845 JNZ NONOD 1850 MOV A,D 1855 CPI 14 1860 JNZ FAST 1865 MOV A,E 1870 CPI 5 1875 JC NONOD 1880 CPI 23 1885 JNC NONOD 1890 FAST:DCR IX,5 1895 JNZ NONOD 1900 NODE:MVI IX,5,16 1905 LDA DIR 1910 CALL STEP 1915 XRI 2 1920 STA DIR 1925 PUSH B 1930 LBCD PAC1+2 1935 CALL DTOB 1940 POP B 1945 PUSH B 1950 MOV A,B 1955 RRC 1960 JC LARGE 1965 LDA DIFFS 1970 ORA A 1975 JZ LARGE 1980 MOV A,H 1985 MOV H,L 1990 MOV L,A 1995 LARGE:LDA EFLAG 2000 ORA A 2005 JNZ CANT 2010 MOV A,H 2015 CALL TDIR 2020 MOV A,H 2025 JZ TAKE 2030 MOV A,L 2035 CALL TDIR 2040 MOV A,L 2045 JZ TAKE 2050 CANT:CALL RND 2055 ANI 3 2060 MOV C,A 2065 ROT:INR C 2070 MOV A,C 2075 ANI 3 2080 MOV C,A 2085 LDA DIR 2090 CMP C 2095 JZ ROT 2100 MOV A,C 2105 PUSH D 2110 CALL STEP 2115 CALL ITEST 2120 POP D 2125 JNZ ROT 2130 MOV A,C 2135 TAKE:POP B 2140 MOV C,A 2145 MOV A,E 2150 CALL XFIX 2155 MOV E,A 2160 MOV IX,3,D 2165 MOV IX,4,E 2170 MOV IX,0,C 2175 MOV A,D 2180 ADD A 2185 DCR A 2190 ADD A 2195 ADD A 2200 ADI 8 2205 MOV IX,1,A 2210 MOV A,E 2215 ADD A 2220 DCR A 2225 ADD A 2230 ADD A 2235 ADI 8 2240 MOV IX,2,A 2245 NONOD:LXI D,7 2250 DAD IX,D 2255 DCR B 2260 JNZ MKLP 2265 RET 2270 TDIR:PUSH D 2275 PUSH H 2280 MOV H,A 2285 LDA DIR 2290 CMP H 2295 MOV A,H 2300 JNZ POSIB 2305 INR A 2310 ORA A 2315 JMP POPS 2320 POSIB:CALL STEP 2325 CALL ITEST 2330 POPS:POP H 2335 POP D 2340 RET 2345 PLAY:LDA COUNT 2350 DCR A 2355 STA COUNT 2360 ANI 15 2365 JNZ PLAY2 2370 LDA EXT 2375 ORA A 2380 JZ PLAY2 2385 XRA A 2390 STA EXT 2395 RET 2400 PLAY2:XRA A 2405 STA FFLAG 2410 MOV A,M 2415 SHLD PNTR 2420 CALL JOYST 2425 BACK:CMP M 2430 MOV C,A 2435 MOV A,B 2440 STA ALT 2445 MOV A,C 2450 JZ MOVE 2455 XRI 2 2460 CMP M 2465 JNZ NOREV 2470 MOV M,C 2475 INX H 2480 MVI A,8 2485 SUB M 2490 JZ OK 2495 MOV M,A 2500 INX H 2505 MOV E,M 2510 INX H 2515 MOV D,M 2520 MOV A,C 2525 XRI 2 2530 CALL STEP 2535 MOV M,D 2540 DCX H 2545 MOV M,E 2550 DCX H 2555 JMP SKIP 2560 OK:MVI M,8 2565 SKIP:DCX H 2570 JMP MOVE 2575 NOREV:INX H 2580 MOV A,M 2585 CPI 8 2590 JNZ BAD 2595 INX H 2600 MOV E,M 2605 INX H 2610 MOV D,M 2615 DCX H 2620 DCX H 2625 DCX H 2630 PUSH B 2635 PUSH H 2640 MOV A,C 2645 CALL STEP 2650 CALL ITEST 2655 POP H 2660 POP B 2665 JNZ MOVE 2670 MOV M,C 2675 INX H 2680 BAD:DCX H 2685 MOVE:MOV C,M 2690 INX H 2695 MOV A,M 2700 CPI 8 2705 JNZ GO 2710 PUSH B 2715 PUSH H 2720 INX H 2725 MOV E,M 2730 INX H 2735 MOV D,M 2740 MOV A,C 2745 CALL STEP 2750 CALL ITEST 2755 POP H 2760 POP B 2765 JZ GO 2770 LDA ALT 2775 CPI 0FFH 2780 JZ NOTRY 2785 LHLD PNTR 2790 MVI B,0FFH 2795 JMP BACK 2800 NOTRY:INX H 2805 INX H 2810 INX H 2815 MOV E,M 2820 INX H 2825 MOV D,M 2830 JMP OTHER 2835 GO:DCR M 2840 JNZ NYET 2845 MVI M,8 2850 INX H 2855 MOV E,M 2860 INX H 2865 MOV D,M 2870 MOV A,C 2875 CALL STEP 2880 CALL CFOOD 2885 MOV M,D 2890 DCX H 2895 MOV M,E 2900 DCX H 2905 NYET:INX H 2910 INX H 2915 INX H 2920 MOV E,M 2925 INX H 2930 MOV D,M 2935 MOV A,C 2940 CALL STEP 2945 MOV M,D 2950 DCX H 2955 MOV M,E 2960 OTHER:LHLD PNTR 2965 INX H 2970 INX H 2975 MOV A,M 2980 CALL XFIX 2985 JNC NOEXT 2990 MOV M,A 2995 INX H 3000 INX H 3005 ADD A 3010 ADD A 3015 ADD A 3020 ADI 4 3025 MOV M,A 3030 MOV E,A 3035 NOEXT:LDA COUNT 3040 ANI 15 3045 JNZ SETN 3050 LDA EXT 3055 ORA A 3060 LHLD PNTR 3065 JZ PLAY 3070 SETN:LHLD PNTR 3075 MOV A,M 3080 ANI 3 3085 MOV E,A 3090 MVI D,0 3095 LXI H,WAYS 3100 DAD D 3105 MOV A,M 3110 STA NUM2 3115 LHLD PNTR 3120 INX H 3125 MOV A,M 3130 ANI 7 3135 MOV C,A 3140 MVI A,3 3145 SUB C 3150 JNC NOCAR 3155 CMA 3160 NOCAR: 3165 STA NUM 3170 RET 3175 WAYS:DB 0,4,1,6 3180 CFOOD:PUSH H 3185 PUSH D 3190 CALL SETUP 3195 MOV D,A 3200 ANA M 3205 JZ NOFD 3210 MVI B,1 3215 CALL ADDSC 3220 MOV A,D 3225 CMA 3230 ANA M 3235 MOV M,A 3240 MVI A,1 3245 STA FFLAG 3250 STA EXT 3255 POP D 3260 MOV A,D 3265 ADD A 3270 ADD A 3275 ADD A 3280 SUI 4 3285 MOV H,A 3290 MOV A,E 3295 ADD A 3300 ADD A 3305 ADD A 3310 SUI 4 3315 MOV L,A 3320 SHLD FPOS 3325 JMP HPOP 3330 NOFD:POP D 3335 HPOP:POP H 3340 RET 3345 ITEST:MVI A,27 3350 SUB E 3355 CPI 14 3360 JNC NOSUB 3365 MOV E,A 3370 NOSUB:MOV A,E 3375 ANI 7 3380 LXI H,BITS 3385 CALL ADDAH 3390 MOV A,E 3395 RRC 3400 RRC 3405 RRC 3410 ANI 1FH 3415 ADD D 3420 ADD D 3425 MOV E,A 3430 MVI D,0 3435 MOV A,M 3440 LXI H,IBORD 3445 DAD D 3450 ANA M 3455 RET #3460 BITS:DB 128,64,32,16,8,4,2,1 3465 ADDD2:PUSH H 3470 LXI H,SCORE+LEN-2 3475 JMP INCLP 3480 ADDSC:PUSH H 3485 LXI H,SCORE+LEN-1 3490 INCLP:MOV A,M 3495 ADD B 3500 MOV M,A 3505 MVI B,0FFH 3510 SBLP:SUI 10 3515 INR B 3520 JNC SBLP 3525 ADI 10 3530 MOV M,A 3535 MOV A,B 3540 ORA A 3545 JZ QUIT 3550 DCX H 3555 JMP INCLP 3560 QUIT:POP H 3565 RET 3570 PUTSC:MVI C,LEN 3575 MVI B,0 3580 SCLP:MOV A,M 3585 ORA B 3590 MOV B,A 3595 JZ LEAD0 3600 MOV A,M 3605 ADI 30H 3610 CALL UFIG 3615 LEAD0:MOV A,E 3620 ADI 8 3625 MOV E,A 3630 INX H 3635 DCR C 3640 JNZ SCLP 3645 RET 3650 LXI H,FTAB 3655 DAD D 3660 ANA M 3665 RET 3670 FOFF:CALL SETUP 3675 LXI H,FTAB 3680 DAD D 3685 CMA 3690 ANA M 3695 MOV M,A 3700 RET 3705 FON:CALL SETUP 3710 ORA M 3715 MOV M,A 3720 RET 3725 SETUP:MOV A,E 3730 ANI 7 3735 LXI H,BITS 3740 CALL ADDAH 3745 MOV A,E 3750 RRC 3755 RRC 3760 RRC 3765 ANI 1FH 3770 MOV E,A 3775 MOV A,D 3780 ADD A 3785 ADD A 3790 ADD E 3795 MOV E,A 3800 MVI D,0 3805 MOV A,M 3810 LXI H,FTAB 3815 DAD D 3820 RET 3825 STEP:ANI 3 3830 JZ UP 3835 CPI 1 3840 JZ RIGHT 3845 CPI 2 3850 JZ DOWN 3855 LEFT:DCR E 3860 RET 3865 RIGHT:INR E 3870 RET 3875 UP:DCR D 3880 RET 3885 DOWN:INR D 3890 RET 3895 BOARD:LXI H,OBORD 3900 BDLP2:MOV D,M 3905 INX H 3910 MOV E,M 3915 INX H 3916 INR D 3920 BDLP:MOV B,M 3925 INX H 3930 MOV C,M 3935 INX H 3936 INR B 3940 PUSH H 3945 CALL DTOB 3950 MOV H,A 3955 CALL STEP 3960 LINE:PUSH D 3965 MVI A,BCOL 3970 CALL DOT2 3975 MVI A,224 3980 SUB E 3985 MOV E,A 3990 MVI A,BCOL 3995 CALL DOT2 4000 POP D 4005 MOV A,H 4010 CALL STEP 4015 MOV A,D 4020 CMP B 4025 JNZ LINE 4030 MOV A,E 4035 CMP C 4040 JNZ LINE 4045 POP H 4050 MOV A,M 4055 INR A 4060 JNZ BDLP 4065 INX H 4070 MOV A,M 4075 INR A 4080 JNZ BDLP2 4085 LXI H,FOOD 4090 FDLP:MOV D,M 4095 INX H 4100 MOV E,M 4105 INX H 4110 MVI A,3 4115 CALL FPUT 4120 MOV C,E 4125 MVI A,224 4130 SUB E 4135 MOV E,A 4140 MVI A,3 4145 CALL FPUT 4150 MOV A,D 4155 SUI 4 4160 RRC 4165 RRC 4170 RRC 4175 ANI 1FH 4180 MOV D,A 4185 MOV A,C 4190 SUI 4 4195 RRC 4200 RRC 4205 RRC 4210 ANI 1FH 4215 MOV E,A 4220 PUSH H 4225 PUSH D 4230 CALL FON 4235 POP D 4240 MVI A,27 4245 SUB E 4250 MOV E,A 4255 CALL FON 4260 POP H 4265 MOV A,M 4270 INR A 4275 JNZ FDLP 4280 RET 4285 FPUT:DCR D 4290 CALL DOT 4295 DCR E 4300 CALL DOT 4305 INR D 4310 CALL DOT 4315 INR E 4320 JMP DOT 4325 DTOB:PUSH D 4330 MOV A,D 4335 SUB B 4340 CC NEGA 4345 MOV H,A 4350 MOV A,E 4355 SUB C 4360 CC NEGA 4365 MOV L,A 4370 MOV A,D 4375 CMP B 4380 MVI D,2 4385 JC DONEY 4390 MVI D,0 4395 DONEY:MOV A,E 4400 CMP C 4405 MVI E,1 4410 JC DONEX 4415 MVI E,3 4420 DONEX:MOV A,H 4425 CMP L 4430 JNC YBIG 4435 CALL SWAP2 4440 YBIG:SHLD DIFFS 4445 MOV A,H 4450 ORA A 4455 MOV A,D 4460 CZ SUBST 4465 MOV D,A 4470 MOV A,L 4475 ORA A 4480 MOV A,E 4485 CZ SUBST 4490 MOV E,A 4495 XCHG 4500 POP D 4505 MOV A,H 4510 RET 4515 SUBST:LDA DIR 4520 XRI 2 4525 RET 4530 SWAP2:MOV A,D 4535 MOV D,E 4540 MOV E,A 4545 MOV A,H 4550 MOV H,L 4555 MOV L,A 4560 RET 4565 JOYST:STA DIR 4570 PUSH H 4575 IN 25 4580 MOV E,A 4585 CALL ABS 4590 MOV L,A 4595 IN 26 4600 CMA 4610 MOV D,A 4615 CALL ABS 4620 MOV H,A 4625 CPI JVAL 4630 MVI B,0FFH 4635 JC YSMAL 4640 MOV A,D 4645 ORA A 4650 MVI B,0 4655 JM YSMAL 4660 MVI B,2 4665 YSMAL:MOV A,L 4670 CPI JVAL 4675 MVI C,0FFH 4680 JC XSMAL 4685 MOV A,E 4690 ORA A 4695 MVI C,3 4700 JM XSMAL 4705 MVI C,1 4710 XSMAL:MOV A,H 4715 CMP L 4720 MOV A,C 4725 JC DOPOP 4730 MOV H,B 4735 MOV B,A 4740 MOV A,H 4745 DOPOP:POP H 4750 CPI 0FFH 4755 RNZ 4760 LDA DIR 4765 RET 4770 DOOFF:LDA NUM 4775 CPI 1 4780 MVI A,0 4785 RNZ 4790 MVI A,OFSET 4795 RET 4800 ABS:ORA A 4805 RP 4810 NEGA:CMA 4815 INR A 4820 RET 4825 CLEAR:PUSH B 4830 PUSH H 4835 LXI H,0 4840 MOV B,A 4845 LPY:MOV A,H 4850 OUT 34 4855 LPX:MOV A,L 4860 OUT 33 4865 MOV A,B 4870 OUT 32 4875 INR L 4880 JNZ LPX 4885 INR H 4890 JNZ LPY 4895 POP H 4900 POP B 4905 RET 4910 READ:CALL SET 4915 IN 32 4920 ANI 7 4925 RET 4930 DOT2:PUSH PSW 4932 DCR D 4935 CALL DOT 4940 POP PSW 4945 INR D 4950 DOT:PUSH PSW 4955 CALL SET 4960 POP PSW 4965 OUT 32 4970 RET 4975 SET:MOV A,D 4980 OUT 33 4985 MOV A,E 4990 ADI OFSET 4995 CMA 5000 OUT 34 5005 RET 5010 DFIG:PUSH PSW 5015 CALL FIGWT 5020 POP PSW 5025 CALL SET 5030 RET 5035 UFIG:PUSH PSW 5040 CALL FIGWT 5045 POP PSW 5050 CALL SET 5055 RET 5060 FIGWT:IN 33 5065 ANI 16 5070 JZ FIGWT 5075 RET 15080 IBORD:DB 255,255,128,6,0BDH,0F6H,0BDH,0F6H .5085 DB 0BDH,0F6H,128,0,0BDH,0BFH,0BDH,0BFH )5090 DB 129,86H,0FDH,0F6H,5,0F6H,5,80H +5095 DB 5,0B8H,0FDH,0A0H,0,20H,0FDH,0A0H (5100 DB 5,0BFH,5,80H,5,0BFH,0FDH,0BFH *5105 DB 80H,6,0BDH,0F6H,0BDH,0F6H,8CH,0 05110 DB 0EDH,0BFH,0EDH,0BFH,81H,86H,0BFH,0F6H (5115 DB 0BFH,0F6H,80H,0,0FFH,0FFH,0,0 75120 OBORD:DB 0,116,0,0,80,0,80,40,104,40,104,0,108,0 45125 DB 108,44,76,44,76,4,4,4,4,108,36,108,36,116 5130 DB 255 85135 DB 244,116,244,4,204,4,204,20,196,20,196,4,156,4 25140 DB 156,44,124,44,124,0,128,0,128,40,152,40 "5145 DB 152,0,248,0,248,116,255 ,5150 DB 20,20,20,44,36,44,36,20,20,20,255 ,5155 DB 20,60,20,92,36,92,36,60,20,60,255 ,5160 DB 52,20,52,44,60,44,60,20,52,20,255 55165 DB 52,60,52,68,76,68,76,92,84,92,84,68,108,68 5170 DB 108,60,52,60,255 65175 DB 52,116,52,84,60,84,60,108,84,108,84,116,255 15180 DB 124,60,124,68,156,68,156,60,124,60,255 85185 DB 148,116,148,84,156,84,156,108,180,108,180,116 5190 DB 255 45195 DB 172,20,172,44,204,44,204,36,180,36,180,20 5200 DB 172,20,255 15205 DB 172,60,172,92,180,92,180,60,172,60,255 -5210 DB 196,60,220,60,220,20,228,20,228,92 *5215 DB 220,92,220,68,196,68,196,60,255 05220 DB 196,116,196,84,204,84,204,108,228,108 5225 DB 228,116,255 75230 DB 128,116,128,88,104,88,104,104,100,104,100,84 5235 DB 132,84,132,116,255 5240 DB 255 25245 FOOD:DB 12,12,12,20,12,28,12,36,12,44,12,52 /5250 DB 12,60,12,68,12,76,12,84,12,92,12,100 05255 DB 20,12,20,52,20,100,28,12,28,52,28,100 55260 DB 36,12,36,52,36,100,44,12,44,20,44,28,44,36 45265 DB 44,44,44,52,44,60,44,68,44,76,44,84,44,92 5270 DB 44,100,44,108 .5275 DB 52,12,52,52,52,76,60,12,60,52,60,76 .5280 DB 68,12,68,20,68,28,68,36,68,44,68,52 05285 DB 68,76,68,84,68,92,68,100,76,52,76,100 25290 DB 84,52,84,100,92,52,100,52,108,52,116,52 -5295 DB 124,52,132,52,140,52,148,52,156,52 45300 DB 164,12,164,20,164,28,164,36,164,44,164,52 55305 DB 164,60,164,68,164,76,164,84,164,92,164,100 65310 DB 172,12,172,52,172,100,180,12,180,52,180,100 45315 DB 188,12,188,20,188,28,188,52,188,60,188,68 '5320 DB 188,76,188,84,188,92,188,100 45325 DB 196,28,196,52,196,76,204,28,204,52,204,76 45330 DB 212,12,212,20,212,28,212,36,212,44,212,52 '5335 DB 212,76,212,84,212,92,212,100 (5340 DB 220,12,220,100,228,12,228,100 45345 DB 236,12,236,20,236,28,236,36,236,44,236,52 55350 DB 236,60,236,68,236,76,236,84,236,92,236,100 5355 DB 236,108 5360 DB 188,13,28,13 5365 DB 188,11,28,11 5370 DB 255 #5375 RESTS:DB 0,108,84,14,11,16,0 5380 DB 0,108,108,14,13,12,0 5385 DB 0,108,124,14,15,8,0 5390 DB 3,84,104,11,14,8,0 #5395 TESTS:DB 0,116,84,14,11,16,0 5400 DB 0,116,108,14,13,12,0 5405 DB 0,116,124,14,15,8,0 5410 DB 3,92,104,11,14,8,0 5415 KMEM:DS MSIZE 5420 TEMP:DS MSIZE !5425 PTEST:DB 3,4,14,23,111,188 5430 PAC1:DS 6 5435 RND:PUSH B 5440 PUSH H 5445 LXI H,SH+3 5450 MVI B,8 5455 MOV A,M 5460 RTOP:RLC 5465 RLC 5470 RLC 5475 XRA M 5480 RAL 5485 RAL 5490 DCX H 5495 DCX H 5500 DCX H 5505 MOV A,M 5510 RAL 5515 MOV M,A 5520 INX H 5525 MOV A,M 5530 RAL 5535 MOV M,A 5540 INX H 5545 MOV A,M 5550 RAL 5555 MOV M,A 5560 INX H 5565 MOV A,M 5570 RAL 5575 MOV M,A 5580 DCR B 5585 JNZ RTOP 5590 POP H 5595 POP B 5600 RET 5605 SH:DB 55H 5610 DS 3 5615 SAVE:DS 2 5620 PSAVE:DS 2 5625 NPOS:DS 2 5630 DIR:DS 1 5635 DIFFS:DS 2 5640 FPOS:DS 2 5645 FFLAG:DS 1 5650 PNTR:DS 2 5655 EFLAG:DS 1 5660 ECNTR:DS 2 5665 ALT:DS 1 5670 FTAB:DS 128 5675 EXT:DS 1 5680 COUNT:DS 1 5685 NUM2:DS 1 5690 NUM:DS 1 5695 SCORE:DW 0,0,0,0 5700 HIGH:DW 0,0,0,0 5705 EVAL:DS 1 5710 CTAB:DB 0,0,0,0 5715 DB 1,255,0,0 5720 DB 2,0,255,0 5725 DB 3,255,255,0 5730 DB 4,0,0,255 5735 DB 5,255,0,255 5740 DB 6,0,255,255 5745 DB 7,255,255,255 5750 DB 0FFH 5755 SET2:LXI B,PNTS 5760 XRA A 5765 OUT 48 5770 LXI D,0 5775 LXI H,KILLR 5780 CALL SMAKE 5785 LXI H,EYES 5790 CALL MAKE 5795 LXI H,EYEUP 5800 CALL MAKE2 5805 MVI A,1 5810 OUT 41 5815 LXI H,KILLR 5820 CALL SMAKE 5825 LXI H,EYES 5830 CALL MAKE 5835 LXI H,EYERT 5840 CALL MAKE2 5845 MVI A,1 5850 OUT 41 5855 LXI H,KILLR 5860 CALL SMAKE 5865 LXI H,EYES 5870 CALL MAKE 5875 LXI H,EYEDN 5880 CALL MAKE2 5885 MVI A,1 5890 OUT 41 5895 LXI H,KILLR 5900 CALL SMAKE 5905 LXI H,EYES 5910 CALL MAKE 5915 LXI H,EYELF 5920 CALL MAKE2 5925 MVI A,1 5930 OUT 41 5935 LXI H,KILLR 5940 CALL SMAKE 5945 LXI H,EYES 5950 CALL MAKE 5955 MVI A,1 5960 OUT 41 5965 LXI H,MAN1 5970 CALL SMAKE 5975 MVI A,1 5980 OUT 41 5985 LXI H,MAN2 5990 CALL SMAKE 5995 MVI A,1 6000 OUT 41 6005 LXI H,MAN3 6010 CALL SMAKE 6015 MVI A,1 6020 OUT 41 6025 LXI H,MAN4 6030 CALL SMAKE 6035 MVI A,1 6040 OUT 41 6045 LXI H,FCLR 6050 CALL SMAKE 6055 MVI A,1 6060 OUT 41 6065 LXI H,COLOR 6070 MVI A,80H 6075 OUT 43 6080 MVI C,0 6085 COLP:MOV A,C 6090 OUT 42 6095 OUT 39 6100 OUT 33 6105 XRA A 6110 OUT 40 6115 OUT 34 6120 MVI A,3 6125 OUT 41 6130 MOV A,M 6135 OUT 32 6140 INX H 6145 INR C 6150 MOV A,M 6155 INR A 6160 JNZ COLP 6165 XRA A 6170 OUT 41 6175 OUT 33 6180 OUT 34 6185 OUT 42 6190 OUT 44 6195 OUT 45 6200 OUT 46 6205 CALL FIGWT 6210 LXI D,8000H 6215 LXI H,0 6220 BLK:MOV A,E 6225 OUT 42 6230 MOV A,D 6235 OUT 43 6240 INX D 6245 MOV A,H 6250 SUI 8 6255 OUT 39 6260 MOV A,L 6265 SUI 8 6270 OUT 40 6275 MVI A,3 6280 OUT 41 6285 INR L 6290 MOV A,L 6295 CPI 16 6300 JC BLK 6305 MVI L,0 6310 INR H 6315 MOV A,H 6320 CPI 16 6325 JC BLK 6330 MVI A,1 6335 OUT 41 6340 RET 6345 SMAKE:MOV A,E 6350 STAX B 6355 INX B 6360 MOV A,D 6365 STAX B 6370 INX B 6375 MAKE:MOV A,E 6380 OUT 42 6385 MOV A,D 6390 OUT 43 6395 INX D 6400 MOV A,M 6405 SUI 8 6410 OUT 39 6415 PUSH PSW 6420 INX H 6425 MOV A,M 6430 SUI 7 6435 OUT 40 6440 MVI A,2 6445 OUT 41 6450 MOV A,E 6455 OUT 42 6460 MOV A,D 6465 OUT 43 6470 INX D 6475 POP PSW 6480 OUT 39 6485 MVI A,7 6490 SUB M 6495 INX H 6500 OUT 40 6505 MVI A,2 6510 OUT 41 6515 MOV A,M 6520 CPI 80H 6525 JNZ MAKE 6530 MVI A,3 6535 OUT 41 6540 RET 6545 MAKE2:MOV A,E 6550 OUT 42 6555 MOV A,D 6560 OUT 43 6565 INX D 6570 MOV A,M 6575 SUI 10 6580 OUT 39 6585 INX H 6590 MOV A,M 6595 SUI 7 6600 OUT 40 6605 INX H 6610 MVI A,2 6615 OUT 41 6620 MOV A,M 6625 CPI 80H 6630 JNZ MAKE2 6635 RET 36640 KILLR:DB 0,5,0,6,0,7,1,3,1,4,1,6,1,7,2,3,2,7 26645 DB 3,2,3,3,3,7,4,2,4,7,5,2,5,7,6,1,6,2,6,7 .6650 DB 7,1,7,2,7,3,7,7,8,1,8,2,8,3,8,4,8,7 &6655 DB 9,1,9,2,9,3,9,4,9,5,9,6,9,7 -6660 DB 10,1,10,2,10,3,10,4,10,5,10,6,10,7 <6665 DB 11,1,11,2,11,4,11,5,11,6,12,1,12,2,12,4,12,5,12,6 #6670 DB 13,1,13,2,13,5,14,1,14,5 6675 DB 80H :6680 EYES:DB 1,5,2,4,2,5,2,6,3,4,3,5,3,6,4,3,4,4,4,5,4,6 66685 DB 5,3,5,4,5,5,5,6,6,3,6,4,6,5,6,6,7,4,7,5,7,6 6690 DB 8,5,8,6 6695 DB 80H :6700 MAN1:DB 1,6,1,7,2,4,2,5,2,6,2,7,3,3,3,4,3,5,3,6,3,7 :6705 DB 4,2,4,3,4,4,4,5,4,6,4,7,5,2,5,3,5,4,5,5,5,6,5,7 B6710 DB 6,1,6,2,6,3,6,4,6,5,6,6,6,7,7,1,7,2,7,3,7,4,7,5,7,6,7,7 B6715 DB 8,1,8,2,8,3,8,4,8,5,8,6,8,7,9,1,9,2,9,3,9,4,9,5,9,6,9,7 A6720 DB 10,2,10,3,10,4,10,5,10,6,10,7,11,2,11,3,11,4,11,5,11,6 <6725 DB 11,7,12,3,12,4,12,5,12,6,12,7,13,4,13,5,13,6,13,7 6730 DB 14,6,14,7 6735 DB 80H 66740 MAN2:DB 2,4,2,5,3,3,3,4,3,5,4,2,4,3,4,4,4,5,4,6 66745 DB 5,2,5,3,5,4,5,5,5,6,6,1,6,2,6,3,6,4,6,5,6,6 :6750 DB 7,1,7,2,7,3,7,4,7,5,7,6,8,1,8,2,8,3,8,4,8,5,8,6 66755 DB 9,1,9,2,9,3,9,4,9,5,9,6,10,2,10,3,10,4,10,5 -6760 DB 10,6,10,7,11,3,11,4,11,5,11,6,11,7 (6765 DB 12,4,12,5,12,6,12,7,13,6,13,7 6770 DB 80H .6775 MAN3:DB 2,4,3,3,3,4,3,5,4,2,4,3,4,4,4,5 .6780 DB 5,2,5,3,5,4,5,5,6,1,6,2,6,3,6,4,6,5 66785 DB 7,1,7,2,7,3,7,4,7,5,8,1,8,2,8,3,8,4,8,5,8,6 @6790 DB 9,1,9,2,9,3,9,4,9,5,9,6,10,2,10,3,10,4,10,5,10,6,10,7 <6795 DB 11,2,11,3,11,4,11,5,11,6,11,7,12,3,12,4,12,5,12,6 -6800 DB 12,7,13,4,13,5,13,6,13,7,14,6,14,7 6805 DB 80H >6810 MAN4:DB 3,3,4,2,4,3,4,4,5,2,5,3,5,4,6,1,6,2,6,3,6,4,6,5 66815 DB 7,1,7,2,7,3,7,4,7,5,8,1,8,2,8,3,8,4,8,5,8,6 @6820 DB 9,1,9,2,9,3,9,4,9,5,9,6,10,2,10,3,10,4,10,5,10,6,10,7 (6825 DB 11,2,11,3,11,4,11,5,11,6,11,7 76830 DB 12,3,12,4,12,5,12,6,12,7,13,4,13,5,13,6,13,7 6835 DB 14,6,14,7 6840 DB 80H 36845 EYEUP:DB 2,5,2,6,3,5,3,6,2,8,2,9,3,8,3,9,80H 36850 EYEDN:DB 7,5,7,6,8,5,8,6,7,8,7,9,8,8,8,9,80H 36855 EYELF:DB 5,3,5,4,6,3,6,4,5,8,5,9,6,8,6,9,80H 76860 EYERT:DB 5,5,5,6,6,5,6,6,5,10,5,11,6,10,6,11,80H '6865 COLOR:DB 1,7,0,2,7,0,5,7,0,6,7,0 6870 DB 4,7,3,3,3,3 6875 DB 0 6880 DB 0FFH *6885 FCLR:DB 7,5,7,6,7,7,8,5,8,6,8,7,80H 6890 POINT:EQU $ 6895 PNTS:DS 50 6895PNTS:DS 50  50 0 OUT 42 0030 OUT 45 0040 OUT 44 0042 MVI A,31 0043 OUT 45 0050 MVI A,80H 0060 OUT 43 0070 OUT 33 0080 OUT 34 0090 OUT 46 0100 CALL WAIT 0101 XRA A 0102 OUT 42 0103 OUT 44 0104 OUT 45 0105 MVI A,31 0106 OUTjƒ4´ccFq“jÓÓFƒQÕ¸?eã ²”&x IšL TV>±Ñ‚!" ˆ$–Tœ´££p€¬R74ÑјZ«$‰X¸2mVƒl˜ò€b"–q‹‡â¤–n%q ª!M`` ‰š„{RlbhTÀL»b.K& ëbJ ¦ê¬i 8 1­lh„’ˆmH )dX7«¦D†f‚X «‰eÅš$JF6˜©}´nÄ3cfšGzc)lb1 dhÁ¨’L|cÚ ‚ûˆhCYbÑ…)#&£˜Í«IE †,#.ж@ ‘D¶˜Z‘@b@˜QÅgjuhªQ¡¬æ@i ˜b´C`ŠˆÉ4±’JҔЩé”X,c&F˜äÞ”ÅušWÍ(t )yk Ô`0¥¦®˜)ÐÌÆ°q8hȬHJPD¿0Ï$&P*µLFQ†`&±(X@µ41œv Á K‰ˆ–ƒp¤eƒÁåQÈ("ÈaPéB%`hU4@±E @aÈgE.aû”…vf¬âP0¶fÓÌŠj¦ –kÇS;Êt‰ÀH˜&1ˆ VÅ…ÅjÀ(rE !i”—2¼rá…fÒÀˆ†À¹«Q¬[ÌÈŒ H¦ÈR –E…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿÿÿÿÿÿÿ 0010 XRA A 0020 OUT 48 0030 OUT 35 0040 MVI E,0 0050 MVI H,-8 0060 MVI B,16 0070 OSQLP:MVI L,-8 0080 MVI C,16 0090 SQLP:XRA A 0100 OUT 43 0110 MOV A,E 0120 OUT 42 0130 MOV A,H 0140 OUT 39 0150 MOV A,L 0160 OUT 40 0170 MVI A,3 0180 OUT 41 0190 MVI A,0FFH 0200 OUT 43 0210 MOV A,H 0220 OUT 39 0230 MOV A,L 0240 OUT 40 0250 MVI A,2 0260 OUT 41 0270 INR E 0280 INR L 0290 DCR C 0300 JNZ SQLP 0310 INR H 0320 DCR B 0330 JNZ OSQLP 0340 XRA A 0350 OUT 41 0360 OUT 43 0370 INR A 0380 OUT 41 0390 CALL SHR 0400 MVI H,0 0410 LXI D,0A800H 0420 SVY:MOV A,H 0430 OUT 33 0440 MVI L,0 0450 SVX:MOV A,L 0460 OUT 34 0470 IN 32 0480 STAX D 0490 INX D 0500 INR L 0510 MOV A,L 0520 CPI 96 0530 JNZ SVX 0540 INR H 0550 MOV A,H 0560 CPI 96 0570 JNZ SVY 0580 LXI D,8000H 0590 MOV A,D 0600 OUT 45 0610 MOV A,E 0620 OUT 44 0630 MVI H,8 0640 MVI D,6 0650 ODEFL:MVI L,8 0660 MVI E,6 0670 DEFLP:XRA A 0680 OUT 42 0690 OUT 43 0700 MOV A,H 0710 OUT 34 0720 MOV A,L 0730 OUT 33 0740 OUT 46 0750 CALL WAIT 0760 MOV A,L 0770 ADI 16 0780 MOV L,A 0790 DCR E 0800 JNZ DEFLP 0810 MOV A,H 0820 ADI 16 0830 MOV H,A 0840 DCR D 0850 JNZ ODEFL 0860 CALL SHR 0870 MVI H,8 0880 MVI D,3 0890 ODEF2:MVI L,8 0900 MVI E,3 0910 DEFL2:XRA A 0920 OUT 42 0930 OUT 43 0940 MOV A,H 0950 OUT 34 0960 MOV A,L 0970 OUT 33 0980 OUT 46 0990 CALL WAIT 1000 MOV A,L 1010 ADI 16 1020 MOV L,A 1030 DCR E 1040 JNZ DEFL2 1050 MOV A,H 1060 ADI 16 1070 MOV H,A 1080 DCR D 1090 JNZ ODEF2 1100 LXI D,0F000H 1110 MOV A,D 1120 OUT 43 1130 XRA A 1140 OUT 34 1150 ZLP:MOV A,E 1160 OUT 42 1170 OUT 39 1180 OUT 33 1190 OUT 32 1200 XRA A 1210 OUT 40 1220 MVI A,3 1230 OUT 41 1240 INR E 1250 JNZ ZLP 1260 MVI A,1 1270 OUT 41 1280 XRA A 1290 OUT 33 1300 OUT 34 1310 OUT 42 1320 OUT 44 1330 MVI A,0F0H 1340 OUT 43 1350 MVI A,0FFH 1360 OUT 45 1370 OUT 46 1380 CALL WAIT 1390 XRA A 1400 CALL CLEAR 1410 LXI D,8000H 1420 MOV A,D 1430 OUT 45 1440 MOV A,E 1450 OUT 44 1460 MVI H,8 1470 MVI D,6 1480 OPUTL:MVI L,8 1490 MVI E,6 1500 PUTLP:XRA A 1510 OUT 42 1520 OUT 43 1530 MOV A,H 1540 OUT 34 1550 MOV A,L 1560 OUT 33 1570 OUT 47 1580 CALL WAIT 1590 MOV A,L 1600 ADI 20 1610 MOV L,A 1620 DCR E 1630 JNZ PUTLP 1640 MOV A,H 1650 ADI 20 1660 MOV H,A 1670 DCR D 1680 JNZ OPUTL 1690 RET 1700 SHR:LXI H,0 1710 MVI D,0 1720 OSHRI:MVI E,0 1730 SHRIN:MOV A,H 1740 OUT 34 1750 MOV A,L 1760 OUT 33 1770 IN 32 1780 MOV B,A 1790 MOV A,D 1800 OUT 34 1810 MOV A,E 1820 OUT 33 1830 MOV A,B 1840 OUT 32 1850 INR E 1860 INR L 1870 INR L 1880 JNZ SHRIN 1890 INR D 1900 INR H 1910 INR H 1920 JNZ OSHRI 1930 RET 1940 CLEAR:LXI H,0 1950 OUT 44 1960 MVI A,0FFH 1970 OUT 45 1980 CLY:MOV A,H 1990 OUT 34 2000 CLX:MOV A,L 2010 OUT 33 2020 XRA A 2030 OUT 42 2040 DCR A 2050 OUT 43 2060 OUT 47 2070 CALL WAIT 2080 MOV A,L 2090 ADI 16 2100 MOV L,A 2110 JNZ CLX 2120 MOV A,H 2130 ADI 16 2140 MOV H,A 2150 JNZ CLY 2160 RET 2170 WAIT:IN 33 2180 ANI 16 2190 JZ WAIT 2200 RET 22002 WT4:IN 33 2243 ANI 1 2244 JNZ WT4 2250 IN 24 2260 MOV C,A 2270 ANI 2 2280 JNZ SKR 2290 MOV A,M 2300 ADD D 2310 MOV M,A 2320 OUT 38 2330 SKR:INX H 2340 MOV A,C 2350 ANI 4 2360 JNZ SKG 2370 MOV A,M 2380 ADD D 2390 MOV M,A 0005 LEN:EQU 5 0010 DIST:EQU 3 0015 JVAL:EQU 40 0020 OFSET:EQU 16 0025 KNUM:EQU 4 30030 MSIZE:EQU KNUM+KNUM+KNUM+KNUM+KNUM+KNUM+KNUM 0035 BCOL:EQU 4 0040 TIME:EQU 40 0045 START: 0050 LXI H,CTAB 0055 CLP:MOV A,M 0060 OUT 33 0065 INX H 0070 MOV A,M 0075 OUT 38 0080 INX H 0085 MOV A,M 0090 OUT 37 0095 INX H 0100 MOV A,M 0105 OUT 36 0110 INX H 0115 MOV A,M 0120 INR A 0125 JNZ CLP 0130 CALL SET2 0135 XRA A 0140 CALL CLEAR 0145 LXI H,FTAB 0150 LXI D,FTAB+1 0155 MVI M,0 0160 LXI B,128 0165 LDIR 0170 CALL BOARD 0175 MVI A,2 0180 OUT 48 0185 XRA A 0190 STA EFLAG 0195 LXI H,TESTS 0200 LXI D,KMEM 0205 LXI B,MSIZE 0210 LDIR 0215 LXI H,PTEST 0220 LXI D,PAC1 0225 LXI B,6 0230 LDIR 0235 HERE: 0240 CALL DEFB 0245 MVI D,188 0250 MVI E,112 0255 MVI A,24 0260 OUT 45 0265 XRA A 0270 OUT 42 0275 OUT 44 0280 MVI A,80H 0285 OUT 43 0290 CALL SET 0295 OUT 46 0300 CALL FIGWT 0305 LXI H,SCORE 0310 LXI D,SCORE+1 0315 MVI M,0 0320 LXI B,LEN 0325 LDIR 0330 MLOOP:EQU $ 0335 LHLD PAC1+4 0340 SHLD PSAVE 0345 LXI H,PAC1 0350 CALL PLAY 0355 LDA FFLAG 0360 ORA A 0365 JNZ NOFS 0370 MVI A,0FDH 0375 MVI A,0FFH 0380 ANI 8 0385 JNZ NOFS 0390 LXI H,PAC1 0395 CALL PLAY 0400 NOFS:EQU $ 0405 LHLD PAC1+4 0410 SHLD NPOS 0415 LXI H,KMEM 0420 LXI D,TEMP 0425 LXI B,MSIZE 0430 LDIR 0435 CALL MKILL 0440 MVI A,1 0445 OUT 2 0450 HLT:IN 33 0455 ANI 1 0460 JNZ HLT 0465 CALL PUTB 0470 LDED PSAVE !·ª~Ó!#~Ó&#~Ó%#~Ó$#~< Íت¯Íð¦!"ª#ª6€í°ÍÇ¥>Ó0¯2ª!…©¡©í°!Ù©ß©í°ÍÇ¡¼p>Ó-¯Ó*Ó,>€Ó+Í!§Ó.Í=§!¦ª§ª6í°*ã©"ª!ß©ÍÈ£:ª·Â– Ûæ– !ß©ÍÈ£*ã©"ª!¡©½©í°Í—¢>ÓÛ!æ® Íó¡í[ª>Ó-¯Ó,Ó*>€Ó+Í!§Ó/Í=§:ª·Ê¡í[ªÍ §G*7¯|Ó+}Ó*>Ó,¯Ó-Í!§Ó/Í=§xþ¡>2ª!"ªÍE¥>2¶ª>Ó0ÍÇ¡>Ó-¯Ó*Ó,>€Ó+í[ªÍ!§Ó.Í=§:¤ªÓ0:¥ªÆ‡_!%¯~Ó*#~Ó+¯Ó->Ó,Ó/Í=§>Ó0Í¢!¦ªTÍb¥!¦ª®ª¾Ú†¡Âˆ¡# Âu¡Ãˆ¡í°!®ªÀTÍb¥ÛËWÊ‘¡ËGÊ ÍþÂv ÃÛæ¨¡Ã ·Ê¾¡þ?À>7É>7É…oÐ$ÉÝ!¡©&ÝVÝ^Ý >„Ó-¯Ó,Ó*>€Ó+Í!§Ó.Í=§%ÂСÉÝ!½©&ÝVÝ^Ý >„Ó-¯Ó,Ó*>€Ó+Í!§Ó/Í=§%Âü¡ÉÝ!¡©&ÝVÝ^Í!§Ýn:ª·}ÊX¢: ª·ÂK¢:ªþ`ÚP¢>ÃX¢æ>ÂX¢}oå&)%¯^#VzÓ+{Ó*á}þ> Êx¢|‡„ÖÓ,¯Ó-Ó/Í=§Ý %Â(¢*ª+"ª|µÀ¯2ªÉÝ!¡©Ý~2ªÝVÝ^Ý~æÂù¢:ªÍ°¥ÝrÝs:ª“Üí¦þÒù¢:ª’Üí¦þÒù¢:ª·Ê¨¡Å:¶ªG‡2¶ªÍ>¥ÁÝ6Ý6 Ý6tÝ6pÝVÝ^Ý5Ê#£:ª·Â¥£zþ£{þÚ¥£þÒ¥£Ý5Â¥£Ý6:ªÍ°¥î2ªÅíKá©ÍR¦ÁÅxÚK£:ª·ÊK£|eo:ª·Âb£|ͯ£|Ê£}ͯ£}Ê£Í婿O yæO:ª¹Êh£yÕͰ¥Í¥ÑÂh£yÁO{Ͳ¡_ÝrÝsÝqz‡=‡‡ÆÝw{‡=‡‡ÆÝwÝ¢ÉÕåg:ª¼|¿£<·ÃţͰ¥Í¥áÑÉ:£ª=2£ªæÂà£:¢ª·Ê࣯2¢ªÉ¯2ª~"ªÍ›¦¾Ox2!ªyÊ:¤î¾Â¤q#>–ʤw#^#VyîͰ¥r+s+ä6+Ã:¤#~þÂ9¤#^#V+++ÅåyͰ¥Í¥áÁÂ:¤q#+N#~þÂm¤Åå#^#VyͰ¥Í¥áÁÊm¤:!ªþÿÊd¤*ªÿÃë£###^#Vä5‚¤6#^#VyͰ¥Íߤr+s+###^#VyͰ¥r+s*ª##~Ͳ¡Ò¥¤w##‡‡‡Æw_:£ªæ·¤:¢ª·*ªÊÈ£*ª~æ_!Û¤~2¤ª*ª#~æO>‘Òפ/2¥ªÉåÕÍ“¥W¦Ê¥ÍE¥z/¦w>2ª2¢ªÑz‡‡‡Ög{‡‡‡Öo"ªÃ¥ÑáÉ>“þÒ¥_{æ!6¥Í¡{æ‚‚_~!E§¦É€@ å!©ªÃI¥å!ªª~€wÿÖ ÒN¥Æ wx·Ê`¥+ÃI¥áÉ~°GÊr¥~Æ0Í4§{Æ_# Âf¥É!"ª¦ÉÍ“¥!"ª/¦wÉÍ“¥¶wÉ{æ!6¥Í¡{æ_z‡‡ƒ_~!"ªÉæÊÃ¥þÊÁ¥þÊÅ¥ÉÉÉÉ!…§V#^#F#N#åÍR¦gͰ¥Õ>ͧ>à“_>ͧÑ|Ͱ¥z¸ÂÜ¥{¹ÂÜ¥á~<ÂÏ¥#~<ÂÊ¥!h¨V#^#>ÍB¦K>à“_>ÍB¦zÖæWyÖæ_åÕÍ¥Ñ>“_Í¥á~< ¦ÉͧͧͧçÕzÜí¦g{‘Üí¦oz¸Úh¦{¹Úq¦|½Òy¦Í”¦"ª|·zÌŽ¦W}·{ÌŽ¦_ëÑ|É:ªîÉzS_|eoÉ2ªåÛ_Íë¦oÛ/WÍë¦gþ(ÿÚ¾¦z·ú¾¦}þ(ÿÚϦ{·úϦ|½yÚØ¦`G|áþÿÀ:ªÉ:¥ªþ>À>É·ð/<ÉÅå!G|Ó"}Ó!xÓ ,Âù¦$Âö¦áÁÉÍ!§Û æÉõͧñõÍ!§ñÓ ÉzÓ!{Æ/Ó"ÉõÍ=§ñÍ!§ÉõÍ=§ñÍ!§ÉÛ!æÊ=§Éÿÿ€½ö½ö½ö€½¿½¿†ýöö€¸ý  ý ¿€¿ý¿€½ö½öŒí¿í¿†¿ö¿ö€ÿÿtPP(h(hll,L,Ll$l$tÿôtôÌÌÄÄœœ,|,|€€(˜(˜øøtÿ,$,$ÿ<\$\$<<ÿ44,<,<4ÿ4<4DLDL\T\TDlDl<4<ÿ4t4TÓ)!:¬Íà«!­¬Íæ«!ó®Í¬>Ó)!:¬Íà«!­¬Íæ«!Ѯͬ>Ó)!:¬Íà«!­¬Íæ«!â®Í¬>Ó)!:¬Íà«!­¬Íæ«>Ó)!Þ¬Íà«>Ó)!s­Íà«>Ó)!ä­Íà«>Ó)!W®Íà«>Ó)!¯Íà«>Ó)!¯>€Ó+yÓ*Ó'Ó!¯Ó(Ó">Ó)~Ó # ~<„«¯Ó)Ó!Ó"Ó*Ó,Ó-Ó.Í=§€!{Ó*zÓ+|ÖÓ'}ÖÓ(>Ó),}þÚ¶«.$|þÚ¶«>Ó)É{z{Ó*zÓ+~ÖÓ'õ#~ÖÓ(>Ó){Ó*zÓ+ñÓ'>–#Ó(>Ó)~þ€Âæ«>Ó)É{Ó*zÓ+~Ö Ó'#~ÖÓ(#>Ó)~þ€Â¬É                           €€                            €                       €                           €                           €  €  €  €    €ÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿuÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvÿÿÿÿÿÿÿÿÿÿÿÿÿ 0010 XRA A 0020 OUT 33 0030 OUT 36 0040 OUT 37 0050 OUT 38 0060 LXI H,COLOR 0070 COLLP:MOV A,M 0080 OUT 33 0090 INX H 0100 MOV A,M 0110 OUT 38 0120 INX H 0130 MOV A,M 0140 OUT 37 0150 INX H 0160 MOV A,M 0170 OUT 36 0180 INX H 0190 MOV A,M 0200 ORA A 0210 JNZ COLLP 0220 MLOOP:CALL YOU 0230 WT:IN 33 0240 ANI 1 0250 JNZ WT 0260 LHLD OLD 0270 LDA SAVE 0280 CALL DOT 0290 LHLD XYPOS 0300 CALL TEST 0310 STA SAVE 0320 SHLD OLD 0330 MVI A,7 0340 CALL DOT 0350 IN 24 0360 MOV B,A 0370 ANI 8 0380 CZ ON 0390 MOV A,B 0400 ANI 1 0410 CZ CLR2 0420 MOV A,B 0430 ANI 4 0440 CZ FILL 0450 CALL 116H 0460 JNZ MLOOP 0470 RET 0480 CLR2:MVI A,80H 0490 STA SAVE 0500 MOV D,A 0510 CLEAR:LXI H,0 0520 CLY:MOV A,H 0530 OUT 34 0531 CPI 192 0532 MOV C,D 0533 JNZ OK5 0534 MVI C,0 0535 OK5: 0540 CLX:MOV A,L 0550 OUT 33 0552 CPI 192 0553 MOV A,C 0554 JNZ OK4 0555 XRA A 0556 OK4: 0570 OUT 32 0580 INR L 0590 JNZ CLX 0600 INR H 0610 JNZ CLY 0620 RET 0630 ON:XRA A 0640 STA SAVE 0642 LHLD XYPOS 0643 MOV A,H 0644 ANI 0FEH 0645 OUT 34 0646 MOV A,L 0647 ANI 0FEH 0648 OUT 33 0649 XRA A 0650 OUT 32 0651 RET 0660 YOU:IN 25 0670 CMA 0680 CALL FIX 0690 LHLD YPOS 0700 DAD D 0710 SHLD YPOS 0720 MOV B,H 0730 IN 26 0740 CMA 0750 CALL FIX 0760 LHLD XPOS 0770 DAD D 0780 SHLD XPOS 0790 MOV L,H 0800 MOV H,B 0810 SHLD XYPOS 0820 RET 0830 FIX:MOV L,A 0840 MVI H,0 0850 ORA A 0860 JP NONEG 0870 DCR H 0880 NONEG: 0890 XCHG 0900 RET 0910 DOT:PUSH PSW 0920 CALL SET 0930 POP PSW 0940 OUT 32 0950 RET 0960 TEST:CALL SET 0970 IN 32 0980 ORA A 0990 RET 1000 SET:MOV A,H 1010 OUT 34 1020 MOV A,L 1030 OUT 33 1040 RET 1050 FILL:LHLD XYPOS 1060 SHLD MEM1 1070 LDA FCOL 1071 INR A 1072 ANI 7 1073 JNZ OK23 1074 MVI A,1 1075 OK23:STA FCOL 1080 CALL DOT 1082 STA SAVE 1090 LXI H,1 1100 SHLD NUM 1110 FILLP:LXI D,MEM1 1120 LXI H,MEM2 1130 CALL FILL2 1140 LXI D,MEM2 1150 LXI H,MEM1 1160 CALL FILL2 1170 JMP FILLP 1180 FILL2:SHLD ADDR2 1190 XCHG 1200 SHLD ADDR1 1210 LHLD NUM 1220 MOV B,H 1230 MOV C,L 1240 LXI H,0 1250 SHLD NUM 1260 FLP:LHLD ADDR1 1270 MOV E,M 1280 INX H 1290 MOV D,M 1300 INX H 1310 SHLD ADDR1 1320 DCR D 1330 CALL FDOT 1340 INR D 1350 INR E 1360 CALL FDOT 1370 INR D 1380 DCR E 1390 CALL FDOT 1400 DCR D 1410 DCR E 1420 CALL FDOT 1430 DCX B 1440 MOV A,B 1450 ORA C 1460 JNZ FLP 1470 LHLD NUM 1480 MOV A,H 1490 ORA L 1500 RNZ 1510 POP H 1520 RET 1530 FDOT:MOV A,D 1540 OUT 34 1550 MOV A,E 1560 OUT 33 1570 IN 32 1580 ORA A 1590 RZ 1600 MOV H,A 1610 LDA FCOL 1620 CMP H 1630 RZ 1640 OUT 32 1650 LHLD ADDR2 1660 MOV M,E 1670 INX H 1680 MOV M,D 1690 INX H 1700 SHLD ADDR2 1710 LHLD NUM 1720 INX H 1730 SHLD NUM 1740 RET 1750 LINE:MOV B,H 1760 MOV C,L 1770 MVI L,0 1780 SHLD Y 1790 MOV H,C 1800 SHLD X 1810 MOV A,D 1820 SUB B 1830 CALL FIX2 1840 SHLD DY 1850 MOV A,E 1860 SUB C 1870 CALL FIX2 1880 SHLD DX 1890 MVI B,0 1900 LNLP:LHLD DX 1910 XCHG 1920 LHLD X 1930 DAD D 1940 SHLD X 1950 MOV C,H 1960 LHLD DY 1970 XCHG 1980 LHLD Y 1990 DAD D 2000 SHLD Y 2010 MOV L,C 2020 CALL ON 2030 DCR B 2040 JNZ LNLP 2050 RET 2060 FIX2:MOV L,A 2070 MVI H,0 2080 RNC 2090 DCR H 2100 RET 2110 XYPOS:DS 2 2120 OLD:DS 2 2130 SAVE:DS 1 2140 XPOS:DS 2 2150 YPOS:DS 2 2160 X:DS 2 2170 Y:DS 2 2180 DX:DS 2 2190 DY:DS 2 2200 FLAG:DS 1 2210 P1:DS 2 2220 P2:DS 2 2230 OPOS:DS 2 2240 ADDR1:DS 2 2250 ADDR2:DS 2 2260 FCOL:DB 1 2270 NUM:DS 2 /2280 COLOR:DB 1,255,0,0,2,0,255,0,3,255,255,0 :2290 DB 4,0,0,255,5,255,0,255,6,0,255,255,7,255,255,255 2300 DB 80H,0,0,128 2310 DB 0 2320 MEM1:DS 1000H 2330 MEM2:DS 1000H 23300 MVI A,3 3165 SUB C 3170 JNC NOCAR 3175 CMA 3180 NOCAR: 3185 STA NUM 3190 RET 3195 WAYS:DB 0,4,1,6 3200 CFOOD:PUSH H 3205 PUSH D 3210 CALL SETUP 3215 MOV D,A 3220 ANA M 3225 JZ NOFD 3230 MVI B,1 3235 CALL ADDSC 3240 MOV A,D 3245 CMA 3250 ANA M 3255 MOV M,A 3260 MVI A,1 3265 STA FFLAG 3270 STA EXT 3275 POP D 3280 MOV A,D 3285 ADD A 3290 ADD A 3295 ADD A 3300 SUI 4 3305 MOV H,A 3310 MOV A,E 3315 ADD A 3320 ADD A 3325 ADD A 3330 SUI 4 3335 MOV L,A 3340 SHLD FPOS 3345 JMP HPOP 3350 NOFD:POP D 3355 HPOP:POP H 3360 RET 3365 ITEST:MVI A,27 3370 SUB E 3375 CPI 14 3380 JNC NOSUB 3385 MOV E,A 3390 NOSUB:MOV A,E 3395 ANI 7 3400 LXI H,BITS 3405 CALL ADDAH 3410 MOV A,E 3415 RRC 3420 RRC 3425 RRC 3430 ANI 1FH 3435 ADD D 3440 ADD D 3445 MOV E,A 3450 MVI D,0 3455 MOV A,M 3460 LXI H,IBORD 3465 DAD D 3470 ANA M 3475 RET #3480 BITS:DB 128,64,32,16,8,4,2,1 3485 ADDD2:PUSH H 3490 LXI H,SCORE+LEN-2 3495 JMP0010 SIZE:EQU 6 0020 SIZE2:EQU 36 0030 XRA A 0040 OUT 48 0050 OUT 35 0060 LXI D,0 0070 MVI H,-8 0080 MOV L,H 0090 SQLP:XRA A 0100 OUT 43 0110 MOV A,E 0120 OUT 42 0130 MOV A,H 0140 OUT 39 0150 MOV A,L 0160 OUT 40 0170 MVI A,3 0180 OUT 41 0190 MVI A,0FFH 0200 OUT 43 0210 MOV A,H 0220 OUT 39 0230 MOV A,L 0240 OUT 40 0250 MVI A,2 0260 OUT 41 0270 INR E 0280 INR L 0290 MOV A,L 0300 CPI 8 0310 JNZ SQLP 0320 MVI L,-8 0330 INR H 0340 MOV A,H 0350 CPI 8 0360 JNZ SQLP 0370 XRA A 0380 OUT 41 0390 OUT 43 0400 INR A 0410 OUT 41 0420 LXI H,CROSS 0430 LXI D,100H 0440 CRLP:MOV A,D 0450 OUT 43 0460 MOV A,E 0470 OUT 42 0480 MOV A,M 0490 OUT 39 0500 INX H 0510 MOV A,M 0520 OUT 40 0530 INX H 0540 MVI A,2 0550 OUT 41 0560 INX D 0570 MOV A,M 0580 CPI 80H 0590 JNZ CRLP 0600 XRA A 0610 OUT 41 0620 LXI D,0F000H 0630 MOV A,D 0640 OUT 43 0650 XRA A 0660 OUT 34 0670 ZLP:MOV A,E 0680 OUT 42 0690 OUT 39 0700 OUT 33 0710 OUT 32 0720 XRA A 0730 OUT 40 0740 MVI A,3 0750 OUT 41 0760 INR E 0770 JNZ ZLP 0780 MVI A,1 0790 OUT 41 0800 XRA A 0810 OUT 33 0820 OUT 34 0830 OUT 42 0840 OUT 44 0850 MVI A,0F0H 0860 OUT 43 0870 MVI A,0FFH 0880 OUT 45 0890 OUT 46 0900 CALL WAIT 0910 LXI H,POS 0920 LXI D,0FF00H 0930 ZLP2:MOV M,D 0940 INX H 0950 DCR E 0960 JNZ ZLP2 0970 LXI D,POS 0980 MVI B,SIZE2 0990 RANDO:CALL RND 1000 ANI 3FH 1010 CPI SIZE2 1020 JNC RANDO 1030 MOV C,A 1040 MOV L,A 1050 MVI H,0 1060 DAD D 1070 MOV A,M 1080 INR A 1090 JNZ RANDO 1100 CALL RND 1110 ANI 0C0H 1120 ADI SIZE2 1130 SUB B 1140 MOV M,A 1150 DCR B 1160 JNZ RANDO 1170 MVI A,SIZE2 1171 STA POS+208 1172 INR A 1173 STA POS+224 1174 INR A 1175 STA POS+240 1176 INR A 1177 STA POS+209 1178 INR A 1179 STA POS+225 1180 INR A 1181 STA POS+241 1182 INR A 1183 STA POS+210 1184 INR A 1185 STA POS+226 1186 INR A 1187 STA POS+242 1200 XRA A 1210 CALL CLEAR 1220 LXI H,808H 1230 LXI D,POS 1240 DOTS:MOV A,H 1250 SUI 8 1260 OUT 33 1270 MOV A,L 1280 SUI 8 1290 OUT 34 1300 MVI A,7 1310 OUT 32 1320 LDAX D 1330 CPI 0FFH 1340 CNZ PUT 1350 INX D 1360 MOV A,L 1370 ADI 16 1380 MOV L,A 1390 JNC DOTS 1400 MOV A,H 1410 ADI 16 1420 MOV H,A 1430 JNC DOTS 1440 LXI H,0F8F8H 1450 MVI A,7FH 1460 CALL DBL 1470 LXI H,STACK 1480 SHLD STP 1490 LXI H,8080H 1500 SHLD XYPOS 1510 CALL READ 1520 STA SAVE 1530 MVI A,7EH 1540 CALL DBL 1550 MLOOP: 1560 LHLD XYPOS 1570 MVI A,7EH 1580 CALL UBL 1590 CALL YOU 1600 LDA OLD 1610 MOV B,A 1620 IN 24 1630 STA OLD 1640 CMA 1650 ANA B 1660 MOV B,A 1670 ANI 1 1680 CNZ GET 1690 MOV A,B 1700 ANI 2 1710 CNZ DROP 1720 MOV A,B 1730 ANI 4 1740 CNZ LEFT 1750 MOV A,B 1760 ANI 8 1770 CNZ RIGHT 1780 LHLD XYPOS 1790 MVI A,7EH 1800 CALL DBL 1810 LXI B,100H 1820 LXI D,0FFFFH 1830 CALL USE 1840 XCHG 1850 LHLD STP 1860 MOV A,M 1870 XCHG 1880 CPI -1 1890 CNZ PUT 1900 WT1:IN 33 1910 ANI 1 1920 JZ WT1 1930 WT2:IN 33 1940 ANI 1 1950 JNZ WT2 1960 CALL 116H 1970 JNZ MLOOP 1980 RET 1990 GET:CALL XY2HL 2000 MOV A,M 2010 CPI 0FFH 2020 RZ 2021 ANI 3FH 2022 CPI SIZE2 2023 RNC 2024 MOV A,M 2030 MVI M,0FFH 2040 LHLD STP 2050 INX H 2060 SHLD STP 2070 MOV M,A 2080 LHLD XYPOS 2090 CALL FIXHL 2100 MVI A,7FH 2110 JMP UBL 2120 DROP:CALL XY2HL 2130 MOV A,M 2140 INR A 2150 RNZ 2160 XCHG 2170 LHLD STP 2180 MOV A,M 2190 CPI 0FFH 2200 RZ 2210 DCX H 2220 SHLD STP 2230 STAX D 2240 MOV C,A 2250 LHLD XYPOS 2260 CALL FIXHL 2270 MOV A,C 2280 JMP PUT 2290 FIXHL:MOV A,H 2300 ANI 0F0H 2310 ORI 8 2320 MOV H,A 2330 MOV A,L 2340 ANI 0F0H 2350 ORI 8 2360 MOV L,A 2370 RET 2380 LEFT:LHLD STP 2390 MOV A,M 2400 CPI 0FFH 2410 RZ 2420 SUI 40H 2430 MOV M,A 2440 LHLD XYPOS 2450 CALL FIXHL 2460 SHLD XYRAW 2470 RET 2480 RIGHT:LHLD STP 2490 MOV A,M 2500 CPI 0FFH 2510 RZ 2520 ADI 40H 2530 MOV M,A 2540 LHLD XYPOS 2550 CALL FIXHL 2560 SHLD XYRAW 2570 RET 2580 XY2HL:LHLD XYPOS 2590 MOV A,H 2600 ANI 0F0H 2610 MOV H,A 2620 MOV A,L 2630 RLC 2640 RLC 2650 RLC 2660 RLC 2670 ANI 0FH 2680 ORA H 2690 MOV E,A 2700 MVI D,0 2710 LXI H,POS 2720 DAD D 2730 RET 2740 YOU:LHLD XYRAW 2750 IN 25 2760 CMA 2770 CALL FIX 2780 ADD L 2790 MOV L,A 2800 ANI 0F0H 2810 ORI 8 2820 MOV E,A 2830 IN 26 2840 CMA 2850 CALL FIX 2860 ADD H 2870 MOV H,A 2880 ANI 0F0H 2890 ORI 8 2900 MOV D,A 2910 SHLD XYRAW 2920 SHLD XYPOS 2930 RET 2940 FIX:MOV B,A 2950 ORA A 2960 JP POSIT 2970 CMA 2980 INR A 2990 POSIT:CPI 32 3000 MVI A,0 3010 RC 3020 MOV A,B 3030 SRA A 3040 SRA A 3050 SRA A 3060 SRA A 3070 SRA A 3080 RET 3090 CLEAR:LXI H,0 3100 OUT 44 3110 MVI A,0FFH 3120 OUT 45 3130 CLY:MOV A,H 3140 OUT 34 3150 CLX:MOV A,L 3160 OUT 33 3170 XRA A 3180 OUT 42 3190 DCR A 3200 OUT 43 3210 OUT 47 3220 CALL WAIT 3230 MOV A,L 3240 ADI 16 3250 MOV L,A 3260 JNZ CLX 3270 MOV A,H 3280 ADI 16 3290 MOV H,A 3300 JNZ CLY 3310 RET 3320 UBL:OUT 45 3330 XRA A 3340 OUT 42 3350 OUT 43 3360 OUT 44 3370 OUT 48 3380 CALL SET 3390 OUT 47 3400 JMP WAIT 3410 DBL:OUT 45 3420 XRA A 3430 OUT 42 3440 OUT 43 3450 OUT 44 3460 OUT 48 3470 CALL SET 3480 OUT 46 3490 JMP WAIT 3500 USE:MOV A,C 3510 OUT 42 3520 MOV A,B 3530 OUT 43 3540 MOV A,E 3550 OUT 44 3560 MOV A,D 3570 OUT 45 3580 CALL SET 3590 OUT 47 3600 JMP WAIT 3610 PUT:PUSH D 3620 PUSH H 3630 MOV D,A 3640 ANI 63 3650 ADI 80H 3660 OUT 45 3670 MOV A,D 3680 RLC 3690 RLC 3700 ANI 3 3710 MOV E,A 3720 MVI D,0 3730 LXI H,DIRS 3740 DAD D 3750 MOV A,M 3760 MOV D,A 3770 POP H 3780 PUSH H 3790 OUT 48 3800 ANI 2 3810 JZ NODL 3820 DCR L 3830 NODL:MOV A,D 3840 ANI 1 3850 JZ NODH 3860 DCR H 3870 NODH:CALL SET 3880 XRA A 3890 OUT 42 3900 OUT 43 3910 OUT 44 3920 OUT 47 3930 POP H 3940 POP D 3950 WAIT:IN 33 3960 ANI 16 3970 JZ WAIT 3980 RET 3990 DOT:PUSH PSW 4000 CALL SET 4010 POP PSW 4020 OUT 32 4030 RET 4040 READ:CALL SET 4050 IN 32 4060 ORA A 4070 RET 4080 SET:MOV A,H 4090 OUT 33 4100 MOV A,L 4110 OUT 34 4120 RET 4130 RND:PUSH B 4140 PUSH H 4150 LXI H,SH+3 4160 MVI B,8 4170 MOV A,M 4180 RTOP:RLC 4190 RLC 4200 RLC 4210 XRA M 4220 RAL 4230 RAL 4240 DCX H 4250 DCX H 4260 DCX H 4270 MOV A,M 4280 RAL 4290 MOV M,A 4300 INX H 4310 MOV A,M 4320 RAL 4330 MOV M,A 4340 INX H 4350 MOV A,M 4360 RAL 4370 MOV M,A 4380 INX H 4390 MOV A,M 4400 RAL 4410 MOV M,A 4420 DCR B 4430 JNZ RTOP 4440 POP H 4450 POP B 4460 RET @4470 CROSS:DB -5,0,-4,0,-3,0,-2,0,-1,0,0,0,1,0,2,0,3,0,4,0,5,0 74480 DB 0,-5,0,-4,0,-3,0,-2,0,-1,0,1,0,2,0,3,0,4,0,5 4490 DB 80H 4500 SH:DB 1,2,3,4 4510 OLD:DS 1 4520 SAVE:DS 1 4530 XYPOS:DS 2 4540 XYRAW:DS 2 4550 DIRS:DB 0,5,3,6 4560 STP:DS 2 4570 STACK:DB 0FFH 4580 DS SIZE2 4590 POS:DS 256 4590 41 0360 OUT 43 0370 INR A 0380 OUT 41 0390 CALL SHR 0400 LXI D,8000H 0410 MOV A,D 0420 OUT 45 0430 MOV A,E 0440 OUT 44 0450 MVI H,8 0460 MVI D,6 0470 ODEFL:MVI L,8 0480 MVI E,6 0490 DEFLP:XRA A 0500 OUT 42 0510 OUT 43 0520 5210 MOV D,A 5220 ANI 63 5230 ADI 80H 5240 OUT 45 5250 MOV A,D 5260 RLC 5270 RLC 5280 ANI 3 5290 MOV E,A 5300 MVI D,0 5310 LXI H,DIRS 5320 DAD D 5330 MOV A,M 5340 MOV D,A 5350 POP H 5360 PUSH H 5370 OUT 48 5380 ANI 2 5390 JZ NODL 5400 DCR L 5410 NODL:MOV A,D 5420 ANI 1 5430 JZ NODH 5440 DCR H 5450 NODH:CALL SET 5460 XRA A 5470 OUT 42 5480 OUT 43 5490 OUT 44 5500 OUT 47 5510 POP H 5520 POP D 5530 WAIT:IN 33 5540 ANI 16 5550 JZ WAIT 5560 RET 5570 DOT:PUSH PSW 5580 CALL SET 5590 POP PSW 5600 OUT 32 5610 RET 5620 READ:CALL SET 5630 IN 32 5640 ORA A 5650 RET 5660 SET:MOV A,H 5670 OUT 33 5680 MOV A,L 5690 OUT 34 5700 RET 5710 RND:PUSH B 5720 PUSH H 5730 LXI H,SH+3 5740 MVI B,8 5750 MOV A,M 5760 RTOP:RLC 5770 RLC 5780 RLC 5790 XRA M 5800 RAL 5810 RAL 5820 DCX H 5830 DCX H 5840 DCX H 5850 MOV A,M 5860 RAL 5870 MOV M,A 5880 INX H 5890 MOV A,M 5900 RAL 5910 MOV M,A 5920 INX H 5930 MOV A,M 5940 RAL 5950 MOV M,A 5960 INX H 5970 MOV A,M 5980 RAL 5990 MOV M,A 6000 DCR B 6010 JNZ RTOP 6020 POP H 6030 POP B 6040 RET 6050 SH:DB 1,2,3,4 6060 OLD:DS 1 6070 SAVE:DS 1 6080 XYPOS:DS 2 6090 DIRS:DB 0,5,3,6 6100 FLAGS:DS 256 6110 STP:DS 2 6120 STACK:DB 0FFH 6130 DS 36 6140 POS:DS 256 6140XI H,EYES 5950 CALL MAKE 5955 MVI A,1 5960 OUT 41 5965 LXI H,MAN1 5970 CALL SMAKE 5975 MVI A,1 5980 OUT 41 5985 LXI H,MAN2 5990 CALL SMAKE 5995 MVI A,1 6000 OUT 41 6005 LXI H,MAN3 6010 CALL SMAKE 6015 MVI A,1 6020 OUT 41 6025 LXI H,MAN4 6030 CALL SMAKE 6035 MVI A,1 6040 OUT 41 6045 LXI H,FCLR 6050 CALL SMAKE 6055 MVI A,1 6060 OUT 41 6065 LXI H,COLOR 6070 MVI A,80H 6075 OUT 43 6080 MVI C,0 6085 COLP:MOV A,C 6090 OUT 42 6095 OUT 39 6100 OUT 33 6105 XRA A 6110 OUT 40 6115 OUT 34 6120 MVI A,3 6125 OUT 41 6130 MOV A,M 6135 OUT 32 6140 INX H 6145 INR C 6150 MOV A,M 6155 INR A 6160 JNZ COLP 6165 XRA A 6170 OUT 41 6175 OUT 33 6180 OUT 34 6185 OUT 42 6190 OUT 44 6195 OUT 45 6200 OUT 46 6205 CALL FIGWT 6210 LXI D,8000H 6215 LXI H,0 6220 BLK:MOV A,E 6225 OUT 42 6230 MOV A,D 6235 OUT 43 6240 INX D 6245 MOV A,H 6250 SUI 8 6255 OUT 39 6260 MOV A,L 6265 SUI 8 6270 OUT 40 6275 MVI A,3 6280 OUT 40010 SIZE:EQU 6 0020 SIZE2:EQU 36 0030 XRA A 0040 OUT 48 0050 OUT 35 0060 LXI D,0 0070 MVI H,-8 0080 MOV L,H 0090 SQLP:XRA A 0100 OUT 43 0110 MOV A,E 0120 OUT 42 0130 MOV A,H 0140 OUT 39 0150 MOV A,L 0160 OUT 40 0170 MVI A,3 0180 OUT 41 0190 MVI A,0FFH 0200 OUT 43 0210 MOV A,H 0220 OUT 39 0230 MOV A,L 0240 OUT 40 0250 MVI A,2 0260 OUT 41 0270 INR E 0280 INR L 0290 MOV A,L 0300 CPI 8 0310 JNZ SQLP 0320 MVI L,-8 0330 INR H 0340 MOV A,H 0350 CPI 8 0360 JNZ SQLP 0370 XRA A 0380 OUT 41 0390 OUT 43 0400 INR A 0410 OUT 41 0420 LXI H,CROSS 0430 LXI D,100H 0440 CRLP:MOV A,D 0450 OUT 43 0460 MOV A,E 0470 OUT 42 0480 MOV A,M 0490 OUT 39 0500 INX H 0510 MOV A,M 0520 OUT 40 0530 INX H 0540 MVI A,2 0550 OUT 41 0560 INX D 0570 MOV A,M 0580 CPI 80H 0590 JNZ CRLP 0600 XRA A 0610 OUT 41 0620 LXI D,0F000H 0630 MOV A,D 0640 OUT 43 0650 XRA A 0660 OUT 34 0670 ZLP:MOV A,E 0680 OUT 42 0690 OUT 39 0700 OUT 33 0710 OUT 32 0720 XRA A 0730 OUT 40 0740 MVI A,3 0750 OUT 41 0760 INR E 0770 JNZ ZLP 0780 MVI A,1 0790 OUT 41 0800 XRA A 0810 OUT 33 0820 OUT 34 0830 OUT 42 0840 OUT 44 0850 MVI A,0F0H 0860 OUT 43 0870 MVI A,0FFH 0880 OUT 45 0890 OUT 46 0900 CALL WAIT 0910 LXI H,POS 0920 LXI D,0FF00H 0930 ZLP2:MOV M,D 0940 INX H 0950 DCR E 0960 JNZ ZLP2 0970 LXI D,POS 0980 MVI B,SIZE2 0990 RANDO:CALL RND 1000 ANI 3FH 1010 CPI SIZE2 1020 JNC RANDO 1030 ADD A 1040 MOV L,A 1050 RRC 1060 RRC 1070 RRC 1072 RRC 1080 ANI 1 1090 XRA L 1110 MOV L,A 1120 MVI H,0 1130 DAD D 1140 MOV A,M 1150 INR A 1160 JNZ RANDO 1170 CALL RND 1180 ANI 0C0H 1190 ADI SIZE2 1200 SUB B 1210 MOV M,A 1220 DCR B 1230 JNZ RANDO 1240 XRA A 1250 CALL CLEAR 1260 MVI A,78H 1270 CALL DBL 1280 MVI A,79H 1290 CALL DBL 1300 LXI H,808H 1310 LXI D,POS 1320 DOTS:MOV A,H 1330 SUI 8 1340 OUT 33 1350 MOV A,L 1360 SUI 8 1370 OUT 34 1380 LDAX D 1390 CPI 0FFH 1400 CNZ PUT 1410 INX D 1420 MOV A,L 1430 ADI 16 1440 MOV L,A 1450 JNC DOTS 1460 MOV A,H 1470 ADI 16 1480 MOV H,A 1490 JNC DOTS 1500 LXI H,STACK 1510 SHLD STP 1520 LXI H,8080H 1530 SHLD XYPOS 1540 CALL READ 1550 STA SAVE 1560 MLOOP: 1570 LHLD STP 1580 MOV A,M 1590 LHLD XYPOS 1600 CPI -1 1610 CNZ PUTB 1620 LDA SAVE 1630 CALL DOT 1640 CALL YOU 1650 LDA OLD 1660 MOV B,A 1670 IN 24 1680 STA OLD 1690 CMA 1700 ANA B 1710 MOV B,A 1720 ANI 1 1730 CNZ GET 1740 MOV A,B 1750 ANI 2 1760 CNZ DROP 1770 MOV A,B 1780 ANI 4 1790 CNZ LEFT 1800 MOV A,B 1810 ANI 8 1820 CNZ RIGHT 1830 LHLD XYPOS 1840 CALL READ 1850 STA SAVE 1860 MVI A,255 1870 CALL DOT 1880 XCHG 1890 LHLD STP 1900 MOV A,M 1910 XCHG 1920 CPI -1 1930 PUSH PSW 1940 CNZ DEFB 1950 POP PSW 1960 CNZ PUT 1970 WT1:IN 33 1980 ANI 1 1990 JZ WT1 2000 WT2:IN 33 2010 ANI 1 2020 JNZ WT2 2030 CALL 116H 2040 JNZ MLOOP 2050 RET 2060 GET:CALL XY2HL 2070 MOV A,M 2080 CPI 0FFH 2090 RZ 2100 ANI 3FH 2110 CPI SIZE2 2120 RNC 2130 MOV A,M 2140 MVI M,0FFH 2150 LHLD STP 2160 INX H 2170 SHLD STP 2180 MOV M,A 2190 PUSH PSW 2200 LHLD XYPOS 2210 CALL FIXHL 2220 POP PSW 2230 CALL PUT2 2240 XRA A 2250 OUT 44 2260 MVI A,78H 2270 OUT 45 2280 OUT 47 2290 JMP WAIT 2300 DROP:CALL XY2HL 2310 MOV A,M 2320 INR A 2330 RNZ 2340 XCHG 2350 LHLD STP 2360 MOV A,M 2370 CPI 0FFH 2380 RZ 2390 DCX H 2400 SHLD STP 2410 STAX D 2420 MOV C,A 2430 LHLD XYPOS 2440 CALL FIXHL 2450 MOV A,C 2460 JMP PUT 2470 FIXHL:MOV A,H 2480 ANI 0F0H 2490 ORI 8 2500 MOV H,A 2510 MOV A,L 2520 ANI 0F0H 2530 ORI 8 2540 MOV L,A 2550 RET 2560 LEFT:LHLD STP 2570 MOV A,M 2580 CPI 0FFH 2590 RZ 2600 SUI 40H 2610 MOV M,A 2620 LHLD XYPOS 2630 CALL FIXHL 2640 SHLD XYRAW 2650 RET 2660 RIGHT:LHLD STP 2670 MOV A,M 2680 CPI 0FFH 2690 RZ 2700 ADI 40H 2710 MOV M,A 2720 LHLD XYPOS 2730 CALL FIXHL 2740 SHLD XYRAW 2750 RET 2760 XY2HL:LHLD XYPOS 2770 MOV A,H 2780 ANI 0F0H 2790 MOV H,A 2800 MOV A,L 2810 RLC 2820 RLC 2830 RLC 2840 RLC 2850 ANI 0FH 2860 ORA H 2870 MOV E,A 2880 MVI D,0 2890 LXI H,POS 2900 DAD D 2910 RET 2920 YOU:LHLD XYRAW 2930 IN 25 2940 CMA 2950 CALL FIX 2960 ADD L 2970 MOV L,A 2980 ANI 0F0H 2990 ORI 8 3000 MOV E,A 3010 IN 26 3020 CMA 3030 CALL FIX 3040 ADD H 3050 MOV H,A 3060 ANI 0F0H 3070 ORI 8 3080 MOV D,A 3090 SHLD XYRAW 3100 SHLD XYPOS 3110 RET 3120 FIX:MOV B,A 3130 ORA A 3140 JP POSIT 3150 CMA 3160 INR A 3170 POSIT:CPI 32 3180 MVI A,0 3190 RC 3200 MOV A,B 3210 SRA A 3220 SRA A 3230 SRA A 3240 SRA A 3250 SRA A 3260 RET 3270 CLEAR:LXI H,0 3280 OUT 44 3290 MVI A,0FFH 3300 OUT 45 3310 CLY:MOV A,H 3320 OUT 34 3330 CLX:MOV A,L 3340 OUT 33 3350 XRA A 3360 OUT 42 3370 DCR A 3380 OUT 43 3390 OUT 47 3400 CALL WAIT 3410 MOV A,L 3420 ADI 16 3430 MOV L,A 3440 JNZ CLX 3450 MOV A,H 3460 ADI 16 3470 MOV H,A 3480 JNZ CLY 3490 RET 3500 UBL:OUT 45 3510 XRA A 3520 OUT 42 3530 OUT 43 3540 OUT 44 3550 OUT 48 3560 CALL SET 3570 OUT 47 3580 JMP WAIT 3590 DBL:OUT 45 3600 XRA A 3610 OUT 42 3620 OUT 43 3630 OUT 44 3640 OUT 48 3650 CALL SET 3660 OUT 46 3670 JMP WAIT 3680 USE:MOV A,C 3690 OUT 42 3700 MOV A,B 3710 OUT 43 3720 MOV A,E 3730 OUT 44 3740 MOV A,D 3750 OUT 45 3760 CALL SET 3770 OUT 47 3780 JMP WAIT 3790 PUT:CALL PUT2 3800 OUT 47 3810 WAIT:IN 33 3820 ANI 16 3830 JZ WAIT 3840 RET 3850 PUT2:PUSH D 3860 PUSH H 3870 MOV D,A 3880 ANI 63 3890 ADI 80H 3900 ADD A 3910 MOV L,A 3920 MVI H,88H 3930 MOV A,M 3940 OUT 42 3950 OUT 44 3960 INX H 3970 MOV A,M 3980 OUT 43 3990 OUT 45 4000 MOV A,D 4010 RLC 4020 RLC 4030 ANI 3 4040 MOV E,A 4050 MVI D,0 4060 LXI H,DIRS 4070 DAD D 4080 MOV A,M 4090 MOV D,A 4100 OUT 48 4110 POP H 4120 PUSH H 4130 ANI 2 4140 JZ NODL 4150 DCR L 4160 NODL:MOV A,D 4170 ANI 1 4180 JZ NODH 4190 DCR H 4200 NODH: 4210 CALL SET 4220 POP H 4230 POP D 4240 RET 4250 DEFB:CALL PUT2 4260 XRA A 4270 OUT 44 4280 MVI A,70H 4290 OUT 45 4300 OUT 46 4310 JMP WAIT 4320 PUTB:CALL PUT2 4330 XRA A 4340 OUT 44 4350 MVI A,70H 4360 OUT 45 4370 OUT 47 4380 JMP WAIT 4390 DOT:PUSH PSW 4400 CALL SET 4410 POP PSW 4420 OUT 32 4430 RET 4440 READ:CALL SET 4450 IN 32 4460 ORA A 4470 RET 4480 SET:MOV A,H 4490 OUT 33 4500 MOV A,L 4510 OUT 34 4520 RET 4530 RND:PUSH B 4540 PUSH H 4550 LXI H,SH+3 4560 MVI B,8 4570 MOV A,M 4580 RTOP:RLC 4590 RLC 4600 RLC 4610 XRA M 4620 RAL 4630 RAL 4640 DCX H 4650 DCX H 4660 DCX H 4670 MOV A,M 4680 RAL 4690 MOV M,A 4700 INX H 4710 MOV A,M 4720 RAL 4730 MOV M,A 4740 INX H 4750 MOV A,M 4760 RAL 4770 MOV M,A 4780 INX H 4790 MOV A,M 4800 RAL 4810 MOV M,A 4820 DCR B 4830 JNZ RTOP 4840 POP H 4850 POP B 4860 RET @4870 CROSS:DB -5,0,-4,0,-3,0,-2,0,-1,0,0,0,1,0,2,0,3,0,4,0,5,0 74880 DB 0,-5,0,-4,0,-3,0,-2,0,-1,0,1,0,2,0,3,0,4,0,5 4890 DB 80H 4900 SH:DB 1,2,3,4 4910 OLD:DS 1 4920 SAVE:DS 1 4930 XYPOS:DS 2 4940 XYRAW:DS 2 4950 DIRS:DB 0,5,3,6 4960 STP:DS 2 4970 STACK:DB 0FFH 4980 DS SIZE2 4990 POS:DS 256 499034 5120 CLX:MOV A,L 5130 OUT 33 5140 XRA A 5150 OUT 42 5160 DCR A 5170 OUT 43 5180 OUT 47 5190 CALL WAIT 5200 MOV A,L 5210 ADI 16 5220 MOV L,A 5230 JNZ CLX 5240 MOV A,H 5250 ADI 16 5260 MOV H,A 5270 JNZ CLY 5280 RET 5290 UBL:OUT 45 5300 XRA A 5310 OUT 42 5320 OUT 43 5330 OUT 44 5340 OUT 48 5350 CALL SET 5360 OUT 47 5370 JMP WAIT 5380 DBL:OUT 45 5390 XRA A 5400 OUT 42 5410 OUT 43 5420 OUT 44 5430 OUT 48 5440 CALL SET 5450 OUT 46 5460 JMP WAIT 5470 PUT:PUSH D 5480 PUSH H 5490 MOV D,A 5500 ANI 63 5510 ADI 80H 5520 OUT 45 5530 MOV A,D 5540 RLC 5550 RLC 5560 ANI 3 5570 MOV E,A 5580 MVI D,0 5590 LXI H,DIRS 5600 DAD D 5610 MOV A,M 5620 MOV D,A 5630 POP H 5640 PUSH H 5650 OUT 48 5660 ANI 2 5670 JZ NODL 5680 DCR L 5690 NODL:MOV A,D 5700 ANI 1 5710 JZ NODH 5720 DCR H 5730 NODH:CALL SET 5740 XRA A 5750 OUT 42 5760 OUT 43 5770 OUT 44 5780 OUT 47 5790 POP H 5800 POP D 5810 WAIT:IN 33 5820 ANI 16 5830 JZ WAIT 5840 RET 5850 DOT:PUSH PSW 5860 CALL SET 5870 POP PSW 5880 OUT 32 5890 RET 5900 READ:CALL SET 5910 IN 32 5920 ORA A 5930 RET 5940 SET:MOV A,H 5950 OUT 33 5960 MOV A,L 5970 OUT 34 5980 RET 5990 RND:PUSH B 6000 PUSH H 6010 LXI H,SH+3 6020 MVI B,8 6030 MOV A,M 6040 RTOP:RLC 6050 RLC 6060 RLC 6070 XRA M 6080 RAL 6090 RAL 6100 DCX H 6110 DCX H 6120 DCX H 6130 MOV A,M 6140 RAL 6150 MOV M,A 6160 INX H 6170 MOV A,M 6180 RAL 6190 MOV M,A 6200 INX H 6210 MOV A,M 6220 RAL 6230 MOV M,A 6240 INX H 6250 MOV A,M 6260 RAL 6270 MOV M,A 6280 DCR B 6290 JNZ RTOP 6300 POP H 6310 POP B 6320 RET 6330 SH:DB 1,2,3,4 6340 OLD:DS 1 6350 SAVE:DS 1 6360 XYPOS:DS 2 6370 DIRS:DB 0,5,3,6 6380 FLAGS:DS 256 6390 STP:DS 2 6400 STACK:DB 0FFH 6410 DS 36 6420 POS:DS 256 64200010 CNUM:EQU 50 0020 XRA A 0030 OUT 33 0040 OUT 36 0050 OUT 37 0060 OUT 38 0070 LXI H,0 0080 LXI D,0 0090 MVI B,32 0100 WRLP:MOV A,D 0110 OUT 43 0120 MOV A,E 0130 OUT 42 0140 INX D 0150 MOV A,H 0160 OUT 39 0170 MOV A,L 0180 OUT 40 0190 MVI A,3 0200 OUT 41 0210 MOV A,L 0220 ADI 32 0230 MOV L,A 0240 JNZ WRLP 0250 MOV A,H 0260 ADI 32 0270 MOV H,A 0280 JNZ WRLP 0290 XRA A 0300 OUT 41 0310 LXI D,0FF00H 0320 ZLP:MOV A,D 0330 OUT 43 0340 MOV A,E 0350 OUT 42 0360 XRA A 0370 OUT 39 0380 OUT 40 0390 MVI A,3 0400 OUT 41 0410 INR E 0420 JNZ ZLP 0430 MVI A,1 0440 OUT 41 0450 XRA A 0460 OUT 33 0470 OUT 34 0480 OUT 44 0490 OUT 45 0500 OUT 42 0510 DCR A 0520 OUT 32 0530 OUT 43 0540 OUT 46 0550 CALL WAIT 0560 LXI H,COLOR 0570 COLLP:MOV A,M 0580 MOV B,A 0590 OUT 33 0600 INX H 0610 MOV A,M 0620 OUT 38 0630 INX H 0640 MOV A,M 0650 OUT 37 0660 INX H 0670 MOV A,M 0680 OUT 36 0690 MOV A,B 0700 CPI CNUM+1 0710 JNC NOSAV 0720 ADD A 0730 ADD B 0740 MOV E,A 0750 MVI D,0 0760 PUSH H 0770 LXI H,CTAB-3 0780 DAD D 0790 POP D 0800 XCHG 0810 DCX H 0820 DCX H 0830 MOV A,M 0840 STAX D 0850 INX D 0860 INX H 0870 MOV A,M 0880 STAX D 0890 INX D 0900 INX H 0910 MOV A,M 0920 STAX D 0930 NOSAV: 0940 INX H 0950 MOV A,M 0960 ORA A 0970 JNZ COLLP 0980 MLOOP: 0990 XRA A 1000 OUT 42 1010 OUT 43 1020 OUT 44 1030 OUT 33 1040 OUT 34 1050 DCR A 1060 OUT 45 1070 OUT 47 1080 CALL WAIT 1090 LHLD XYPOS 1100 LDA SAVE 1110 CALL DOT 1120 CALL YOU 1130 LDA OLD 1140 MOV C,A 1150 IN 24 1160 MOV B,A 1170 STA OLD 1180 CMA 1190 ANA C 1200 MOV C,A 1210 MOV A,B 1220 ANI 8 1230 CZ ON 1240 MOV A,B 1250 ANI 1 1260 CZ CLR2 1270 MOV A,C 1280 ANI 2 1290 CNZ BUT2 1300 MOV A,B 1310 ANI 4 1320 CZ FILL 1330 CALL 116H 1340 RZ 1350 LHLD XYPOS 1360 CALL TEST 1370 STA SAVE 1380 MVI A,7 1390 CALL DOT 1400 XRA A 1410 OUT 42 1420 OUT 43 1430 OUT 44 1440 OUT 33 1450 OUT 34 1460 DCR A 1470 OUT 45 1480 OUT 46 1490 CALL WAIT 1500 XRA A 1510 OUT 42 1520 OUT 43 1530 OUT 44 1540 OUT 45 1550 OUT 47 1560 CALL WAIT 1570 WT:IN 33 1580 ANI 1 1590 JZ WT 1600 WT2:IN 33 1610 ANI 1 1620 JNZ WT2 1630 JMP MLOOP 1640 CLR2:MVI A,80H 1650 STA SAVE 1660 MOV D,A 1670 CLEAR:LXI H,0 1680 CLY:MOV A,H 1690 OUT 34 1700 CPI 192 1710 MOV C,D 1720 JNZ OK5 1730 MVI C,0 1740 OK5: 1750 CLX:MOV A,L 1760 OUT 33 1770 CPI 192 1780 MOV A,C 1790 JNZ OK4 1800 XRA A 1810 OK4: 1820 OUT 32 1830 INR L 1840 JNZ CLX 1850 INR H 1860 JNZ CLY 1870 MVI H,0C0H 1880 PTY:MOV A,H 1890 OUT 33 1900 MVI L,0C0H 1910 PTX:MOV A,L 1920 OUT 34 1930 MVI A,0FEH 1940 OUT 32 1950 INR L 1960 JNZ PTX 1970 INR H 1980 JNZ PTY 1990 RET 2000 BUT2:IN 26 2010 ADI 80H 2020 CPI 0C0H 2030 JC ROTAT 2050 DISP:LDA WHICH 2060 MOV E,A 2070 ADD A 2080 ADD E 2090 MOV E,A 2100 MVI D,0 2110 LXI H,CTAB-3 2120 DAD D 2130 MVI A,208 2140 CALL DIS2 2150 MVI A,224 2160 CALL DIS2 2170 MVI A,240 2180 DIS2:OUT 33 2190 MVI E,65 2200 MOV A,M 2210 RRC 2220 RRC 2230 ANI 3FH 2240 INR A 2250 MOV D,A 2251 D1:MOV A,E 2252 OUT 34 2253 MVI A,255 2254 OUT 32 2255 DCR E 2256 DCR D 2257 JNZ D1 2258 D2:MOV A,E 2259 OUT 34 2260 XRA A 2261 OUT 32 2262 DCR E 2263 JNZ D2 2264 INX H 2265 RET 2290 ROTAT:IN 25 2300 LXI H,WHICH 2310 ORA A 2320 JM DEC 2330 INR M 2340 MOV A,M 2350 CPI CNUM+1 2360 JNZ OKCOL 2370 MVI M,1 2380 JMP OKCOL 2390 DEC:DCR M 2400 MOV A,M 2410 ORA A 2420 JNZ OKCOL 2430 MVI M,CNUM 2440 OKCOL:MOV A,M 2450 ADD A 2460 ADD M 2470 MOV E,A 2480 MVI D,0 2490 LXI H,CTAB-3 2500 DAD D 2510 MVI A,0FEH 2520 OUT 33 2530 MOV A,M 2540 OUT 38 2550 INX H 2560 MOV A,M 2570 OUT 37 2580 INX H 2590 MOV A,M 2600 OUT 36 2610 LDA WHICH 2620 OUT 33 2630 MOV A,M 2640 OUT 36 2650 DCX H 2660 MOV A,M 2670 OUT 37 2680 DCX H 2690 MOV A,M 2700 OUT 38 2710 RET 2750 DOTS:XRA A 2760 OUT 42 2770 OUT 43 2780 OUT 44 2790 OUT 33 2800 OUT 34 2810 DCR A 2820 OUT 45 2830 OUT 46 2840 CALL WAIT 2850 XRA A 2860 OUT 42 2870 OUT 43 2880 OUT 44 2890 OUT 45 2900 OUT 47 2910 BUT:IN 24 2920 ANI 2 2930 JZ BUT 2940 CALL WAIT 2950 XRA A 2960 OUT 42 2970 OUT 43 2980 OUT 44 2990 DCR A 3000 OUT 45 3010 OUT 47 3020 JMP WAIT 3030 ON:LHLD XYPOS 3040 LDA WHICH 3050 JMP DOT 3060 MOV A,H 3070 ANI 0FEH 3080 OUT 34 3090 MOV A,L 3100 ANI 0FEH 3110 OUT 33 3120 XRA A 3130 OUT 32 3140 RET 3150 YOU:IN 25 3160 CMA 3170 CALL FIX 3180 LHLD YPOS 3190 DAD D 3200 SHLD YPOS 3210 MOV B,H 3220 IN 26 3230 CMA 3240 CALL FIX 3250 LHLD XPOS 3260 DAD D 3270 SHLD XPOS 3280 MOV L,H 3290 MOV H,B 3300 SHLD XYPOS 3310 RET 3320 FIX:MOV L,A 3330 MVI H,0 3340 ORA A 3350 JP NONEG 3360 DCR H 3370 NONEG: 3380 DAD H 3390 XCHG 3400 RET 3410 DOT:PUSH PSW 3420 CALL SET 3430 POP PSW 3440 OUT 32 3450 RET 3460 TEST:CALL SET 3470 IN 32 3480 ORA A 3490 RET 3500 SET:MOV A,H 3510 OUT 34 3520 MOV A,L 3530 OUT 33 3540 RET 3550 WAIT:IN 33 3560 ANI 16 3570 JZ WAIT 3580 RET 3590 FILL:LHLD XYPOS 3600 SHLD MEM1 3610 CALL TEST 3620 STA FCOL 3630 MOV B,A 3640 LDA WHICH 3650 CMP B 3660 RZ 3670 LXI H,1 3680 SHLD NUM 3690 FILLP:LXI D,MEM1 3700 LXI H,MEM2 3710 CALL FILL2 3720 LXI D,MEM2 3730 LXI H,MEM1 3740 CALL FILL2 3750 JMP FILLP 3760 FILL2:SHLD ADDR2 3770 XCHG 3780 SHLD ADDR1 3790 LHLD NUM 3800 MOV B,H 3810 MOV C,L 3820 LXI H,0 3830 SHLD NUM 3840 FLP:LHLD ADDR1 3850 MOV E,M 3860 INX H 3870 MOV D,M 3880 INX H 3890 SHLD ADDR1 3900 DCR D 3910 CALL FDOT 3920 INR D 3930 INR E 3940 CALL FDOT 3950 INR D 3960 DCR E 3970 CALL FDOT 3980 DCR D 3990 DCR E 4000 CALL FDOT 4010 DCX B 4020 MOV A,B 4030 ORA C 4040 JNZ FLP 4050 LHLD NUM 4060 MOV A,H 4070 ORA L 4080 RNZ 4090 POP H 4100 RET 4110 FDOT:MOV A,D 4120 OUT 34 4130 MOV A,E 4140 OUT 33 4150 IN 32 4160 MOV H,A 4170 LDA FCOL 4180 CMP H 4190 RNZ 4200 LDA WHICH 4210 OUT 32 4220 LHLD ADDR2 4230 MOV M,E 4240 INX H 4250 MOV M,D 4260 INX H 4270 SHLD ADDR2 4280 LHLD NUM 4290 INX H 4300 SHLD NUM 4310 RET 4320 LINE:MOV B,H 4330 MOV C,L 4340 MVI L,0 4350 SHLD Y 4360 MOV H,C 4370 SHLD X 4380 MOV A,D 4390 SUB B 4400 CALL FIX2 4410 SHLD DY 4420 MOV A,E 4430 SUB C 4440 CALL FIX2 4450 SHLD DX 4460 MVI B,0 4470 LNLP:LHLD DX 4480 XCHG 4490 LHLD X 4500 DAD D 4510 SHLD X 4520 MOV C,H 4530 LHLD DY 4540 XCHG 4550 LHLD Y 4560 DAD D 4570 SHLD Y 4580 MOV L,C 4590 CALL ON 4600 DCR B 4610 JNZ LNLP 4620 RET 4630 FIX2:MOV L,A 4640 MVI H,0 4650 RNC 4660 DCR H 4670 RET 4680 XYPOS:DS 2 4690 OLD:DS 2 4700 SAVE:DS 1 4710 XPOS:DS 2 4720 YPOS:DS 2 4730 X:DS 2 4740 Y:DS 2 4750 DX:DS 2 4760 DY:DS 2 4770 FLAG:DS 1 4780 P1:DS 2 4790 P2:DS 2 4800 OPOS:DS 2 4810 ADDR1:DS 2 4820 ADDR2:DS 2 4830 FCOL:DB 1 4840 NUM:DS 2 /4850 COLOR:DB 1,255,0,0,2,0,255,0,3,255,255,0 :4860 DB 4,0,0,255,5,255,0,255,6,0,255,255,7,255,255,255 4870 DB 8,0,0,0 4880 DB 80H,0,0,128 4890 DB 255,255,255,255 4900 DB 0 4910 WHICH:DB 1 4920 CTAB:DS 150 4930 MEM1:DS 1000H 4940 MEM2:DS 1000H 4940€€€€€€€€€€€€€€€€€€€€€€€€€€€€0010 LXI B,8000H 0020 MOV A,B 0030 OUT 45 0040 MOV A,C 0050 OUT 44 0060 LXI H,608H 0070 OLP:LXI D,608H 0080 MOV A,L 0090 OUT 34 0100 ILP:XRA A 0110 OUT 42 0120 OUT 43 0130 MOV A,E 0140 OUT 33 0150 OUT 47 0160 WT:IN 33 0170 ANI 16 0180 JZ WT 0190 MOV A,E 0200 ADI 16 0205 MOV E,A 0210 DCR D 0220 JNZ ILP 0230 MOV A,L 0231 ADI 16 0232 MOV L,A 0233 DCR H 0234 JNZ OLP 0235 LXI D,9000H 0236 MVI H,0 0237 OLP2:MVI L,0 0238 MOV A,H 0239 OUT 33 0240 ILP2:MOV A,L 0241 OUT 34 0242 IN 32 0243 STAX D 0244 INX D 0245 INR L 0246 MVI A,96 0247 CMP L 0248 JNZ ILP2 0249 INR H 0250 CMP H 0251 JNZ OLP2 0252 RET 0252ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0010 CNUM:EQU 50 0020 XRA A 0022 OUT 35 0023 OUT 48 0030 OUT 33 0040 OUT 36 0050 OUT 37 0060 OUT 38 0070 LXI H,0 0080 LXI D,0 0090 MVI B,32 0100 WRLP:MOV A,D 0110 OUT 43 0120 MOV A,E 0130 OUT 42 0140 INX D 0150 MOV A,H 0160 OUT 39 0170 MOV A,L 0180 OUT 40 0190 MVI A,3 0200 OUT 41 0210 MOV A,L 0220 ADI 32 0230 MOV L,A 0240 CPI 224 0250 JNZ WRLP 0260 MVI L,0 0270 MOV A,H 0280 ADI 32 0290 MOV H,A 0300 CPI 224 0310 JNZ WRLP 0320 XRA A 0330 OUT 41 0340 LXI D,0FF00H 0350 ZLP:MOV A,D 0360 OUT 43 0370 MOV A,E 0380 OUT 42 0390 XRA A 0400 OUT 39 0410 OUT 40 0420 MVI A,3 0430 OUT 41 0440 INR E 0450 JNZ ZLP 0460 MVI A,1 0470 OUT 41 0480 XRA A 0490 OUT 33 0500 OUT 34 0510 OUT 44 0520 OUT 45 0530 OUT 42 0540 DCR A 0550 OUT 32 0560 OUT 43 0570 OUT 46 0580 CALL WAIT 0590 LXI H,CTAB 0592 MVI B,50 0600 COLLP:MVI A,51 0601 SUB B 0602 OUT 33 0603 MOV A,M 0604 OUT 38 0605 INX H 0606 MOV A,M 0607 OUT 37 0608 INX H 0609 MOV A,M 0610 OUT 36 0611 INX H 0990 DCR B 1000 JNZ COLLP 1010 MLOOP: 1020 XRA A 1030 OUT 42 1040 OUT 43 1050 OUT 44 1060 OUT 33 1070 OUT 34 1080 DCR A 1090 OUT 45 1100 OUT 47 1110 CALL WAIT 1120 LHLD XYPOS 1130 LDA SAVE 1140 CALL DOT 1150 CALL YOU 1160 LDA OLD 1170 MOV C,A 1180 IN 24 1190 MOV B,A 1200 STA OLD 1210 CMA 1220 ANA C 1230 MOV C,A 1240 MOV A,B 1250 ANI 8 1260 CZ ON 1270 MOV A,B 1300 MOV A,C 1310 ANI 1 1320 CNZ BUT2 1330 MOV A,B 1340 ANI 4 1350 CZ FILL 1360 CALL 116H 1370 RZ 1372 CPI '2' 1373 CZ CLR2 1380 LHLD XYPOS 1390 CALL TEST 1400 STA SAVE 1410 MVI A,7 1420 CALL DOT 1430 XRA A 1440 OUT 42 1450 OUT 43 1460 OUT 44 1470 OUT 33 1480 OUT 34 1490 DCR A 1500 OUT 45 1510 OUT 46 1520 CALL WAIT 1530 XRA A 1540 OUT 42 1550 OUT 43 1560 OUT 44 1570 OUT 45 1580 OUT 47 1590 CALL WAIT 1600 WT:IN 33 1610 ANI 1 1620 JZ WT 1630 WT2:IN 33 1640 ANI 1 1650 JNZ WT2 1660 JMP MLOOP 1670 CLR2:MVI A,50 1680 STA SAVE 1690 MOV D,A 1700 CLEAR:LXI H,0 1710 CLY:MOV A,H 1720 OUT 34 1730 CPI 192 1740 MOV C,D 1750 JNZ OK5 1760 MVI C,0 1770 OK5: 1780 CLX:MOV A,L 1790 OUT 33 1800 CPI 192 1810 MOV A,C 1820 JNZ OK4 1830 XRA A 1840 OK4: 1850 OUT 32 1860 INR L 1870 JNZ CLX 1880 INR H 1890 JNZ CLY 1900 MVI H,0C0H 1910 PTY:MOV A,H 1920 OUT 33 1930 MVI L,0C0H 1940 PTX:MOV A,L 1950 OUT 34 1960 MVI A,0FEH 1970 OUT 32 1980 INR L 1990 JNZ PTX 2000 INR H 2010 JNZ PTY 2020 RET 2030 BUT2:IN 26 2040 ADI 80H 2050 CPI 0C0H 2060 JC ROTAT 2070 BWT:IN 24 2080 ANI 1 2090 JZ BWT 2100 SHIFT:LDA WHICH 2110 MOV E,A 2120 MVI D,0 2130 LXI H,CTAB-3 2140 DAD D 2150 DAD D 2160 DAD D 2170 MVI A,0FEH 2180 OUT 33 2190 IN 25 2200 ORA A 2210 MVI D,1 2220 JP ISPOS 2230 MVI D,-1 2240 ISPOS: 2242 WT4:IN 33 2243 ANI 1 2244 JNZ WT4 2250 IN 24 2260 MOV C,A 2270 ANI 2 2280 JNZ SKR 2290 MOV A,M 2300 ADD D 2310 MOV M,A 2320 OUT 38 2330 SKR:INX H 2340 MOV A,C 2350 ANI 4 2360 JNZ SKG 2370 MOV A,M 2380 ADD D 2390 MOV M,A 2400 OUT 37 2410 SKG:INX H 2420 MOV A,C 2430 ANI 8 2440 JNZ SKB 2450 MOV A,M 2460 ADD D 2470 MOV M,A 2480 OUT 36 2490 SKB: 2491 LDA WHICH 2492 OUT 33 2493 MOV A,M 2494 OUT 36 2495 DCX H 2496 MOV A,M 2497 OUT 37 2498 DCX H 2499 MOV A,M 2500 OUT 38 2501 CALL DISP 2502 MOV A,C 2510 ANI 1 2520 JNZ SHIFT 2530 RET 2540 DISP:LDA WHICH 2550 MOV E,A 2560 ADD A 2570 ADD E 2580 MOV E,A 2590 MVI D,0 2600 LXI H,CTAB-3 2610 DAD D 2620 MVI A,208 2630 CALL DIS2 2640 MVI A,224 2650 CALL DIS2 2660 MVI A,240 2670 DIS2:OUT 33 2680 MVI E,129 2690 MOV A,M 2700 RRC 2710 ANI 7FH 2720 INR A 2730 MOV D,A 2740 D1:MOV A,E 2750 OUT 34 2760 MVI A,255 2770 OUT 32 2780 DCR E 2790 DCR D 2800 JNZ D1 2810 D2:MOV A,E 2820 OUT 34 2830 XRA A 2840 OUT 32 2850 DCR E 2860 JNZ D2 2870 INX H 2880 RET 2890 ROTAT:IN 25 2900 LXI H,WHICH 2910 ORA A 2920 JM DEC 2930 INR M 2940 CPI 192 2950 MOV A,M 2960 CPI CNUM+1 2970 JNZ OKCOL 2980 MVI M,1 2990 JMP OKCOL 3000 DEC:DCR M 3010 MOV A,M 3020 ORA A 3030 JNZ OKCOL 3040 MVI M,CNUM 3050 OKCOL:MOV A,M 3060 ADD A 3070 ADD M 3080 MOV E,A 3090 MVI D,0 3100 LXI H,CTAB-3 3110 DAD D 3120 MVI A,0FEH 3130 OUT 33 3140 MOV A,M 3150 OUT 38 3160 INX H 3170 MOV A,M 3180 OUT 37 3190 INX H 3200 MOV A,M 3210 OUT 36 3220 LDA WHICH 3230 OUT 33 3240 MOV A,M 3250 OUT 36 3260 DCX H 3270 MOV A,M 3280 OUT 37 3290 DCX H 3300 MOV A,M 3310 OUT 38 3320 JMP DISP 3330 DOTS:XRA A 3340 OUT 42 3350 OUT 43 3360 OUT 44 3370 OUT 33 3380 OUT 34 3390 DCR A 3400 OUT 45 3410 OUT 46 3420 CALL WAIT 3430 XRA A 3440 OUT 42 3450 OUT 43 3460 OUT 44 3470 OUT 45 3480 OUT 47 3490 BUT:IN 24 3500 ANI 2 3510 JZ BUT 3520 CALL WAIT 3530 XRA A 3540 OUT 42 3550 OUT 43 3560 OUT 44 3570 DCR A 3580 OUT 45 3590 OUT 47 3600 JMP WAIT 3610 ON:LHLD XYPOS 3620 LDA WHICH 3630 CALL DOT 3640 MOV A,H 3650 ANI 0FEH 3655 MOV H,A 3670 MOV A,L 3680 ANI 0FEH 3690 MOV L,A 3700 LDA WHICH 3701 JMP DOT 3730 YOU:IN 25 3740 CMA 3750 CALL FIX 3760 LHLD YPOS 3770 DAD D 3780 SHLD YPOS 3790 MOV B,H 3800 IN 26 3810 CMA 3820 CALL FIX 3830 LHLD XPOS 3840 DAD D 3850 SHLD XPOS 3860 MOV L,H 3870 MOV H,B 3880 SHLD XYPOS 3890 RET 3900 FIX:MOV L,A 3910 MVI H,0 3920 ORA A 3930 JP NONEG 3940 DCR H 3950 NONEG: 3960 DAD H 3970 XCHG 3980 RET 3990 DOT:PUSH PSW 4000 CALL SET 4010 POP PSW 4020 OUT 32 4030 RET 4040 TEST:CALL SET 4050 IN 32 4060 ORA A 4070 RET 4080 SET:MOV A,H 4090 OUT 34 4100 MOV A,L 4110 OUT 33 4120 RET 4130 WAIT:IN 33 4140 ANI 16 4150 JZ WAIT 4160 RET 4170 FILL:LHLD XYPOS 4180 SHLD MEM1 4190 CALL TEST 4200 STA FCOL 4210 MOV B,A 4220 LDA WHICH 4230 CMP B 4240 RZ 4250 LXI H,1 4260 SHLD NUM 4270 FILLP:LXI D,MEM1 4280 LXI H,MEM2 4290 CALL FILL2 4300 LXI D,MEM2 4310 LXI H,MEM1 4320 CALL FILL2 4330 JMP FILLP 4340 FILL2:SHLD ADDR2 4350 XCHG 4360 SHLD ADDR1 4370 LHLD NUM 4380 MOV B,H 4390 MOV C,L 4400 LXI H,0 4410 SHLD NUM 4420 FLP:LHLD ADDR1 4430 MOV E,M 4440 INX H 4450 MOV D,M 4460 INX H 4470 SHLD ADDR1 4480 DCR D 4490 CALL FDOT 4500 INR D 4510 INR E 4520 CALL FDOT 4530 INR D 4540 DCR E 4550 CALL FDOT 4560 DCR D 4570 DCR E 4580 CALL FDOT 4590 DCX B 4600 MOV A,B 4610 ORA C 4620 JNZ FLP 4630 LHLD NUM 4640 MOV A,H 4650 ORA L 4660 RNZ 4670 POP H 4680 RET 4690 FDOT:MOV A,D 4700 OUT 34 4710 MOV A,E 4720 OUT 33 4730 IN 32 4740 MOV H,A 4750 LDA FCOL 4760 CMP H 4770 RNZ 4780 LDA WHICH 4790 OUT 32 4800 LHLD ADDR2 4810 MOV M,E 4820 INX H 4830 MOV M,D 4840 INX H 4850 SHLD ADDR2 4860 LHLD NUM 4870 INX H 4880 SHLD NUM 4890 RET 4900 LINE:MOV B,H 4910 MOV C,L 4920 MVI L,0 4930 SHLD Y 4940 MOV H,C 4950 SHLD X 4960 MOV A,D 4970 SUB B 4980 CALL FIX2 4990 SHLD DY 5000 MOV A,E 5010 SUB C 5020 CALL FIX2 5030 SHLD DX 5040 MVI B,0 5050 LNLP:LHLD DX 5060 XCHG 5070 LHLD X 5080 DAD D 5090 SHLD X 5100 MOV C,H 5110 LHLD DY 5120 XCHG 5130 LHLD Y 5140 DAD D 5150 SHLD Y 5160 MOV L,C 5170 CALL ON 5180 DCR B 5190 JNZ LNLP 5200 RET 5210 FIX2:MOV L,A 5220 MVI H,0 5230 RNC 5240 DCR H 5250 RET 5260 XYPOS:DS 2 5270 OLD:DS 2 5280 SAVE:DS 1 5290 XPOS:DS 2 5300 YPOS:DS 2 5310 X:DS 2 5320 Y:DS 2 5330 DX:DS 2 5340 DY:DS 2 5350 FLAG:DS 1 5360 P1:DS 2 5370 P2:DS 2 5380 OPOS:DS 2 5390 ADDR1:DS 2 5400 ADDR2:DS 2 5410 FCOL:DB 1 5420 NUM:DS 2 /5430 COLOR:DB 1,255,0,0,2,0,255,0,3,255,255,0 :5440 DB 4,0,0,255,5,255,0,255,6,0,255,255,7,255,255,255 5450 DB 8,0,0,0 5460 DB 80H,0,0,128 5470 DB 255,255,255,255 5480 DB 0 5490 WHICH:DB 1 5500 CTAB:EQU 981BH 5510 MEM1:DS 1000H 5520 MEM2:DS 1000H 55200516 4270 TEND: 4280 MEM1:DS 100 4290 MEM2:DS 100  5TAB:DS 150 5510 MEM1:DS 1000H 5520 MEM2:DS 1000H 55205ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ 0001 XRA A 0002 OUT 33 0003 OUT 36 0004 OUT 37 0005 OUT 38 0006 DCR A 0007 OUT 33 0008 OUT 36 0009 OUT 37 0010 OUT 38 0011 XRA A 0020 OUT 35 0030 LXI H,0 0040 LPY:MOV A,H 0050 OUT 34 0060 LPX:MOV A,L 0070 OUT 33 0080 XRA A 0090 OUT 32 0100 INR L 0110 JNZ LPX 0120 INR H 0130 JNZ LPY 0140 BACK:IN 30 0150 MOV B,A 0160 IN 31 0170 MOV C,A 0172 LXI H,200 0173 WAIT:DCX H 0174 MOV A,H 0175 ORA L 0176 JNZ WAIT 0180 IN 30 0190 CMP B 0200 JNZ BACK 0210 IN 31 0220 CMP C 0230 JNZ BACK 0240 MOV A,B 0250 OUT 33 0260 MOV A,C 0270 CMA 0280 OUT 34 0290 MVI A,255 0300 OUT 32 0310 CALL 116H 0320 JNZ BACK 0330 RET 0330Ý=+ÍŠ*ÍU)*Ý=z³Ê8åÕÍÀ9Ñáw+à 8ÑÂ&ÍÜ&ʸåÍÀ9o&Í¡+áÍ)ÃÐ7#Í…)Í·+͵:æÂØ~æååÂi8:þÃ!Ê]8)Í@)ëáå6#Ͱ&>%Í¥)>Úw8Í·+{õÍv)͈>ÍÚØ2¡=͵&Áã###Ͱ&ã͵&~æ¸Â¸~æ€!¡=¶wò­8ë)ëáͰ&ÕͰ&rÑá:¡=öwÍ£)ØëÍ¡+ÍÜ&ʸÃ)Õ͵:åÍE:á6ÑòÕ8É#Í…)Í·+͵:åÍE:á~æwÉõÍ5:*0010 ;FIGS AT 8000H &0020 ; FIGURES ALLOCATED AS FOLLOWS: 0030 ; 0-13 RUNNING 0040 ; 14-25 JUMPING 0050 ; 26 STANDING 0060 ; 27 SEARCHING 0070 ; 28 BLOCK1 0080 MIN:EQU 32 0090 MEM:EQU 4F00H 0100 C1:EQU 32 0110 XRA A 0120 OUT 48 0130 OUT 35 0140 LXI H,8000H 0150 ZLP:MOV A,H 0160 OUT 43 0170 MOV A,L 0180 OUT 42 0190 XRA A 0200 OUT 39 0210 OUT 40 0220 MVI A,3 0230 OUT 41 0240 INX H 0250 MOV A,H 0260 CPI 90H 0270 JC ZLP 0280 MVI A,C1 0290 OUT 32 0300 XRA A 0310 OUT 44 0320 OUT 42 0330 MVI A,80H 0340 OUT 45 0350 OUT 43 0360 OUT 46 0370 CALL WAIT 0380 LXI H,TABLE 0390 CLP:MOV A,M 0400 INR A 0410 JZ DONE 0420 DCR A 0430 OUT 33 0440 INX H 0450 MOV A,M 0460 OUT 38 0470 INX H 0480 MOV A,M 0490 OUT 37 0500 INX H 0510 MOV A,M 0520 OUT 36 0530 INX H 0540 JMP CLP 0550 DONE: 0560 MVI A,29 0570 STA ADDR 0580 LXI B,MEM 0590 LXI D,0 0600 LXI H,8000H 0610 SET2:MOV A,E 0620 STAX B 0630 INX B 0640 MOV A,D 0650 STAX B 0660 INX B 0670 PUSH D 0680 SET:MOV A,D 0690 OUT 43 0700 MOV A,E 0710 OUT 42 0720 INX D 0730 MOV A,M 0740 OUT 39 0750 OUT 33 0760 INX H 0770 MOV A,M 0780 OUT 40 0790 OUT 34 0800 INX H 0810 MVI A,3 0820 OUT 41 0830 MOV A,M 0840 OUT 32 0850 INX H 0860 MOV A,M 0870 CPI 80H 0880 JNZ SET 0890 MVI A,1 0900 OUT 41 0910 INX H 0920 INX H 0930 INX H 0940 XRA A 0950 OUT 33 0960 OUT 34 0970 XTHL 0980 MOV A,H 0990 OUT 43 1000 OUT 45 1010 MOV A,L 1020 OUT 42 1030 OUT 44 1040 OUT 46 1050 POP H 1060 CALL WAIT 1070 LDA ADDR 1080 DCR A 1090 STA ADDR 1100 JNZ SET2 1110 LXI H,0 1120 LPY:MOV A,H 1130 OUT 34 1140 LPX:MOV A,L 1150 OUT 33 1160 MVI A,C1 1170 OUT 32 1180 INR L 1190 JNZ LPX 1200 INR H 1210 JNZ LPY 1220 CALL SROOM 1230 MVI L,0 1240 MVI H,80H-16 1250 SHLD POS 1260 MLOOP:CALL 116H 1270 CPI 3 1280 RZ 1290 CALL YOU 1300 LDA ACTION 1310 ADD A 1320 MOV E,A 1330 MVI D,0 1340 LXI H,MEM 1350 DAD D 1360 MOV E,M 1370 INX H 1380 MOV D,M 1390 LHLD POS 1400 XCHG 1410 CALL ON 1420 MVI B,2 1430 WT1:IN 33 1440 ANI 1 1450 JZ WT1 1460 WT2:IN 33 1470 ANI 1 1480 JNZ WT2 1490 DCR B 1500 JNZ WT1 1510 CALL OFF 1520 JMP MLOOP 1530 YOU:LDA ACTION 1540 CPI 14 1550 JC NJUMP 1560 CPI 26 1570 JNC NJUMP 1580 LDA DIR 1590 ANI 2 1600 OUT 48 1610 DCR A 1620 ADD A 1630 ADD A 1640 LHLD POS 1650 ADD L 1660 MOV L,A 1670 SHLD POS 1680 LXI H,ACTION 1690 INR M 1700 MOV A,M 1710 CPI 26 1720 RNZ 1730 LDA SAVE 1740 MOV M,A 1750 NJUMP:CALL JOYST 1760 JC STOP 1770 MOV B,A 1780 ANI 1 1790 JZ STOP 1800 MOV A,B 1810 STA DIR 1820 ANI 2 1830 OUT 48 1840 DCR A 1850 ADD A 1860 ADD A 1870 LHLD POS 1880 ADD L 1890 MOV L,A 1900 SHLD POS 1910 LXI H,ACTION 1920 MOV A,M 1930 CPI 26 1940 JNZ NOT26 1950 MVI M,-1 1960 NOT26: 1970 INR M 1980 MOV A,M 1990 CPI 14 2000 JNZ TJUMP 2010 MVI M,0 2020 JMP TJUMP 2030 STOP:MVI A,26 2040 STA ACTION 2050 TJUMP:IN 24 2060 ANI 1 2070 RNZ 2080 LXI H,ACTION 2090 MOV A,M 2100 STA SAVE 2110 MVI M,14 2120 RET 2130 JOYST:IN 25 2140 MOV C,A 2150 CALL ABS 2160 MOV E,A 2170 IN 26 2180 CMA 2190 MOV B,A 2200 CALL ABS 2210 MOV D,A 2220 CMP E 2230 JC XBIG 2240 CPI MIN 2250 RC 2260 MOV A,B 2270 ORA A 2280 MVI A,0 2290 RM 2300 MVI A,2 2310 RET 2320 XBIG:MOV A,E 2330 CPI MIN 2340 RC 2350 MOV A,C 2360 ORA A 2370 MVI A,3 2380 RM 2390 MVI A,1 2400 RET 2410 ABS:ORA A 2420 RP 2430 CMA 2440 INR A 2450 RET 2460 SROOM:LXI H,ROOM 2470 MOV C,M 2480 INX H 2490 SRLP:MOV A,M 2500 ADD A 2510 ADD A 2520 ADD A 2530 MOV D,A 2540 INX H 2550 MOV A,M 2560 ADD A 2570 ADD A 2580 ADD A 2590 MOV E,A 2600 INX H 2610 MOV B,M 2620 INX H 2630 PUSH H 2640 LHLD MEM+56 2650 SRLIN: 2660 CALL ON 2670 MOV A,E 2680 ADI 8 2690 MOV E,A 2700 DCR B 2710 JNZ SRLIN 2720 POP H 2730 DCR C 2740 JNZ SRLP 2750 LHLD MEM+56 2760 MVI E,0 2770 MVI C,30 2780 TANDB:MVI D,0 2790 CALL ON 2800 MVI D,248 2810 CALL ON 2820 MOV A,E 2830 ADI 8 2840 MOV E,A 2850 DCR C 2860 JNZ TANDB 2870 MVI D,0 2880 MVI C,32 2890 LANDR:MVI E,0 2900 CALL ON 2910 MVI E,232 2920 CALL ON 2930 MOV A,D 2940 ADI 8 2950 MOV D,A 2960 DCR C 2970 JNZ LANDR 2980 RET 2990 ON: 3000 MOV A,H 3010 OUT 43 3020 OUT 45 3030 MOV A,L 3040 OUT 42 3050 OUT 44 3060 MOV A,D 3070 OUT 33 3080 MOV A,E 3090 OUT 34 3100 OUT 47 3110 WAIT:IN 33 3120 ANI 16 3130 JZ WAIT 3140 RET 3150 OFF:MVI A,80H 3160 OUT 45 3170 XRA A 3180 OUT 44 3190 MOV A,H 3200 OUT 43 3210 MOV A,L 3220 OUT 42 3230 MOV A,D 3240 OUT 33 3250 MOV A,E 3260 OUT 34 3270 OUT 47 3280 JMP WAIT 3290 ADDR:DS 1 3300 DIR:DS 1 3310 SAVE:DS 1 3320 POS:DS 2 3330 ACTION:DS 1 3340 TABLE:DB 0,0,0,0 3350 DB 3FH,0FFH,0FFH,0FFH 3360 DB 32,0FFH,0,0 3370 DB 0FFH 3380 ROOM:DB 6 73390 DB 9,3,24,16,5,3,16,11,8,16,22,3,24,3,9,24,18,9 3390ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿA A 3930 JP NONEG 3940 DCR H 3950 NONEG: 3960 DAD H 3970 XCHG 3980 RET 3990 DOT:PUSH PSW 4000 CALL SET 4010 POP PSW 4020 OUT 32 4030 RET 4040 TEST:CALL SET 4050 IN 32 4060 ORA A 4070 RET 4080 SET:MOV A,H 4090 OUT 34 4100 MOV A,L 4110 OUT 33 4120 RET 4130 WAIT:IN 33 4140 ANI 16 4150 JZ WAIT 4160 RET 4170 FILL:LHLD XYPOS 4180 SHLD MEM1 4190 CALL TEST 4200 STA FCOL 4210 MOV B,A 4220 LDA WHICH 4230 CMP B 4240 RZ 4250 LXI H,1 4260 SHLD NUM 4270 FILLP:LXI D,MEM1 4280 LXI H,MEM2 4290 CALL FILL2 4300 LXI D,MEM2 4310 LXI H,MEM1 4320 CALL FILL2 4330 JMP FILLP 4340 FILL2:SHLD ADDR2 4350 XCHG 4360 SHLD ADDR1 4370 LHLD NUM 4380 MOV B,H 4390 MOV C,L 4400 LXI H,0 4410 SHLD NUM 4420 FLP:LHLD ADDR1 4430 MOV E,M 4440 INX H 4450 MOV D,M 4460 INX H 4470 SHLD ADDR1 4480 DCR D 4490 CALL FDOT 4500 INR D 4510 INR E 4520 CALL FDOT 4530 INR D 4540 DCR E 4550 CALL FDOT 4560 DCR D 4570 DCR E 4580 CALL FDOT 4590 DCX B 4600 MOV A,B 4610 ORA C 4620 JNZ FLP 4630 LHLD NUM 4640 MOV A,H 4650 ORA L 4660 RNZ 4670 POP H 4680 RET 4690 FDOT:MOV A,D 4700 OUT 34 4710 MOV A,E 4720 OUT 33 4730 IN 32 4740 MOV H,A 4750 LDA FCOL 4760 CMP H 4770 RNZ 4780 LDA WHICH 4790 OUT 32 4800 LHLD ADDR2 4810 MOV M,E 4820 INX H 4830 MOV M,D 4840 INX H 4850 SHLD ADDR2 4860 LHLD NUM 4870 INX H 4880 SHLD NUM 4890 RET 4900 LINE:MOV B,H 4910 MOV C,L 4920 MVI L,0 4930 SHLD Y 4940 MOV H,C 4950 SHLD X 4960 MOV A,D 4970 SUB B 4980 CALL FIX2 4990 SHLD DY 5000 MOV A,E 5010 SUB C 5020 CALL FIX2 5030 SHLD DX 5040 MVI B,0 5050 LNLP:LHLD DX 5060 XCHG 5070 LHLD X 5080 DAD D 5090 SHLD X 5100 MOV C,H 5110 LHLD DY 5120 XCHG 5130 LHLD Y 5140 DAD D 5150 SHLD Y 5160 MOV L,C 5170 CALL ON 5180 DCR B 5190 JNZ LNLP 5200 RET 5210 FIX2:MOV L,A 5220 MVI H,0 5230 RNC 5240 DCR H 5250 RET 5260 XYPOS:DS 2 5270 OLD:DS 2 5280 SAVE:DS 1 5290 XPOS:DS 2 5300 YPOS:DS 2 5310 X:DS 2 5320 Y:DS 2 5330 DX:DS 2 5340 DY:DS 2 5350 FLAG:DS 1 5360 P1:DS 2 5370 P2:DS 2 5380 OPOS:DS 2 5390 ADDR1:DS 2 5400 ADDR2:DS 2 5410 FCOL:DB 1 5420 NUM:DS 2 /5430 COLOR:DB 1,255,0,0,2,0,255,0,3,255,255,0 :5440 DB 4,0,0,255,5,255,0,255,6,0,255,255,7,255,255,255 5450 DB 8,0,0,0 5460 DB 80H,0,0,128 5470 DB 255,255,255,255 5480 DB 0 5490 WHICH:DB 1 5500 CTAB:EQU 981BH 5510 MEM1:DS 1000H 5520 MEM2:DS 1000H 55200516 4270 TEND: 4280 MEM1:DS 100 4290 MEM2:DS 100  5TAB:DS 150 5510 MEM1:DS 1000H 5520 MEM2:DS 1000H 55205ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ5ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒŠŒ‹ŒŒ‰Š‹ŒŽ‰ŽŠŽ‹ŽŒŽŠ‹ŒŠ?‹?Œ?‘ˆ?‘‰?‘Š‘‹‘Œ‘?‘Ž?’‡?’ˆ?’‰’Š’‹’Œ’’Ž?’?“†?“‡?“ˆ?“‰“Š“‹“Œ““Ž?“?“?”†?”‡?”ˆ”‰”Š”‹”Œ””Ž”?”?•†?•‡?•ˆ•‰•Š•‹•Œ••Ž•?•?–†?–‡?–ˆ–‰–Š–‹–Œ––Ž–?–?—…?—†?—‡?—‰—Š—‹—Œ——?—?—‘?˜…?˜†?˜‰˜Š˜‹˜Œ˜˜?˜‘?™„?™…?™†?™‰™Š™‹™Œ™™?™‘?™’?šƒ?š„?š…?šˆš‰šŠš‹šŒššŽš‘?š’?š“?›ƒ?›„?›ˆ›‰›Š›‹›Œ››Ž›’?›“?œˆœ‰œŠœ‹œŒœœŽ‡ˆ‰Š‹ŒŽž‡žˆž‰žŠžŒžžŽžŸ‡ŸˆŸ‰ŸŠŸŒŸŸŽŸ ‡ ˆ ‰ Š Œ  Ž ¡‡¡ˆ¡‰¡¡Ž¡¢†¢‡¢ˆ¢‰¢¢Ž¢¢£†£‡£ˆ£Ž££¤†¤‡¤ˆ¤Ž¤¤¥†¥‡¥ˆ¥Ž¥¥¦†¦‡¦¦§†§‡§§¨…¨†¨‡¨¨¨‘©„©…©†©‡©©©‘©’€€€óüóýóþôü?ôý?ôþôÿõû?õü?õý?õþ?õÿöü?öý?öþ?öÿ÷ý?÷þ?÷ÿ?øýøþ?øÿ?øùýùþ?ùÿ?ùúýúþ?úÿ?ú?úûýûþ?ûÿ?û?ûüýüþ?üÿ?ü?üýù?ýú?ýû?ýü?ýý?ýþ?ýÿ?ý?ýþù?þú?þû?þü?þý?þþ?þÿ?þ?þÿþÿÿÿÿþÿþÿýþÿýþÿüýþÿüýþÿûüýþÿûüýþÿþÿ ÿ          €€€óüóýóþôü?ôý?ôþôÿõû?õü?õý?õþ?õÿöü?öý?öþ?öÿ÷ý?÷þ?÷ÿ?øýøþ?øÿ?øùýùþ?ùÿ?ù?úýúþ?úÿ?ú?úûù?ûú?ûýûþ?ûÿ?û?ûüù?üú?üû?üü?üý?üþ?üÿ?ü?üýü?ýý?ýþ?ýÿ?ýýþþþÿþþÿþÿÿÿÿþÿüýþÿûüýþÿúûüýþÿùúûüýÿøùúûüÿøùúûüýÿûüýþþÿ ÿ     ÿ             €€€òüòýòþóü?óý?óþóÿôû?ôü?ôý?ôþ?ôÿõü?õý?õþ?õÿöý?öþ?öÿ?÷ý÷þ?÷ÿ?÷øýøþ?øÿ?øø?ùù?ùú?ùýùþ?ùÿ?ù?ùù?úù?úú?úû?úü?úýúþ?úÿ?ú?úú?ú?ûü?ûý?ûþ?ûÿ?û?ûû?û?üý?üþ?üÿ?üüü?ü?ýþýÿýýý?þþþÿþþþ?þ?ÿýÿþÿÿÿÿÿûüýþÿúûüýþÿùúûüýþÿøùúûüýþøùúûùúûüúûüûüüý ü ý þ    ü ý   ü ý  ü   €€€òüòýòþóü?óý?óþóÿôû?ôü?ôý?ôþ?ôÿõü?õý?õþ?õÿöý?öþ?öÿ?÷ý÷þ?÷ÿ?÷øý?øþ?øÿ?øùý?ùþ?ùÿ?ùùù?úø?úù?úý?úþ?úÿ?úúú?ú?ûø?ûù?ûú?ûû?ûü?ûý?ûþ?ûÿûûû?û?üü?üý?üþ?üÿüüü?ýþýÿýýý?þþþÿþþþ?ÿþÿÿÿÿÿüýþÿúûüýþÿùúûüýþÿøùúûüýþÿ÷øùúû÷øù÷øù÷øùøù ø ù   ø ù ø ù ÷ ø ù ö ÷ ø€€€ñüñýñþòü?òý?òþòÿóû?óü?óý?óþ?óÿôü?ôý?ôþ?ôÿõþ?õÿ?öýöþ?öÿ?ö?÷ý÷þ?÷ÿ?÷?øýøþ?øÿ?ø?øùýùþ?ùÿ?ù?ùù?úýúþ?úÿ?úúú?ú?ûü?ûý?ûþ?ûÿ?ûûû?üû?üü?üý?üþ?üÿüüýù?ýú?ýû?ýü?ýþýÿýýþù?þú?þþþÿþþþÿýÿþÿÿÿÿÿýþÿûüýþÿúûüýþÿúûüýùúûüøùúû øùú  øù  øù ÷ ø ù ÷ ø ÷ ø ö ÷ ô õ ö ÷€€€òüòýòþóü?óý?óþóÿôû?ôü?ôý?ôþ?ôÿõü?õý?õþ?õÿöý?öþ?öÿ?÷ý÷þ?÷ÿ?÷øýøþ?øÿ?ø?ùýùþ?ùÿ?ù?ùúýúþ?úÿ?ú?úú?ûýûþûÿ?û?ûû?û?üýüþüÿ?ü?üü?ü?ýþ?ýÿ?ý?ýý?þþ?þÿ?þþÿý?ÿþ?ÿÿÿÿÿü?ý?þÿü?ý?þÿüýþÿüýþÿ ûüýþÿ  úûüýÿ   úûüúûüùúû ù ú û ù ú û ù ú ù ú ø ù úö÷øùú€€€óüóýóþôü?ôý?ôþôÿõû?õü?õý?õþ?õÿöü?öý?öþ?öÿ÷ý?÷þ?÷ÿ?øýøþ?øÿ?øùýùþ?ùÿ?ù?úýúþ?úÿ?ú?úûýûþ?ûÿ?û?ûüýüþüÿ?ü?üýýýþýÿ?ý?ý?þþþÿþ?þ?ÿü?ÿý?ÿþÿÿÿ?ÿ?û?ü?þÿ?þÿ??þÿ??ýþÿýþÿüýþÿ üýþÿüýþÿýþÿ ý þ ÿ ý þ ÿ ý þ ÿ þ ÿ þ ÿýþÿûüýþÿ€€€óüóýóþôü?ôý?ôþôÿõû?õü?õý?õþ?õÿöü?öý?öþ?öÿ÷ý?÷þ?÷ÿ?øýøþ?øÿ?ø?ø?ùýùþ?ùÿ?ù?ù?ù?úýúþúÿú?ú?ú?ûýûþûÿûû?û?û?üýüþüÿüüü?ü?ýø?ýù?ýú?ýû?ýü?ýý?ýþýÿýýý?ý?þø?þù?þú?þû?þü?þý?þþþÿþþþ?þ?ÿþÿÿÿÿÿ?ÿ?þÿ??þÿ??ýþÿýþÿüýþÿüýþÿûüýþÿûüýþÿþÿ ÿ          €€€óüóýóþôü?ôý?ôþôÿõû?õü?õý?õþ?õÿöü?öý?öþ?öÿ÷ý?÷þ?÷ÿ?øýøþ?øÿ?ø?ø?ùýùþ?ùÿ?ù?ù?ù?úýúþúÿ?ú?ú?ú?ú?û÷?ûø?ûýûþûÿûûû?û?û?ü÷?üø?üù?üú?üû?üü?üýüþüÿüüü?ü?ýù?ýú?ýû?ýü?ýýýþýÿýýý?ý?þþþÿþþþ?þ?ÿþÿÿÿÿÿ?ÿ?þÿ??üýþÿûüýþÿúûüýþÿùúûüýÿøùúûüÿøùúûüýÿûüýþþÿ ÿ     ÿ             €€€òüòýòþóü?óý?óþóÿôû?ôü?ôý?ôþ?ôÿõü?õý?õþ?õÿöý?öþ?öÿ?÷ý÷þ?÷ÿ?÷?÷?øø?øù?øýøþ?øÿ?ø?ø?ø?ø?ùø?ùù?ùú?ùýùþùÿ?ù?ù?ù?ù?ù?úù?úú?úû?úýúþúÿúúú?ú?ûú?ûû?ûü?ûýûþûÿûûû?û?üü?üýüþüÿüüü?ü?ýþýÿýýý?ý?þþþÿþþþ?þ?ÿýÿþÿÿÿÿÿûüýþÿúûüýþÿùúûüýþÿøùúûüýþøùúûùúûüúûüûüüý ü ý þ    ü ý   ü ý  ü   €€€òüòýòþóü?óý?óþóÿôû?ôü?ôý?ôþ?ôÿõü?õý?õþ?õÿöý?öþ?öÿ?÷ý÷þ?÷ÿ?÷?øýøþ?øÿ?ø?ø?ùýùþ?ùÿ?ù?ù?ù?úø?úù?úýúþúÿú?ú?ú?ú?ûø?ûù?ûú?ûû?ûü?ûýûþûÿûû?û?û?üü?üýüþüÿüü?ü?ýþýÿýý?ý?þþþÿþ?þ?þ?ÿþÿÿÿ?ÿ?ÿüýþÿúûüýþÿùúûüýþÿøùúûüýþÿ÷øùúû÷øù÷øù÷øùøù ø ù   ø ù ø ù ÷ ø ù ö ÷ ø€€€ñüñýñþòü?òý?òþòÿóû?óü?óý?óþ?óÿôü?ôý?ôþ?ôÿõý?õþ?õÿ?öýöþ?öÿ?ö÷ý?÷þ?÷ÿ?÷?øý?øþ?øÿ?ø?ø?ùýùþ?ùÿ?ù?ù?ù?úýúþúÿúú?ú?ú?ûû?ûü?ûýûþûÿû?û?û?üù?üú?üû?üü?üý?üþüÿü?ü?ýù?ýú?ýþýÿ?ý?ý?þþ?þÿ?þ?þþÿýÿþ?ÿÿ?ÿÿÿýþÿûüýþÿúûüýþÿúûüýùúûüøùúû øùú  øù  øù ÷ ø ù ÷ ø ÷ ø ö ÷ ô õ ö ÷€€€òüòýòþóü?óý?óþóÿôû?ôü?ôý?ôþ?ôÿõü?õý?õþ?õÿöý?öþ?öÿ?÷ý÷þ?÷ÿ?÷øýøþ?øÿ?ø?ùýùþ?ùÿ?ù?ù?úýúþúÿ?ú?ú?ú?ûýûþûÿû?û?û?û?üýüþüÿüü?ü?ü?ýþýÿý?ý?ý?þþ?þÿ?þ?þ?ÿü?ÿý?ÿþ?ÿÿ?ÿ?ÿÿü?ý?þÿüýþÿüýþÿüýþÿ ûüýþÿ  úûüýÿ   úûüúûüùúû ù ú û ù ú û ù ú ù ú ø ù úö÷øùú€€€óüóýóþôü?ôý?ôþôÿõû?õü?õý?õþ?õÿöü?öý?öþ?öÿ÷ý?÷þ?÷ÿ?øýøþ?øÿ?øùýùþ?ùÿ?ù?úýúþ?úÿ?ú?ú?ûýûþûÿ?û?û?üýüþüÿ?ü?ü?ü?ýýýþýÿý?ý?ý?þþ?þÿ?þ?þ?ÿû?ÿü?ÿý?ÿþ?ÿÿ?ÿ?ÿû?ü?þÿþÿþÿýþÿýþÿüýþÿ üýþÿüýþÿýþÿ ý þ ÿ ý þ ÿ ý þ ÿ þ ÿ þ ÿýþÿûüýþÿ€€€ù÷ùøùùùûùüùýúöú÷?úø?úù?úúúûúüúýúþúÿû÷?ûø?ûù?ûú?ûû?ûüûýûþûÿûûü÷?üø?üù?üú?üûüüüýüþüÿüüüý÷?ýø?ýù?ýþýÿýýýýþö?þ÷?þø?þþþþþÿõ?ÿö?ÿ÷?ÿÿÿÿõ?ö?ô?õ?ô?õ?               €€€öüöýöþöÿööööö÷ø÷ù÷ú?÷û?÷ü?÷ý?÷þ?÷ÿ÷÷÷÷÷÷÷ø÷øøøù?øú?øû?øü?øý?øþ?øÿøøøøøøøøù÷ùø?ùù?ùú?ùü?ùý?ùþ?ùùùùùúù?úü?úý?úþ?úúúúúûý?ûþ?ûûûûûüý?üþ?üüüüýý?ýþ?ýÿ?ýýýýþþ?þÿ?þþþþÿþ?ÿÿ?ÿÿÿÿþ?ÿ?þ?ÿ?þ?   €€€ïïïïðþðÿðððððñüñýñþñÿññññññòûòüòýòþòÿòòòòòòóúóûóüóýóþóÿóóóóóôúôûôüôýôþôÿôôôôõùõúõûõüõýõþõõõõöøöù?öúöû?öü?öý?öööö÷ø÷ù?÷ú?÷û?÷ü?÷ý?÷þ?÷÷÷÷øøøù?øú?øû?øü?øý?øþ?øÿ?ø?øøøøùùùúùÿ?ù?ù?ù?ù?ù?ùú?ú?ú?ú?ú?ú?ûû?û?üüüýýýþþþ ÿÿ  €€€îýîþîÿîîïûïüïýïþïÿïïïðúðûðüðýðþðÿðððñùñúñûñüñýñþñÿññññòùòúòûòüòýòòòòóùóúóûóüóýóóóóôøôùôú?ôû?ôü?ôý?ôþ?ôÿ?ô?ô?ô?ô?ô?ô?ô ô õøõù?õú?õû?õü?õý?õþ?õÿ?õ?õ?õ?õ?õ?õ?õõõ õ õ õ õ õöø?öù?öú?öû?ööööööööö ö öö÷ø÷ù?÷ú?÷û?÷ü?÷÷÷÷÷÷øøøùøú?øû?ùùùúùû€€€ë ë ë ìþìÿìììì ì íýíþíÿííííí îüîýîþîÿîîîîîïûïüïýïþïÿïïïïïïðûðüðýðþðÿðððððððñûñüñýñþñÿññ?ñ?ñ?ñ?ñ?ñ?ñ?ñ?òûòüòýòþòÿ?ò?ò?ò?ò?ò?ò?ò?ò?óûóüóý?óþ?óÿ?ó?ó?óóóóóôûôüôý?ôþ?ôÿ?ô?ôôôôôõüõý?õþ?õÿ?õõõõõöý?öþ?öÿ?ööö÷ý÷þ?÷ÿ?÷?øýøþøÿ?ø?ùþùÿù€€€çèééêêêëëëìììíþíÿííííí?í?îýîþîÿîîîîî?î?î?ïýïþïÿïïïïïï?ï?ï?ïï ðüðýðþðÿððððð?ð?ð?ððð ñüñýñþñÿñññ?ñ?ñ?ñ?ññññ òüòýòþòÿòò?ò?ò?ò?òòòòóýóþóÿó?ó?ó?ó?ôýôþôÿô?ô?ô?ôô?õþõÿõõõ?õ?õ?õ?öö?ö?ö?ö÷÷÷€€€æüçüçýçþèýèþèÿèéþéÿééé?é?êêê?ê?êëë?ë?ëëì?ì?ìììíýíþíÿííí?í?íííîüîýîþîÿîîî?î?îîïüïýïþïÿïïï?ï?ðüðýðþðÿððð?ð?ð?ð?ñüñýñþñÿñññ?ñ?ñ?ñ?ñ?ñ?ñ òüòýòþòÿòòò?ò?ò?ò?ò?ò?ò?ò óýóþóÿóóóóóóóóôÿôôôô€€€éöêöê?ê?ëöë÷ëøëùëúëûëüëýëþëÿë?ë?ìöì÷ìøìùìúìûìüìýìþìÿìì?ì?íúíûíüíýíþíÿíí?í?îþîÿîîî?î?ïýïþïÿïï?ï?ï?ï ?ðüðýðþðÿð?ð?ð?ð ?ð ?ð ñüñýñþñÿñ?ñ?ñ?ñ?ñ?ñ?ñ ?ñ ñ òüòýòþòÿòòòòò?ò?ò?ò?ò?ò ò óüóýóþóÿóóóóó?ó?ó?óôýôþôÿôôôôôôôõþõÿõõõõ€€€êû?êü?ëü?ëý?ìý?ìþ?íý?íþ?íÿ?îõîöî÷îøîþ?îÿ?î?î?î?îïôïõïöï÷ïøïùïÿ?ï?ï?ï?ï?ï?ïï ðóðôðõðöð÷ðøðùðúð?ð?ð?ð?ð?ð?ð?ð ñòñóñôñõñøñùñúñûñ?ñ?ñ?ññ?ñ?ñòìòíòðòñòòòóòùòúòûòüòò?ò?ò?òòóíóîóïóðóñóòóùóúóûóüóýóóóó?ó?óôîôïôðôúôûôüôýôþôÿôôôôôõïõúõûõüõýõþõÿõõõõöûöüöýöþöÿöö÷ü÷ý÷þ÷ÿ€€€éþ?éÿ?êÿ?ê?êêê ë?ë?ë?ë?ë?ë ë ì?ì?ì?ì?ì?ì?ì ?ì í?í?í?í?í?í ?í î?î?î?î?î?î?î ?ï?ï?ï?ï?ïï ð?ð?ð?ð?ð ññ?ñ?ñ?ñ òòòòò óóóóôôôôõúõûõüõýõþõÿõõõõõõõõöùöúöûöüöýöþöÿööööööö÷ù÷ú÷û÷ü÷ý÷þ÷ÿ÷÷÷÷÷øøøùøúøûù÷ùøùùùúúöú÷úøûõûöû÷üôüõüöýòýóýôýõýö€€€íü?íý?îý?îþ?ïþ?ïÿ?ï?ïïïðÿ?ð?ð?ð?ð?ððñ?ñ?ñ?ñ?ñ?ñ?ñ?ñò?ò?ò?ò?ò?ò?òó?ó?ó?ó?óóô?ô?ô?ô?ôõõ?õ?õ?õööööö÷÷÷÷øøøøùùùùúúúúûûûûûüüüüüüýÿýýýýýþþþÿþþþþÿýÿþÿÿÿÿÿýþÿýþÿüýþÿüýþÿüýþÿüýÿüýüýüý û ü ý   ú û   ÿ €€€òòòó?ó?óóô?ô?ô?ô?ôõ?õ?õ?õö?ö?ö?÷÷?÷?÷øø?ø?ø?øù?ù?ù?ù?ùúþ?úÿ?ú?ú?úúúûû?ûü?ûý?ûþ?ûÿ?ûûûûûüø?üù?üú?üû?üü?üý?üüüüüýø?ýù?ýú?ýýýýþþþþÿÿÿÿ                 ÿýþÿ€€€ôûôüôýõû?õü?õýõþöú?öû?öü?öý?öþ÷û?÷ü?÷ý?÷þøü?øý?øþ?ùüùý?ùþ?ùÿúüúý?úþ?úÿ?ûüûý?ûþ?ûÿ?û?üüüýüþ?üÿ?ü?ýýýþ?ýÿ?ý?þý?þþ?þÿ?þ?ÿü?ÿý?ÿþ?ÿÿ?ÿÿû?ü?ý?þÿù?ú?û?ü?þÿù?ú?ýþÿüýþÿûüýþÿúûüýþÿúûüýþÿùúûüþÿùúûüþÿ ú û ü ý ÿ   û ü ý   û ü ý    ü ý þ    ý þ ÿ  ýþÿûüýþ€€€òþòÿòóýóþóÿóóôýôþôÿôôõþõÿõöþ?öÿ?ö?÷ü?÷ý?÷þ÷ÿ÷÷?÷?øû?øü?øýøþøÿøøø?ø?ùú?ùû?ùü?ùýùþùÿùùù?ù?ù?úú?úû?úüúýúþúÿúúúú?ú?ûú?ûû?ûüûýûþûÿûûûû?û?üú?üû?üüüýüþüÿüüüü?ü?ýù?ýú?ýû?ýýýþýÿýýý?ý?ý?þù?þú?þýþþþÿþþþ?þ?ÿø?ÿù?ÿú?ÿýÿþÿÿÿÿÿ?ÿ?ÿ?÷?ø?ù?üýþÿ???÷?ø?üýþÿ??üýþÿûüýþÿûüýþûüýþûüýþûüýúûüý ú û ü    ú û ü    ú û ü    ú û   ú û  ùúûøùúû€€€????????????????????????????€€€%%%%%%%%%%%%"""""""""""""""""%%%%%%%%%""""""""""""""%%%%%%%""""""""""""%%%%%%"""""""""%%%%%"""""""%%%%%"""""%%%%"""%%%%""%%%"%%%%%%% % %                                                                                                                     !  !!  !!  !!   !!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!! !!!!! !!!!! !!!!!! !!!!!! !!!!!!! !!!!!!!!  !!!!!!!!!  !!!!!!!!!!!  !!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!                          €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€                                               €         0010 CALL CLEAR 0020 BACK: 0030 LXI B,60H 0040 MOV D,B 0050 FLPY:MOV A,D 0060 OUT 34 0070 MOV E,B 0080 FLPX:MOV A,E 0090 OUT 33 0100 MVI A,255 0110 OUT 32 0120 INR E 0130 MOV A,E 0140 CMP C 0150 JNZ FLPX 0160 INR D 0170 MOV A,D 0180 CMP C 0190 JNZ FLPY 0200 LXI B,16 0210 CUTLP:CALL PUT0 0220 CALL PUT90 0230 MOV A,C 0240 ADI 16 0250 MOV C,A 0260 CPI 96 0270 JNZ CUTLP 0280 MVI C,16 0290 MOV A,B 0300 ADI 16 0310 MOV B,A 0320 CPI 96 0330 JNZ CUTLP 0340 LXI H,8000H 0350 SHLD XYPNT 0360 MVI H,8 0370 MVI D,6 0380 MVLPY:MVI L,8 0390 MVI E,6 0400 MVLPX: 0410 CALL MOVE 0420 MOV A,L 0430 ADI 16 0440 MOV L,A 0450 DCR E 0460 JNZ MVLPX 0470 MOV A,H 0480 ADI 16 0490 MOV H,A 0500 DCR D 0510 JNZ MVLPY 0520 RET 0530 PUT0:CALL GET 0540 SHLD END 0550 XCHG 0560 P0LP:MOV A,M 0570 ADI 16 0580 ADD B 0590 MOV D,A 0600 INX H 0610 LDA FLAG 0620 ORA A 0630 MOV A,M 0640 CNZ NEGA 0650 ADD C 0660 MOV E,A 0670 INX H 0680 XCHG 0690 XRA A 0700 CALL DOT 0710 LHLD END 0720 XCHG 0730 MOV A,E 0740 CMP L 0750 JNZ P0LP 0760 MOV A,D 0770 CMP H 0780 JNZ P0LP 0790 RET 0800 PUT90:CALL GET 0810 SHLD END 0820 XCHG 0830 P90LP:MOV A,M 0840 ADI 16 0850 ADD B 0860 MOV E,A 0870 INX H 0880 LDA FLAG 0890 ORA A 0900 MOV A,M 0910 CNZ NEGA 0920 ADD C 0930 MOV D,A 0940 INX H 0950 XCHG 0960 XRA A 0970 CALL DOT 0980 LHLD END 0990 XCHG 1000 MOV A,L 1010 CMP E 1020 JNZ P90LP 1030 MOV A,H 1040 CMP D 1050 JNZ P90LP 1060 RET 1070 NEGA:CMA 1080 INR A 1090 RET 1100 GET:CALL RND 1110 ANI 30 1120 MOV E,A 1130 MVI D,0 1140 LXI H,9F00H 1150 DAD D 1160 MOV E,M 1170 INX H 1180 MOV D,M 1190 INX H 1200 MOV A,M 1210 INX H 1220 MOV H,M 1230 MOV L,A 1240 CALL RND 1250 ANI 1 1260 STA FLAG 1270 RET 1280 CLEAR:LXI H,0 1290 CLPY:MOV A,H 1300 OUT 34 1310 CLPX:MOV A,L 1320 OUT 33 1330 XRA A 1340 OUT 32 1350 INR L 1360 JNZ CLPX 1370 INR H 1380 JNZ CLPY 1390 RET 1400 DOT:PUSH PSW 1410 MOV A,H 1420 OUT 33 1430 MOV A,L 1440 OUT 34 1450 POP PSW 1460 OUT 32 1470 RET 1480 RND:PUSH B 1490 PUSH H 1500 LXI H,SH+3 1510 MVI B,8 1520 MOV A,M 1530 RTOP:RLC 1540 RLC 1550 RLC 1560 XRA M 1570 RAL 1580 RAL 1590 DCX H 1600 DCX H 1610 DCX H 1620 MOV A,M 1630 RAL 1640 MOV M,A 1650 INX H 1660 MOV A,M 1670 RAL 1680 MOV M,A 1690 INX H 1700 MOV A,M 1710 RAL 1720 MOV M,A 1730 INX H 1740 MOV A,M 1750 RAL 1760 MOV M,A 1770 DCR B 1780 JNZ RTOP 1790 POP H 1800 POP B 1810 RET 1820 SH:DB 1,2,3,4 1830 END:DS 2 1840 FLAG:DS 1 1850 MOVE:PUSH H 1860 PUSH D 1870 SHLD MEM1 1880 SHLD P0 1890 LXI H,1 1900 SHLD NUM 1910 FILLP:LXI D,MEM1 1920 LXI H,MEM2 1930 CALL FILL2 1940 LXI D,MEM2 1950 LXI H,MEM1 1960 CALL FILL2 1970 JMP FILLP 1980 FILL2:SHLD ADDR2 1990 XCHG 2000 SHLD ADDR1 2010 LHLD NUM 2020 MOV B,H 2030 MOV C,L 2040 LXI H,0 2050 SHLD NUM 2060 FLP:LHLD ADDR1 2070 MOV E,M 2080 INX H 2090 MOV D,M 2100 INX H 2110 SHLD ADDR1 2120 DCR D 2130 CALL FDOT 2140 INR D 2150 INR E 2160 CALL FDOT 2170 INR D 2180 DCR E 2190 CALL FDOT 2200 DCR D 2210 DCR E 2220 CALL FDOT 2230 DCX B 2240 MOV A,B 2250 ORA C 2260 JNZ FLP 2270 LHLD NUM 2280 MOV A,H 2290 ORA L 2300 RNZ 2310 POP H 2320 POP D 2330 POP H 2332 MVI A,1 2333 OUT 41 2340 RET 2350 FDOT:MOV A,D 2360 OUT 33 2370 MOV A,E 2380 OUT 34 2390 IN 32 2400 INR A 2410 RNZ 2420 OUT 32 2430 LHLD ADDR2 2440 MOV M,E 2450 INX H 2460 MOV M,D 2470 INX H 2480 SHLD ADDR2 2490 LHLD NUM 2500 INX H 2510 SHLD NUM 2520 LHLD P0 2525 PUSH D 2530 MOV A,D 2540 SUB H 2550 MOV D,A 2560 MOV A,E 2570 SUB L 2580 MOV E,A 2610 LHLD XYPNT 2620 MOV A,H 2630 OUT 43 2640 MOV A,L 2650 OUT 42 2660 MOV A,D 2661 OUT 39 2662 MOV A,E 2663 OUT 40 2664 MVI A,3 2665 OUT 41 2666 INX H 2667 SHLD XYPNT 2668 POP D 2669 RET 2670 ADDR1:DS 2 2680 ADDR2:DS 2 2685 XYPNT:DS 2 2686 P0:DS 2 2690 NUM:DS 2 2700 MEM1:DS 100 2710 MEM2:DS 100 2710 ADI XPOS 0180 ADD A 0190 ADD A 0200 ADD A 0210 MOV E,A 0220 INX B 0230 LDAX B 0240 ADI YPOS 0250 ADD A 0260 ADD A 0270 ADD A 0280 MOV D,A 0290 INX B 0300 PUSH B 0310 PUSH H 0320 MOV C,E 0330 MVI H,8 0340 BLY:MOV E,C 0350 Bâüm@zÉIÒ<˜ N(OVŠc8˜Ôø¥# ’<‚#3q1Þ1H`Iœ{`KB* À[N,1v¼.Ƙ¾¾§6„%°.ÌS ƒÉ²Q(ä2`d‰H #ÇÀåÆD•ž˜Î@UShÕ7F ö‚¤a¢c5 €†!Š €èЀ"¶‹‘,(Q¡‘& šØ)61Z’@ġЉS r@Ò‚¦Â"˜‘Åe(;¹I ™‘€,hÑ,1Ð'À©‚LI²²'9Ø5¬a)C”"R É”¤]†ÖÌÖ`eñ -(€6sE(g @€FÄ cBQˆ0È¥#SV#ŒZi(ä°…„ªJ”R˜ ALÖ ¨Iˆˆón :ÍÔ™!R2B Z”(KÁ*[ ¸)HÔ†,Œ†ÙˆÓq"j"E#½h¶‘T„( Sd$âÐA ’(hb¥ˆdk™c$9B‚ ¥h` PXPÊ@Á€€îX†lÂU&0"$&À`Ìt Y€%G( ¤)–«28B%)2¤e-”bhI!H W `Á@hlƒE4IQih*¬îdb‘&‚ ¢Ì¤q"Ø´`ŠˆrÃŒ¢nQ°ÐÈ ²ë9)Hæ2a ‹«1,Òa%¦(i "D>t°4ˆ:ˆtˆ¬ˆÞˆ‰N‰Œ‰È‰ŠHŠ„ŠÀŠúŠ0‹v‹´‹H¤ˆ¤„¤Â¤ ¥R¥ÿþýü€€ûÿúÿùÿ€€øø€€ùù€€ø÷€€ö€€õõ€€ôóòñðÿþ€€ýÿüÿûÿ€€úúú€€ù€€ø÷€€ö€€õõõ€€ôÿóÿ€€òñðÿþ€€ýÿüÿûÿ€€úú€€ûú€€ùø€€÷€€öö€€õôóòñðÿþýüÿûÿ€€úú€€ùù€€ø÷öö€€õ€€ôóòñðÿþ€€ýÿüÿûÿ€€ú€€ûû€€ú€€ùø€€÷€€öö€€õôóòñðÿþ€€ýÿüÿûÿ€€úúú€€ù€€ø÷€€ööö€€õôóòñðÿþý€€üÿûÿúÿ€€ùù€€úúú€€ùø÷€€ö€€õõõ€€ôóòñðÿþ€€ýÿüÿ€€ûûû€€ú€€ùø÷€€ö€€÷÷€€öÿõÿôÿ€€óòñðÿþý€€üÿ€€ûþúþ€€ùÿù€€úú€€ùø÷ö€€õ€€ö€€õôóòñðÿþ€€ýÿüÿûÿ€€úú€€ûû€€ú€€ùø€€÷€€ööö€€õ€€ôÿóÿòÿ€€ñðÿþýüÿûÿ€€ú€€ûû€€úùø÷ö€€õ€€öö€€õÿôÿóÿ€€òñðÿþý€€üÿûÿúÿ€€ù€€úúú€€ùø÷€€ööö€€õ€€ôÿóÿòñðÿþ€€ýÿüÿûÿ€€úúúúú€€ùø€€÷€€ööö€€õôóòñðÿþ€€ýÿüÿ€€ûûûû€€úù€€ø÷öö€€õôóÿ€€òñð€€€€€€€€ÿþ€€ýÿüÿûÿ€€úú€€ûû€€úùø÷ö€€õõ€€ööõÿ€€ôóòñðÿþ€€ýÿüÿ€€ûû€€úúùø€€÷€€ööö€€õÿôÿóÿòÿ€€ñ€€€€€€ðÿñðÿþýýÿüÿûÿúÿùÿùøùùúúúúúùø÷÷öööööõõÿôÿóÿòÿòñðÿþýýÿüÿûÿúÿúùùúûûûûúúùøø÷ööõõööõÿôÿóÿòÿòñðÿþýýÿüÿûÿúÿúúûûúúùø÷ööõõõõöõõÿôÿôóòñðõõôóòñðÿþýüüûúùùø÷÷öõôôóòñðø÷÷÷÷÷ÿöÿõÿôóòñðÿþýüÿûÿûûûûúúùø÷ööõõö÷÷øø÷ÿöÿöõôóòñðÿþýüûûúúùùøø÷÷÷ööÿõÿôÿóÿóòñð0010 CALL CLEAR 0020 LXI B,80H 0030 MOV D,B 0040 FLPY:MOV A,D 0050 OUT 34 0060 MOV E,B 0070 FLPX:MOV A,E 0080 OUT 33 0090 MVI A,255 0100 OUT 32 0110 INR E 0120 MOV A,E 0130 CMP C 0140 JNZ FLPX 0150 INR D 0160 MOV A,D 0170 CMP C 0180 JNZ FLPY 0190 LXI B,16 0200 CUTLP:CALL PUT0 0210 CALL PUT90 0220 MOV A,C 0230 ADI 16 0240 MOV C,A 0250 CPI 128 0260 JNZ CUTLP 0270 MVI C,16 0280 MOV A,B 0290 ADI 16 0300 MOV B,A 0310 CPI 128 0320 JNZ CUTLP 0330 MVI H,8 0340 MVI D,8 0350 MVLPY:MVI L,8 0360 MVI E,8 0370 MVLPX:CALL MOVE 0380 MOV A,L 0390 ADI 16 0400 MOV L,A 0410 DCR E 0420 JNZ MVLPX 0430 MOV A,H 0440 ADI 16 0450 MOV H,A 0460 DCR D 0470 JNZ MVLPY 0480 RET 0490 PUT0:CALL GET 0500 SHLD END 0510 XCHG 0520 P0LP:MOV A,M 0530 ADI 16 0540 ADD B 0550 MOV D,A 0560 INX H 0570 LDA FLAG 0580 ORA A 0590 MOV A,M 0600 CNZ NEGA 0610 ADD C 0620 MOV E,A 0630 INX H 0640 XCHG 0650 XRA A 0660 CALL DOT 0670 LHLD END 0680 XCHG 0690 MOV A,E 0700 CMP L 0710 JNZ P0LP 0720 MOV A,D 0730 CMP H 0740 JNZ P0LP 0750 RET 0760 PUT90:CALL GET 0770 SHLD END 0780 XCHG 0790 P90LP:MOV A,M 0800 ADI 16 0810 ADD B 0820 MOV E,A 0830 INX H 0840 LDA FLAG 0850 ORA A 0860 MOV A,M 0870 CNZ NEGA 0880 ADD C 0890 MOV D,A 0900 INX H 0910 XCHG 0920 XRA A 0930 CALL DOT 0940 LHLD END 0950 XCHG 0960 MOV A,L 0970 CMP E 0980 JNZ P90LP 0990 MOV A,H 1000 CMP D 1010 JNZ P90LP 1020 RET 1030 NEGA:CMA 1040 INR A 1050 RET 1060 GET:CALL RND 1070 ANI 30 1080 MOV E,A 1090 MVI D,0 1100 LXI H,9F00H 1110 DAD D 1120 MOV E,M 1130 INX H 1140 MOV D,M 1150 INX H 1160 MOV A,M 1170 INX H 1180 MOV H,M 1190 MOV L,A 1200 CALL RND 1210 ANI 1 1220 STA FLAG 1230 RET 1240 CLEAR:LXI H,0 1250 CLPY:MOV A,H 1260 OUT 34 1270 CLPX:MOV A,L 1280 OUT 33 1290 XRA A 1300 OUT 32 1310 INR L 1320 JNZ CLPX 1330 INR H 1340 JNZ CLPY 1350 RET 1360 DOT:PUSH PSW 1370 MOV A,H 1380 OUT 33 1390 MOV A,L 1400 OUT 34 1410 POP PSW 1420 OUT 32 1430 RET 1440 RND:PUSH B 1450 PUSH H 1460 LXI H,SH+3 1470 MVI B,8 1480 MOV A,M 1490 RTOP:RLC 1500 RLC 1510 RLC 1520 XRA M 1530 RAL 1540 RAL 1550 DCX H 1560 DCX H 1570 DCX H 1580 MOV A,M 1590 RAL 1600 MOV M,A 1610 INX H 1620 MOV A,M 1630 RAL 1640 MOV M,A 1650 INX H 1660 MOV A,M 1670 RAL 1680 MOV M,A 1690 INX H 1700 MOV A,M 1710 RAL 1720 MOV M,A 1730 DCR B 1740 JNZ RTOP 1750 POP H 1760 POP B 1770 RET 1780 SH:DB 1,2,3,4 1790 END:DS 2 1800 FLAG:DS 1 6120 MOVE:PUSH H 6122 PUSH D 6130 SHLD MEM1 6200 LXI H,1 6210 SHLD NUM 6220 FILLP:LXI D,MEM1 6230 LXI H,MEM2 6240 CALL FILL2 6250 LXI D,MEM2 6260 LXI H,MEM1 6270 CALL FILL2 6280 JMP FILLP 6290 FILL2:SHLD ADDR2 6300 XCHG 6310 SHLD ADDR1 6320 LHLD NUM 6330 MOV B,H 6340 MOV C,L 6350 LXI H,0 6360 SHLD NUM 6370 FLP:LHLD ADDR1 6380 MOV E,M 6390 INX H 6400 MOV D,M 6410 INX H 6420 SHLD ADDR1 6430 DCR D 6440 CALL FDOT 6450 INR D 6460 INR E 6470 CALL FDOT 6480 INR D 6490 DCR E 6500 CALL FDOT 6510 DCR D 6520 DCR E 6530 CALL FDOT 6540 DCX B 6550 MOV A,B 6560 ORA C 6570 JNZ FLP 6580 LHLD NUM 6590 MOV A,H 6600 ORA L 6610 RNZ 6620 POP H 6622 POP D 6623 POP H 6630 RET 6640 FDOT:MOV A,D 6650 OUT 33 6660 MOV A,E 6670 OUT 34 6680 IN 32 6690 INR A 6720 RNZ 6740 OUT 32 6750 LHLD ADDR2 6760 MOV M,E 6770 INX H 6780 MOV M,D 6790 INX H 6800 SHLD ADDR2 6810 LHLD NUM 6820 INX H 6830 SHLD NUM 6840 RET 6890 ADDR1:DS 2 6891 ADDR2:DS 2 6892 NUM:DS 2 6900 MEM1:DS 100 6901 MEM2:DS 100 69016900 SHLD X 6910 MOV A,D 6920 SUB B 6930 CALL FIX2 6940 SHLD DY 6950 MOV A,E 6960 SUB C 6970 CALL FIX2 6980 SHLD DX 6990 MVI B,0 7000 LNLP:LHLD DX 7010 XCHG 7020 LHLD X 7030 DAD D 7040 SHLD X 7050 MOV C,H 7060 LHLD DY 7070 ¹±v‡k„E€¦`Ì`02[¨X0S.%"ªXˆxAHBÀD8¨•DŠ!UP jXÆ%%QTë1F( @™£¤…È0âä•1$!•%‹„P°€E%V‘.*+0ƒÀ‘MJ!‹Hi )¼ Ž "m Ðpa€!Ø„"±œÂ`X… Ð( ±%ˆ DS‚nTrHv‚Y°‚„JšÊFò´”PB@PÊ$†Z‚Œ“,h@6UR à5 ¨@ª("–pˆì@¢„vI*œa. BbØÐLZdh—6„±B!R 2aP¨ 21P]P€C,G2˜J PŠ-ÆÅæ"&L5K< =‘Ô 1‹ BÉ16¬|.a ÐH²¥‰[% ˆ€‘()*é•F 5ˆV+`ƒÉbl( $›n eˆë V—€[¨V+f Œv£UddT,!|Q N‘ÈS  %t#¥ŠP1`*€ŠŒD2z; ‹ ðQ˜˜ˆÂríSlye¢Q †KHX°ÅP×ÀPdŠЙ,H¿J@¢¬™DÆ)T"”Æd@F’Kàˆ²Ĉ- eBâüm@zÉIÒ<˜ N(OVŠc8˜Ôø¥# ’<‚#3q1Þ1H`Iœ{`KB* À[N,1v¼.Ƙ¾¾§6„%°.ÌS ƒÉ²Q(ä2`d‰H #ÇÀåÆD•ž˜Î@UShÕ7F ö‚¤a¢c5 €†!Š €èЀ"¶‹‘,(Q¡‘& šØ)61Z’@ġЉS r@Ò‚¦Â"˜‘Åe(;¹I ™‘€,hÑ,1Ð'À©‚LI²²'9Ø5¬a)C”"R É”¤]†ÖÌÖ`eñ -(€6sE(g @€FÄ cBQˆ0È¥#SV#ŒZi(ä°…„ªJ”R˜ ALÖ ¨Iˆˆón :ÍÔ™!R2B Z”(KÁ*[ ¸)HÔ†,Œ†ÙˆÓq"j"E#½h¶‘T„( Sd$âÐA ’(hb¥ˆdk™c$9B‚ ¥h` PXPÊ@Á€€îX†lÂU&0"$&À`Ìt Y€%G( ¤)–«28B%)2¤e-”bhI!H W `Á@hlƒE4IQih*¬îdb‘&‚ ¢Ì¤q"Ø´`ŠˆrÃŒ¢nQ°ÐÈ ²ë9)Hæ2a ‹«1,Òa%¦(i "D>t°40010 CALL CLEAR 0011 LXI H,1010H 0012 CALL DOT 0013 MVI L,0 0014 CALL DOT 0021 LXI H,BADS 0022 BDLP:MOV D,M 0023 INX H 0024 MOV E,M 0025 INX H 0026 XCHG 0027 CALL DOT 0028 XCHG 0029 MOV A,M 0030 ORA A 0031 JNZ BDLP 0150 LXI H,1010H 0200 SHLD POS 0250 MLOOP:LHLD POS 0400 CALL DOT 0450 XRA A 0500 CALL 110H 0512 PUSH PSW 0513 CALL DOT 0514 POP PSW 0550 CPI 3 0600 RZ 0650 CPI 'P' 0700 CZ PUT 0750 CPI '1' 0800 CZ UP 0850 CPI '2' 0900 CZ DOWN 0950 CPI '3' 1000 CZ LEFT 1050 CPI '4' 1100 CZ RIGHT 1150 SHLD POS 1300 JMP MLOOP 1350 UP:DCR H 1400 RET 1450 DOWN:INR H 1500 RET 1550 LEFT:INR L 1600 RET 1650 RIGHT:DCR L 1700 RET 1750 PUT:PUSH PSW 1850 CALL BIG 1900 POP PSW 1950 RET 2004 DOT: 2050 MOV A,H 2100 ADD A 2150 ADD A 2200 ADD A 2250 ADI 4 2300 OUT 33 2350 MOV A,L 2400 ADD A 2450 ADD A 2500 ADD A 2550 ADI 4 2600 OUT 34 2650 IN 32 2700 CMA 2750 OUT 32 2800 RET 2816 BIG: 2850 PUSH B 2900 PUSH D 2950 PUSH H 3000 MOV B,A 3050 MOV A,H 3100 ADD A 3150 ADD A 3200 ADD A 3250 MOV D,A 3300 MOV A,L 3350 ADD A 3400 ADD A 3450 ADD A 3500 MOV E,A 3550 MOV C,A 3600 MVI H,8 3650 BGLPY:MVI L,8 3700 MOV E,C 3750 MOV A,D 3800 OUT 33 3850 BGLPX:MOV A,E 3900 OUT 34 3950 IN 32 3951 CMA 4000 OUT 32 4050 INR E 4100 DCR L 4150 JNZ BGLPX 4200 INR D 4250 DCR H 4300 JNZ BGLPY 4350 POP H 4400 POP D 4450 POP B 4500 RET 4510 SWAP:MVI A,32 4511 SUB H 4512 MOV H,A 4513 MVI A,32 4514 SUB L 4515 MOV L,H 4516 MOV H,A 4517 RET 4518 CLEAR:LXI H,0 4519 CLPY:MOV A,H 4520 OUT 33 4521 CLPX:MOV A,L 4522 OUT 34 4523 XRA A 4524 OUT 32 4525 INR L 4526 JNZ CLPX 4527 INR H 4528 JNZ CLPY 4529 RET 4550 POS:DS 2 64900 BADS:DB 17,14,18,13,19,12,20,11,21,10,22,9,23,8 (4901 DB 22,7,21,6,20,5,19,4,18,3,17,2 14902 DB 15,14,14,13,13,12,12,11,11,10,10,9,9,8 (4903 DB 10,7,11,6,12,5,13,4,14,3,15,2 4904 DB 0 4904¦ÆÍ%W €XúŠÃA°#õ@ a¨74ÑFE&V—R”TV $T†5ª‚’¤lt•ª–ËA*$La¨LŠ‚‰Ñ#2R e#v‘L¤Ll Æ·º±@t'ªÔB&b!sEl)hGY×*°6©€Ä"¢@€„3܈À¨ÐŒ$$H%€jˆ!š YpÂC‰Qæ18U1¡˜1¬Çec(ÆÈœ©ØÀS1A™UøF÷1ÀœI 1…„T¤ŽS0”O@F.D¥  0¢aAänˆ ;„Å!`¡%±¬"ŒÊVXÃ`Q€Š †æ„#ª¡ã9!È$“ÌÆ %!Ç%!Ѷ ` 5ÐԠ¢©eQ’œˆ"ıÂD4˜!‰1*,ã%hd"¢HŒv¾ ׈–c1BÖÁÈ’F˜%0­!ud¤‰Húƒ×´àÈŠU„+Rb‹"X3•±!´ ë&; !Ã(ÞÀ @#ÖR` šJ°ô­%ñPÆR<0QÒRÄ6Åxˆ% ₆šçkQ 4¥§BH…0Ö¶EѹPPˆe”´ ¢Ë²Éˆ¡)aíB 2…aRdc&`dÉEQ`"50 POP H 1760 POP B 1770 RET 1780 SH:DB 1,2,3,4 1790 END:DS 2 1800 FLAG:DS 1 6120 MOVE:PUSH H 6122 PUSH D 6130 SHLD MEM1 6200 LXI H,1 6210 SHLD NUM 6220 FILLP:LXI D,MEM1 6230 LXI H,MEM2 6240 CALL FILL2 6250 LXI D,MEM2 6260 LXI H,MEM1 6270 CALL FILL2 6280 JMP FILLP 6290 FILL2:SHLD ADDR2 6300 XCHG 6310 SHLD ADDR1 6320 LHLD NUM 6330 MOV B,H 6340 MOV C,L 6350 LXI H,0 6360 SHLD NUM 6370 FLP:LHLD ADDR1 6380 MOV E,M 6390 INX H 6400 MOV D,M 6410 INX H 6420 SHLD ADDR1 6430 DCR D 6440 CALL FDOT 6450 INR D 6460 INR E 6470 CALL FDOT 6480 INR D 6490 DCR E 6500 CALL FDOT 6510 DCR D 6520 DCR E 6530 CALL FDOT 6540 DCX B 6550 MOV A,B 6560 ORA C 6570 JNZ FLP 6580 LHLD NUM 6590 MOV A,H 6600 ORA L 6610 RNZ 6620 POP H 6622 POP D 6623 POP H 6630 RET 6640 FDOT:MOV A,D 6650 OUT 33 6660 MOV A,E 6670 OUT 34 6680 IN 32 6690 INR A 6720 RNZ 6740 OUT 32 6750 LHLD ADDR2 6760 MOV M,E 6770 INX H 6780 MOV M,D 6790 INX H 6800 SHLD ADDR2 6810 LHLD NUM 6820 INX H 6830 SHLD NUM 6840 RET 6890 ADDR1:DS 2 6891 ADDR2:DS 2 6892 NUM:DS 2 6900 MEM1:DS 100 6901 MEM2:DS 100 69016900 SHLD X 6910 MOV A,D 6920 SUB B 6930 CALL FIX2 6940 SHLD DY 6950 MOV A,E 6960 SUB C 6970 CALL FIX2 6980 SHLD DX 6990 MVI B,0 7000 LNLP:LHLD DX 7010 XCHG 7020 LHLD X 7030 DAD D 7040 SHLD X 7050 MOV C,H 7060 LHLD DY 7070 ¹±v‡k„E€¦`Ì`02[¨X0S.%"ªXˆxAHBÀD8¨•DŠ!UP jXÆ%%QTë1F( @™£¤…È0âä•1$!•%‹„P°€E%V‘.*+0ƒÀ‘MJ!‹Hi )¼ Ž "m Ðpa€!Ø„"±œÂ`X… Ð( ±%ˆ DS‚nTrHv‚Y°‚„JšÊFò´”PB@PÊ$†Z‚Œ“,h@6UR à5 ¨@ª("–pˆì@¢„vI*œa. BbØÐLZdh—6„±B!R 2aP¨ 21P]P€C,G2˜J PŠ-ÆÅæ"&L5K< =‘Ô 1‹ BÉ16¬|.a ÐH²¥‰[% ˆ€‘()*é•F 5ˆV+`ƒÉbl( $›n eˆë V—€[¨V+f Œv£UddT,!|Q N‘ÈS  %t#¥ŠP1`*€ŠŒD2z; ‹ ðQ˜˜ˆÂríSlye¢Q †KHX°ÅP×ÀPdŠЙ,H¿J@¢¬™DÆ)T"”Æd@F’Kàˆ²Ĉ- eBâüm@zÉIÒ<˜ N(OVŠc8˜Ôø¥# ’<‚#3q1Þ1H`Iœ{`KB* À[N,1v¼.Ƙ¾¾§6„%°.ÌS ƒÉ²Q(ä2`d‰H #ÇÀåÆD•ž˜Î@UShÕ7F ö‚¤a¢c5 €†!Š €èЀ"¶‹‘,(Q¡‘& šØ)61Z’@ġЉS r@Ò‚¦Â"˜‘Åe(;¹I ™‘€,hÑ,1Ð'À©‚LI²²'9Ø5¬a)C”"R É”¤]†ÖÌÖ`eñ -(€6sE(g @€FÄ cBQˆ0È¥#SV#ŒZi(ä°…„ªJ”R˜ ALÖ ¨Iˆˆón :ÍÔ™!R2B Z”(KÁ*[ ¸)HÔ†,Œ†ÙˆÓq"j"E#½h¶‘T„( Sd$âÐA ’(hb¥ˆdk™c$9B‚ ¥h` PXPÊ@Á€€îX†lÂU&0"$&À`Ìt Y€%G( ¤)–«28B%)2¤e-”bhI!H W `Á@hlƒE4IQih*¬îdb‘&‚ ¢Ì¤q"Ø´`ŠˆrÃŒ¢nQ°ÐÈ ²ë9)Hæ2a ‹«1,Òa%¦(i "D>t°4 0010 XRA A 0020 OUT 48 0030 JMP NOPIC 0040 LXI B,96 0050 LXI H,0A800H 0060 MVI D,0 0070 SVLPY:MOV A,D 0080 OUT 33 0090 MOV E,B 0100 SVLPX:MOV A,E 0110 OUT 34 0120 IN 32 0130 MOV M,A 0140 INX H 0150 INR E 0160 MOV A,C 0170 CMP E 0180 JNZ SVLPX 0190 INR D 0200 CMP D 0210 JNZ SVLPY 0220 NOPIC: 0230 CALL CLEAR 0240 BACK: 0250 LXI B,60H 0260 MOV D,B 0270 FLPY:MOV A,D 0280 OUT 34 0290 MOV E,B 0300 FLPX:MOV A,E 0310 OUT 33 0320 MVI A,255 0330 OUT 32 0340 INR E 0350 MOV A,E 0360 CMP C 0370 JNZ FLPX 0380 INR D 0390 MOV A,D 0400 CMP C 0410 JNZ FLPY 0420 LXI B,1000H 0430 CUTLP:CALL PUT0 0440 CALL PUT90 0450 MOV A,C 0460 ADI 16 0470 MOV C,A 0480 CPI 96 0490 JNZ CUTLP 0500 MVI C,0 0510 MOV A,B 0520 ADI 16 0530 MOV B,A 0540 CPI 96 0550 JNZ CUTLP 0560 LXI H,8000H 0570 SHLD XYPNT 0580 LXI H,8800H 0590 SHLD PNTR 0600 MVI H,8 0610 MVI D,6 0620 MVLPY:MVI L,8 0630 MVI E,6 0640 MVLPX: 0650 PUSH H 0660 PUSH D 0670 LHLD XYPNT 0680 XCHG 0690 LHLD PNTR 0700 MOV M,E 0710 INX H 0720 MOV M,D 0730 INX H 0740 SHLD PNTR 0750 POP D 0760 POP H 0770 CALL MOVE 0780 MOV A,L 0790 ADI 16 0800 MOV L,A 0810 DCR E 0820 JNZ MVLPX 0830 MOV A,H 0840 ADI 16 0850 MOV H,A 0860 DCR D 0870 JNZ MVLPY 0880 LXI D,0A800H 0890 LXI B,96 0900 MVI H,0 0910 PLPY:MOV L,B 0920 MOV A,H 0930 OUT 33 0940 PLPX:MOV A,L 0950 OUT 34 0960 LDAX D 0970 OUT 32 0980 INX D 0990 INR L 1000 MOV A,L 1010 CMP C 1020 JNZ PLPX 1030 INR H 1040 MOV A,H 1050 CMP C 1060 JNZ PLPY 1070 LXI H,8000H 1080 MOV A,H 1090 OUT 43 1100 OUT 45 1110 MOV A,L 1120 OUT 42 1130 OUT 44 1140 MVI H,8 1150 MVI D,6 1160 DFLPY:MVI L,8 1170 MVI E,6 1180 MOV A,H 1190 OUT 33 1200 DFLPX:MOV A,L 1210 OUT 34 1220 OUT 46 1230 WT:IN 33 1240 ANI 16 1250 JZ WT 1260 MOV A,L 1270 ADI 16 1280 MOV L,A 1290 DCR E 1300 JNZ DFLPX 1310 MOV A,H 1320 ADI 16 1330 MOV H,A 1340 DCR D 1350 JNZ DFLPY 1360 LXI H,8000H 1370 MOV A,H 1380 OUT 43 1390 OUT 45 1400 MOV A,L 1410 OUT 42 1420 OUT 44 1430 MVI D,6 1440 MVI H,88H 1450 PUTY:MVI E,6 1460 MVI L,88H 1470 MOV A,H 1480 OUT 33 1490 PUTX:MOV A,L 1500 OUT 34 1510 OUT 47 1520 WT2:IN 33 1530 ANI 16 1540 JZ WT2 1550 MOV A,L 1560 ADI 16 1570 MOV L,A 1580 DCR E 1590 JNZ PUTX 1600 MOV A,H 1610 ADI 16 1620 MOV H,A 1630 DCR D 1640 JNZ PUTY 1650 RET 1660 PUT0:CALL GET 1670 P0LP:LDA FLAG 1680 ORA A 1690 MOV A,M 1700 CNZ NEGA 1710 ADD B 1720 MOV D,A 1730 INX H 1740 MOV A,M 1750 ADD C 1760 MOV E,A 1770 XCHG 1780 XRA A 1790 CALL DOT 1800 XCHG 1810 MOV A,M 1820 CPI 16 1830 INX H 1840 JNZ P0LP 1850 RET 1860 PUT90:CALL GET 1870 P90LP:LDA FLAG 1880 ORA A 1890 MOV A,M 1900 CNZ NEGA 1910 ADD B 1920 MOV E,A 1930 INX H 1940 MOV A,M 1950 ADD C 1960 MOV D,A 1970 XCHG 1980 XRA A 1990 CALL DOT 2000 XCHG 2010 MOV A,M 2020 CPI 16 2030 INX H 2040 JNZ P90LP 2050 RET 2060 NEGA:CMA 2070 INR A 2080 RET 2090 GET:CALL RND 2100 ANI 30 2110 MOV E,A 2120 MVI D,0 2130 LXI H,TYPES 2140 DAD D 2150 MOV A,M 2160 INX H 2170 MOV H,M 2180 MOV L,A 2190 CALL RND 2200 ANI 1 2210 STA FLAG 2220 RET 2230 CLEAR:LXI H,0 2240 CLPY:MOV A,H 2250 OUT 34 2260 CLPX:MOV A,L 2270 OUT 33 2280 XRA A 2290 OUT 32 2300 INR L 2310 JNZ CLPX 2320 INR H 2330 JNZ CLPY 2340 RET 2350 DOT:PUSH PSW 2360 MOV A,H 2370 OUT 33 2380 MOV A,L 2390 OUT 34 2400 POP PSW 2410 OUT 32 2420 RET 2430 RND:PUSH B 2440 PUSH H 2450 LXI H,SH+3 2460 MVI B,8 2470 MOV A,M 2480 RTOP:RLC 2490 RLC 2500 RLC 2510 XRA M 2520 RAL 2530 RAL 2540 DCX H 2550 DCX H 2560 DCX H 2570 MOV A,M 2580 RAL 2590 MOV M,A 2600 INX H 2610 MOV A,M 2620 RAL 2630 MOV M,A 2640 INX H 2650 MOV A,M 2660 RAL 2670 MOV M,A 2680 INX H 2690 MOV A,M 2700 RAL 2710 MOV M,A 2720 DCR B 2730 JNZ RTOP 2740 POP H 2750 POP B 2760 RET 2770 SH:DB 1,2,3,4 2780 END:DS 2 2790 FLAG:DS 1 2800 MOVE:PUSH H 2810 PUSH D 2820 SHLD MEM1 2830 SHLD P0 2840 LXI H,1 2850 SHLD NUM 2860 FILLP:LXI D,MEM1 2870 LXI H,MEM2 2880 CALL FILL2 2890 LXI D,MEM2 2900 LXI H,MEM1 2910 CALL FILL2 2920 JMP FILLP 2930 FILL2:SHLD ADDR2 2940 XCHG 2950 SHLD ADDR1 2960 LHLD NUM 2970 MOV B,H 2980 MOV C,L 2990 LXI H,0 3000 SHLD NUM 3010 FLP:LHLD ADDR1 3020 MOV E,M 3030 INX H 3040 MOV D,M 3050 INX H 3060 SHLD ADDR1 3070 DCR D 3080 CALL FDOT 3090 INR D 3100 INR E 3110 CALL FDOT 3120 INR D 3130 DCR E 3140 CALL FDOT 3150 DCR D 3160 DCR E 3170 CALL FDOT 3180 DCX B 3190 MOV A,B 3200 ORA C 3210 JNZ FLP 3220 LHLD NUM 3230 MOV A,H 3240 ORA L 3250 RNZ 3260 POP H 3270 POP D 3280 POP H 3290 MVI A,1 3300 OUT 41 3310 RET 3320 FDOT:MOV A,D 3330 OUT 33 3340 MOV A,E 3350 OUT 34 3360 IN 32 3370 INR A 3380 RNZ 3390 OUT 32 3400 LHLD ADDR2 3410 MOV M,E 3420 INX H 3430 MOV M,D 3440 INX H 3450 SHLD ADDR2 3460 LHLD NUM 3470 INX H 3480 SHLD NUM 3490 LHLD P0 3500 PUSH D 3510 MOV A,D 3520 SUB H 3530 MOV D,A 3540 MOV A,E 3550 SUB L 3560 MOV E,A 3570 LHLD XYPNT 3580 MOV A,H 3590 OUT 43 3600 MOV A,L 3610 OUT 42 3620 MOV A,D 3630 OUT 39 3640 MOV A,E 3650 OUT 40 3660 MVI A,3 3670 OUT 41 3680 INX H 3690 SHLD XYPNT 3700 POP D 3710 RET 3720 ADDR1:DS 2 3730 ADDR2:DS 2 3740 XYPNT:DS 2 3750 P0:DS 2 3760 PNTR:DS 2 3770 NUM:DS 2 *3780 TYPES:DW T0,T1,T2,T3,T4,T5,T6,T7,T8 *3790 DW T9,T10,T11,T12,T13,T14,T15,TEND 03800 T0:DB 0,0,0,1,0,2,0,3,-1,4,-2,5,-2,6,-1,7 03810 DB 0,6,1,5,2,5,3,6,4,7,4,8,4,9,3,10,2,11 03820 DB 1,11,0,10,-1,9,-2,10,-2,11,-1,12,0,13 3830 DB 0,14,0,15,0,16 93840 T1:DB 0,0,0,1,0,2,-1,3,-1,4,-2,5,-2,6,-1,7,0,6,1,5 63850 DB 2,5,3,6,3,7,3,8,4,9,4,10,3,11,2,11,1,10,0,9 53860 DB -1,9,-2,10,-2,11,-1,12,0,13,0,14,0,15,0,16 ;3870 T2:DB 0,0,0,1,0,2,-1,3,-1,4,-1,5,-2,6,-2,7,-2,8,-2,9 43880 DB -1,10,0,10,1,9,2,8,3,8,4,9,4,10,3,11,2,12 #3890 DB 1,12,0,13,0,14,0,15,0,16 <3900 T3:DB 0,0,0,1,0,2,-1,3,-2,4,-2,5,-1,6,0,6,1,6,2,6,3,6 93910 DB 4,7,4,8,4,9,4,10,3,11,2,11,1,10,0,9,-1,9,-2,10 +3920 DB -2,11,-1,12,-1,13,0,14,0,15,0,16 ;3930 T4:DB 0,0,0,1,0,2,-1,3,-2,4,-3,5,-4,6,-4,7,-3,8,-2,8 43940 DB -1,7,0,7,1,6,2,5,3,5,4,6,5,7,5,8,5,9,4,10 93950 DB 3,10,2,10,1,10,0,11,-1,12,-1,13,0,14,0,15,0,16 >3960 T5:DB 0,0,0,1,0,2,0,3,-1,4,-1,5,0,6,1,6,2,6,3,7,3,8,3,9 >3970 DB 2,10,1,10,0,9,-1,8,-2,8,-3,9,-3,10,-2,11,-1,11,0,12 3980 DB 1,13,0,14,0,15,0,16 ;3990 T6:DB 0,0,0,1,0,2,-1,3,-2,4,-3,5,-4,6,-3,7,-2,7,-1,7 94000 DB 0,6,1,5,2,5,3,5,4,6,5,7,5,8,5,9,4,10,3,11,2,11 54010 DB 1,11,0,10,-1,9,-2,9,-3,9,-4,10,-3,11,-2,12 4020 DB -1,13,0,14,0,15,0,16 ?4030 T7:DB 0,0,0,1,0,2,0,3,-1,4,-1,5,-1,6,0,7,1,7,2,6,3,7,4,8 A4040 DB 3,9,2,10,1,9,0,9,-1,10,-1,11,-1,12,0,13,0,14,0,15,0,16 C4050 T8:DB 0,0,0,1,0,2,0,3,-1,4,-2,5,-1,6,0,6,1,5,2,5,3,6,4,7,4,8 A4060 DB 4,9,3,10,2,9,1,8,0,8,-1,8,-2,9,-2,10,-1,11,-1,12,-1,13 4070 DB 0,14,0,15,0,16 D4080 T9:DB 0,0,0,1,0,2,0,3,-1,4,-1,5,-2,6,-1,7,0,7,1,6,1,5,2,4,3,5 <4090 DB 4,6,5,7,5,8,5,9,4,10,3,11,2,12,1,11,1,10,0,9,-1,9 04100 DB -2,10,-1,11,-1,12,0,13,0,14,0,15,0,16 A4110 T10:DB 0,0,0,1,0,2,-1,3,-1,4,-2,5,-1,6,0,6,1,5,2,5,3,6,4,6 ;4120 DB 5,7,5,8,5,9,4,10,3,10,2,11,1,11,0,10,-1,10,-2,11 %4130 DB -1,12,-1,13,0,14,0,15,0,16 <4140 T11:DB 0,0,0,1,0,2,-1,3,-2,4,-1,5,0,5,1,6,2,6,3,7,4,7 =4150 DB 5,8,5,9,4,10,3,9,2,9,1,9,0,8,-1,8,-2,9,-2,10,-2,11 %4160 DB -1,12,-1,13,0,14,0,15,0,16 <4170 T12:DB 0,0,0,1,0,2,-1,3,-1,4,-2,5,-2,6,-2,7,-2,8,-1,9 84180 DB 0,8,1,7,2,6,3,5,4,6,4,7,4,8,3,9,2,9,1,10,0,11 %4190 DB -1,12,-1,13,0,14,0,15,0,16 ;4200 T13:DB 0,0,0,1,0,2,0,3,-1,4,-1,5,0,6,1,6,2,6,3,6,4,6 ;4210 DB 5,7,5,8,5,9,4,10,3,10,2,10,1,10,0,10,-1,10,-2,11 %4220 DB -2,12,-1,13,0,14,0,15,0,16 94230 T14:DB 0,0,0,1,0,2,0,3,0,4,1,5,1,6,2,7,3,7,4,7,5,8 C4240 DB 4,9,3,10,2,10,1,10,0,10,-1,11,-1,12,-1,13,0,14,0,15,0,16 >4250 T15:DB 0,0,0,1,0,1,0,2,0,3,1,4,1,5,2,6,2,7,3,8,2,9,2,10 (4260 DB 1,11,1,12,0,13,0,14,0,15,0,16 4270 TEND: 4280 MEM1:DS 100 4290 MEM2:DS 100 4290 CTAB:DS 150 5510 MEM1:DS 1000H 5520 MEM2:DS 1000H 5520€þ€ ‚삯ƒ¸„“…ˆ†B‡.ˆ!‰ŠöŠÓ‹©Œ„DŽåĘ‘Y’^“'”•ü•Ä–‘—f˜6™í™Û𾛥œwRžˆ:ˆtˆ¬ˆÞˆ‰N‰Œ‰È‰ŠHŠ„ŠÀŠúŠ0‹v‹´‹H¤ˆ¤„¤Â¤ ¥R¥ÿþýü€€ûÿúÿùÿ€€øø€€ùù€€ø÷€€ö€€õõ€€ôóòñðÿþ€€ýÿüÿûÿ€€úúú€€ù€€ø÷€€ö€€õõõ€€ôÿóÿ€€òñðÿþ€€ýÿüÿûÿ€€úú€€ûú€€ùø€€÷€€öö€€õôóòñðÿþýüÿûÿ€€úú€€ùù€€ø÷öö€€õ€€ôóòñðÿþ€€ýÿüÿûÿ€€ú€€ûû€€ú€€ùø€€÷€€öö€€õôóòñðÿþ€€ýÿüÿûÿ€€úúú€€ù€€ø÷€€ööö€€õôóòñðÿþý€€üÿûÿúÿ€€ùù€€úúú€€ùø÷€€ö€€õõõ€€ôóòñðÿþ€€ýÿüÿ€€ûûû€€ú€€ùø÷€€ö€€÷÷€€öÿõÿôÿ€€óòñðÿþý€€üÿ€€ûþúþ€€ùÿù€€úú€€ùø÷ö€€õ€€ö€€õôó¯Ó0Ó#&øl¯Ó+{Ó*|Ó'}Ó(>Ó)>ÿÓ+|Ó'}Ó(>Ó),}þ .ø$|þ ¯Ó)Ó+<Ó)!_“zÓ+{Ó*~Ó'#~Ó(#>Ó)~þ€ÂH¯Ó)ðzÓ+¯Ó"{Ó*Ó'Ó!Ó ¯Ó(>Ó)Âm>Ó)¯Ó!Ó"Ó*Ó,>ðÓ+>ÿÓ-Ó.ÍÁ’!¿“ÿr#¡¿“$Í8“æ?þ$Ò¬‡oæ­o&~<¬Í8“æÀÆ$w¬¯ÍY’>xÍ•’>yÍ•’!¿“|ÖÓ!}ÖÓ"þÿļ’}ÆoÒé|ÆgÒé!š“"˜“!€€"“Í*“2“*˜“~*“þÿÄ“:“Í"“Í’:Ž“GÛ2Ž“/ GæÄ…‘xæij‘xæÄÞ‘xæÄò‘*“Í*“2“>ÿÍ"“ë*˜“~ëþÿõÄ“ñļ’Û!æÊp‘Û!æÂw‘Í‘ÉÍ’~þÿÈæ?þ$Ð~6ÿ*˜“#"˜“wõ*“ÍÑ‘ñÍÉ’¯Ó,>xÓ-Ó/ÃÁ’Í’~<Àë*˜“~þÿÈ+"˜“O*“ÍÑ‘yü’|æðög}æðöoÉ*˜“~þÿÈÖ@w*“ÍÑ‘"’“É*˜“~þÿÈÆ@w*“ÍÑ‘"’“É*“|æðg}æ´_!¿“É*’“Û/ÍA’…oæðö_Û/ÍA’„gæðöW"’“"“ÉG·òH’/<þ >ØxË/Ë/Ë/Ë/Ë/É!Ó,>ÿÓ-|Ó"}Ó!¯Ó*=Ó+Ó/ÍÁ’}ÆoÂe’|ÆgÂb’ÉÓ-¯Ó*Ó+Ó,Ó0Í1“Ó/ÃÁ’Ó-¯Ó*Ó+Ó,Ó0Í1“Ó.ÃÁ’yÓ*xÓ+{Ó,zÓ-Í1“Ó/ÃÁ’ÍÉ’Ó/Û!æÊÁ’ÉÕåWæ?Æ€‡o&ˆ~Ó*Ó,#~Ó+Ó-zæ_!”“~WÓ0áåæÊ÷’-zæÊþ’%Í1“áÑÉÍÉ’¯Ó,>pÓ-Ó.ÃÁ’ÍÉ’¯Ó,>pÓ-Ó/ÃÁ’õÍ1“ñÓ ÉÍ1“Û ·É|Ó!}Ó"ÉÅå!“~®+++~w#~w#~w#~wÂ@“áÁÉûüýþÿûüýþÿ€}•ÿÿÿÆÿÿQÿÿNÿÿSÿÿ\ÿÿáÿÿUÿÿbÿÿÿÿËÿÿ ÿÿÊÿÿYÿÿÿÿÏÿÿÿÿGÿÿÿÿÁÿÿLÿÿÿÿØÿÿ_¯Ó0ÍY`PzÓ"X{Ó!>ÿÓ {¹Â€z¹Â €Íÿ€ÍyÆOþ`Â$€xÆGþ`Â$€!€"Q‚!ˆ"U‚&.åÕ*Q‚ë*U‚s#r#"U‚Ñáͧ}ÆoÂR€|ÆgÂN€¨`&h|Ó!}Ó"Ó ,}¹Âƒ€$|¹Â€!€|Ó+Ó-}Ó*Ó,&.|Ó!}Ó"Ó.Û!æʳ€}Æo®€|Æg§€!€|Ó+Ó-}Ó*Ó,&ˆ.ˆ|Ó!}Ó"Ó/Û!æÊç€}ÆoÂâ€|ÆgÂÛ€ÉÍ@:¦·~Ä=€W#~_ë¯Ínë~þ#ÂÉÍ@:¦·~Ä=€_#~Wë¯Ínë~þ#Â!É/<ÉÍyæ_!Y‚~#foÍyæ2¦É!|Ó"}Ó!¯Ó ,Â_$Â\Éõ|Ó!}Ó"ñÓ ÉÅå!£~®+++~w#~w#~w#~wÂáÁÉi‰c‹åÕ"Å…"S‚!"W‚Å…!)†ÍÊ)†!Å…ÍÊõ"O‚ë"M‚*W‚DM!"W‚*M‚^#V#"M‚Í ‚Í ‚Í ‚Í ‚ x±ÂÜ*W‚|µÀáÑá>Ó)ÉzÓ!{Ó"Û <ÀÓ *O‚s#r#"O‚*W‚#"W‚*S‚Õz”W{•_*Q‚|Ó+}Ó*zÓ'{Ó(>Ó)#"Q‚ÑÉ+†Å…YžXXHˆ{‚±‚邃Oƒ‰ƒ½ƒÿƒ-„c„¡„ׄ …A…u…¡…Å…ÿþþÿ    ÿ þ þ ÿ ÿÿþþÿ     ÿ þ þ ÿ ÿÿÿþþþþ ÿ       ÿþþÿ     ÿ þ þ ÿ ÿ ÿþýüüýþÿ     ÿ ÿ ÿÿ   ÿþý ý þ ÿ  ÿþýüýþÿ     ÿ þ ý ü ý þ ÿ ÿÿÿ   ÿ ÿ ÿ ÿþÿ   ÿþ þ ÿ ÿ ÿ ÿÿþÿ      ÿ þ ÿ ÿ ÿÿþÿ     ÿ þ ÿ ÿ ÿþÿ     ÿþ þ þ ÿ ÿ ÿÿþþþþÿ    ÿ ÿ ÿÿ     ÿ þ þ ÿ     ÿ ÿ ÿ     [OZP_QQQOU__Q_O[RRQSPT_]^^]_S_R^Q]P\S[A]D\C[2\1[?@ABA!˜2xÓ!~Ó&#~Ó%#~Ó$# ˜Éÿÿÿÿÿÿÿÿÿÿÿÿ£ ÷ûuàístvÿM¡öœ¯‘ÿV”Óó6•–L::ZXYhfgsvz„‚‚”•«­­ÀÃÄýÿýûBn€±}”úûJvPOü¸@°úªå¬zÕŽ¡ÿ‘Y§€§³ ¬Ÿ­Ÿ¹¡¹ ¸Ÿ·¡· ¶ ´£µ¢´¡³¨¡§¢šŸ©ž¨Ÿ§ ¦¡¥¢¤£Ÿ¢ž¡ œŸ›žšŒƒ‹‚Šo´n³m²»¼½»¹·:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::0001 CALL SETUP 0002 XRA A 0003 OUT 48 0012 CALL CLR2 0020 MVI B,0 0030 LP:MOV A,B 0040 CMA 0050 MOV B,A 0060 CALL CLEAR 0070 XRA A 0080 CALL 116H 0090 CPI 3 0100 JNZ LP 0110 RET 0120 SETUP:XRA A 0130 OUT 48 0140 LXI D,0FF00H 0150 PUTLP:MOV A,D 0160 OUT 43 0170 MOV A,E 0180 OUT 42 0185 ADI 16 0190 OUT 40 0210 OUT 39 0220 MVI A,2 0230 OUT 41 0240 INR E 0250 JNZ PUTLP 0260 XRA A 0270 OUT 41 0280 LXI D,0 0290 XRA A 0300 OUT 33 0310 PUT2:MOV A,D 0320 OUT 43 0330 MOV A,E 0340 OUT 42 0350 OUT 40 0360 OUT 34 0370 OUT 32 0380 XRA A 0390 OUT 39 0400 MVI A,3 0410 OUT 41 0420 INR E 0430 JNZ PUT2 0440 MVI A,1 0450 OUT 41 0460 MVI A,0FFH 0470 OUT 45 0480 XRA A 0490 OUT 33 0500 OUT 34 0510 OUT 44 0520 OUT 42 0530 OUT 43 0540 OUT 46 0550 WAIT:IN 33 0560 ANI 16 0570 JZ WAIT 0580 RET 0590 CLEAR:OUT 44 0600 MVI A,0FFH 0610 OUT 45 0620 MVI E,0 0630 XRA A 0640 OUT 33 0642 OUT 34 0650 CLLP:MOV A,E 0670 XRA A 0680 OUT 42 0690 DCR A 0700 OUT 43 0710 OUT 47 0720 CALL WAIT 0730 INR E 0740 JNZ CLLP 0750 RET 0800 CLR2:LXI H,0 0801 CL2Y:MOV A,H 0802 OUT 33 0803 CL2X:MOV A,L 0804 OUT 34 0805 XRA A 0806 OUT 32 0807 INR L 0808 JNZ CL2X 0809 INR H 0810 JNZ CL2Y 0811 RET 0811¯Ó#Ó0Ó!Ó$Ó%Ó&! zÓ+{Ó*|Ó'}Ó(>Ó)}Æ oþà .|Æ gþà ¯Ó)ÿzÓ+{Ó*¯Ó'Ó(>Ó)Â@ >Ó)¯Ó!Ó"Ó,Ó-Ó*=Ó Ó+Ó.ÍÓ¢!˜2>3Ó!~Ó&#~Ó%#~Ó$#Âq ¯Ó*Ó+Ó,Ó!Ó"=Ó-Ó/ÍÓ¢*­£:±£Í½¢Í‘¢:¯£OÛG2¯£/¡OxæÌz¢xyæÄM¡xæÌÛ¢ÍÈþ2Ì¡*­£ÍÅ¢2±£>ͽ¢¯Ó*Ó+Ó,Ó!Ó"=Ó-Ó.ÍÓ¢¯Ó*Ó+Ó,Ó-Ó/ÍÓ¢Û!æÊý Û!æÂ¡Ã† >22±£W!|Ó"þÀJÂ"¡}Ó!þÀyÂ,¡¯Ó ,Â"¡$¡&À|Ó!.À}Ó">þÓ ,Â=¡$Â8¡ÉÛÆ€þÀÚø¡ÛæÊV¡:õ£_!˜>þÓ!Û·òw¡ÿÛ!æÂw¡ÛOæ‹¡~‚wÓ&#yæ—¡~‚wÓ%#y棡~‚wÓ$:õ£Ó!~Ó$+~Ó%+~Ó&ͽ¡yæÂ]¡É:õ£_‡ƒ_!˜>ÐÍÖ¡>àÍÖ¡>ðÓ!~æÿÓ Âà¡{Ó"¯Ó Âì¡#ÉÛ!õ£·ú¢4þÀ~þ3¢6â5~·Â¢62~‡†_!˜>þÓ!~Ó&#~Ó%#~Ó$:õ£Ó!~Ó$+~Ó%+~Ó&ý¡¯Ó*Ó+Ó,Ó!Ó"=Ó-Ó.ÍÓ¢¯Ó*Ó+Ó,Ó-Ó/ÛæÊa¢ÍÓ¢¯Ó*Ó+Ó,=Ó-Ó/ÃÓ¢*­£:õ£Í½¢|æþg}æþo:õ£Ã½¢Û/Ͳ¢*´£"´£DÛ/Ͳ¢*²£"²£l`"­£Éo&·òº¢%)ëÉõÍÌ¢ñÓ ÉÍÌ¢Û ·É|Ó"}Ó!ÉÛ!æÊÓ¢É*­£"ö£ÍÅ¢2É£G:õ£¸È!"Ê£ö£!ö³Í£ö³!ö£Í£Ãó¢"Ç£ë"Å£*Ê£DM!"Ê£*Å£^#V#"Å£ÍE£ÍE£ÍE£ÍE£ x±Â£*Ê£|µÀáÉzÓ"{Ó!Û g:É£¼À:õ£Ó *Ç£s#r#"Ç£*Ê£#"Ê£ÉDM."¸£a"¶£zͧ£"¼£{‘ͧ£"º£*º£ë*¶£"¶£L*¼£ë*¸£"¸£iÍz¢‡£Éo&Ð%Ép4ÿ2ÈpÌ4ÿÿÿÿÿü³ö£ÿÿÿÿÿÿÿÿÿÿÿÿ€€ÿÿÿÿ*kf†e…g}p~0010 CALL CLEAR 0011 LXI H,1010H 0012 CALL DOT 0013 MVI L,0 0014 CALL DOT 0021 LXI H,BADS 0022 BDLP:MOV D,M 0023 INX H 0024 MOV E,M 0025 INX H 0026 XCHG 0027 CALL DOT 0028 XCHG 0029 MOV A,M 0030 ORA A 0031 JNZ BDLP 0150 LXI H,1010H 0200 SHLD POS 0250 MLOOP:LHLD POS 0400 CALL DOT 0450 XRA A 0500 CALL 110H 0512 PUSH PSW 0513 CALL DOT 0514 POP PSW 0550 CPI 3 0600 RZ 0650 CPI 'P' 0700 CZ PUT 0750 CPI '1' 0800 CZ UP 0850 CPI '2' 0900 CZ DOWN 0950 CPI '3' 1000 CZ LEFT 1050 CPI '4' 1100 CZ RIGHT 1150 SHLD POS 1300 JMP MLOOP 1350 UP:DCR H 1400 RET 1450 DOWN:INR H 1500 RET 1550 LEFT:INR L 1600 RET 1650 RIGHT:DCR L 1700 RET 1750 PUT:PUSH PSW 1850 CALL BIG 1900 POP PSW 1950 RET 2004 DOT: 2050 MOV A,H 2100 ADD A 2150 ADD A 2200 ADD A 2250 ADI 4 2300 OUT 33 2350 MOV A,L 2400 ADD A 2450 ADD A 2500 ADD A 2550 ADI 4 2600 OUT 34 2650 IN 32 2700 CMA 2750 OUT 32 2800 RET 2816 BIG: 2850 PUSH B 2900 PUSH D 2950 PUSH H 3000 MOV B,A 3050 MOV A,H 3100 ADD A 3150 ADD A 3200 ADD A 3250 MOV D,A 3300 MOV A,L 3350 ADD A 3400 ADD A 3450 ADD A 3500 MOV E,A 3550 MOV C,A 3600 MVI H,8 3650 BGLPY:MVI L,8 3700 MOV E,C 3750 MOV A,D 3800 OUT 33 3850 BGLPX:MOV A,E 3900 OUT 34 3950 IN 32 3951 CMA 4000 OUT 32 4050 INR E 4100 DCR L 4150 JNZ BGLPX 4200 INR D 4250 DCR H 4300 JNZ BGLPY 4350 POP H 4400 POP D 4450 POP B 4500 RET 4510 SWAP:MVI A,32 4511 SUB H 4512 MOV H,A 4513 MVI A,32 4514 SUB L 4515 MOV L,H 4516 MOV H,A 4517 RET 4518 CLEAR:LXI H,0 4519 CLPY:MOV A,H 4520 OUT 33 4521 CLPX:MOV A,L 4522 OUT 34 4523 XRA A 4524 OUT 32 4525 INR L 4526 JNZ CLPX 4527 INR H 4528 JNZ CLPY 4529 RET 4550 POS:DS 2 64900 BADS:DB 17,14,18,13,19,12,20,11,21,10,22,9,23,8 (4901 DB 22,7,21,6,20,5,19,4,18,3,17,2 14902 DB 15,14,14,13,13,12,12,11,11,10,10,9,9,8 (4903 DB 10,7,11,6,12,5,13,4,14,3,15,2 4904 DB 0 4904@êL:a©´Np4« ¨^ŒºáxÑDæC:rÌC/px¨bÖS‘1©%zxmjò,DIGVLbÎ*–¶QnP(y H¬Q£Š€2Í bÌ£Ä#âx M¡kiu ÚáF 2¡€ +Ó ""¸±t1‹ÌÂ,¤\¨@œÂE’DĤ´3„ØÄ88Ð( ‹Q‰=PÔ4Ž@+ ( ÁK0@WŠ"’Q@  Âà ÑE¨¬cPð¦‚0e) –` El»l”Æ)r޲¢5B„ˆ ‘5 €^€¢…:UQ aB%@(Úq€* Ëó0Tš`¢TI)€!EÊ©02Ò`±YD“F§*²Ê(h@U„v°p5pK4œ±u”ít€$Á„0³Ì¨ ˆxÈ âN ‰ª I-°QcÊ!Vdâ’­3Y0‚ULHU lÂÛ ¬f ©lÔ)`p®J1E‡EB‚ q! ’¼ fÄY$'/P[%¡–Kîh‹–!¨±€ê*¬4#/ #Mæ„XˆÜxœ´‚^¨&.F¨ DÉÜEƒI”ˆµ[à C @ÈhÄ‹@ÃÀè€bb[Q£ˆ™a 2Q­&A$k¡