Home » CEEFAX disks » telesoftware5.adl » 20-02-88/PROG

20-02-88/PROG

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » CEEFAX disks » telesoftware5.adl
Filename: 20-02-88/PROG
Read OK:
File size: 0D59 bytes
Load address: FFFF1900
Exec address: FFFF8023
File contents
   10 REM **   SPACE  INVADERS   **
   20 REM ** By Paul M. Blundell **
   30 
   40 
   50 ON ERROR MODE7:REPORT:PRINT " at line ";ERL:PRINT '"Error Number ";ERR:END 
   60 ENVELOPE 1,1,55,-44,70,5,3,4,127,0,-1,-1,127,0
   70 ENVELOPE 2,1,55,-20,-30,10,4,2,127,-1,-3,-3,127,0  
   80 ENVELOPE 3,1,0,0,0,0,0,0,127,-2,-2,-2,127,0 
   90 ENVELOPE 4,1,5,-10,5,10,1,10,80,0,0,0,80,0 
  100 origin=&1E00 
  110 HIGH%=1500 
  120 SCOREFIRST=FALSE
  130 scoreaddr=&2CFA
  140 level=&2CF3
  150 game_status=&CFB
  160 
  170 REM *FX210,1 Turns sound off.
  180 REM *FX210,0 Turn sound on.
  190 *FX210,0
  200 
  210 bomb_speed=&2F50
  220 num_bombs=&CFA
  230 act_bombs=&CFC
  240 act_speed=&CFD
  250 
  260 MODE 7
  270 VDU23;8202;0;0;0;
  280 PROCinstructions
  290 SCOREFIRST=TRUE
  300 MODE 2
  310 lives=&CFE
  320 ?lives=3:?num_bombs=2:?act_speed=2
  330 ?act_bombs=?num_bombs 
  340 ?bomb_speed=?act_speed 
  350 VDU23;8202;0;0;0; 
  360 PROCsetuparea(200)
  370 REM ** RND SEEDS **
  380 seed=&2CF7
  385 seed2=&2CF4
  390 ?seed=RND(255):?seed2=RND(255)
  400 VDU23,1,0,0,0,0,0,0,0,0
  410 CALL origin
  420 REPEAT
  430 *FX21,7
  440 PROCroutine
  450 IF FINISH=FALSE THEN 460 ELSE 480
  460  ?game_status=0 
  470  CALL ADDRS 
  480 UNTIL FINISH=TRUE
  490 *FX15,1
  500 TIME=0:REPEAT UNTIL TIME>50
  510 FOR N=12 TO 18:PRINT TAB(4,N);"             ":NEXT
  520 PRINT TAB(4,14);"          " 
  530 COLOUR 8:PRINT TAB(5,15);" GAME OVER "
  540 PRINT TAB(4,16);"          "
  550 SCORE%=FNconvertscore
  560 IF SCORE%>HIGH% THEN HIGH%=SCORE%
  570 *FX15,1
  580 TIME=0:REPEAT UNTIL (INKEY(0)<>-1) OR (TIME>500)  
  590 GOTO 260
  600 VDU23,1,1,0,0,0,0,0,0,0
  610 END
  620 
  630 
  640 DEF PROCroutine
  650 IF ?game_status=2 THEN 660 ELSE 740
  660    ?lives=?lives-1
  670       PRINT TAB(19,0);?lives
  680    ADDRS=origin+6
  690    IF ?lives=0 THEN 700 ELSE 720
  700       FINISH=TRUE
  710    GOTO 950
  720       TIME=0:REPEAT UNTIL TIME>50
  730    GOTO 950
  740 IF ?game_status=1 THEN 750 ELSE 780
  750    FINISH=TRUE
  760    SOUND 0,1,7,20
  770 GOTO 950
  780 REM game_status is 3
  790 TIME=0:REPEAT UNTIL TIME>70
  800 FOR N=&2F60 TO &2F9F:?N=0:NEXT 
  810 FOR N=&2FC0 TO &2FEF:?N=2:NEXT
  820 FOR N=&2FB0 TO &2FBA:?N=0:NEXT 
  830 FOR N=&2FA0 TO &2FAF:?N=6:NEXT
  840 CLS:SOUND 1,1,30,9
  850 PRINT TAB(6,0);:FOR N=scoreaddr TO scoreaddr+5:VDU ?N:NEXT 
  860 COLOUR 9:PRINT TAB(6,10);"SCREEN ";(?level)+1
  870 COLOUR 7
  880 PRINT TAB(0,0);"SCORE"
  890 PRINT TAB(13,0);"LIVES ";?lives
  900 MOVE 0,980:DRAW 1280,980
  910 TIME=0:REPEAT UNTIL TIME>100
  920 ADDRS=origin+3  
  930 COLOUR 0:PRINT TAB(6,10);"SCREEN ";(?level)+1
  940 COLOUR 7
  950 ENDPROC
  960 
  970 
  980 DEF PROCsetuparea(TI) 
  990 FINISH=FALSE
 1000 TIME=0:REPEAT UNTIL TIME>TI/2
 1010 FOR N=&2F60 TO &2F9F:?N=0:NEXT
 1020 FOR N=&2FC0 TO &2FEF:?N=2:NEXT
 1030 FOR N=&2FB0 TO &2FBA:?N=0:NEXT 
 1040 FOR N=&2FA0 TO &2FAF:?N=6:NEXT
 1050 CLS:SOUND 1,1,30,9
 1060 COLOUR 9:PRINT TAB(6,10);"SCREEN 1":COLOUR 7
 1070 PRINT TAB(0,0);"SCORE 000000"
 1080 PRINT TAB(13,0);"LIVES 3" 
 1090 MOVE 0,980:DRAW 1280,980
 1100 TIME=0:REPEAT UNTIL TIME>TI 
 1110 COLOUR 0:PRINT TAB(6,10);"SCREEN 1":COLOUR 7 
 1120 ENDPROC 
 1130 
 1140 
 1150 DEF PROCinstructions
 1160 IF SCOREFIRST=TRUE THEN 1310 
 1170 CLS
 1180 X%=11
 1190 PROCdoub("�---�SPACE INVADERS�---",8,0)
 1200 PROCdoub("  �KEYS",X%,4)
 1210 PROCdoub("�  CAPS�  -�LEFT",X%,8)
 1220 PROCdoub("  �CTRL�  -�RIGHT",X%,12)  
 1230 PROCdoub("�<RETURN>�-�FIRE",X%,16)
 1240 PROCdoub("�PRESS <RETURN> TO BEGIN",7,21)
 1250 *FX15,1
 1260 TIME=0:REPEAT
 1270 A=INKEY(0)
 1280 UNTIL (A<>-1) OR (TIME>1500)
 1290 IF A=13 THEN 1440
 1300 SOUND 1,-15,200,1 
 1310 CLS
 1320 PROCdoub("�---�SPACE INVADERS�---",8,0)
 1330 PROCdoub("�HIGH SCORE",14,5)
 1340 PROCdoub(STRING$(6-LEN(STR$(HIGH%)),"0")+STR$(HIGH%),17,8) 
 1350 IF SCOREFIRST=FALSE THEN 1380
 1360 PROCdoub("�LATEST SCORE",13,12)
 1370 PROCdoub(STRING$(6-LEN(STR$(SCORE%)),"0")+STR$(SCORE%),17,15)
 1380 PROCdoub("��PRESS <RETURN> TO BEGIN",6,21) 
 1390 *FX15,1
 1400 TIME=0:REPEAT
 1410 A=INKEY(0)
 1420 UNTIL (A<>-1) OR (TIME>1500) 
 1430 IF A<>13 THEN SOUND 1,-15,200,1:GOTO 1170
 1440 ENDPROC
 1450 
 1460 
 1470 DEF PROCdoub(string$,X,Y)
 1480 FOR N=0 TO 1
 1490 PRINT TAB(X,Y+N);CHR$141;string$
 1500 NEXT
 1510 ENDPROC
 1520 
 1530 
 1540 DEF FNconvertscore
 1550 T%=0 
 1560 FOR L%=scoreaddr TO scoreaddr+5
 1570 T%=T%*10
 1580 T%=T%+(?L%-48)
 1590 NEXT
 1600 =T%

  � **   SPACE  INVADERS   **
  � ** By Paul M. Blundell **
 
