SuperBASIC: Difference between revisions
No edit summary |
(Add info about control characters) |
||
| Line 54: | Line 54: | ||
===== Behaviour of load and bload ===== | ===== Behaviour of load and bload ===== | ||
The <code>bload</code> statement does not print <code>Completed</code> when loading is successfull whereas <code>load</code> does. | The <code>bload</code> statement does not print <code>Completed</code> when loading is successfull whereas <code>load</code> does. | ||
===== Control characters for cursor and colour control ===== | |||
In BASIC the following character codes can be used with <code>print</code> to control the cursor position and colours on the screen. | |||
{| class="wikitable" | |||
!Code | |||
!Effect | |||
|- | |||
|chr$(12) | |||
|Clear screen and set cursor to upper left corner | |||
|- | |||
|chr$(16) | |||
|Cursor up | |||
|- | |||
|chr$(14) | |||
|Cursor down | |||
|- | |||
|chr$(2) | |||
|Cursor left | |||
|- | |||
|chr$(6) | |||
|Cursor right | |||
|- | |||
|chr$(1) | |||
|Set cursor to leftmost position in current line | |||
|- | |||
|chr$(5) | |||
|Set cursor to righmost position in current line | |||
|- | |||
|chr$(128) - chr$(143) | |||
|Set foreground color. Code 128 is black 143 is white. The rest follows the sequence given above | |||
|- | |||
|chr$(144) - chr$(159) | |||
|Set background color. Code 144 is black 159 is white. The rest follows the sequence given above | |||
|} | |||
Revision as of 03:59, 30 March 2024
SuperBASIC is inspired by BBC BASIC but offers quite a bit more.
- SuperBASIC Reference Manual.
- SuperBASIC Memory Map
- Watch EMWhite's excellent intro series on YouTube: Full Playlist.
An informal list of tips, "gotchas":
IF, THEN, ELSE
Source of this tip: Ernesto
- A regular
if thencondition can't contain anelsestatement, as in this example:
10 if a=0 then x=10
- If you need to do an
if then elsestructure, you actually have to do anif else endifstructure like in the following example, skipping thethenstatement.
10 if a=0
20 x=1
30 else
40 x=2
50 endif
- If you do it in one line it needs to have some colons added, making it look weird like this:
10 if a=0:x=1:else:x=2:endif
- if you dare to omit the
endifthinking that theifstatement won't need it, (mmm.., everything is in one line, so no need, right?) -Nope...all hell breaks loose!-
10 if a=0:x=1:else:x=2: REM "<-- Error, omited the endif"
- be careful not to add an extra
thenstatement by mistake to anif else endifstructure, if you do -All hell breaks loose again!!-
10 if a=0 then : rem "<-- Error, THEN is not needed!!!"
20 x=1
30 else
40 x=2
50 endif
Debugging hint: If you encounter an error like "open structure" or "endproc without a proc": do not trust the line number that you are given. The root of the problem is probably in a structure earlier on in the code.
Using procedures
The proc keyword is only valid if it appears after an end statement.
Keyboard shortcuts
| Key combination | Effect |
|---|---|
ctrl-c or RUN STOP on the F256K
|
Stops a listing or a running program |
ctrl-l
|
Clears the screen |
ctrl-a or CLR/HOME on the F256K
|
Move cursor to the first character in the current line |
ctrl-e
|
Move cursor to the last character in the current line |
Behaviour of load and bload
The bload statement does not print Completed when loading is successfull whereas load does.
Control characters for cursor and colour control
In BASIC the following character codes can be used with print to control the cursor position and colours on the screen.
| Code | Effect |
|---|---|
| chr$(12) | Clear screen and set cursor to upper left corner |
| chr$(16) | Cursor up |
| chr$(14) | Cursor down |
| chr$(2) | Cursor left |
| chr$(6) | Cursor right |
| chr$(1) | Set cursor to leftmost position in current line |
| chr$(5) | Set cursor to righmost position in current line |
| chr$(128) - chr$(143) | Set foreground color. Code 128 is black 143 is white. The rest follows the sequence given above |
| chr$(144) - chr$(159) | Set background color. Code 144 is black 159 is white. The rest follows the sequence given above |