--- title: "Cursor Adventure" id: 54554 type: "computer_media" slug: "cursor-adventure" url: "http://localhost/computer_media/cursor-adventure/" markdown_url: "http://localhost/computer_media/cursor-adventure.md" published_at: "2024-06-02T16:55:04+00:00" modified_at: "2026-03-30T21:41:36+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2024/06/cursor-adventure-2.png" excerpt: "Navigate inside a computer, collect colored wires, and defeat the evil Cursor before your time runs out in this inventory-based text adventure." 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/" model: - name: "Timex/Sinclair 2068" slug: "ts-2068" taxonomy: "model" url: "http://localhost/model/ts-2068/" genre: - name: "Game" slug: "game" taxonomy: "genre" url: "http://localhost/type/game/" - name: "Text Adventure" slug: "text-adventure" taxonomy: "genre" url: "http://localhost/type/text-adventure/" media_contents: - id: 51207 title: "CATS Library Tape 6" type: "computer_media" url: "http://localhost/computer_media/cats-library-tape-6/" media_type: "Program" mediadate: "198x" images: - url: "http://localhost/wp-content/uploads/2024/06/cursor-adventure-2.png" - url: "http://localhost/wp-content/uploads/2024/06/cursor-adventure-1.png" media_type_tags: "Game, Text Adventure" --- “Cursor, Foiled Again” is a text adventure game adapted from a 1985 article in Enter magazine, originally written for the Apple and ported to the TS2068. The player, shrunk to microscopic size by the evil Cursor, must navigate inside a computer — through components like the modem, CRT, keyboard, and CPU — collecting wires and other items within a 20-minute in-game time limit. A string array `N$` of dimensions (10,12) tracks the player’s inventory, displayed during status reports via a subroutine at line 7000. The correct wire sequence to produce the enlarging beam is Blue, Green, Yellow (choice 2), making the puzzle solvable with careful item collection. *** ## Program Analysis ### Program Structure The program is organized as a branching text adventure with numbered sections corresponding to locations. Flow control is handled entirely through `GO TO` and `INPUT` statements, with a single subroutine at line `7000` serving as a universal status/report routine. The main sections are: 1. Lines 1–5: Introduction, sound fanfare, variable initialization 2. Lines 20–60: Array setup and game start 3. Lines 240–580: Classroom (starting area, item selection, computer choice) 4. Lines 590–800: Loopins Computer interior 5. Lines 800–990: The CRT/Screen 6. Lines 990–1160: R Square Database (Cursor encounter) 7. Lines 1200–1310: CPU (final puzzle) 8. Lines 1360–1470: CRT port 9. Lines 1480–1610: Keyboard port 10. Lines 1650–1700: Train (dead end/time penalty) 11. Lines 1710–1760: Widgee Computer (wrong path) 12. Lines 1860–1910: Modem port 13. Lines 1930–1990: Q Circle Database (wrong database) 14. Lines 2010–2090: Bus to CPU 15. Lines 2120–2150: Squashed by finger (dead end) 16. Lines 7000–7070: Status report subroutine ### Inventory System Inventory is implemented using a two-dimensional string array `N$(10,12)` declared at line `20`, capable of holding up to 10 items of 12 characters each. The variable `X` acts as an index pointer, incremented each time an item is added. Items that can be collected include: BUS PASS, GUM, RUBBER BAND, BLUE WIRE, GREEN WIRE, YELLOW WIRE, and KEY. Boolean flag variables (`BP`, `GU`, `RB`, `BW`, `GW`, `YW`, `K`) track whether each item has already been picked up, preventing duplicate collection. ### Time Tracking The variable `TI` represents elapsed in-game minutes, initialized to 0 at line `30`. The comment at line `50` honestly acknowledges that this is not real time — `TI` is incremented manually at certain narrative decision points (taking the bus, getting squashed, wrong paths) and inside the subroutine at line `7000`. When `TI` exceeds 20, the game branches to line `180` for the “ran out of time” ending. ### Status Subroutine The subroutine at line `7000` is the program’s most reusable component. It increments `TI`, checks the time limit, prints elapsed minutes, iterates through the inventory array with a `FOR`/`NEXT` loop, pauses for the player to read, and returns. It is called with `GO SUB 7000` from lines `1446`, `1755`, `1900`, `1980`, and elsewhere after wrong-path penalties. ### Input Handling The program mixes two input styles. Numeric choices use bare `INPUT CH` followed by `IF CH=N THEN GO TO` chains. String choices use `INPUT C$` with string comparison. There is an inconsistency: after numeric `INPUT CH` at lines `390` and `530`, lines `410` and `550` fall through to `IF INKEY$="" THEN GO TO` loops, which cannot usefully re-prompt after a completed `INPUT` statement — the `INKEY$` checks here are effectively dead code since `INPUT` already waits for a keypress. ### Notable Techniques and Idioms - The intro sound fanfare at line `1` uses three ascending `BEEP` calls (pitches 10, 20, 30) as a simple alert signal. - The descending pitch loop `FOR A=50 TO 1 STEP -1: BEEP .01,A: NEXT A` (lines `1893`, `1973`, `2053`) creates a downward sweep sound effect for “transmission” or penalty events. - `PAUSE 0` at line `4` is used correctly to wait for any keypress before clearing the intro screen. - Delay loops such as `FOR D=1 TO 300: NEXT D` (lines `1400`, `1690`) are used as simple timing pauses where `PAUSE` is not called. - The `REM` at line `1` credits the original source: *Enter* magazine, April 1985, pp. 21–23, with the full title “Cursor, Foiled Again.” ### Puzzle Logic and Win Condition The game has a single correct solution path. The player must choose Blue Wire (Loopins), take the CRT port, use the Key from the Keyboard to activate the screen, get Green Wire, solve the “pie” riddle by choosing R-Square (π r²), collect Yellow Wire, take the Bus (requiring Bus Pass), and wire the CPU in the sequence Blue, Green, Yellow (choice 2 at line `1307`). Choices 1 and 3 at the CPU trigger the “wrong sequence” branch at line `1810`, which leads directly to the game-over message at line `190` rather than restarting. ### Bugs and Anomalies | Line(s) | Issue | | --- | --- | | `410`, `550` | `IF INKEY$="" THEN GO TO` after `INPUT` is unreachable dead code; `INPUT` already blocks until entry is complete. | | `730` | `IF INKEY$="" THEN GO TO 730` immediately after `INPUT "WHICH WAY DO YOU GO?";C$` creates an infinite loop that can never be broken, because the keyboard buffer is always empty after a completed `INPUT`. This effectively freezes the game after entering the Loopins port selection unless lines 731–735 have already branched away. | | `1760` | `GO TO 290` jumps into the middle of the Classroom section (the time display line) rather than to line `240` (Classroom start with `CLS`), skipping the screen clear and early prints. | | `580` | `GO TO 50` re-initializes `X=1` and `TI=0`, effectively resetting inventory and time — reachable only if neither computer choice (1 or 2) is selected at line `530`. | | `9997` | Bare `STOP` after the `SAVE` line is unreachable during normal play but harmless. | ## Source Code ``` 1 BEEP .5,10: BEEP .5,20: BEEP .5,30: REM FROM ENTER MAGAZINE FOR APRIL, 1985,pp. 21-23; FULL NAME "CURSOR, FOILED AGAIN" 2 BORDER 4: PAPER 1: INK 6: REM original for Apple---redone for TS2068 3 PRINT "THIS ADVENTURE GAME BY SENIOR EDITOR OF ENTER, JIM LEWIS, STARTS WITH THE HERO'S BEING ZAPPED BY THE EVIL CURSOR, AND SHRUNK TO MICROSCOPIC SIZE. MISSION: TO FIND THE ENLARGING BEAM, WITHOUT WHICH THE HERO WILL KEEP SHRINKING INTO NOTHINGNESS!" 4 PRINT ''''"PRESS ANY KEY": PAUSE 0: CLS 5 LET BP=0: LET GU=0: LET RB=0: LET BW=0: LET GW=0: LET YW=0: LET K=0 20 DIM N$(10,12) 30 LET X=1: LET TI=0 50 REM TI FOR TIME WILL NOT BE ACCURATELY 20 MINUTES 60 GO TO 240 180 BEEP 1,30: PRINT "YOU RAN OUT OF TIME","AND",, "DISAPPEARED!" 185 PRINT : PRINT 190 BEEP 3,-35: PRINT "GAME OVER" 200 GO TO 230 210 PRINT "YOU DID IT! YOU REWIRED IN THE CORRECT ORDER" 220 PRINT "THE ENLARGING BEAM ZAPS YOU BACK TO FULL SIZE" 230 STOP 240 REM CLASSROOM 250 CLS 260 PRINT "YOU ARE IN THE COMPUTER LAB" 270 PRINT "AND HAVE JUST BEEN ZAPPED BY A BLUE BEAM OF LIGHT" 280 PRINT "YOU FIND YOURSELF SHRINKING" 290 PRINT "YOU MUST FIND CURSOR WITHIN "; 20-TI;" MINUTES" 300 PRINT "OR YOU WILL COMPLETELY DISAPPEAR" 310 PRINT : PRINT "YOU SEE IN FRONT OF YOU:" 320 IF BP<>0 THEN GO TO 340 330 PRINT "A BUS PASS(1)" 340 IF GU<>0 THEN GO TO 360 350 PRINT "A PIECE OF GUM(2)" 360 IF RB<>0 THEN GO TO 380 370 PRINT "A RUBBER BAND(3)" 380 PRINT "CHOOSE ONE (BY NUMBER)" 390 INPUT CH 400 IF CH=1 THEN GO TO 420 401 IF CH=2 THEN GO TO 440 402 IF CH=3 THEN GO TO 460 410 IF INKEY$="" THEN GO TO 390 420 LET N$(X)="BUS PASS" 430 LET BP=1: GO TO 480 440 LET N$(X)="GUM" 450 LET GU=1: GO TO 480 460 LET N$(X)="RUBBER BAND" 470 LET RB=1 480 LET X=X+1 485 PRINT : PRINT 490 PRINT "THERE ARE TWO COMPUTERS HERE" 500 PRINT "YOU CAN ENTER ONE OF THEM" 510 PRINT "THE LOOPINS(1) OR THE WIDGEE(2)" 520 PRINT "PICK ONE" 530 INPUT CH 540 IF CH=1 THEN GO TO 590 545 IF CH=2 THEN GO TO 1710 550 IF INKEY$="" THEN GO TO 530 580 GO TO 50 590 REM LOOPINS COMPUTER 600 CLS 610 PRINT "YOU ARE IN THE LOOPINS COMPUTER" 620 IF BW=1 THEN GO TO 700 630 PRINT "YOU SEE A BLUE WIRE" 640 PRINT "YOU PICK IT UP" 650 LET N$(X)="BLUE WIRE": LET X=X+1 660 LET BW=1 670 PRINT "YOU ARE HOT ON CURSOR'S TRAIL" 680 PRINT "BUT IT'S DARK IN HERE" 690 PRINT "YOU COULD USE SOME LIGHT" 700 PRINT "AHEAD YOU SEE THREE PORTS" 710 PRINT "MDM(1),CRT(2),AND KBD(3)" 720 INPUT "WHICH WAY DO YOU GO?";C$ 730 IF INKEY$="" THEN GO TO 730 731 IF C$="1" THEN GO TO 1860 733 IF C$="2" THEN GO TO 1360 735 IF C$="3" THEN GO TO 1480 800 REM THE SCREEN 810 CLS 820 IF GW=1 THEN GO TO 880 830 PRINT "YOUR KEY TURNED ON THE SCREEN" 835 BEEP .05,1: BEEP 2,10 840 PRINT "BY ITS LIGHT YOU SEE A GREEN WIRE" 850 PRINT "YOU PICK IT UP" 860 LET N$(X)="GREEN WIRE": LET X=X+1 870 LET GW=1 880 PRINT "ON THE SCREEN IS A RIDDLE" 890 PRINT "IT SAYS:CATCH ME AT THE DATABASE WHERE YOU SEE THE PIE" 900 PRINT "BELOW THE RIDDLE ARE TWO DATABASES TO CHOOSE FROM" 910 PRINT "Q-CIRCLE(1) AND R-SQUARE(2)" 920 INPUT "WHICH DO YOU CHOOSE?";C$ 930 IF C$="" THEN GO TO 920 935 IF C$="1" THEN GO TO 1930 940 IF C$="2" THEN GO TO 990 990 REM R SQUARE 1000 CLS 1010 PRINT "YOU ARE IN THE R SQUARE DATABASE" 1020 PRINT "YOU MUST HAVE GOT CURSOR'S JOKE ABOUT PIE R SQUARED" 1030 PRINT 1040 IF YW=1 THEN GO TO 1090 1050 PRINT "IN FRONT OF YOU IS A YELLOW WIRE" 1060 PRINT "YOU PICK IT UP" 1070 LET N$(X)="YELLOW WIRE": LET X=X+1 1080 LET YW=1 1090 PRINT "YOU TURN A CORNER AND THERE IS CURSOR" 1100 PRINT "'I'VE HIDDEN THE ENLARGING BEAM IN THE CPU' HE CACKLES" 1110 PRINT : PRINT "THERE'S ONLY ONE WAY TO GET THERE" 1120 PRINT "BY BUS(1) OR BY TRAIN(2)?" 1130 PRINT "CHOOSE ONE" 1140 INPUT CH 1150 IF CH=1 THEN GO TO 2010 1155 IF CH=2 THEN GO TO 1650 1160 GO TO 1110 1200 REM THE CPU 1210 CLS 1220 PRINT "YOU ARE IN THE CENTRAL PROCESS- ING UNIT" 1230 PRINT "YOU MUST REWIRE THE COMPUTER" 1240 PRINT "TO PRODUCE THE ENLARGING BEAM" 1250 PRINT 1260 PRINT "WHICH SEQUENCE DO YOU CONNECT THE WIRES IN?" 1265 PRINT 1270 PRINT "GREEN,BLUE,YELLOW(1)" 1275 PRINT 1280 PRINT "BLUE,GREEN,YELLOW(2)" 1285 PRINT 1290 PRINT "YELLOW,BLUE,GREEN(3)" 1300 INPUT "CHOOSE <1>,<2>,OR <3>";C$ 1303 IF C$="" THEN GO TO 1300 1305 IF C$="1" THEN GO TO 1810 1307 IF C$="2" THEN GO TO 210 1309 IF C$="3" THEN GO TO 1810 1360 REM THE CRT 1370 CLS 1380 PRINT "YOU ARE STANDING IN FRONT OF A CRT" 1390 PRINT "THERE IS A KEYHOLE UNDER IT" 1400 FOR D=1 TO 300: NEXT D 1410 IF K=0 THEN GO TO 1430 1420 GO TO 800 1430 PRINT "UNFORTUNATELY, YOU DON'T HAVE THE KEY" 1440 PRINT "YOU GO BACK TO THE LOOPINS TO LOOK FOR IT" 1445 PAUSE 420 1446 GO SUB 7000 1450 GO TO 590 1480 REM KBD 1490 CLS 1500 PRINT "KBD STANDS FOR KEYBOARD" 1510 PRINT "THERE IS A KEY HERE-DO YOU TAKE IT? Y/N" 1520 INPUT C$ 1530 IF C$="N" THEN GO TO 1560 1540 LET N$(X)="KEY": LET X=X+1 1550 LET K=1 1560 PRINT "THERE ARE FINGERS TYPING ALL AROUND YOU" 1570 PRINT "YOU CAN STAY HERE OR GO BACK TO LOOPINS" 1580 PRINT "STAY HERE?(1) OR GO BACK?(2)" 1590 INPUT CH 1600 IF CH=1 THEN GO TO 2120 1605 IF CH=2 THEN GO TO 590 1610 GO TO 1570 1650 REM TRAIN 1660 CLS 1670 PRINT "THIS TRAIN IS A LOCAL" 1690 FOR D=1 TO 300: NEXT D 1700 GO TO 180 1710 REM WIDGEE 1720 CLS 1730 PRINT "AN EVIL GUY LIKE CURSOR WOULD NEVER GO TO " 1740 PRINT "A COMPUTER NAMED WIDGEE" 1750 PRINT "YOU MUST GO BACK TO THE COMPUTER LAB" 1752 PAUSE 480 1755 GO SUB 7000 1760 GO TO 290 1790 REM YOU WIN 1800 GO TO 210 1810 REM WRONG SEQUENCE 1820 CLS 1830 PRINT "SORRY--THAT WAS THE WRONG SEQUENCE" 1840 GO TO 190 1860 REM MODEM 1870 CLS 1880 PRINT "YOU ARE IN THE MDM--THE MODEM" 1890 PRINT "YOU ARE TRANSMITTED BACK TO THE COMPUTER LAB" 1893 FOR A=50 TO 1 STEP -1: BEEP .01,A: NEXT A 1895 PAUSE 240 1900 GO SUB 7000 1910 GO TO 290 1930 REM Q CIRCLE 1940 CLS 1950 PRINT "YOU ARE IN THE Q CIRCLE DATABASE" 1960 PRINT "THERE'S NO PIE HERE" 1970 PRINT "YOU MUST RETURN TO THE CRT" 1973 FOR A=50 TO 1 STEP -1: BEEP .01,A: NEXT A 1975 PAUSE 60 1980 GO SUB 7000 1990 GO TO 800 2010 REM THE BUS 2020 CLS 2030 IF BP=1 THEN GO TO 2070 2040 PRINT "SORRY, YOU DON'T HAVE A BUS PASS" 2050 PRINT "YOU MUST GO BACK TO THE COMPUTER LAB TO GET IT" 2053 FOR A=50 TO 1 STEP -1: BEEP .01,A: NEXT A 2055 PAUSE 60 2060 LET TI=TI+1: GO TO 290 2070 PRINT "GOOD THING YOU HAD A BUS PASS" 2080 PRINT "YOU ARE ON THE BUS GOING TO THE CPU" 2085 PAUSE 360 2090 LET TI=TI+1: GO TO 1200 2120 REM SQUASHED 2130 CLS 2140 PRINT "YOU GOT SQUASHED BY A FINGER": PRINT : PRINT 2145 PAUSE 360 2150 LET TI=TI+1: GO TO 190 7000 REM REPORT 7005 LET TI=TI+1 7010 CLS 7015 IF TI>20 THEN GO TO 180 7020 PRINT "YOU HAVE USED UP ";TI;" MINUTES" 7030 PRINT "YOU ARE CARRYING: " 7040 FOR D=1 TO X 7050 PRINT N$(D): NEXT D 7060 PAUSE 420 7070 RETURN 9997 STOP 9998 SAVE "CURSORADV" LINE 1 ```