1 ON BREAK NEXT :: ON WARNING NEXT 2 ON ERROR 4 3 GOTO 100 4 RETURN NEXT 100 CALL CLEAR :: JJ=10 :: CALL SCREEN(2) 110 CALL INIT 120 CALL PEEK(-32187,P) :: IF P<128 THEN CALL PEEK(-25601,P) :: CALL LOAD(-31745,0) 125 CALL LOAD(-31878,0) 130 CALL LOAD(12288,0,0,0,0,0,0) 140 CALL PEEK(-31868,P,Q) 150 P=255-P :: Q=255-Q 160 CALL LOAD(8196,63,240) 170 X=240-P :: Y=126-Q 180 IF Y<0 THEN X=X-1 :: Y=Y+256 190 CALL LOAD(9462,X,Y) 200 Y=Y-36 :: IF Y<0 THEN X=X-1 :: Y=Y+256 210 CALL LOAD(16368,66,32,32,32,32,32,X,Y,65,32,32,32,32,32,162,000) 220 CALL LINK("B") 230 CALL CHAR(93,"00783C7C3C380000") 235 CALL COLOR(9,11,2) 240 CALL CHAR(95,"0000302038") 250 CALL CHAR(96,"0000700804") 260 CALL CHAR(99,"0000001") 330 CALL CHAR(94,"98FEFEFE7E7C5C") 340 CALL CHAR(98,"00386C546C38") 350 CALL CHAR(97,"000010381") 360 CALL CHAR(100,"10102828286C7C1") 370 CALL CHAR(101,"0808182848D8782") :: CALL CHAR(102,"0408182848D8301") :: CALL CHAR(103,"04182828D050701") 380 CALL CHAR(104,"020C14E850701") :: CALL CHAR(105,"010EF24C701") :: CALL CHAR(106,"00013EE448302") :: CALL CHAR(107,"00007F64C8702") 390 CALL CHAR(108,"00607CC37C6") :: CALL CHAR(109,"2070C8647F") :: CALL CHAR(110,"203048E43E01") :: CALL CHAR(111,"0010704CF20E01") 400 CALL CHAR(112,"107050E8140C02") :: CALL CHAR(113,"0838286814140C02") :: CALL CHAR(114,"1030D84828180804") 410 CALL CHAR(115,"2078D84828180808") :: CALL CHAR(116,"107C6C282828101") :: CALL CHAR(117,"083C36242830202") 420 CALL CHAR(118,"101836242830204") :: CALL CHAR(119,"2038282C5050608") :: CALL CHAR(120,"101C142E50608") :: CALL CHAR(121,"080E324F708") 430 CALL CHAR(122,"040C12277C8") :: CALL CHAR(123,"040E1326FE") :: CALL CHAR(124,"00063EC33E06") :: CALL CHAR(125,"0000FE26130E04") 440 CALL CHAR(126,"00807C27120C04") :: CALL CHAR(127,"0080704F320E08") :: CALL CHAR(128,"8060502E141C1") :: CALL CHAR(129,"4030282816141C1") 441 CALL LOAD(-31878,10) 450 CALL CHAR(130,"402030282436181") :: CALL CHAR(131,"2020302824363C08") 455 SC=0 460 ON ERROR 4 :: CALL SCREEN(2) 461 CALL CLEAR :: DISPLAY AT(1,13):USING 540:SC :: CALL LOAD(12288,0,0,0,0,0,0) 462 CALL HCHAR(1,5,100,3) 463 CALL SPRITE(#5,94,11,200,1,6,-17,#6,94,11,208,1,17,6,#7,93,11,200,10,-9,13,#8,93,11,200,100,13,-9) 466 RESTORE 467 DATA -80,0,-57,57,0,80,57,57,80,0,57,-57,0,-80,-57,-57 468 FOR I=1 TO 8 :: READ A,B :: CALL SPRITE(#I+10,99,1,1,1,A,B) :: NEXT I 470 SN=3 471 CALL LOAD(-20399,JJ) 472 ZB=0 480 FOR I=0 TO 8 :: CALL COLOR(I,16,2) :: NEXT I :: CALL SPRITE(#1,100,11,92,120,0,0) 481 SC=0 482 IF TM=1 THEN TM=0 :: GOTO 520 483 ON ERROR 4 490 OPEN #1:"DSK1.A$",VARIABLE 500 FOR CC=0 TO 9 :: ON ERROR 4 :: INPUT #1:A$(CC) :: NEXT CC 505 ON ERROR 4 510 CLOSE #1 520 IMAGE ### 530 IMAGE ####### 540 IMAGE ############ 550 DISPLAY AT(14,18):"TOP SCORES" 560 FOR CC=0 TO 8 STEP 2 :: DISPLAY AT(16+CC/2,18):USING 520:A$(CC) :: NEXT CC 570 FOR CC=1 TO 9 STEP 2 :: DISPLAY AT(15+CC/2,22):USING 530:A$(CC) :: NEXT CC 580 DISPLAY AT(22,3):"PRESS 'K' FOR KEYBOARD" :: DISPLAY AT(24,3):"PRESS 'J' FOR JOYSTICK" :: 581 CALL KEY(0,K,S) :: IF S=0 THEN 581 ELSE IF K=74 OR K=75 OR K=107 OR K=106 THEN CALL SOUND(25,2000,0) :: GOTO 582 ELSE 581 582 IF K=75 OR K=107 THEN CALL LOAD(-24052,6,160,162,238,3,0,0,2,3,0,0,0)ELSE CALL LOAD(-24052,3,0,0,0,3,0,0,2,6,160,163,96) 583 CALL CLEAR :: GOTO 751 590 CALL DELSPRITE(ALL) :: DISPLAY AT(5,1)BEEP :"GAME OVER" :: FOR DD=1 TO 500 :: NEXT DD 600 DISPLAY AT(5,1):"THAT'S ONE OF THE FIVE HIGH-" 610 DISPLAY AT(6,1):"EST SCORES I'VE EVER SEEN!" 620 DISPLAY AT(7,1):"ENTER YOUR INITIALS AND I'LL" 630 DISPLAY AT(8,1):"SAVE YOUR SCORE FOR POSTERIT" 640 CALL HCHAR(8,31,89) 650 FOR CC=0 TO 8 STEP 2 :: DISPLAY AT(15+CC/2,18):USING 520:A$(CC) :: NEXT CC 660 FOR CC=1 TO 9 STEP 2 :: DISPLAY AT(14+CC/2,22):USING 530:A$(CC) :: NEXT CC 670 DISPLAY AT(21,1):"YOUR INITIALS ---" :: ACCEPT AT(21,15)BEEPSIZE(-3):B$ 680 IF B$="---" THEN 460 681 SCM=SC 690 FOR CC=1 TO 9 STEP 2 700 IF VAL(A$(CC))>SC THEN 710 ELSE RR=VAL(A$(CC)) :: A$(CC)=STR$(SC) :: SC=RR :: BB$=A$(CC-1) :: A$(CC-1)=B$ :: B$=BB$ 710 NEXT CC 711 ON ERROR 4 715 ON ERROR 4 720 OPEN #1:"DSK1.A$",VARIABLE 730 FOR CC=0 TO 9 :: ON ERROR 4 :: PRINT #1:A$(CC) :: NEXT CC 735 ON ERROR 4 740 CLOSE #1 745 SC=SCM 750 GOTO 460 751 CALL SPRITE(#2,99,1,1,1,#3,98,1,1,1,#4,97,1,1,1,#7,93,1,1,1,#8,93,1,1,1,#9,93,1,1,1) 752 CALL SPRITE(#10,93,1,1,1) 800 CALL HCHAR(1,5,100,2) 810 DISPLAY AT(1,13):USING 540:SC :: CALL LOAD(-31878,17) :: CALL LINK("A") 820 CALL LOAD(-31878,10) :: CALL COLOR(#3,1,#4,1,#11,1,#12,1,#13,1,#14,1,#15,1,#16,1,#17,1,#18,1) 830 SN=SN-1 840 CALL PEEK(12288,P,Q,R,S) :: SC=S+R*256+Q*65536+P*16777216 842 IF SC>2999 THEN CALL LOAD(-20399,5) 843 IF SC>9999 THEN CALL LOAD(-20399,3) 850 IF SC>2999 AND ZB=0 THEN SN=SN+1 :: ZB=1 :: DISPLAY AT(12,11)BEEP :"BONUS SHIP" :: CALL SOUND(3000,110,30) :: CALL SOUND(1,110,30) :: GOTO 870 855 IF ZB=0 THEN 870 860 IF SC/9999-ZB>0 THEN ZB=ZB+1 :: SN=SN+1 :: DISPLAY AT(12,11)BEEP :"BONUS SHIP" :: CALL SOUND(3000,110,30) :: CALL SOUND(1,110,30) 870 IF SN<1 THEN 920 875 FOR I=1 TO 300 :: NEXT I 880 CALL HCHAR(1,5,32,3) :: CALL HCHAR(1,5,100,SN-1) 890 CALL SPRITE(#1,100,11,92,120,0,0) 900 DISPLAY AT(12,11):" " 910 CALL COLOR(#2,1) :: GOTO 810 920 CALL PEEK(12288,P,Q,R,S) 930 SC=S+R*256+Q*65536+P*16777216 935 CALL KEY(0,K,S) 936 ON ERROR 4 940 IF SC>VAL(A$(9))THEN 590 950 SN=3 960 DISPLAY AT(21,1)BEEP :"GAME OVER." :: CALL HCHAR(1,5,100,3) :: FOR DD=1 TO 500 :: NEXT DD :: CALL SPRITE(#1,100,11,92,120,0,0) 970 CALL DELSPRITE(ALL) :: TM=1 :: GOTO 460 975 CALL LOAD(-31878,0)