( 
25 � � �7:�:� " at line ";�:� '"Error Number ";�:� 
<, � 1,1,55,-44,70,5,3,4,127,0,-1,-1,127,0
F1 � 2,1,55,-20,-30,10,4,2,127,-1,-3,-3,127,0  
P* � 3,1,0,0,0,0,0,0,127,-2,-2,-2,127,0 
Z) � 4,1,5,-10,5,10,1,10,80,0,0,0,80,0 
d origin=&1E00 
n HIGH%=1500 
x SCOREFIRST=�
� scoreaddr=&2CFA
� level=&2CF3
� game_status=&CFB
� 
�  � *FX210,1 Turns sound off.
� � *FX210,0 Turn sound on.
�
 *FX210,0
� 
� bomb_speed=&2F50
� num_bombs=&CFA
� act_bombs=&CFC
� act_speed=&CFD
� 
 � 7
 �23;8202;0;0;0;
 �instructions
" SCOREFIRST=�
, � 2
6 lives=&CFE
@' ?lives=3:?num_bombs=2:?act_speed=2
J ?act_bombs=?num_bombs 
T ?bomb_speed=?act_speed 
^ �23;8202;0;0;0; 
h �setuparea(200)
r � ** RND SEEDS **
| seed=&2CF7
� seed2=&2CF4
� ?seed=�(255):?seed2=�(255)
� �23,1,0,0,0,0,0,0,0,0
�
 � origin
� �
� *FX21,7
�
 �routine
