Mały PODSTAWOWY - Tiny BASIC

Mały PODSTAWOWY
Zaprojektowany przez Dennis Allison
Po raz pierwszy pojawiły się 1975
Język implementacji IL (język interpretacyjny)
Licencja Domena publiczna
Dialekty
Denver Tiny BASIC, Enhanced 6800 Tiny BASIC, MINOL, National Industrial Basic Language, Palo Alto Tiny BASIC, 6800 Tiny BASIC, TBI68K, Tiny BASIC Extended
Wpływem
Dartmouth BASIC , 8008 BASIC
Pod wpływem
Astro BASIC , Atari BASIC , Poziom I BASIC

Tiny BASIC to rodzina dialektów w BASIC język programowania , który zmieści się na 4 lub mniej KBs z pamięci . Tiny BASIC został zaprojektowany w odpowiedzi na list otwarty opublikowany przez Billa Gatesa, skarżący się na piractwo Altair BASIC , który sprzedawał się za 150 dolarów. Tiny BASIC miał być całkowicie darmową wersją BASIC-a, która działałaby na tych samych wczesnych mikrokomputerach .

Tiny BASIC został wydany jako specyfikacja, a nie implementacja, opublikowany we wrześniowym wydaniu biuletynu People's Computer Company (PCC) z września 1975 roku . Artykuł zaprosił programistów do zaimplementowania go na swoich komputerach i odesłania powstałej implementacji języka asemblera w celu włączenia do serii trzech planowanych biuletynów. Dr Li-Chen Wang , autor Palo Alto Tiny BASIC, ukuł termin „ copyleft ”, aby opisać tę koncepcję. Reakcja społeczności była tak przytłaczająca, że ​​biuletyn został ponownie wydany jako Dr Dobb's Journal , pierwszy regularny periodyk skupiający się na oprogramowaniu mikrokomputerowym. Dr Dobb's przetrwał w formie drukowanej przez 34 lata, a następnie online do 2014 roku.

Mały rozmiar i darmowy kod źródłowy sprawiły, że implementacje te stały się nieocenione we wczesnych dniach mikrokomputerów w połowie lat 70., kiedy pamięć RAM była droga, a typowa wielkość pamięci wynosiła tylko 4 do 8 KB. Podczas gdy minimalna wersja Microsoft Altair BASIC również działała na maszynach 4 KB, pozostawiała tylko 790 bajtów wolnych dla programów BASIC. Dużą zaletą Tiny BASIC była większa ilość wolnego miejsca. Aby sprostać tym ścisłym ograniczeniom rozmiaru, dialekty Tiny BASIC generalnie nie posiadały różnych cech powszechnie spotykanych w innych dialektach, na przykład większość wersji nie zawierała zmiennych łańcuchowych , matematyki zmiennoprzecinkowej i dopuszczała tylko jednoliterowe nazwy zmiennych.

Implementacje Tiny BASIC są nadal używane do programowania mikrokontrolerów, takich jak Arduino .

Historia

Altair BASIC

Taśma papierowa zawierająca rozszerzoną wersję 8k Micro-Soft BASIC.

Najwcześniejsze mikrokomputery , takie jak MITS Altair 8800 , generalnie nie miały wbudowanego wejścia/wyjścia (I/O) poza przełącznikami na panelu przednim i lampami LED . Przydatna praca zwykle wymagała dodania karty rozszerzeń we/wy i użycia jakiejś formy terminala . W tamtych czasach terminale wideo były bardzo drogie, znacznie więcej niż sam komputer, więc wielu użytkowników zdecydowało się na urządzenia mechaniczne, takie jak Teletype Model 33 . Model 33, podobnie jak większość teledrukarek tamtych czasów, zawierał system taśmy dziurkowanej, który miał umożliwiać operatorom wstępne nagrywanie wiadomości, a następnie odtwarzanie ich z „szybką prędkością”, szybciej niż pisanie wiadomości na żywo. W przypadku wczesnych mikrokomputerów zapewniało to wygodny format przechowywania danych komputerowych , umożliwiający użytkownikom pisanie programów na taśmie papierowej i rozpowszechnianie ich wśród innych użytkowników.

Homebrew Computer Club spotkała się po raz pierwszy w marcu 1975 roku, a jej członkowie szybko wykorzystali spotkania do wymiany oprogramowania na taśmy dziurkowanej. Na czerwcowym spotkaniu zniknęła taśma zawierająca przedpremierową wersję Altair BASIC . Taśma została przekazana Steve'owi Dompierowi, który przekazał ją Danowi Sokolowi, który miał dostęp do szybkiego dziurkowania taśmy. Na kolejnym spotkaniu w kartonowym pudełku pojawiło się 50 kopii Altair BASIC na taśmie papierowej. Kiedy Ed Roberts , założyciel MITS, dowiedział się o tym, stwierdził: „Każdy, kto używa skradzionej kopii MITS BASIC, powinien przedstawić się jako złodziej”. Bill Gates uczynił to bardziej formalnym, pisząc swój list otwarty do hobbystów , skarżąc się, że „Jak większość hobbystów musi być tego świadoma, większość z was kradnie oprogramowanie”.

Mały PODSTAWOWY

Skarga nie została dobrze przyjęta. Wśród wielu odpowiedzi Bob Albrecht, inny członek Homebrew i założyciel People's Computer Company (PCC), uznał, że najlepszą odpowiedzią będzie stworzenie własnego BASIC-a, z którego każdy może korzystać za darmo. Zwrócił się do Dennisa Allisona , członka wydziału Informatyki na Uniwersytecie Stanforda , aby napisał specyfikację wersji BASIC, która zmieściłaby się w 2 do 3 kilobajtach pamięci. Aby ułatwić przenoszenie , projekt oparto na języku pośrednim (IL), interpretatorze dla interpretera, co oznaczało, że tylko niewielka część całego kodu musiała zostać przeniesiona.

Wstępny projekt Allison został opublikowany w biuletynie PCC z września 1975 r., wraz z wersją interpretera IL dla Intel 8080 . Artykuł wezwał programistów do zaimplementowania projektu na swoich komputerach i przesłania powstałej wersji językowej asemblera z powrotem do PCC. Zadeklarowali swoje plany opublikowania trzech specjalnych biuletynów zawierających te wersje przesłane przez użytkowników, wraz z poprawkami błędów, programami napisanymi w nowym języku BASIC oraz sugestiami i ulepszeniami. Koncepcja zyskała większą uwagę, gdy została ponownie opublikowana w styczniu 1976 r. Wydanie ACM Special Interest Group on Programming Languages. Napłynęły zgłoszenia. Wśród godnych uwagi wczesnych wersji był Tiny BASIC Extended autorstwa Dicka Whipple'a i Johna Arnolda, który działał w 3K pamięci RAM, dodał pętle FOR...NXT i pozwalał na pojedynczą tablicę numeryczną. Uniknęli użycia IL i napisali go bezpośrednio w kodzie maszynowym, używając ósemkowej .

