mist64 / cbmbasic

cbmbasic, a portable version of Commodore's version of Microsoft BASIC 6502 as found on the Commodore 64
438 stars 64 forks source link

"String too long" error using code from C64 #21

Open omiq opened 3 months ago

omiq commented 3 months ago

CBMBASIC returns string too long error without a line number for the following code that works fine on C64

1 REM SHOW TITLES
2 GOSUB 86
3 PRINT " ESCAPE THE HOUSE OF HORROR!"
4 PRINT " AN ADVENTURE BY"
5 PRINT " CHRIS GARRETT AGED 49 3/4"
6 REM INSTRUCTIONS
7 PRINT ""
8 PRINT "YOU'LL BE GIVEN A SEQUENCE OF SCENARIOS AND ASKED WHAT YOU WANT TO DO."
9 PRINT ""
10 PRINT "ENTER YOUR SELECTION AS PROMPTED, OR BY USING THE HIGHLIGHTED"
11 PRINT "LETTER, FOLLOWED BY THE RETURN KEY"
12 PRINT ""
13 PRINT "FOR EXAMPLE ..."
14 Q$ = "START THE GAME, "+RV$+"Y"+RO$+"ES OR "+RV$+"N"+RO$+"O"
15 GOSUB 90
16 IF LEFT$(A$,1)<>"Y" THEN GOTO 1
17 REM FIRST SCENE
18 GOSUB 86
19 PRINT "YOU ARE IN A COLD, DARK CELLAR. THE ONLY LIGHT IS WHAT LITTLE FILTERS"
20 PRINT "THROUGH THE CRACKS IN THE BOARDED UP"
21 PRINT "WINDOWS. NORTH IS A SECURE DOOR,"
22 PRINT "THERE IS AN OPEN DOOR TO THE SOUTH."
23 PRINT "YOU ARE CARRYING A BOOK OF MATCHES."
24 Q$ = RV$+" 1"+RO$+". EXAMINE SECURE DOOR, " + BL$ + RV$+" 2"+RO$+". GO SOUTH"
25 GOSUB 90
26 IF LEFT$(A$,1)<>"1" THEN GOTO 35
27 GOSUB 86
28 PRINT "THE DOOR IS HEAVY, METAL, AND MASSIVE."
29 PRINT "IT REMINDS YOU OF A BANK VAULT AND"
30 PRINT "CLEARLY YOU'RE NOT GETTING OUT THIS WAY!"
31 Q$ = "GO BACK "+RV$+"Y"+RO$+"ES OR "+RV$+"N"+RO$+"O"
32 GOSUB 90
33 IF LEFT$(A$,1)<>"Y" THEN GOTO 27
34 GOTO 18
35 GOSUB 86
36 PRINT "THE FURNACE ROOM IS A PARTITIONED"
37 PRINT "OFF SPACE BUILT WITH DRYWALL TO"
38 PRINT "SIMPLY CONTAIN THE FURNACE AND"
39 PRINT "ELECTRICAL PANEL. YOU CAN SMELL"
40 PRINT "GAS ..."
41 PRINT ""
42 PRINT "ABOVE YOU IS A SMALL HATCH."
43 Q$ = RV$+" 1"+RO$+". BACK TO THE CELLAR, " + BL$ + RV$+" 2"+RO$+". GO UP"
44 Q$ = Q$ + BL$ + RV$+" 3"+RO$+". LIGHT MATCH"
45 GOSUB 90
46 IF LEFT$(A$,1)="1" THEN GOTO 18
47 IF LEFT$(A$,1)<>"1" AND LEFT$(A$,1)<>"2" AND LEFT$(A$,1)<>"3" THEN GOTO 35
48 IF LEFT$(A$,1)="3" THEN GOTO 75
49 GOSUB 86
50 PRINT "YOU ARE IN A SMALL SPACE DIRECTLY"
51 PRINT "ABOVE THE FURNACE THAT YOU"
52 PRINT "ASSUME MUST BE A SERVICE HATCH."
53 PRINT "ON ONE WALL SEEMS TO BE AN EXHAUST VENT"
54 PRINT "WHICH IS LETTING IN A TINY AMOUNT OF"
55 PRINT "LIGHT AND COLD AIR"
56 Q$ = "GO BACK "+RV$+"D"+RO$+"OWN OR E"+RV$+"X"+RO$+"AMINE THE VENT"
57 GOSUB 90
58 IF LEFT$(A$,1)="D" THEN GOTO 35
59 IF LEFT$(A$,1)<>"D" AND LEFT$(A$,1)<>"X" THEN GOTO 49
60 GOSUB 86
61 PRINT "THE VENT COVER IS FLIMSY AND LOOSE."
62 PRINT "YOU THINK IT WOULD NOT TAKE MUCH TO"
63 PRINT "REMOVE IT!"
64 Q$ = "GO "+RV$+"B"+RO$+"ACK OR "+RV$+"H"+RO$+"IT VENT"
65 GOSUB 90
66 IF LEFT$(A$,1)="B" THEN GOTO 49
67 IF LEFT$(A$,1)<>"B" AND LEFT$(A$,1)<>"H" THEN GOTO 49
68 REM SUCCESS CONDITION
69 GOSUB 86
70 PRINT "THE VENT SCREEN COMES LOOSE AND YOU"
71 PRINT "ATTRACT THE ATTENTION OF A PASSER-BY"
72 PRINT "THE POLICE ARE CALLED AND SOON YOU"
73 PRINT "WILL BE FREE!"
74 GOTO 94
75 REM FAIL
76 GOSUB 86
77 PRINT "BOOM!"
78 PRINT ""
79 PRINT "THE LAST THING YOU ARE AWARE OF IS"
80 PRINT "A BRIGHT FLASH AND A SEARING HEAT"
81 PRINT ""
82 PRINT "UNFORTUNATELY YOU HAVE BLOWN UP"
83 PRINT "THE HOUSE WITH YOU INSIDE IT!"
84 PRINT ""
85 GOTO 94
86 Q$="": A$="": REM RESET VARIABLES TO BLANK
87 RV$=CHR$(18): RO$=CHR$(146): BL$=CHR$(13) + CHR$(187) + CHR$(32): REM REVERSE ON AND OFF TO MAKE LISTING THE CODE EASIER
88 PRINT CHR$(5): PRINT CHR$(147): PRINT CHR$(19);: REM CLEAR SCREEN, WHITE TEXT
89 RETURN
90 PRINT ""
91 PRINT "WHAT DO YOU WANT TO DO: " + BL$ + Q$;
92 INPUT A$
93 RETURN
94 PRINT ""
95 PRINT ""
96 PRINT "GOODBYE!"

could it be line endings CR/LF due to how I copied the basic code?

omiq commented 3 months ago

Oh! It turns out removing the REM on line 87 fixes it, would still be helpful to supply the line the error was triggered on or to fix the maximum line length?