--- title: "Blam" id: 51863 type: "computer_media" slug: "blam" url: "http://localhost/computer_media/blam/" markdown_url: "http://localhost/computer_media/blam.md" published_at: "2023-08-16T01:42:19+00:00" modified_at: "2026-04-03T07:59:13+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A two-part typing tutor and arcade game teaches home-row fingering through animated keyboard diagrams, a timed Firecracker exercise, and a bomb-interception game with per-player score records saved to tape." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Riverside Software" slug: "riverside-software" taxonomy: "post_tag" url: "http://localhost/tag/riverside-software/" - name: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" indiv: - name: "Richard Haseltine" slug: "richard-haseltine" taxonomy: "indiv" url: "http://localhost/indiv/richard-haseltine/" genre: - name: "Tutorial" slug: "tutorial" taxonomy: "genre" url: "http://localhost/type/tutorial/" media_type: "Program" programmers: - name: "Richard Haseltine" slug: "richard-haseltine" taxonomy: "indiv" url: "http://localhost/indiv/richard-haseltine/" download_url: "https://archive.org/download/timex-sinclair-software-archive/Blam (1984)(Riverside Software)(US)(TS2068)(Cassette).zip" mediadate: "1984" producer_company: - id: 35496 title: "Riverside Software" type: "company" url: "http://localhost/company/riverside-software/" images: - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260330-msqp.png" - url: "http://localhost/wp-content/uploads/2023/08/SCR-20260330-mstj.png" related_products: - id: 35497 title: "Blam" type: "product" url: "http://localhost/product/blam/" media_type_tags: "Tutorial" --- # Blam “BLAM” is a two-part typing education and arcade game package by [Richard S. Haseltine](http://localhost/indiv/richard-haseltine/) ([Riverside Software](http://localhost/company/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: | Flag | Meaning | | --- | --- | | `FLG` | General 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 | | `MFLG` | Which top-level mode is active (1=instructions, 2=finger exercise, 3=Firecracker) | | `M2FLG` | Secondary mode flag used after returning from BLAM game menu | | `PFLG` | Player-specific state; value 4 forces a custom letter-set (`B$`) built from the player’s missed letters | | `SFLG` | Score-system flag: 1=skip intro and jump to keyboard display, 2=save-scores flow | | `BFLG` | Error-recovery flag set by `ON ERR` handler | | `AFLG` | Used 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. ## 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=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=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=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 ```