Pierwszy z trzech planowanych biuletynów, zatytułowany „Dr. Dobb's Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte”, został opublikowany w styczniu 1976 r. Zaczyna się notatką Albrechta pod pseudonimem „smok”, zasugerował, że trzy edycje nie wystarczą, i zapytał czytelników, czy chcieliby, aby była kontynuowana. Przedrukowano również oryginalny artykuł na temat Tiny BASIC z PCC, zawierał pełną listę Extended TB i zawierał szereg małych programów w języku BASIC, w tym porady i wskazówki firmy Allison. Reakcja na pierwszy numer była tak imponująca, że ​​we wstępie do drugiego numeru stwierdzono, że zdecydowano już o kontynuowaniu wydawania nowego biuletynu pod uproszczoną nazwą Dr. Dobb's Journal . W ciągu kilku następnych numerów opublikowano dodatkowe wersje języka, a podobne artykuły zaczęły pojawiać się w innych magazynach, takich jak Interface Age .

Szerzyć się

Czcionka o stałej szerokości brzmi: „Tiny basic for Intel 8080, wersja 2.0 autorstwa Li-Chen Wang, zmodyfikowana i przetłumaczona na mnemotechnikę Intela przez Rogera Rauskloba, 10 października 1976 r. @ Copyleft, All Wrongs Reserved”.
Użycie „Copyleft; All Wrongs Reserved” w 1976 r.

W połowie 1976 roku interpretery Tiny BASIC były dostępne dla procesorów Intel 8080 , Motorola 6800 i MOS Technology 6502 . To był zwiastun wspólnego rozwoju społeczności wolnego oprogramowania, zanim Internet umożliwił łatwe przesyłanie plików, i był przykładem projektu wolnego oprogramowania przed ruchem wolnego oprogramowania . Hobbyści komputerowi wymieniali się papierowymi taśmami, kasetami, a nawet przepisywali pliki z wydrukowanych ofert.

Jim Warren, redaktor Dr. Dobb's , napisał w biuletynie ACM Programming Language z lipca 1976 r. o motywacjach i metodach tego udanego projektu. Zaczął od tego: „Istnieje realna alternatywa dla problemów poruszonych przez Billa Gatesa w jego zirytowanym liście do hobbystów komputerowych dotyczącym „zdzierania” oprogramowania. Gdy oprogramowanie jest darmowe lub tak tanie, że łatwiej za nie zapłacić niż powielać to nie zostanie „skradzione”. List Billa Gatesa został napisany w celu przekształcenia oprogramowania w produkty . Alternatywną metodą było zlecenie doświadczonego profesjonalisty, który wykona ogólny projekt, a następnie nakreśli strategię wdrożenia. Doświadczeni amatorzy zaimplementowaliby projekt dla różnych systemów komputerowych. Warren przewidział, że ta strategia będzie kontynuowana i rozszerzona.

Kwestia maja 1976 Dr Dobbs miał Li-Chen Wang „s Palo Alto Tiny BASIC do 8080. Debiut zaczął ze zwykłymi tytuł, nazwisko autora i daty, ale także miał«@COPYLEFT WSZYSTKIE krzywd zastrzeżone». Kolega z Homebrew Computer Club , Roger Rauskolb, zmodyfikował i ulepszył program Li-Chen Wanga, co zostało opublikowane w grudniowym numerze magazynu Interface Age z 1976 roku . Roger dodał swoje imię i zachował COPYLEFT Notice.

Opis

Podstawowe koncepcje

Zobacz tłumacze BASIC

Tiny BASIC został zaprojektowany tak, aby zużywać jak najmniej pamięci, co znajduje odzwierciedlenie w niedostatku funkcji, a także w szczegółach systemu interpretera . Wczesnym mikrokomputerom brakowało pamięci RAM i dodatkowej pamięci dla kompilatora BASIC , co było bardziej typowe dla systemów z podziałem czasu.

Jak większość BASIC-ów tamtych czasów, Tiny Basic był interaktywny z użytkownikami wpisującymi wyrażenia w wierszu poleceń. Ponieważ mikrokomputery tamtych czasów były często używane z dalekopisami lub „głupimi” terminalami, bezpośrednia edycja istniejącego tekstu nie była możliwa, a edytor zamiast tego używał znaków na wynos, często odwrotnego ukośnika, aby wskazać, gdzie użytkownik wykonał kopię zapasową, aby edytować istniejący tekst.

Jeśli użytkownik wpisał instrukcję w wierszu poleceń, system sprawdził, czy zaczyna się od liczby. Jeśli tak się nie stało, linia była natychmiast analizowana i obsługiwana, potencjalnie generując dane wyjściowe przez PRINT. Było to znane jako „tryb bezpośredni”.

Jeśli wiersz został wprowadzony z liczbą wiodącą, liczba została przekonwertowana z formatu dziesiętnego, np. „50”, i przekonwertowana na wartość 8-bitową, w tym przypadku 32 USD szesnastkową . Ta liczba była używana jako indeks do podobnego do tablicy obszaru przechowywania, w którym pozostała część linii była przechowywana w dokładnie takim formacie, w jakim została wpisana. Gdy użytkownik wpisał LISTw wierszu poleceń, system zapętlił się po tablicy, przekonwertował numer wiersza z powrotem na format dziesiętny, a następnie wydrukował resztę tekstu w wierszu.

Gdy program był obecny w pamięci i użytkownik wpisze RUNpolecenie, system przechodzi w „tryb pośredni”. W tym trybie wskaźnik jest ustawiony tak, aby wskazywał na pierwszą linię programu, na przykład 10 ($0A hex). Oryginalny tekst dla tej linii jest następnie pobierany ze sklepu i uruchamiany tak, jakby użytkownik właśnie wpisał go w trybie bezpośrednim. Wskaźnik przechodzi następnie do następnej linii, a proces jest kontynuowany.

Gramatyka formalna

