| Index | wersja polska |
All numbers on this page are hexadecimal, unless stated otherwise.

This drawing was machine generated from the ROM image.
C0 SIN D0 CHR E0 THEN F0 TEST
C1 COS D1 ASCI E1 TO F1 WHO
C2 TAN D2 RND E2 STEP
C3 ASN D3 MID E3 STOP
C4 ACS D4 GETC E4 END
C5 ATN D5 RAN# E5 LETC
C6 LOG D6 KEY E6 DEFM
C7 LN D7 CSR E7 VAC
C8 EXP D8 NEXT E8 MODE
C9 SQR D9 GOTO E9 SET
CA ABS DA GOSUB EA DRAWC
CB INT DB RETURN EB DRAW
CC SGN DC IF EC RUN
CD FRAC DD FOR ED LIST
CE VAL DE PRINT EE AUTO
CF LEN DF INPUT EF CLEAR
10 5 20 D 30 T
01 Mode 11 6 21 E 31 U
02 [S] 12 7 22 F 32 V
03 [F] 13 8 23 G 33 W
04 EXE 14 9 24 H 34 X
05 <- 15 space 25 I 35 Y
06 -> 16 . 26 J 36 Z
07 AC 17 - 27 K
08 DEL 18 + 28 L
09 ANS 19 * 29 M
0A Init 1A / 2A N
0B 0 1B EE 2B O
0C 1 1C = 2C P
0D 2 1D A 2D Q
0E 3 1E B 2E R
0F 4 1F C 2F S
Each variable (except the string variable $) occupies 8 bytes (= 4 words) of RAM.
A string variable can hold up to 7 characters.
The most significant byte of the first word contains value 60 which identifies a string variable.
The remaining bytes hold the character codes.
Spare locations are padded with zeroes.
Examples:
A$ = "" 6000 0000 0000 0000
A$ = "ABCD" 6041 4342 0044 0000
A$ = "1234567" 6031 3332 3534 3736
Numeric values are stored in packed decimal floating point format.
Structure of the first word:
Next three words contain the mantissa in range .100000000000 to .999999999999 in packed BCD format.
Examples:
A = 0 0000 0000 0000 0000
A = 1 1001 1000 0000 0000 ( .100000000000E01)
A = -1 9001 1000 0000 0000 (-.100000000000E01)
A = 100 1003 1000 0000 0000 ( .100000000000E03)
A = -100 9003 1000 0000 0000 (-.100000000000E03)
A = PI 1001 3141 5926 5360 ( .314159265360E01)
A = -PI 9001 3141 5926 5360 (-.314159265360E01)
A = 0.01 0FFF 1000 0000 0000 ( .100000000000E-01)
A = -0.01 8FFF 1000 0000 0000 (-.100000000000E-01)
A = 1/3 1000 3333 3333 3333 ( .333333333333E-00)
A = -1/3 9000 3333 3333 3333 (-.333333333333E-00)
A = 1.2E1234 14D3 1200 0000 0000 ( .120000000000E1235)
A = -9.8E-1234 8B2F 9800 0000 0000 (-.980000000000E-1233)
The string variable $ can hold up to 30 (decimal) characters.
The string stored in the memory is terminated by zero.
Example:
$ = "ABCDEFG"
41 42 43 44 45 46 47 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1 word identifier 2000
1 word address of the variable (points to the end of the
variable)
2 words not used
For example, variable A is stored on the stack as 2000 8800 0000 0000.
1 word identifier 4000
1 word address of the variable (points to the end of the
variable)
1 word length of the string
1 word not used
For example, variable A$ containing the string "ABCD" is stored on the stack as 4000 8800 0004 0000.
1 word identifier 4001
1 word address of the variable 814E
1 word length of the string
1 word not used
For example, variable $ containing the string "ABCDEF" is stored on the stack as 4001 814E 0006 0000.
The same format applies as for numbers stored in numeric variables.
1 word identifier 4080
1 word address of the string
1 word length of the string
1 word not used
BASIC line begins with the line number stored in binary format in 2 bytes, ends with an end marker 00.
BASIC keywords are stored as single byte tokens, numeric values as strings of characters.
Example:
1234 FOR I=1 TO 49 STEP 1: NEXT I
D2 04 DD 4A 3D 31 E1 34 39 E2 31 3A D8 4A 00
Each time a FOR statement is executed, a FOR control structure described below is pushed on the stack. There's no stack pointer used, the FOR statement scans the stack for the first unused location instead (a free location is cleared with zeroes). NEXT scans all stack entries for matching control variable.
4 words STEP value
4 words TO value
1 word address of the first character after the FOR
statement, it's the place where the NEXT iteration
loop resumes execution
1 word address of the control variable (points to the end
of the variable), or 0000 when entry free
Executing a GOSUB statement pushes the return address (address of the first character after the GOSUB statement) on the first GOSUB stack, and the current BASIC line beginning address on the second GOSUB stack.
RETURN frees the top stack location by clearing it with value 0000.
The concept doesn't use any stack pointer either.
8000-805F 60 bytes display memory
8060-812B 66 words system stack
also used as error handle buffer
(starts from 8060, 40 bytes)
812C-814D 22 words expression evaluator stack, holds codes of
operators, grows downwards
also used as buffer for concatenated strings
(starts from 812F, 1F bytes)
also the string returned by the ANS key
814E-816C 1F bytes string variable $
816D-81AC 40 bytes input line buffer
81AD-81B3 7 bytes user defined character
81B4-81C3 8 words first GOSUB stack for return addresses,
holds 8 entries, grows upwards
81C4-81D3 8 words second GOSUB stack for BASIC line beginning
addresses, holds 8 entries, grows upwards
81D4-8223 28 words FOR stack, holds 4 entries, grows upwards
8224-822B 4 words variable ANS
822C-823F A words addresses of ends of BASIC programs 0-9
8240
8242-8243 1 word code of the parsed command/function/operator
8244-8247 2 words local temporary variables
8248-8249 1 word expression evaluator stack pointer
824A
824C
824E-824F 1 word RAN# seed
8250-8251 1 word number of variables, initialised to 1A
8252-8253 1 word top of the RAM
8254-8255 1 word position of an error
8256-8257 1 word mode
8258-8259 1 word indirect jump address (where to resume
execution after STOP)
also local temporary variable
825A-825B 1 word BASIC program counter
also local temporary variable
825C-825D 1 word address of the beginning of current BASIC line
825E-825F 1 word previous keyboard state
8260-8261 1 word pointer to the input line buffer 816D
8262-8263 1 word keyboard mode
8264-8265 1 word flags
8266 1 byte keyboard timer
8267 1 byte number printing precision
8268 1 byte selected program
8269 1 byte cursor position
826A 1 byte counter of failed attempts to identify an
apparently pressed key
From the address 826B begin BASIC programs.
Variables occupy the end of the RAM area, variable A is at the highest location.