� � FINISH=� � �dLA � �d`A
�  ?game_status=0 
�  � ADDRS 
� � FINISH=�
� *FX15,1
� �=0:� � �>50
�* � N=12 � 18:� �4,N);"             ":�
 � �4,14);"          " 
 � 8:� �5,15);" GAME OVER "
 � �4,16);"          "
& SCORE%=�convertscore
0" � SCORE%>HIGH% � HIGH%=SCORE%
: *FX15,1
D# �=0:� � (�(0)<>-1) � (�>500)  
N � �TDA
X �23,1,1,0,0,0,0,0,0,0
b �
l 
v 
� � �routine
�# � ?game_status=2 � �tTB � �ddB
�    ?lives=?lives-1
�       � �19,0);?lives
�    ADDRS=origin+6
�     � ?lives=0 � �t|B � �dPB
�       FINISH=�
�    � �tvC
�       �=0:� � �>50
�    � �tvC
�# � ?game_status=1 � �dnB � �TLC
�    FINISH=�
�    � 0,1,7,20
 � �tvC
 � game_status is 3
 �=0:� � �>70
  � N=&2F60 � &2F9F:?N=0:� 
* � N=&2FC0 � &2FEF:?N=2:�
4 � N=&2FB0 � &2FBA:?N=0:� 
> � N=&2FA0 � &2FAF:?N=6:�
H �:� 1,1,30,9
R1 � �6,0);:� N=scoreaddr � scoreaddr+5:� ?N:� 
\& � 9:� �6,10);"SCREEN ";(?level)+1
f � 7
p � �0,0);"SCORE"
z � �13,0);"LIVES ";?lives
� � 0,980:� 1280,980
� �=0:� � �>100
� ADDRS=origin+3  
�& � 0:� �6,10);"SCREEN ";(?level)+1
� � 7
� �
� 
� 
� � �setuparea(TI) 
�
 FINISH=�
� �=0:� � �>TI/2
� � N=&2F60 � &2F9F:?N=0:�
� � N=&2FC0 � &2FEF:?N=2:�
 � N=&2FB0 � &2FBA:?N=0:� 
 � N=&2FA0 � &2FAF:?N=6:�
 �:� 1,1,30,9
$  � 9:� �6,10);"SCREEN 1":� 7
. � �0,0);"SCORE 000000"
8 � �13,0);"LIVES 3" 
B � 0,980:� 1280,980
L �=0:� � �>TI 
V! � 0:� �6,10);"SCREEN 1":� 7 
` � 
j 
t 
~ � �instructions
� � SCOREFIRST=� � �T^E 
� �
�
 X%=11
�) �doub("�---�SPACE INVADERS�---",8,0)
� �doub("  �KEYS",X%,4)
�# �doub("�  CAPS�  -�LEFT",X%,8)
�' �doub("  �CTRL�  -�RIGHT",X%,12)  
�$ �doub("�<RETURN>�-�FIRE",X%,16)
�+ �doub("�PRESS <RETURN> TO BEGIN",7,21)
� *FX15,1
�
 �=0:�
