00010 *ALPHABET MAZE - COPYRIGHT 1984 - BY JEFFREY STANTON 00015 OR $3800 00017 TF "D:MAZE.OBJ" 00020 *ZERO PAGE EQUATES OOFO: 00025 SHPL EQ $FO OOFI: 00030 SHPH EQ $Fl OOF2: 00035 SHPML EQ $F2 OOF3: 00040 SHPMH EQ $F3 0OF4: 00045 SHPMOL EQ $F4 O0F5: 00050 SHPMOH EQ $F5 OOF6: 00055 PMADR EQ $F6 OOF8: 00060 MAPL EQ $F8 OOF9: 00065 MAPH EQ $F9 00070 *OTHER EQUATES 8700: 00075 SCREEN EQ $8700 ;ADR OF SCREEN 9400: 00080 NDLIST EQ $9400 ;ADR OF DISPLAY LIST 9000: 00085 CHRSET EQ $9000 ;ADR OF CHARACTER SET 0400: 00090 SETSIZ EQ 1024 E45C: 00095 SETVBK EQ $E45C E462: 00100 XITVBK EQ $E462 0278: 00105 STICK EQ $278 02F4: 00107 CHBAS EQ $2F4 ;CHARACTER SET BASE 02C8: 00108 COLOR4 EQ $2C8 00110 *PLAYER MISSILE EQUATES D407: 00115 PMBASE EQ $D407 8800: 00120 PDATA EQ $8800 ;ADR OF P/M AREA D01D: 00125 GRACTL EQ $DOlD 022F: 00130 DKACTL EQ $22F DOIE: 00135 HITCLR EQ $DOIE D008: 00140 SIZEPO EQ $DOO8 ;PLAYER SIZES D009: 00145 SIZEPI EQ $D009 DOOA: 00150 SIZEP2 EQ $DOOA DOOB: 00155 SIZEP3 EQ $DOOB 02CO: 00160 COLPMO EQ $2CO ;PLAYER COLORS 02C1: 00165 COLPM1 EQ $2C1 02C2: 00170 COLPM2 EQ $2C2 02C3: 00175 COLPM3 EQ $2C3 DOOO: 00180 HPOSPO EQ $DOOO ;HORIZ PLAYER POSITIONS DOOI: 00185 HPOSPI EQ $DOOl D002: 00190 HPOSP2 EQ $D002 D003: 00192 RPOSP3 EQ $DO03 DOOC: 00193 POPL EQ $DOOC ;PLAYER TO PLAYER COLLISIONS D20A: 00195 RANDOM EQ $D20A DO1F: 00205 CONSOL EQ $DOIF 00210 3800: 05 OC OC 3803: OC OC OC 3806: OC OC 06 3809: OF 00215 DSCREEN HS 050COCOCOCOCOCOC06OF 380A: OF 05 OC 38OD: OC OC OC 3810: OC OC OC 3813: 06 00220 HS OF050COCOCOCOCOCOC06 3814: 03 05 OC 3817: OC 04 OC 381A: OC OC 00 381D: OC 00225 HS 03050COC040COCOC000C 381E: OC 00 OC 3821: OC OC 04 3824: OC OC 06 3827: 03 00230 HS OCOOOCOCOC040COC0603 3828: 03 03 OF 382B: OF 03 05 382E: OC OC 02 3831: OF 00235 HS 03030FOF03050COC020F 3832: OF 01 OC 3835: OC 06 03 3838: OF OF 03 383B: 03 00240 HS OF010COC06030FOF0303 383C: 01 OA OF 383F: OF 09 02 3842: OF OF 01 3845: OC 00245 HS OIOAOFOF09020FOF010C 3846: OC 02 OF 3849: OF 01 OA 384C: OF OF 09 384F: 02 00250 HS OC020FOF010AOFOF0902 3850: 01 OC OC 3853: OC OC 02 3856: OF 05 OA 3859: OF 00255 HS 010COCOCOC020FO50AOF 385A: OF 09 06 385D: OF 01 OC 3860: OC OC OC 3863: 02 00260 HS OF0906OF010COCOCOC02 3864: 03 OF OF 3867: OF OF 01 386A: OC 02 OF 386D: OF 00265 HS 030FOFOFOFOIOC020FOF 386E: OF OF 01 3871: OC 02 OF 3874: OF OF OF 3877: 03 00270 HS OFOF010CO20FOFOFOF03 3878: 03 05 OC 387B: OC OC 02 387E: OF 09 06 3881: OF 00275 HS 03050COCOC02OF0906OF 3882: OF 05 OA 3885: OF 01 OC 3888: OC OC 06 388B: 03 00280 HS OF050AOFOIOCOCOC0603 388C: 03 01 OC 388F: OC 06 03 3892: OF OF 01 3895: 04 00285 HS 03010COC06030FOFOI04 3896: 04 02 OF 3899: OF 03 05 389C: OC OC 02 389F: 03 00290 HS 04020FOF03050COC0203 38AO: 03 03 OF 38A3: OF 03 09 38A6: OC OC 02 38A9: 03 00295 HS 03030FOF03090COC0203 38AA: 03 01 OC 38AD: OC OA 03 38BO: OF OF 03 38B3: 03 00300 HS 03010COCOA030FOF0303 38B4: 03 09 OC 38B7: 06 09 OC 38BA: OC OC OA 38BD: 03 00305 HS 03090CO6090COCOCOA03 38BE: 03 09 OC 38Cl: OC OC OA 38C4: 05 OC OA 38C7: 03 00310 HS 03090COCOCOA050COA03 38C8: 09 OC OC 38CB: 08 OC OC 38CE: OC OC OC 38Dl: OA 00315 HS 090COC080COCOCOCOCOA 38D2: 09 OC OC 38D5: OC OC OC 38D8: 08 OC OC 38DB: OA 00320 HS 090COCOCOCOC080COCOA 38DC: 00 00 00 38DF: 00 00 00 38E2: 00 00 00 38E5: 00 00325 HS 00000000000000000000 38E6: 00 00 00 38E9: 00 00 00 38EC: 00 00 00 38EF: 00 00330 Hs 00000000000000000000 38FO: 00335 BS $10 3900: 05 OC OC 3903: OC 06 OF 3906: 05 OC OC 3909: OC 00340 DSCREEN2 HS 050COCOC06OF050COCOC 390A: OC OC OC 390D: 06 OF 05 3910: OC OC OC 3913: 06 00345 HS OCOCOC06OF050COCOC06 3914: 01 04 04 3917: 04 08 OC 391A: 02 05 OC 391D: OC 00350 HS 01040404080CO2050COC 391E: OC OC 06 392l: 01 OC 08 3924: 04 04 04 3927: 02 00355 HS OCOC06010CO804040402 3928: 03 03 03 392B: 03 05 04 392E: 08 00 OC 3931: 04 00360 HS 03030303050408OOOCO4 3932: 04 OC 00 3935: 08 04 06 3938: 03 03 03 393B: 03 00365 HS 040CO008040603030303 393C: 03 03 03 393F: 03 01 OA 3942: OF 03 OF 3945: 09 00370 HS 03030303010AOF03OF09 3946: OA OF 03 3949: OF 09 02 394C: 03 03 03 394F: 03 00375 HS OAOF030FO90203030303 3950: 01 OA 03 3953: 03 03 OF 3956: 05 02 OF 3959: OF 00380 HS 01OA0303030FO5020FOF 395A: OF OF 01 395D: 06 OF 03 3960: 03 03 09 3963: 02 00385 AS OFOF0106OF0303030902 3964: 01 OC 02 3967: 09 08 OC 396A: 08 00 OC 396D: OC 00390 HS 010C0209080CO8000COC 396E: OC OC 00 3971: 08 OC 08 3974: OA 01 OC 3977: 02 00395 HS OCOC00080CO80AO10CO2 3978: 03 OF 01 397B: OC OC OC 397E: OC 02 OF 3981: OF 00400 HS 030F010COCOCOC020FOF 3982: OF OF 01 3985: OC OC OC 3988: OC OA OF 398B: 03 00405 HS OFOFOIOCOCOCOCOAOF03 398C: 01 04 08 398F: 04 OC OC 3992: OC 02 OF 3995: 05 00410 HS 010408040COCOC02OF05 3996: 06 OF 01 3999: OC OC OC 399C: 04 OC 04 399F: 02 00415 HS 060F010COCOC040CO402 39AO: 01 OA OF 39A3: 03 05 OC 39A6: OC 08 OC 39A9: 02 00420 HS OIOAOF03050COC08OC02 39AA: 01 OC 08 39AD: OC OC 06 39BO: 03 OF 09 39B3: 02 00425 HS 010CO80COC0603OF0902 39B4: 03 OF 05 39B7: 02 03 05 39BA: OC OC OC 39BD: OA 00430 HS 030F050203050COCOCOA 39BE: 09 OC OC 39Cl: OC 06 03 39C4: 01 06 OF 39C7: 03 00435 HS 090COCOC06030106OF03 39C8: 09 OC 08 39CB: 08 08 08 39CE: OC OC OC 39Dl: OC 00440 HS 090CO80808080COCOCOC 39D2: OC OC OC 39D5: OC 08 08 39D8: 08 08 OC 39DB: OA 00445 HS OCOCOCOC080808080COA 39DC: 00 00 00 39DF: 00 00 00 39E2: 00 00 00 39E5: 00 00450 HS 00000000000000000000 39E6: 00 00 00 39E9: 00 00 00 39EC: 00 00 00 39EF: 00 00455 HS 00000000000000000000 39FO: 00460 BS $10 3AOO: 70 70 70 3AO3: 47 00 87 3AO6: 07 07 00465 DUST HS 7070704700870707 3AO8: 07 07 07 3AOB: 07 07 07 3AOE; 07 07 00470 HS 0707070707070707 3AIO: 07 41 00 3A13: 94 00475 HS 07410094 00480 *MAP CHARACTER DATA 3A14: 00 00 00 3A17: 00 00 00 3AlA: 00 00 00485 DCHAR Hs OWOOOO(OOOOOOOO 3AIC: 80 80 80 3AlF: 80 80 80 3A22: 80 80 00490 HS 8080808080808080 3A24: 01 01 01 3A27: 01 01 01 3A2A: 01 01 00495 HS 0101010101010101 3A2C: 81 81 81 3A2F: 81 81 81 3A32: 81 81 00500 HS 8181818181818181 3A34: FF 00 00 3A37: 00 00 00 3A3A: 00 00 00505 HS FFOOOOOOOOOOOOOO 3A3C: FF 80 80 3A3F: 80 80 80 3A42: 80 80 00510 HS FF80808080808080 3A44: FF 01 01 3A47: 01 01 01 3A4A: 01 01 00515 HS FF01010101010101 3A4C: FF 81 81 3A4F: 81 81 81 3A52: 81 81 00520 HS FF81818181818181 3A54: 00 00 00 3A57: 00 00 00 3A5A: 00 FF 00525 HS OOOOOOOOOOOOOOFF 3A5C: 80 80 80 3A5F: 80 80 80 3A62: 80 FF 00530 XS 8080808080808OFF 3A64: 01 01 01 3A67: 01 01 01 3A6A: 01 FF 00535 HS 0101010101010IFF 3A6C: 81 81 81 3A6F: 81 81 81 3A72: 81 FF 00540 HS 8181818181818IFF 3A74: FF 00 00 3A77: 00 00 00 3A7A: 00 FF 00545 HS FFOOOOOOOOOOOOFF 3A7C: FF 80 80 3A7F: 80 80 80 3A82: 80 FF 00550 HS FF80808080808OFF 3A84: FF 01 01 3A87: 01 01 01 3A8A: 01 FF 00555 KS FF010101010IOlFF 3A8C: FF FF FF 3A8F: FF FF FF 3A92: FF FF 00560 HS FFFFFFFFFFFFFFFF 3A94: 20 20 20 3A97: 41 4C 50 3A9A: 48 41 42 3A9D: 45 00565 TITLE HS 202020414C5048414245 3A9E: 54 20 4D 3AAl: 41 5A 45 3AA4: 20 20 20 3AA7: 20 00566 HS 54204D415A4520202020 3AA8: 20 20 20 3AAB: 20 20 20 3AAE: 20 20 20 3ABl: 20 00570 HS 20202020202020202020 3AB2: 20 20 20 3AB5: 20 20 20 3AB8: 20 20 20 3ABB: 20 00571 HS 20202020202020202020 3ABC: 20 42 59 3ABF: 20 4A 45 3AC2: 46 46 52 3AC5: 45 00575 HS 204259204A4546465245 3AC6: 59 20 53 3AC9: 54 41 4E 3ACC: 54 4F 4E 3ACF: 20 00576 HS 59205354414E544F4E20 3ADO: 00 00 00 3AD3: 33 25 2C 3AD6: 25 23 34 3AD9: 1A 00 25 3ADC: 21 33 39 3ADF: 00 00 00 3AE2: 00 00 00580 TITLE1 AT SELECT: EASY 3AE4: 00 00 00 3AE7: 00 00 00 3AEA: 00 00 00 3AED: 00 00 28 3AFO: 21 32 24 3AF3: 00 00 00 3AF6: 00 00 00585 AT HARD 3AF8: 00590 BS $08 3BOO: 00 00 00 3BO3: 00 00 2E 3BO6: 25 38 34 3BO9: 00 2C 25 3BOC: 36 25 2C 3BOF: 00 00 00 3B12: 00 00 00595 TITLE2 AT NEXT LEVEL 00600 *VARIABLES 3B14: 00605 XO BS $01 ;PLAYER'S MAN POSITION 3B15: 00610 X BS $04 ;REST OF PLAYER POSITIONS 3B19: 00615 YO BS $01 3BlA: 00620 Y BS $04 ;REST OF PLAYER POSITIONS 3BlE: 00625 XB BS $04 ;BLOCK EACH PLAYER IN 3B22: 00630 YB, BS $04 3B26: 00635 FLAGL BS $04 ;LEGAL MOVE FLAGS FOR EACH PLAYER 3B2A: 00640 FLAGR BS $04 3B2E: 00645 FLAGU BS $04 3B32: 00650 FLAGD BS $04 3B36: 00655 RELL BS $04 ;DIRECTION WANT TO MOVE IN FLAGS 3B3A: 00660 RELR BS $04 3B3E: 00665 RELU BS $04 3B42: 00670 RELD BS $04 3B46: 00675 MFLAGL BS $04 ;MATCH FLAGS 3B4A: 00680 MFLAGR BS $04 3B4E: 00685 MFLAGU BS $04 3B52: 00690 MFLAGD BS $04 3B56: 00695 TEMPX BS $01 3B57: 00700 TEMPY BS $01 3B58: 00705 TEMPL BS $04 3B5C: 00710 TEMPH BS $04 3B60: 00715 BLOCK BS $01 ;OFFSET IN SCREEN MEMORY OF CURRENT BLOCK 3B61: 01 00720 POINTO DA #1 ;SHAPE PLAYER 0 3B62: 02 00725 POINTI DA #2 3B63: 03 00730 POINT2 DA #3 3B64: 00 00735 POINT3 DA #0 3B65: 00740 DL BS $04 ;AUTO FLAGS 3B69: 00745 DR BS $04 3B6D: 00750 DU BS $04 3B71: 00755 DD BS $04 3B75: 00 00820 INHIBIT DA #0 ;PREVENTS OBTAINING TWO JOYSTICK DIRECTIONS 3B76: 00 00825 VBFLAG DA #0 ;VBLANK FINISHED FLAG \ON DIAGONAL 3B77: 00 00830 LFLAG DA #0 ;INDICATES WHETHER AT CENTER OF BLOCK 3B78: 00 00835 NUM DA #0 ;NUMBER OF DIRECTION MATCH FLAGS 3B79: 00 00840 PAUSE DA #0 ;PAUSE FLAG 3B7A: 00 00845 SLOW DA #0 ;SETS MINUS SIGN TO HALF SPEED 3B7B: 00 00850 HALF DA #0 ;COUNTER WHEN PLAYER MOVES AT HALF SPEED 3B7C: 00855 LEVEL BS $01 ;MAZE LEVEL 3B7D: 00857 ONCE BS $01 ;PREVENTS DOUBLE COLLISIONS @ HALF SPEED 00860 *POINTERS TO PM DATA 3B7E: 00 08 10 3B81: 18 20 28 3B84: 30 38 00865 SHPLO HS 0008101820283038 3B86: 40 48 50 3B89: 58 60 68 3B8C: 70 78 00870 HS 4048505860687078 3B8E: 80 88 90 3B91: 98 AO A8 3B94: BO B8 00875 HS 80889098AOA8BOB8 3B96: CO C8 DO 3B99: D8 EO 00880 HS COC8DOD8EO 3B9B: 00885 BS $65 00890 *MAKE SURE STARTS @$2COO 00895 *PLAYER MISSILE DATA 3COO: 00 00 00 3CO3: 3C 3C 00 3CO6: 00 00 00900 SHAPES HS 0000003C3CO00OOO ;MINUS SIGN 3CO8: 18 3C 66 3COB: 42 7E 42 3COE: 42 42 00905 HS 183C66427E424242 ;LETTER A 3CIO: 7C 42 42 3C13: 7C 42 42 3C16: 42 7C 00910 HS 7C42427C4242427C ;B 3C18: 1E 20 40 3CIB: 40 40 40 3ClE: 20 IE 00915 HS lE2040404040201E ;C 3C20: 78 44 42 3C23: 42 42 42 3C26: 44 78 00920 HS 7844424242424478 ;D 3C28: 7E 40 40 3C2B: 7C 40 40 3C2E: 40 7E 00925 HS 7E40407C4040407E ;E 3C30: 7E 40 40 3C33: 7C 40 40 3C36: 40 40 00930 HS 7E40407C40404040 ;F 3C38: 1E 20 40 3C3B: 40 4E 42 3C3E: 22 1C 00935 HS lE2040404E42221C ;G 3C40: 42 42 42 3C43: 7E 42 42 3C46: 42 42 00940 HS 4242427E42424242 ;H 3C48: 7C 10 10 3C4B: 10 10 10 3C4E: 10 7C 00945 HS 7C1010101010107C ;I 3C50: 04 04 04 3C53: 04 04 44 3C56: 44 38 00950 HS 0404040404444438 ;J 3C58: 44 48 50 3C5B: 60 60 50 3C5E: 48 44 00955 HS 4448506060504844 ;K 3C60: 40 40 40 3C63: 40 40 40 3C66: 40 7E 00960 HS 404040404040407E ;L 3C68: 41 63 55 3C6B: 49 41 41 3C6E: 41 41 00965 HS 4163554941414141 ;M 3C70: 62 62 52 3C73: 52 4A 4A 3C76: 46 46 00970 HS 626252524A4A4646 ;N 3C78: 18 24 42 3C7B: 42 42 42 3C7E: 24 18 00975 HS 1824424242422418 ;0 3C80: 7C 42 42 3C83: 42 7C 40 3C86: 40 40 00980 HS 7C4242427C404040 ;P 3C88: 18 24 42 3C8B: 42 42 42 3C8E: 26 1B 00985 HS 182442424242261B ;Q 3C90: 7C 42 42 3C93: 42 7C 44 3C96: 42 41 00990 HS 7C4242427C444241 ;R 3C98: 3E 40 40 3C9B: 40 3C 02 3C9E: 02 7C 00995 HS 3E4040403CO2027C ;S 3CAO: FE 10 10 3CA3: 10 10 10 3CA6: 10 10 01000 HS FE10101010101010 ;T 3CA8: 42 42 42 3CAB: 42 42 42 3CAE: 42 3C 01005 HS 424242424242423C ;U 3CBO: 82 82 82 3CB3: 82 44 44 3CB6: 28 10 01010 HS 8282828244442810 ;V 3CB8: 41 41 41 3CBB: 41 49 55 3CBE: 63 41 01015 HS 4141414149556341 ;W 3CCO: 41 22 14 3CC3: 08 14 22 3CC6: 41 00 01020 HS 4122140814224100 ;X 3CC8: 42 42 24 3CCB: 18 10 20 3CCE: 40 40 01025 HS 4242241810204040 ;Y 3CDO: 7F 02 04 3CD3: 08 10 20 3CD6: 7F 00 01030 HS 7FO2040810207FOO ;Z 3CD8: 00 00 00 3CDB: 00 00 00 3CDE: 00 00 01035 HS 0000000000000000 ;BLANK 3CEO: 00 00 00 3CE3: 00 00 00 3CE6: 00 00 01040 HS 0000000000000000 ;BLANK 01045 *SETUP DLIST 01050 BEGIN 3CE8: A2 00 01055 LDX #$00 3CEA: BD 00 3A 01060 DLOOP LDA DLIST,X 3CED: 9D 00 94 01065 STA NDLISTJ 3CFO: E8 01070 INX 3CFl: EO 15 01075 CPX #$15 21 ELEMENTS 3CF3: DO F5 01080 BNE DLOOP 3CF5: A9 00 01085 LDA #NDLIST ;LOCATION OF DISPLAY LIST 3CF7: 8D 30 02 01090 STA $230 3CFA: A9 94 01095 LDA /NDLIST 3CFC: 8D 31 02 01100 STA $231 01105 *ERASE SCREEN 3CFF: A2 00 01110 START LDX #$00 3DOI: A9 00 01115 LDA #$00 3DO3: 9D 00 87 01120 ALOOP STA SCREEN,X 3DO6: E8 01125 INX 3DO7: DO FA 01130 BNE ALOOP 01135 *WRITE TITLE & AUTHOR 3DO9: A9 EO 01140 LDA #$EO ;ROM CHARACTER SET 3DOB: 8D F4 02 01145 STA CHBAS 3DOE: A2 00 01150 LDX #$00 3DIO: BD 94 3A 01155 BLOOP LDA TITLE,X 3DI3: 38 01157 SEC 3DI4: E9 20 01158 SBC #$20 3DI6: 9D 3C 87 01160 STA $873C,X 3D19: E8 01165 INX 3DIA: EO 3C 01170 CPX #$3C 3DIC: DO F2 01175 BNE BLOOP 01180 *WRITE SELECT EASY & HARD 3DIE: A2 00 01185 LDX #$00 3D20: BD DO 3A 01190 RLOOP LDA TITLE1,X ;PUT IN 8TH ROW 3D23: 9D AO 87 01195 STA $87AO,X 3D26: E8 01200 INX 3D27: EO 28 01205 CPX #$28 3D29: DO F5 01210 BNE HLOOP 3D2B: A9 OA 01215 LDA #$OA ;WRITE BESIDE HARD 3D2D: 8D C3 87 01220 STA $87C3 01225 *READ CONSOLE KEYS 3D30: A9 00 01230 LDA #$00 3D32: 8D 7A 3B 01235 STA SLOW 3D35: 8D 7C 3B 01240 STA LEVEL 3D38: AD IF DO 01245 KEY LDA CONSOL 3D3B: C9 06 01250 CMP #$06 3D3D: FO 39 01255 BEQ RAIN 3D3F: C9 05 01260 CMP #$05 3D41: DO F5 01265 BNE KEY 3D43: AD 7A 3B 01270 LDA SLOW 3D46: DO 12 01275 BNE .2 3D48: A9 OA 01280 .1 LDA #$OA ;WRITE * BESIDE EASY 3D4A: 8D AF 87 01285 STA $87AF 3D4D: A9 00 01290 LDA #$00 ;ERASE * BESIDE HARD 3D4F: 8D C3 87 01295 STA $87C3 3D52: A9 01 01300 LDA #$Ol 3D54: 8D 7A 3B 01305 STA SLOW 3D57: 4C 69 3D 01310 JMP .3 3D5A: A9 OA 01315 .2 LDA #$OA ;WRITE * BESIDE HARD 3D5C: 8D C3 87 01320 STA $87C3 3D5F: A9 00 01325 LDA #$00 ;ERASE * BESIDE EASY 3D61: 8D AF 87 01330 STA $87AF 3D64: A9 00 01335 LDA #$00 3D66: 8D 7A 3B 01340 STA SLOW 3D69: A9 E8 01345 .3 LDA #$E8 3D6B: 85 14 01350 STA $14 3D6D: A9 00 01355 LDA #$00 3D6F: 85 13 01360 STA $13 3D71: A5 13 01365 .4 LDA $13 ;DELAY 24 JIFFIES 3D73: FO FC 01370 BEQ .4 3D75: 4C 38 3D 01375 imp KEY 01380 *SETUP CHARACTER SET 3D78: A2 00 01385 MAIN LDX #$00 3D7A: BD 14 3A 01390 CLOOP LDA DCHAR,X 3D7D: 9D 00 90 01395 STA CHRSYZ.X 3D80: E8 01400 INX 3D81: EO 80 01405 CPX #$80 3D83: DO F5 01410 BNE CLOOP 3D85: A9 90 01415 LDA /CHRSET 3D87: 8D F4 02 01420 STA CHBAS 01425 *SETUP SCREEN 3D8A: A2 00 01430 LDX #$00 3D8C: BD 00 38 01435 SLOOP LDA DSCREENJ 3D8F: 9D 00 87 01440 STA SCREEN,X 3D92: E8 01445 INX 3D93: EO FO 01450 CPX #$FO ;220 BYTES 3D95: DO F5 01455 BNE SLOOP 3D97: A9 00 01460 LDA #DSCREEN 3D99: 85 F8 01465 STA MAPL 3D9B: A9 38 01470 LDA /DSCREEN 3D9D: 85 F9 01475 STA MAPH 3D9F: A9 00 01480 LDA #$00 ;BACKGROUND BLACK 3DAl: 8D C8 02 01485 STA COLOR4 01490 *INITALIZE PLAYERS 3DA4: A9 88 01495 LDA #$88 3DA6: 8D 07 D4 01500 ISTA PMBASE 3DA9: A9 03 01505 LDA #$03 3DAB: 8D 1D DO 01510 STA GRACTL 3DAE: A9 3E 01515 LDA #$3E 3DBO: 8D 2F 02 01520 STA DMACTL 3DB3: A9 00 01525 LDA #$00 3DB5: 8D 08 DO 01530 STA SIZEPO 3DB8: 8D 09 DO 01535 STA SIZEP1 3DBB: 8D OA DO 01540 STA STZEP2 3DBE: 8D OB DO 01545 STA SIZEP3 3DCl: 8D IE DO 01550 RESTART STA HITCLR;CLEAR COLLISION REG 01555 *PLAYER #0 3DC4: A9 7A 01560 LDA #$7A ;PLAYER #0 122 BLUE LUM10 3DC6: 8D CO 02 01565 STA COLPMO 3DC9: A9 30 01570 LDA #$30 ;INITIAL POS X=48,Y=36 3DCB: 8D 14 3B 01575 STA XO 3DCE: 8D 15 3B 01580 STA X 3DDI: 8D 00 DO 01585 STA HPOSPO ;TELL ANTIC 3DD4: A9 24 01590 LDA #$24 3DD6: 8D 19 3B 01595 STA YO 3DD9: 8D IA 3B 01600 STA Y 01605 *INITIAL OLD PLAYER #0 MEMORY POINTERS 3DDC: A9 40 01610 LDA #$40 3DDE: 8D 58 3B 01615 STA TEMPL 3DEI: A9 88 01620 LDA /PDATA 3DE3: 18 01625 CLC 3DE4: 69 04 01630 ADC #$04 3DE6: 8D 5C 3B 01635 STA TEMPH 01640 *PLAYER #1 3DE9: A2 01 01645 LDX #$Ol 3DEB: A9 C8 01650 LDA #$C8 ;PLAYER #1 200 GREEN LUM8 3DED: 8D Cl 02 01655 STA COLPM1 3DFO: A9 88 01660 LDA #$88 ;INITIAL POSITION X=136,Y=164 3DF2: 9D 15 3B 01665 STA X,X 3DF5: 8D 01 DO 01670 STA HPOSPI 3DF8: A9 A4 01675 LDA #$A4 3DFA: 9D 1A 3B 01680 STA Y,X 01685 *OLD PLAYER #1 MEMORY POINTERS 3DFD: A9 40 01690 LDA #$40 3DFF: 9D 58 3B 01695 STA TEMPL,X 3EO2: A9 88 01700 LDA /PDATA 3EO4: 18 01705 CLC 3EO5: 69 05 01710 ADC #$05 3EO7: 9D 5C 3B 01715 STA TEMPH,X 01720 *PLAYER #2 3EOA: A2 02 01725 LDX #$02 3EOC: A9 C8 01730 LDA #$C8 ;PLAYER #2 200 GREEN LUM8 3EOE: 8D C2 02 01735 STA COLPM2 3EII: A9 AO 01740 LDA #$AO ;INITIAL POSITION X=160,Y=52 3E13: 9D 15 3B 01745 STA X,X 3E16: 8D 02 DO 01750 STA RPOSP2 3E19: A9 34 01755 LDA #$34 3EIB: 9D IA 3B 01760 STA Y,X 01765 *OLD PLAYER #2 MEMORY POINTERS 3EIE: A9 40 01770 LDA #$40 3E20: 9D 58 3B 01775 STA TEKPL,X 3E23: A9 88 01780 LDA /PDATA 3E25: 18 01785 CLC 3E26: 69 06 01790 ADC #$06 3E28: 9D 5C 3B 01795 STA TEKPH,X 01800 *PLAYER #3 3E2B: A2 03 01805 LDX 003 3E2D: A9 44 01810 LDA #$44 ;PLAYER #3 68 RED LUM4 3E2F: 8D C3 02 01815 STA COLPM3 3E32: A9 C8 01820 LDA #$C8 ;INITIAL POSITION X=200,Y=196 3E34: 9D 15 3B 01825 STA X,X 3E37: 8D 03 DO 01830 STA HPOSP3 3E3A: A9 C4 01835 LDA #$C4 3E3C: 9D IA 3B 01840 STA Y,X 01845 *OLD PLAYER #3 MEMORY POINTERS 3E3F: A9 40 01850 LDA #$40 3E41: 9D 58 3B 01855 STA TEMPL,X 3E44: A9 88 01860 LDA /PDATA 3E46: 18 01865 CLC 3E47: 69 07 01870 ADC, #$07 3E49: 9D 5C 3B 01875 STA TEMPH,X 01880 *INIT POINT# VALUES 3E4C: A9 01 01885 LDA #$Ol 3E4E: 8D 61 3B 01890 STA POINTO 3E51: A9 02 01895 LDA #$02 3E53: 8D 62 3B 01900 STA POINTI 3E56: A9 03 01905 LDA #$03 3E58: 8D 63 3B 01910 STA POINT2 3E5B: A9 00 01915 LDA #$00 3E5D: 8D 64 3B 01920 STA POINT3 3E60: 8D 7D 3B 01922 STA ONCE 01925 *INIT AUTO FLAGS 3E63: A2 00 01930 INAUTO LDX #$00 3E65: A9 00 01935 LDA #$00 3E67: 9D 65 3B 01940 .1 STA DL,X 3E6A: 9D 69 3B 01945 STA DR,X 3E6D: 9D 6D 3B 01950 STA DU,X 3E70: 9D 71 3B 01955 STA DD,X 3E73: E8 01960 INX 3E74: EO 04 01965 CPX #$04 3E76: DO EF 01970 BNE .1 01975 *START PLAYERS MOVING 3E78: A9 01 01980 LDA #$Ol 3E7A: 8D 6A 3B 01985 STA DR+l 3E7D: 8D 6B 3B 01990 STA DR+2 3E80: 8D 68 3B 01995 STA DL+3 02000 *CLEAR P/M AREA 3E83: A9 00 02005 CLEAR LDA #$00 ;PDATL 3E85: 85 F6 02010 STA PMADR. 3E87: A9 88 02015 LDA /PDATA 3E89: 85 F7 02020 STA PMADR+l 3E8B: AO 00 02025 LDY #$00 3E8D: 98 02030 TYA 3E8E: A2 08 02035 LDX 4$08 3E90: 91 F6 02040 .1 STA (PMADR),Y 3E92: C8 02045 INY 3E93: DO FB 02050 BNE .1 3E95: E6 F7 02055 INC PMADR+l ;NEXT 256 BYTES 3E97: CA 02060 DEX 3E98: DO F6 02065 BNE .1 02070 *PLOT INITIAL PLAYER POSITIONS 3E9A: A2 00 02075 LDX 000 3E9C: 20 FE 44 02080 JSR PLOTSETO 3E9F: A2 01 02085 LDX #$Ol 3EAl: 20 03 46 02090 JSR PLOTSETI 02095 *SET VBLANK 3EA4: A9 07 02100 LDA #$07 3EA6: A2 42 02105 LDX /FRAME ;HI BYTE VBLANK ROUTINE 3EA8: AO Al 02110 LDY #FRAME ;LO BYTE 3EAA: 20 5C E4 02115 JSR SETVBK 02120 *MAIN CODE LOOP 3EAD: A9 00 02125 LOOPM LDA #$00 3EAF: 8D 76 3B 02130 STA VBFLAG 02135 *CHECK COLLISIONS 3EB2: AD OC DO 02140 LDA POPL ;CHECK COLLISION PLAYER 0&1 3EB5: C9 02 02145 CMP #$02 3EB7: DO 19 02150 BNE .1 3EB9: 38 02155 SEC 3EBA: AD 62 3B 02160 LDA POINT1 ;IS THERE A 1 LETTER DIFFERENCE 3EBD: ED 61 3B 02165 SBC POINTO 3ECO: C9 02 02170 CMP #$02 3EC2: BO OE 02175 BGE .1 3EC4: EE 61 3B 02180 INC POINTO ;PLAYER BECOMES NEXT LETTER 3EC7: EE 62 3B 02185 INC POINTI ;OLD LETTER JUMPS 2 LETTERS 3ECA: EE 62 3B 02190 INC POINT1 3ECD: AO 01 02195 LDY #$Ol 3ECF: 20 7A 47 02200 JSR PLACE ;PUT PLAYER#l IN NEW PLACE 3ED2: AD OC DO 02205 .1 LDA POPL ;CHECK COLLISION PLAYER 0&2 3ED5: C9 04 02210 CMP #$04 3ED7: DO 19 02215 BNE .2 3ED9: 38 02220 SEC 3EDA: AD 63 3B 02225 LDA POINT2 ;IS THERE A I LETTER DIFFERENCE 3EDD: ED 61 3B 02230 SBC POINTO 3EEO: C9 02 02235 CMP #$02 3EE2: BO OE 02240 BGE .2 3EE4: EE 61 3B 02245 INC POINTO 3EE7: EE 63 3B 02250 INC POINT2 3EEA: EE 63 3B 02255 INC POINT2 3EED: AO 02 02260 LDY #$02 3EEF: 20 7A 47 02265 JSR PLACE 3EF2: AD OC DO 02270 .2 LDA POPL ;CHECK COLLISION PLAYER 0&3 3EF5: C9 08 02275 CMP #$08 3EF7: DO 58 02280 BNE .3 3EF9: AD 7D 3B 02282 LDA ONCE ;MUST MOVE PLAYER #3 BEFORE TESTING 3EFC: DO 53 02283 BNE .3 \FOR NEW COLLISION 3EFE: AD 61 3B 02285 LDA POINTO 3FOl: C9 01 02290 CMP #$Ol 3FO3: FO OC 02295 BEQ .25 3FO5: CE 61 3B 02300 DEC POINTO 3FO8: CE 62 3B 02305 DEC POINTI 3FOB: CE 63 3B 02310 DEC POINT2 3FOE: EE 7D 3B 02312 INC ONCE 3FII: AO 03 02315 .25 LDY #$03 3F13: AD 1E 3B 02320 LDA XB ;PUT PLAYER #3 OPPOSITE SIDE AS PLAYER #0 3F16: C9 OA 02325 CMP #$OA 3F18: BO 1D 02330 BGE .27 3FlA: A9 C8 02335 LDA #$C8 ;PUT PLAYER #3-AT BOTTOM LEFT (200,196) 3FIC: 99 15 3B 02340 STA X,Y 3FIF: A9 C4 02345 LDA #$C4 3F21: 99 IA 3B 02350 STA Y,Y 3F24: A9 00 02355 LDA #$00 3F26: 99 6D 3B 02360 STA DU,Y 3F29: 99 69 3B 02365 STA DR,Y 3F2C: 99 71 3B 02370 STA DD,Y 3F2F: A9 01 02375 LDA #$Ol 3F31: 99 65 3B 02380 STA DL,Y 3F34: 4C 51 3F 02385 JMP .3 3F37: A9 40 02390 .27 LDA #$40 3F39: 99 15 3B 02395 STA X,Y ;PUT PLAYER #3 AT BOTTOM RT (48,196) 3F3C: A9 C4 02400 LDA #$C4 3F3E: 99 1A 3B 02405 STA Yj 3F41: A9 00 02410 LDA #$00 3F43: 99 6D 3B 02415 STA DU,Y 3F46: 99 71 3B 02420 STA DD,Y 3F49: 99 65 3B 02425 STA DL,Y 3F4C: A9 01 02430 LDA #$Ol 3F4E: 99 69 3B 02435 STA DR,Y 3F51: 8D 1E DO 02440 .3 STA HITCLR 3F54: A9 00 02445 LDA #$00 ;STOP ATTRACT MODE 3F56: 85 4D 02450 STA $4D 02455 *PLAYER #1 CODE 3F58: A2 01 02460 LDX #$Ol 3F5A: 20 06 40 02465 JSR MOVEPL 3F5D: 20 03 46 02470 JSR PLOTSETI 02475 *PLAYER #2 3F60: A2 02 02480 LDX #$02 3F62: 20 06 40 02485 JSR MOVEPL 3F65: 20 31 46 02490 JSR PLOTSET2 02495 *PLAYER3 3F68: AD 7A 3B 02500 LDA SLOW 3F6B: C9 00 02505 CMP #$00 3F6D: FO 09 02510 BEQ P3 3F6F: EE 7B 3B 02515 INC HALF ;INCREMENT COUNTER 3F72: AD 7B 3B 02520 LDA HALF 3F75: 4A 02525 LSR ;DIVIDE BY 2 3F76: 90 OD 02530 BCC RESET ;SKIPS ON EVEN CYCLES 3F78: A2 03 02535 P3 LDX #$03 3F7A: 20 06 40 02540 JSR MOVEPL 3F7D: 20 5F 46 02545 JSR PLOTSET3 3F80: A9 00 02546 LDA #$00 3F82: 8D 7D 3B 02547 STA ONCE 02550 *IF PLAYER #0 BECOMES Z RESET TO SECOND SCREEN 3F85: AD 61 3B 02555 RESET LDA POINTO 3F88: C9 1A 02560 CMP #$IA 3F8A: DO 6D 02565 BNE FOREVER 3F8C: A9 80 02570 LDA #$80 3F8E: 85 14 02575 STA $14 3F90: A5 14 02580 DELAY LDA $14 ;ABOUT 2 SEC 3F92: DO FC 02585 BNE DELAY 02590 *MOVE PLAYERS TEMP OFF SCREEN 3F94: A9 00 02595 LDA #$00 3F96: 8D CO 02 02600 STA COLPMO ;TERP BLACKOUT PLAYER#O IN VBLANK 3F99: 8D 01 DO 02605 STA HPOSP1 3F9C: 8D 02 DO 02610 STA HPOSP2 3F9F: 8D 03 DO 02615 STA HPOSP3 02620 *DONE WITH 2ND LEVEL 3FA2: AD 7C 3B 02625 LDA LEVEL 3FA5: C9 01 02630 CMP #$01 3FA7: DO 03 02635 BNE .1 3FA9: 4C FF 3C 02640 JMP START 02645 *ERASE SCREEN 3FAC: A2 00 02650 .1 LDX #$00 3FAE: A9 00 02655 LDA #$00 3FBO: 9D 00 87 02660 FLOOP STA SCREEN,X 3FB3: E8 02665 INX 3FB4: DO FA 02670 BNE FLOOP 02675 *WRITE 'NEXT LEVEL' 3FB6: A9 EO 02680 LDA #$EO ;BACK TO ROM CHARACTER SET 3FB8: 8D F4 02 02685 STA CHBAS 3FBB: EE 7C 3B 02690 INC LEVEL 3FBE: A2 00 02695 LDX #$00 3FCO: BD 00 3B 02700 GLOOP LDA TITLE2,X 3FC3: 9D 8C 87 02705 STA $878C,X 3FC6: E8 02710 INX 3FC7: EO 14 02715 CPX #$14 3FC9: DO F5 02720 BNE GLOOP 3FCB: A9 80 02725 LDA #$80 3FCD: 85 14 02730 STA $14 ;2 SECOND DELAY 3FCF: A9 00 02735 LDA #$00 3FDI: 85 13 02740 STA $13 3FD3: A5 13 02745 .1 LDA $13 3FD5: FO FC 02750 BEQ .1 3FD7: A9 90 02755 LDA /CHRSET ;RAM CHARACTER SET 3FD9: 8D F4 02 02760 STA CHBAS 02765 *SETUP SECOND SCREEN 3FDC: A2 00 02770 LDX #$00 3FDE: BD 00 39 02775 SLOOP1 LDA DSCREEN2,X 3FEI: 9D 00 87 02780 STA SCREEN,X 3FE4: E8 02785 INX 3FE5: EO FO 02790 CPX #$FO 3FE7: DO F5 02795 BNE SLOOPI 3FE9: A9 00 02800 LDA #DSCREEN2 3FEB: 85 F8 02805 STA MAPL 3FED: A9 39 02810 LDA /DSCREEN2 3FEF: 85 F9 02815 STA MAPH 3FFI: A9 7A 02820 LDA #$7A ;RESTORE PLAYER #0 COLOR 3FF3: 8D'CO 02 02822 STA COLPMO 3FF6: 4C Cl 3D 02823 JMP RESTART 3FF9: AD 76 3B 02825 FOREVER LDA VBFLAG ;STAYS IN THIS LOOP UNTIL 3FFC: C9 01 02830 CMP #$Ol ;VBLANK ROUTINE SETS VBFLAG=l 3FFE: DO 03 02835 BNE .1 4000: 4C AD 3E 02840 JMP LOOPM 4003: 4C F9 3F 02845 .1 JMP FOREVER 4006: 20 50 44 02850 MOVEPL, JSR LEGAL 4009: AD 77 3B 02855 LDA LFLAG ;EQUAL TO I IF AT CENTER OF BLOCK 40OC: DO 06 02860 BNE .1 400E: 20 B5 45 02865 JSR AUTOP 4011: 4C DI 40 02870 JMP FIN 02875 *IS THERE AN AVAILABLE DIRECTION OTHER THAN FORWARD OR REVERSE 4014: BD 65 3B 02880 .1 LDA DL,X 4017: FO 2B 02885 BEQ .2 4019: BD 2E 3B 02890 LDA FLAGU,X 40IC: DO 03 02895 BNE .11 401E: 4C D4 40 02900 JMP YES 4021: BD 32 3B 02905 .11 LDA FLAGD,X 4024: DO 03 02910 BNE .12 4026: 4C D4 40 02915 JMP YES 02920 *CONTINUE MOVING IN SAME DIRECTION UNLESS BLOCKED 4029: BD 26 3B 02925 .12 LDA FLAGL,X 402C: DO 06 02930 BNE .13 402E: DE 15 3B 02935 DEC X,X 4031: 4C Dl 40 02940 JMP FIN 4034: A9 00 02945 .13 IDA #$00 ;REVERSE DIRECTION 4036: 9D 65 3B 02950 STA DL,X 4039: A9 01 02955 LDA #$Ol 403B: 9D 69 3B 02960 STA DR,X 403E: FE 15 3B 02965 INC X,X 4041: 4C DI 40 02970 JMP FIN 4044: BD 69 3B 02975 .2 LDA DR,X 4047: FO 2B 02980 BEQ .3 4049: BD 2E 3B 02985 LDA FLAGU,X 404C: DO 03 02990 BNE .21 404E: 4C D4 40 02995 JMP YES 4051: BD 32 3B 03000 .21 LDA FLAGD,X 4054: DO 03 03005 BNE .22 4056: 4C D4 40 03010 JMP YES 4059: BD 2A 3B 03015 .22 LDA FLAGR,X 405C: DO 06 03020 BNE .23 405E: FE 15 3B 03025 INC X,X 4061: 4C Dl 40 03030 JMP FIN 4064: A9 00 03035 .23 LDA #$00 ;REVERSE DIRECTION 4066: 9D 69 3B 03040 STA DR,X 4069: A9 01 03045 LDA #$Ol 406B: 9D 65 3B 03050 STA DL,X 406E: DE 15 3B 03055 DEC X,X 4071: 4C Dl 40 03060 JMP FIN 4074: BD 6D 3B 03065 .3 LDA DU,X 4077: FO 2B 03070 BEQ .4 4079: BD 26 3B 03075 LDA FLAGL,X 407C: DO 03 03080 BNE .31 407E: 4C D4 40 03085 JMP YES 4081: BD 2A 3B 03090 .31 LDA FLAGR,X 4084: DO 03 03095 BNE .32 4086: 4C D4 40 03100 JMP YES 4089: BD 2E.3B 03105 .32 LDA FLAGU,X 408C: DO 06 03110 BNE .33 408E: DE IA 3B 03115 DEC Y,X 4091: 4C Dl 40 03120 JMP FIN 4094: A9 00 03125 .33 LDA #$00 ;REVERSE DIRECTION 4096: 9D 6D 3B 03130 STA DU,X 4099: A9 01 03135 LDA #$Ol 409B: 9D 71 3B 03140 STA DD,X 409E: FE 1A 3B 03145 INC Y,X 40Al: 4C DI 40 03150 JMP FIN 40A4: BD 71 3B 03155 .4 LDA DD,X 40A7: FO 28 03160 BEQ FIN 40A9: BD 26 3B 03165 LDA FLAGL,X 40AC: DO 03 03170 BNE .41 40AE: 4C D4 40 03175 JMP YES 40BI: BD 2A 3B 03180 .41 LDA FLAGR,X 40B4: DO 03 03185 BNE .42 40B6: 4C D4 40 03190 JMP YES 40B9: BD 32 3B 03195 .42 LDA FLAGD,X 40BC: DO 06 03200 BNE .43 40BE: FE IA 3B 03205 INC Y.X 40Cl: 4C Dl 40 03210 JMP FIN 40C4: A9 00 03215 .43 LDA #$00 ;REVERSE DIRECTION 40C6: 9D 71 3B 03220 STA DD,X 40C9: A9 01 03225 LDA #$Ol 40CB: 9D 6D 3B 03230 STA DU,X 40CE: DE IA 3B 03235 DEC Yj 40Dl: 4C AO 42 03240 FIN JMP EE 40D4: EA 03245 YES NOP 03250 *SET ALL REL,X FLAGS 03255 *VALUE OF 0 WOULDN'T WANT TO MOVE BUT VALUE OF I WOULD HOME 03260 *PLAYER 1&2 FLEES - PLAYER 3 CHASES ~IN ON PLAYER 4OD5: A9 00 03265 TESTRX LDA #$00 ;ZERO REL,X FLAGS 4OD7: 9D 36 3B 03270 STA RELL,X 40DA: 9D 3A 3B 03275 STA RELR,X 40DD: 9D 42 3B 03280 STA RELD,X 40EO: 9D 3E 3B 03285 STA RELUJ 40E3: BD IE 3B 03290 LDA XB,X 4OE6: 38 03295 SEC 40E7: ED IE 3B 03300 SBC XB 40EA: FO 2A 03302 BEQ .4 40EC: 10 14 03305 BPL .1 40EE: EO 03 03310 CPX #$03 40FO: FO 08 03315 BEQ .2 40F2: A9 01 03320 LDA #$Ol 40F4: 9D 36 3B 03325 STA RELL,X ;ACTUALLY RELR,X=-l BUT RELL,X=l 40F7: 4C 22 41 03330 JMP TESTRY 40FA: A9 01 03335 .2 LDA #$Ol 40FC: 9D 3A 3B 03340 STA RELR,X 40FF: 4C 22 41 03345 JMP TESTRY 4102: EO 03 03350 .1 CPX #$03 4104: FO 08 03355 BEQ .3 4106: A9 01 03360 LDA #$Ol 4108: 9D 3A 3B 03365 STA RELR,X ;ACTUALLY RELL,X=-l 41OB: 4C 22 41 03370 JMP TESTRY 410E: A9 01 03375 .3 LDA #$Ol 4110: 9D 36 3B 03376 STA RELL,X 4113: 4C 22 41 03377 JMP TESTRY 4116: EO 03 03378 .4 CPX #$03 4118: FO 08 03379 BEQ TESTRY 411A: A9 01 03380 LDA #$Ol 411C: 9D 36 3B 03381 STA RELL,X 41IF: 9D 3A 3B 03382 STA RELR,X 4122: BD 22 3B 03385 TESTRY LDA YB,X 4125: 38 03390 SEC 4126: ED 22 3B 03395 SBC YB 4129: 10 16 03400 BPL .1 412B: FO 2B 03402 BEQ .4 412D: EO 03 03405 CPX #$03 412F: FO 08 03410 BEQ .2 4131: A9 01 03415 LDA #$Ol 4133: 9D 3E 3B 03420 STA RELU,X ;ACTUALLY RELD,X=-l 4136: 4C 64 41 03425 JMP MATCHT 4139: A9 01 03430 .2 LDA #$Ol 413B: 9D 42 3B 03435 STA RELD,X 413E: 4C 64 41 03440 JMP MATCHT 4141: EO 03 03445 .1 CPX #$03 4143: FO 08 03450 BEQ .3 4145: A9 01 03455 LDA #$Ol 4147: 9D 42 3B 03460 STA RELD,X ;ACTUALLY RELU,X=-l 414A: 4C 64 41 03465 JMP MATCHT 414D: A9 01 03470 .3 LDA #$Ol 414F: 9D 3E 3B 03475 STA RELU,X 4152: 9D 3E 3B 03476 STA RELU,X 4155: 4C 64 41 03477 JMP MATCHT 4158: EO 03 03478 .4 CPX #$03 415A: FO 08 03479 BEQ MATCHT 415C: A9 01 03480 LDA #$Ol 415E: 9D 42 3B 03481 STA RELD,X 4161: 9D 3E 3B 03482 STA RELU,X 4164: A9 00 03485 MATCHT LDA #$00 4166: 8D 78 3B 03490 STA NUM 4169: 9D 46 3B 03495 STA MFLAGL,X 416C: 9D 4A 3B 03500 STA MFLAGR,X 416F: 9D 4E 3B 03505 STA MFLAGU,X 4172: 9D 52 3B 03510 STA MFLAGD,X 4175: BD 26 3B 03515 LDA FLAGL,X 4178: DO OF 03520 BNE .2 417A: BD 36 3B 03525 LDA RELL,X 417D: C9 01 03530 CMP #$Ol 417F: DO 08 03535 BNE .2 4181: EE 78 3B 03540 INC NUM 4184: A9 01 03545 LDA #$Ol 4186: 9D 46 3B 03550 STA MFLAGL,X ;SET MATCH FLAG 4189: BD 2A 3B D3555 .2 LDA FLAGR,X 418C: DO OF 03560 BNE .3 418E: BD 3A 3B 03565 LDA RELR,X 4191: C9 01 03570 CMP #$Ol 4193: DO 08 03575 BNE .3 4195: EE 78 3B 03580 INC NUM 4198: A9 01 03585 LDA #$Ol 419A: 9D 4A 3B 03590 STA MFLAGR,X 419D: BD 2E 3B 03595 .3 LDA FLAGU,X 41AO: DO OF 03600 BNE .4 41A2: BD 3E 3B 03605 LDA RELU,X 41A5: C9 01 03610 CMP #$Ol 41A7: DO 08 03615 BNE .4 41A9: EE 78 3B 03620 INC NUM 41AC: A9 01 03625 LDA #$Ol 41AE: 9D 4E 3B 03630 STA MFLAGU,X 41BI: BD 32 3B 03635 .4 LDA FLAGD,X 41B4: DO OF 03640 BNE PP 41B6: BD 42 3B 03645 LDA RELD,X 41B9: C9 01 03650 CMP #$Ol 41BB: DO 08 03655 BNE PP 41BD: EE 78 3B 03660 INC NUM 41CO: A9 01 03665 LDA #$Ol 41C2: 9D 52 3B 03670 STA MFLAGD,X 03675 *IF MATCH CAUSES PLAYER TO REVERSE PREVENT IT 41C5: BD 65 3B 03680 PP LDA DL,X 41C8: FO 10 03685 BEQ .42 41CA: BD 4A 3B 03690 LDA MFLAGR,X 41CD: FO OB 03695 BEQ .42 41CF: A9 00 03700 LDA #$00 41DI: 9D 4A 3B 03705 STA MFLAGR,X 41D4: CE 78 3B 03710 DEC NUM 41D7: 4C 16 42 03715 JMP .5 41DA: BD 69 3B 03720 .42 LDA DR,X 41DD: FO 10 03725 BEQ .43 41DF: BD 46 3B 03730 LDA MFLAGL,X 41E2: FO OB 03735 BEQ .43 41E4: A9 00 03740 LDA #$00 41E6: 9D 46 3B 03745 STA MFLAGL,X 41E9: CE 78 3B 03750 DEC NUM 41EC: 4C 16 42 03755 JMP .5 41EF: BD 6D 3B 03760 .43 LDA DU,X 41F2: FO 10 03765 BEQ .44 41F4: BD 52 3B 03770 LDA MFLAGD,X 41F7: FO OB 03775 BEQ .44 41F9: A9 00 03780 LDA #$00 41FB: 9D 52 3B 03785 STA MFLAGD,X 41FE: CE 78 3B 03790 DEC NUM 4201: 4C 16 42 03795 J14P .5 4204: BD 71 3B 03800 .44 LDA DD,X 4207: FO OD 03805 BEQ .5 4209: BD 4E 3B 03810 LDA MFLAGU,X 420C: FO 08 03815 BEQ .5 420E: A9 00 03820 LDA #$00 4210: 9D 4E 3B 03825 STA MFLAGU,X 4213: CE 78 3B 03830 DEC NUM 03835 *IF TWO MATCHES THEN CHOOSE A DIRECTION RANDOMILY 4216: AD 78 3B 03840 .5 LDA NUM THEN MOVE IN DIRECTION 4219: DO 06 03845 BNE .55 421B: 20 8D 46 03850 JSR CORECT 421E: 4C AO 42 03855 JMP EE 4221: AD 78 3B 03860 .55 LDA NUM 4224: C9 01 03865 CMP #$Ol 4226: FO 07 03870 BEQ .6 4228: AD OA D2 03875 LDA RANDOM 422B: C9 50 03880 CMP #80 422D: 90 3A 03885 BLT .8 422F: BD 46 3B 03890 .6 LDA MFLAGL,X 4232: C9 01 03895 CMP #$ol 4234: DO 16 03900 BNE .7 4236: A9 01 03905 LDA #$01 4238: 9D 65 3B 03910 STA DL,X 423B: A9 00 03915 LDA #$00 423D: 9D 71 3B 03920 STA DD,X 4240: 9D 69 3B 03925 STA DR,X 4243: 9D 6D 3B 03930 STA DU,X 4246: DE 15 3B 03935 DEC X,X 4249: 4C AO 42 03940 JMP EE 424C: BD 4A 3B 03945 .7 LDA MFLAGR,X 424F: C9 01 03950 CMP #$ol 4251: DO 16 03955 BNE .8 4253: A9 01 03960 LDA #$01 4255: 9D 69 3B 03965 STA DR,X 4258: A9 00 03970 LDA #$00 425A: 9D 65 3B 03975 STA DL,X 425D: 9D 6D 3B 03980 STA DU,X 4260: 9D 71 3B 03985 STA DD,X 4263: FE 15 3B 03990 INC X,X 4266: 4C AO 42 03995 JMP EE 4269: BD 4E 3B 04000 .8 LDA MFLAGU,X 426C: C9 01 04005 CMP #$Ol 426E: DO 16 04010 BNE .9 4270: A9 01 04015 LDA #$Ol 4272: 9D 6D 3B 04020 STA DU,X 4275: A9 00 04025 LDA #$00 4277: 9D 65 3B 04030 STA DL,X 427A: 9D 69 3B 04035 STA DR,X 427D: 9D 71 3B 04040 STA DD,X 4280: DE IA 3B 04045 DEC Y,X 4283: 4C AO 42 04050 JMP EE 4286: BD 52 3B 04055 .9 LDA MFLAGD,X 4289: C9 01 04060 CMP #$Ol 428B: DO 13 04065 BNE EE 428D: A9 01 04070 LDA #$Ol 428F: 9D 71 3B 04075 STA DD,X 4292: A9 00 04080 LDA #$00 4294: 9D 6D 3B 04085 STA DU,X 4297: 9D 65 3B 04090 STA DL,X 429A: 9D 69 3B 04095 STA DR,X 429D: FE IA 3B 04100 INC Y,X 42AO: 60 04105 EE RTS 04110 *VBLANK ROUTINE 42AI: EA 04115 FRAME NOP 42A2: AD FC 02 04120 PAUSEI LDA $2FC ;KEY PRESSED? 42A5: C9 FF 04125 CMP OFF 42A7: FO 25 04130 BEQ .2 42A9: C9 21 04135 CMP 021 ;SPACE BAR? 42AB: DO 2B 04140 BNE .3 42AD: AD 79 3B 04145 LDA PAUSE ;PAUSE=I? 42BO: C9 01 04150 CMP #$Ol 42B2: FO OD 04155 BEQ .1 42B4: A9 01 04160 LDA #$Ol ;NOT PAUSED-THEN SET PAUSE 42B6: 8D 79 3B 04165 STA PAUSE 42B9: A9 FF 04170 LDA #$FF 42BB: 8D FC 02 04175 STA $2FC 42BE: 4C 62 E4 04180 JMP XITVBK 42CI: A9 00 04185 .1 LDA 000 ;PAUSED-THEN RELEASE PAUSE 42C3: 8D 79 3B 04190 STA PAUSE 42C6: A9 FF 04195 LDA #$FF. 42C8: 8D FC 02 04200 STA $2FC 42CB: 4C D8 42 04205 JMP .3 42CE: AD 79 3B 04210 .2 LDA PAUSE ;PAUSED? 42DI: C9 01 04215 CMP #$Ol 42D3: DO 03 04220 BNE .3 42D5: 4C 62 E4 04225 JMP XITVBK 42D8: A9 01 04230 .3 LDA #01 42DA: 8D 76 3B 04235 STA VBFLAG 42DD: A2 00 04240 LDX #$00 42DF: 20 50 44 04245 JSR LEGAL 04250 *READ JOYSTICK 42E2: AD 78 02 04255 LDA STICK ;JOYSTICK CENTERED? 42E5: C9 OF 04260 CMP #$OF 42E7: DO 06 04265 BNE DUR 42E9: 20 32 45 04270 JSR AUTO ;IF STICK NOT TOUCHED CONTINUE IN SAME DIR 42EC: 4C 43 44 04275 JMP STAY 42EF: AD 78 02 04280 DUR LDA STICK ;TEST DIAGONAL UP&RT 42F2: C9 06 04285 CMP #$06 42F4: DO IB 04290 BNE DDR 42F6: AD 69 3B 04295 LDA DR 42F9: FO 03 04300 BEQ .01 42FB: 4C El 43 04305 JMP CHKUP 42FE: AD 6D 3B 04310 .01 LDA DU 4301: DO 06 04315 BNE .02 4303: 20 32 45 04320 JSR AUTO 4306: 4C 43 44 04325 JMP STAY 4309: A9 01 04330 .02 LDA #$Ol ;SET TO RT ONLY 430B: 8D 75 3B 04335 STA INHIBIT 430E: 4C 77 43 04340 JMP CHKRT 4311: AD 78 02 04345 DDR LDA STICK ;TEST DIAGONAL DOWN&RT 4314: C9 05 04350 CMP 005 4316: DO IB 04355 BNE DUL 4318: AD 69 3B 04360 LDA DR 431B: FO 03 04365 BEQ .03 431D: 4C 12 44 04370 JMP CHKDN 4320: AD 71 3B 04375 .03 LDA DD 4323: DO 06 04380 BNE .04 4325: 20 32 45 04385 JSR AUTO 4328: 4C 43 44 04390 JMP STAY 432B: A9 01 04395 .04 LDA #$Ol ;SET TO RT ONLY 432D: 8D 75 3B 04400 STA INHIBIT 4330: 4C 77 43 04405 JMP CHKRT 4333: AD 78 02 04410 DUL LDA STICK ;TEST DIAGONAL UP&LEFT 4336: C9 OA 04415 CMP #$OA 4338: DO 1B 04420 BNE DDL 433A: AD 65 3B 04425 IDA DL 433D: FO 03 04430 BEQ .05 433F: 4C El 43 04435 JMP CHKUP 4342: AD 6D 3B 04440 .05 LDA DU 4345: DO 06 04445 BNE .06 4347: 20 32 45 04450 JSR AUTO 434A: 4C 43 44 04455 JMP STAY 434D: A9 01 04460 .06 LDA #$Ol ;SET TO LEFT ONLY 434F: 8D 75 3B 04465 STA INHIBIT 4352: 4C A8 43 04470 JMP CHKLF 4355: AD 78 02 04475 DDL IDA STICK ;TEST DIAGONAL DOWN&LEFT 4358: C9 09 04480 CMP #$09 435A: DO IB 04485 BNE CHKRT 435C; AD 65 3B 04490 IDA DL 435F: FO 03 04495 BEQ .07 4361: 4C 12 44 04500 JMP CHKDN 4364: AD 71 3B 04505 .07 LDA DD 4367: DO 06 04510 BNE .08 4369: 20 32 45 04515 JSR AUTO 436C: 4C 43 44 04520 JMP STAY 436F: A9 01 04525 .08 LDA #$Ol ;SET TO LEFT ONLY 4371: 8D 75 3B 04530 STA INHIBIT 4374: 4C A8 43 04535 JMP CHKLF 4377: AD 78 02 04540 CHKRT LDA STICK 437A: 29 08 04545 AND #$08 ;RT BIT? 437C: DO 2A 04550 BNE CHKLF 437E: AD 2A 3B 04555 IDA FLAGR 4381: FO 06 04560 BEQ .2 4383: 20 32 45 04565 JSR AUTO 4386: 4C 43 44 04570 JMP STAY 4389: A9 00 04575 .2 LDA #$00 438B: 8D 65 3B 04580 STA DL ;SHUT OFF AUTO FLAGS 438E: 8D 6D 3B 04585 STA DU 4391: 8D 71 3B 04590 STA DD 4394: 8D 26 3B 04595 STA FLAGL ;RESET LEGAL FLAGS-ONLY CAN TRAVEL 4397: A9 01 04600 LDA #$Ol IBETWEEN TWO BLOCKS 4399: 8D 2E 3B 04605 STA FLAGU 439C: 8D 32 3B 04610 STA FLAGD 439F: 8D 69 3B 04615 STA, DR ;TURN ON AUT014ATIC FLAG 43A2: EE 14 3B 04620 INC XO ;XO--XG+l 43A5: EE 15 3B 04625 INC X 43A8: AD 78 02 04630 CHKLF LDA STICK 43AB: 29 04 04635 AND #$04 ;LEFT BIT 43AD: DO 2A 04640 BNE QIK 43AF: AD 26 3B 04645 LDA FLAGL 43B2: FO 06 04650 BEQ .3 43B4: 20 32 45 04655 JSR AUTO 43B7: 4C 43 44 04660 JMP STAY 43BA: A9 00 04665 .3 LDA #$00 43BC: 8D 69 3B 04670 STA DR 43BF: 8D 6D 3B 04675 STA DU 43C2: 8D 71 3B 04680 STA DD 43C5: 8D 2A 3B 04685 STA FLAGR 43C8: A9 01 04690 LDA #$Ol 43CA: 8D 2E 3B 04695 STA FLAGU 43CD: 8D 32 3B 04700 STA FLAGD 43DO: 8D 65 3B 04705 STA DL 43D3: CE 14 3B 04710 DEC XO ;XO-XO-l 43D6: CE 15 3B 04715 DEC X 43D9: AD 75 3B 04720 CHK LDA INHIBIT ;THIS PREVENTS GETTING BOTH DIRECTIONS 43DC: FO 03 04725 BEQ CHKUP ON DIAGONAL 43DE: 4C 43 44 04730 JMP STAY 43El: AD 78 02 04735 CRKUP LDA STICK 43E4: 29 01 04740 AND #$Ol ;UP BIT? 43E6: DO 2A 04745 BNE CHKDN 43E8: AD 2E 3B 04750 LDA FLAGU 43EB: FO 06 04755 BEQ .4 43ED: 20 32 45 04760 JSR AUTO 43FO: 4C 43 44 04765 JMP STAY 43F3: A9 00 04770 .4 LDA #$00 43F5: 8D 71 3B 04775 STA DD 43F8: 8D 69 3B 04780 STA DR 43FB: 8D 65 3B 04785 STA DL 43FE: 8D 32 3B 04790 STA FLAGD 4401: A9 01 04795 LDA #$Ol 4403: 8D 26 3B 04800 STA FLAGL 4406: 8D 4A 3B 04805 STA FLAGR 4409: 8D 6D 3B 04810 STA DU 440C: CE 19 3B 04815 DEC YO ;YO--YO-l 440F: CE 1A 3B 04820 DEC Y 4412: AD 78 02 04825 CHKDN LDA STICK 4415: 29 02 04830 AND #$02 4417: DO 2A 04835 BNE STAY 4419: AD 32 3B 04840 LDA FLAGD 441C: FO 06 04845 BEQ .5 441E: 20 32 45 04850 JSR AUTO 4421: 4C 43 44 04855 JMP STAY 4424: A9 00 04860 .5 LDA #$00 4426: 8D 6D 3B 04865 STA DU 4429: 8D 69 3B 04870 STA DR 442C: 8D 65 3B 04875 STA DL 442F: 8D 2E 3B 04880 STA FLAGU 4432: A9 01 04885 LDA #$Ol 4434: 8D 26 3B 04890 STA FLAGL 4437; 8D 2A 3B 04895 STA FLAGR 443A: 8D 71 3B 04900 STA DD 443D: EE 19 3B 04905 INC YO ;YO-YO+l 4440: EE 1A 3B 04910 INC Y 4443: A9 00 04915 STAY LDA #$00 4445: 8D 75 3B 04920 STA INHIBIT 4448: A2 00 04925 LDX #$00 444A: 20 FE 44 04930 JSR PLOTSETO 444D: 4C 62 E4 04935 JMP XITVBK 04940 *SUBROUTINE-TEST FOR LEGAL MOVES 04945 *INPUT X,Y PLAYER POSITION; X REG PLAYER 04950 *OUTPUT FLAGL,X;FLAGR,X;FLACU,X;FLAGD,X-0-OPEN,1-CLOSE 4450: A9 00 04955 LEGAL LDA #$00 4452: 8D 77 3B 04960 STA LFLAG 4455: BD 15 3B 04965 LDA X,X ;PLAYER HOR POSITION 4458: 38 04970 SEC 4459: E9 30 04975 SBC #$30 ;SUBTRACT 48 445B: 8D 56 3B 04980 STA TEMPX 445E: 4A 04985 LSR ;DIVIDE BY 8 445F: 4A 04990 LSR 4460: 4A 04995 LSR 4461: 9D IE 3B 05000 STA XB,X 4464: BD IA 3B 05005 LDA Yj ;PLAYER VERT POSITION 4467: 38 05010 SEC 4468: E9 24 05015 SBC #$24 ;SUBTRACT 36 446A: 8D 57 3B 05020 STA TEMPY 446D: 4A 05025 LSR ;DIVIDE BY 16 446E: 4A 05030 LSR 446F: 4A 05035 LSR 4470: 4A 05040 LSR 4471: 9D 22 3B 05045 STA YB,X 05050 *TEST IF AT CENTER OF BLOCK 4474: AD 57 3B 05055 LDA TEMPY 4477: 29 OF 05060 AND #$OF ;TEST AGAINST FIRST 4 BITS-ONLY MULTIPLE 4479: DO 61 05065 BNE DONE ~OF 16 @CENTER 447B: AD 56 3B 05070 LDA TEMPX 447E: 29 07 05075 AND #$07 ;TEST AGAINST FIRST 3 BITS-ONLY MULTIPLE 4480: DO 5A 05080 BNE DONE \OF 8 @CENTER 4482: A9 01 05085 LDA #$Ol 4484: 8D 77 3B 05090 STA LFLAG 05095 *AT CENTER-TEST&RESET LEGAL MOVE FLAGS 05100 *BLOCK=(YB*20)+XB 4487: A9 00 05105 LDA #$00 4489: BC 22 3B 05110 LDY YB,X 448C: CO 00 05115 CPY #$00 ;IF 0 SKIP ADD & DECREMENT 448E: FO 08 05120 BEQ .5 4490: 18 05125 .1 CLC 4491: 69 14 05130 ADC 014 4493: 88 05135 DEY 4494: CO 00 05140 CPY 000 4496: DO F8 05145 BNE .1 4498: 18 05150 .5 CLC 4499: 7D 1E 3B 05155 ADC XB,X 449C: 8D 60 3B 05160 STA BLOCK 449F: A9 00 05165 LDA #$00 ;OPEN ALL FLAGS FOR PLAYER 44Al: 9D 26 3B 05170 STA FLAGL,X 44A4: 9D 2A 3B 05175 STA FLAGR,X 44A7: 9D 2E 3B 05180 STA FLAGU,X 44AA: 9D 32 3B 05185 STA FLAGD,X 05190 *TEST BLOCK MAN IN FOR LEGAL MOVES 44AD: AC 60 3B 05195 LDY BLOCK 44BO: Bl F8 05200 LDA (MAPL),Y 44B2: 29 01 05205 AND #$Ol 44B4: FO 05 05210 BEQ .2 44B6: A9 01 05215 LDA #$Ol 44B8: 9D 26 3B 05220 STA FLAGL,X 44BB: Bl F8 05225 .2 LDA (MAPL),Y 44BD: 29 02 05230 AND #$02 44BF: FO 05 05235 BEQ .3 44CI: A9 01 05240 LDA #$Ol 44C3: 9D 2A 3B 05245 STA FLAGR,X 44C6: BI F8 05250 .3 LDA (MAPL),Y 44C8: 29 04 05255 AND #$04 44CA: FO 05 05260 BEQ .4 44CC: A9 01 05265 LDA #$Ol 44CE: 9D 2E 3B 05270 STA FLAGU,X 44DI: BI F8 05275 .4 LDA (MAPL),Y 44D3: 29 08 05280 AND #$08 44D5: FO 05 05285 BEQ DONE 44D7: A9 01 05290 LDA #$Ol 44D9: 9D 32 3B 05295 STA FLAGD,X 44DC: 60 05300 DONE RTS 05305 *PUT SHAPE IN P/M AREA 44DD: AO 00 05310 PLOT LDY #$00 ;COUNTER 44DF: A9 00 05315 LDA #$00 ;NEED 0 TO ERASE EACH TIME 44El: 91 F4 05320 .1 STA (SHPMOL),Y;ERASE OLD SHAPE FIRST 44E3: C8 05325 INY 44E4: CO 08 05330 CPY #$08 44E6: 90 F9 05335 BLT .1 44E8: AO 00 05340 LDY #$00 44EA: Bl FO 05345 .2 LDA (SHPL),Y;GET BYTE FROM PROPER SHAPE TABLE 44EC: 91 F2 05350 STA (SHPML),Y ;PUT IN P/M AREA 44EE: C8 05355 INY 44EF: CO 08 05360 CPY #$08 44Fl: 90 F7 05365 BLT .2 44F3: A5 F2 05370 LDA SHPML;TRANSFER NEW P/M POS TO OLD POS 44F5: 9D 58 3B 05375 STA TEMPL,X 44F8: A5 F3 05380 LDA SHPMH 44FA: 9D 5C 3B 05385 STA TEMPH,X 44FD: 60 05390 RTS 05395 *SUBROUTINE PLOTSETO 44FE: AD 14 3B 05400 PLOTSETO LDA XO 4501: 8D 15 3B 05405 STA X 4504: 8D 00 DO 05410 STA HPOSPO 4507: AD 19 3B 05415 LDA YO 450A: 8D IA 3B 05420 STA Y 450D: 85 F2 05425 STA SHPML 450F: A9 88 05430 LDA /PDATA 4511: 18 05435 CLC 4512: 69 04 05440 ADC #$04 ;PLAYER IS 1K BEYOND START 4514: 85 F3 05445 STA SHPMH 4516: AC 61 3B 05450 LDY POINTO 4519: B9 7E 3B 05455 LDA SHPLO,Y ;POINTER TO CORRECT SHAPE 451C: 85 FO 05460 STA SHPL 451E: A9 3C 05465 LDA /SHAPES 4520: 85 Fl 05470 STA SHPH 4522: A2 00 05475 LDX #$00 4524: BD 58 3B 05480 LDA TEMPL,X 4527: 85 F4 05485 STA SHPMOL 4529: BD 5C 3B 05490 LDA TEMPH,X 452C: 85 F5 05495 STA SHPMOH 452E: 20 DD 44 05500 JSR PLOT 4531: 60 05505 RTS 05510 *CONTINUE MOVING IN LAST DIR UNLESS HIT WALL 05515 *AUTO ON - #1 4532: AD 69 3B 05520 AUTO LDA DR 4535: C9 01 05525 CMP #$Ol 4537: DO IA 05530 BNE .1 4539: AD 2A 3B 05535 LDA FLAGR 453C: C9 00 05540 CMP #$00 453E: DO 73 05545 BNE .4 4540: A9 00 05550 LDA #$00 4542: 8D 26 3B 05555 STA FLAGL 4545: A9 01 05560 LDA #$Ol 4547: 8D 2E 3B 05565 STA FLAGU 454A: 8D 32 3B 05570 STA FLAGD 454D: EE 14 3B 05575 INC XO 4550: 4C B3 45 05580 JMP .4 4553: AD 65 3B 05585 .1 LDA DL 4556: C9 01 05590 CMP #$01 4558: DO 1A 05595 BNE .2 455A: AD 26 3B 05600 LDA FLAGL 455D: C9 00 05605 CMP #$00 455F: DO 52 05610 BNE .4 4561: A9 00 05615 LDA #$00 4563: 8D 2A 3B 05620 STA FLAGR 4566: A9 01 05625 LDA #$Ol 4568: 8D 2E 3B 05630 STA FLAGU 456B: 8D 32 3B 05635 STA FLAGD 456E: CE 14 3B 05640 DEC XO 4571: 4C B3 45 05645 JMP .4 4574: AD 6D 3B 05650 .2 LDA DU 4577: C9 01 05655 CMP #$Ol 4579: DO 1A 05660 BNE .3 457B: AD 2E 3B 05665 LDA FLAGU 457E: C9 00 05670 CMP #$00 4580: DO 31 05675 BNE .4 4582: A9 00 05680 LDA #$00 4584: 8D 32 3B 05685 STA FLAGD 4587: A9 01 05690 LDA #$Ol 4589: 8D 2A 3B 05695 STA FLAGR 458C: 8D 26 3B 05700 STA FLAGL 458F: CE 19 3B 05705 DEC YO 4592: 4C B3 45 05710 JMP .4 4595: AD 71 3B 05715 .3 LDA DD 4598: C9 01 05720 CMP #$Ol 459A: DO 17 05725 BNE .4 459C: AD 32 3B 05730 LDA FLAGD 459F: C9 00 05735 CMP #$00 45Al: DO 10 05740 BNE .4 45A3: A9 00 05745 LDA #$00 45A5: 8D 2E 3B 05750 STA FLACU 45A8: A9 01 05755 LDA #$Ol 45AA: 8D 2A 3B 05760 STA FLAGR 45AD: 8D 26 3B 05765 STA FLAGL 45BO: EE 19 3B 05770 INC YO 45B3: EA 05775 .4 NOP 45B4: 60 05780 RTS 05785 *AUTO CODE FOR PLAYERS 1,2 & 3 05790 *NEEDS PLAYER # IN X-REGISTER 05795 *CODE DOESN'T REQUIRE LATCHES SINCE JOYSTICK CAN'T SEND 45B5: BD 69 3B 05800 AUTOP LDA DR,X MHOSE PLAYERS ORDERS 45B8: C9 01 05805 CMP #$Ol 45BA: DO OD 05810 BNE .1 45BC: BD 2A 3B 05815 LDA FLAGR,X 45BF: C9 00 05820 CMP #$00 45CI: DO 3F 05825 BNE .4 45C3: FE 15 3B 05830 INC X,X 45C6: 4C 02 46 05835 JMP .4 45C9: BD 65 3B 05840 .1 LDA DL,X 45CC: C9 01 05845 CMP #$Ol 45CE: DO OD 05850 BNE .2 45DO: BD 26 3B 05855 LDA FLAGL,X 45D3: C9 00 05860 CMP #$00 45D5: DO 2B 05865 BNE .4 45D7: DE 15 3B 05870 DEC X,X 45DA: 4C 02 46 05875 JMP .4 45DD: BD 6D 3B 05880 .2 LDA DU,X 45EO: C9 01 05885 CMP #$Ol 45E2: DO OD 05890 BNE .3 45E4: BD 2E 3B 05895 LDA FLAGU,X 45E7: C9 00 05900 CMP #$00 45E9: DO 17 05905 BNE .4 45EB: DE 1A 3B 05910 DEC Y,X 45EE: 4C 02 46 05915 JMP.4 45FI: BD 71 3B 05920 .3 LDA DD,X 45F4: C9 01 05925 CMP #$Ol 45F6: DO OA 05930 BNE .4 45F8: BD 32 3B 05935 LDA FLAGD,X 45FB: C9 00 05940 CMP #$00 45FD: DO 03 05945 BNE .4 45FF: FE 1A 3B 05950 INC Y,X 4602: 60 05955 .4 RTS 05960 *SUBROUTINE PLOTSET1 4603: BD 15 3B 05965 PLOTSETI LDA X,X 4606: 8D 01 DO 05970 STA HPOSPI 4609: BD IA 3B 05975 LDA Y,X 460C: 85 F2 05980 STA SHPML 460E: A9 88 05985 LDA /PDATA 4610: 18 05990 CLC 4611: 69 05 05995 ADC #$05 ;PLAYER IS 1.25K BEYOND START 4613: 85 F3 06000 STA SHPMH 4615: AC 62 3B 06005 LDY POINT1 4618: B9 7E 3B 06010 LDA SHPLO,Y ;POINTER TO CORRECT SHAPE 461B: 85 FO 06015 STA SHPL 461D: A9 3C 06020 LDA /SHAPES 461F: 85 Fl 06025 STA SHPH 4621: A2 01 06030 LDX #$Ol 4623: BD 58 3B 06035 LDA TEKPL,X 4626: 85 F4 06040 STA SHPMOL 4628: BD 5C 3B 06045 LDA TEMPH,X 462B: 85 F5 06050 STA SHPMOH 462D: 20 DD 44 06055 JSR PLOT 4630: 60 06060 RTS 06065 *SUBROUTINE PLOTSET2 4631: BD 15 3B 06070 PLOTSET2 LDA X,X 4634: 8D 02 DO 06075 STA HPOSP2 4637: BD 1A 3B 06080 LDA Y,X 463A: 85 F2 06085 STA SHPML 463C: A9 88 06090 LDA /PDATA 463E: 18 06095 CLC 463F: 69 06 06100 ADC #$06 ;PLAYER IS 1.5K BEYOND START 4641: 85 F3 06105 STA SHPMH 4643: AC 63 3B 06110 LDY POINT2 4646: B9 7E 3B 06115 LDA SHPLO,Y ;POINTER TO CORRECT SHAPE 4649: 85 FO 06120 STA SHPL 464B: A9 3C 06125 LDA /SHAPES 464D: 85 Fl 06130 STA SHPH 464F: A2 02 06135 LDX #$02 4651: BD 58 3B 06140 LDA TEt4PL,X 4654: 85 F4 06145 STA SHPMOL 4656: BD 5C 3B 06150 LDA TEMPH,X 4659: 85 F5 06155 STA SHPMOH 465B: 20 DD 44 06160 JSR PLOT 465E: 60 06165 RTS 06170 *SUBROUTINE PLOTSET3 465F: BD 15 3B 06175 PLOTSET3 LDA X,X 4662: 8D 03 DO 06180 STA HPOSP3 4665: BD 1A 3B 06185 LDA Y,X 4668: 85 F2 06190 STA SHPML 466A: A9 88 06195 LDA /PDATA 466C: 18 06200 CLC 466D: 69 07 06205 ADC #$07 ;PLAYER IS 1.75K BEYOND START 466F: 85 F3 06210 STA SHPMH 4671: AC 64 3B 06215 LDY POINT3 4674; B9 7E 3B 06220 LDA SHPLO,Y ;POINTER TO CORRECT SHAPE 4677: 85 FO 06225 STA SHPL 4679: A9 3C 06230 LDA /SHAPES 467B: 85 Fl 06235 STA SHPH 467D: A2 03 06240 LDX #$03 467F: BD 58 3B 06245 LDA TEMPL,X 4682: 85 F4 06250 STA SHPMOL 4684: BD 5C 3B 06255 LDA TEMPH,X 4687: 85 F5 06260 STA SHPMOH 4689: 20 DD 44 06265 JSR PLOT 468C: 60 06270 RTS 468D: BD 69 3B 06275 CORECT LDA DR,X 4690: FO 35 06280 BEQ .2 4692: BD 2A 3B 06285 .11 LDA FLAGR,X 4695: DO 06 06290 BNE .12 4697: 20 B5 45 06295 JSR ATJTOP 469A: 4C 79 47 06300 JMP FF 469D: BD 2E 3B 06305 .12 LDA FLAGU,X 46AO. DO 10 06310 BNE .13 46A2: DE 1A 3B 06315 DEC Yj 46A5: A9 00 06320 LDA #$00 46A7: 9D 69 3B 06325 STA DR,X 46AA: A9 01 06330 LDA #$Ol 46AC: 9D 6D 3B 06335 STA DU,X 46AF: 4C 79 47 06340 JMP FF 46B2: BD 32 3B 06345 .13 LDA FLAGD,X 46B5: DO OD 06350 BNE .14 46B7: FE 1A 3B 06355 INC Yj 46BA: A9 00 06360 LDA #$00 46BC: 9D 69 3B 06365 STA DR,X 46BF: A9 01 06370 LDA #$Ol 46Cl: 9D 71 3B 06375 STA DD,X 46C4: 4C 79 47 06380 .14 JMP FF 46C7: BD 65 3B 06385 .2 LDA DL,X 46CA: FO 35 06390 BEQ .3 46CC: BD 26 3B 06395 .21 LDA FLAGL,X 46CF: DO 06 06400 BNE .22 46Dl: 20 B5 45 06405 JSR AUTOP 46D4: 4C 79 47 06410 JMP FF 46D7: BD 2E 3B 06415 .22 LDA FLAGU,X 46DA: DO 10 06420 BNE .23 46DC: DE 1A 3B 06425 DEC Yj 46DF: A9 00 06430 LDA #$00 46EI: 9D 65 3B 06435 STA DL,X 46E4: A9 01 06440 LDA #$Ol 46E6: 9D 6D 3B 06445 STA DU,X 46E9: 4C 79 47 06450 JMP FF 46EC: BD 2A 3B 06455 .23 LDA FLAGR,X 46EF: DO OD 06460 BNE .24 46FI: FE IA 3B 06465 INC Y,X 46F4: A9 00 06470 LDA #$00 46F6: 9D 65 3B 06475 STA DL,X 46F9: A9 01 06480 LDA #$Ol 46FB: 9D 71 3B 06485 STA DD,X 46FE: 4C 79 47 06490 .24 JMP FF 4701: BD 6D 3B 06495 .3 LDA DU,X 4704: FO 37 06500 BEQ .4 4706: BD 2E 3B 06505 .31 LDA FLAGU,X 4709: DO 06 06510 BNE .32 470B: 20 B5 45 06515 JSR AUTOP 470E: 4C 79 47 06520 JMP FF 4711: BD 26 3B 06525 .32 LDA FLAGL,X 4714: DO 10 06530 BNE .33 4716: DE 15 3B 06535 DEC X,X 4719: A9 00 06540 LDA #$00 471B: 9D 6D 3B 06545 STA DV,X 471E: A9 01 06550 LDA #$Ol 4720: 9D 65 3B 06555 STA DL,X 4723: 4C 79 47 06560 JMP FF 4726: BD 2A 3B 06565 .33 LDA FLAGR,X 4729: C9 01 06570 CHP #$Ol 472B: FO OD 06575 BEQ .34 472D: FE 15 3B 06580 INC X,X 4730: A9 00 06585 LDA #$00 4732: 9D 6D 3B 06590 STA DU,X 4735: A9 01 06595 LDA #$Ol 4737: 9D 69 3B 06600 STA DR,X 473A: 4C 79 47 06605 .34 JHP FF 473D: BD 71 3B 06610 .4 LDA DD,X 4740: DO 03 06615 BNE .41 4742; 4C 79 47 06620 JMP FF 4745: BD 32 3B 06625 .41 LDA FLAGD,X 4748: DO 06 06630 BNE .42 474A: 20 B5 45 06635 JSR AUTOP 474D: 4C 79 47 06640 JMP FF 4750: BD 26 3B 06645 .42 LDA FLAGL,X 4753: DO 10 06650 BNE .43 4755: DE 15 3B 06655 DEC X,X 4758: A9 00 06660 LDA #$00 475A: 9D 71 3B 06665 STA DD,X 475D: A9 01 06670 LDA #$Ol 475F: 9D 65 3B 06675 STA DL,X 4762; 4C 79 47 06680 JMP FF 4765: BD 2A 3B 06685 .43 LDA FLAGR,X 4768: C9 01 06690 CMP #$Ol 476A: FO OD 06695 BEQ FF 476C: FE 15 3B 06700 INC X,X 476F: A9 00 06705 LDA #$00 4771: 9D 71 3B 06710 STA DD,X 4774: A9 01 06715 LDA #$Ol 4776; 9D 69 3B 06720 STA DR,X 4779: 60 06725 FF RTS 477A: AD 1E 3B 06730 PLACE LDA XB ;PLAYER#O ON LEFT SIDE SCREEN? 477D: C9 OA 06735 CMP #$OA 477F: BO 5C 06740 BGE .3 4781: AD 22 3B 06745 LDA YB ;PLAYER #0 ON TOP HALF SCREEN? 4784: C9 06 06750 CMP #$06 4786: BO 35 06755 BGE .2 4788: A9 B8 06760 LDA #$B8 ;PUT PLAYER AT BLOCK 17,7 (164,148) 478A: 99 15 3B 06765 STA X,Y 478D: A9 94 06770 LDA #$94 478F: 99 1A 3B 06775 STA Yj 4792: A9 00 06780 LDA #$00 4794: 99 6D 3B 06785 STA DU,Y 4797: 99 71 3B 06790 STA DD,Y 479A: 99 69 3B 06795 STA DR,Y 479D: 99 65 3B 06800 STA DL,Y 47AO: AD OA D2 06805 LDA RANDOM ;VARY THE START LEFT OR RT 47A3: C9 80 06810 CMP #$80 47A5: 90 OB 06815 BLT .15 47A7: A9 01 06820 LDA #$Ol 47A9: 99 69 3B 06825 STA DR,Y 47AC: 99 32 3B 06830 STA FLAGD,Y 47AF: 4C 30 48 06835 JMP EXIT 47B2: A9 01 06840 .15 LDA #$01 47B4: 99 65 3B 06845 STA DL,Y 47B7: 99 32 3B 06850 STA FLAGD,Y 47BA: 4C 30 48 06855 JMP EXIT 47BD: A9 A8 06860 .2 LDA #$A8 ;PUT PLAYER AT BLOCK 15,2 (168,68) 47BF: 99 15 3B 06865 STA X,Y 47C2: A9 44 06870 LDA #$44 47C4: 99 1A 3B 06875 STA Yj 47C7: A9 00 06880 LDA #$00 47C9: 99 6D 3B 06885 STA DU,Y 47CC: 99 69 3B 06890 STA DR,Y 47CF: 99 65 3B 06895 STA DL,Y 47D2: A9 01 06900 LDA #$01 47D4: 99 71 3B 06905 STA DD,Y 47D7: 99 2A 3B 06910 STA FLAGR,Y 47DA: 4C 30 48 06915 JMP EXIT 47DD: AD 22 3B 06920 .3 LDA YB ;IS PLAYER ON TOP HALF SCREEN? 47EO: C9 06 06925 CMP #$06 47E2: BO 32 06930 BGE .4 47E4: A9 40 06935 LDA #$40 ;PUT PLAYER AT BLOCK 2,7 (64,148) 47E6: 99 15 3B 06940 STA X,Y 47E9: A9 94 06945 LDA #$94 47EB: 99 1A 3B 06950 STA Yj 47EE: A9 00 06955 LDA #$00 47FO: 99 6D 3B 06960 STA DU,Y 47F3: 99 71 3B 06965 STA DD,Y 47F6: 99 65 3B 06970 STA DL,Y 47F9: 99 69 3B 06975 STA DR,Y 47FC: AD OA D2 06980 LDA RANDOM ;VARY THE START LEFT OR RT 47FF: C9 80 06985 CMP #$80 4801: 90 08 06990 BLT .35 4803: A9 01 06995 LDA #$Ol 4805: 99 65 3B 07000 STA DL,Y 4808: 4C 30 48 07005 JMP EXIT 480B: A9 01 07010 .35 LDA #$Ol 480D: 99 69 3B 07015 STA DR,Y 4810: 99 32 3B 07020 STA FLAGD,Y 4813: 4C 30 48 07025 JMP EXIT 4816: A9 50 07030 .4 LDA #$50 ;PUT PLAYER AT BLOCK 4,2 (80,68) 4818: 99 15 3B 07035 STA X,Y 481B: A9 44 07040 LDA #$44 48ID: 99 IA 3B 07045 STA Yj 4820: A9 00 07050 LDA #$00 4822: 99 65 3B 07055 STA DL,Y 4825: 99 69 3B 07060 STA DR,Y 4828: 99 6D 3B 07065 STA DU,Y 482B: A9 01 07070 LDA #$Ol 482D: 99 71 3B 07075 STA DD,Y 4830: 60 07080 EXIT RTS