0100 CMP #2 ;COME OUT? 0110 BCC MOVBAL3 ;NO, DO ROCK 3 0120 LDA RANDOM ;GET RANDOM CHANCE... 0130 BMI MOVBAL3 ;NO, HE CAN'T 0140 JMP GEORGE ;COME ON, GEORGE! 0150 ; 0160 MOVBAL3 LDA B3MOV ;ROCK 3 MOVING? 0170 CMP #1 0180 BNE Q2 ;NO! 0190 JMP MOVE3 ;MOVE IT! 0200 Q2 LDA B3DRP ;ROCK 3 DROPPING? 0210 CMP #1 0220 BEQ Q3 ;YES! 0230 LDA RANDOM ;READY TO DROP? 0240 BMI Q4 ;YES! 0250 RTS 0260 Q4 LDA #1 ;SET DROP FLAG 0270 STA B3DRP 0280 STA BAL2FLG 0290 INC OUTFLG ;INC GEORGE CHANCE 0300 JSR BAL3DRW ;DRAW ROCK 3 0310 Q3 LDA FNB3DRP ;IS ROCK 3... 0320 CMP #1 ;DROP COMPLETE? 0330 BNE DROP3 ;NO! 0340 JMP GETDIR3 ;YES, GET DIRECTION 0350 ; 0360 DROP3 JSR DOWN3 ;MOVE... 0370 JSR DOWN3 ;DOWN... 0380 JSR DOWN3 ;FOUR... 0390 JSR DOWN3 ;TIMES 0400 LDA YPOSP3 ;DROP DONE? 0410 CMP #109 0420 BCS R1 ;YES! 0430 RTS 0440 R1 LDA #1 ;SET DROP... 0450 STA FNB3DRP ;FINISH FLAG 0460 STA SO4FLG 0470 LDA #$AF ;AND SOUND! 0480 STA PITCH4 0490 RTS 0500 ; 0510 GETDIR3 LDA #1 ;SET ROCK 3 MOVE FLAG 0520 STA B3MOV 0530 LDA RANDOM ;GET RANDOM CHANCE 0540 BMI S1 0550 LDA #0 ;DOWN & RIGHT! 0560 STA B3DIR 0570 JMP MOVE3 ;MOVE IT 0580 S1 LDA #1 ;DOWN & LEFT! 0590 STA B3DIR 0600 ; 0610 MOVE3 LDA B3DIR ;GET ROCK 3 DIRECTION 0620 CMP #1 ;DOWN & LEFT? 0630 BNE T1 ;NO! 0640 JMP DNLEFT3 ;MOVE IT! 0650 T1 JMP DNRIGHT3 ;DITTO! 0660 ; 0670 GEORGE LDA #1 ;SET... 0680 STA GRGFLG ;GEORGE FLAG 0690 LDA GRGMOV ;GEORGE MOVING? 0700 CMP #1 0710 BNE U1 ;NO! 0720 JMP MOVGRG ;GO MOVE HIM! 0730 U1 LDA GRGDRP ;GEORGE DROPPING? 0740 CMP #1 0750 BEQ U2 ;YES! 0760 LDA #1 ;OK, START... 0770 STA GRGDRP ;GEORGE DROP 0780 JSR GEORGE0 ;GEORGE FACING LEFT 0790 U2 LDA FNGRDRP ;GEORGE DROP DONE? 0800 CMP #1 0810 BNE DROPGRG ;NO, DROP HIM! 0820 JMP GETDRGRG ;GET GEORGE DIRECTION 0830 ; 0840 DROPGRG JSR DOWN3 ;MOVE GEORGE... 0850 JSR DOWN3 ;DOWN... 0860 JSR DOWN3 ;FOUR... 0870 JSR DOWN3 ;TIMES! 0880 LDA YPOSP3 ;DROP DONE? 0890 CMP #98 0900 BCS V1 ;YES! 0910 RTS 0920 V1 LDA #1 ;SET GEORGE'S DROP... 0930 STA FNGRDRP ;DONE FLAG 0940 STA SO4FLG 0950 LDA #$AF ;SET SOUND 0960 STA PITCH4 0970 RTS 0980 ; 0990 GETDRGRG LDA #1 ;SET GEORGE... 1000 STA GRGMOV ;MOVING FLAG 1010 LDA PCOL ;GET DIRECTION... 1020 CMP SCOL ;BASED ON PLAYER POS. 1030 BCS RIGHT ;GO RIGHT! 1040 LDA PROW ;GET UP/DOWN 1050 CMP SROW 1060 BEQ W1 ;UP! 1070 BCC W1 ;UP! 1080 JSR GEORGE0 ;FACING LEFT & DOWN 1090 DEC SCOL ;MOVE LEFT 1100 INC SROW ;MOVE DOWN... 1110 INC SROW ;2 TIMES 1120 LDA #0 ;0 = DOWN & LEFT 1130 STA GRDIR 1140 JMP MOVGRG ;MOVE GEORGE! 1150 W1 JSR GEORGE2 ;FACING LEFT & UP 1160 DEC SCOL ;MOVE LEFT 1170 DEC SROW ;MOVE UP... 1180 DEC SROW ;2 TIMES 1190 LDA #2 ;2 = UP & LEFT 1200 STA GRDIR 1210 JMP MOVGRG ;MOVE GEORGE! 1220 RIGHT LDA PROW ;GET UP/DOWN 1230 CMP SROW 1240 BEQ X1 ;UP! 1250 BCC X1 ;UP! 1260 JSR GEORGE1 ;FACING RIGHT & DOWN 1270 INC SCOL ;MOVE RIGHT 1280 INC SROW ;MOVE DOWN... 1290 INC SROW ;2 TIMES 1300 LDA #1 ;1 = RIGHT & DOWN 1310 STA GRDIR 1320 JMP MOVGRG ;MOVE GEORGE! 1330 X1 JSR GEORGE3 ;FACING RIGHT & UP 1340 INC SCOL ;MOVE RIGHT 1350 DEC SROW ;MOVE UP... 1360 DEC SROW ;2 TIMES 1370 LDA #3 ;3 = RIGHT & UP 1380 STA GRDIR 1390 ; 1400 MOVGRG LDA GRDIR ;GET GEORGE DIRECTION 1410 CMP #0 ;DOWN & LEFT? 1420 BNE Y1 ;NO! 1430 JMP DNLEFT3 1440 Y1 CMP #1 ;DOWN & RIGHT? 1450 BNE Y2 ;NO! 1460 JMP DNRIGHT3 1470 Y2 CMP #2 ;UP & LEFT? 1480 BNE Y3 ;NO! 1490 JMP UPLEFT3 1500 Y3 JMP UPRIGHT3 1510 ; 1520 ;---------------- 1530 ;SOUND SUBROUTINE 1540 ;---------------- 1550 ; 1560 SOUND LDA SO1FLG ;SOUND 1 ON? 1570 CMP #1 1580 BEQ Z1 ;YES! 1590 JMP SO2 ;NO, DO SOUND 2 1600 Z1 LDA PITCH1 ;GET SOUND 1 PITCH 1610 STA AUDC1 1620 DEC PITCH1 ;NEXT PITCH 1630 LDA PITCH1 ;GET PITCH 1640 CMP #$A0 ;ALL DONE? 1650 BEQ Z2 ;YES! 1660 JMP SO2 1670 Z2 LDA #0 ;TURN OFF... 1680 STA AUDC1 ;SOUND 1, 1690 STA SO1FLG ;SOUND 1 FLAG, 1700 STA MOVFLG ;MOVEMENT FLAG 1710 LDA #8 1720 STA COUNT1 1730 LDA P0PF ;MAN ON SQUARE? 1740 CMP #0 1750 BNE GETLEVEL ;YES! 1760 JSR FALL ;UH-OH, HE FELL! 1770 RTS ;HE'S OK 1780 ; 1790 GETLEVEL JSR UPDATMAN ;MOVE MAN 1800 LDA LEVEL ;GO TO... 1810 CMP #1 ;APPROPRIATE... 1820 BNE AA1 ;LEVEL HANDLER! 1830 JMP LEVEL1 1840 AA1 CMP #2 1850 BNE AA2 1860 JMP LEVEL2 1870 AA2 CMP #3 1880 BNE AA4 1890 JMP LEVEL3 1900 AA4 CMP #4 1910 BNE AA5 1920 JMP LEVEL4 1930 AA5 CMP #5 1940 BNE AA6 1950 JMP LEVEL5 1960 AA6 CMP #6 1970 BNE AA7 1980 JMP LEVEL6 1990 AA7 CMP #7 2000 BNE AA8 2010 JMP LEVEL3 2020 AA8 JMP LEVEL6 2030 ; 2040 LEVEL1 LDA P0PF ;HIT 2050 CMP #1 ;PLAYFIELD 0? 2060 BNE BB1 ;NO... 2070 INC NUMSQ ;YES-INCREMENT SQUARES 2080 JSR PLAYFLD1 ;CHANGE IT TO PF1 2090 BB1 JMP SO2 2100 ; 2110 LEVEL2 LDA P0PF ;HIT 2120 CMP #1 ;PLAYFIELD 0? 2130 BNE CC1 ;NO... 2140 JSR PLAYFLD1 ;CHANGE IT TO PF1 2150 JMP SO2 ;AND PROCEED 2160 CC1 CMP #2 ;PLAYFIELD 1? 2170 BNE CC2 ;NO... 2180 INC NUMSQ ;1 MORE SQUARE 2190 JSR PLAYFLD2 ;CHANGE IT TO PF2! 2200 CC2 JMP SO2 ;AND PROCEED 2210 ; 2220 LEVEL4 LDA P0PF ;HIT PLAYFIELD 0? 2230 CMP #1 2240 BNE DD1 ;NO... 2250 INC NUMSQ ;1 MORE SQUARE! 2260 JSR PLAYFLD1 ;CHANGE TO PF1 2270 JMP SO2 ;PROCEED! 2280 DD1 DEC NUMSQ ;DEDUCT SQUARE! 2290 JSR PLAYFLD0 ;BACK TO PF0 2300 JMP SO2 ;AND GO ON. 2310 ; 2320 LEVEL3 LDA P0PF ;HIT PLAYFIELD 0? 2330 CMP #1 2340 BNE EE1 ;NO... 2350 JSR PLAYFLD1 ;CHANGE TO PF1 2360 JMP SO2 ;AND PROCEED 2370 EE1 CMP #2 ;HIT PLAYFIELD 2? 2380 BNE EE2 ;NO... 2390 JSR PLAYFLD2 ;CHANGE TO PF2 2400 JMP SO2 ;AND PROCEED 2410 EE2 CMP #4 ;HIT PLAYFIELD 2? 2420 BNE SO2 ;NO... 2430 INC NUMSQ ;1 MORE SQUARE 2440 JSR PLAYFLD3 ;CHANGE TO PF3 2450 JMP SO2 ;AND PROCEED 2460 ; 2470 LEVEL5 LDA P0PF ;HIT PLAYFIELD 0? 2480 CMP #1 2490 BNE FF1 ;NO... 2500 JSR PLAYFLD1 ;CHANGE TO PF1 2510 JMP SO2 ;PROCEED 2520 FF1 CMP #2 ;HIT PLAYFIELD 1? 2530 BNE FF2 ;NO... 2540 INC NUMSQ ;1 MORE SQUARE 2550 JSR PLAYFLD2 ;CHANGE TO PF2 2560 JMP SO2 ;PROCEED 2570 FF2 DEC NUMSQ ;1 LESS SQUARE 2580 JSR PLAYFLD1 ;CHANGE TO PF1 2590 JMP SO2 ;PROCEED 2600 ; 2610 LEVEL6 LDA P0PF ;HIT PLAYFIELD 0? 2620 CMP #1 2630 BNE GG1 ;NO... 2640 JSR PLAYFLD1 ;CHANGE TO PF1 2650 JMP SO2 ;PROCEED 2660 GG1 CMP #2 ;HIT PLAYFIELD 1? 2670 BNE GG2 ;NO... 2680 JSR PLAYFLD2 ;CHANGE TO PF2 2690 JMP SO2 ;PROCEED 2700 GG2 CMP #4 ;HIT PLAYFIELD 2? 2710 BNE GG3 ;NO... 2720 INC NUMSQ ;1 MORE SQUARE 2730 JSR PLAYFLD3 ;CHANGE TO PF3 2740 JMP SO2 ;PROCEED 2750 GG3 DEC NUMSQ ;1 LESS SQUARE 2760 JSR PLAYFLD2 ;CHANGE TO PF2 2770 ; 2780 SO2 LDX #0 ;ROCK 1 2790 LDY #0 2800 JSR BALCHK ;SEE IF IT FELL 2810 LDA FALOFF ;DID IT FALL? 2820 CMP #1 2830 BEQ HH1 ;YES! 2840 JMP SO3 ;NO, PROCEED 2850 HH1 LDY YPOSP1 ;ERASE ROCK 1 2860 LDX #0 2870 TXA 2880 HH2 STA PLAY1,Y 2890 INX 2900 INY 2910 CPX #10 2920 BNE HH2 2930 LDA #0 ;RESET DROP FLAG 2940 STA DRP1 2950 LDX #0 ;CLR OTHER FLAGS 2960 JSR CLRFLG 2970 ; 2980 SO3 LDA GRNFLG ;GREEN MAN ACTIVE? 2990 CMP #1 3000 BNE II99 ;NO! 3010 JMP GRNCHK ;SEE IF HE FELL 3020 II99 LDX #1 ;ROCK 2 3030 LDY #2 3040 JSR BALCHK ;SEE IF IT FELL 3050 LDA FALOFF ;DID ROCK 2 FALL? 3060 CMP #1 3070 BEQ II1 ;YES! 3080 JMP SO4 ;NO, PROCEED 3090 II1 LDY YPOSP2 ;ERASE ROCK 2 3100 LDX #0 3110 TXA 3120 II2 STA PLAY2,Y 3130 INX 3140 INY 3150 CPX #10 3160 BNE II2 3170 LDA #0 ;RESET DROP FLAG 3180 STA DRP2 3190 STA BAL1FLG 3200 LDX #1 ;AND OTHER FLAGS 3210 JSR CLRFLG 3220 ; 3230 SO4 LDA GRGFLG ;GEORGE ACTIVE? 3240 CMP #1 3250 BEQ GRGCHK ;YES! 3260 LDX #2 ;CHECK ROCK 3 3270 LDY #4 3280 JSR BALCHK ;SEE IF IT FELL 3290 LDA FALOFF ;DID IT FALL? 3300 CMP #1 3310 BEQ JJ1 ;YES! 3320 RTS 3330 JJ1 LDY YPOSP3 ;ERASE ROCK 3 3340 LDX #0 3350 TXA 3360 JJ2 STA PLAY3,Y 3370 INY 3380 INX 3390 CPX #10 3400 BNE JJ2 3410 LDA #0 ;CLEAR ROCK 3 FLAG 3420 STA BAL2FLG 3430 LDX #2 ;AND OTHER FLAGS 3440 JSR CLRFLG 3450 RTS 3460 ; 3470 GRGCHK LDA SO4FLG ;SOUND ON? 3480 CMP #1 3490 BEQ KK1 ;YES! 3500 RTS 3510 KK1 LDA PITCH4 ;SET VOLUME 3520 STA AUDC4 3530 DEC PITCH4 ;NEXT VOLUME 3540 LDA PITCH4 ;SOUND DONE? 3550 CMP #$A0 3560 BEQ KK2 ;YES! 3570 RTS 3580 KK2 LDA P3PF ;DID GEORGE... 3590 CMP #0 ;HIT PF? 3600 BNE KK3 ;YES! 3610 LDA #5 ;ADD 500 POINTS... 3620 STA SUM ;TO SCORE 3630 JSR ADD200 3640 JSR RESET ;RESET GEORGE 3650 RTS 3660 KK3 LDA #0 ;ZERO... 3670 STA AUDC4 ;SOUND 4, 3680 STA SO4FLG ;SOUND 4 FLAG 3690 STA GRGMOV ;GEORGE MOVE FLAG 3700 LDA #8 3710 STA COUNT4 3720 RTS 3730 ; 3740 GRNCHK LDA SO3FLG ;SOUND 3 ON? 3750 CMP #1 3760 BEQ LL1 ;YES! 3770 JMP SO4 ;NO, DO SOUND 4 3780 LL1 LDA PITCH3 ;SET SOUND 3 VOLUME 3790 STA AUDC3 3800 DEC PITCH3 ;NEXT VOLUME 3810 LDA PITCH3 ;SOUND 3 DONE? 3820 CMP #$A0 3830 BEQ LL2 ;YES! 3840 JMP SO4 ;NO, DO SOUND 4 3850 LL2 LDA #0 ;TURN OFF SOUND 3 3860 STA AUDC3 3870 LDA P2PF ;DID GREEN MAN... 3880 CMP #0 ;HIT PLAYFIELD? 3890 BNE GOBACK ;YES! 3900 HITGRN JSR ERASEGRN ;GREEN MAN GONE 3910 LDA #0 ;RESET GREEN MAN 3920 STA GRNDRP 3930 STA GRNFNDRP 3940 STA GRNFLG 3950 STA GRNMOV 3960 STA SO3FLG 3970 STA DRP2 3980 LDA #10 ;RESET ROW 3990 STA GROW 4000 LDA #8 ;RESET COLUMN 4010 STA GCOL 4020 STA COUNT3 4030 LDA #45 4040 STA YPOSP2 4050 LDA #116 4060 STA HPOSP2 4070 STA XPOSP2 4080 RTS 4090 GOBACK LDA #0 ;RESET SOUND 3 4100 STA SO3FLG 4110 STA GRNMOV 4120 LDA #8 4130 STA COUNT3 4140 LDA P2PF ;DID GREEN HIT PF0? 4150 CMP #1 4160 BNE MM4 ;NO! 4170 RTS 4180 MM4 JSR DECNUM ;DEC # SQUARES 4190 LDA # PF0 4220 STA FILE+1 4230 LDA GCOL ;SET COLUMN 4240 STA COL 4250 LDA GROW ;AND ROW 4260 STA ROW 4270 JSR CHANGE ;CHANGE IT! 4280 RTS 4290 DECNUM LDA LEVEL ;GET LEVEL 4300 CMP #1 4310 BEQ NN1 ;LEVEL 1 4320 CMP #2 4330 BEQ NN2 ;LEVEL 2 4340 CMP #3 4350 BEQ NN4 ;LEVEL 3 4360 CMP #4 4370 BEQ NN1 ;LEVEL 4 4380 CMP #5 4390 BEQ NN2 ;LEVEL 5 4400 JMP NN4 ;LEVEL 6 4410 ; 4420 NN1 LDA P2PF ;HIT PF1? 4430 CMP #2 4440 BEQ DECR ;YES! 4450 RTS 4460 NN2 LDA P2PF ;HIT PF2? 4470 CMP #4 4480 BEQ DECR ;YES! 4490 RTS 4500 NN4 LDA P2PF ;HIT PF3? 4510 CMP #8 4520 BEQ DECR ;YES! 4530 RTS 4540 DECR DEC NUMSQ ;1 LESS SQUARE 4550 RTS 4560 BALCHK LDA SO2FLG,X ;SOUND 2 ON? 4570 CMP #1 4580 BEQ OO1 ;YES! 4590 RTS 4600 OO1 LDA PITCH2,X ;SET VOLUME 4610 STA AUDC2,Y 4620 DEC PITCH2,X ;NEXT VOLUME 4630 LDA PITCH2,X ;ALL DONE? 4640 CMP #$A0 4650 BEQ OO2 ;YES! 4660 RTS 4670 OO2 LDA #0 ;TURN OFF... 4680 STA AUDC2,Y ;SOUND 2 4690 LDA P1PF,X ;DID ROCK... 4700 CMP #0 ;HIT PF? 4710 BNE OO3 ;YES! 4720 LDA #1 ;UH-OH! IT FELL! 4730 STA FALOFF ;SET FALL FLAG 4740 RTS 4750 OO3 LDA #0 ;RESET SOUND FLAG 4760 STA SO2FLG,X 4770 STA B1MOV,X 4780 LDA #8 4790 STA COUNT2,X 4800 RTS 4810 ; 4820 CLRFLG LDA #$00 ;RESET MISC FLAGS 4830 STA B1MOV,X 4840 STA SO2FLG,X 4850 STA B1DRP,X 4860 STA FNB1DRP,X 4870 STA FALOFF 4880 LDA #8 4890 STA COUNT2,X 4900 LDA #45 4910 STA YPOSP1,X 4920 LDA HPOS,X 4930 STA HPOSP1,X 4940 STA XPOSP1,X 4950 RTS 4960 ; 4970 UPDATMAN LDA DIRECT ;GET DIR... 4980 CMP #9 4990 BEQ PP1 ;DOWN & LEFT 5000 CMP #5 5010 BEQ PP2 ;DOWN & RIGHT 5020 CMP #6 5030 BEQ PP4 ;UP & RIGHT 5040 CMP #10 5050 BEQ PP3 ;UP & LEFT 5060 RTS 5070 ; 5080 PP1 DEC PCOL ;MOVE LEFT 5090 INC PROW ;MOVE DOWN... 5100 INC PROW ;2 TIMES 5110 RTS 5120 PP2 INC PCOL ;MOVE RIGHT 5130 INC PROW ;MOVE DOWN... 5140 INC PROW ;2 TIMES 5150 RTS 5160 PP3 DEC PCOL ;MOVE LEFT 5170 DEC PROW ;MOVE UP... 5180 DEC PROW ;2 TIMES 5190 RTS 5200 PP4 INC PCOL ;MOVE RIGHT 5210 DEC PROW ;MOVE UP... 5220 DEC PROW ;2 TIMES 5230 RTS 5240 ; 5250 PCUBPOS LDA PCOL ;SAVE SQUARE POS. 5260 STA COL 5270 LDA PROW 5280 STA ROW 5290 RTS 5300 ; 5310 ;----- 5320 ;DELAY 5330 ;----- 5340 DELAY LDX #$FF ;TIME DELAY 5350 QQ1 LDY TIME 5360 QQ2 DEY 5370 BNE QQ2 5380 DEX 5390 BNE QQ1 5400 RTS 5410 ; 5420 ;------------- 5430 ;SETUP ROUTINE 5440 ;------------- 5450 ; 5460 SETUP LDA START ;INIT ALL? 5470 CMP #$00 5480 BNE PART ;NO... 5490 LDA #$00 ;YES... 5500 STA NUMSQ 5510 LDA #$10 ;RESET 5520 LDX #0 ;SCORE... 5530 RESET1 STA SCORE,X 5540 INX 5550 CPX #$06 5560 BNE RESET1 5570 ; 5580 PART LDA #$00 ;SET FLG'S 5590 LDX #0 ;TO ZERO.. 5600 SETZERO STA BACK,X 5610 INX 5620 CPX #100 5630 BNE SETZERO 5640 LDA #$08 ;SET COUNT 5650 STA COUNT1 5660 STA COUNT2 5670 STA COUNT3 5680 STA COUNT4 5690 ; 5700 LDA #9 ;SET PLAYER 5710 STA PCOL ;COLUMN & 5720 LDA #8 ;ROW... 5730 STA PROW 5740 ; 5750 LDA #10 ;SET GEORGE 5760 STA SCOL ;&GREEN 5770 STA SROW ;COLUMN... 5780 STA GROW 5790 LDA #8 5800 STA GCOL 5810 ; 5820 LDA #124 ;PM DATA.. 5830 STA PXPOS 5840 STA HPOSP0 5850 LDA #85 5860 STA PYPOS 5870 LDA #116 5880 STA XPOSP1 5890 STA XPOSP2 5900 STA HPOSP1 5910 STA HPOSP2 5920 STA HPOS 5930 STA HPOS+1 5940 LDA #132 5950 STA XPOSP3 5960 STA HPOS+2 5970 STA HPOSP3 5980 LDA #45 5990 STA YPOSP1 6000 STA YPOSP2 6010 STA YPOSP3 6020 ; 6030 CLC ;SET UP... 6040 LDA #170 ;SOUND... 6050 STA AUDF1 ;FREQUENCIES 6060 ADC #10 6070 STA AUDF2 6080 ADC #10 6090 STA AUDF3 6100 ADC #10 6110 STA AUDF4 6120 ; 6130 LDA #$01 ;CLR COLLISIONS 6140 STA HITCLR 6150 ; 6160 PMCLR LDA #$00 ;ERASE P/M 6170 LDX #$FF ;MEMORY 6180 ERASEMEM STA PLAY0,X 6190 STA PLAY1,X 6200 STA PLAY2,X 6210 STA PLAY3,X 6220 DEX 6230 BNE ERASEMEM 6240 RTS ;RETURN... 6250 ; 6260 ;--------------- 6270 ;FIGURES FOR MAN 6280 ;--------------- 6290 ; 6300 FIG1 LDA DIRFLG ;GET MOVE DIRECTION 6310 CMP #9 ;DOWN & LEFT? 6320 BEQ RR2 ;YES! 6330 LDY PYPOS ;DRAW FIGURE 1 6340 LDX #0 6350 RR1 LDA FIG1DAT,X 6360 STA PLAY0,Y 6370 INY 6380 INX 6390 CPX #16 6400 BNE RR1 6410 RR2 RTS 6420 ; 6430 FIG2 LDA DIRFLG ;GET MOVE DIRECTION 6440 CMP #5 ;DOWN & RIGHT? 6450 BEQ SS2 ;YES! 6460 JSR ERASEMAN ;ERASE MAN 6470 LDY PYPOS ;DRAW FIGURE 2 6480 LDX #0 6490 SS1 LDA FIG2DAT,X 6500 STA PLAY0,Y 6510 INY 6520 INX 6530 CPX #16 6540 BNE SS1 6550 SS2 RTS 6560 ; 6570 FIG3 LDA DIRFLG ;GET DIRECTION 6580 CMP #10 ;UP & LEFT? 6590 BEQ TT2 ;YES! 6600 JSR ERASEMAN ;ERASE MAN 6610 LDY PYPOS ;DRAW FIGURE 3 6620 LDX #0 6630 TT1 LDA FIG3DAT,X 6640 STA PLAY0,Y 6650 INY 6660 INX 6670 CPX #15 6680 BNE TT1 6690 TT2 RTS 6700 ; 6710 FIG4 LDA DIRFLG ;GET DIRECTION 6720 CMP #6 ;UP & RIGHT? 6730 BEQ UU2 ;YES! 6740 JSR ERASEMAN ;ERASE MAN 6750 LDY PYPOS ;DRAW FIGURE 4 6760 LDX #0 6770 UU1 LDA FIG4DAT,X 6780 STA PLAY0,Y 6790 INY 6800 INX 6810 CPX #15 6820 BNE UU1 6830 UU2 RTS 6840 GRN0 JSR ERASEGRN ;ERASE GREEN MAN 6850 LDY YPOSP2 ;DRAW GREEN MAN... 6860 LDX #$00 ;FACING RIGHT 6870 VV1 LDA GRN1DAT,X 6880 STA PLAY2,Y 6890 INX 6900 INY 6910 CPX #13 6920 BNE VV1 6930 JSR SETGRN ;SET GREEN PARAMETERS 6940 RTS 6950 ; 6960 GRN1 JSR ERASEGRN ;ERASE GREEN MAN 6970 LDY YPOSP2 ;DRAW GREEN MAN... 6980 LDX #0 ;FACING LEFT 6990 WW1 LDA GRN2DAT,X 7000 STA PLAY2,Y 7010 INY 7020 INX 7030 CPX #13 7040 BNE WW1 7050 JSR SETGRN ;SET GREEN PARAMETERS 7060 RTS 7070 ; 7080 ERASEGRN LDY YPOSP2 ;ERASE GREEN MAN 7090 LDX #0 7100 TXA 7110 XX1 STA PLAY2,Y 7120 INX 7130 INY 7140 CPX #15 7150 BNE XX1 7160 RTS 7170 ; 7180 SETGRN LDA #13 ;GREEN 13 LINES TALL 7190 STA LENGTH 7200 LDA #11 7210 STA ADDNUM 7220 LDA #198 ;AND HE'S GREEN! 7230 STA PCOLR2 7240 RTS 7250 ; 7260 ; 7270 ;ERASE MAN SUB 7280 ; 7290 ERASEMAN LDY PYPOS 7300 LDX #$00 7310 LDA #$00 7320 YY1 STA PLAY0,Y 7330 INY 7340 INX 7350 CPX #20 7360 BNE YY1 7370 RTS 7380 ; 7390 ;FIGURES FOR GEORGE !! 7400 ; 7410 GEORGE0 JSR ERASEGRG ;ERASE GEORGE 7420 LDY YPOSP3 ;DRAW GEORGE... 7430 LDX #0 ;IN POSISION 0 7440 ZZ1 LDA GRG0DAT,X 7450 STA PLAY3,Y 7460 INY 7470 INX 7480 CPX #18 7490 BNE ZZ1 7500 JSR SETGRG ;SET GEORGE PARAMETERS 7510 RTS 7520 ; 7530 GEORGE1 JSR ERASEGRG ;ERASE GEORGE 7540 LDY YPOSP3 ;DRAW GEORGE... 7550 LDX #0 ;IN POSITION 1 7560 AAA1 LDA GRG1DAT,X 7570 STA PLAY3,Y 7580 INY 7590 INX 7600 CPX #18 7610 BNE AAA1 7620 RTS 7630 ; 7640 GEORGE2 JSR ERASEGRG ;ERASE GEORGE 7650 LDY YPOSP3 ;DRAW GEORGE... 7660 LDX #0 ;IN POSITION 2 7670 BBB1 LDA GRG2DAT,X 7680 STA PLAY3,Y 7690 INY 7700 INX 7710 CPX #18 7720 BNE BBB1 7730 RTS 7740 ; 7750 GEORGE3 JSR ERASEGRG ;ERASE GEORGE 7760 LDY YPOSP3 ;DRAW GEORGE... 7770 LDX #0 ;IN POSITION 3 7780 CCC1 LDA GRG3DAT,X 7790 STA PLAY3,Y 7800 INY 7810 INX 7820 CPX #18 7830 BNE CCC1 7840 RTS 7850 ; 7860 SETGRG LDA #19 ;GEORGE 19 LINES TALL 7870 STA LENGTH3 7880 LDA #16 7890 STA ADDNUM3 7900 LDA #86 ;GEORGE PURPLE! 7910 STA PCOLR3 7920 RTS 7930 ; 7940 ERASEGRG LDY YPOSP3 ;ERASE GEORGE 7950 LDX #0 7960 TXA 7970 DDD1 STA PLAY3,Y 7980 INY 7990 INX 8000 CPX #20 8010 BNE DDD1 8020 RTS 8030 ; 8040 ;----------------- 8050 ;CHANGE SQUARE SUB 8060 ;----------------- 8070 ; 8080 CHANGE LDA ROW ;GET ROW, 8090 STA LO ;SAVE IN... 8100 LDA #0 ;MULT AREA 8110 STA HI 8120 ASL LO ;*2 8130 ASL LO ;*4 8140 LDA LO ;SAVE *4 VALUE 8150 STA TIMES4 8160 ASL LO ;*8 8170 ASL LO ;*16 8180 ROL HI 8190 LDA LO ;+*4 = *20 8200 CLC 8210 ADC TIMES4 8220 STA LO 8230 LDA HI 8240 ADC #0 8250 STA HI 8260 LDA LO ;NOW ADD COLUMN 8270 CLC 8280 ADC COL 8290 STA LO 8300 LDA HI 8310 ADC #0 8320 STA HI 8330 LDA LO ;NOW DISPLAY START 8340 CLC 8350 ADC # DISP 8390 STA HI 8400 LDY #1 8410 LDA (FILE),Y ;GET RIGHT OF SQUARE 8420 STA (LO),Y ;PUT ON SCREEN 8430 DEY 8440 LDA (FILE),Y ;GET LEFT OF SQUARE 8450 STA (LO),Y ;PUT ON SCREEN 8460 RTS ;ALL DONE! 8470 ; 8480 ;------------- 8490 ;FALL OFF SUB 8500 ;------------- 8510 FALL LDA #$04 ;SET PRIOR 8520 STA PRIOR 8530 LDA #2 8540 STA TIME 8550 JSR TURNOFF 8560 LDA #$AA 8570 STA AUDC1 8580 EEE1 LDA PYPOS ;GET YPOS 8590 STA AUDF1 ;MAKE SO... 8600 CMP #240 ;OFF SCR... 8610 BEQ ENDLP ;YES... 8620 JSR DOWN0 ;NO... 8630 JSR DELAY ;DELAY... 8640 JMP EEE1 ;DO AGAIN 8650 ENDLP LDA #$6F 8660 STA AUDC1 8670 CLC 8680 LDA #130 8690 FFF1 STA AUDF1 8700 ADC #1 8710 JSR DELAY 8720 CMP #210 8730 BNE FFF1 8740 LDA #$00 8750 STA AUDF1 8760 STA AUDC1 8770 LDA #3 ;3=FALL 8780 STA BACK 8790 RTS 8800 ;--------- 8810 ;DRAW ROCK 8820 ;--------- 8830 BAL1DRW LDY YPOSP1 ;DRAW ROCK 1 8840 LDX #$00 8850 GGG1 LDA BALDAT,X 8860 STA PLAY1,Y 8870 INY 8880 INX 8890 CPX #10 8900 BNE GGG1 8910 RTS 8920 ; 8930 BAL2DRW LDY YPOSP2 ;DRAW ROCK 2 8940 LDX #0 8950 HHH1 LDA BALDAT,X 8960 STA PLAY2,Y 8970 INX 8980 INY 8990 CPX #10 9000 BNE HHH1 9010 LDA #10 ;SET ROCK PARAMS 9020 STA LENGTH ;(INSTEAD OF... 9030 LDA #8 ;GREEN MAN) 9040 STA ADDNUM 9050 LDA #52 9060 STA PCOLR2 9070 RTS 9080 ; 9090 BAL3DRW LDY YPOSP3 ;DRAW ROCK 3 9100 LDX #0 9110 III1 LDA BALDAT,X 9120 STA PLAY3,Y 9130 INY 9140 INX 9150 CPX #10 9160 BNE III1 9170 LDA #10 ;SET ROCK PARAMS 9180 STA LENGTH3 ;(INSTEAD OF... 9190 LDA #8 ;GEORGE!) 9200 STA ADDNUM3 9210 LDA #52 9220 STA PCOLR3 9230 RTS 9240 ; 9250 ;------------- 9260 ;MOVEMENT SUBS 9270 ;------------- 9280 ; 9290 DNLEFT0 JSR FIG1 ;SHAPE... 9300 LDA #1 9310 STA MOVFLG 9320 JSR LEFT0 ;MOVE... 9330 JSR DOWN0 9340 JSR DOWN0 9350 DEC COUNT1 9360 BNE JJJ1 9370 JSR SETFLG0 ;RETURN 9380 JJJ1 RTS 9390 ; 9400 DNRIGHT0 JSR FIG2 ;SHAPE... 9410 LDA #1 9420 STA MOVFLG 9430 JSR RIGHT0 ;MOVE... 9440 JSR DOWN0 9450 JSR DOWN0 9460 DEC COUNT1 ;DONE... 9470 BNE KKK1