Gramatyka jest wymieniona poniżej w formie Backus-Naur , prawie dokładnie tak, jak została określona w nocie projektowej. Na liście gwiazdka (" * ") oznacza zero lub więcej obiektów po lewej stronie — z wyjątkiem pierwszej gwiazdki w definicji " terminu ", która jest operatorem mnożenia; nawiasy grupowe; a epsilon (" ε ") oznacza pusty zbiór. Jak to zwykle bywa w notacji gramatycznej języka komputerowego, pionowa kreska („ | ”) rozróżnia alternatywy, podobnie jak ich wypisanie w osobnych wierszach. Symbol " CR " oznacza powrót karetki (zwykle generowany przez klawisz "Enter" na klawiaturze). PRZERWA z konsoli spowoduje przerwanie wykonywania programu.

    line ::= number statement CR | statement CR
 
    statement ::= PRINT expr-list
                  IF expression relop expression THEN statement
                  GOTO expression
                  INPUT var-list
                  LET var = expression
                  GOSUB expression
                  RETURN
                  CLEAR
                  LIST
                  RUN
                  END
 
    expr-list ::= (string|expression) (, (string|expression) )*
 
    var-list ::= var (, var)*
 
    expression ::= (+|-|ε) term ((+|-) term)*
 
    term ::= factor ((*|/) factor)*
 
    factor ::= var | number | (expression)
 
    var ::= A | B | C ... | Y | Z
 
    number ::= digit digit*
 
    digit ::= 0 | 1 | 2 | 3 | ... | 8 | 9
 
    relop ::= < (>|=) | > (<|=) | =

    string ::= " ( |!|#|$ ... -|.|/|digit|: ... @|A|B|C ... |X|Y|Z)* "

Zauważ, że ciąg nie został zdefiniowany w uwadze do projektu.

Składnia to tak proste, jak to było, dodaje jedną innowację: GOTOa GOSUBmoże trwać wyrażenie, a nie tylko numer linii, zapewniając przypisany GOTO zamiast z instrukcji switch z następujących GOTO/GOSUB ... OF ..., strukturę następnie obsługiwana w HP Time-Shared BASIC i sprzed ON ... GOTO. Składnia zezwalająca IF-THEN statement(w przeciwieństwie do numeru linii do rozgałęzienia) nie była jeszcze obsługiwana w Dartmouth BASIC jak tym razem, ale została wprowadzona przez Digital i skopiowana przez Microsoft.

Implementacja w maszynie wirtualnej

Nota projektowa określiła maszynę wirtualną , w której interpreter Tiny BASIC sam jest uruchamiany na interpreterze maszyny wirtualnej. Pomysł projektanta na wykorzystanie wirtualnej maszyny aplikacji sięga Val Schorre (z META II , 1964) i Glennie (Maszyna Syntax). Wybór podejścia z maszyną wirtualną oszczędził miejsce w pamięci i nakłady na implementację, chociaż uruchamiane na niej programy w języku BASIC były wykonywane nieco wolniej.

Dialekty, które używały maszyny wirtualnej to Tiny BASIC Extended, Tiny BASIC Toma Pittmana i NIBL. Inne dialekty, takie jak Denver Tiny BASIC (DTB) i Palo Alto Tiny BASIC, były bezpośrednimi tłumaczami. Niektórzy programiści, jak Fred Greeb z DTB, traktuje program IL (Interpretive Language) jako Pseudokod dla algorytmu realizacji w asemblerze; Denver Tiny BASIC nie używał maszyny wirtualnej, ale ściśle przestrzegał programu IL.

Oto reprezentatywny fragment 120-liniowego programu IL:

S1:  TST     S3,'GO'       ;GOTO OR GOSUB?
     TST     S2,'TO'       ;YES...TO, OR...SUB
     CALL    EXPR          ;GET LABEL
     DONE                  ;ERROR IF CR NOT NEXT
     XFER                  ;SET UP AND JUMP
S3:  TST     S8,'PRINT'    ;PRINT.

Typowym wzorcem w programie jest testowanie słowa kluczowego lub jego części, a następnie działanie na tej informacji. Każdy test jest potwierdzeniem tego, co jest dalej w buforze wiersza. Jeśli potwierdzenie się nie powiedzie, formant przeskakuje do kolejnej etykiety (zwykle szuka nowego słowa kluczowego lub tokenu). Tutaj system przesuwa swój kursor bufora nad wszelkie spacje i testuje GO, a jeśli go nie znajdzie, przeskakuje do wiersza S3 . Jeśli go znajdzie, wykonanie będzie kontynuowane z następnym poleceniem IL. W tym przypadku system następnie testuje TO , przeskakując do wiersza S2, jeśli się nie powiedzie (test na SUB , aby sprawdzić, czy zamiast tego jest to polecenie GOSUB ). Jeśli przejdzie, kontrola jest kontynuowana; w tym przypadku wywołanie podprogramu IL, który zaczyna się od etykiety WYRAŻ , która analizuje wyrażenie. W Tiny BASIC GOTO X*10+100(obliczone GO TO) jest tak samo legalne GOTO 100i stanowi alternatywę dla ON-GOTO większych implementacji BASIC. Podprogram WYRAŻ odkłada wynik wyrażenia na stos arytmetyczny (w tym przypadku numer wiersza). DONE weryfikuje, czy po wyrażeniu nie występuje żaden inny tekst, a jeśli tak jest, wyświetla błąd. XFER zdejmuje numer ze stosu i przenosi wykonanie (GOes TO) na odpowiedni numer wiersza, jeśli istnieje.

Poniższa tabela zawiera częściową listę 32 poleceń maszyny wirtualnej, w której został napisany pierwszy interpreter Tiny BASIC.

TST lbl , ciąg
Jeśli łańcuch pasuje do linii BASIC, przesuń kursor nad łańcuch i wykonaj następną instrukcję IL; jeśli test się nie powiedzie, wykonaj instrukcję IL na etykiecie lbl
CALL LBL
Wykonaj podprogram IL zaczynając od lbl ; zapisz adres IL po wywołaniu na stosie kontrolnym;
GOTOWE
Zgłoś błąd składni, jeśli po usunięciu wiodących spacji kursor nie jest ustawiony tak, aby osiągnąć powrót karetki
XFER
Sprawdź, czy wartość na górze stosu AE jest w zakresie. Jeśli nie, zgłoś błąd. Jeśli tak, spróbuj ustawić kursor na tej linii. Jeśli istnieje, rozpocznij interpretację tam; jeśli nie, zgłoś błąd.
SKOK IBL
Kontynuuj wykonywanie IL na określonej etykiecie
RTN
Wróć do lokalizacji IL określonej na górze stosu kontrolnego
PRS
Drukuj znaki z tekstu BASIC aż do zamykającego cudzysłowu, ale bez niego
PRN
Wydrukuj liczbę uzyskaną przez otwarcie wierzchołka stosu wyrażeń
SPC
Wstaw spacje, aby przesunąć głowicę drukującą do następnej strefy
NLINE
Wyślij CRLF do drukarki

