Blam

Products: Blam
Developer(s): Richard Haseltine
Date: 1984
Type: Program
Platform(s): TS 2068
Tags: Tutorial

“BLAM” is a two-part typing education and arcade game package by Richard S. Haseltine (Riverside Software, 1984) consisting of a loader/instructor program and the main BLAM game. The loader program provides keyboard instruction, a finger placement guide, a “Firecracker” timing exercise, and a scored finger-practice game before optionally chaining to load the BLAM game from tape. The main BLAM game drops letter-labeled bombs from the top of the screen that the player must intercept by pressing the correct key with the correct finger; scores are tracked per player across 28 letter sets and 4 speed levels using four string arrays (E$, F$, G$, H$) that can be saved to and loaded from tape. User-defined graphics (UDGs 144–164) are extensively redefined at runtime to create bomb shapes, firecracker imagery, explosion animations, and hand/finger diagrams, with different UDG bitmaps loaded depending on which program section is active.


Program Analysis

Overall Structure

The listing comprises two separate BASIC programs. The first (lines 2–2455) is the loader/instructor, named internally “BLAM” but functioning as a prerequisite tutorial that can chain-load the second program from tape. The second program (lines 1–2760) is the BLAM game itself. Both share similar design conventions, variable names, and UDG sets, suggesting they were developed together and share a common code heritage.

Program 1 – Loader/Instructor

Execution begins at line 2 with GO TO 439, which sets up an ON ERR GO TO 797 trap before initialising variables. The program presents a four-option main menu (line 798–806):

  1. All Instructions (sets MFLG=1, jumps to line 855)
  2. Finger/Key Exercise (sets MFLG=2)
  3. Firecracker Game (sets MFLG=3)
  4. BLAM Game (chains via LOAD "BLAM" at line 2435/2455)

A secondary in-game menu at line 2395 allows switching between these modes without a full restart, using the flag variables MFLG and M2FLG to track context.

Program 2 – BLAM Game

Execution begins at line 910 (or line 1 for a special “show keyboard” shortcut via SFLG=1). Initialisation at lines 910–936 sets up all variables, loads 24 named letter-sets into DIM A$(24,9), and allocates four score arrays E$, F$, G$, H$ (each DIM (27,4,3)), one per player slot. The game loop itself runs from line 220: a random column is chosen, a bomb character (\m) descends row by row (lines 270–455), and the player must press the matching key before it lands.

Flag System

Both programs use a shared flag convention to redirect flow through shared subroutines:

FlagMeaning
FLGGeneral mode/state: 0=normal, 5=game-over restart, 7=Firecracker play, 8/9=mid-exercise states, 10=instruction demo, 14=auto-demo, 16=explosion only, 17=explosion+paper change, 20=explosion in exercise
MFLGWhich top-level mode is active (1=instructions, 2=finger exercise, 3=Firecracker)
M2FLGSecondary mode flag used after returning from BLAM game menu
PFLGPlayer-specific state; value 4 forces a custom letter-set (B$) built from the player’s missed letters
SFLGScore-system flag: 1=skip intro and jump to keyboard display, 2=save-scores flow
BFLGError-recovery flag set by ON ERR handler
AFLGUsed during score-array reinitialization to abort early

UDG Management

Both programs make heavy use of User-Defined Graphics, redefining them multiple times at runtime to serve different visual purposes. In Program 1, UDGs 144–153 are first defined as keyboard-frame and line-drawing glyphs (lines 495–585), then redefined at line 720 as box-drawing characters for the exercise screen. At line 2045, they are redefined again as a detailed firecracker sprite. Program 2 defines its own set of UDGs at lines 990–1202, including bomb-body segments, hand outlines, and explosion fragments. The explosion subroutine at lines 45–110 (Program 1) and 100–168 (Program 2) uses UDGs \a–\d (144–147) as directional arrow-like quarter-circle shapes radiating from the blast centre.

Score Persistence

Program 2 implements a multi-player score record system. Up to four players are stored in P$(4,9). Each player’s best scores are held in one of the four string arrays E$H$, dimensioned (27,4,3) to cover 27 letter-sets × 4 speed levels, with each score stored as a 3-character string. The indirect dispatch at line 2425 (GO SUB IND*20+2015) routes score-read access to the correct array for the current player index. Scores can be saved to tape and reloaded with five sequential SAVE/LOAD calls (lines 2511–2519 and 1278–1283), with a VERIFY pass at lines 2530–2538.

Keyboard Layout Rendering

The subroutine at lines 855–965 (Program 1) renders an on-screen keyboard layout in four passes (one per row), controlled by FLG values 0–3. Each pass adjusts indent variables J and K to stagger the rows correctly. The hand diagram at lines 1135–1200 draws finger outlines using block graphics, with the palm drawn as a special case inside the loop at lines 1175–1180.

Letter-Set and Scoring Logic

In Program 1, the 36 keys are stored in DIM V$(36,1) loaded from DATA at line 455. Screen positions for each key are encoded in DIM M$(144,2) (line 465), giving row and column for each of the 36 keys across 4 passes. In Program 2, letter-sets are 6-letter strings from A$(D). The bomb targets one of 6 columns (S$ maps column index to screen column), and the player’s score per drop is determined by the row at which the bomb is intercepted (line 180: SC is set to the current row-number offset from the score chart printed at the right edge).

Adaptive Practice

After a game in Program 2, if the player missed 2 or 3 distinct letters (tracked in W$, built at lines 171–175), the subroutine at lines 2620–2700 constructs a custom letter-set string by repeating those missed letters, names a suggested practice set, and offers to load it directly. This is an early example of adaptive feedback in educational software.

Timing and Synchronization

Both programs use the system frame counter at addresses 23672–23674 (read via PEEK) for elapsed-time scoring. Program 1 reads this at line 310 to award up to 10 points per keypress based on reaction speed. Program 1 also resets the counter with POKE 23672,0 etc. at line 250 before each letter is presented. Program 2 uses a software delay loop at line 445 (FOR z=1 TO v: NEXT z) to control bomb-drop speed, with v set to 24, 16, 8, or 2 by the speed selector.

DRAW-Based Explosion Animation

The firework/explosion display in both programs uses DRAW INVERSE 1 to erase and redraw lines, creating a frame-based animation. In Program 1 (lines 142–157), DATA at lines 202–212 provides coordinate pairs for a multi-arm starburst pattern drawn in a loop. A separate RESTORE 212 + PLOT + DRAW sequence at lines 1680–1684 draws the firecracker fuse graphic.

Notable Idioms and Techniques

  • POKE 23560,0 clears the last-key-pressed system variable; PEEK E=42 (where E=23560) detects SYMBOL SHIFT+* as a menu-return shortcut throughout both programs.
  • VAL Z$(Z TO Z+2) and VAL M$(K) extract numeric values from packed string DATA, saving array dimensions.
  • GO SUB B*10 at line 1560 and line 170 dispatches to one of the letter-rendering subroutines (lines 480–909) based on the ASCII code of a character in B$, effectively implementing a computed GOSUB table.
  • The score-table indirect dispatch GO SUB IND*20+2015 at line 2425 similarly implements a four-way player-indexed jump.
  • The ON ERR GO TO / ON ERR RESET pair is used in both programs for error trapping, with BFLG and ERR variables used to distinguish error contexts (tape verify failure vs. general errors).
  • UDG character \n (char 157) is a single horizontal line pixel row, used as an animated “fuse” indicator in the Firecracker sequence.

Potential Anomalies

  • In Program 2, line 1165 contains IF y=10 THEN NEXT y, which skips the body of the outer loop for y=10. Since NEXT y inside an IF advances and tests the loop variable, this is a valid (if unusual) way to skip a single iteration without a GO TO.
  • Line 2030 in Program 2 reads LET U=VAL U$: GO TO IND*20+2015; this computes a target line that does not exist for IND values other than 1–4 (yielding lines 2035, 2055, 2075, 2095), which are all present — the dispatch table is correctly bounded by the player-slot limit of 4.
  • Program 1, line 20, redefines the subroutine originally at that line number in Program 2; within each program the line numbers are self-consistent, but the overlap means the two programs cannot be merged directly.

Content

Appears On

Related Products

Touch typing instruction.

Related Articles

Related Content

Image Gallery

Blam

