--- title: "Santa’s Christmas Nightmare" id: 71318 type: "computer_media" slug: "santas-christmas-nightmare" url: "http://localhost/computer_media/santas-christmas-nightmare/" markdown_url: "http://localhost/computer_media/santas-christmas-nightmare.md" published_at: "2026-09-02T07:03:03+00:00" modified_at: "2026-09-02T07:03:04+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2026/09/Santa-1.png" excerpt: "Guide Santa through five increasingly brutal stages — blizzard, rooftop drop, chimney lift, snowball gauntlet, and a nail-biting altitude sprint — in this multi-stage Christmas action game." 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: "TS 2068" slug: "ts2068" taxonomy: "post_tag" url: "http://localhost/tag/ts2068/" basic: - name: "User Defined Graphics (UDG)" slug: "user-defined-graphics-udg" taxonomy: "basic" url: "http://localhost/basic/user-defined-graphics-udg/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Arcade" slug: "arcade" taxonomy: "genre" url: "http://localhost/type/arcade/" media_type: "Program" download_url: "https://archive.org/download/timex-sinclair-software-archive/Santas%20Christmas%20Nightmare%20(198x)(-)(TS2068)(US)(Program).zip" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2026/09/Santa-1.png" - url: "http://localhost/wp-content/uploads/2026/09/santa-2.png" media_type_tags: "Arcade" --- # Santa’s Christmas Nightmare Santa’s Christmas Nightmare is a five-stage action game in which the player guides Santa through a series of challenges to deliver presents. The stages include dodging obstacles in the snow, parachuting onto a rooftop chimney, descending a chimney via a moving lift, crossing a floor while jumping over snowballs, and button-mashing to gain enough altitude to clear houses. Sixteen UDGs (characters 144–159) are defined at startup via DATA statements to provide all the game’s sprites, including Santa, trees, igloos, penguins, snowmen, sleigh parts, and chimney bricks. Difficulty scales with a year counter (starting at 1984) stored in variable Y, which tightens timing delays and narrows platforms across all stages. The game tracks a persistent high score with player name entry using INPUT LINE, surviving across rounds via a GO TO 30 reset that preserves H and H$. *** ### Program Structure The program is organized into clearly delineated sections separated by REM statements. The main flow proceeds as follows: 1. Lines 1–100: Initialization, key definition, and UDG setup via `GO SUB 101` 2. Lines 101–199: UDG definition subroutine using `RESTORE`/`READ`/`POKE USR` 3. Lines 200–199 (via `GO TO 200`): Jump into main game — notably line 200 does not appear in the listing, so control falls through to the nearest defined line 4. Lines 900–1980: Stage 1 — horizontal scrolling obstacle avoidance in snow 5. Lines 2000–2300: Stage 2 — sleigh parachute drop onto chimney 6. Lines 2500–2900: Stage 3 — chimney lift descent 7. Lines 3000–3340: Stage 4 — floor crossing with snowball jumping 8. Lines 3500–3800: Stage 5 — button-mash altitude challenge 9. Lines 4010–4030: Year increment and loop back to Stage 1 10. Lines 9000–9030: Lose-a-life subroutine 11. Lines 9100–9150: Game-over screen with high score handling 12. Lines 9200–9730: Instructions display 13. Lines 9800–9850: Between-stage and between-screen message subroutines 14. Lines 9900–9910: Traffic light countdown subroutine ### UDG Definition Subroutine at line 101 defines 16 UDGs (characters 144–159, accessed as `\a` through `\p`) by reading 128 bytes of DATA with a double loop at line 105 using `POKE USR CHR$ G+F,A`. A `RESTORE 100` at line 103 ensures the DATA pointer resets to the correct position regardless of prior READ operations. The UDGs represent: Santa (`\a`, `\f`), trees (`\b`), igloo (`\c`), penguin (`\d`), snowman (`\e`), sleigh parts (`\g`, `\h`), chimney top (`\i`, `\j`, `\k`), lift block (`\l`, `\m`), chimney brick (`\n`), traffic light circles (`\o`, `\p`). ### Stage 1 — Snow Obstacle Field At line 910, a 2D array `P(Y*79,2)` is pre-computed with random column positions and UDG codes for obstacles, scaling the field length with the year variable `Y`. The main loop (lines 1000–1070) runs 100 iterations; during the first 80 it prints one row of obstacles per frame from the pre-computed array. Collision detection at lines 1920–1960 uses `ATTR` to test the ink/paper value of the cell Santa would move into — ink 2 on paper 0 (value 58, since `2 + 7*8 = 58`) signals a safe cell, any other value triggers a life loss. The key-reading subroutine at line 1900 uses a `FOR G=1 TO 4` loop with `GO TO G*20+1900` to dispatch to one of four movement handlers (lines 1920, 1940, 1960, 1980) — a computed `GO TO` idiom that avoids a cascade of IF statements. ### Stage 2 — Parachute Drop The chimney width `W` is computed as `10-Y` (minimum 1), making landing harder in later years. Santa’s sleigh scrolls across row 0 in a FOR loop (lines 2110–2120); pressing the DOWN key freezes the column and begins a vertical drop animation. Landing position is checked against the chimney aperture bounds at line 2220. A bullseye on the chimney pot (line 2200, when `X=16`) awards a 100-point bonus. ### Stage 3 — Chimney Lift A lift block (three block-graphic characters wide) oscillates up and down the chimney shaft. The player must press RIGHT to step onto the lift and LEFT to step off when the blocking brick at the bottom disappears. A countdown timer (20 seconds, lines 2640–2670) adds pressure. The lift speed is governed by a delay loop `FOR G=1 TO W*4` where `W=( 10-Y)/2`, tightening with each year. ### Stage 4 — Snowball Gauntlet Santa moves left from column 30 toward the Christmas tree (drawn with `PLOT`/`DRAW` at line 3020–3030). Snowballs appear with probability `RND<.15` and scroll right across row 21. An UP-key jump sets flag `U=1` and counter `T`; after 5 frames (`T=5`) Santa lands back on the floor. Collision is checked by comparing the snowball’s column `F` with Santa’s column `X` while `U=0` at lines 3200 and 3230. ### Stage 5 — Altitude Button Mash The player presses UP (`K$(3)`) repeatedly during a 500-unit countdown. The game counts presses in `T` (line 3625) but requires the key to be released between counts — a busy-wait at line 3650 (`IF INKEY$<>"" THEN LET F=F-1`) drains the timer while the key is held, discouraging key-holding. The final height calculation at line 3700 subtracts penalties for year level and recalculates to a screen row. A subsequent horizontal animation checks `ATTR` against the house walls (ink 6, value 6) to detect a crash. ### Difficulty Scaling | Variable | Usage | Effect of increasing Y | | --- | --- | --- | | `Y` | Year counter (starts at 1) | All difficulty parameters tighten | | `P(Y*79,2)` | Stage 1 obstacle array size | More obstacles to dodge | | `W=10-Y` | Chimney width (Stage 2) and lift speed divisor (Stage 3) | Narrower chimney, faster lift | | `W=(10-Y)/3` | Stage 4 snowball speed | Faster snowballs | | `T=T-15*Y` | Stage 5 height penalty | More button presses needed | ### Scoring Score accumulates across stages and years. Stage completions award flat bonuses (50 points) plus multiples of `L` (lives remaining) for surviving. Stage 4 awards 1 point per step and 5 per dodged snowball. Stage 5 awards 20 points per row of altitude gained. High score is stored in `H` with player name in `H$` (10-character DIM); these are preserved across rounds because `GO TO 30` on restart skips the `LET H=0:DIM H$(10)` at line 25. ### Notable Bugs and Anomalies - Line 9010 prints `"LIVES LEFR"` — a typo for “LIVES LEFT”. - Line 9130 prints `"PRESS ANY KEYTO PLAY AGAIN"` — missing space between “KEY” and “TO”. - Lines 97–99 implement a duplicate-key check with nested FOR loops, but the structure `IF F=G THEN NEXT G: NEXT F` skips to the wrong level of nesting and does not correctly guard against all duplicate combinations; in practice the check may pass even with two identical keys. - Lines 3625 and 3630 are identical (`IF INKEY$=K$(3) THEN LET T=T+1: GO TO 3650`), making one redundant — likely a copy-paste artifact intended for a second key check. - The instructions at line 9300 reference `k$(1)` (lowercase k) rather than `K$(1)`; on a case-sensitive interpreter this would cause a variable-not-found error, though in standard Sinclair BASIC variable names are case-insensitive. - Line 200 is referenced by `GO TO 200` at line 100 but does not exist in the listing; execution falls through to line 900, which begins Stage 1 — this is intentional behavior rather than an error. - The `PRINT AT 9,0` at line 9300 has no string argument, printing nothing, and the subsequent `GO TO E*50+9300` computes target lines 9350, 9400, 9450, 9500, 9550 for stages 1–5 respectively. ### Key BASIC Idioms - `POKE 23692,255` at line 990 disables the scroll prompt by resetting the line counter. - `POKE 23658,8` at line 40 enables CAPS LOCK mode. - `ATTR(row,col)` is used extensively for collision detection, leveraging the color attribute memory rather than tracking object positions explicitly. - Delay loops of the form `FOR G=1 TO W*4: NEXT G` provide speed control proportional to difficulty. - `RESTORE 3320` before a small DATA block at line 3310 demonstrates targeted use of RESTORE to read local data mid-program. ## Source Code ``` 1 REM *********************** *Underlined characters* *are entered in * *GRAPHICS mode. * *********************** 10 REM INITIALISE SCREEN AND SOME VARIABLES 22 GO SUB 101 25 LET H=0:DIM H$(10) 30 LET Y=1:DIM K$(4):LET L=5:LET S=0 40 BRIGHT 0:PAPER 0:BORDER 0:CLS :POKE 23658,8 50 INK 6:PRINT AT 0,2; BRIGHT 1;"SANTA'S CHRISTMAS NIGHTMARE!"; TAB 2;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.." 52 GO SUB 9200 55 REM DEFINE KEYS 57 INK 6:PRINT AT 0,2; BRIGHT 1;"SANTA'S CHRISTMAS NIGHTMARE!"; TAB 2;"\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\.." 60 INK 5:PRINT AT 5,0;"WHICH KEYS WOULD YOU LIKE ?"'''"LEFT:"''"RIGHT:"''"UP:"''"DOWN:" 70 FOR F=1 TO 4:PRINT AT F*2+6,10; FLASH 1;"?" 80 LET R$= INKEY$:IF R$ <>"" THEN GO TO 80 90 LET R$= INKEY$:IF R$="" THEN GO TO 90 95 BEEP .05,20:PRINT AT F*2+6,10;R$: LET K$(F)=R$: NEXT F 97 FOR F=1 TO 4: FOR G=1 TO 4:IF F=G THEN NEXT G:NEXT F: GO TO 100 98 IF K$(F)=K$(G) THEN CLS : GO TO 57 99 NEXT G:NEXT F 100 GO TO 200 101 REM DEFINE GRAPHICS 103 RESTORE 100 105 FOR G=144 TO 159:FOR F=0 TO 7:READ A:POKE USR CHR$ G+F,A: NEXT F:NEXT G 110 DATA 28,28,8,62,8,28,20,20 120 DATA 56,124,214,186,124,214,146,16,24,52,82,255,169,255,153,255,56,120,44,46,42,58,40,104,24,36,24,36,66,66,36,24 130 DATA 18,63,254,252,124,62,127,118 140 DATA 30,30,76,111,236,255,255,126,0,1,1,3,255,252,68,68 150 DATA 1,3,7,15,31,63,127,255,128,192,224,240,248,252,254,255 160 DATA 102,102,102,102,255,255,255,255 170 DATA 0,0,64,96,224,255,255,126,28,62,127,127,127,73,42,28 180 DATA 255,32,32,255,255,2,2,255 190 DATA 60,66,129,129,129,129,66,60,60,126,255,255,255,255,126,60 199 RETURN 900 REM SCREEN 1 902 BRIGHT 0:PAPER 7:BORDER 7: CLS 905 INK 1:PRINT AT 11,10;"PLEASE WAIT" 910 DIM P(Y*79,2):FOR F=1 TO Y*79:LET P(F,1)= INT (RND*30)+1:LET P(F,2)= INT (RND*3)+146:NEXT F 920 INK 1:LET N=0:LET E=1:LET X=15 950 GO SUB 9800:INK 2:CLS 990 POKE 23692,255 995 GO SUB 9900 1000 FOR F=1 TO 100:LET S=S+1 1050 PRINT AT 0,X;"\a" 1060 IF F<80 THEN FOR G=1 TO Y: LET N=N+1: PRINT AT 21,P(N,1); INK 0; CHR$ P(N,2):NEXT G:PRINT AT 21,0; INK 4;"\b"; AT 21,31;"\b" 1065 GO SUB 1900 1070 PRINT AT 21,0; INK 8; OVER 1,,,,:NEXT F:GO TO 2000 1900 LET R$= INKEY$:FOR G=1 TO 4:IF K$(G)=R$ THEN GO TO G*20+ 1900 1910 NEXT G: GO TO 1960 1920 IF ATTR (1,X-1) <>58 THEN PRINT AT 1,X-1; INK 2;"\f"; AT 0,X;" ":INK 1:GO SUB 9000:GO TO 900 1930 LET X=X-1:IF X=0 THEN LET X=X+1:GO TO 1960 1935 RETURN 1940 IF ATTR (1,X+1) <>58 THEN PRINT AT 1,X+1; INK 2;"\f"; AT 1,X;" ":INK 1:GO SUB 9000:GO TO 900 1950 LET X=X+1:IF X=31 THEN LET X=X-1:GO TO 1960 1955 RETURN 1960 IF ATTR (1,X) <>58 THEN PRINT AT 1,X; INK 2;"\f"; AT 0,X;" ":INK 1:GO SUB 9000: GO TO 900 1980 RETURN 2000 INK 1:LET S=S+50*L:GO SUB 9820 2005 PAPER 0:BORDER 0:CLS 2010 REM STAGE 2 2020 INK 5:LET E=2:GO SUB 9800: INK 6:LET W=10-Y:IF W<1 THEN LET W=1 2030 LET C$="\::\::\::\::\::\::\::\::\::\::"( TO W) 2040 PRINT AT 15,16;"\k"; TAB 16;"\::" 2100 PRINT AT 17,15-W/2;"\i";C$;"\j":FOR F=18 TO 21:PRINT AT F,15-W/2;C$;"\::\::":NEXT F 2110 GO SUB 9900:FOR F=0 TO 29: PRINT AT 0,F; INK 2;" \g"; INK 6;"\h":IF INKEY$=K$(4) THEN GO TO 2200 2120 NEXT F:INK 5:GO SUB 9000: GO TO 2010 2200 LET X=F+1:PRINT AT 0,X; INK 2;"\l"; INK 6;"\h": INK 2:FOR F=2 TO 13:PRINT AT F-1,X;" "; AT F,X;"\m"; AT F+1,X;"\a":FOR G=1 TO 40:NEXT G:NEXT F:IF X=16 THEN LET S=S+100:GO TO 2250 2210 FOR F=14 TO 15:PRINT AT F-1,X;" "; AT F,X;"\m"; AT F+1,X;"\a": FOR G=1 TO 40:NEXT G:NEXT F 2220 IF X<16-(W/2+1) OR X>16+W/2 THEN FOR F=16 TO 20:PRINT AT F-1,X;" "; AT F,X;"\m"; AT F+1,X;"\a":FOR G=1 TO 40:NEXT G:NEXT F:INK 5:GO SUB 9000:GO TO 2010 2250 CLS 2300 INK 5:LET S=S+50+20*L:GO SUB 9820 2500 REM STAGE 3 2510 CLS :LET E=3:INK 5:GO SUB 9800:INK 6:FOR F=5 TO 21:PRINT AT F,12;"\n"; TAB 19;"\n":NEXT F:PRINT AT 4,12;"\n\n\n\n\n\n\n\n":FOR F=0 TO 3:PRINT AT F,13;"\n\n"; TAB 17;"\n\n":NEXT F 2520 PRINT AT 21,0;"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; AT 6,13;"\n\n\n"; AT 20,12;" \n" 2530 LET X=15:PRINT AT 5,15; INK 2;"\a" 2540 LET W=10-Y:IF W<1 THEN LET W=1 2550 LET W=W/2 2590 GO SUB 9900 2600 INK 5:FOR F=21 TO 6 STEP -1:FOR G=1 TO W*4:NEXT G:PRINT AT F,16;"\..\..\..":IF F<21 THEN PRINT AT F+1,16;" " 2610 LET R$= INKEY$:IF R$=K$(2) THEN GO TO 2700 2615 FOR G=1 TO W*4:NEXT G:PRINT AT F,16;"\..\..\..":IF INKEY$=K$(2) THEN GO TO 2700 2620 NEXT F:FOR F=6 TO 21:FOR G=1 TO W*4:NEXT G:PRINT AT F-1,16;" "; AT F,16;"\..\..\..":IF INKEY$=K$(2) THEN GO TO 2700 2625 FOR G=1 TO W*4:NEXT G:IF F<21 THEN PRINT AT F,16;"\..\..\..\.." 2627 IF INKEY$=K$(2) THEN GO TO 2700 2630 NEXT F 2640 PRINT AT 17,0;"TIME:":PRINT AT 20,12;" ":FOR T=20 TO 0 STEP -1:PRINT AT 17,5;T;" ":NEXT T:FOR F=1 TO 40:NEXT F:INK 5:GO SUB 9000: GO TO 2500 2650 FOR F=6 TO 21:FOR G=1 TO W*4:NEXT G:PRINT AT F,16;"\..\..\.."; AT F-1,16; INK 2;"\a":IF INKEY$=K$(1) THEN GO TO 2690 2658 PRINT AT F-1,16; INK 2; "\a ":FOR G=1 TO W*4:NEXT G:IF F<21 THEN PRINT AT F,16; "\..\..\..\.." 2659 IF INKEY$=K$(1) THEN GO TO 2690 2660 PRINT AT F-1,16;" ": NEXT F:PRINT AT F-2,16; INK 2;"\a":PRINT AT 17,0;"TIME:":PRINT AT 20,14;" ":FOR T=20 TO 0 STEP -1:PRINT AT 17,5;T;" ": IF INKEY$=K$(1) THEN GO TO 2800 2670 NEXT T:FOR F=1 TO 40:NEXT F:INK 5:GO SUB 9000 2690 PRINT AT F-1,16;" "; AT F,16;"\..\..\..\..":FOR F=F-1 TO 20:PRINT AT F-1,15;" "; AT F,15; INK 2;"\a":FOR G=1 TO 40:NEXT G:NEXT F:PRINT AT 20,15; INK 2;"\f":FOR F=1 TO 40:NEXT F:INK 5: GO SUB 9000:GO TO 2500 2700 LET X=16:PRINT AT 5,15;" ": IF F=6 THEN GO TO 2650 2710 IF F>6 THEN FOR F=6 TO F-1: PRINT AT F-1,16;" "; AT F,16; INK 2;"\a":FOR G=1 TO 40:NEXT G:NEXT F:PRINT AT F-1,16; INK 2;"\f":FOR F=1 TO 40:NEXT F:INK 5:GO SUB 9000:GO TO 2500 2800 FOR F=15 TO 0 STEP -1:PRINT AT 20,F; INK 2;"\a":FOR G=1 TO 20: NEXT G: NEXT F 2900 INK 5:LET S=S+50+(T+10)*L: GO SUB 9820 3000 REM STAGE 4 3010 LET E=4:INK 5:GO SUB 9800 3020 INK 4:FOR F=101 TO 61 STEP -20:FOR G=1 TO 30:PLOT 30-G/2,F-G:DRAW G,0:NEXT G:NEXT F:INK 2:FOR F=26 TO 34:PLOT F,16:DRAW 0,15:NEXT F 3030 INK 5:FOR F=0 TO 15:PLOT 20-F/2,F:DRAW F+20,0:NEXT F 3040 LET W=10-Y:LET W=W/3:IF W<1 THEN LET W=1 3090 LET X=30:INK 7:GO SUB 9900 3100 PRINT AT 21,X; INK 2;"\a" 3110 FOR F=1 TO W*4:NEXT F:IF INKEY$=K$(1) THEN LET X=X-1:LET S=S+1:IF X=6 THEN GO TO 3300 3120 IF RND<.15 AND X>11 THEN LET U=0:PRINT AT 21,X; INK 2;"\a": GO TO 3200 3130 GO TO 3100 3200 FOR F=7 TO 31:FOR G=1 TO W*4:NEXT G:LET S=S+1:PRINT AT 21,F-1;" \p":IF F=X AND U=0 THEN PRINT AT 21,X; INK 2;"\f":FOR F=1 TO 20:NEXT F:INK 5:GO SUB 9000:GO TO 3000 3210 IF INKEY$=K$(3) AND U=0 THEN LET U=1:LET T=0:PRINT AT 21,X;" " 3220 IF U=1 THEN LET T=T+1:IF T=5 THEN LET U=0:PRINT AT 20,X;" " 3230 PRINT AT 21-U,X; INK 2;"\a": IF F=X AND U=0 THEN PRINT AT 21,X; INK 2;"\f":FOR F=1 TO 20:NEXT F:INK 5:GO SUB 9000:GO TO 3000 3240 NEXT F:LET U=0:PRINT AT 21,31;" "; AT 21,X; INK 2;"\a"; AT 20,X;" ":LET S=S+5:GO TO 3100 3300 PRINT AT 21,7;" ":FOR F=20 TO 10 STEP -1: PRINT AT F,6; INK 2;"\a"; AT F+1,6;" ":FOR G=1 TO 10:NEXT G:NEXT F 3310 PRINT AT 10,6;" ":RESTORE 3320:FOR F=1 TO 5:READ A,B:PRINT AT A,B; INK 2;"\a":FOR G=1 TO 10:NEXT G:PRINT AT A,B;" ":NEXT F 3320 DATA 9,5,8,4,7,3,8,2,9,1 3330 FOR F=10 TO 21:PRINT AT F,0; INK 2;"\a"; AT F-1,0;" ":FOR G=1 TO 10:NEXT G:NEXT F 3340 FOR F=1 TO 200:NEXT F:INK 5:LET S=S+50:GO SUB 9820 3500 REM STAGE 5 3510 LET E=5:INK 5:GO SUB 9800 3600 PRINT AT 20,0; PAPER 7,,,,:FOR G=0 TO 5:FOR F=6+G TO 19:PRINT AT F,G; INK 6;"\::"; AT F,31-G;"\::":NEXT F:PRINT AT G+5,G; INK 6;"\j"; AT G+5,31-G;"\i":NEXT G:PRINT AT 6,2; INK 6;"\k"; AT 7,2;"\::"; AT 6,29;"\k"; AT 7,29;"\::" 3610 PRINT AT 19,15; INK 2;"\g"; INK 6;"\h":LET T=0 3615 GO SUB 9900:IF INKEY$=K$(3) THEN PRINT AT 11,11;"HANDS OFF'":FOR F=1 TO 100:NEXT F:PRINT AT 11,11;" ":GO TO 3615 3617 PRINT AT 2,2; INK 7;"TIME:500" 3620 FOR F=500 TO 0 STEP -1 3625 IF INKEY$=K$(3) THEN LET T =T+1:GO TO 3650 3630 IF INKEY$=K$(3) THEN LET T=T+1: GO TO 3650 3640 NEXT F: GO TO 3700 3650 IF INKEY$ <>"" THEN LET F=F -1: PRINT AT 2,7; INK 7;F;" ":IF F>0 THEN GO TO 3650 3655 IF F<1 THEN GO TO 3700 3660 NEXT F 3700 LET T=T*2:LET T=T-15*Y:LET T=T-36:LET T=19-T:IF T<0 THEN LET T=0 3710 FOR F=18 TO T STEP -1:PRINT AT F,15; INK 2;"\g"; INK 6;"\h"; AT F+1,15;" ":FOR G=1 TO 40:NEXT G:LET S=S+20:NEXT F 3720 FOR F=15 TO 29:FOR G=1 TO 40:NEXT G:PRINT AT T,F; INK 2;" \g"; INK 6;"\h":IF ATTR (T,F+3)=6 THEN FOR G=1 TO 40:NEXT G: GO TO 3750 3730 NEXT F:GO TO 3800 3750 INK 2:PRINT AT T,F+1;" \g": FOR G=1 TO 40:NEXT G:PRINT AT T,F+2;"\a":FOR J=1 TO 40:NEXT J:PRINT AT 19,F+2;"F":INK 5:GO SUB 9000:GO TO 3500 3800 REM NEXT YEAR 4010 LET Y=Y+1 4020 CLS :PRINT AT 6,0;"WELL DONE - YEAR ";Y+1983;" COMPLETED!"; AT 12,0;"YOU NOW PROGRESS TO YEAR ";Y+1984'"WHICH OBVIOUSLY, IS HARDER." 4030 FOR F=1 TO 200:NEXT F:GO TO 900 9000 REM YOU LOSE A LIFE 9010 LET L=L-1:FOR F=1 TO 100:NEXT F:CLS :PRINT AT 6,2;"BAD LUCK ! - YOU LOST A LIFE"; AT 12,10;L;" LIVES LEFR" 9015 FOR F=15 TO 0 STEP -1:BEEP .1,F:NEXT F 9020 FOR F=1 TO 200:NEXT F:CLS :IF L=0 THEN GO TO 9100 9030 INK 2:RETURN 9100 PRINT AT 4,0;"YOU REACHED YEAR ";Y+1984;" (STAGE ";E;")"; AT 8,0;"YOU SCORED ";S 9110 IF S >=H THEN PRINT AT 12,0;"YOU BEAT THE HIGH SCORE THE HIGH SCORE IS NOW ";S:LET H=S:PRINT "PLEASE ENTER YOUR NAME": INPUT LINE H$ 9120 IF S