| Indeks | English version
|

Spacja ma kod $00.
$80 SIN $90 LEN( $A0 FOR $B0 VAC $C0 DEFM
$81 COS $91 VAL( $A1 NEXT $B1 SET $C1 SAVE
$82 TAN $92 MID( $A2 GOTO $B2 PUT $C2 LOAD
$83 ASN $93 KEY $A3 GOSUB $B3 GET $C3 VER
$84 ACS $94 CSR $A4 RETURN $B4 $C4 LIST
$85 ATN $95 TO $A5 IF $B5 $C5 RUN
$86 LOG $96 STEP $A6 PRINT $B6 $C6 CLEAR
$87 LN $97 THEN $A7 INPUT $B7 $C7
$88 EXP $98 $A8 MODE $B8 $C8
$89 SQR $99 $A9 STOP $B9 $C9
$8A INT $9A $AA END $BA $CA
$8B FRAC $9B $AB $BB $CB
$8C ABS $9C $AC $BC $CC
$8D SGN $9D $AD $BD $CD
$8E RND( $9E $AE $BE $CE
$8F RAN# $9F $AF $BF $CF
Każda zmienna (z wyjątkiem specjalnej zmiennej łańcuchowej $) zajmuje 8 bajtów (czyli 16 4-bitowych słów) w pamięci RAM. Słowo najmniej znaczące umieszczane jest pod niższym adresem.
Wartość 00 00 00 00 00 00 00 00 reprezentuje zarówno zmnienną numeryczną 0 jak i pusty łańcuch. Instrukcja VAC inicjuje wszystkie zmienne tą wartością. Obie poniższe instrukcje wpisują tą wartość do zmiennej A lub A$.
A$ = 0
A$ = ""
Zmienna łańcuchowa może przechowywać do 7 znaków.
Początkowe 7 bajtów (czyli 14 4-bitowych słów) przechowuje kody znaków.
Wolne miejsce wypełnione jest wartością 00.
Piętnaste 4-bitowe słowo jest nie używane i zawiera 0.
Ostatnie, szesnaste słowo zawiera długość łańcucha (wartość różna od
zera).
W ten sposób można odróżnić zmienną łańcuchową od numerycznej, gdzie
ta wartość wynosi 0.
Przykłady:
A$ = "ABMN" 02 12 C2 D2 00 00 00 04
A$ = "1234567" 11 21 31 41 51 61 71 07
Zmienne numeryczne są przechowywane jako zmiennoprzecinkowe,
spakowane liczby dziesiętne.
Pierwsze dwa 4-bitowe słowa zawierają dwie ostatnie cyfry wykładnika,
najpierw cyfra mniej znacząca.
Wykładnik zapisany jest w kodzie z przesunięciem, tzn. do wartości
wykładnika dodane jest przesunięcie 100, dzięki czemu wynik jest
zawsze liczbą dodatnią.
Trzecie 4-bitowe słowo zawiera pierwszą cyfrę wykładnika oraz znak
mantysy:
wartość = pierwsza_cyfra_wykładnika + 5 * znak_mantysy
Lista możliwych kombinacji wartości:
0 - mantysa dodatnia, wykładnik ujemny
1 - mantysa dodatnia, wykładnik dodatni
5 - mantysa ujemna, wykładnik ujemny
6 - mantysa ujemna, wykładnik dodatni
Następnych dwanaście 4-bitowych słów zawiera mantysę w zakresie
1.00000000000 do 9.99999999999, najpierw cyfra najmniej znacząca.
Ostatnie, szesnaste 4-bitowe słowo zawiera 0 jako znacznik zmiennej
numerycznej (w odróżnieniu od zmiennej łańcuchowej, gdzie ta wartość
jest różna od zera).
Przykłady:
A = 1 00 10 00 00 00 00 00 10 (1.00000000000E00)
A = -1 00 60 00 00 00 00 00 10 (-1.00000000000E00)
A = 100 20 10 00 00 00 00 00 10 (1.00000000000E02)
A = -100 20 60 00 00 00 00 00 10 (-1.00000000000E02)
A = PI 00 10 63 56 29 51 41 30 (3.14159265360E00)
A = -PI 00 60 63 56 29 51 41 30 (-3.14159265360E00)
A = 0.01 89 00 00 00 00 00 00 10 (1.00000000000E-02)
A = -0.01 89 50 00 00 00 00 00 10 (-1.00000000000E-02)
A = 1/3 99 03 33 33 33 33 33 30 (3.33333333333E-01)
A = -1/3 99 53 33 33 33 33 33 30 (-3.33333333333E-01)
Zmienna łańcuchowa $ może przechować do 30 znaków.
Łańcuch umieszczony w pamięci jest poprzedzony długością łańcucha i
zakończony znacznikiem $FF.
Przykład:
$ = "ABCDEFG"
70 02 12 22 32 42 52 62 FF
Wiersz programu BASIC rozpoczyna się numerem wiersza przechowywanym
w 2 bajtach (czterech 4-bitowych słowach), kończy się znacznikiem $FF.
Słowa kluczowe języka BASIC są przechowywane za pomocą jednobajtowych
kodów, wartości numeryczne jako ciąg znaków, dwukropki rozdzielające
kilka poleceń języka BASIC w jednym wierszu jako $FE.
Przykład:
1234 FOR I=1 TO 49 STEP 1: NEXT I
43 21 0A 82 C0 11 59 41 91 69 11 EF 1A 82 FF
Za każdym razem gdy wykonywana jest instrukcja FOR, na stosie FOR tworzona jest poniżej opisana struktura danych. Pozycja stosu jest zwalniana przez zaznaczanie jej za pomocą $F, gdy pętla iteracyjna zostanie zakończona. Dzięki poświęceniu jednego 4-bitowego słowa struktury na znacznik "lokacja wolna/zajęta" zbędny staje się wskaźnik stosu. Zamiast tego stos jest przeszukiwany w poszukiwaniu pierwszej wolnej/zajętej lokacji.
2 słowa dwie ostatnie cyfry wykładnika zmiennej TO
1 słowo pierwsza cyfra wykładnika i znak zmiennej TO
10 słów mantysa zmiennej TO
2 słowa indeks zmiennej sterującej pętli FOR
(00 = zmienna A, 10 = zmienna B i tak dalej)
1 słowo F - lokacja wolna, 2 - lokacja zajęta
2 słowa dwie ostatnie cyfry wykładnika zmiennej STEP
1 słowo pierwsza cyfra wykładnika i znak zmiennej STEP
10 słów mantysa zmiennej STEP
3 słowa adres pierwszego znaku po instrukcji FOR, jest
to miejsce gdzie skacze pętla iteracyjna NEXT
Przykład:
1234 FOR I=1 TO 49 STEP 1: NEXT I
10 wartość zmiennej TO = 4.90000000E01
1 mantysa i wykładnik dodatnie
0000000094
80 indeks zmiennej sterującej I
2 zaznaczona zajęta lokacja
00 wartość zmiennej STEP = 1.0000000E00
1 mantysa i wykładnik dodatnie
0000000001
662 wskazuje dwukropek po instrukcji STEP 1
Wykonanie instrukcji GOSUB powoduje umieszczenie na stosie opisanej poniżej struktury danych. Instrukcja RETURN zwalnia lokację na szczycie stosu przez zaznaczenie jej słowem $F. Podobnie jak dla FOR nie jest używany wskaźnik stosu.
3 słowa adres pierwszego znaku po instrukcji GOSUB
(miejsce powrotu dla RETURN)
1 słowo F - lokacja wolna, 3 - lokacja zajęta
$0000-$007F 128 słów bufor ogólnego przeznaczenia
$0080-$00FF 128 słów bufor ogólnego przeznaczenia
$0100-$010F 16 słów zmienna ANS
$0110-$011F 16 słów RAN# seed, początkowo 0.43429448190
$0120-$012F 16 słów pozycja znaku dla funkcji MID(
$0132-$0133 2 słowa dana wysyłana do drukarki
$0140-$01BF 128 słów stos dla FOR, mieści 4 wpisy, rośnie w górę
$01C0-$01DF 32 słowa stos dla GOSUB, mieści 8 wpisów, rośnie w górę
$01E0-$021D 64 słowa specjalna zmienna łańcuchowa $
$0220-$0E5F 3136 słów programy BASIC
$0E60-$0E6F 16 słów zmienna Z
$0E70-$0E7F 16 słów zmienna Y
. . .
. . .
. . .
$0FD0-$0FDF 16 słów zmienna C
$0FE0-$0FEF 16 słów zmienna B
$0FF0-$0FFF 16 słów zmienna A
Plik składa się z segmentu nazwy oraz jednego lub kilku segmentów danych.
Segment nazwy rozpoczyna się bajtem:
$Dx (plik utworzony za pomocą SAVE)
lub $Ex (plik utworzony za pomocą PUT)
lub $Fx (plik utworzony za pomocą SAVE A),
gdzie x jest długością nazwy pliku (do 8 znaków),
lub $F gdy plik bez nazwy.
Kolejnych 8 bajtów zawiera znaki nazwy pliku.
Ostatnie 2 bajty zawierają numer pierwszego wiersza programu w języku
BASIC zapisanego poleceniem SAVE.
Segment danych rozpoczyna się bajtem $02, kończy bajtem $F0 (gdy jest to ostatni segment) lub $F1 (gdy nastąpią jeszcze dalsze segmenty). Ilość bajtów danych pomiądzy nimi nie może przekroczyć 63, ponieważ zawartość jest wczytywana do 64-bajtowego bufora pod adresem $0000. To ograniczenie nie dotyczy plików zapisanych przez SAVE A, który zawiera tylko pojedynczy segment danych.
Plik zawierający program w języku BASIC składa się po prostu z ciągu następujących po sobie wierszy. Gdy plik został utworzony za pomocą polecenia SAVE A, każdy program jest zakończony bajtem $E0. Pusty program zawiera tylko bajt $E0.
Plik zapisany poleceniem PUT składa się z ciągu wartości zmiennych rozdzielonych znacznikiem $FF. Nazwy zmiennych nie są zapisywane.
1. Program zapisany poleceniem SAVE "PROG"
Segment nazwy:
$D4 $2F $31 $2E $26 $07 $FF $10 $FF $10 $00
Segment danych:
$02
$10 $00 $A0 $28 $0C $11 $95 $11 $10 $FF 10 FOR I=1 TO 10
$20 $00 $A6 $28 $FF 20 PRINT I
$30 $00 $A1 $28 $FF 30 NEXT I
$F0
2. Zmienna $ i zmienna numeryczna zapisana poleceniem PUT "*-+" $,A
Segment nazwy:
$E3 $03 $02 $01 $07 $09 $5D $20 $FF $00 $F8
Segment danych:
$02
$0D $11 $12 $13 $14 $15 $16 $17 $="1234567890ABC"
$18 $19 $10 $20 $21 $22 $FF $00
$01 $00 $00 $00 $00 $00 $00 $00
$01 $00 $00 $00 $00 $00 $00 $FF
$00 $01 $36 $65 $92 $15 $14 $03 A=3.14159265360
$F0
3. Programy zapisane poleceniem SAVE A "*"
Segment nazwy:
$F1 $03 $07 $FF $00 $00 $00 $00 $07 $00 $68
Segment danych:
$02
$01 $00 $A6 $FF $E0 P0: 1 PRINT
$10 $00 $A2 $11 $10 $FF $E0 P1: 10 GOTO 10
$E0 $E0 $E0 $E0 $E0 $E0 $E0 $E0
$F0