S-BASIC entry points / work area |
Address
|
Description |
$0000
|
Cold start monitor / BASIC |
$0003
|
Get line to workarea addressed by DE ( unused, all calls to $004A
) |
$0006
|
New line |
$0009
|
New line if the cursor isn't positioned at line begin |
$000C
|
Print space |
$000F
|
Print tab. Sets the cursor to the next tab position |
$0012
|
Print character stored in Accu |
$0015
|
Print message pointed to by DE ( unused, all calls to $0051 ) |
$0018
|
Execute software command |
$001B |
check if key is pressed |
$001E |
check if SHIFT-BREAK is pressed |
$0021
|
Write info header to tape ($3ADD = RET!) |
$0024
|
Write data to tape ($3ADD = RET!) |
$0027
|
Read info header from tape ($3ADD = RET!) |
$002A
|
Read data from tape ($3ADD = RET!) |
$002D
|
Verify tape and program in RAM ($3ADD = RET!) |
$0030
|
$00B2 = RET |
$0033
|
Time set |
$0038
|
$00B2 = RET |
$003B
|
Read time |
$003E
|
Bell |
$0041
|
Set tempo |
$0044
|
Melody stop |
$0047
|
Melody stop |
$004A
|
Get line from keyboard |
$004D |
= $5800 Address of cold start Basic Interpreter |
$004F |
addresses of error routines |
$0058 |
keyboard request / get key |
$005B |
Control code address table. Contains the address to jump to after
the "PRINT CHR$"-statement or a key with the CTRL-key
down ( The "NOACT" shown there means it will effect
in an immediate return ).
Address |
CTRL & |
Action |
$00B2 |
@ |
NOACT |
$00B2 |
A |
NOACT (free for turn to ASCII keyboard) |
$00B2 |
B |
NOACT (free for switching the border
color) |
$09B0 |
C |
CR |
$00B2 |
D |
NOACT (free for turn to German keyboard) |
$0A1B |
E |
Shift Lock |
$0A19 |
F |
Alpha mode |
$00B2 |
G |
plotter new color |
$00B2 |
H |
NOACT (free for switching the background
color) |
$A024 |
I |
TAB |
$00B2 |
J |
NOACT |
$00B2 |
K |
NOACT (free for hardcopy) |
$00B2 |
L |
NOACT |
$09B0 |
M |
CR |
$1500 |
N |
stop / start print |
$00B2 |
O |
NOACT |
$06BE |
P |
DEL |
$09CF |
Q |
Cursor down |
$09F9 |
R |
Cursor up |
$09D4 |
S |
Cursor right |
$09FE |
T |
Cursor left |
$0992 |
U |
HOME |
$061D |
V |
CLR |
$0A1E |
W |
Graphic mode |
$0776 |
X |
INS |
$0A19 |
Y |
Alpha mode |
$00B2 |
Z |
NOACT (free for switching the character
color) |
$09B0 |
Ä |
CR |
$00B2 |
Ü |
NOACT |
$00B2 |
Ö |
NOACT |
$00B2 |
^ |
NOACT |
$00B2 |
/ |
NOACT |
|
$009B |
CTRL routine |
$00A8 |
disable interrupts |
$00B3 |
enable interrupts |
$00BA |
PUSH IX, HL, BC, DE, AF |
$00C7 |
PUSH IX, HL, BC, DE |
$00D3 |
POP AF, DE, BC, HL, IX |
$00DA |
switch from monitor to RAM $E000 - $FFFF |
$00E6 |
break without message, no CONT possible |
$00E8 |
BREAK |
$00ED |
handle errors, Accu contains error number |
$00F6 |
compute length of text (DE), end = $00 |
$0104 |
output table (HL) to port (C) in the length of B |
$010D |
compute ASCII value (HL) to hex DE. Check upper limit in B. |
$011B |
Compare the bytes behind the CALL instruction with the contents
of the Accu in the length of B |
$012D |
Pick up an address from table (HL) to DE. HL = HL + 1 |
$0132 |
Pick up an address from table (HL) to DE. HL = HL |
$0137 |
Clear memory (HL) with $00 in the length of B |
$0138 |
Fill memory (HL) with the value in the accu in the length of B |
$013D |
Clear memory (DE) with $00 in the length of B |
$0143 |
Move memory from (HL) to (DE) in the length of B |
$014A |
Move memory from (DE) to (HL) in the length of B |
$0151 |
Pick up an address from table (HL) to HL. |
$0158 |
HL = HL + A |
$015D |
skip spaces |
$0164 |
Compare the byte behind the CALL instruction with the contents
of (HL) |
$016E |
like $0164, but if not then error 1 |
$017C |
table of software commands |
$022C |
execute software command |
$0247 |
CALL (IX) and display error if any |
$025E |
Compute hex value in HL to ASCII value (DE) |
$029E |
Compute decimal or hex ASCII (HL) to hex DE |
$02CE |
Compute hex ASCII (HL) to hex DE |
$02E9 |
Compute hex ASCII A to hex |
$02F8 |
Wait on space key then next key |
$0305 |
Wait on any key. If BRK key then break program execution |
$0314 |
Store device table pointer DE and device number A |
$031C |
Correct pointer to the I/O workarea, basic variables area, and
strings area |
$0323 |
Correct pointer to the basic variables area and strings area |
$032A |
Correct pointer to the strings area |
$0340 |
Print error. A contains error number |
$0397 |
Move the actual device name to (HL) |
$03B6 |
Text "error" |
$03BE |
Set screen mode |
$0419 |
Init palette register and set maximum of the scroll area |
$0441 |
Init palette register and init base colors black/blue/red/white |
$044F |
Set palette block number |
$0476 |
Color code to palette register (B = color code, A = palette code
number) |
$048A |
Set character color to palette value in A |
$0493 |
Set graphic color to palette value in A |
$049C |
Correct the palette value in A for the max. resolution |
$04AE |
Compute the values of start / end scroll coordinates then output
these to the controller. |
$04EF |
Set screen routines to 40 or 80 columns |
$0531 |
Init routines using values from (HL) |
$054F |
Table values for setting to 40 or 80 columns
|
$05AD |
Print accu |
$05CE |
Print accu on graphic screen |
$05F9 |
Compute Y coordinates to DE |
$0615 |
Get pointer to Y coordinate to HL |
$061D |
CLR |
$0671 |
Clear memory area |
$06AC |
Reset scroll offset |
$06BE |
DEL |
$0776 |
INST |
$0848 |
Scroll |
$08E5 |
Change character at cursor position for flashing cursor |
$092B |
Init keyboard and show cursor |
$0945 |
Show cursor or character |
$094D |
New cursor position by HL |
$0963 |
Compute text cursor position in pseudo screen by coordinates from
HL |
$0977 |
Compute the graphic screen address by the actual cursor position |
$0992 |
HOME |
$099B |
New line, if the cursor position > 0 |
$09AB |
New line |
$09CF |
Cursor down |
$09D4 |
Cursor right |
$09E3 |
Concatenate lines and scroll conditional |
$09F9 |
Cursor up |
$09FE |
Cursor left |
$0A19 |
ALPHA |
$0A1B |
SMALL |
$0A1E |
GRAPH |
$0A24 |
TAB |
$0A24 |
Get line form keyboard to memory (DE) |
$0AB4 |
BRK-key |
$0ABB |
Fetch textline from screen into the input area |
$0BA1 |
Check for kbd input. Statuscode returns in A. |
$0B7B |
Check for kbd input again. |
$0B8B |
Check for kbd input without rebounce. |
$0BA1 |
Check for kbd input. Keycode returns in A |
$0BAB |
Check if a function key is pressed. Get a character. |
$0BC1 |
Check if kbd input has changed |
$0BF6 |
Check for kbd input; returns ASCII |
$0C75 |
Check if function key is used. |
$0CAB |
Compute to ASCII key code |
$0CEF |
Identify CTRL-key |
$0D22 |
Check for BRK condition (SHIFT/BRK) |
$0D30 |
KEY work area |
$0D47 |
Key codes translation table |
$0D8F |
CTRL keys translation table |
$0D94 |
Print text (DE) depending on a Ctrl-code for upper-/lowercase
output. |
$0DC3 |
SHARP ASCII table of lowercase letters |
$0DDD |
CRT-device table |
$0DF6 |
KEY device table |
$0E0F |
Get kbd line and compute line length |
$0E17 |
character in A |
$0E26 |
get current screen X-value |
$0E2A |
new line or CRT/LPT |
$0E2C |
Print A to CRT/LPT. Ctrl codes will be executed. |
$0E3A |
Print A to CRT/LPT. Ctrl codes will be displayed. |
$0E48 |
Print text (DE) to CRT/LPT |
$0E50 |
Print text (DE) to CRT. Ctrl codes will be executed. |
$0E5F |
Print space to CRT |
$0E61 |
Print A to CRT. Ctrl codes will be executed. |
$0EA2 |
Print A to CRT. Ctrl codes will be displayed. |
$0ED9 |
Ctrl code translation table for LPT output |
$0EF9 |
Boot routine used by the Monitor/Basic |
$0F2D |
identify the load device and set it to the actual device |
$0F4E |
Check for graphic expansion option |
$0F7F |
device table for USR routines |
$0F98 |
prepare addresses for USR routines |
$0FA7 |
USR device data I/O |
$0FFC |
Music interrupt address |
$0FFE |
Printer interrupt address |
$1000 |
workarea for file attributes |
$104A |
workarea for current device table |
$1069 |
workarea for default device data |
$1070 |
pointer workarea |
$1082 |
cursor workarea |
$11A4 |
workarea / inputarea |
$12B2 |
text area of function keys |
$1352 |
area for values of the current function key |
$1369 |
current screen values |