Tom Pittman, omawiając IL, mówi: „Interpreter TINY BASIC został zaprojektowany przez Dennisa Allisona jako rekurencyjny parser zstępujący . Część eleganckiej prostoty tego projektu została utracona przez dodanie cukru syntaktycznego do języka, ale podstawowa forma pozostała. IL jest szczególnie odpowiedni do parsowania rekurencyjnego TINY BASIC ze względu na ogólną rekurencyjną naturę jego procedur i prostotę tokenów TINY BASIC.Język IL jest skutecznie zoptymalizowany pod kątem interpretacji TINY.Doświadczenie pokazuje, że trudność w dodawaniu Nowe funkcje w języku są nieproporcjonalne do charakteru funkcji. Zwykle konieczne jest dodanie dodatkowych podprogramów języka maszynowego w celu obsługi nowych funkcji. Często trudność przeważa nad zaletami."

Odchylenia od projektu

Definiując Tiny BASIC dla Homebrew Computer Club, Pittman napisał: „Tiny BASIC jest właściwym podzbiorem Dartmouth BASIC, składającym się tylko z następujących typów instrukcji: LET, PRINT, INPUT, IF, GOTO, GOSUB, RETURN, END, CLEAR, LIST , RUN.Arytmetyka jest w 16-bitowych liczbach całkowitych tylko z operatorami + - * / i zagnieżdżonymi nawiasami.Istnieje tylko 26 jednoliterowych nazw zmiennych A,B,...Z i żadnych funkcji.Nie ma łańcuchów ani tablic ... Tiny BASIC określa numery linii mniejsze niż 256." Następnie opisał swoją implementację: „Język ten został rozszerzony o funkcje RND, USR oraz PEEK i POKE, dając użytkownikowi dostęp do wszystkich komponentów jego systemu w 6800 z programu BASIC”.

Wielu realizatorów wniosło do swoich projektów własne doświadczenia z HP Time-Shared BASIC lub DEC BASIC-PLUS i złagodziło formalną specyfikację języka Tiny BASIC. Spośród siedmiu wybitnych wdrożeń opublikowanych do 1977 roku:

  • Wszyscy dodali jakiś rodzaj funkcji liczb losowych, zwykle RND() . Chociaż nie jest to uwzględnione w specyfikacji, artykuł w biuletynie poprzedzającym notę ​​projektową dla Tiny BASIC wymagał tylko tej funkcji.
  • Wszystkie włączone LET są opcjonalne, a większość wyrażeń let w instrukcjach przypisania zawiera operatory relacyjne .
  • Wszystkie oprócz 6800TB obsługiwane ograniczniki instrukcji w wierszach, zazwyczaj : chociaż TBX używał $ i używał PATB ; .
  • W instrukcjach IF wszystkie oprócz MINOL usunęły potrzebę, aby wyrażenia zawierały operatory relacyjne (np. było poprawne). Implementacje całkowicie usunięto THEN lub uczyniły to opcjonalne lub wspierały tylko domyślnie GOTO .IF X THEN LET Y=X
  • Wiele zmodyfikowało PRINT do obsługi stref drukowania, używając ,do przejścia do następnej strefy i ;nie przesuwania kursora.
  • Wszystko oprócz 6800 TB i DTB dodane NOWOŚĆ .
  • Wszystkie oprócz 6800TB i MINOL dodały funkcję zwracającą rozmiar pamięci: TBX miał SZE , DTB i PATB miał SIZE , L1B miał MEM , a NIBL ​​miał TOP .
  • Cztery implementacje dodały macierze, niezależnie od tego, czy jest to pojedyncza, niewymiarowana macierz w PATB i L1B, czy też macierze z opcją DIM w TBX i DTB.
  • Cztery implementacje dodały instrukcję REM ark.
  • Cztery implementacje dodały pętlę FOR : PATB, NIBL ​​i L1B oferowały FOR-TO-STEP/NEXT , podczas gdy TBX nie wspierał STEPi używał słowa kluczowego NXTdo zakończenia pętli.
  • Tylko NIBL ​​miał jakikolwiek ukłon w stronę programowania strukturalnego, z DO/UNTIL , pomimo lamentu Allison w wydaniu 2 na temat problemów z BASIC.

Jako alternatywę dla tokenizacji, aby zaoszczędzić RAM, TBX, DTB i MINOL, obcięte słowa kluczowe: PR dla PRINT , IN dla INPUT , RET dla RETURN . Pełne, tradycyjne słowa kluczowe nie zostały zaakceptowane. W przeciwieństwie do tego, PATB zezwala na akceptowalne tradycyjne słowa kluczowe, ale pozwala również na skracanie dowolnego słowa kluczowego do minimalnego unikalnego ciągu z kropką na końcu. Na przykład PRINT można wpisać P. , chociaż PR. i inne wariacje również działały. System ten został zachowany w Level I BASIC dla TRS-80 , który używał PATB , a później został również znaleziony w Atari BASIC i BASIC różnych komputerów kieszonkowych Sharp .

Dialekty

Najbardziej znanymi dialektami Tiny BASIC były oryginalne Design Note, Tiny BASIC Extended, Palo Alto Tiny BASIC i 6800 Tiny BASIC. Jednak istniało wiele innych wersji Tiny BASIC.

Lista znanych dialektów

Tiny BASIC został po raz pierwszy opublikowany w biuletynie wydawanym przez People's Computer Company , który przekształcił się w Dr. Dobb's Journal , długowieczny magazyn komputerowy. W czasopiśmie ukazało się około dziesięciu wersji.

