Mały PODSTAWOWY - Tiny BASIC
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
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ę
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ł LIST
w 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 RUN
polecenie, 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ę: GOTO
a GOSUB
moż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 100
i 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ł
STEP
i używał słowa kluczowegoNXT
do 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.
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
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 IF
i 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. STEP
Modyfikatora 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 @
, STOP
opró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 SORRY
przypadku 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. A0
do Z9
), funkcje logiczne ( AND()
, OR()
, XOR()
), CALL
polecenia do wykonywania procedur języka maszynowego, więcej PRINT
opcji formatowania i inne ( GET()
i PUT()
zamiast PEEK
i 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 GOSUB
i 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; OS
powraca do systemu operacyjnego. Pamięć była adresowalna tak, jakby była dwuwymiarową tablicą wysokich i niskich bajtów (np. „(0,0)” do „(255,255)”); CALL
wykonuje podprogram języka maszynowego.
Różne dialekty
Wiele dialektów pojawiło się w różnych innych publikacjach.
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/RESTORE
oś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.
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(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 |
(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 |
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 |
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 |
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 |
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 |
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 | |
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 |
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 |
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 |
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 |
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$ |
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 |
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 |
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 |
(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
- "Arkusz kodów TB" . Dr Dobb's Journal of Computer Calisthenics & Orthodontia, Running Light Without Overbyte . 1 (1). Grudzień 1975.
- Manes, Szczepan ; Andrews, Paweł (1994). Gates: Jak potentat Microsoftu na nowo odkrył przemysł i stał się najbogatszym człowiekiem w Ameryce . Nowy Jork: Probierz, Simon i Schuster. Numer ISBN 0-671-88074-8.
Zewnętrzne linki
- Tiny Basic User Manual and Experimenter's Kit – Tom Pittman
- Robert Uiterwyk's BASIC i Robert Uiterwyk's Micro Basic – mały BASIC MC6800 sprzedawany później z komputerem SWTPC 6800
- MINOL – MINOL Erika Muellera – Tiny BASIC z strunami dla Intela 8080
- Tiny BASIC – wersja biblioteki obsługi ekranu postaci curses
- tinyBasic – Implementacja napisana w iziBasic
- Tiny BASIC – wersja internetowa na żywo, przeniesiona do Run BASIC z iziBasic
- Palo Alto BASIC mniej niż 500 linii – Przykładowy interpreter BASIC napisany w Ruby.
- TinyBasic — port interpretera języka C Toma Pittmana TinyBasic na języki Java , C# i Adobe Flex . Zawiera wersje internetowe na żywo.
- TinyBASIC Windows – wersja TinyBASIC dla Windows