Indeks | English version |
Liczby na tej stronie są w kodzie szesnastkowym, chyba że zanaczono inaczej.
Rysunek został wygenerowany programowo na podstawie danych wyciągniętych z pamięci ROM.
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 spacja 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
Każda zmienna (z wyjątkiem specjalnej zmiennej łańcuchowej $) zajmuje 8 bajtów (czyli 4 słowa) w pamięci RAM.
Zmienna łańcuchowa może przechowywać do 7 znaków.
Bardziej znaczący bajt pierwszego słowa zawiera wartość 60
identyfikującą zmienną łańcuchową.
Pozostałe bajty przechowują kody znaków.
Wolne miejsce wypełnione jest zerami.
Przykłady:
A$ = "" 6000 0000 0000 0000 A$ = "ABCD" 6041 4342 0044 0000 A$ = "1234567" 6031 3332 3534 3736
Zmienne numeryczne są przechowywane jako zmiennoprzecinkowe,
spakowane liczby dziesiętne.
Struktura pierwszego słowa:
Kolejne trzy słowa zawierają mantysę o wartości w przedziale
.100000000000 do .999999999999 w spakowanym formacie BCD.
Przykłady:
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)
Zmienna łańcuchowa $ może przechować do 30 (dziesiętnie)
znaków.
Łańcuch umieszczony w pamięci jest zakończony zerem.
Przykład:
$ = "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 słowo identyfikator 2000 1 słowo adres końca pamięci przechowującej zmienną 2 słowa nie używane
Na przykład zmienna A jest zapisywana jako 2000 8800 0000 0000.
1 słowo identyfikator 4000 1 słowo adres końca pamięci przechowującej zmienną 1 słowo długość łańcucha 1 słowo nie używane
Na przykład zmienna A$ zawierająca łańcuch "ABCD" jest zapisywana jako 4000 8800 0004 0000.
1 słowo identyfikator 4001 1 słowo adres zmiennej 814E 1 słowo długość łańcucha 1 słowo nie używane
Na przykład zmienna $ zawierająca łańcuch "ABCDEF" jest zapisywana jako 4001 814E 0006 0000.
Obowiązuje ten sam format jak dla liczb zapisywanych w zmiennych numerycznych.
1 słowo identyfikator 4080 1 słowo adres łańcucha 1 słowo długość łańcucha 1 słowo nie używane
Wiersz programu BASIC rozpoczyna się numerem wiersza w formacie
binarnym, przechowywanym w 2 bajtach, kończy się
znacznikiem 00.
Słowa kluczowe języka BASIC są przechowywane za pomocą jednobajtowych
kodów, wartości numeryczne jako ciąg znaków.
Przykład:
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
Za każdym razem gdy wykonywana jest instrukcja FOR, na stosie FOR tworzona jest poniżej opisana struktura danych. Nie ma wskaźnika stosu, zamiast tego FOR szuka pierwszej wolnej lokacji (skasowanej zerami). NEXT sprawdza kolejno wszystkie lokacje stosu w poszukiwaniu pasującej zmiennej sterującej.
4 słowa wartość STEP 4 słowa wartość TO 1 słowo adres pierwszego znaku po instrukcji FOR, jest to miejsce gdzie skacze pętla iteracyjna NEXT 1 słowo adres zmiennej sterującej lub 0000 gdy wpis wolny
Wykonanie instrukcji GOSUB powoduje umieszczenie adresu powrotu
(adresu pierwszego znaku po instrukcji GOSUB) na pierwszym stosie
GOSUB, oraz adresu początku linii na drugim stosie GOSUB.
Instrukcja RETURN zwalnia lokację na szczycie stosu przez zaznaczenie
jej wartością 0000.
Podobnie jak dla FOR nie jest używany wskaźnik stosu.
8000-805F 60 bajtów pamięć wyświetlacza 8060-812B 66 słów stos systemowy używany również jako bufor obsługi błędów (zaczyna się od adresu 8060, 40 bajtów) 812C-814D 22 słowa stos przetwarzanych wyrażeń, przechowuje kody operatorów, rośnie w dół używany również jako bufor łączonych łańcuchów (zaczyna się od adresu 812F, 1F bajtów) również łacuch zwracany przez klawisz ANS 814E-816C 1F bajtów zmienna łańcuchowa $ 816D-81AC 40 bajtów bufor edycji 81AD-81B3 7 bajtów znak definiowany przez użytkownika 81B4-81C3 8 słów pierwszy stos GOSUB dla adresów powrotów, miejsce na 8 wpisów, rośnie w górę 81C4-81D3 8 słów drugi stos GOSUB dla adresów początków linii, miejsce na 8 wpisów, rośnie w górę 81D4-8223 28 słów stos FOR, miejsce na 4 wpisy, rośnie w górę 8224-822B 4 słowa zmienna ANS 822C-823F A słów końcowe adresy programów BASIC numer 0-9 8240 8242-8243 1 słowo kod obrabianej komendy/funkcji/operatora 8244-8247 2 słowa lokalne tymczasowe zmienne 8248-8249 1 słowo wskaźnik stosu przetwarzanych wyrażeń 824A 824C 824E-824F 1 słowo RAN# seed 8250-8251 1 słowo ilość zmiennych, inicjowane na 1A 8252-8253 1 słowo adres końca pamięci RAM 8254-8255 1 słowo pozycja błędu 8256-8257 1 słowo tryb pracy 8258-8259 1 słowo adres skoku pośredniego (gdzie kontynuować wykonanie programu po STOP) również lokalana tymczasowa zmienna 825A-825B 1 słowo licznik programu BASIC również lokalana tymczasowa zmienna 825C-825D 1 słowo adres początku bieżącej linii programu BASIC 825E-825F 1 słowo poprzedni stan klawiatury 8260-8261 1 słowo wskaźnik do bufora edycji 816D 8262-8263 1 słowo stan klawiatury 8264-8265 1 słowo znaczniki 8266 1 bajt timer dla klawiatury 8267 1 bajt precyzja wydruku liczb 8268 1 bajt wybrany program 8269 1 bajt pozycja kursora 826A 1 bajt licznik nieudanych prób zidentyfikowania wciśniętego klawisza
Od adresu 826B zaczynają się programy w języku BASIC.
Zmienne zajmują koniec pamięci RAM, zmienna A zajmuje najwyższy
adres.