Wybitne dialekty Tiny BASIC (w Dzienniku dr Dobba)
Data opublikowania Wydanie Dialekt Autor Edytor Rozmiar
grudzień 1975 1 Uwaga projektowa Dennis Allison Nie dotyczy Nie dotyczy
Luty 1976 2 Mały BASIC Rozszerzony (TBX) Dick Whipple & John Arnold 8080 2,9 tys
Marzec 1976 3 Denver Tiny BASIC (DTB) Fred Greeb 8080 2,75 tys
Marzec 1976 3 6800 Mały PODSTAWOWY (6800 TB) Tom Pittman 6800 2K
Kwiecień 1976 4 MINOL Eric T. Mueller 8080 1,75 tys
maj 1976 5 Palo Alto Tiny BASIC (PATB) Li-Chen Wang 8080 1,77 tys
Listopad 1976 10 Krajowy podstawowy język przemysłowy (NIBL) Mark Alexander & Steve Leininger SC/MP 4K
Październik 1980 49 Ulepszony 6800 Tiny BASIC Robert Hudson 6800 Nie dotyczy
Luty 1985 100 TBI68K Gordon Brandly 68000 Nie dotyczy
styczeń 2006 351 Powrót Tiny BASIC Tom Pittman Nie dotyczy ( C ) Nie dotyczy

TBX był również znany jako Texas Tiny BASIC.

Zarówno SCELBAL, jak i 6800 Tiny BASIC zostały ogłoszone w magazynie, ale nie opublikowali swojego kodu źródłowego.

Palo Alto Tiny PODSTAWOWE

Palo Alto Tiny PODSTAWOWE
Deweloper Li Chen Wang
Po raz pierwszy pojawiły się 1976
Licencja Domena publiczna
Dialekty
Podstawowe sterowanie 3K
Wpływem
Uwaga dotycząca projektu Tiny BASIC, rozszerzona wersja Tiny BASIC
Pod wpływem
Astro BASIC , Poziom I BASIC , Sharp PC-1211 BASIC

Jedną z najpopularniejszych z wielu wersji Tiny BASIC był Palo Alto Tiny BASIC, w skrócie PATB, autorstwa Li-Chen Wang . PATB po raz pierwszy pojawił się w wydaniu Dr. Dobbsa z maja 1976 r. , napisanym w niestandardowym języku asemblera z niestandardowymi mnemotechnikami. Doprowadziło to do powstania kolejnych portów, które współpracowały z konwencjonalnymi asemblerami na 8080. Pierwsza wersja interpretera zajmowała 1,77 kilobajta pamięci i zakładała użycie Teletype Machine (TTY) do wejścia/wyjścia użytkownika . Errata do oryginalnego artykułu pojawiła się w czerwcowo-lipcowym wydaniu Dr Dobb's (t. 1, nr 6). W tym artykule zawarto również informacje na temat dodawania dodatkowych urządzeń we/wy na przykładzie kodu wyświetlania wideo VDM firmy Processor Technology .

Wang był jednym z pierwszych, którzy użyli słowa copyleft . W zawiadomieniu o dystrybucji Palo Alto Tiny BASIC napisał „@COPYLEFT ALL WRONGS RESERVED”. Tiny BASIC nie był rozpowszechniany pod żadną formalną formą dystrybucji typu copyleft, ale został przedstawiony w kontekście współdzielenia i modyfikowania kodu źródłowego. W rzeczywistości Wang wcześniej edytował Tiny BASIC Extended, zanim napisał własny interpreter. Zachęcał innych do dostosowywania swojego kodu źródłowego i publikowania własnych adaptacji, tak jak w przypadku wersji PATB Rogera Rauskolba opublikowanej w Interface Age . On sam opublikował trzecią wersję w PCC Reference Book of Personal and Home Computing .

Jedną z najważniejszych zmian w PATB jest dodanie pętli FOR...NEXT . W oryginalnej TB pętle można było zaimplementować tylko przy użyciu IFi GOTO. Podobnie jak w Microsoft BASIC , górna i dolna granica pętli były ustawiane przy wejściu do pętli i nie zmieniały się podczas wykonywania pętli, więc jeśli jedna z granic była oparta na wyrażeniu zmiennej, zmiana zmiennej nie zmieniała granicy. STEPModyfikatora była opcjonalna, jak na MS.

Kolejną istotną zmianą była możliwość umieszczenia kilku stwierdzeń w jednym wierszu. Z niewyjaśnionych powodów, PATB użył średnika ;do oddzielenia zdań, zamiast już wspólnego dwukropka :.

Inne zmiany obejmują dodanie jednej tablicy numerycznej z nazwą zmiennej @, STOPoprócz END, oraz wykorzystania #dla nie-równa się w porównaniach, w przeciwieństwie do <>.

PATB używał słów do komunikatów o błędach zamiast liczb. Aby zmniejszyć ilość wymaganej pamięci, były tylko trzy wiadomości i składały się z pojedynczych słów. System odpowiadałby w WHAT?przypadku błędów składniowych, błędów HOW?w czasie wykonywania, takich jak GOTO, w przypadku nieistniejącego wiersza lub przepełnień liczbowych oraz w SORRYprzypadku problemów z brakiem pamięci.

Wang napisał także program STARTREK w swoim Tiny BASIC, który ukazał się w lipcowym wydaniu biuletynu People's Computer Company Newsletter z lipca 1976 roku .

Później zaadaptował język do 3K Control Basic dla Cromemco , dodając nazwy zmiennych w postaci litery-cyfra (np. A0do Z9), funkcje logiczne ( AND(), OR(), XOR()), CALLpolecenia do wykonywania procedur języka maszynowego, więcej PRINTopcji formatowania i inne ( GET()i PUT()zamiast PEEKi POKE;Funkcje portów I/O).

Palo Alto Tiny BASIC został zaadaptowany do wielu innych implementacji, w tym Level I BASIC (1977), BASIC dla komputera kieszonkowego Sharp PC-1211 (1980) oraz Astro BASIC (1982, autorstwa Jamiego Fentona ).

MINOL