� A=�(0)
 � (A<>-1) � (�>1500)

 � A=13 � �t`E
 � 1,-15,200,1 
 �
() �doub("�---�SPACE INVADERS�---",8,0)
2 �doub("�HIGH SCORE",14,5)
<. �doub(�6-�(�(HIGH%)),"0")+�(HIGH%),17,8) 
F � SCOREFIRST=� � �DdE
P! �doub("�LATEST SCORE",13,12)
Z0 �doub(�6-�(�(SCORE%)),"0")+�(SCORE%),17,15)
d- �doub("��PRESS <RETURN> TO BEGIN",6,21) 
n *FX15,1
x
 �=0:�
� A=�(0)
� � (A<>-1) � (�>1500) 
�# � A<>13 � � 1,-15,200,1:� �tRD
� �
� 
� 
� � �doub(string$,X,Y)
� � N=0 � 1
� � �X,Y+N);�141;string$
� �
� �
� 
� 
 � �convertscore

 T%=0 
! � L%=scoreaddr � scoreaddr+5
"
 T%=T%*10
, T%=T%+(?L%-48)
6 �
@ =T%
�
00000000  0d 00 0a 20 20 f4 20 2a  2a 20 20 20 53 50 41 43  |...  . **   SPAC|
00000010  45 20 20 49 4e 56 41 44  45 52 53 20 20 20 2a 2a  |E  INVADERS   **|
00000020  0d 00 14 20 20 f4 20 2a  2a 20 42 79 20 50 61 75  |...  . ** By Pau|
00000030  6c 20 4d 2e 20 42 6c 75  6e 64 65 6c 6c 20 2a 2a  |l M. Blundell **|
00000040  0d 00 1e 05 20 0d 00 28  05 20 0d 00 32 35 20 ee  |.... ..(. ..25 .|
00000050  20 85 20 eb 37 3a f6 3a  f1 20 22 20 61 74 20 6c  | . .7:.:. " at l|
00000060  69 6e 65 20 22 3b 9e 3a  f1 20 27 22 45 72 72 6f  |ine ";.:. '"Erro|
00000070  72 20 4e 75 6d 62 65 72  20 22 3b 9f 3a e0 20 0d  |r Number ";.:. .|
00000080  00 3c 2c 20 e2 20 31 2c  31 2c 35 35 2c 2d 34 34  |.<, . 1,1,55,-44|
00000090  2c 37 30 2c 35 2c 33 2c  34 2c 31 32 37 2c 30 2c  |,70,5,3,4,127,0,|
000000a0  2d 31 2c 2d 31 2c 31 32  37 2c 30 0d 00 46 31 20  |-1,-1,127,0..F1 |
000000b0  e2 20 32 2c 31 2c 35 35  2c 2d 32 30 2c 2d 33 30  |. 2,1,55,-20,-30|
000000c0  2c 31 30 2c 34 2c 32 2c  31 32 37 2c 2d 31 2c 2d  |,10,4,2,127,-1,-|
000000d0  33 2c 2d 33 2c 31 32 37  2c 30 20 20 0d 00 50 2a  |3,-3,127,0  ..P*|
000000e0  20 e2 20 33 2c 31 2c 30  2c 30 2c 30 2c 30 2c 30  | . 3,1,0,0,0,0,0|
000000f0  2c 30 2c 31 32 37 2c 2d  32 2c 2d 32 2c 2d 32 2c  |,0,127,-2,-2,-2,|
00000100  31 32 37 2c 30 20 0d 00  5a 29 20 e2 20 34 2c 31  |127,0 ..Z) . 4,1|
00000110  2c 35 2c 2d 31 30 2c 35  2c 31 30 2c 31 2c 31 30  |,5,-10,5,10,1,10|
00000120  2c 38 30 2c 30 2c 30 2c  30 2c 38 30 2c 30 20 0d  |,80,0,0,0,80,0 .|
00000130  00 64 12 20 6f 72 69 67  69 6e 3d 26 31 45 30 30  |.d. origin=&1E00|
00000140  20 0d 00 6e 10 20 48 49  47 48 25 3d 31 35 30 30  | ..n. HIGH%=1500|
00000150  20 0d 00 78 11 20 53 43  4f 52 45 46 49 52 53 54  | ..x. SCOREFIRST|
00000160  3d a3 0d 00 82 14 20 73  63 6f 72 65 61 64 64 72  |=..... scoreaddr|
00000170  3d 26 32 43 46 41 0d 00  8c 10 20 6c 65 76 65 6c  |=&2CFA.... level|
00000180  3d 26 32 43 46 33 0d 00  96 15 20 67 61 6d 65 5f  |=&2CF3.... game_|
00000190  73 74 61 74 75 73 3d 26  43 46 42 0d 00 a0 05 20  |status=&CFB.... |
000001a0  0d 00 aa 20 20 f4 20 2a  46 58 32 31 30 2c 31 20  |...  . *FX210,1 |
000001b0  54 75 72 6e 73 20 73 6f  75 6e 64 20 6f 66 66 2e  |Turns sound off.|
000001c0  0d 00 b4 1e 20 f4 20 2a  46 58 32 31 30 2c 30 20  |.... . *FX210,0 |
000001d0  54 75 72 6e 20 73 6f 75  6e 64 20 6f 6e 2e 0d 00  |Turn sound on...|
000001e0  be 0d 20 2a 46 58 32 31  30 2c 30 0d 00 c8 05 20  |.. *FX210,0.... |
000001f0  0d 00 d2 15 20 62 6f 6d  62 5f 73 70 65 65 64 3d  |.... bomb_speed=|
00000200  26 32 46 35 30 0d 00 dc  13 20 6e 75 6d 5f 62 6f  |&2F50.... num_bo|
00000210  6d 62 73 3d 26 43 46 41  0d 00 e6 13 20 61 63 74  |mbs=&CFA.... act|
00000220  5f 62 6f 6d 62 73 3d 26  43 46 43 0d 00 f0 13 20  |_bombs=&CFC.... |
00000230  61 63 74 5f 73 70 65 65  64 3d 26 43 46 44 0d 00  |act_speed=&CFD..|
00000240  fa 05 20 0d 01 04 08 20  eb 20 37 0d 01 0e 14 20  |.. .... . 7.... |
00000250  ef 32 33 3b 38 32 30 32  3b 30 3b 30 3b 30 3b 0d  |.23;8202;0;0;0;.|
00000260  01 18 12 20 f2 69 6e 73  74 72 75 63 74 69 6f 6e  |... .instruction|
00000270  73 0d 01 22 11 20 53 43  4f 52 45 46 49 52 53 54  |s..". SCOREFIRST|
00000280  3d b9 0d 01 2c 08 20 eb  20 32 0d 01 36 0f 20 6c  |=...,. . 2..6. l|
00000290  69 76 65 73 3d 26 43 46  45 0d 01 40 27 20 3f 6c  |ives=&CFE..@' ?l|
000002a0  69 76 65 73 3d 33 3a 3f  6e 75 6d 5f 62 6f 6d 62  |ives=3:?num_bomb|
000002b0  73 3d 32 3a 3f 61 63 74  5f 73 70 65 65 64 3d 32  |s=2:?act_speed=2|
000002c0  0d 01 4a 1b 20 3f 61 63  74 5f 62 6f 6d 62 73 3d  |..J. ?act_bombs=|
000002d0  3f 6e 75 6d 5f 62 6f 6d  62 73 20 0d 01 54 1c 20  |?num_bombs ..T. |
000002e0  3f 62 6f 6d 62 5f 73 70  65 65 64 3d 3f 61 63 74  |?bomb_speed=?act|
000002f0  5f 73 70 65 65 64 20 0d  01 5e 15 20 ef 32 33 3b  |_speed ..^. .23;|
00000300  38 32 30 32 3b 30 3b 30  3b 30 3b 20 0d 01 68 14  |8202;0;0;0; ..h.|
00000310  20 f2 73 65 74 75 70 61  72 65 61 28 32 30 30 29  | .setuparea(200)|
00000320  0d 01 72 16 20 f4 20 2a  2a 20 52 4e 44 20 53 45  |..r. . ** RND SE|
00000330  45 44 53 20 2a 2a 0d 01  7c 0f 20 73 65 65 64 3d  |EDS **..|. seed=|
00000340  26 32 43 46 37 0d 01 81  10 20 73 65 65 64 32 3d  |&2CF7.... seed2=|
00000350  26 32 43 46 34 0d 01 86  1f 20 3f 73 65 65 64 3d  |&2CF4.... ?seed=|
00000360  b3 28 32 35 35 29 3a 3f  73 65 65 64 32 3d b3 28  |.(255):?seed2=.(|
00000370  32 35 35 29 0d 01 90 1a  20 ef 32 33 2c 31 2c 30  |255).... .23,1,0|
00000380  2c 30 2c 30 2c 30 2c 30  2c 30 2c 30 2c 30 0d 01  |,0,0,0,0,0,0,0..|
00000390  9a 0d 20 d6 20 6f 72 69  67 69 6e 0d 01 a4 06 20  |.. . origin.... |
000003a0  f5 0d 01 ae 0c 20 2a 46  58 32 31 2c 37 0d 01 b8  |..... *FX21,7...|
000003b0  0d 20 f2 72 6f 75 74 69  6e 65 0d 01 c2 1d 20 e7  |. .routine.... .|
000003c0  20 46 49 4e 49 53 48 3d  a3 20 8c 20 8d 64 4c 41  | FINISH=. . .dLA|
000003d0  20 8b 20 8d 64 60 41 0d  01 cc 15 20 20 3f 67 61  | . .d`A....  ?ga|
000003e0  6d 65 5f 73 74 61 74 75  73 3d 30 20 0d 01 d6 0e  |me_status=0 ....|
000003f0  20 20 d6 20 41 44 44 52  53 20 0d 01 e0 0f 20 fd  |  . ADDRS .... .|
00000400  20 46 49 4e 49 53 48 3d  b9 0d 01 ea 0c 20 2a 46  | FINISH=..... *F|
00000410  58 31 35 2c 31 0d 01 f4  11 20 d1 3d 30 3a f5 20  |X15,1.... .=0:. |
00000420  fd 20 91 3e 35 30 0d 01  fe 2a 20 e3 20 4e 3d 31  |. .>50...* . N=1|
00000430  32 20 b8 20 31 38 3a f1  20 8a 34 2c 4e 29 3b 22  |2 . 18:. .4,N);"|
00000440  20 20 20 20 20 20 20 20  20 20 20 20 20 22 3a ed  |             ":.|
00000450  0d 02 08 1b 20 f1 20 8a  34 2c 31 34 29 3b 22 20  |.... . .4,14);" |
00000460  20 20 20 20 20 20 20 20  20 22 20 0d 02 12 1f 20  |         " .... |
00000470  fb 20 38 3a f1 20 8a 35  2c 31 35 29 3b 22 20 47  |. 8:. .5,15);" G|
00000480  41 4d 45 20 4f 56 45 52  20 22 0d 02 1c 1a 20 f1  |AME OVER ".... .|
00000490  20 8a 34 2c 31 36 29 3b  22 20 20 20 20 20 20 20  | .4,16);"       |
000004a0  20 20 20 22 0d 02 26 19  20 53 43 4f 52 45 25 3d  |   "..&. SCORE%=|
000004b0  a4 63 6f 6e 76 65 72 74  73 63 6f 72 65 0d 02 30  |.convertscore..0|
000004c0  22 20 e7 20 53 43 4f 52  45 25 3e 48 49 47 48 25  |" . SCORE%>HIGH%|
000004d0  20 8c 20 48 49 47 48 25  3d 53 43 4f 52 45 25 0d  | . HIGH%=SCORE%.|
000004e0  02 3a 0c 20 2a 46 58 31  35 2c 31 0d 02 44 23 20  |.:. *FX15,1..D# |
000004f0  d1 3d 30 3a f5 20 fd 20  28 a6 28 30 29 3c 3e 2d  |.=0:. . (.(0)<>-|
00000500  31 29 20 84 20 28 91 3e  35 30 30 29 20 20 0d 02  |1) . (.>500)  ..|
00000510  4e 0b 20 e5 20 8d 54 44  41 0d 02 58 1a 20 ef 32  |N. . .TDA..X. .2|
00000520  33 2c 31 2c 31 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |3,1,1,0,0,0,0,0,|
00000530  30 2c 30 0d 02 62 06 20  e0 0d 02 6c 05 20 0d 02  |0,0..b. ...l. ..|
00000540  76 05 20 0d 02 80 0f 20  dd 20 f2 72 6f 75 74 69  |v. .... . .routi|
00000550  6e 65 0d 02 8a 23 20 e7  20 3f 67 61 6d 65 5f 73  |ne...# . ?game_s|
00000560  74 61 74 75 73 3d 32 20  8c 20 8d 74 54 42 20 8b  |tatus=2 . .tTB .|
00000570  20 8d 64 64 42 0d 02 94  17 20 20 20 20 3f 6c 69  | .ddB....    ?li|
00000580  76 65 73 3d 3f 6c 69 76  65 73 2d 31 0d 02 9e 1a  |ves=?lives-1....|
00000590  20 20 20 20 20 20 20 f1  20 8a 31 39 2c 30 29 3b  |       . .19,0);|
000005a0  3f 6c 69 76 65 73 0d 02  a8 16 20 20 20 20 41 44  |?lives....    AD|
000005b0  44 52 53 3d 6f 72 69 67  69 6e 2b 36 0d 02 b2 20  |DRS=origin+6... |
000005c0  20 20 20 20 e7 20 3f 6c  69 76 65 73 3d 30 20 8c  |    . ?lives=0 .|
000005d0  20 8d 74 7c 42 20 8b 20  8d 64 50 42 0d 02 bc 13  | .t|B . .dPB....|
000005e0  20 20 20 20 20 20 20 46  49 4e 49 53 48 3d b9 0d  |       FINISH=..|
000005f0  02 c6 0e 20 20 20 20 e5  20 8d 74 76 43 0d 02 d0  |...    . .tvC...|
00000600  17 20 20 20 20 20 20 20  d1 3d 30 3a f5 20 fd 20  |.       .=0:. . |
00000610  91 3e 35 30 0d 02 da 0e  20 20 20 20 e5 20 8d 74  |.>50....    . .t|
00000620  76 43 0d 02 e4 23 20 e7  20 3f 67 61 6d 65 5f 73  |vC...# . ?game_s|
00000630  74 61 74 75 73 3d 31 20  8c 20 8d 64 6e 42 20 8b  |tatus=1 . .dnB .|
00000640  20 8d 54 4c 43 0d 02 ee  10 20 20 20 20 46 49 4e  | .TLC....    FIN|
00000650  49 53 48 3d b9 0d 02 f8  12 20 20 20 20 d4 20 30  |ISH=.....    . 0|
00000660  2c 31 2c 37 2c 32 30 0d  03 02 0b 20 e5 20 8d 74  |,1,7,20.... . .t|
00000670  76 43 0d 03 0c 17 20 f4  20 67 61 6d 65 5f 73 74  |vC.... . game_st|
00000680  61 74 75 73 20 69 73 20  33 0d 03 16 11 20 d1 3d  |atus is 3.... .=|
00000690  30 3a f5 20 fd 20 91 3e  37 30 0d 03 20 1e 20 e3  |0:. . .>70.. . .|
000006a0  20 4e 3d 26 32 46 36 30  20 b8 20 26 32 46 39 46  | N=&2F60 . &2F9F|
000006b0  3a 3f 4e 3d 30 3a ed 20  0d 03 2a 1d 20 e3 20 4e  |:?N=0:. ..*. . N|
000006c0  3d 26 32 46 43 30 20 b8  20 26 32 46 45 46 3a 3f  |=&2FC0 . &2FEF:?|
000006d0  4e 3d 32 3a ed 0d 03 34  1e 20 e3 20 4e 3d 26 32  |N=2:...4. . N=&2|
000006e0  46 42 30 20 b8 20 26 32  46 42 41 3a 3f 4e 3d 30  |FB0 . &2FBA:?N=0|
000006f0  3a ed 20 0d 03 3e 1d 20  e3 20 4e 3d 26 32 46 41  |:. ..>. . N=&2FA|
00000700  30 20 b8 20 26 32 46 41  46 3a 3f 4e 3d 36 3a ed  |0 . &2FAF:?N=6:.|
00000710  0d 03 48 11 20 db 3a d4  20 31 2c 31 2c 33 30 2c  |..H. .:. 1,1,30,|
00000720  39 0d 03 52 31 20 f1 20  8a 36 2c 30 29 3b 3a e3  |9..R1 . .6,0);:.|
00000730  20 4e 3d 73 63 6f 72 65  61 64 64 72 20 b8 20 73  | N=scoreaddr . s|
00000740  63 6f 72 65 61 64 64 72  2b 35 3a ef 20 3f 4e 3a  |coreaddr+5:. ?N:|
00000750  ed 20 0d 03 5c 26 20 fb  20 39 3a f1 20 8a 36 2c  |. ..\& . 9:. .6,|
00000760  31 30 29 3b 22 53 43 52  45 45 4e 20 22 3b 28 3f  |10);"SCREEN ";(?|
00000770  6c 65 76 65 6c 29 2b 31  0d 03 66 08 20 fb 20 37  |level)+1..f. . 7|
00000780  0d 03 70 14 20 f1 20 8a  30 2c 30 29 3b 22 53 43  |..p. . .0,0);"SC|
00000790  4f 52 45 22 0d 03 7a 1d  20 f1 20 8a 31 33 2c 30  |ORE"..z. . .13,0|
000007a0  29 3b 22 4c 49 56 45 53  20 22 3b 3f 6c 69 76 65  |);"LIVES ";?live|
000007b0  73 0d 03 84 17 20 ec 20  30 2c 39 38 30 3a df 20  |s.... . 0,980:. |
000007c0  31 32 38 30 2c 39 38 30  0d 03 8e 12 20 d1 3d 30  |1280,980.... .=0|
000007d0  3a f5 20 fd 20 91 3e 31  30 30 0d 03 98 15 20 41  |:. . .>100.... A|
000007e0  44 44 52 53 3d 6f 72 69  67 69 6e 2b 33 20 20 0d  |DDRS=origin+3  .|
000007f0  03 a2 26 20 fb 20 30 3a  f1 20 8a 36 2c 31 30 29  |..& . 0:. .6,10)|
00000800  3b 22 53 43 52 45 45 4e  20 22 3b 28 3f 6c 65 76  |;"SCREEN ";(?lev|
00000810  65 6c 29 2b 31 0d 03 ac  08 20 fb 20 37 0d 03 b6  |el)+1.... . 7...|
00000820  06 20 e1 0d 03 c0 05 20  0d 03 ca 05 20 0d 03 d4  |. ..... .... ...|
00000830  16 20 dd 20 f2 73 65 74  75 70 61 72 65 61 28 54  |. . .setuparea(T|
00000840  49 29 20 0d 03 de 0d 20  46 49 4e 49 53 48 3d a3  |I) .... FINISH=.|
00000850  0d 03 e8 13 20 d1 3d 30  3a f5 20 fd 20 91 3e 54  |.... .=0:. . .>T|
00000860  49 2f 32 0d 03 f2 1d 20  e3 20 4e 3d 26 32 46 36  |I/2.... . N=&2F6|
00000870  30 20 b8 20 26 32 46 39  46 3a 3f 4e 3d 30 3a ed  |0 . &2F9F:?N=0:.|
00000880  0d 03 fc 1d 20 e3 20 4e  3d 26 32 46 43 30 20 b8  |.... . N=&2FC0 .|
00000890  20 26 32 46 45 46 3a 3f  4e 3d 32 3a ed 0d 04 06  | &2FEF:?N=2:....|
000008a0  1e 20 e3 20 4e 3d 26 32  46 42 30 20 b8 20 26 32  |. . N=&2FB0 . &2|
000008b0  46 42 41 3a 3f 4e 3d 30  3a ed 20 0d 04 10 1d 20  |FBA:?N=0:. .... |
000008c0  e3 20 4e 3d 26 32 46 41  30 20 b8 20 26 32 46 41  |. N=&2FA0 . &2FA|
000008d0  46 3a 3f 4e 3d 36 3a ed  0d 04 1a 11 20 db 3a d4  |F:?N=6:..... .:.|
000008e0  20 31 2c 31 2c 33 30 2c  39 0d 04 24 20 20 fb 20  | 1,1,30,9..$  . |
000008f0  39 3a f1 20 8a 36 2c 31  30 29 3b 22 53 43 52 45  |9:. .6,10);"SCRE|
00000900  45 4e 20 31 22 3a fb 20  37 0d 04 2e 1b 20 f1 20  |EN 1":. 7.... . |
00000910  8a 30 2c 30 29 3b 22 53  43 4f 52 45 20 30 30 30  |.0,0);"SCORE 000|
00000920  30 30 30 22 0d 04 38 18  20 f1 20 8a 31 33 2c 30  |000"..8. . .13,0|
00000930  29 3b 22 4c 49 56 45 53  20 33 22 20 0d 04 42 17  |);"LIVES 3" ..B.|
00000940  20 ec 20 30 2c 39 38 30  3a df 20 31 32 38 30 2c  | . 0,980:. 1280,|
00000950  39 38 30 0d 04 4c 12 20  d1 3d 30 3a f5 20 fd 20  |980..L. .=0:. . |
00000960  91 3e 54 49 20 0d 04 56  21 20 fb 20 30 3a f1 20  |.>TI ..V! . 0:. |
00000970  8a 36 2c 31 30 29 3b 22  53 43 52 45 45 4e 20 31  |.6,10);"SCREEN 1|
00000980  22 3a fb 20 37 20 0d 04  60 07 20 e1 20 0d 04 6a  |":. 7 ..`. . ..j|
00000990  05 20 0d 04 74 05 20 0d  04 7e 14 20 dd 20 f2 69  |. ..t. ..~. . .i|
000009a0  6e 73 74 72 75 63 74 69  6f 6e 73 0d 04 88 1b 20  |nstructions.... |
000009b0  e7 20 53 43 4f 52 45 46  49 52 53 54 3d b9 20 8c  |. SCOREFIRST=. .|
000009c0  20 8d 54 5e 45 20 0d 04  92 06 20 db 0d 04 9c 0a  | .T^E .... .....|
000009d0  20 58 25 3d 31 31 0d 04  a6 29 20 f2 64 6f 75 62  | X%=11...) .doub|
000009e0  28 22 81 2d 2d 2d 83 53  50 41 43 45 20 49 4e 56  |(".---.SPACE INV|
000009f0  41 44 45 52 53 81 2d 2d  2d 22 2c 38 2c 30 29 0d  |ADERS.---",8,0).|
00000a00  04 b0 1a 20 f2 64 6f 75  62 28 22 20 20 86 4b 45  |... .doub("  .KE|
00000a10  59 53 22 2c 58 25 2c 34  29 0d 04 ba 23 20 f2 64  |YS",X%,4)...# .d|
00000a20  6f 75 62 28 22 85 20 20  43 41 50 53 87 20 20 2d  |oub(".  CAPS.  -|
00000a30  82 4c 45 46 54 22 2c 58  25 2c 38 29 0d 04 c4 27  |.LEFT",X%,8)...'|
00000a40  20 f2 64 6f 75 62 28 22  20 20 85 43 54 52 4c 87  | .doub("  .CTRL.|
00000a50  20 20 2d 82 52 49 47 48  54 22 2c 58 25 2c 31 32  |  -.RIGHT",X%,12|
00000a60  29 20 20 0d 04 ce 24 20  f2 64 6f 75 62 28 22 85  |)  ...$ .doub(".|
00000a70  3c 52 45 54 55 52 4e 3e  87 2d 82 46 49 52 45 22  |<RETURN>.-.FIRE"|
00000a80  2c 58 25 2c 31 36 29 0d  04 d8 2b 20 f2 64 6f 75  |,X%,16)...+ .dou|
00000a90  62 28 22 88 50 52 45 53  53 20 3c 52 45 54 55 52  |b(".PRESS <RETUR|
00000aa0  4e 3e 20 54 4f 20 42 45  47 49 4e 22 2c 37 2c 32  |N> TO BEGIN",7,2|
00000ab0  31 29 0d 04 e2 0c 20 2a  46 58 31 35 2c 31 0d 04  |1).... *FX15,1..|
00000ac0  ec 0a 20 d1 3d 30 3a f5  0d 04 f6 0b 20 41 3d a6  |.. .=0:..... A=.|
00000ad0  28 30 29 0d 05 00 19 20  fd 20 28 41 3c 3e 2d 31  |(0).... . (A<>-1|
00000ae0  29 20 84 20 28 91 3e 31  35 30 30 29 0d 05 0a 12  |) . (.>1500)....|
00000af0  20 e7 20 41 3d 31 33 20  8c 20 8d 74 60 45 0d 05  | . A=13 . .t`E..|
00000b00  14 13 20 d4 20 31 2c 2d  31 35 2c 32 30 30 2c 31  |.. . 1,-15,200,1|
00000b10  20 0d 05 1e 06 20 db 0d  05 28 29 20 f2 64 6f 75  | .... ...() .dou|
00000b20  62 28 22 83 2d 2d 2d 81  53 50 41 43 45 20 49 4e  |b(".---.SPACE IN|
00000b30  56 41 44 45 52 53 83 2d  2d 2d 22 2c 38 2c 30 29  |VADERS.---",8,0)|
00000b40  0d 05 32 1e 20 f2 64 6f  75 62 28 22 86 48 49 47  |..2. .doub(".HIG|
00000b50  48 20 53 43 4f 52 45 22  2c 31 34 2c 35 29 0d 05  |H SCORE",14,5)..|
00000b60  3c 2e 20 f2 64 6f 75 62  28 c4 36 2d a9 28 c3 28  |<. .doub(.6-.(.(|
00000b70  48 49 47 48 25 29 29 2c  22 30 22 29 2b c3 28 48  |HIGH%)),"0")+.(H|
00000b80  49 47 48 25 29 2c 31 37  2c 38 29 20 0d 05 46 1a  |IGH%),17,8) ..F.|
00000b90  20 e7 20 53 43 4f 52 45  46 49 52 53 54 3d a3 20  | . SCOREFIRST=. |
00000ba0  8c 20 8d 44 64 45 0d 05  50 21 20 f2 64 6f 75 62  |. .DdE..P! .doub|
00000bb0  28 22 86 4c 41 54 45 53  54 20 53 43 4f 52 45 22  |(".LATEST SCORE"|
00000bc0  2c 31 33 2c 31 32 29 0d  05 5a 30 20 f2 64 6f 75  |,13,12)..Z0 .dou|
00000bd0  62 28 c4 36 2d a9 28 c3  28 53 43 4f 52 45 25 29  |b(.6-.(.(SCORE%)|
00000be0  29 2c 22 30 22 29 2b c3  28 53 43 4f 52 45 25 29  |),"0")+.(SCORE%)|
00000bf0  2c 31 37 2c 31 35 29 0d  05 64 2d 20 f2 64 6f 75  |,17,15)..d- .dou|
00000c00  62 28 22 82 88 50 52 45  53 53 20 3c 52 45 54 55  |b("..PRESS <RETU|
00000c10  52 4e 3e 20 54 4f 20 42  45 47 49 4e 22 2c 36 2c  |RN> TO BEGIN",6,|
00000c20  32 31 29 20 0d 05 6e 0c  20 2a 46 58 31 35 2c 31  |21) ..n. *FX15,1|
00000c30  0d 05 78 0a 20 d1 3d 30  3a f5 0d 05 82 0b 20 41  |..x. .=0:..... A|
00000c40  3d a6 28 30 29 0d 05 8c  1a 20 fd 20 28 41 3c 3e  |=.(0).... . (A<>|
00000c50  2d 31 29 20 84 20 28 91  3e 31 35 30 30 29 20 0d  |-1) . (.>1500) .|
00000c60  05 96 23 20 e7 20 41 3c  3e 31 33 20 8c 20 d4 20  |..# . A<>13 . . |
00000c70  31 2c 2d 31 35 2c 32 30  30 2c 31 3a e5 20 8d 74  |1,-15,200,1:. .t|
00000c80  52 44 0d 05 a0 06 20 e1  0d 05 aa 05 20 0d 05 b4  |RD.... ..... ...|
00000c90  05 20 0d 05 be 19 20 dd  20 f2 64 6f 75 62 28 73  |. .... . .doub(s|
00000ca0  74 72 69 6e 67 24 2c 58  2c 59 29 0d 05 c8 0e 20  |tring$,X,Y).... |
00000cb0  e3 20 4e 3d 30 20 b8 20  31 0d 05 d2 1b 20 f1 20  |. N=0 . 1.... . |
00000cc0  8a 58 2c 59 2b 4e 29 3b  bd 31 34 31 3b 73 74 72  |.X,Y+N);.141;str|
00000cd0  69 6e 67 24 0d 05 dc 06  20 ed 0d 05 e6 06 20 e1  |ing$.... ..... .|
00000ce0  0d 05 f0 05 20 0d 05 fa  05 20 0d 06 04 14 20 dd  |.... .... .... .|
00000cf0  20 a4 63 6f 6e 76 65 72  74 73 63 6f 72 65 0d 06  | .convertscore..|
00000d00  0e 0a 20 54 25 3d 30 20  0d 06 18 21 20 e3 20 4c  |.. T%=0 ...! . L|
00000d10  25 3d 73 63 6f 72 65 61  64 64 72 20 b8 20 73 63  |%=scoreaddr . sc|
00000d20  6f 72 65 61 64 64 72 2b  35 0d 06 22 0d 20 54 25  |oreaddr+5..". T%|
00000d30  3d 54 25 2a 31 30 0d 06  2c 13 20 54 25 3d 54 25  |=T%*10..,. T%=T%|
00000d40  2b 28 3f 4c 25 2d 34 38  29 0d 06 36 06 20 ed 0d  |+(?L%-48)..6. ..|
00000d50  06 40 08 20 3d 54 25 0d  ff                       |.@. =T%..|
00000d59
20-02-88/PROG.m0
20-02-88/PROG.m1
20-02-88/PROG.m2
20-02-88/PROG.m4
20-02-88/PROG.m5