100 REM ******************
110 REM * * 120 REM * MELTDOWN * 130 REM * * 140 REM * By Robin Nixon * 150 REM * * 160 REM * (c) Computing * 170 REM * with the * 180 REM * Amstrad * 190 REM * * 200 REM ****************** 210 REM 220 MODE 1 230 DEFINT a-z 240 DIM a(9,9):tt=32:x=0:y=0:bflag=0 250 savescr=&8000:restscr=&800C:gcol=&8018 260 INK 0,10:INK 1,26:INK 2,0:INK 3,2:BORDER 10 270 IF HIMEM=&3FFF THEN GOTO 290 280 MEMORY &3FFF 290 GOSUB 770 300 IF PEEK(&8024)=1 THEN GOTO 330 310 GOSUB 460 320 CALL savescr 330 IF PEEK(&8024)=1 THEN INK 1,10:INK 2,10:INK 3,10:CALL restscr:INK 1,26:INK 2,0:INK 3,2 340 POKE &8024,1 350 p=1:LOCATE 1,1:PEN 1:PAPER 2:PRINT"WHITE TO PLAY" 360 PAPER 0:LOCATE 1,3:PRINT " ":LOCATE 1,3 370 GOSUB 1360 380 IF SGN(a(x,y))<>SGN(p) AND a(x,y)<>0 THEN GOTO 350 390 GOSUB 1140 400 p=-1:LOCATE 1,1:PEN 3:PAPER 2:PRINT"BLUE TO PLAY" 410 PAPER 0:LOCATE 1,3:PRINT STRING$(3," "):LOCATE 1,3 420 GOSUB 1360 430 IF SGN(a(x,y))<>SGN(p) AND a(x,y)<>0 THEN GOTO 400 440 GOSUB 1140 450 GOTO 350 460 PEN 2:PAPER 3:LOCATE 31,1:PRINT" MELTDOWN "; 470 LOCATE 31,2:PRINT"By R.Nixon"; 480 PLOT 1000,1000,2 490 FOR x=2 TO 320 STEP 2 500 MOVE x,198+x*0.5:DRAW x,200-x*0.5 510 MOVE 638-x,198+x*0.5:DRAW 638-x,200-x*0.5 520 NEXT 530 PLOT 1000,1000,1 540 y=0 550 FOR x=0 TO 320 STEP tt 560 MOVE x,200-y:DRAW x+318,358-y 570 MOVE 638-x,200-y:DRAW 320-x,358-y 580 y=y+16 590 NEXT 600 FOR y=196 TO 166 STEP -2 610 PLOT 0,y,3:DRAW 318,y-158 620 PLOT 638,y,2:DRAW 320,y-158 630 NEXT 640 PLOT 0,196,1:DRAW 0,164:DRAW 318,6 650 MOVE 320,6:DRAW 638,164:DRAW 638,196 660 MOVE 318,6:DRAW 318,38 670 MOVE 320,6:DRAW 320,38 680 y=0 690 FOR x=0 TO 288 STEP tt 700 PEN 1:PAPER 3:CALL gcol 710 MOVE x+4,182-y:TAG:PRINT CHR$(x/tt+65);:TAGOFF 720 PEN 3:PAPER 2:CALL gcol 730 MOVE x+332,y+38:TAG:PRINT CHR$(x/tt+48);:TAGOFF 740 y=y+16 750 NEXT 760 RETURN 770 RESTORE 830 780 FOR x=&8000 TO &8023 790 READ a:POKE x,a:NEXT 800 REM 810 REM ** Save screen 820 REM 830 DATA &01,&00,&40 840 DATA &11,&00,&40 850 DATA &21,&00,&c0 860 DATA &ED,&B0 870 DATA &C9 880 REM 890 REM ** Restore screen 900 REM 910 DATA &01,&00,&40 920 DATA &11,&00,&c0 930 DATA &21,&00,&40 940 DATA &ED,&B0 950 DATA &C9 960 REM 970 REM ** Set graphic pen & paper 980 REM 990 DATA &CD,&93,&BB 1000 DATA &CD,&DE,&BB 1010 DATA &CD,&99,&BB 1020 DATA &C3,&E4,&BB 1030 RETURN 1040 PAPER 2 1050 IF a(x1,y1)<0 THEN PEN 3 1060 IF a(x1,y1)>0 THEN PEN 1 1070 IF a(x1,y1)=0 THEN PEN 2 1080 CALL gcol 1090 MOVE x1*tt+y1*tt+24,y1*16-x1*16+206 1100 a$=CHR$(ABS(a(x1,y1))+48):IF a$="4" THEN a$=CHR$(231):GOTO 1120 1110 IF a$>"4" THEN a$=CHR$(238) 1120 TAG:PRINT a$;:TAGOFF 1130 RETURN 1140 PAPER 0:LOCATE 1,1:PRINT STRING$(13," ") 1150 LOCATE 1,3:PRINT STRING$(3," ") 1160 a(x,y)=a(x,y)+p:x1=x:y1=y:SOUND 4,(p+1)*300+100,5:GOSUB 1040 1170 IF ABS(a(x,y))<4 THEN GOTO 1270 1180 ww=0:bw=0 1190 FOR j=0 TO 9:FOR k=0 TO 9 1200 ab=ABS(a(j,k)):IF ab>4 THEN a(j,k)=0:ab=0:x1=j:y1=k:GOSUB 1470:GOSUB 1040 1210 IF ab>3 THEN bflag=1:GOSUB 1280 1220 IF a(j,k)>0 THEN ww=1 1230 IF a(j,k)<0 THEN bw=1 1240 NEXT k,j 1250 IF ww+bw<2 THEN GOSUB 1500 1260 IF bflag=1 THEN bflag=0:GOTO 1180 1270 RETURN 1280 a(j,k)=p:x1=j:y1=k:GOSUB 1040 1290 FOR n=30 TO 70 STEP 21 1300 SOUND 4,n,2:NEXT 1310 IF j-1>=0 THEN a(j-1,k)=a(j-1,k)+p:x1=j-1:y1=k:GOSUB 1040:IF a(j-1,k)*p<0 THEN a(j-1,k)=0:GOSUB 1040 1320 IF j+1<=9 THEN a(j+1,k)=a(j+1,k)+p:x1=j+1:y1=k:GOSUB 1040:IF a(j+1,k)*p<0 THEN a(j+1,k)=0:GOSUB 1040 1330 IF k-1>=0 THEN a(j,k-1)=a(j,k-1)+p:x1=j:y1=k-1:GOSUB 1040:IF a(j,k-1)*p<0 THEN a(j,k-1)=0:GOSUB 1040 1340 IF k+1<=9 THEN a(j,k+1)=a(j,k+1)+p:x1=j:y1=k+1:GOSUB 1040:IF a(j,k+1)*p<0 THEN a(j,k+1)=0:GOSUB 1040 1350 RETURN 1360 dd=0:aa=0:PRINT CHR$(143);CHR$(8); 1370 i$=UPPER$(INKEY$):IF i$<"0" OR i$>"9" AND i$<"A" OR i$>"J" AND i$<CHR$(127) OR i$>CHR$(127) THEN GOTO 1370 1380 IF dd+aa<1 AND i$=CHR$(127) THEN GOTO 1370 1390 IF i$=CHR$(127) THEN PRINT " ";CHR$(8);CHR$(8);CHR$(143);CHR$(8);:aa=0:dd=0:GOTO 1370 1400 IF aa=1 AND i$>="A" AND i$<="J" THEN GOTO 1370 1410 IF dd=1 AND i$>="0" AND i$<="9" THEN GOTO 1370 1420 IF aa=0 AND i$>="A" AND i$<="J" THEN aa=1:x=ASC(i$)-65 1430 IF dd=0 AND i$>="0" AND i$<="9" THEN dd=1:y=VAL(i$) 1440 PRINT i$;CHR$(143);CHR$(8) 1450 IF dd+aa<2 THEN GOTO 1370 1460 RETURN 1470 FOR n=50 TO 15 STEP -7:SOUND 4,n,2:NEXT 1480 FOR n=30 TO 70 STEP 7:SOUND 4,n,2:NEXT 1490 RETURN 1500 PAPER 2:LOCATE 1,1:IF ww=1 THEN PEN 1:PRINT"WHITE WINS!" ELSE PEN 3:PRINT"BLUE WINS!" 1510 PEN 2:PAPER 1:LOCATE 1,3:PRINT "Press SPACE" 1520 PRINT " to play " 1530 FOR j=500 TO 0 STEP -17:SOUND 4,j,3:NEXT 1540 WHILE INKEY$<>"":WEND:WHILE INKEY$<>" ":WEND 1550 RUN |