1 REM Isotopes
2 REM By J.Fox-Geen
3 REM
10 RANDOMIZE TIME
20 FOR a=5 TO 11:POKE &A400+a,INT((RND*100)*2):NEXT
30 GOSUB 450
40 REM Title Screen
50 PEN 3:PAPER 2
60 LOCATE 13,7:PRINT "---------------"
70 LOCATE 13,8
80 PRINT "I S O T O P E S"
90 LOCATE 13,9:PRINT "---------------"
100 LOCATE 28,11:PEN 3:PAPER 1
110 PRINT "By J.Fox-Geen"
120 WINDOW #1,10,31,16,22
130 PAPER #1,1:CLS #1:PEN #1,2
140 WINDOW SWAP 0,1
150 LOCATE 1,2:PRINT "1....Play Isotopes"
160 LOCATE 1,4:PRINT "2....Instructions"
170 LOCATE 1,6:PRINT "3....Change Speed"
180 IF INKEY(64)=0 THEN GOTO 220
190 IF INKEY(65)=0 THEN GOTO 870
200 IF INKEY(57)=0 THEN CLS:INPUT "New Speed (0-500):",sp%:IF sp%<0 OR sp%>500 THEN GOTO 40 ELSE GOTO 220
210 GOTO 180
220 MODE 1
230 sc%=0:d%=1:se%=3
240 x%=16:y%=17:POKE nxc%,x%:POKE nyc%,y%
250 POKE dir%,d%:POKE seg%,se%:CALL &92C2
260 GOSUB 640
270 REM Main Loop
280 SOUND 2+128,300,5,10,0,0,30
290 i%=PEEK(chk%)
300 IF i%=1 THEN GOTO 760
310 IF i%=2 THEN sc%=sc%+10:se%=se%+1:POKE seg%,se%:LOCATE 7,1:PRINT USING "#####";sc%:SOUND 1+128,50,0,1,1
320 IF se%=250 THEN GOTO 1010
330 IF INKEY(28)=0 THEN d%=1
340 IF INKEY(30)=0 THEN d%=2
350 IF INKEY(71)=0 THEN d%=3
360 IF INKEY(63)=0 THEN d%=4
370 IF d%=1 THEN y%=y%-1
380 IF d%=2 THEN y%=y%+1
390 IF d%=3 THEN x%=x%-1
400 IF d%=4 THEN x%=x%+1
410 IF y%=2 OR y%=24 OR x%=0 OR x%=39 THEN GOTO 760
420 IF i%=3 THEN GOTO 760
430 POKE dir%,d%:POKE nxc%,x%:POKE nyc%,y%
440 CALL &9000:FOR i%=1 TO sp%:NEXT:GOTO 270
450 REM Initialise
460 addr=&A400
470 hi%=0:se%=3:sp%=100
480 ENV 1,7,2,2,2,0,2,15,-1,3
490 ENV 2,7,2,3,20,0,5,15,-1,20
500 ENT 1,10,3,3,10,-4,3,10,5,3,10,-6,3
510 seg%=addr
520 nxc%=addr+1
530 nyc%=addr+2
540 dir%=addr+3
550 chk%=addr+4
560 MODE 1
570 MEMORY &8FFF
580 SYMBOL 255,255,255,255,255,255,255,255,255
590 FOR I%=0 TO 3:READ A:INK I%,A:NEXT
600 DATA 0,14,6,24
610 PRINT "Please wait....":GOSUB 1780
620 FOR i%=&93E2 TO &9400:POKE i%,16:NEXT
630 CLS:BORDER 1:RETURN
640 PEN 2:PAPER 0:CLS
650 LOCATE 1,3:PRINT STRING$(40,255);
660 FOR i%=3 TO 25
670 LOCATE 1,i%:PRINT CHR$(255);
680 LOCATE 40,i%:PRINT CHR$(255);
690 NEXT
700 LOCATE 1,25:PRINT STRING$(40,255);
710 LOCATE 1,1:PRINT "SCORE:";USING "#####";sc%
720 LOCATE 28,1:PRINT "HISCORE:";USING "#####";hi%
730 LOCATE 16,1:PEN 3:PRINT "ISOTOPES"
740 LOCATE 16,2:PRINT "--------":PEN 2
750 RETURN
760 REM Dead Routine
770 SOUND 2,500,0,1,2,1,31
780 SOUND 4,500,100,10,0,1,25
790 FOR a=1 TO PEEK(seg%):FOR b=1 TO 35:NEXT:CALL &9000:NEXT
800 LOCATE 16,15:PRINT "GAME OVER"
810 LOCATE 9,25:PRINT "Press <SPACE> to continue"
820 IF sc%>hi% THEN hi%=sc%:LOCATE 36,1:PRINT USING "#####";hi%;
830 FOR i%=1 TO 200:NEXT
840 SOUND 4+128,500,0,1,2,1,29
850 WHILE INKEY(47)<>0:WEND
860 CLS:GOTO 40
870 REM Instructions
880 WINDOW SWAP 0,1
890 PAPER 0:CLS:PEN 3:LOCATE 8,2
900 CLS
910 PRINT:PRINT:PRINT "The keys are:"
920 PEN 3
930 LOCATE 14,7:PRINT ";........up"
940 LOCATE 14,9:PRINT "/......down"
950 LOCATE 14,11:PRINT "Z......left"
960 LOCATE 14,13:PRINT "X.....right"
970 PEN 2
980 LOCATE 9,25:PRINT "Press <SPACE> to play"
990 WHILE INKEY(47)<>0:WEND
1000 GOTO 230
1010 REM Completed
1020 CLS
1030 PEN 1
1040 LOCATE 15,3:PRINT "WELL DONE!"
1050 LOCATE 15,4:PRINT "----------"
1060 PEN 2
1070 LOCATE 6,25:PRINT "Press <SPACE> to play again."
1080 i%=1
1090 WHILE INKEY(47)<>0:INK 1,i%:i%=i%+1:FOR o%=1 TO 50:NEXT:IF i%=27 THEN i%=1
1100 WEND
1110 INK 1,14
1120 CLS:GOTO 40
1130 DATA CDDA90CD3E90CD1391CD7090CD7DD
1140 DATA AA90C9F321539143232310FC4E5DE
1150 DATA 234621E29409422310FD7EFBC95BD
1160 DATA F321539143232310FC4E234621465
1170 DATA E29409422310FD77FBC93A01A460B
1180 DATA 573A02A45FD5CD10903204A4D1583
1190 DATA 3E01CD27902100003A00A46F01332
1200 DATA E293092B562100006F01DC9209407
1210 DATA 2B5E3E00CD2790C9CD9B9257FE663
1220 DATA 02F8FE27F27090CD9B925FFE0476C
1230 DATA FA7C90FE18F0D5CD1090D1FE0081D
1240 DATA C03E02D5CD2790D1CD9B92FE07729
1250 DATA FA9790FE0BF29790626BCD5B927CA
1260 DATA C9CD9B92FE05F8FE6EF0CD9B92914
1270 DATA FE02F8FE27F057CD9B92FE04F8858
1280 DATA FE18F05FCD1090FE00C03E03CD69E
1290 DATA 2790626B3E0BCD5B92C9F33A0057D
1300 DATA A42100006F01E293092B477E233C6
1310 DATA 772B2B10F93A00A42100006F01345
1320 DATA DC92092B477E23772B2B10F93A49A
1330 DATA 01A421E293773A02A421DC9277598
1340 DATA FBC93AE293673ADC926F3A03A46D2
1350 DATA CD5B923A00A42100006F01E29349E
1360 DATA 092B562100006F01DC92092B5E31B
1370 DATA 626B3E00CD5B9221E293237E57553
1380 DATA 21DC92237E5F626B3E05CD5B92559
1390 DATA C9280050007800A000C800F000411
1400 DATA 1801400168019001B801E001082F6
1410 DATA 02300258028002A802D002F802386
1420 DATA 2003480370039803C0039B91AB416
1430 DATA 91BB91CB91DB91EB91FB910B9284A
1440 DATA 1B922B923B924B920000000000314
1450 DATA 00000000000000000000000000000
1460 DATA 020406063CC37EE736C6138C01412
1470 DATA 080108138C36C67EE73CC3060641C
1480 DATA 020400000108038C16CE10E310285
1490 DATA E316CE038C01080108130C3786344
1500 DATA 7C807C803786130C0108018830396
1510 DATA C070E0F8E178F170E030C011087AB
1520 DATA 000601088708011F01088F080115F
1530 DATA 1E0108008F408F91FFFF8FFF8F631
1540 DATA 91FF408F008F7003F786F3C8F178A
1550 DATA C9F1CAF3C8F786700310000008647
1560 DATA 01008A0A0515000801000080911C9
1570 DATA 9851A821C041C234C1214851A85CC
1580 DATA 919831C47368D750BC90E8F0B07F4
1590 DATA B0506030C0F5CD1ABCF1E51183752
1600 DATA 91FE00CA719213133DFE00C2695E8
1610 DATA 9206020E08626B5E2356E1C51A414
1620 DATA 77132310FAC1C52B10FDC13E0857C
1630 DATA 84673006C50150C009C10DC5C2555
1640 DATA 7C92C1C93F2105000105A4097E42E
1650 DATA 4F2B7E472B2B2B7E88893205A442A
1660 DATA 2104000105A40906057E23772B226
1670 DATA 2B10F9C921E19401E8032336004D8
1680 DATA 793D4FFEFFC2C892783D47FEFF817
1690 DATA C2C892C9171717171717170000386
1780 m=&9000:f=0
1790 FOR i=1130 TO 1690 STEP 10
1800 READ p$:c=0
1810 FOR o=1 TO 26 STEP 2
1820 b=VAL("&"+MID$(p$,o,2))
1830 POKE m,b:m=m+1:c=c+b:NEXT
1840 chk$=RIGHT$(p$,3):chk=VAL("&"+chk$)
1850 IF c<>chk THEN PRINT "ERROR IN LINE:"i:f=1
1860 NEXT:IF f=1 THEN END:ELSE RETURN