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 02: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 then
condition can't contain anelse
statement, as in this example:
10 if a=0 then x=10
- If you need to do an
if then else
structure, you actually have to do anif else endif
structure like in the following example, skipping thethen
statement.
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
endif
thinking that theif
statement 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
then
statement by mistake to anif else endif
structure, 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 |