Napisany przez młodszego ucznia w liceum, MINOL był jedyną implementacją, która nie obsługiwała pełnej uwagi do projektu, pozbawiona pierwszeństwa operatora , mająca tylko trzy powtórzenia (<, =, #), pomijając GOSUBi RETURN. Obsługiwała tylko precyzję 8-bitową bez znaku (w przeciwieństwie do precyzji 16-bitowej ze znakiem dla każdej innej implementacji) i numery linii od 0 do 254.

Żadne spacje nie były dozwolone z wyjątkiem ciągów; !zwraca losową liczbę, $zanim wyrażenie załaduje ciąg pod tym adresem; OSpowraca do systemu operacyjnego. Pamięć była adresowalna tak, jakby była dwuwymiarową tablicą wysokich i niskich bajtów (np. „(0,0)” do „(255,255)”); CALLwykonuje podprogram języka maszynowego.

Różne dialekty

Wiele dialektów pojawiło się w różnych innych publikacjach.

Wydanie z maja 1977 r. zawierało dyskietkę ROM zawierającą MICRO-BASIC.

Zainspirowany apelem PCC o Tiny BASICs, Robert Uiterwyk napisał MICRO BASIC 1.3 dla SWTPC ( system 6800 ), który SWTPC opublikował w biuletynie SWTPC z czerwca 1976 roku. Uiterwyk odręcznie zapisał język na legalnym tablecie. Później rozszerzył język do 4K, dodając obsługę zmiennoprzecinkową; ta implementacja była unikalna wśród interpreterów języka BASIC, ponieważ używała Binary Coded Decimal z dokładnością do 9 cyfr, z zakresem do 10 99 , i została opublikowana za darmo jako wkładka do magazynu „Floppy ROM”. Wersja 8K dodała zmienne łańcuchowe i funkcje trygonometryczne . Obie wersje 4K i 8K były sprzedawane przez SWTPC. W styczniu 1978 roku Uiterwyk sprzedał prawa do kodu źródłowego Motoroli .

Thomas F. Waitman napisał Tiny BASIC w 1976 roku dla terminali Hewlett-Packard HP-2640 i HP-2645 (które wykorzystywały procesory Intel 8008 i 8080), który został opublikowany w Hewlett-Packard Journal .

W wydaniu Interface Age z grudnia 1976 r. opublikowano LLL ( Lawrence Livermore Laboratory ) BASIC, którego pierwszy szkic został opracowany przez Steve'a Leiningera na podstawie specyfikacji Allison, zanim Leininger opuścił National Semiconductor dla Tandy Corporation . Interpreter końcowy został opracowany przez Johna Dickensona, Jerry'ego Barbera i Johna Teetera z University of Idaho na podstawie umowy z LLL. Biorąc 5K, zawierał pakiet zmiennoprzecinkowy, opracowany przez Davida Meada, Hala Branda i Franka Olkena. Program został umieszczony w domenie publicznej przez firmę LLL, która opracowała system pod auspicjami amerykańskiej Agencji ds. Badań i Rozwoju Energetyki.

PODSTAWY 4K

Altair BASIC , 4K BASIC, może działać na maszynie 4kB RAM, pozostawiając tylko około 790 bajtów wolnego kodu programu. Inicjatywa Tiny BASIC rozpoczęła się w odpowiedzi na opłatę w wysokości 150 USD za Altair 4K BASIC.

W 1975 roku Steve Wozniak dołączył do nowo utworzonego Homebrew Computer Club , w skład którego weszli Li-Chen Wang (Palo Alto Tiny BASIC) i Tom Pittman (6800 Tiny BASIC). Wozniak doszedł do wniosku, że jego maszyna musiałaby mieć własny BASIC, który, miejmy nadzieję, byłby pierwszym procesorem MOS Technology 6502 . Ponieważ język wymagał 4 kB RAM, uczynił to minimalną pamięcią dla projektu. Integer BASIC został pierwotnie opublikowany na Compact Cassette w 1976 roku.

W 1977 roku Radio Shack (jak wtedy było znane) wypuściło swój pierwszy komputer, TRS-80 , system Z80 z Level I BASIC w 4kB ROM. Pracownik Tandy Steve Leininger napisał pierwszy projekt tłumacza NIBL ​​(National Industrial Basic Language) dla SC/MP, kiedy był zatrudniony w National Semiconductor . Nie mogąc zabrać ze sobą tego kodu źródłowego, zaadaptował Palo Alto Tiny BASIC firmy Li-Chen Wang do oryginalnego prototypu TRS-80 Model I. Dokonał on gruntownych zmian w interpreterze, dodając obsługę zmiennoprzecinkową, proste czarno-białe białą grafikę i READ/DATA/RESTOREoświadczenia.

Pierwotnie opracowany w 1979 r., Sinclair 4K BASIC , napisany przez Johna Granta, używał jako definicji języka standardu Minimal BASIC Amerykańskiego Instytutu Standardów (ANSI) z 1978 r. , ale sam w sobie był niekompletną implementacją 4Kb tylko z arytmetykami liczb całkowitych.

Dialekty mikrokontrolerów

Implementacje Tiny BASIC zostały przystosowane do sterowania procesorem oraz dla mikrokontrolerów takich jak Arduino :

  • Stephen A. Ness napisał XYBASIC dla firmy Mark Williams Company w 1977 roku, implementację 4K liczb całkowitych. Język ten był często używany w aplikacjach do sterowania procesami.
  • Arduino BASIC — zaadaptowany z Tiny BASIC Gordona Brandly'ego 68000, przeniesiony do C przez Mike'a Fielda.
  • Tiny Basic Plus - Zaadaptowany z Arduino BASIC autorstwa Scotta Lawrence'a.
  • Half-Byte Tiny Basic - Zaadaptowany z Arduino BASIC.
  • Tiny Basic on the Micro: Bit — zaadaptowany z Palo Alto Tiny BASIC.

Późniejsze realizacje

W 2002 roku Emmanuel Chailloux, Pascal Manoury i Bruno Pagano opublikowali Tiny BASIC (brak GOSUB/ RETURN) w Developing Applications with Objective Caml jako przykład Objective Caml .

W 2013 roku Alex Yang opublikował implementację w Pythonie .

W 2019 roku Siergiej Kuzniecow opublikował wersję w Ruby .

Porównanie dialektów

W poniższej tabeli porównano funkcję językową implementacji Tiny BASIC z innymi ważnymi językami BASIC, które je poprzedzały.

Porównanie implementacji BASIC - Tiny BASICs i inne BASICs
Data
opublikowania
Dialekt
Programista (y) Edytor Rodzaj WEJŚCIE POZWOLIĆ WYDRUKOWAĆ IŚĆ DO JEŚLI NASTĘPNIE GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA JASNE NOWY REM W NASTĘPNYM ODCZYT/DANE/PRZYWRACANIE Dodano polecenia PODSTAWOWE Modyfikacje Wyrażenia powtórnie Funkcje RND Funkcja pamięci Numery linii Ogranicznik wyciągu Błędy Precyzja Arytmetyka Zmienne Tablice Smyczki
Październik
1964
DTSS Dartmouth BASIC
(wersja 2)
(Uczniowie Dartmouth) GE-225 Kompiluj-i-go Nie dotyczy [!] LET var = wyrażenie PRINT lista-wyrażeń { , / ; / } PRZEJDŹ DO numer IF wyrażenie relop wyrażenie THEN numer-linii Numer GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA--start NOWOŚĆ [monituje o nazwę programu] REM DO/DO/KROKU/DALEJ CZYTAJ, DANE ZATRZYMAĆ Nie dotyczy pierwszeństwo, ^ < <= = >= > <> INT, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN RND(0) 0..1 1 do 99999 Nic 22 określone 9 cyfr ±999,999,999; Notacja E o podstawie 2 -256 do +255 (E±76). AZ, A0-Z9 DIM (jedna litera nazwa, dwa wymiary); jeśli pominięto, zakłada się, że wynosi od 0 do 10; do 1500 elementów we wszystkich tablicach Nic
Luty
1970
GRUDZIEŃ PODSTAWOWY-8
(pracownicy DEC) PDP-8 Kompiluj-i-go INPUT lista zmiennych LET var = wyrażenie PRINT lista-wyrażeń { , / ; / } PRZEJDŹ DO numer IF wyrażenie relop wyrażenie [THEN/GO TO] numer-linii Numer GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA (pierwszy (, ostatni)) NOWOŚĆ [monituje o nazwę programu] REM DO/DO/KROKU/DALEJ ODCZYTAJ, DANE, PRZYWRACAJ ZATRZYMAJ, STARY, ZAPISZ, NIE ZAPISZ DELETE (pierwszy (, ostatni)), BYE pierwszeństwo, ^ < <= = >= > <> INT, SGN, SIN, COS, TAN, ATN, EXP, LOG, ABS, SQR, DEF FN RND(0) 0..1 1 do 2045 Nic 23 określone ? ±134 217 727; 14E-38<N<1,7E38 AZ, AA-Z9 DIM (jedna litera nazwa, dwa wymiary) Nic
Czerwiec
1974
PODSTAWOWE UIUC
Alfred Weaver, Michael Tindall, Ronald Danielson 8008 Interpretator INPUT <zmienna> {, <zmienna>}* LET var = formuła PRINT <ciąg> / <wzór> {, <ciąg> / <wzór>}* PRZEJDŹ DO numer IF wyrażenie THEN numer linii Numer GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ nieudokumentowane nieudokumentowane nieudokumentowane REM DO/DO/KROKU/DALEJ DEF FN, STOP Nie dotyczy pierwszeństwo, ^ < <= = >= > # I LUB NIE FNA..Z, SIN, COS, LOG, SQR, EXP, ATN 0 do 999 Nic nieudokumentowane 4-bajtowa mantysa i 1-bajtowy wykładnik [pakiet danych zmiennoprzecinkowych Datapoint 2200] nieudokumentowane AZ, A0-Z9 DIM (jedna litera nazwa, trzy wymiary) Nic
1975
Altair 4K PODSTAWOWE
Bill Gates, Paul Allen, Monte Davidoff 8080 Interpretator INPUT ("ciąg",) var-list (LET) var = wyrażenie PRINT lista-wyrażeń { , / ; } GOTO numer IF wyrażenie THEN numer linii/instrukcja Numer GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA (początek) NOWY REM DO/DO/KROKU/DALEJ ODCZYTAJ, DANE, PRZYWRACAJ ZATRZYMAĆ precedens < <= = >= > <> ABS, INT, SGN, SQR, TAB, USR RND(X) <0, nowy przy użyciu X jako nasiona; =0, powtórz; >0, następny 1 do 65535 : 12 określonych 40-bitowy operand pływający ? ? WYMIAR (jeden wymiar) Nic
grudzień
1975
Uwaga projektowa
Dennis Allison Nie dotyczy Interpretator INPUT lista zmiennych LET var = wyrażenie DRUKUJ listę wyrażeń GOTO wyrażenie IF wyrażenie relop wyrażenie THEN instrukcja wyrażenie GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA [równ. do nowego] precedens < <= = >= > <> >< Nic Nic 1 do 255 Nic 8 zdefiniowanych 16 bitów ± 32767 AZ Nic Nic
Luty
1976
Tiny BASIC Rozszerzony
Dick Whipple & John Arnold 8080 Interpretator W (LET) var = wyrażenie ;} IŚĆ DO IF wyrażenie [brak THEN] instrukcja PRZEJDŹ NA SUB GNIĆ KOŃCZYĆ SIĘ BIEGAĆ LST (pierwszy (, ostatni)) NOWY FOR-NXT (bez kroku) DTA (tablica LET) precedens < <= = >= > <> >< spacje TB() w druku RN (losowe 0-10000) SZE 1 do 65535 $ 14 określonych 16 bitów ± 32767 AZ DIM, 1- lub 2-wymiarowy, 255x255 max Nic
Marzec
1976
Denver Tiny PODSTAWOWE
Fred Greeb 8080 Interpretator W (LET) var = wyrażenie ;} IŚĆ DO IF wyrażenie [brak THEN] instrukcja GOSUB GNIĆ KOŃCZYĆ SIĘ BIEGAĆ LISTA (od początku) [równ. do nowego] TAŚMA [ZAPISZ], ZAŁADUJ CLRS [CLS] precedens < <= = >= > <> >< RND(0), RND(1) ROZMIAR 2 do 255 : 20 określonych 16 bitów ± 32767 AZ, A1 do A6 do Z6 DIM, 1 wymiar Nic
Marzec
1976
6800 Małe PODSTAWOWE
Tom Pittman 6800 Interpretator INPUT (wyrażenie) var-list LET var = wyrażenie PRINT lista-wyrażeń { , / ; } GOTO wyrażenie IF wyrażenie relop wyrażenie THEN instrukcja wyrażenie GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA (od początku) [równ. do nowego] REM precedens < <= = >= > <> >< USR() RND() 1 do 65535 Nic 53 określone 16 bitów ± 32767 AZ Nic Nic
Kwiecień
1976
MINOL
Eric T. Mueller 8080 Interpretator W (LET) var = wyrażenie Lista wyrażeń PR {;} [GOTO 0 przeskakuje z powrotem do początku instrukcji bezpośredniej] IF wyrażenie relop wyrażenie ; oświadczenie Nie dotyczy Nie dotyczy KOŃCZYĆ SIĘ BIEGAĆ LISTA CLEAR [tylko zmienne] NOWY Żadne spacje nie są dozwolone z wyjątkiem ciągów Brak pierwszeństwa operatora < = # $ [CHR$] ! [RND] 1 do 254 : 6 zdefiniowanych 8 bitowy 0 do 255 AZ (H,L) lokalizacja pamięci pojedynczy znak
maj
1976
Palo Alto Tiny PODSTAWOWE
Li-Chen Wang 8080 Interpretator INPUT [(wyrażenie) var]* (LET) var = wyrażenie DRUKUJ listę wyrażeń GOTO wyrażenie IF wyrażenie [brak THEN] instrukcja wyrażenie GOSUB POWRÓT ZATRZYMAĆ BIEGAĆ LISTA (początek) NOWY REM DO/DO/KROKU/DALEJ ZATRZYMAĆ precedens < <= = >= > # ABS() RND() ROZMIAR 1 do 32767 ; 3 określone 16 bitów ± 32767 AZ @(1 tablica z 1 wymiarem) Nic
Listopad
1976
NIBL
Mark Alexander & Steve Leininger SC/MP Interpretator WEJŚCIE ($)zmienna (LET) var = wyrażenie PR/PRINT lista ekspr GOTO wyrażenie IF wyrażenie (THEN) instrukcja wyrażenie GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA (początek) CLEAR [zmienne i stos] NOWY REM DO/DO/KROKU/DALEJ RÓB DOPÓKI Adresowanie pamięci (@ [PEEK/POKE], STAT, PAGE) precedens < <= = >= > <> MOD(), I, LUB, NIE, RND(A,Z) SZCZYT 0 do 32767 : 13 czteroznakowych zdefiniowanych 16 bitów ± 32767 AZ adresowanie pamięci INPUT$, PRINT$, $exp=exp
sierpień
1977
Poziom I PODSTAWOWY
Steve Leininger Z80 Interpretator INPUT (#cyfra) [(wyrażenie) var]* (LET) var = wyrażenie PRINT (#cyfra) lista-wyrażeń GOTO numer JEŻELI wyrażenie THEN oświadczenie Numer GOSUB POWRÓT KOŃCZYĆ SIĘ URUCHOM (start) LISTA (początek) NOWY REM DO/DO/KROKU/DALEJ ODCZYTAJ, DANE, PRZYWRACAJ STOP, KONTYNUACJA, ON-GOTO/GOSUB CLOAD, CSAVE, CLS, SET, RESET, precedens < <= = >= > <> >< ABS(), INT(), MEM, PUNKT(X,Y) RND() MEM 1 do 32767 : 3 określone 16 bitów ± 32767 AZ A (1 tablica z 1 wymiarem) A$, B$
Czerwiec
1976
MIKRO PODSTAWOWE 1,3
Robert Uiterwyk 6800 Interpretator INPUT lista zmiennych (LET) var = wyrażenie PRINT lista-wyrażeń { , / ; } GOTO wyrażenie IF wyrażenie relop wyrażenie THEN instrukcja wyrażenie GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA (pierwszy (, ostatni)) NOWY DO/DO/DALEJ (bez KROKU) PATKA() precedens < <= = >= > <> >< RND, ROZMIAR RND [zwroty 1-32762] ROZMIAR (instrukcja, która drukuje wykorzystane bajty i wolne bajty) 1 do 65535 Nic 17 określonych 16 bitów [później BCD!] ± 32767 AZ DIM (dwa wymiary, max rozmiar 255) Nic
Czerwiec
1976
Naukowy podstawowy
język podstawowy
(SCELBAL)
Mark Arnold i Nat Wadsworth 8008 Interpretator INPUT lista zmiennych (LET) var = wyrażenie PRINT lista-wyrażeń {, / ; / } GOTO numer WTEDY oświadczenie Numer GOSUB POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA Zadrapanie] REM DO/DO/KROKU/DALEJ ZAPISZ, ZAŁADUJ UDF [ZSRR] pierwszeństwo, ^ < <= = >= > <> INT, SGN, ABS, SQR, CHR [do użytku tylko w PRINT], TAB RND(0) 0..1 1 do 999999 Nic 18 zdefiniowanych 32-bitowy operand zmiennoprzecinkowy lub stały; ±134 217 727; 14E-38<N<1,7E38 ? DIM (jedna litera nazwa, jeden wymiar; do 4 tablic zawierających do 64 wpisów łącznie) Nic
Październik
1976
Jabłko I PODSTAWOWE
Steve Wozniak 6502 Interpretator INPUT ("ciąg",) var-list (LET) var = wyrażenie PRINT lista-wyrażeń { , / ; } GOTO wyrażenie IF wyrażenie relop wyrażenie THEN numer linii/instrukcja wyrażenie GOSUB POWRÓT KOŃCZYĆ SIĘ URUCHOM (start) LISTA (pierwszy (, ostatni)) SCR REM DO/DO/KROKU/DALEJ AUTO, DEL, POKE TAB (polecenie), WYWOŁANIE precedens < <= = >= > <> # I LUB NIE MOD SGN, ABS, PEEK(), LEN() RND(X) 0..X (lub X..0!) HIMEM, LOMEM 1 do 32767 Brak [wczesna wersja, potem :] 16 określonych 16 bitów ± 32767 AZ, po którym następuje dowolna liczba znaków alfanumerycznych WYMIAR (jeden wymiar) zwymiarowany
grudzień
1976
LLL PODSTAWOWE
(pracownicy Uniwersytetu Idaho) 8080 Interpretator INPUT lista zmiennych (LET) var = wyrażenie PRINT lista-wyrażeń { , / ;} PRZEJDŹ DO numer IF wyrażenie relop wyrażenie (THEN) instrukcja PRZEJDŹ SUB numer POWRÓT KOŃCZYĆ SIĘ BIEGAĆ LISTA SCR REM DO/DO/DALEJ (bez KROKU) ZATRZYMAĆ ZADZWOŃ, POBIERZ(), PUT() precedens < <= = >= > <> >< Brak RND? 0 do 32767 : 14 określonych 32-bitowy operand zmiennoprzecinkowy ? AZ, A0-Z9 DIM (tylko liczby całkowite, nazwa jednoliterowa, jeden wymiar, maksymalny rozmiar 255) Nic

Zobacz też

Uwagi

Bibliografia

Cytaty

Bibliografia

Zewnętrzne linki