Tokeny Atari BASIC
From Atariki
Wersja z dnia 11:03, 5 lip 2007 Sq5irz (Dyskusja | wkład) (literówka) ← Previous diff |
Wersja z dnia 23:48, 22 lip 2015 Mono (Dyskusja | wkład) (→Tokeny operatorów, funkcji i zmiennych - lit.) Next diff → |
||
Linia 125: | Linia 125: | ||
<tr><td>$39</td><td>57</td><td>nawias otwierający wymiar zmiennej tablicowej</td></tr> | <tr><td>$39</td><td>57</td><td>nawias otwierający wymiar zmiennej tablicowej</td></tr> | ||
<tr><td>$3a</td><td>58</td><td>nawias otwierający argumenty funkcji</td></tr> | <tr><td>$3a</td><td>58</td><td>nawias otwierający argumenty funkcji</td></tr> | ||
- | <tr><td>$3b</td><td>59</td><td>nawiast otwierający wymiar zmiennej tekstowej</td></tr> | + | <tr><td>$3b</td><td>59</td><td>nawias otwierający wymiar zmiennej tekstowej</td></tr> |
<tr><td>$3c</td><td>60</td><td>przecinek w zmiennej tablicowej</td></tr> | <tr><td>$3c</td><td>60</td><td>przecinek w zmiennej tablicowej</td></tr> | ||
<tr><td>$3d</td><td>61</td><td>STR$</td></tr> | <tr><td>$3d</td><td>61</td><td>STR$</td></tr> |
Wersja z dnia 23:48, 22 lip 2015
Program w BASIC-u przechowywany jest w pamięci oraz w plikach BAS jako zbiór symboli, tak zwanych "tokenów". Dzielą się one na kilka grup w zależności od położenia w programie. Grupy te to:
- Numery wierszy programu. Numer oznaczający początek wiersza jest zakodowany w postaci dwubajtowej wartości całkowitej z zakresu od 0 do 32767. Wartość ta znajduje się na początku każdej linii programu. W pozostałych miejscach programu (np. jako numer po instrukcji GOTO) wartość ta zapisana jest w postaci zmiennoprzecinkowej.
- Offset do następnej linii programu. Jest to bajt występujący zaraz po numerze wiersza.
- Offset do następnej instrukcji - jest to jeden bajt występujący na początku każdej instrukcji.
- Tokeny instrukcji
- Tokeny operatorów i funkcji
- Tokeny zmiennych
Tokeny instrukcji
Token instrukcji to ośmiobitowa liczba o wartości z zakresu teoretycznie od 0 do 255, w praktyce od 0 do 55; konstrukcja interpretera wyklucza zastosowanie tokenów instrukcji o wartości ponad 127. Ich wartości przedstawia poniższa tabela:
Hex | Dec | Instrukcja |
$00 | 0 | REM |
$01 | 1 | DATA |
$02 | 2 | INPUT |
$03 | 3 | COLOR |
$04 | 4 | LIST |
$05 | 5 | ENTER |
$06 | 6 | LET |
$07 | 7 | IF |
$08 | 8 | FOR |
$09 | 9 | NEXT |
$0a | 10 | GOTO |
$0b | 11 | GO TO |
$0c | 12 | GOSUB |
$0d | 13 | TRAP |
$0e | 14 | BYE |
$0f | 15 | CONT |
$10 | 16 | COM |
$11 | 17 | CLOSE |
$12 | 18 | CLR |
$13 | 19 | DEG |
$14 | 20 | DIM |
$15 | 21 | END |
$16 | 22 | NEW |
$17 | 23 | OPEN |
$18 | 24 | LOAD |
$19 | 25 | SAVE |
$1a | 26 | STATUS |
$1b | 27 | NOTE |
$1c | 28 | POINT |
$1d | 29 | XIO |
$1e | 30 | ON |
$1f | 31 | POKE |
$20 | 32 | |
$21 | 33 | RAD |
$22 | 34 | READ |
$23 | 35 | RESTORE |
$24 | 36 | RETURN |
$25 | 37 | RUN |
$26 | 38 | STOP |
$27 | 39 | POP |
$28 | 40 | ? |
$29 | 41 | GET |
$2a | 42 | PUT |
$2b | 43 | GRAPHICS |
$2c | 44 | PLOT |
$2d | 45 | POSITION |
$2e | 46 | DOS |
$2f | 47 | DRAWTO |
$30 | 48 | SETCOLOR |
$31 | 49 | LOCATE |
$32 | 50 | SOUND |
$33 | 51 | LPRINT |
$34 | 52 | CSAVE |
$35 | 53 | CLOAD |
$36 | 54 | "domyślne" LET |
$37 | 55 | ERROR- (błąd składni) |
Tokeny o wartościach wyższych nie są zdefiniowane, napotkanie ich przez interpreter w trakcie wykonywania programu powoduje przeważnie zawieszenie komputera.
Tokeny operatorów, funkcji i zmiennych
Taki token to ośmiobitowa liczba z zakresu od 0 do 255, oznaczająca operator, funkcję lub zmienną. Tokeny operatorów i funkcji mają wartości od 0 do 127 (z czego Atari BASIC używa zakresu od 14 do 84), natomiast tokeny zmiennych - wartości od 128 do 255. Token zmiennej to oczywiście jej numer kolejny w tabeli wartości zmiennych, powiększony o 128. Jest to główny powód, dla którego program w Atari BASIC nie może mieć więcej niż 128 zmiennych.
Hex | Dec | Operator lub funkcja |
$0e | 14 | stała liczbowa |
$0f | 15 | stała tekstowa |
$10 | 16 | niewykorzystany |
$11 | 17 | niewykorzystany |
$12 | 18 | przecinek |
$13 | 19 | znak $ |
$14 | 20 | koniec instrukcji |
$15 | 21 | średnik |
$16 | 22 | koniec linii |
$17 | 23 | GOTO w instrukcji ON |
$18 | 24 | GOSUB w instrukcji ON |
$19 | 25 | TO |
$1a | 26 | STEP |
$1b | 27 | THEN |
$1c | 28 | znak # |
$1d | 29 | liczbowe "mniejszy lub równy" |
$1e | 30 | liczbowe "różny" |
$1f | 31 | liczbowe "większy lub równy" |
$20 | 32 | liczbowe "mniejszy" |
$21 | 33 | liczbowe "większy" |
$22 | 34 | liczbowe "równy" |
$23 | 35 | operator potęgowania ^ |
$24 | 36 | operator mnożenia * |
$25 | 37 | operator dodawania + |
$26 | 38 | operator odejmowania - |
$27 | 39 | operator dzielenia |
$28 | 40 | NOT |
$29 | 41 | OR |
$2a | 42 | AND |
$2b | 43 | nawias otwierający wyrażenie liczbowe |
$2c | 44 | nawias zamykający wyrażenie liczbowe |
$2d | 45 | operator przypisania wartości liczbowej = |
$2e | 46 | operator przypisania wartości tekstowej = |
$2f | 47 | tekstowe "mniejszy lub równy" |
$30 | 48 | tekstowe "różny" |
$31 | 49 | tekstowe "większy lub równy" |
$32 | 50 | tekstowe "mniejszy" |
$33 | 51 | tekstowe "większy" |
$34 | 52 | tekstowe "równy" |
$35 | 53 | + znak liczby |
$36 | 54 | - znak liczby |
$37 | 55 | nawias otwierający indeks w zmiennej tekstowej |
$38 | 56 | nawias otwierający indeks w zmiennej tablicowej |
$39 | 57 | nawias otwierający wymiar zmiennej tablicowej |
$3a | 58 | nawias otwierający argumenty funkcji |
$3b | 59 | nawias otwierający wymiar zmiennej tekstowej |
$3c | 60 | przecinek w zmiennej tablicowej |
$3d | 61 | STR$ |
$3e | 62 | CHR$ |
$3f | 63 | USR |
$40 | 64 | ASC |
$41 | 65 | VAL |
$42 | 66 | LEN |
$43 | 67 | ADR |
$44 | 68 | ATN |
$45 | 69 | COS |
$46 | 70 | PEEK |
$47 | 71 | SIN |
$48 | 72 | RND |
$49 | 73 | FRE |
$4a | 74 | EXP |
$4b | 75 | LOG |
$4c | 76 | CLOG |
$4d | 77 | SQR |
$4e | 78 | SGN |
$4f | 79 | ABS |
$50 | 80 | INT |
$51 | 81 | PADDLE |
$52 | 82 | STICK |
$53 | 83 | PTRIG |
$54 | 84 | STRIG |