20 REM AGOG1 40 REM all by JS Swiszczowski 80 : 90 final=TRUE 420 ADD=&70:OLD=&72:NEW=&74:OLD0=&76:NEW0=&78:ROWS=&80 460 !ADD=&280 560 DIM c 100 580 L%=31:PROCass 590 FOR M%=2 TO 0 STEP -1 610 L%=31:H%=9:r%=49:?ROWS=H% 620 PROCold(2,2):F%=2^(2-M%):Q%=M%*12 630 MODE M% 632 PRINTTAB(F%*10-10,30)"Press ";:COLOUR135:COLOUR0:PRINT"SPACE";CHR$20;" for menu";:VDU30 635 MOVE 64*(10*(F%-1)+6)DIV F%,64:DRAW 8*(80*(F%-1)+87)DIV F%,64 640 IF M%=1 THEN VDU19,3,6;0; 660 IF M%=2 THEN FOR i%=8 TO 15:VDU19,i%,(16-i%)MOD8;0;:NEXT 740 PROCagog(28,416,.5) 760 PROCmove 780 PROClots 800 TIME=0:REPEATUNTIL TIME>200 805 c?44=114-c?44 806 c?53=114-c?53 810 NEXT M% 820 GOTO 9000 1020 : 1060 DEFPROCass 1140 IF L%*8>256 THEN STOP 1180 FORI%=0TO2STEP2:P%=c 1220 [OPTI% 1260 LDY #(L%*8)MOD256:BNE MAIN:LDA #1:STA MLOC+1:STA MLOC2+1 1300 .MAIN 1340 LDA OLD0:CLC 1380 .MLOC ADC#1 \ 0 or 1 1420 STA OLD 1460 LDA OLD0+1:ADC#0:STA OLD+1 1500 LDA NEW0:CLC 1540 .MLOC2 ADC#1 \ 0 or 1 1580 STA NEW 1620 LDA NEW0+1:ADC#0:STA NEW+1 1660 LDX ROWS 1700 .L1:LDY #(L%*8-1)MOD256 1780 .L2:LDA (OLD),Y:AND #255:STA (NEW),Y:DEY:BNE L2 2020 LDA (OLD),Y:AND#255:STA (NEW),Y 2140 LDA OLD:CLC:ADC ADD:STA OLD 2300 LDA OLD+1:ADC ADD+1:STA OLD+1 2420 LDA NEW:CLC:ADC ADD:STA NEW 2580 LDA NEW+1:ADC ADD+1:STA NEW+1 2700 DEX:BNE L1 2780 RTS:]NEXT 2820 ENDPROC 2860 : 2900 DEFPROCbox 2940 MOVEX0%*16,1023-Y0%*32:GCOL0,2-(M%=2) 2980 DRAWX0%*16,1024-(Y0%+H%)*32 3020 DRAW(X0%+L%)*16-4,1024-(Y0%+H%)*32 3060 DRAW(X0%+L%)*16-4,1023-Y0%*32 3100 DRAWX0%*16,1023-Y0%*32 3140 ENDPROC 3180 : 3220 DEFPROClots 3221 L%=31:PROCbox 3222 LOCAL B%,T%:B%=TRUE 3225 PROCold(1,2) 3240 PROCass:PROCbox 3280 c?53=73:c?44=73 3300 T%=25:X1%=80-L%:Y1%=2 3420 REPEAT:PROCc 3620 Y1%=Y1%+6:X1%=X1%-16 3700 z=INKEY(T%) 3740 UNTIL X1%<0 OR Y1%+H%>32 3820 ENDPROC 4300 : 4340 DEFPROCagog(x0%,y0%,f) 4380 LOCAL A%,B%,J%,N%,R%,X%,Y%,F$,X$ 4420 RESTORE 5620 4460 R%=3:C%=1:R%=3:N%=1+M%*(M%+1) 4500 B%=TRUE 4540 REPEAT:A%=TRUE:K%=85 4580 GCOLR%,C%:C%=C%MOD N% +1 4620 READ X$,Y%:F$=LEFT$(X$,1) 4660 IF INSTR("MPE",F$) THEN X%=EVAL(MID$(X$,2)):PROCdec ELSE X%=VAL(X$) 4700 IF A% THEN PLOT K%,x0%+X%*f,y0%+Y%*f 4740 X1%=r%:Y1%=Y0%:PROCc:Y1%=20:PROCc:X1%=1:PROCc 4780 B%=FALSE 4820 UNTIL F$="E" 4822 ENDPROC 4824 : 4828 DEFPROCmove 4860 B%=TRUE 4880 Y1%=20:PROCold(r%-1,Y0%):L%=32:PROCass 4900 FOR J%=-1 TO 1 STEP2 4910 IF J%=1 THEN Y1%=2:PROCold(r%,20) 4940 *FX21 5020 FOR Z%=1 TO r%-1:X1%=-Z%*J%-r%*(J%=1) 5060 IF INKEY(7) 5100 PROCc 5220 NEXT:NEXT 5260 ENDPROC 5300 : 5340 DEFPROCc 5380 !NEW0=&2FFF+Y1%*640+X1%*8 5400 SOUND1,1,X1%+Y1%+Q%,1 5404 SOUND2,2,X1%-Y1%+Q%,1 5408 SOUND3,3,Y1%-X1%+Q%,1 5420 IF B% THEN 5520 5460 c?53=114-c?53 5500 c?44=114-c?44 5520 *FX19 5540 CALL c 5560 IF INKEY(-99) THEN 9000 5580 ENDPROC 5620 : 5660 DATA M40,540,M140,600,208,980 5700 DATA M240,640,300,680 5740 DATA M112,700,M260,770,260,712 5780 DATA M360,680,M392,552,460,600,500,960 5820 DATA M380,900,364,800,468,740 5860 DATA M576,800,M576,908,670,1000,740,924 5900 DATA 712,808,644,732,576,800 5940 DATA 576,908 5980 DATA P440*f,110*f 6020 DATA M360,680,M380,540,460,600,500,960 6060 DATA M380,900,360,780,470,750 6100 DATA E0,0 6140 : 6180 DEFPROCdec 6220 IF F$="M" THEN K%=4:ENDPROC 6300 A%=FALSE 6340 IF F$="P" THEN x0%=x0%+X%:y0%=y0%+Y% 6500 ENDPROC 7000 : 7010 DEFPROCold(a%,b%) 7070 !OLD0=&2FFF+a%*8+b%*640 7077 X0%=a%:Y0%=b% 7080 ENDPROC 7090 : 7100 DEFPROCnew(a%,b%) 7110 !NEW0=&2FFF+a%*8+b%*640 7117 X1%=a%:Y1%=b% 7120 ENDPROC 9000 : 9005 *FX21 9010 IF final THEN CHAIN "!MENU"