Source Code

    2 GO TO 439
    3 IF K$="A" OR K$="S" OR K$="D" OR K$="F" OR K$="G" OR K$="H" OR K$="J" OR K$="K" OR K$="L" THEN PRINT PAPER 2; INK 7; BRIGHT 1; FLASH 0;AT R,C;K$: GO TO 7
    4 PRINT PAPER 6; INK 0; FLASH 0;AT R,C;K$: GO TO 7
    6 REM PROGRAM START:784."RUN" ESTABLISHES ALL VALUES TO ""0""
    7 BEEP .1,40
    8 POKE 23560,0: GO SUB 720: IF MFLG<>0 THEN GO TO 798
    9 IF M2FLG<>0 THEN GO TO 2385
   15 FOR x=12 TO Q: FOR y=0 TO 31 STEP 2: PRINT AT x,y;"  ": NEXT y: NEXT x: RETURN 
   20 FOR X=17 TO Q: FOR Y=0 TO 31 STEP 2: PRINT AT X,Y;"  ": NEXT Y: NEXT X: RETURN 
   25 FOR X=8 TO Q: FOR Y=0 TO 31 STEP 2: PRINT AT X,Y;"  ": NEXT Y: NEXT X: RETURN 
   30 FOR X=17 TO 21: FOR Y=0 TO 25 STEP 2: PRINT AT X,Y;"  ": NEXT Y: NEXT X: RETURN 
   35 FOR W=5 TO 21: FOR R=0 TO 31 STEP 2: PRINT AT W,R;"  ": NEXT R: NEXT W: RETURN 
   45 PRINT INK 7;AT X,F-1;"d";AT X,F+1;"b";AT X-1,F;"a";AT X+1,F;"c"
   50 PRINT INK 7;AT X,F-2;"d";"::::::";"b"
   55 PRINT INK 7;AT X+1,F-1;"::::::";AT X+2,F;"c"
   60 PRINT INK 7;AT X-1,F-1;"::::::";AT X-2,F;"a"
   65 PAUSE 10
   70 PRINT INK 2;AT X,F;"::";AT X,F-1;"::";AT X-1,F;"::";AT X,F+1;"::";AT X+1,F;"::"
   75 PRINT INK 2;AT X+1,F-1;"::";AT X-1,F-1;"::";AT X-1,F+1;"::";AT X+1,F+1;"::"
   80 PRINT INK 2;AT X,F-2;"d";AT X-2,F;"a";AT X,F+2;"b";AT X+2,F;"c"
   85 PAUSE 5: IF FLG=17 THEN PAPER 2: BORDER 2: CLS : GO TO 0095
   90 PRINT AT X-2,F;"  ";AT X-1,F-1;"      ";AT X,F-2;"          ";AT X+1,F-1;"      ";AT X+2,F;"  "
   95 SOUND 6,6;7,7;8,16;9,16;12,56;13,8: PAUSE 90: SOUND 8,0;9,0;10,0
  100 IF FLG=17 THEN RETURN 
  105 IF FLG=16 THEN RETURN 
  110 IF FLG=20 THEN RETURN 
  117 LET L=11: LET Z=1: RESTORE 202: PAPER 1: LET A=220: LET B=74
  122 LET Z$="219066219058"
  127 PRINT AT L,26;"e";"f";"g";AT L+1,26;"h";"i";"j"
  132 PLOT A,B
  137 INK 6
  142 FOR S=1 TO 7: READ G,H: DRAW INVERSE 1;G,H: READ G,H: DRAW INVERSE 1;G,H: READ G,H: DRAW G,H: READ G,H: DRAW G,H
  147 IF FLG=7 THEN LET FLG=8: RETURN 
  152 IF FLG=8 THEN RETURN 
  157 NEXT S
  162 FOR Y=L TO L+1: PRINT AT Y,26;"   ": NEXT Y: LET L=L+1
  172 IF FLG=8 AND Z>12 THEN LET FLG=16: LET X=15: LET F=27: GO SUB 45: GO SUB 1660: LET FLG=5: GO TO 265
  177 IF Z>12 THEN GO TO 0197
  182 LET A=VAL Z$(Z TO Z+2): LET Z=Z+3: LET B=VAL Z$(Z TO Z+2): LET Z=Z+3
  187 IF FLG=8 THEN LET FLG=9: RESTORE 202: RETURN 
  192 RESTORE 202: GO TO 0127
  197 RETURN 
  202 DATA -10,5,10,-5,5,13,-5,-13,8,4,-8,-4,-7,13,7,-13,0,12,0,-12,-10,5,10,-5,5,13,-5,-13,8,4
  207 DATA -8,-4,-7,13,7,-13,0,12,0,-12,-10,4,10,-4,-3,13,3,-13,11,6,-11,-6,-11,3,11,-3
  212 DATA -1,1,0,2,2,2,0,3,-2,2,0,1,2,2,0,2
  220 LET B1=1: LET L$="121212071616161212161919171614141617171614161212161407111412120709071112"
  225 LET SC=0: LET K=1: LET K$="": LET R=0: LET C=0
  227 IF FLG=0 THEN POKE 23672,0: POKE 23673,0: POKE 23674,0
  229 IF FLG=7 THEN GO TO 232
  230 FOR D=1 TO 36: LET K$=V$(D): LET R=VAL M$(K): LET K=K+1: LET C=VAL M$(K): LET K=K+1: LET R1=VAL M$(K): LET K=K+1: LET C1=VAL M$(K): LET K=K+1
  231 GO TO 240
  232 RANDOMIZE 0: FOR D=1 TO 36
  233 LET RD=INT (RND*36)+1: IF RD>=11 AND RD<=17 THEN GO TO 233
  234 LET O$=F$(RD): LET R=VAL O$(1): LET C=VAL O$(2 TO 3): LET K$=CHR$ (RD+47): LET C1=VAL O$(4 TO 5)
  237 IF FLG<>0 THEN GO SUB 388
  240 IF FLG=0 THEN GO SUB 0380
  250 IF FLG<>0 THEN POKE 23672,0: POKE 23673,0: POKE 23674,0
  252 IF FLG<>0 THEN PRINT FLASH 0; PAPER 7;AT 10,12;" ": PAUSE 2
  255 PRINT FLASH 1; PAPER 6; INK 0;AT R,C;K$
  257 IF FLG<>0 THEN PRINT PAPER 7; INK 0;AT 10,12;K$
  265 LET I$=INKEY$
  275 IF FLG=8 AND I$<>K$ THEN GO SUB 157
  280 IF FLG=9 AND I$<>K$ THEN LET FLG=8: GO SUB 127
  285 IF FLG=7 AND I$<>K$ THEN GO SUB 117
  287 IF PEEK E=42 THEN GO TO 3
  290 IF I$<>K$ THEN GO TO 0265
  300 LET B3=VAL L$(B1 TO B1+1): LET B1=B1+2
  310 BEEP .1,B3: IF FLG<>0 THEN LET Q=PEEK 23672+256*PEEK 23673+256*PEEK 23674: LET SC=SC+(10-INT (Q/30))
  315 IF FLG=8 THEN FOR W=9 TO 14: PRINT AT W,25;"      ": NEXT W: GO SUB 1680
  320 IF FLG<>0 THEN PRINT PAPER 6; INK 0;AT 3,26;SC;" "
  325 PRINT FLASH 0; PAPER 6; INK 0;AT R,C;K$
  335 IF K$="A" OR K$="S" OR K$="D" OR K$="F" OR K$="J" OR K$="K" OR K$="L" THEN PRINT PAPER 2; INK 7;AT R,C;K$
  337 IF FLG<>0 THEN GO SUB 390
  340 IF FLG=0 THEN GO SUB 0385
  345 IF FLG=5 THEN LET FLG=7: GO TO 0355
  350 IF FLG=8 THEN LET FLG=7
  355 NEXT D
  360 IF FLG=5 OR FLG=7 OR FLG=8 OR FLG=9 THEN GO TO 2110
  365 IF MFLG=1 OR MFLG=2 OR M2FLG=1 OR M2FLG=2 THEN GO TO 0405
  367 IF MFLG=3 THEN GO TO 400
  370 GO TO 0405
  380 FOR Y=R1+2 TO 10: PRINT PAPER 2; INK 7;AT Y,C1;"o": NEXT Y: RETURN 
  385 FOR Y=R1+2 TO 10: PRINT PAPER 2; INK 7;AT Y,C1;" ": NEXT Y: RETURN 
  388 FOR Y=8 TO 10: PRINT PAPER 2; INK 7;AT Y,C1;"o": NEXT Y: RETURN 
  390 FOR Y=8 TO 10: PRINT PAPER 2;AT Y,C1;" ": NEXT Y: RETURN 
  400 IF MFLG=3 THEN GO SUB 0030: PRINT INK 7;AT 17,10;"WELL DONE!": PAUSE 200: PRINT AT 17,10;"          ": GO TO 2110
  405 LET Q=21: GO SUB 0020
  407 LET Q=INT (PEEK 23672)+INT (256*PEEK 23673)+INT (256*PEEK 23674): LET TIME=INT (Q/60)
  409 PRINT INK 7;AT 17,10;"Well done!": PAUSE 100: PRINT INK 7;AT 19,0;"TIME=";TIME;" Seconds.";: PAUSE 100: IF TIME<=50 THEN PRINT INK 7;" You are ready"'"to play FIRECRACKER.": PAUSE 100
  410 PRINT INK 7;AT 21,0;"(To continue, press any letter.)": PAUSE 0: BEEP .1,40
  411 IF PEEK E=42 THEN GO TO 8
  412 LET Q=21: GO SUB 0020
  413 IF MFLG=2 OR M2FLG=2 THEN LET H$="2": GO TO 2385
  430 PRINT INK 7;AT 17,1;"Do you want to try it"'" again? (Y/N?)"
  431 IF PEEK E=42 THEN GO TO 7
  432 LET I$=INKEY$: IF I$<>"Y" AND I$<>"N" THEN GO TO 431
  435 BEEP .1,40: LET Q=18: GO SUB 0020
  437 IF I$="Y" THEN GO TO 1611
  438 RETURN 
  439 ON ERR GO TO 797
  440 PRINT AT 9,7;"STOP THE RECORDER.";AT 10,7;"DO NOT REWIND TAPE.": PAUSE 100: PRINT AT 14,8;"PLEASE STAND BY"
  441 PAUSE 300: IF PEEK 23560=64 THEN GO TO 444
  443 GO TO 447
  444 BEEP .1,40: CLS : ON ERR RESET : PRINT AT 9,8;"PLEASE STAND BY"
  447 LET G$="": LET L=0: LET FLG=0: LET MFLG=0: LET M2FLG=0: LET B$="": LET B3=0: LET X=0: LET S=0
  448 LET I$="": LET C1=0: LET R1=0: LET D=0: LET R=0: LET A=0: LET B=0: LET Z=0: LET Z$="":
  449 LET L2=0: LET B2=0: LET B1=0: LET L$="": LET C=0: LET SC=0: LET G=0: LET H=0: LET F=0: LET K=0: LET K$="": LET X=0:
  450 LET MFLG=0: LET M2FLG=0: RESTORE 455: DIM V$(36,1): FOR X=1 TO 36: READ D$: LET V$(X)=D$: NEXT X
  452 LET E=23560
  455 DATA "F","R","T","4","5","V","B","G","J","H","Y","U","6","7","N","M","D","E","3","C","K","I","8","S","W","2","X","L","O","9","A","Q","1","Z","P","0"
  465 DIM M$(144,2): FOR X=1 TO 144: READ G$: LET M$(X)=G$: NEXT X
  470 DATA "6","9","6","9","4","8","6","9","4","10","6","9","2","7","6","9","2","9","6","9","8","10","6","9","8","12","6","9","6","11","6","9","6","15","6","15","6","13","6","15","4","12","6","15","4","14","6","15","2","11","6","15","2","13","6","15","8","14","6","15","8","16","6","15"
  475 DATA "6","7","6","7","4","6","6","7","2","5","6","7","8","8","6","7","6","17","6","17","4","16","6","17","2","15","6","17","6","5","6","5","4","4","6","5","2","3","6","5","8","6","6","5","6","19","6","19","4","18","6","19","2","17","6","19"
  477 DATA "6","3","6","3","4","2","6","3","2","1","6","3","8","4","6","3","4","20","6","21","2","19","6","21"
  480 RESTORE 482: DIM F$(43,5): FOR X=1 TO 43: READ G$: LET F$(X)=G$: NEXT X
  482 DATA "21921","20103","20305","20507","20709","20909","21115","21315","21517","21719"
  484 DATA "0","0","0","0","0","0","0"
  486 DATA "60303","81209","80807","60707","40607","60909","61109","61315","41617","61515","61717"
  487 DATA "61919","81615","81415","41819","42021","40203","40809"
  488 DATA "60505","41009","41415","81009","40405","80605","41215","80403"
  495 FOR J=USR CHR$ 144 TO USR CHR$ 144+7: READ A: POKE J,A: NEXT J
  500 DATA 0,24,60,60,126,126,255,255
  505 FOR J=USR CHR$ 145 TO USR CHR$ 145+7: READ A: POKE J,A: NEXT J
  510 DATA 192,240,252,254,254,252,240,192
  515 FOR J=USR CHR$ 146 TO USR CHR$ 146+7: READ A: POKE J,A: NEXT J
  520 DATA 255,255,126,126,60,60,24,0
  525 FOR J=USR CHR$ 147 TO USR CHR$ 147+7: READ A: POKE J,A: NEXT J
  530 DATA 3,15,63,127,127,63,15,3
  550 FOR J=USR CHR$ 154 TO USR CHR$ 154+7: READ A: POKE J,A: NEXT J
  555 DATA 0,0,0,0,16,56,84,146
  560 FOR J=USR CHR$ 155 TO USR CHR$ 155+7: READ A: POKE J,A: NEXT J
  565 DATA 128,64,32,240,32,64,128,0
  570 FOR J=USR CHR$ 156 TO USR CHR$ 156+7: READ A: POKE J,A: NEXT J
  575 DATA 146,84,56,16,0,0,0,0
  580 FOR J=USR CHR$ 157 TO USR CHR$ 157+7: READ A: POKE J,A: NEXT J
  585 DATA 0,0,0,255,0,0,0,0
  590 FOR J=USR CHR$ 158 TO USR CHR$ 158+7: READ A: POKE J,A: NEXT J
  595 DATA 16,16,16,16,16,16,16,16
  655 LET MFLG=0: LET M2FLG=0: RESTORE 665
  660 FOR J=USR CHR$ 162 TO USR CHR$ 162+7: READ A: POKE J,A: NEXT J
  665 DATA 255,255,127,63,63,127,255,255
  670 FOR J=USR CHR$ 161 TO USR CHR$ 161+7: READ A: POKE J,A: NEXT J
  675 DATA 255,255,254,252,252,254,255,255
  680 FOR J=USR CHR$ 163 TO USR CHR$ 163+7: READ A: POKE J,A: NEXT J
  685 DATA 0,0,0,0,195,231,255,255
  690 FOR J=USR CHR$ 164 TO USR CHR$ 164+7: READ A: POKE J,A: NEXT J
  695 DATA 255,255,231,195,0,0,0,0
  700 FOR J=USR CHR$ 159 TO USR CHR$ 159+7: READ A: POKE J,A: NEXT J
  705 DATA 60,126,255,255,255,255,126,60
  720 RESTORE 730
  725 FOR J=USR CHR$ 148 TO USR CHR$ 148+7: READ A: POKE J,A: NEXT J
  730 DATA 0,0,0,0,0,0,0,255
  735 FOR J=USR CHR$ 149 TO USR CHR$ 149+7: READ A: POKE J,A: NEXT J
  740 DATA 129,129,129,129,129,129,129,129
  745 FOR J=USR CHR$ 150 TO USR CHR$ 150+7: READ A: POKE J,A: NEXT J
  750 DATA 255,0,0,0,0,0,0,0
  755 FOR J=USR CHR$ 151 TO USR CHR$ 151+7: READ A: POKE J,A: NEXT J
  760 DATA 1,1,1,1,1,1,1,1
  765 FOR J=USR CHR$ 152 TO USR CHR$ 152+7: READ A: POKE J,A: NEXT J
  770 DATA 128,128,128,128,128,128,128,128
  775 FOR J=USR CHR$ 153 TO USR CHR$ 153+7: READ A: POKE J,A: NEXT J
  780 DATA 1,2,4,15,4,2,1,0
  781 IF MFLG<>0 OR M2FLG<>0 THEN RETURN 
  784 POKE 23609,100: LET M2FLG=0: LET MFLG=0: LET H$="": LET FLG=0: RESTORE : BORDER 1: PAPER 1: INK 6: CLS 
  786 PRINT PAPER 2; INK 4;AT 6,0;"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'."
  787 PRINT AT 9,7;"WELCOME TO ""BLAM"""
  788 PRINT PAPER 2; INK 4;AT 12,0;"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'."
  789 PAUSE 200: PRINT AT 17,2;"* Richard S. Haseltine 1984";AT 18,7;"Riverside Software";AT 19,10;"R1 Box B-20";AT 20,5;"Orrington, Maine 04474"
  790 PAUSE 300: LET Q=20: GO SUB 20
  791 PAUSE 30: PRINT INK 6;AT 16,7;"(Learning to type";AT 17,12;"is fun)": PAUSE 300
  792 PRINT AT 9,7;"                   ": PAUSE 30: PRINT AT 9,6;"KEYBOARD INSTRUCTION": PAUSE 300
  793 FOR X=7 TO 24: PRINT AT 16,X;"  ";AT 17,X;"  ": NEXT X
  794 PAUSE 30: PRINT AT 14,12;"NOTICE";AT 15,12;"gggggg";AT 17,0;"Whenever you are asked for an   input, if you press ""SYMBOL"" and""*"", you'll return to a MENU."''"(To continue, press any letter.)"
  795 PAUSE 0: BEEP .1,40
  796 LET M2FLG=0: LET MFLG=0: LET L2=0: LET SFLG=0: LET FLG=0: GO TO 798
  797 LET BFLG=1
  798 POKE 23560,0: CLS : PRINT INK 5;AT 6,14;"MENU";AT 7,14;"gggg"
  800 PRINT INK 5;AT 8,5;"1) All Instructions"'"     2) Finger/key Exercise"'"     3) Firecracker Game"'"     4) BLAM Game"'': PRINT INK 7;"(Press 1,2,3,or 4, then press"'"ENTER)"
  802 PRINT INK 7;AT 17,0;" (If you are a beginning typist,  I suggest you select # 1.)"
  803 INPUT I$
  804 IF I$="=@_" THEN LET BFLG=0: GO TO 444
  805 IF BFLG=1 AND (I$="1" OR I$="2" OR I$="3" OR I$="4") THEN CLS : LET BFLG=0: GO TO 439
  806 LET I=VAL I$: IF I<1 OR I>4 THEN GO TO 803:
  807 LET I=0: IF I$="1" THEN LET I$="": LET MFLG=1: GO TO 855
  808 IF I$="2" THEN LET I$="": CLS : LET MFLG=2: GO SUB 720: GO SUB 855: GO SUB 1135: GO SUB 1245: LET FLG=0: GO SUB 1608
  812 IF I$="3" THEN LET I$="": LET MFLG=3: GO SUB 720: GO SUB 855: GO SUB 1135: GO SUB 1245: GO SUB 1660: GO SUB 1960: GO SUB 1973: GO SUB 2045: LET FLG=7: GO TO 2015
  814 IF I$="4" THEN LET I$="": CLS : PRINT AT 9,11;"PRESS ""L"""
  816 IF INKEY$<>"L" THEN GO TO 816
  820 GO TO 2450
  855 CLS : LET FLG=0: LET L=1: LET J=1: LET K=19
  860 FOR X=J TO K STEP 2: PRINT INK 7;AT L,X;CHR$ 148: NEXT X
  865 LET L=L+1: LET J=J-1: LET K=K-1
  870 PRINT INK 7;AT L,J;"h": LET J=J+2: FOR X=J TO K STEP 2: PRINT INK 7;AT L,X;"f": NEXT X: LET K=K+2: PRINT INK 7;AT L,K;"i"
  875 IF FLG=3 THEN GO TO 0915
  880 IF FLG=2 THEN GO TO 0910
  885 IF FLG=1 THEN GO TO 0900
  890 LET J=J-1: LET K=K-1: LET R$="1234567890": LET N=1
  895 IF FLG=0 THEN GO TO 0920
  900 LET R$="QWERTYUIOP": LET N=1: LET J=J-1: LET K=K-1
  905 IF FLG=1 THEN GO TO 0920
  910 LET R$="ASDFGHJKL": LET J=J-1: LET K=K-1: GO TO 0920
  915 LET R$="ZXCVBNM  ": LET J=J-1
  920 FOR X=J TO K STEP 2: PRINT PAPER 6; INK 0;AT L,X;R$(N): LET N=N+1: NEXT X: LET N=1
  925 LET L=L+1: FOR X=J TO K STEP 2: PRINT INK 5;AT L,X;"g": NEXT X
  930 IF FLG=1 THEN GO TO 0950
  935 IF FLG=2 THEN GO TO 0945
  940 IF FLG=3 THEN GO TO 0952
  945 LET FLG=FLG+1: LET J=J+1: LET K=K+1: GO TO 0860
  950 LET FLG=FLG+1: LET J=J+1: LET K=K-1: GO TO 0860
  952 IF MFLG=2 OR M2FLG=2 THEN RETURN 
  955 IF MFLG=3 OR M2FLG=3 THEN RETURN 
  960 IF SFLG<>1 THEN PRINT AT 10,6;"THE KEYBOARD"
  965 IF SFLG=1 THEN RETURN 
  975 FOR X=6 TO 17: PRINT AT 11,X;"g": NEXT X
  980 PAUSE 200
  990 PRINT INK 7'" ""BLAM"" is a FUN game; but while"'" you are enJoying it, something"'" else will be happening..."
  995 PRINT INK 7';"(To continue, press any letter.)": PAUSE 0: BEEP .1,40: LET Q=17
  997 IF PEEK E=42 THEN GO TO 8
 1000 GO SUB 0015
 1005 PRINT INK 7;AT 12,0;" While you are enjoying the"'" play, your eyes, brain, and"'" fingers will be learning to"'" quickly find any letter you"'" want."
 1010 PRINT INK 7;AT 18,0;"(To continue, press any letter)": PAUSE 0: BEEP .1,40
 1012 IF PEEK E=42 THEN GO TO 8
 1013 LET Q=18: GO SUB 0015
 1015 PRINT INK 7;AT 12,0;" But there's a hitch!": PAUSE 160
 1020 PRINT INK 7'" If you want to be a good"'" typist, you will follow a very"'" special rule in this game."
 1025 PRINT INK 7'" (To continue, press any letter)": PAUSE 0: BEEP .1,40
 1026 IF PEEK E=42 THEN GO TO 8
 1028 LET Q=19: GO SUB 0015
 1030 PRINT INK 7;AT 12,1;"THE RULE: After you type any"'" letter, RETURN YOUR FINGERS"'" TO THE ""HOME ROW"" KEYS!"
 1035 PRINT INK 7'" And what are the ""HOME ROW"""'" keys? I'll show you. Press any"'" letter and look above at the"'" Keyboard..."
 1040 PAUSE 0: BEEP .1,40
 1042 IF PEEK E=42 THEN GO TO 8
 1045 PRINT AT 6,24;"HOME ROW";AT 6,21;"jn";AT 7,24;"gggg ggg"
 1060 LET R$="ASDFGHJKL": LET N=1
 1065 FOR X=3 TO 19 STEP 2: PRINT PAPER 6; INK 0; FLASH 1;AT 6,X;R$(N): LET N=N+1: NEXT X: PAUSE 200
 1070 LET Q=19: GO SUB 0015
 1075 PRINT INK 7;AT 12,0;" This row is called the ""Home""   row because the fingers are     returned ""home"" to the Home     Row after any letter is typed."
 1080 PRINT INK 7;AT 17,0;" If this is done, the fingers"'" are in the best position to"'" easily reach any key."
 1085 PRINT INK 7;AT 21,0;" (To continue, press any letter)": PAUSE 0: BEEP .1,40
 1086 IF PEEK E=42 THEN GO TO 8
 1088 LET Q=21: GO SUB 0015
 1095 LET N=1: FOR X=3 TO 19 STEP 2: PRINT PAPER 6; INK 0; FLASH 0;AT 6,X;R$(N): LET N=N+1: NEXT X
 1100 PRINT INK 7;AT 12,1;"Look carefully at the ""F"" and"'" ""J"" keys on your computer."'" Unlike the other keys, the ""F"""'" and ""J"" keys have little bumps"'" on them."
 1110 PRINT PAPER 6; INK 0; FLASH 1;AT 6,9;"F";AT 6,15;"J"
 1115 PAUSE 300: PRINT INK 7;AT 18,0;"(To continue, press any letter)": PAUSE 0: BEEP .1,40
 1116 IF PEEK E=42 THEN GO TO 8
 1118 LET Q=18: GO SUB 0015
 1120 PRINT INK 7;AT 12,1;"Those little bumps tell a"'" person who wants to be a good"'" typist to put the ""pointer"""'" fingers of each hand on those"'" keys. Press any letter and I'll show you."
 1125 PAUSE 0: BEEP .1,40
 1126 IF PEEK E=42 THEN GO TO 8
 1128 LET Q=17: GO SUB 0015: FLASH 0
 1135 FOR X=6 TO 17: PRINT AT 10,X;" ";AT 11,X;" ": NEXT X
 1140 LET j=3: FOR y=1 TO 19: IF y=1 OR y=3 OR y=5 OR y=15 OR y=17 OR y=19 THEN LET l=10
 1145 IF y=2 OR y=4 OR y=6 OR y=14 OR y=16 OR y=18 THEN LET l=11
 1150 IF y=7 OR y=13 THEN LET l=6
 1155 IF y=8 THEN GO TO 1175
 1160 IF y=9 OR y=11 THEN LET l=12
 1165 IF y=10 THEN NEXT y
 1170 IF Y<8 OR Y>12 THEN GO TO 1185
 1175 PRINT INK 2;AT 11,10;" ::    :: ";AT 12,10;" ::   :: ";AT 13,10;":::    :::";AT 14,10;"::   ::";AT 14,10;"::      ::"
 1180 LET Y=12: LET J=15: GO TO 1190
 1185 FOR x=l TO 15: PRINT INK 2;AT x,j;"::": NEXT x: LET j=j+1: IF j=12 THEN LET j=j+1
 1190 NEXT y
 1195 PRINT INK 2;AT 13,3;" :";AT 13,21;": ";AT 14,3;"  ";AT 14,21;"  "
 1200 PRINT INK 2;AT 15,3;"   :";AT 15,20;":   "
 1205 PRINT INK 7;AT 13,5;"LEFT";AT 13,16;"RIGHT": PRINT PAPER 2; INK 7; BRIGHT 1;AT 6,9;"F";AT 6,15;"J"
 1207 IF MFLG=2 OR M2FLG=2 THEN RETURN 
 1210 IF SFLG=1 THEN RETURN 
 1215 IF MFLG=3 OR M2FLG=3 THEN RETURN 
 1220 PRINT INK 7;AT 18,0;"(To continue, press any letter)": PAUSE 0: BEEP .1,40
 1222 IF PEEK E=42 THEN GO TO 8
 1225 LET Q=18: GO SUB 0020
 1230 PRINT INK 7;AT 17,0;" Now place all your fingers on"'" the Home Row keys, with the"'" ""pointer"" fingers on ""F"" and"'" ""J"". Press any letter and I'll"'" show you how to do it."
 1235 PAUSE 0: BEEP .1,40
 1236 IF PEEK E=42 THEN GO TO 8
 1238 LET Q=21: GO SUB 0020
 1245 LET R$="DSA": LET J=7: FOR X=1 TO 3
 1250 FOR L=9 TO 6 STEP -1: PRINT INK 2;AT L,J;"::": PAUSE 5: NEXT L: PRINT PAPER 2; INK 7; BRIGHT 1;AT L+1,J;R$(X): PAUSE 70: LET J=J-2: NEXT X
 1255 LET R$="KL ": LET J=17: FOR X=1 TO 3: FOR L=9 TO 6 STEP -1: PRINT INK 2;AT L,J;"::": PAUSE 5: NEXT L: IF X<>3 THEN PRINT PAPER 2; INK 7; BRIGHT 1;AT L+1,J;R$(X): LET J=J+2: PAUSE 70: NEXT X
 1257 IF MFLG=2 OR M2FLG=2 THEN RETURN 
 1260 IF SFLG=1 THEN RETURN 
 1265 IF MFLG=3 OR M2FLG=3 THEN LET FLG=0: RETURN 
 1272 PRINT AT 3,27;"ON";AT 4,25;" ENTER ";AT 4,24;"e": PAUSE 10: PRINT AT 4,23;"e": PAUSE 10: PRINT AT 4,22;"e": PAUSE 10: PRINT AT 5,21;"h": PRINT PAPER 2; INK 7;AT 6,21;"*": PAUSE 200
 1273 PRINT AT 3,27;"  ";AT 4,22;"          ";AT 5,21;" ": PRINT PAPER 2;AT 6,21;" "
 1275 PRINT INK 7;AT 18,0;"(To continue, press any letter)": PAUSE 0: BEEP .1,40
 1278 IF PEEK 23560=42 THEN GO TO 8
 1280 PRINT INK 7;AT 17,0;" As you place your fingers on    the keys, keep the fingers      curved, with the fingertips     resting lightly on the keys.";'" (To continue, press any letter)": PAUSE 0: BEEP .1,40
 1281 IF PEEK E=42 THEN GO TO 8
 1283 LET Q=21: GO SUB 0020
 1285 PRINT INK 7;AT 17,0;"Press any letter and look at thekeyboard display to see which   keys are typed by each finger."
 1292 PAUSE 0: BEEP .1,40
 1295 LET Q=21: GO SUB 0020: PRINT PAPER 2; INK 7;AT 11,9;"1"
 1305 PRINT FLASH 1; PAPER 6; INK 0;AT 6,9;"F";AT 2,9;"5";AT 2,7;"4";AT 4,8;"R";AT 4,10;"T";AT 6,11;"G";AT 8,10;"V";AT 8,12;"B"
 1310 IF PEEK E=42 THEN GO TO 7
 1315 FOR X=1 TO 200: NEXT X
 1320 PRINT FLASH 0; PAPER 6; INK 0;AT 6,9;"F";AT 2,9;"5";AT 2,7;"4";AT 4,8;"R";AT 4,10;"T";AT 6,11;"G";AT 8,10;"V";AT 8,12;"B"
 1330 PRINT PAPER 2; INK 7;AT 6,9;"F": FOR X=9 TO 14: PRINT PAPER 2; INK 7;AT 11,X;" n": NEXT X: PRINT PAPER 2; INK 7;AT 11,15;"1": PRINT PAPER 1; INK 2;AT 11,9;"::";AT 11,10;" ::   :: "
 1340 PRINT FLASH 1; PAPER 6; INK 0;AT 2,11;"6";AT 2,13;"7";AT 4,12;"Y";AT 4,14;"U";AT 6,13;"H";AT 6,15;"J";AT 8,14;"N";AT 8,16;"M"
 1342 IF PEEK E=42 THEN GO TO 7
 1345 FOR X=1 TO 200: NEXT X
 1355 PRINT FLASH 0; PAPER 6; INK 0;AT 2,11;"6";AT 2,13;"7";AT 4,12;"Y";AT 4,14;"U";AT 6,13;"H";AT 8,14;"N";AT 8,16;"M"
 1360 PRINT PAPER 2; INK 7;AT 6,15;"J": FOR X=14 TO 7 STEP -1: PRINT PAPER 2; INK 7;AT 11,X;"n ": NEXT X: PRINT PAPER 2; INK 7;AT 11,7;"2": PRINT PAPER 1; INK 2;AT 11,10;" ::   :: "
 1370 PRINT FLASH 1; PAPER 6; INK 0;AT 2,5;"3";AT 4,6;"E";AT 6,7;"D";AT 8,8;"C"
 1372 IF PEEK E=42 THEN GO TO 7
 1375 FOR X=1 TO 200: NEXT X
 1385 PRINT FLASH 0; PAPER 6; INK 0;AT 2,5;"3";AT 4,6;"E";AT 6,7;"D";AT 8,8;"C"
 1390 FOR X=7 TO 16: PRINT PAPER 2; INK 7;AT 11,X;" n": NEXT X: PRINT PAPER 2; INK 7;AT 11,17;"2": PRINT PAPER 2; INK 7;AT 6,7;"D": PRINT PAPER 1; INK 2;AT 11,10;" ::   :: "
 1400 PRINT FLASH 1; PAPER 6; INK 0;AT 2,15;"8";AT 4,16;"I";AT 6,17;"K"
 1402 IF PEEK E=42 THEN GO TO 7
 1405 FOR X=1 TO 200: NEXT X
 1415 PRINT FLASH 0; PAPER 6; INK 0;AT 2,15;"8";AT 4,16;"I"
 1420 FOR X=16 TO 5 STEP -1: PRINT PAPER 2; INK 7;AT 11,X;"n ": NEXT X: PRINT PAPER 2; INK 7;AT 11,5;"3": PRINT PAPER 2; INK 7;AT 6,17;"K": PRINT PAPER 1; INK 2;AT 11,10;" ::   :: "
 1430 PRINT FLASH 1; PAPER 6; INK 0;AT 2,3;"2";AT 4,4;"W";AT 6,5;"S";AT 8,6;"X"
 1432 IF PEEK E=42 THEN GO TO 7
 1435 FOR X=1 TO 200: NEXT X
 1445 PRINT FLASH 0; PAPER 6; INK 0;AT 2,3;"2";AT 4,4;"W";AT 6,5;"S";AT 8,6;"X"
 1450 FOR X=5 TO 18: PRINT PAPER 2; INK 7;AT 11,X;" n": NEXT X: PRINT PAPER 2; INK 7;AT 11,19;"3": PRINT PAPER 2; INK 7;AT 6,5;"S": PRINT PAPER 1; INK 2;AT 11,10;" ::   :: "
 1460 PRINT FLASH 1; PAPER 6; INK 0;AT 2,17;"9";AT 4,18;"O";AT 6,19;"L"
 1462 IF PEEK E=42 THEN GO TO 7
 1465 FOR X=1 TO 200: NEXT X
 1475 PRINT FLASH 0; PAPER 6; INK 0;AT 2,17;"9";AT 4,18;"O";AT 6,19;"L"
 1480 FOR X=18 TO 3 STEP -1: PRINT PAPER 2; INK 7;AT 11,X;"n ": NEXT X: PRINT PAPER 2; INK 7;AT 11,3;"4": PRINT PAPER 2; INK 7;AT 6,19;"L": PRINT PAPER 1; INK 2;AT 11,10;" ::   :: "
 1490 PRINT FLASH 1; PAPER 6; INK 0;AT 2,1;"1";AT 4,2;"Q";AT 6,3;"A";AT 8,4;"Z"
 1492 IF PEEK E=42 THEN GO TO 7
 1495 FOR X=1 TO 200: NEXT X
 1505 PRINT FLASH 0; PAPER 6; INK 0;AT 2,1;"1";AT 4,2;"Q";AT 6,3;"A";AT 8,4;"Z"
 1510 FOR X=3 TO 20: PRINT PAPER 2; INK 7;AT 11,X;" n": NEXT X: PRINT PAPER 2; INK 7;AT 11,21;"4": PRINT PAPER 2; INK 7;AT 6,3;"A": PRINT PAPER 1; INK 2;AT 11,10;" ::   :: "
 1520 PRINT FLASH 1; PAPER 6; INK 0;AT 4,20;"P";AT 2,19;"0"
 1522 IF PEEK E=42 THEN GO TO 7
 1525 FOR X=1 TO 200: NEXT X
 1535 PRINT FLASH 0; PAPER 6; INK 0;AT 4,20;"P";AT 2,19;"0"
 1540 PRINT INK 2;AT 11,21;"::";AT 6,21;"::"
 1545 LET Q=21: GO SUB 20
 1550 PRINT AT 18,0;"Would you like to see that again(Y/N)?"
 1551 IF PEEK E=42 THEN GO TO 7
 1552 LET I$=INKEY$: IF I$<>"Y" AND I$<>"N" THEN GO TO 1551
 1553 BEEP .1,40: IF I$="Y" THEN LET I$="": LET Q=19: GO SUB 20: PRINT PAPER 2; INK 7;AT 11,9;"1": GO TO 1305
 1554 LET Q=19: GO SUB 20
 1555 PRINT INK 7;AT 17,1;"Learning to press the right key"'" with the proper finger is an"'" IMPORTANT part of learning to"'" type fast!"'"(To continue, press any letter)"
 1560 PAUSE 0: BEEP .1,40
 1562 IF PEEK E=42 THEN GO TO 8
 1564 LET Q=21: GO SUB 0020
 1570 PRINT INK 7;AT 17,1;"Let's play a game with this!"''" After the game starts, a letter"'" will FLASH. Find it on your"'" computer keys.(Press any key)."
 1575 PAUSE 0: BEEP .1,40
 1576 IF PEEK E=42 THEN GO TO 8
 1579 LET Q=21: GO SUB 0020
 1580 PRINT INK 7;AT 17,0;"When you find the flashing let-"'"ter, press it with the proper"'"finger."''"(To continue, press any letter)"
 1582 PAUSE 0: BEEP .1,40
 1583 IF PEEK E=42 THEN GO TO 8
 1584 LET Q=21: GO SUB 20
 1586 PRINT INK 7;AT 17,0;"To help you know which finger to"'"use, a white line will be drawn"'"on the proper finger."
 1590 PAUSE 200: FOR X=1 TO 10: PRINT PAPER 2; INK 7;AT 10,9;"o";AT 9,9;"o";AT 8,9;"o": PAUSE 20
 1592 PRINT PAPER 2;AT 10,9;" ";AT 9,9;" ";AT 8,9;" ": PAUSE 20: NEXT X
 1595 PRINT INK 7;AT 21,0;"(To continue, press any letter)"
 1596 PAUSE 0: BEEP .1,40
 1597 IF PEEK E=42 THEN GO TO 8
 1598 LET FLG=0: LET Q=21: GO SUB 0020
 1604 PRINT INK 7;AT 17,1;"After the last letter is shown, the total time in seconds that  it took for completion will be  shown."
 1605 PAUSE 300: PRINT INK 7;AT 21,0;"(To continue, press any letter)": PAUSE 0: BEEP .1,40
 1606 IF PEEK E=42 THEN GO TO 8
 1607 LET Q=21: GO SUB 0020
 1608 PRINT INK 7;AT 17,0;"If you'll replay this exercise  until your time is 50 seconds orless, you'll have more fun and  will be more skillful when you  play ""BLAM"".(Press any letter)"
 1609 PAUSE 0: BEEP .1,40
 1610 IF PEEK E=42 THEN GO TO 8
 1611 LET Q=21: GO SUB 0020
 1612 PRINT INK 7;AT 17,1;"1) See the FLASHING letter."'" 2) See which finger to use."'" 3) Press key with that finger."'" 4) RETURN FINGERS TO HOME ROW."'"(To start game, press any key)"
 1613 PAUSE 0: BEEP .1,40
 1614 IF PEEK E=42 THEN GO TO 8
 1615 GO SUB 220
 1617 IF MFLG=2 THEN GO TO 2385
 1618 PRINT INK 7;AT 17,1;"To make practicing more fun,"'" let's play the FIRECRACKER"'" game! Press the ""J"" and I'll"'" tell you how to play!" 
 1620 LET Z=15: LET R$="o": GO TO 1630
 1625 FOR X=10 TO 8 STEP -1: PRINT PAPER 2; INK 7;AT X,Z;R$: NEXT X: RETURN 
 1630 GO SUB 1625
 1632 IF PEEK E=42 THEN GO TO 7
 1635 IF INKEY$<>"J" THEN GO TO 1632
 1640 BEEP .1,40: LET Q=20: GO SUB 0020
 1645 LET R$=" ": GO SUB 1625
 1650 PRINT INK 7;AT 17,1;"We'll stand a firecracker"'" here, like this"
 1655 FOR X=16 TO 24: PRINT AT 18,X;".": PAUSE 10: NEXT X
 1660 FOR X=15 TO 19: PRINT INK 2;AT X,26;" :::: ": NEXT X: PRINT INK 2;AT 20,26;".::::."
 1665 IF MFLG=3 THEN GO TO 1680
 1667 IF M2FLG=3 THEN GO TO 1680
 1670 PAUSE 100: PRINT AT 6,22;"          ";AT 7,24;"        "
 1680 RESTORE 212: PLOT 220,56: FOR x=1 TO 8: READ G,M: DRAW G,M: NEXT X
 1685 IF FLG=8 OR FLG=16 THEN LET FLG=7: RETURN 
 1690 IF FLG=16 THEN RETURN 
 1695 IF MFLG=3 THEN RETURN 
 1697 IF M2FLG=3 THEN RETURN 
 1700 PAUSE 200: PRINT INK 7;AT 20,0;"(To continue,"'"press any letter)": PAUSE 0: BEEP .1,40
 1702 IF PEEK E=42 THEN GO TO 8
 1704 GO SUB 0030
 1705 GO TO 1830
 1830 PRINT INK 7;AT 17,1;"When you press ""F"","'" we will light the fuse."'" See what happens!"
 1835 LET R$="o": LET Z=9: GO SUB 1625: PRINT INK 7;AT 21,0;"(Press ""F"")"
 1838 IF PEEK E=42 THEN GO TO 7
 1840 IF INKEY$<>"F" THEN GO TO 1838
 1845 BEEP .1,40: GO SUB 0030
 1850 LET R$=" ": GO SUB 1625
 1860 GO SUB 2045
 1870 GO SUB 112
 1880 LET FLG=16: LET X=16: LET F=27: GO SUB 45
 1885 PAUSE 100: GO SUB 1660: LET FLG=0
 1890 PRINT INK 7;AT 17,1;"When a flashing letter"'" appears, the firecracker"'" fuse will be lit!"
 1895 LET R$="o": LET Z=9: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""F"")"
 1898 IF PEEK E=42 THEN GO TO 7
 1900 IF INKEY$<>"F" THEN GO TO 1898
 1905 BEEP .1,40: GO SUB 0030: LET R$=" ": GO SUB 1625
 1910 PRINT INK 7;AT 17,1;"Try to find and press"'" the letter before the"'" firecracker explodes!"
 1915 LET R$="o": LET Z=15: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""J"")"
 1918 IF PEEK E=42 THEN GO TO 7
 1920 IF INKEY$<>"J" THEN GO TO 1918
 1925 BEEP .1,40: GO SUB 0030: LET R$=" ": LET Z=15: GO SUB 1625
 1930 PRINT INK 7;AT 17,1;"The faster you react in"'" pressing the proper key,"'" the higher you score!"
 1935 LET R$="o": LET Z=9: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""F"")"
 1938 IF PEEK E=42 THEN GO TO 7
 1940 IF INKEY$<>"F" THEN GO TO 1938
 1945 BEEP .1,40: GO SUB 0030: LET R$=" ": GO SUB 1625
 1950 PRINT INK 7;AT 17,1;"If the firecracker"'" explodes, you will lose"'" points."
 1952 LET R$="o": LET Z=15: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""J"")"
 1954 IF PEEK E=42 THEN GO TO 7
 1955 IF INKEY$<>"J" THEN GO TO 1954
 1956 BEEP .1,40: GO SUB 0030: LET R$=" ": GO SUB 1625
 1957 PRINT INK 7;AT 17,0;"Each flashing letter will"'"also be printed in this"'"window."
 1958 PRINT INK 4;AT 10,11;"n";AT 10,13;"n";AT 11,12;"o": IF MFLG=3 OR M2FLG=3 THEN RETURN 
 1959 PRINT INK 7; FLASH 1;AT 10,12;"::": PAUSE 300
 1960 PRINT PAPER 7; FLASH 0;AT 10,12;" ": IF MFLG=3 OR M2FLG=3 THEN RETURN 
 1961 LET R$="o": LET Z=17: GO SUB 1625
 1962 PRINT INK 7;AT 21,0;"(To continue,press ""K"")"
 1963 IF PEEK E=42 THEN GO TO 7
 1964 IF INKEY$<>"K" THEN GO TO 1964
 1965 BEEP .1,40: LET R$=" ": GO SUB 1625: GO SUB 0030
 1966 PRINT INK 7;AT 17,0;"As you gain skill in"'"finding letters, try to"'"watch only the window."''"(To continue, press ""D"")"
 1967 IF PEEK E=42 THEN GO TO 7
 1968 LET R$="o": LET Z=7: GO SUB 1625
 1969 IF INKEY$<>"D" THEN GO TO 1968
 1970 BEEP .1,40: LET R$=" ": GO SUB 1625: GO SUB 0030
 1972 PRINT INK 7;AT 17,1;"Your score will be shown"'" in the SCORE BOX": PAUSE 100
 1973 FOR X=2 TO 4: PRINT AT X,25;"::::::::::": NEXT X: PRINT AT 6,25;"SCORE"
 1974 IF MFLG=3 OR M2FLG=3 THEN LET Q=18: GO SUB 0030: RETURN 
 1975 LET R$="o": LET Z=15: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""J"")"
 1978 IF PEEK E=42 THEN GO TO 7
 1980 IF INKEY$<>"J" THEN GO TO 1978
 1985 BEEP .1,40: GO SUB 0030: LET R$=" ": GO SUB 1625
 1995 PRINT INK 7;AT 17,1;"Whatever happens, you"'" must press the proper"'" key before the next"'" letter will appear."
 2000 LET R$="o": LET Z=9: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""F"")"
 2003 IF PEEK E=42 THEN GO TO 7
 2005 IF INKEY$<>"F" THEN GO TO 2003
 2010 BEEP .1,40: GO SUB 0030: LET R$=" ": GO SUB 1625: LET L2=0: LET B2=0
 2015 PRINT INK 7;AT 17,10;"READY?";AT 20,3;"(To start, press ""D"")"
 2020 LET R$="o": LET Z=7: GO SUB 1625
 2023 IF PEEK E=42 THEN GO TO 7
 2025 IF INKEY$<>"D" THEN GO TO 2023
 2030 BEEP .1,40: GO SUB 0030: LET R$=" ": GO SUB 1625
 2035 LET FLG=7: LET SC=0: GO TO 220
 2045 RESTORE 2050: FOR J=USR CHR$ 148 TO USR CHR$ 148+7: READ A: POKE J,A: NEXT J
 2050 DATA 0,0,0,0,17,9,4,2
 2055 FOR J=USR CHR$ 149 TO USR CHR$ 149+7: READ A: POKE J,A: NEXT J
 2060 DATA 0,8,8,8,41,42,171,95
 2065 FOR J=USR CHR$ 150 TO USR CHR$ 150+7: READ A: POKE J,A: NEXT J
 2070 DATA 0,0,0,128,4,136,80,176
 2075 FOR J=USR CHR$ 151 TO USR CHR$ 151+7: READ A: POKE J,A: NEXT J
 2080 DATA 33,26,7,15,3,127,0,15
 2085 FOR J=USR CHR$ 152 TO USR CHR$ 152+7: READ A: POKE J,A: NEXT J
 2090 DATA 94,191,127,255,127,255,249,8
 2095 FOR J=USR CHR$ 153 TO USR CHR$ 153+7: READ A: POKE J,A: NEXT J
 2100 DATA 192,168,112,220,224,252,192,56
 2105 RETURN 
 2120 IF SC<=50 AND L2=0 AND B2=0 THEN LET L2=SC: LET B2=SC: GO TO 2220
 2125 IF SC>=50 AND SC<100 AND L2=0 AND B2=0 THEN LET L2=SC: LET B2=SC: GO TO 2220
 2130 IF SC>=100 AND SC<250 AND L2=0 AND B2=0 THEN LET L2=SC: LET B2=SC: GO TO 2240
 2135 IF SC>=250 AND L2=0 AND B2=0 THEN LET L2=SC: LET B2=SC: GO TO 2260
 2140 IF SC<=50 AND SC<=L2 AND SC<=B2 THEN LET L2=SC: GO TO 2280
 2145 IF SC<=50 AND SC>L2 AND SC<B2 THEN LET L2=SC: GO TO 2280
 2155 IF SC>=50 AND SC<100 AND SC<=L2 THEN LET L2=SC: GO TO 2320
 2160 IF SC>=50 AND SC<100 AND SC>=L2 AND SC<B2 THEN LET L2=SC: GO TO 2220
 2162 IF SC>=50 AND SC<100 AND SC>B2 THEN LET L2=SC: LET B2=SC: GO TO 2300
 2165 IF SC>=100 AND SC<250 AND SC<=L2 THEN LET L2=SC: GO TO 2280
 2170 IF SC>=100 AND SC<250 AND SC>=L2 AND SC<B2 THEN LET L2=SC: GO TO 2280
 2175 IF SC>=100 AND SC<250 AND SC>B2 THEN LET L2=SC: LET B2=SC: GO TO 2300
 2180 IF SC>=250 AND SC<=L2 THEN LET L2=SC: GO TO 2340
 2190 IF SC>=250 AND SC>B2 THEN LET L2=SC: LET B2=SC: GO TO 2360
 2220 PRINT INK 7;AT 17,1;"Not bad. You are finding"'" it hard, but you're do-"'" ing it! Thus, you learn!"
 2225 LET R$="o": LET Z=19: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""L"")"
 2228 IF PEEK E=42 THEN GO TO 7
 2230 IF INKEY$<>"L" THEN GO TO 2228
 2235 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2240 PRINT INK 7;AT 17,1;"Pretty good! Here's some"'" good news! It gets easier"'" the more you play!"
 2245 LET R$="o": LET Z=15: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""H"")"
 2248 IF PEEK E=42 THEN GO TO 7
 2250 IF INKEY$<>"H" THEN GO TO 2248
 2255 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2260 PRINT INK 7;AT 17,1;"Very good! If you used"'" the proper fingers to"'" get this score, you're"'" ready to play ""Blam""!"
 2265 LET R$="o": LET Z=9: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""G"")"
 2268 IF PEEK E=42 THEN GO TO 7
 2270 IF INKEY$<>"G" THEN GO TO 2268
 2275 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2280 PRINT INK 7;AT 17,1;"Good news! It gets"'" easier the more you try!"'" And you're trying!"
 2285 LET R$="o": LET Z=3: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""A"")"
 2288 IF PEEK E=42 THEN GO TO 7
 2290 IF INKEY$<>"A" THEN GO TO 2288
 2295 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2300 PRINT INK 7;AT 17,1;"Nice going! Your best"'" score so far! Keep it"'" up! You're learning!"
 2305 LET R$="o": LET Z=9: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""F"")"
 2308 IF PEEK E=42 THEN GO TO 7
 2310 IF INKEY$<>"F" THEN GO TO 2308
 2315 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2320 PRINT INK 7;AT 17,1;"Why not take a few mo-"'" ments and practice any"'" fingering that is caus-"'" you trouble?"
 2325 LET R$="o": LET Z=15: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""J"")"
 2328 IF PEEK E=42 THEN GO TO 7
 2330 IF INKEY$<>"J" THEN GO TO 2328
 2335 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2340 PRINT INK 7;AT 17,1;"Very good! You are ready"'" to play ""Blam""!"
 2345 LET R$="o": LET Z=7: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""D"")"
 2348 IF PEEK E=42 THEN GO TO 7
 2350 IF INKEY$<>"D" THEN GO TO 2348
 2355 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625: GO TO 2385
 2360 PRINT INK 7;AT 17,1;"Excellent! You have"'" beaten your best score."'" You'll do well when"'" you play ""Blam""!"
 2365 LET R$="o": LET Z=17: GO SUB 1625: PRINT INK 7;AT 21,0;"(To continue, press ""K"")"
 2368 IF PEEK E=42 THEN GO TO 7
 2370 IF INKEY$<>"K" THEN GO TO 2368
 2375 BEEP .1,40: GO SUB 30: LET R$=" ": GO SUB 1625
 2385 POKE 23560,0: IF MFLG=2 OR M2FLG=2 THEN LET Q=21: GO SUB 20: GO TO 2390
 2386 IF M2FLG=1 THEN CLS : GO TO 2390
 2387 IF MFLG=1 OR MFLG=3 OR M2FLG=3 THEN GO SUB 30: PRINT AT 3,26;"::::::";AT 10,11;"   ";AT 11,12;" ": LET SC=0: LET H$="1"
 2390 LET M2FLG=0: LET MFLG=0
 2395 PRINT INK 5;AT 17,1;"MENU: 1) Firecracker"'"       2) Finger Practice"'"       3) All Instructions"'"       4) BLAM"': PRINT INK 7;"Enter Selection(1 to 4)"
 2397 IF INKEY$="" THEN GO TO 2397
 2398 LET I$=INKEY$: IF I$="@" THEN GO TO 444
 2400 IF I$<"1" OR I$>"4" THEN GO TO 2400
 2402 BEEP .1,40: IF I$="1" AND H$="3" THEN CLS : LET M2FLG=3: GO SUB 720: GO SUB 855: GO SUB 1135: GO SUB 1245: GO SUB 1660: GO SUB 1960: GO SUB 1973: GO SUB 2045: LET H$=I$: LET I$="": GO TO 2015
 2403 IF I$="2" AND H$="3" THEN CLS : LET M2FLG=2: GO SUB 720: GO SUB 855: GO SUB 1135: GO SUB 1245: LET H$=I$: LET I$="": LET FLG=0: GO TO 1608
 2405 LET M2FLG=3: IF I$="1" AND H$<>"1" THEN GO SUB 0030: FOR X=2 TO 4: PRINT AT X,25;"::::::::::": NEXT X: PRINT AT 6,25;"SCORE": LET H$=I$: GO SUB 1660: GO SUB 1960: GO SUB 2045: LET FLG=7: LET I$="": GO TO 2015
 2410 LET M2FLG=3: IF I$="1" AND H$="1" THEN GO SUB 0030: GO SUB 1960: LET H$=I$: LET FLG=7: LET I$="": GO TO 2015
 2415 IF I$="2" AND H$="1" THEN GO SUB 0030: LET FLG=0: LET M2FLG=2: FOR X=2 TO 21: PRINT AT X,25;"      ": NEXT X: LET H$=I$: LET I$="": GO TO 1608
 2420 IF I$="2" AND H$<>"1" THEN GO SUB 0030: LET FLG=0: LET M2FLG=2: LET H$=I$: LET I$="": GO TO 1608
 2425 IF I$="3" THEN CLS : LET M2FLG=1: LET FLG=0: GO SUB 720: LET H$=I$: LET I$="": GO TO 855
 2430 IF I$="4" THEN CLS : PRINT INK 7;AT 9,8;"Press any key": PAUSE 0: PRINT INK 7;AT 9,4;"Press ""PLAY"" on recorder": LET I$=""
 2435 LOAD "BLAM"
 2445 STOP 
 2450 CLS : PRINT INK 7;AT 11,4;"PRESS ""PLAY"" ON RECORDER"
 2455 PAUSE 100: CLS : LOAD "BLAM"
 
    1 LET SFLG=1: GO TO 911
    2 LET W=VAL E$(S,T): RETURN 
    3 LET W=VAL F$(S,T): RETURN 
    4 LET W=VAL G$(S,T): RETURN 
    5 LET W=VAL H$(S,T): RETURN 
   20 FOR X=17 TO Q: FOR Y=0 TO 31: PRINT AT X,Y;"  ": NEXT Y: NEXT X: RETURN 
   30 FOR X=8 TO Q: FOR Y=0 TO 30: PRINT AT X,Y;" ": NEXT Y: NEXT X: RETURN 
   35 FOR W=5 TO 21: FOR R=0 TO 31: PRINT AT W,R;"  ": NEXT R: NEXT W: RETURN 
   42 RANDOMIZE 0: LET P=3
   44 FOR X=1 TO 37
   46 LET C=INT (RND*7)+1: IF C=1 THEN GO TO 0046
   48 SOUND 6,30;7,7;8,16;9,16;10,16;12,16;13,0: PAUSE P: IF FLG=1 THEN PLOT 131,84: READ A,B: DRAW INK C;A,B
   50 IF FLG=1 THEN GO TO 0054
   52 PLOT 148,83: READ A,B: DRAW INK C;A,B
   54 LET P=INT (RND*3)+1: NEXT X
   56 RESTORE 66: PAUSE 20: FOR X=1 TO 37: IF FLG=1 THEN PLOT 131,84: READ A,B: DRAW INVERSE 1;A,B: NEXT X
   58 IF FLG=1 THEN GO TO 0062
   60 PLOT 148,83: READ A,B: DRAW INVERSE 1;A,B: NEXT X
   62 IF FLG=1 THEN LET X=11: LET F=16: LET FLG=20: GO TO 0100
   64 LET X=11: LET F=18: LET FLG=20: GO TO 0100
   66 DATA -13,19,26,4,-22,-15,13,19,-34,15,9,-20,20,-3,-16,-25
   68 DATA -7,31,0,-42,30,16,-17,0,29,25,-29,25,26,-17,7,31
   70 DATA -29,-5,43,-13,0,27,17,-24,-21,-8,11,25,33,-28,-7,16
   72 DATA 16,0,-13,-16,35,-15,-28,18,-31,-15,14,16,-23,4,24,16,8,-39
   74 DATA -35,-29,19,8,-14,-31,-8,-39
   80 GO TO 220
  100 PRINT INK 7;AT X,F-1;"d";AT X,F+1;"b";AT X-1,F;"a";AT X+1,F;"c"
  110 PRINT INK 7;AT X,F-2;"d";"::::::";"b"
  120 PRINT INK 7;AT X+1,F-1;"::::::";AT X+2,F;"c"
  130 PRINT INK 7;AT X-1,F-1;"::::::";AT X-2,F;"a"
  135 PAUSE 5
  140 PRINT INK 2;AT X,F;"::";AT X,F-1;"::";AT X-1,F;"::";AT X,F+1;"::";AT X+1,F;"::"
  150 PRINT INK 2;AT X+1,F-1;"::";AT X-1,F-1;"::";AT X-1,F+1;"::";AT X+1,F+1;"::"
  160 PRINT INK 2;AT X,F-2;"d";AT X-2,F;"a";AT X,F+2;"b";AT X+2,F;"c"
  161 PAUSE 5: IF FLG=17 THEN PAPER 2: BORDER 2: CLS : GO TO 165
  163 PRINT AT X-2,F;"  ";AT X-1,F-1;"      ";AT X,F-2;"          ";AT X+1,F-1;"      ";AT X+2,F;"  "
  165 SOUND 6,6;7,7;8,16;9,16;12,56;13,8: PAUSE 90: SOUND 8,0;9,0;10,0
  166 IF FLG=17 THEN RETURN 
  167 IF FLG=16 THEN RETURN 
  168 IF FLG=20 THEN RETURN 
  170 IF X>=15 THEN LET B=CODE B$(H+3): LET N=F-2: PAPER 0: GO SUB B*10: PAPER 1
  171 IF X>=16 THEN LET Z$=CHR$ B: LET LN=LEN W$: IF LN=0 THEN LET W$=W$+Z$: GO TO 176
  172 IF X<16 THEN GO TO 176
  173 FOR K=1 TO LN: IF Z$<>W$(K) THEN NEXT K: GO TO 175
  174 GO TO 176
  175 IF X>=16 THEN LET W$=W$+Z$
  176 IF X=7 OR X=8 THEN PRINT PAPER 0;AT 6,F-1;"......"
  177 IF FLG=9 OR FLG=10 OR FLG=11 OR FLG=12 OR FLG=13 OR FLG=14 THEN RETURN 
  178 IF X=16 THEN LET SC=-5
  180 PRINT PAPER 5; INK 0;;AT 3,5;SC;" ";AT 3,14;SH;" ": LET TS=TS+SC: PRINT PAPER 5; INK 0;AT 3,24;TS;"  "
  190 LET SC=10: LET SH=SH-1
  192 IF FLG=6 AND SH=-1 THEN LET FLG=0: GO TO 200
  194 IF PFLG=4 AND SH=-1 THEN GO TO 200
  195 IF SH=-1 THEN GO SUB 2025: LET LN=LEN W$: IF LN=2 OR LN=3 THEN LET T$=B$: GO SUB 2620
  200 IF SH=-1 THEN PRINT INK 5;AT 10,8;"THE GAME IS OVER": PAUSE 300: PRINT INK 5;AT 14,2;"TO REPLAY, PRESS ANY LETTER": PAUSE 0: BEEP .1,40: LET FLG=5: RESTORE 1345: GO TO 1290
  210 RETURN 
  220 RANDOMIZE : LET I$="": LET H=0: LET Q$="": LET L$=""
  225 LET G=INT (RND*6)+1: LET Q$=STR$ G
  230 PRINT PAPER 7;AT 3,20;" ": PAUSE 10: LET U1=24: PRINT PAPER 7; INK 0;AT 3,20;B$(G+3): LET I$=""
  235 IF Q$="1" THEN LET S$="3": IF FLG=1 THEN GO TO 0360
  240 IF Q$="2" THEN LET S$="8": IF FLG=1 THEN GO TO 0360
  245 IF Q$="3" THEN LET S$="13": IF FLG=1 THEN GO TO 0360
  250 IF Q$="4" THEN LET S$="18": IF FLG=1 THEN GO TO 0360
  255 IF Q$="5" THEN LET S$="23": IF FLG=1 THEN GO TO 0360
  260 IF Q$="6" THEN LET S$="28": IF FLG=1 THEN GO TO 0360
  265 LET H=G: LET F=VAL S$
  270 PRINT AT 7,F;"m": LET SC=SC-1
  275 FOR X=8 TO 16: PRINT AT X-1,F;" ";AT X,F;"m"
  280 IF FLG=10 THEN BEEP .1,U1: IF X=8 OR X=12 THEN LET U1=U1-1: GO TO 0445
  285 IF FLG=10 AND X=15 THEN GO TO 0445
  290 IF FLG=10 THEN LET U1=U1-2: GO TO 307
  295 IF FLG=14 THEN GO TO 0305
  300 LET I$=INKEY$
  305 IF FLG=14 AND X=11 THEN LET I$="D": GO TO 0395
  307 IF FLG=10 AND X<>16 THEN GO TO 445
  308 IF FLG=10 THEN GO TO 100
  309 IF PEEK M=42 THEN BEEP S1,S2: GO TO 1310
  310 IF I$="" AND X<>16 THEN GO TO 0435
  315 IF X>=16 THEN GO SUB 0100
  325 IF FLG=10 THEN RETURN 
  335 IF X>=16 THEN GO TO 0225
  340 IF I$=B$(G+3) THEN GO TO 0395
  345 FOR Y=4 TO 9: IF I$=B$(Y) THEN LET G=Y-3: LET FLG=1: GO TO 0235
  350 NEXT Y
  355 BEEP .5,-35: BEEP .5,-40: GO TO 0435
  360 SOUND 6,15;7,7;8,16;9,16;10,16;12,16;13,0
  370 LET FLG=0
  375 PRINT AT 16,E;" :"
  380 FOR Y=15 TO 7 STEP -1: PRINT AT Y+1,E;"  ";AT Y,E;" :": NEXT Y: PRINT AT Y+1,E;"  "
  385 LET G=H: GO TO 0435
  395 SOUND 6,15;7,7;8,16;9,16;12,16;13,0
  400 PRINT AT 16,F;" :": IF X=15 THEN PRINT AT 16,F;"  ": GO SUB 0100: GO TO 0225
  405 FOR Y=15 TO 7 STEP -1: PRINT AT Y+1,F;"  ";AT Y,F;" :"
  415 IF Y=X THEN GO SUB 0100: LET I$=""
  420 IF Y=X AND FLG=14 THEN RETURN 
  425 IF I$="" THEN GO TO 0225
  430 NEXT Y
  435 LET I$="": LET SC=SC-1
  445 FOR z=1 TO v: NEXT z
  450 NEXT X
  455 GO TO 0225
  480 PRINT AT AB,N;":'''''':"
  482 PRINT AT BC,N;": ef :"
  484 PRINT AT CD,N;": hi :"
  486 PRINT AT DE,N;": jk :"
  488 PRINT AT EF,N;":......:"
  489 RETURN 
  490 PRINT AT AB,N;":'''''':"
  492 PRINT AT BC,N;": .:   :"
  494 PRINT AT CD,N;":  :   :"
  496 PRINT AT DE,N;": .:.  :"
  498 PRINT AT EF,N;":......:"
  499 RETURN 
  500 PRINT AT AB,N;":'''''':"
  502 PRINT AT BC,N;": .''. :"
  504 PRINT AT CD,N;":  .'  :"
  506 PRINT AT DE,N;": :... :"
  508 PRINT AT EF,N;":......:"
  509 RETURN 
  510 PRINT AT AB,N;":'''''':"
  512 PRINT AT BC,N;": .''. :"
  514 PRINT AT CD,N;":   '. :"
  516 PRINT AT DE,N;": '..' :"
  518 PRINT AT EF,N;":......:"
  519 RETURN 
  520 PRINT AT AB,N;":'''''':"
  522 PRINT AT BC,N;": : :  :"
  524 PRINT AT CD,N;": :.:. :"
  526 PRINT AT DE,N;":   :  :"
  528 PRINT AT EF,N;":......:"
  529 RETURN 
  530 PRINT AT AB,N;":'''''':"
  532 PRINT AT BC,N;": :''' :"
  534 PRINT AT CD,N;": '''. :"
  536 PRINT AT DE,N;": '..' :"
  538 PRINT AT EF,N;":......:"
  539 RETURN 
  540 PRINT AT AB,N;":'''''':"
  542 PRINT AT BC,N;": .''. :"
  544 PRINT AT CD,N;": :..  :"
  546 PRINT AT DE,N;": '..' :"
  548 PRINT AT EF,N;":......:"
  549 RETURN 
  550 PRINT AT AB,N;":'''''':"
  552 PRINT AT BC,N;": ''': :"
  554 PRINT AT CD,N;":  .'  :"
  556 PRINT AT DE,N;": :    :"
  558 PRINT AT EF,N;":......:"
  559 RETURN 
  560 PRINT AT AB,N;":'''''':"
  562 PRINT AT BC,N;": .''. :"
  564 PRINT AT CD,N;": .''. :"
  566 PRINT AT DE,N;": '..' :"
  568 PRINT AT EF,N;":......:"
  569 RETURN 
  570 PRINT AT AB,N;":'''''':"
  572 PRINT AT BC,N;": .''. :"
  574 PRINT AT CD,N;": ''': :"
  576 PRINT AT DE,N;": '..' :"
  578 PRINT AT EF,N;":......:"
  579 RETURN 
  650 PRINT AT AB,N;":'''''':"
  652 PRINT AT BC,N;": .''. :"
  654 PRINT AT CD,N;": :..: :"
  656 PRINT AT DE,N;": :  : :"
  658 PRINT AT EF,N;":......:"
  659 RETURN 
  660 PRINT AT AB,N;":'''''':"
  662 PRINT AT BC,N;": :''. :"
  664 PRINT AT CD,N;":  ..': "
  666 PRINT AT DE,N;": :..' :"
  668 PRINT AT EF,N;":......:"
  669 RETURN 
  670 PRINT AT AB,N;":'''''':"
  672 PRINT AT BC,N;": .''. :"
  674 PRINT AT CD,N;": :    :"
  676 PRINT AT DE,N;": '..' :"
  678 PRINT AT EF,N;":......:"
  679 RETURN 
  680 PRINT AT AB,N;":'''''':"
  682 PRINT AT BC,N;": :''. :"
  684 PRINT AT CD,N;": :  : :"
  686 PRINT AT DE,N;": :..' :"
  688 PRINT AT EF,N;":......:"
  689 RETURN 
  690 PRINT AT AB,N;":'''''':"
  692 PRINT AT BC,N;": :''' :"
  694 PRINT AT CD,N;": :'   :"
  696 PRINT AT DE,N;": :... :"
  698 PRINT AT EF,N;":......:"
  699 RETURN 
  700 PRINT AT AB,N;":'''''':"
  702 PRINT AT BC,N;": :''' :"
  704 PRINT AT CD,N;": :'   :"
  706 PRINT AT DE,N;": :    :"
  708 PRINT AT EF,N;":......:"
  709 RETURN 
  710 PRINT AT AB,N;":'''''':"
  712 PRINT AT BC,N;": .''. :"
  714 PRINT AT CD,N;": : .. :"
  716 PRINT AT DE,N;": '..' :"
  718 PRINT AT EF,N;":......:"
  719 RETURN 
  720 PRINT AT AB,N;":'''''':"
  722 PRINT AT BC,N;": :  : :"
  724 PRINT AT CD,N;": :..: :"
  726 PRINT AT DE,N;": :  : :"
  728 PRINT AT EF,N;":......:"
  729 RETURN 
  730 PRINT AT AB,N;":'''''"; PAPER 1;": "
  732 PRINT AT BC,N;": ':' "; PAPER 1;": "
  734 PRINT AT CD,N;":  :  "; PAPER 1;": "
  736 PRINT AT DE,N;": .:. "; PAPER 1;": "
  738 PRINT AT EF,N;":....."; PAPER 1;": "
  739 RETURN 
  740 PRINT AT AB,N;":'''''':"
  742 PRINT AT BC,N;":    : :"
  744 PRINT AT CD,N;":    : :"
  746 PRINT AT DE,N;": '..' :"
  748 PRINT AT EF,N;":......:"
  749 RETURN 
  750 PRINT AT AB,N;":'''''':"
  752 PRINT AT BC,N;": : .' :"
  754 PRINT AT CD,N;": :'.  :"
  756 PRINT AT DE,N;": :  : :"
  758 PRINT AT EF,N;":......:"
  759 RETURN 
  760 PRINT AT AB,N;":'''''':"
  762 PRINT AT BC,N;": :    :"
  764 PRINT AT CD,N;": :    :"
  766 PRINT AT DE,N;": :..: :"
  768 PRINT AT EF,N;":......:"
  769 RETURN 
  770 PRINT AT AB,N;":'''''''"; PAPER 1;": "
  772 PRINT AT BC,N;": :. .: "; PAPER 1;": "
  774 PRINT AT CD,N;": : : : "; PAPER 1;": "
  776 PRINT AT DE,N;": :   : "; PAPER 1;": "
  778 PRINT AT EF,N;":......."; PAPER 1;": "
  779 RETURN 
  780 PRINT AT AB,N;":'''''''"; PAPER 1;": "
  782 PRINT AT BC,N;": :.  : "; PAPER 1;": "
  784 PRINT AT CD,N;": : : : "; PAPER 1;": "
  786 PRINT AT DE,N;": :  ': "; PAPER 1;": "
  788 PRINT AT EF,N;":......."; PAPER 1;": "
  789 RETURN 
  790 PRINT AT AB,N;":'''''':"
  792 PRINT AT BC,N;": .''. :"
  794 PRINT AT CD,N;": :  : :"
  796 PRINT AT DE,N;": '..' :"
  798 PRINT AT EF,N;":......:"
  799 RETURN 
  800 PRINT AT AB,N;":'''''':"
  802 PRINT AT BC,N;": :''. :"
  804 PRINT AT CD,N;": :..' :"
  806 PRINT AT DE,N;": :    :"
  808 PRINT AT EF,N;":......:"
  809 RETURN 
  810 PRINT AT AB,N;":'''''':"
  812 PRINT AT BC,N;": .''. :"
  814 PRINT AT CD,N;": :  : :"
  816 PRINT AT DE,N;": '.::.:"
  818 PRINT AT EF,N;":......:"
  819 RETURN 
  820 PRINT AT AB,N;":'''''':"
  822 PRINT AT BC,N;": :''. :"
  824 PRINT AT CD,N;": :..: :"
  826 PRINT AT DE,N;": : '. :"
  828 PRINT AT EF,N;":......:"
  829 RETURN 
  830 PRINT AT AB,N;":'''''':"
  832 PRINT AT BC,N;": .''. :"
  834 PRINT AT CD,N;":  '.  :"
  836 PRINT AT DE,N;": '..' :"
  838 PRINT AT EF,N;":......:"
  839 RETURN 
  840 PRINT AT AB,N;":'''''''"; PAPER 1;": "
  842 PRINT AT BC,N;": '':'' "; PAPER 1;": "
  844 PRINT AT CD,N;":   :   "; PAPER 1;": "
  846 PRINT AT DE,N;":   :   "; PAPER 1;": "
  848 PRINT AT EF,N;":......."; PAPER 1;": "
  849 RETURN 
  850 PRINT AT AB,N;":'''''':"
  852 PRINT AT BC,N;": :  : :"
  854 PRINT AT CD,N;": :  : :"
  856 PRINT AT DE,N;": '..' :"
  858 PRINT AT EF,N;":......:"
  859 RETURN 
  860 PRINT AT AB,N;":'''''''"; PAPER 1;": "
  862 PRINT AT BC,N;": :   : "; PAPER 1;": "
  864 PRINT AT CD,N;":  : :  "; PAPER 1;": "
  866 PRINT AT DE,N;":   :   "; PAPER 1;": "
  868 PRINT AT EF,N;":......."; PAPER 1;": "
  869 RETURN 
  870 PRINT AT AB,N;":'''''''"; PAPER 1;": "
  872 PRINT AT BC,N;": :   : "; PAPER 1;": "
  874 PRINT AT CD,N;": : : : "; PAPER 1;": "
  876 PRINT AT DE,N;": '.'.' "; PAPER 1;": "
  878 PRINT AT EF,N;":......."; PAPER 1;": "
  879 RETURN 
  880 PRINT AT AB,N;" .''''''"; PAPER 1;": "
  882 PRINT AT BC,N;": '. .' "; PAPER 1;": "
  884 PRINT AT CD,N;":   :   "; PAPER 1;": "
  886 PRINT AT DE,N;": .' '. "; PAPER 1;": "
  888 PRINT AT EF,N;":......."; PAPER 1;": "
  889 RETURN 
  890 PRINT AT AB,N;":'''''''"; PAPER 1;": "
  892 PRINT AT BC,N;": :   : "; PAPER 1;": "
  894 PRINT AT CD,N;":  ':'  "; PAPER 1;": "
  896 PRINT AT DE,N;":   :   "; PAPER 1;": "
  898 PRINT AT EF,N;":......."; PAPER 1;": "
  899 RETURN 
  900 PRINT AT AB,N;":'''''':"
  902 PRINT AT BC,N;": ''': :"
  904 PRINT AT CD,N;":  .'  :"
  906 PRINT AT DE,N;": :... :"
  908 PRINT AT EF,N;":......:"
  909 RETURN 
  910 LET AFLG=0: LET SFLG=0
  911 ON ERR GO TO 2750
  912 GO TO 916
  914 ON ERR RESET 
  916 LET I$="": LET X=0: LET Y=0: LET H=0: LET G=0: LET E=0: LET F=0: LET U1=0: LET Z=0: LET V=0
  917 LET S1=.1: LET S2=40: LET D$="": LET Q=0: LET D=0: LET C=0: LET FLG=0: LET A=0: LET B=0: LET N=0: LET SC=0: LET SH=0: LET TS=0
  918 LET M=23560: IF SFLG=1 THEN GO TO 922
  920 GO TO 938
  922 CLS : PRINT AT 9,8;"PLEASE STAND BY"
  923 RESTORE 1345: DIM A$(24,9): FOR X=1 TO 24: READ M$: LET A$(X)=M$: NEXT X
  925 PRINT AT 9,8;"PLEASE STAND BY": LET IND=0: DIM P$(4,9)
  928 DIM E$(27,4,3): DIM F$(27,4,3): DIM G$(27,4,3): DIM H$(27,4,3)
  929 FOR X=1 TO 27: FOR Y=1 TO 4: LET E$(X,Y)="0": NEXT Y: NEXT X: IF AFLG=1 THEN RETURN 
  930 FOR X=1 TO 27: FOR Y=1 TO 4: LET F$(X,Y)="0": NEXT Y: NEXT X: IF AFLG=1 THEN RETURN 
  931 FOR X=1 TO 27: FOR Y=1 TO 4: LET G$(X,Y)="0": NEXT Y: NEXT X: IF AFLG=1 THEN RETURN 
  932 FOR X=1 TO 27: FOR Y=1 TO 4: LET H$(X,Y)="0": NEXT Y: NEXT X: IF AFLG=1 THEN RETURN 
  933 PRINT AT 9,8;"               "
  935 PRINT AT 10,0;"FORMER SCORE-RECORDS ARE ERASED": PAUSE 200: IF SFLG=2 THEN LET SFLG=0: GO TO 1285
  936 PRINT AT 13,8;"PLEASE STAND BY": LET SFLG=0: GO TO 990
  938 CLS : PRINT AT 9,9;"STOP RECORDER"''"(To continue, press any letter)": PAUSE 0: BEEP S1,S2: CLS : PRINT AT 9,8;"PLEASE STAND BY": GO TO 990
  940 LET B$="36-": LET C$="1ST2ND3RD4TH5TH6TH"
  943 CLS : FOR X=1 TO 18 STEP 3: PRINT INK 7;AT 10,0;"ENTER YOUR ";C$(X TO X+2);" LETTER?"
  945 LET L$=INKEY$: IF PEEK M=42 THEN BEEP .1,40: GO TO 1310
  947 IF L$="" THEN GO TO 945
  950 BEEP S1,S2: LET B$=B$+L$: PRINT INK 7;AT 10,23;B$(4 TO ): NEXT X
  952 PRINT INK 7;AT 13,0;"Any errors? (Y or N)?"
  954 IF PEEK M=42 THEN BEEP S1,S2: GO TO 1310
  956 LET L$=INKEY$: IF L$<>"N" AND L$<>"Y" THEN GO TO 954
  958 BEEP S1,S2: IF L$="Y" THEN PRINT AT 10,23;"      ": GO TO 940
  959 RETURN 
  960 LET N=0: LET B$="37-": LET C$="0123456789QWERTYUIOPASDFGHJKLZXCVBNM": RANDOMIZE 0
  965 LET L=INT (RND*36)+1: LET B$=B$+C$(L): LET Q$=C$(L): LET N=N+1
  970 LET L=INT (RND*36)+1: FOR X=1 TO N: IF C$(L)=Q$(X) THEN GO TO 970
  975 NEXT X: LET B$=B$+C$(L): LET Q$=Q$+C$(L): LET N=N+1: IF N=6 THEN RETURN 
  978 GO TO 970
  990 RESTORE 1000
  995 FOR J=USR CHR$ 148 TO USR CHR$ 148+7: READ O$: POKE J,VAL O$: NEXT J
 1000 DATA "15","15","15","15","240","240","240","240"
 1005 FOR J=USR CHR$ 149 TO USR CHR$ 149+7: READ O$: POKE J,VAL O$: NEXT J
 1010 DATA "242","244","244","248","31","31","47","47"
 1015 FOR J=USR CHR$ 150 TO USR CHR$ 150+7: READ O$: POKE J,VAL O$: NEXT J
 1020 DATA "255","0","0","0","0","0","0","0"
 1025 FOR J=USR CHR$ 151 TO USR CHR$ 151+7: READ O$: POKE J,VAL O$: NEXT J
 1030 DATA "240","240","240","240","241","241","243","242"
 1035 FOR J=USR CHR$ 152 TO USR CHR$ 152+7: READ O$: POKE J,VAL O$: NEXT J
 1040 DATA "79","79","79","143","143","15","15","15"
 1050 FOR J=USR CHR$ 162 TO USR CHR$ 162+7: READ O$: POKE J,VAL O$: NEXT J
 1055 DATA "255","255","127","63","63","127","255","255"
 1060 FOR J=USR CHR$ 161 TO USR CHR$ 161+7: READ O$: POKE J,VAL O$: NEXT J
 1065 DATA "255","255","254","252","252","254","255","255"
 1070 FOR J=USR CHR$ 163 TO USR CHR$ 163+7: READ O$: POKE J,VAL O$: NEXT J
 1075 DATA "0","0","0","0","195","231","255","255"
 1080 FOR J=USR CHR$ 164 TO USR CHR$ 164+7: READ O$: POKE J,VAL O$: NEXT J
 1085 DATA "255","255","231","195","0","0","0","0"
 1090 FOR J=USR CHR$ 159 TO USR CHR$ 159+7: READ O$: POKE J,VAL O$: NEXT J
 1095 DATA "60","126","255","255","255","255","126","60"
 1105 FOR J=USR CHR$ 144 TO USR CHR$ 144+7: READ O$: POKE J,VAL O$: NEXT J
 1115 DATA "0","24","60","60","126","126","255","255"
 1120 FOR J=USR CHR$ 145 TO USR CHR$ 145+7: READ O$: POKE J,VAL O$: NEXT J
 1125 DATA "192","240","252","254","254","252","240","192"
 1130 FOR J=USR CHR$ 146 TO USR CHR$ 146+7: READ O$: POKE J,VAL O$: NEXT J
 1135 DATA "255","255","126","126","60","60","24","0"
 1140 FOR J=USR CHR$ 147 TO USR CHR$ 147+7: READ O$: POKE J,VAL O$: NEXT J
 1145 DATA "3","15","63","127","127","63","15","3"
 1150 FOR J=USR CHR$ 153 TO USR CHR$ 153+7: READ O$: POKE J,VAL O$: NEXT J
 1155 DATA "246","244","248","248","31","31","47","79"
 1160 FOR J=USR CHR$ 154 TO USR CHR$ 154+7: READ O$: POKE J,VAL O$: NEXT J
 1165 DATA "15","15","15","15","240","240","240","240"
 1170 FOR J=USR CHR$ 155 TO USR CHR$ 155+7: READ O$: POKE J,VAL O$: NEXT J
 1175 DATA "128","64","32","240","32","64","128","0"
 1180 FOR J=USR CHR$ 156 TO USR CHR$ 156+7: READ O$: POKE J,VAL O$: NEXT J
 1185 DATA "102","60","126","126","126","126","60","24"
 1190 FOR J=USR CHR$ 157 TO USR CHR$ 157+7: READ O$: POKE J,VAL O$: NEXT J
 1195 DATA "0","0","0","255","0","0","0","0"
 1200 FOR J=USR CHR$ 158 TO USR CHR$ 158+7: READ O$: POKE J,VAL O$: NEXT J
 1202 DATA "16","16","16","16","16","16","16","16"
 1204 CLS : IF P$(4)="         " THEN GO TO 1215
 1206 PRINT AT 1,1;"We have on file Score-Records   for the following players of    past games:"
 1207 LET NM=1: FOR X=5 TO 6: PRINT AT X,6;P$(NM): LET NM=NM+1: PRINT AT X,18;P$(NM): LET NM=NM+1: NEXT X
 1208 PRINT AT 8,0;"We can store Score-Records for  only four players. Thus, there  is no room for ";N$;"'s scores  unless adjustments are made."
 1209 PRINT AT 13,13;"CHOICES";AT 14,0;"* Erase the Score-Records of all  players. Four new players may   then be accomodated.(For this   choice, press ""E"")."
 1210 PRINT AT 18,0;"* Save from 1 to 3 of the above-  named players' Score-Records,   leaving room for ";N$;"."'"  (For this choice, Press ""S"")"
 1211 IF INKEY$<>"E" AND INKEY$<>"S" THEN GO TO 1211
 1212 IF INKEY$="E" THEN BEEP S1,S2: LET SFLG=2: CLS : GO TO 925
 1213 IF INKEY$="S" THEN BEEP S1,S2: GO TO 2460
 1215 LET PFLG=0: LET D=0: LET W$="": POKE 23609,100: LET FLG=0: BORDER 1: PAPER 1: INK 6: CLS 
 1220 PRINT PAPER 2; INK 4;AT 6,0;"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'."
 1225 PRINT INK 6;AT 9,7;"WELCOME TO ""BLAM"""
 1230 PRINT PAPER 2; INK 4;AT 12,0;"'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'."
 1232 PAUSE 100: PRINT AT 17,2;"* Richard S. Haseltine 1984";AT 18,7;"Riverside Software";AT 19,10;"R1 Box B-20";AT 20,5;"Orrington, Maine 04474"
 1233 PAUSE 200: LET Q=20: GO SUB 20
 1235 PRINT INK 6;AT 16,7;"(Learning to type";AT 17,12;"is fun)": PAUSE 400
 1237 FOR X=7 TO 23: PRINT AT 16,X;"  ";AT 17,X;"  ": NEXT X
 1240 PRINT AT 14,12;"NOTICE";AT 15,12;"gggggg";AT 16,0;"If at any time you wish to"'"return to a MENU, press ""SYMBOL""and ""*"" together."''"(To continue, press any letter.)"
 1242 PAUSE 0: BEEP S1,S2: FOR X=14 TO 21: PRINT AT X,0;"                                ": NEXT X
 1245 REM  MENU 
 1250 LET FLG=0: PRINT INK 7;AT 16,4;"Do you want instructions?"
 1255 PRINT INK 7;AT 18,5;"* Press ""Y"" if ""Yes""";'TAB 5;"* Press ""N"" if ""No"""
 1260 LET I$=INKEY$: IF I$<>"Y" AND I$<>"N" THEN GO TO 1260
 1265 BEEP S1,S2: IF I$="Y" THEN FOR X=16 TO 19: PRINT AT X,4;"                              ": NEXT X: PRINT AT 9,6;"                    "
 1270 IF I$="Y" THEN PRINT AT 9,9;"INSTRUCTIONS": PAUSE 200: LET FLG=10: LET D=1: LET I$="": GO TO 1475
 1272 CLS : LET I$="": PRINT AT 9,0;"Do you wish to enter into the   program previous scores you havesaved?(Y/N?)"
 1273 LET I$=INKEY$: IF I$<>"Y" AND I$<>"N" THEN GO TO 1273
 1274 IF I$="N" THEN BEEP S1,S2: GO TO 1285
 1276 BEEP S1,S2: CLS : PRINT AT 9,0;"Prepare your score-tape for     loading. When ready, press ""L""  and then press ""PLAY"" on re-"'"corder."
 1278 PAUSE 0: CLS : LOAD "BLAM" DATA P$()
 1280 LOAD "BLAM" DATA E$()
 1281 LOAD "BLAM" DATA F$()
 1282 LOAD "BLAM" DATA G$()
 1283 LOAD "BLAM" DATA H$()
 1285 CLS : IF FLG<>5 THEN PRINT INK 7;AT 10,1;"Please type your first name and then press ENTER.": INPUT N$: GO SUB 2005
 1290 LET LN=0: LET W$="": IF FLG=5 THEN CLS : PRINT INK 7;AT 10,0;"Is your name ";N$;"? (Y or N)"
 1297 IF FLG=5 THEN LET I$=INKEY$: IF I$<>"Y" AND I$<>"N" THEN GO TO 1297
 1298 IF FLG=5 THEN BEEP S1,S2
 1299 IF FLG=5 AND I$="Y" THEN LET I$="": GO TO 1303
 1300 IF FLG=5 THEN LET Q=10: GO SUB 30: PRINT INK 7;AT 10,0;"Please type your first name and then Press ENTER,": INPUT N$: GO SUB 2005: LET FLG=0: LET I$=""
 1303 IF PFLG=4 THEN LET B$=T$: LET PFLG=0
 1305 IF FLG=5 AND (D$="26" OR D$="27") THEN GO SUB 2570
 1315 LET PFLG=0: CLS : PRINT INK 5;AT 2,13;"MENU";AT 3,13;"''''''''"
 1320 LET R=5: LET C=1
 1325 FOR X=1 TO 24: PRINT INK 5;AT R,C;A$(X): LET R=R+1
 1330 IF R=19 AND C=1 THEN LET C=17: LET R=5
 1335 NEXT X
 1340 PRINT INK 5;AT 15,17;"25-INSTRUCTIONS";AT 16,17;"26-(CHOOSE 6)";AT 17,17;"27-(RANDOM)";AT 18,17;"28-STOP";AT 19,7;"29-HIGHEST SCORES"
 1345 DATA " 1-FLJSKD"," 2-HKJDGF"," 3-JALKSD"," 4-UIJRFT"
 1350 DATA " 5-RODIEK"," 6-ELWPAO"," 7-KEOSLD"," 8-HUTGYJ"
 1355 DATA " 9-FMJVNG","10-KDLCFM","11-NLDXMC","12-OKZLSA"
 1360 DATA "13-IBELCY","14-PQWZDU","15-IVEQPX","16-TBELNO"
 1365 DATA "17-YHGNCE","18-LQESTY","19-283746","20-829013"
 1370 DATA "21-857643","22-402918","23-JP74D2","24-V3D5MP"
 1380 IF FLG=9 THEN PAUSE 300: RETURN 
 1385 PRINT INK 7;AT 21,0;"(Press Set No.-then press ENTER)"
 1390 INPUT D$: IF D$="=@_" THEN LET BFLG=0: GO TO 914
 1391 IF BFLG=1 THEN LET BFLG=0: CLS : GO TO 910
 1392 IF CODE D$<49 OR CODE D$>57 THEN GO TO 1398
 1394 LET D=VAL D$
 1395 IF D<1 OR D>29 THEN GO TO 1398
 1396 GO TO 1402
 1398 CLS : PRINT AT 9,0;"Please ENTER a number from ""1""  to ""29"" when Menu reappears."''"(To continue, press any letter)": PAUSE 0: BEEP S1,S2: GO TO 1310
 1402 CLS : IF D$="25" THEN LET I$="Y": GO TO 1270
 1405 IF D$="26" THEN GO SUB 940
 1410 IF D$="27" THEN GO SUB 960
 1415 IF D$="29" THEN GO TO 2385
 1417 IF D$<>"28" THEN GO TO 1450
 1420 IF D$="28" THEN CLS : PRINT INK 7;AT 9,0;"Do you wish to save the players'highest scores?(Y/N)"
 1425 IF INKEY$<>"Y" AND INKEY$<>"N" THEN GO TO 1425
 1430 IF INKEY$="Y" THEN BEEP S1,S2: LET SFLG=2: GO SUB 2460
 1435 BEEP S1,S2: CLS : PRINT AT 9,14;"END";AT 10,14;"''''''"
 1440 PAUSE 120: PRINT AT 13,1;"(Thank you for playing ""Blam"")": PAUSE 500: NEW 
 1450 LET SC=10: LET SH=20: LET TS=0
 1475 BORDER 1: PAPER 1: INK 6: CLS 
 1480 FOR X=0 TO 5: FOR Y=0 TO 31 STEP 2: PRINT PAPER 0;AT X,Y;"  ": NEXT Y: NEXT X
 1485 PRINT PAPER 0;AT 1,4;"SCORE";AT 1,13;"DROPS";AT 1,23;"TOTAL"
 1490 PAUSE 20
 1495 PRINT PAPER 5; INK 0;AT 2,4;":'''''''':";AT 2,13;":'''''''':";AT 2,23;"''''''''''": PRINT PAPER 7; INK 0;AT 2,19;"''''''"
 1500 PRINT PAPER 5; INK 0;AT 3,4;":     :";AT 3,13;": 20  :";AT 3,23;"     ": PRINT PAPER 7; INK 0;AT 3,19;"   "
 1505 PRINT PAPER 5; INK 0;AT 4,4;":........:";AT 4,13;":........:";AT 4,23;"..........": PRINT PAPER 7; INK 0;AT 4,19;"......": PAUSE 20
 1510 PRINT AT 6,0;: FOR X=0 TO 31: PRINT PAPER 0;"..";: NEXT X
 1515 PAUSE 20
 1520 PRINT AT 7,30;"10": LET R=8: FOR X=9 TO 2 STEP -1: PRINT AT R,31;X: LET R=R+1: NEXT X
 1525 PRINT PAPER 0; INK 7;AT 5,19;"KEY"
 1530 PRINT PAPER 0; INK 7;AT 3,19;"s";AT 3,21;"r";AT 2,20;"t";AT 4,20;"u"
 1540 LET N=1
 1542 IF PFLG=4 THEN GO TO 1560
 1545 IF D=26 OR D=27 THEN GO TO 1560
 1550 LET B$=A$(D)
 1560 LET AB=17: LET BC=18: LET CD=19: LET DE=20: LET EF=21: FOR X=4 TO 9: LET B=CODE B$(X): PAPER 0: GO SUB B*10: LET N=N+5: PAUSE 20: NEXT X: PAPER 1
 1565 IF FLG=10 THEN GO TO 1665
 1575 PAUSE 90: PRINT INK 7;AT 8,7;"BOMB-DROP SPEED";AT 9,7;"''''''''''''''''''''''''''''''"
 1580 PRINT INK 7;AT 10,10;"1) VERY SLOW";AT 11,10;"2) SLOW";AT 12,10;"3) MEDIUM";AT 13,10;"4) FAST";AT 14,10
 1585 PAUSE 90: PRINT INK 7;AT 15,2;"(SELECT DESIRED SPEED-RATE)": LET U$=INKEY$
 1586 IF PEEK M=42 THEN BEEP S1,S2: GO TO 1310
 1587 IF U$<"1" OR U$>"4" THEN GO TO 1585
 1588 LET U=VAL U$: IF U<1 OR U>4 THEN GO TO 1585
 1589 BEEP S1,S2
 1590 IF U$="1" THEN LET V=24
 1595 IF U$="2" THEN LET V=16
 1600 IF U$="3" THEN LET V=8
 1605 IF U$="4" THEN LET V=2
 1610 LET Q=16: GO SUB 30
 1625 PAUSE 90: PRINT INK 7;AT 9,8;"PLACE FINGERS "
 1630 PRINT INK 7;AT 10,6;"ON HOME-ROW KEYS."
 1635 PAUSE 180: PRINT INK 7;AT 12,3;"PRESS ANY KEY WHEN READY.": PAUSE 0: BEEP S1,S2
 1637 IF PEEK M=42 THEN GO TO 1310
 1640 LET Q=16: GO SUB 30
 1655 PAUSE 90: GO TO 220
 1665 PRINT INK 7;AT 8,0;"* Press any letter and"'"  you'll see what happens"'"  when the game starts.": PAUSE 0
 1668 IF PEEK M=42 THEN BEEP S1,S2: CLS : GO TO 1250
 1670 LET Q$="6": LET G=6: LET SC=10: LET V=2: GO SUB 230
 1675 PAUSE 80: LET Q=11: GO SUB 0030
 1680 PRINT INK 7;AT 8,1;"* When you see the bomb"'"   start, try to press the"'"   letter being bombed be-"'"   fore the bomb hits it."'"   (In this case,""D"")"
 1685 PRINT INK 7;AT 14,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1686 IF PEEK M=42 THEN CLS : GO TO 1250
 1688 LET Q=14: GO SUB 0030
 1690 PRINT INK 7;AT 8,1;"* To help you know which"'"   letter to press, the"'"   letter is printed above"'"   in the ""KEY"" window."
 1695 PAUSE 250: PRINT PAPER 7; INK 0; FLASH 1;AT 3,20;"D"
 1700 PAUSE 200: PRINT INK 7;AT 15,0;"(To continue, press any letter)"
 1702 PAUSE 0: BEEP S1,S2
 1703 IF PEEK M=42 THEN CLS : GO TO 1250
 1705 PRINT PAPER 7; INK 0; FLASH 0;AT 3,20;"D": LET Q=15: GO SUB 30
 1710 PRINT INK 7;AT 8,1;"* As you gain skill in"'"   the game, you will do"'"   even better if you just"'"   keep your eyes on the"'"   ""KEY"" window, without"'"   looking at the keyboard."
 1715 PRINT INK 7;AT 15,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1716 IF PEEK M=42 THEN CLS : GO TO 1250
 1718 LET Q=15: GO SUB 30
 1720 PRINT INK 7;AT 8,1;"* Before the game starts"'"   you may choose the"'"   speed of the bomb-drop"''"   FOR EXAMPLE:": PAUSE 200
 1722 LET V=24: LET Q$="6": LET G=6: LET FLG=10
 1725 FOR P=1 TO 4: PRINT FLASH 1;AT 12,16;"SPEED ";P;" nnl": GO SUB 230: PRINT FLASH 0;AT 12,16;"            ": LET V=V-8: PAUSE 50: NEXT P
 1765 LET FLG=14: LET Q=12: GO SUB 30
 1770 PRINT INK 7;AT 8,1;"* You will not know where"'"   the bomb will fall until"'"   it starts."
 1775 PAUSE 300
 1780 PRINT INK 7;AT 13,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1782 IF PEEK 23560=61 THEN CLS : GO TO 1250
 1785 LET Q=13: GO SUB 30
 1790 PRINT INK 7;AT 8,1;"* To stop the bomb, you"'"   must shoot the laser beam"'"   by pressing the proper key.": PAUSE 300: PRINT INK 7;" * The proper key is the key"'"   of the letter under the"'"   bomb. (See Key-window)": PAUSE 300: PRINT INK 7;" * The quicker this is done,"'"   the higher the score."'"(To continue, press any letter)"
 1792 PAUSE 0: BEEP S1,S2
 1793 IF PEEK M=42 THEN CLS : GO TO 1250
 1795 LET Q=16: GO SUB 30: PRINT INK 7;AT 8,1;"* The score for each shot"'"  is determined by how far"'"  the bomb drops before"'"  you hit it. This is"'"  measured by the numbers"'"  to the right:nnnnl"
 1800 PAUSE 300: PRINT FLASH 1;AT 7,30;"10": LET Y= 9: FOR X=8 TO 15: PRINT FLASH 1;AT X,31;Y: LET Y=Y-1: NEXT X
 1805 PAUSE 200: PRINT INK 7;AT 15,0;"(To continue, press any letter)"
 1810 PAUSE 0: BEEP S1,S2
 1812 IF PEEK M=42 THEN CLS : GO TO 1250
 1815 PRINT FLASH 0;AT 7,30;"10": LET Y= 9: FOR X=8 TO 15: PRINT FLASH 0;AT X,31;Y: LET Y=Y-1: NEXT X
 1820 LET Q=15: GO SUB 30: PRINT INK 7;AT 8,1;"* I will drop a bomb over"'"   ""D"". I will then press"'"   the ""D"" key and fire"'"   a laser-beam at the"'"   bomb."
 1822 PAUSE 200: PRINT INK 7;AT 14,0;"(Press any letter)" 
 1823 PAUSE 0: BEEP S1,S2
 1824 IF PEEK M=42 THEN CLS : GO TO 1250
 1825 LET FLG=14: LET V=2: LET G=6: LET Q$="6": GO SUB 230
 1830 LET FLG=0: LET Q=14: GO SUB 30
 1835 PRINT INK 7;AT 8,1;"* When the bomb was hit,"'"   it was opposite number"'"   six."
 1840 PAUSE 100: PRINT AT 11,27;"m";AT 11,29;"nl": PAUSE 500
 1845 PRINT INK 7;AT 11,1;"* Thus, the score for the"'"   hit equals ""6"".": PAUSE 500
 1850 PRINT INK 7;AT 13,1;"* The score for each shot"'"   is shown in the ""SCORE"""'"   window above.": PAUSE 300
 1855 PRINT PAPER 5; INK 0; FLASH 1;AT 3,5;"6": PAUSE 200
 1860 PRINT INK 7;AT 16,0;"(To continue, press any letter)"
 1862 PAUSE 0: BEEP S1,S2
 1863 IF PEEK M=42 THEN CLS : GO TO 1250
 1865 PRINT PAPER 5; INK 0; FLASH 0;AT 3,5;"6": LET Q=16: GO SUB 30
 1870 PRINT INK 7;AT 8,1;"* The ""TOTAL SCORE"" is"'"   shown in the window"'"   at the upper right.": PAUSE 300
 1875 PRINT PAPER 5; INK 0; FLASH 1;AT 3,24;"6": PAUSE 500: PRINT PAPER 5; INK 0; FLASH 0;AT 3,24;"6"
 1880 PRINT INK 7;AT 12,1;"* The middle window shows"'"   the number of bomb-drops"'"   left in each game. There"'"   are 20 drops per game.": PAUSE 300
 1890 PRINT PAPER 5; INK 0; FLASH 1;AT 3,14;"19": PAUSE 300: PRINT PAPER 5; INK 0; FLASH 0;AT 3,14;"19"
 1892 PRINT INK 7;AT 16,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1893 IF PEEK M=42 THEN CLS : GO TO 1250
 1894 LET Q=16: GO SUB 30
 1895 PRINT INK 7;AT 8,1;"* You may select the let-"'"   ter-set for each play"'"   from a ""MENU"" which"'"   appears before each game."''"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1897 IF PEEK M=42 THEN CLS : GO TO 1250
 1898 LET FLG=9: GO SUB 1310
 1900 FOR X=5 TO 19: PRINT AT X,17;"               ": NEXT X: LET FLG=0
 1905 PRINT INK 7;AT 5,12;"* The first 3 sets";AT 6,14;"are the Home Row";AT 7,14;"keys. I suggest";AT 8,14;"you start with";AT 9,14;"the first set and";AT 10,14;"practice until you";AT 11,14;"can score over 70";AT 12,14;"at Speed 4.": PAUSE 500
 1910 PRINT INK 7;AT 14,12;"* Do this with each";AT 15,14;"set before trying";AT 16,14;"the next letter";AT 17,14;"set."
 1915 PRINT INK 7;AT 21,0;"(To continue,press any letter)": PAUSE 0: BEEP S1,S2
 1918 IF PEEK M=42 THEN CLS : GO TO 1250
 1920 CLS : PRINT INK 7;AT 1,1;"THREE REMINDERS"'" ggggggggggggggg"
 1925 PRINT INK 7;AT 4,3;"1) Return each finger to its       proper key on the Home Row      after pressing any letter."
 1930 PRINT INK 7;AT 7,3;"2) Try to get 120 at Speed 1"'," 100 at Speed 2"',"  85 at Speed 3";',"  70 at speed 4"'"      before moving to the next"'"      set"
 1935 PRINT INK 7;AT 13,3;"3) When pressing a key to"'"      stop the bomb, hold the"'"      key down until you hear"'"      a shot"
 1940 PRINT INK 7;AT 18,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1942 IF PEEK M=42 THEN CLS : GO TO 1250
 1945 CLS : PRINT INK 7;AT 3,10;"MY LAST WORD";AT 4,10;"gggggggggggg"
 1950 PRINT INK 7;AT 5,1;"* If you just want to play"'"   for fun, that's okay !"
 1955 PRINT INK 7;AT 8,1;"* But if you want your fingers "'"   to learn the keyboard--the"'"   first step in learning to"'"   type--then daily 15 minute"'"   sessions will bring you along"'"   faster than 2-hour sessions"'"   once in a while."
 1960 PRINT INK 7;AT 17,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 1965 IF PEEK M=42 THEN CLS : GO TO 1250
 1970 LET FLG=16: LET X=9: LET F=8: GO SUB 100: LET X=4: LET F=25: GO SUB 100: LET X=4: LET F=12: GO SUB 100
 1975 LET X=12: LET F=21: GO SUB 100: LET X=4: LET F=3: GO SUB 100
 1980 LET X=8: LET F=16: GO SUB 100: LET X=14: LET F=12: GO SUB 100
 1982 CLS : PRINT PAPER 2; INK 4;AT 6,3;".'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'": PRINT AT 9,6;"LET'S PLAY ""BLAM""!": PRINT PAPER 2; INK 4;AT 12,3;".'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'.'"
 1985 PAUSE 100: LET X=9: LET F=15: LET FLG=17: GO SUB 100: LET FLG=0: PAPER 1: BORDER 1
 1995 CLS : GO TO 1272
 2005 LET LEN=LEN N$
 2010 FOR X=1 TO 4: IF P$(X)="         " THEN LET P$(X)=N$: LET IND=X: RETURN 
 2015 LET C$=P$(X): IF C$(1 TO LEN)=N$ THEN LET IND=X: RETURN 
 2020 NEXT X: IF X=5 THEN CLS : GO TO 1206
 2025 IF D=29 THEN CLS : GO TO 2385
 2030 LET U=VAL U$: GO TO IND*20+2015
 2035 LET FLG=1: LET J=VAL E$(D,U): GO SUB 2165
 2037 IF J>=TS THEN RETURN 
 2039 IF J=0 THEN LET E$(D,U)=STR$ TS: IF FLG=1 THEN RETURN 
 2040 IF J=0 AND FLG=0 THEN GO TO 2042
 2041 LET E$(D,U)=STR$ TS: IF FLG=1 THEN GO TO 2200
 2042 LET FLG=5: GO TO 1290
 2055 LET FLG=1: LET J=VAL F$(D,U): GO SUB 2165
 2057 IF J>=TS THEN RETURN 
 2059 IF J=0 THEN LET F$(D,U)=STR$ TS: IF FLG=1 THEN RETURN 
 2060 IF J=0 AND FLG=0 THEN GO TO 2062
 2061 LET F$(D,U)=STR$ TS: IF FLG=1 THEN GO TO 2200
 2062 LET FLG=5: GO TO 1290
 2075 LET FLG=1: LET J=VAL G$(D,U): GO SUB 2165
 2077 IF J>=TS THEN RETURN 
 2079 IF J=0 THEN LET G$(D,U)=STR$ TS: IF FLG=1 THEN RETURN 
 2080 IF J=0 AND FLG=0 THEN GO TO 2082
 2081 LET G$(D,U)=STR$ TS: IF FLG=1 THEN GO TO 2200
 2082 LET FLG=5: GO TO 1290
 2095 LET FLG=1: LET J=VAL H$(D,U): GO SUB 2165
 2097 IF J>=TS THEN RETURN 
 2099 IF J=0 THEN LET H$(D,U)=STR$ TS: IF FLG=1 THEN RETURN 
 2100 IF J=0 AND FLG=0 THEN GO TO 2102
 2101 LET H$(D,U)=STR$ TS: IF FLG=1 THEN GO TO 2200
 2102 LET FLG=5: GO TO 1290
 2165 IF U=4 AND TS>=70 THEN GO TO 2220
 2170 IF U=3 AND TS>=85 THEN GO TO 2220
 2175 IF U=2 AND TS>=100 THEN GO TO 2220
 2185 IF U=1 AND TS>=120 THEN GO TO 2220
 2190 IF FLG=1 THEN RETURN 
 2200 SOUND 7,62;8,15: FOR X=100 TO 50 STEP -2: SOUND 0,X: NEXT X: FOR X=50 TO 100: SOUND 0,X: NEXT X
 2205 SOUND 0,0;7,63: CLS : PRINT INK 7;AT 10,0;"CONGRATULATIONS, ";N$;"!": PAUSE 100
 2210 PRINT INK 7;AT 12,0;"You have beat your BEST with    SET #";D;" at SPEED #";U$;" with a"'"SCORE of ";TS: PAUSE 300: PRINT INK 7;AT 16,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2: LET FLG=5: CLS : GO TO 1290
 2220 SOUND 7,62;8,15
 2225 FOR Y=1 TO 4
 2230 FOR X=250 TO 225 STEP -3
 2235 SOUND 0,X: NEXT X
 2240 NEXT Y
 2245 FOR X=250 TO 150 STEP -2
 2250 SOUND 0,X: NEXT X
 2255 SOUND 0,0;7,63
 2257 LET R$="0"
 2258 LET I=3
 2260 SOUND 6,15;7,7;8,16;9,16;10,16;12,35;13,4
 2265 RESTORE 2270: READ R,C: PRINT INK I;AT R,C;"p": FOR X=1 TO 15: PRINT AT R,C;" ": READ R,C: PRINT INK I;AT R,C;"p": NEXT X: PRINT AT R,C;" "
 2270 DATA 16,8,15,8,14,9,13,9,12,10,11,10,10,11,9,11,8,12,8,13,7,14,8,15,8,16,9,17,10,17,11,18
 2287 IF R$="0" OR R$="2" THEN LET X=11: LET F=18: LET FLG=16: GO SUB 100: LET FLG=0: IF R$="2" THEN LET FLG=1: GO TO 2300
 2288 IF R$="1" THEN GO TO 2295
 2289 GO TO 2300
 2295 RESTORE 66: GO SUB 42: LET I=3: LET FLG=1: RESTORE 2310
 2300 SOUND 6,15;7,7;8,16;9,16;10,16;12,30;13,4
 2305 READ R,C: PRINT INK I;AT R,C;"p": FOR X=1 TO 12: PRINT AT R,C;" ": READ R,C: PRINT INK I;AT R,C;"p": NEXT X: PRINT AT R,C;" "
 2310 DATA 16,28,15,27,14,26,13,25,12,24,11,23,10,22,9,21,8,20,8,19,9,18,10,17,11,16
 2322 IF R$="0" OR R$="1" THEN LET X=11: LET F=16: LET FLG=16: GO SUB 100: LET FLG=0: LET I=4: IF R$="1" THEN LET R$="2": LET I=6: RESTORE 2270: GO TO 2260
 2323 IF R$="2" THEN GO TO 2330
 2324 LET R$="1": RESTORE 2270: GO TO 2260
 2330 RESTORE 66: GO SUB 42
 2340 PRINT INK 7;AT 9,0;"GOOD FOR YOU, ";N$;"!"
 2342 LET X$="THE NEXT": IF D$="26" OR D$="27" THEN LET X$="A NEW"
 2345 LET K$="SET": IF U<>4 THEN LET K$="SPEED"
 2350 PRINT INK 7;AT 11,0;"YOU HAVE SCORED ";TS;" WHICH"'"QUALIFIES YOU TO TRY ";X$;';K$;" !"
 2360 BEEP .2,4: BEEP .2,4: BEEP .2,4: BEEP .4,4: BEEP .6,-5
 2365 BEEP .2,-3: BEEP .2,-1: BEEP .2,0: BEEP .8,4: BEEP .2,4: BEEP .2,5: BEEP .2,4: BEEP .4,4: BEEP .4,2: BEEP .4,4: BEEP .4,2: BEEP .4,0: BEEP .1,-5: BEEP .1,-3: BEEP .1,-1: BEEP .4,0
 2370 PRINT INK 7;AT 15,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2: LET Q=15: GO SUB 30: LET FLG=0: RETURN 
 2385 CLS : PRINT PAPER 6; INK 0;AT 0,4;N$;"'S HIGHEST SCORES"
 2390 PRINT AT 1,16;"SPEED"
 2395 FOR X=4 TO 31: PRINT AT 2,X;"''": NEXT X
 2397 PRINT AT 3,5;"(Negative Scores=0)"
 2400 PRINT AT 4,0;"SET";AT 4,7;"1";AT 4,14;"2";AT 4,21;"3";AT 4,28;"4"
 2405 PRINT AT 5,0;"''''''";AT 5,6;"''''''";AT 5,13;"''''''";AT 5,20;"''''''";AT 5,27;"''''''"
 2410 IF FLG=1 THEN GO TO 2435
 2415 LET L=6: LET C=0
 2420 FOR S=1 TO 27: PRINT AT L,C;S: LET C=C+6
 2425 FOR T=1 TO 4: GO SUB IND+1: PRINT AT L,C;W: LET C=C+7: NEXT T
 2430 LET C=0: LET L=L+1: IF L=21 THEN LET L=6: PRINT AT 21,0;"(TO CONTINUE, PRESS ANY LETTER)": PAUSE 0: BEEP .1,40: CLS : LET FLG=1: GO TO 2385
 2435 NEXT S
 2445 PRINT INK 7;AT 21,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2: LET FLG=5: GO TO 1290
 2450 STOP 
 2460 LET CT=0: LET AFLG=0
 2465 FOR Z=1 TO 4: IF P$(Z)="         " THEN GO TO 2495
 2470 CLS : PRINT AT 9,0;"Are ";P$(Z);"'s scores          to be saved?(Y/N?)"
 2475 IF INKEY$<>"Y" AND INKEY$<>"N" THEN GO TO 2475
 2480 IF INKEY$="Y" THEN BEEP S1,S2: LET CT=CT+1: GO TO 2495
 2482 IF INKEY$="N" THEN BEEP S1,S2: LET AFLG=1: LET P$(Z)="         "
 2483 PRINT AT 14,8;"PLEASE STAND BY"
 2484 IF Z=1 THEN GO SUB 929
 2486 IF Z=2 THEN GO SUB 930
 2488 IF Z=3 THEN GO SUB 931
 2490 IF Z=4 THEN GO SUB 932
 2492 PRINT AT 14,8;"                "
 2493 LET AFLG=0
 2495 NEXT Z: IF SFLG=2 THEN GO TO 2500
 2497 CLS : PRINT AT 9,0;"We now have room for ";4-CT;" new"'"players, and shall return to thegame of BLAM"''"(To continue, press any letter)"
 2498 PAUSE 0: BEEP S1,S2: GO TO 1285
 2500 CLS : PRINT AT 9,0;"The saving of the designated    Score-Records involves five     arrays. All five arrays must be saved. Just follow instructions."
 2502 PRINT AT 16,0;"(To continue, press any letter)": PAUSE 0: BEEP S1,S2
 2506 CLS : PRINT INK 7;AT 9,0;"Prepare a fresh tape for record-ing. When ready, press ""R""."
 2507 IF INKEY$<>"R" THEN GO TO 2507
 2508 BEEP S1,S2: CLS 
 2509 CLS : PRINT AT 9,0;"At the start of the SAVE, you   will be asked to start the re-  corder, then to press any key.  This will occur five times.     After the first time, ignore therecorder instructions, and sim- ply press any key."''"(To continue, press any key)"
 2510 PAUSE 0: BEEP S1,S2: CLS 
 2511 SAVE "BLAM" DATA P$()
 2513 SAVE "BLAM" DATA E$()
 2515 SAVE "BLAM" DATA F$()
 2517 SAVE "BLAM" DATA G$()
 2519 SAVE "BLAM" DATA H$()
 2522 CLS : PRINT INK 7;AT 9,8;"STOP THE RECORDER"''"REWIND TO STARTING POINT FOR"'"VERIFICATION OF THE ""SAVE""."'"PRESS ""V"" WHEN READY, THEN"'"PRESS ""PLAY"" ON RECORDER.": PAUSE 0
 2525 IF INKEY$<>"V" THEN GO TO 2525
 2527 LET ERR=1
 2530 BEEP S1,S2: CLS : VERIFY "BLAM" DATA P$(): PAUSE 200
 2532 VERIFY "BLAM" DATA E$()
 2534 VERIFY "BLAM" DATA F$()
 2536 VERIFY "BLAM" DATA G$()
 2538 VERIFY "BLAM" DATA H$()
 2540 LET ERR=0: CLS : PRINT AT 8,9;"STOP RECORDER": PAUSE 200
 2550 CLS : RETURN 
 2570 CLS : PRINT AT 9,0;"Would you like to play the same ";D$;"-Set again? (Y or N)"
 2580 LET I$=INKEY$: IF I$="" THEN GO TO 2580
 2590 BEEP S1,S2: IF I$<>"Y" AND I$<>"N" THEN GO TO 2580
 2600 IF I$="Y" THEN CLS : LET FLG=5: GO TO 1450
 2610 RETURN 
 2620 IF LN=3 THEN GO TO 2640
 2630 LET V$="00-": LET V$=V$+W$: LET V$=V$+W$: LET V$=V$+W$: GO TO 2650
 2640 LET V$="00-": LET V$=V$+W$: LET V$=V$+W$: GO TO 2660
 2650 CLS : PRINT AT 9,0;"You are having a little trouble with ";W$(1);" and ";W$(2);". It would be help- ful to play this set:-";V$(4 TO );".   Okay? (Y or N)?": GO TO 2670
 2660 CLS : PRINT AT 9,0;"You are having a little trouble with ";W$(1);", ";W$(2);", and ";W$(3);". It would be"'"helpful to play this set:"'"-";V$(4 TO );". Okay? (Y or N)?"
 2670 LET I$=INKEY$: IF I$="" THEN GO TO 2670
 2680 BEEP S1,S2: IF I$<>"Y" AND I$<>"N" THEN GO TO 2710
 2690 IF I$="Y" THEN LET B$=V$: LET PFLG=4: GO TO 1450
 2700 CLS : RETURN 
 2710 PRINT AT 20,0;"PLEASE PRESS ""Y"" OR ""N""": GO TO 2670
 2750 IF ERR=1 THEN CLS : PRINT AT 9,0;"THERE IS AN ERROR. CHECK THE    RECORDER VOLUME. WHEN READY TO  RE-SAVE, PRESS ANY KEY": PAUSE 0: BEEP S1,S2: GO TO 2500
 2760 CLS : LET BFLG=1: GO TO 1315

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

Scroll to Top