ZÁKLADNÍ 09 - BASIC09
Navrhl | Motorola |
---|---|
Vývojář | Microware |
Poprvé se objevil | 1980 |
Stabilní uvolnění | 1.1.0 / 5. ledna 2003 |
ZÁKLADNÍ 09 je strukturovaný ZÁKLADNÍ programovací jazyk dialekt vyvinutý Microware jménem Motorola pro tehdy nové Motorola 6809 procesor a vydána v únoru 1980.[1] Používá se primárně s OS-9 operační systém, vydané v roce 1979. Microware také vydal verzi pro OS-9 / 68k na 68000 tak jako Microware BASIC.[2]
Na rozdíl od typických BASIC éry zahrnuje BASIC09 víceprůchodový překladač který vyrábí kompaktní bytecode známý jako I-kód. I-kód nahrazuje řadu datových struktur nalezených v jiných BASICů přímými ukazateli na kód a hodnoty, což urychluje výkon. Uživatelé mohou dále kompilovat kód pomocí BALÍČEK
příkaz, kdy jej lze přímo vyvolat OS-9 a pracovat jako nativní kód. V případě PACKed kódu omezená verze BASIC09 runtime systém se používá, Runb, což dále zlepšuje stopu paměti a dobu načítání.
Jazyk obsahuje řadu strukturované programování doplňky, včetně lokální proměnné, schopnost ignorovat čísla řádků ve prospěch pojmenovaných rutin, uživatelsky definovaných struktur a několika odlišných základních datových typů, včetně 16bitových a 8bitových (bajtových) celých čísel, kromě plovoucí řádové čárky a řetězců.
Syntax
Organizace programu
Klíčový rozdíl mezi BASIC09 a konvenčními BASICy éry, jako je kanonický Microsoft BASIC, je přidání POSTUP
/KONEC
struktura, která vytvořila samostatně spustitelné bloky kódu. Kód v a POSTUP
měl více společného s úplnými programy v jiných BASIC, včetně proměnných, které jsou místní do kódu a je prováděn samostatně. POSTUP
byly volány pomocí BĚH
příkaz a mohl by zahrnovat proměnné pro sémantiku volání funkcí; například, RUN add (4,7)
volá proceduru s názvem přidat
který vyžaduje dva parametry. Parametry byly do procedury importovány pomocí PARAMETR
klíčové slovo, v tomto příkladu PARAMETR a, b
:[3]
POSTUP addPARAMETER a, bPRINT a + bEND
Vedlejším efektem použití pojmenovaných procedur je, že výsledný paměťový pracovní prostor je ve skutečnosti jeho vlastní jmenný prostor. V tomto ohledu se systém BASIC09 uživateli jeví jako adresář volaných programů. To kontrastuje s typickými BASICy, kde je v danou dobu k dispozici pouze jeden program a konstrukce větších programů volajících na knihovnický kód obecně vyžaduje zdrojový kód kopírovat a vložit mezi samostatné programy. V BASIC09 může uživatel ZATÍŽENÍ
procedury podle názvu do pracovního prostoru a poté je zavolat ze svého vlastního kódu, aby vytvořily větší programy ze samostatně uložených procedur.[4][A]
Kromě kódu v pracovním prostoru, pokud program volal BĚH
s názvem procedury, který nelze najít, vyhledá soubor disku se stejným názvem a spustí jej. Toto fungovalo nejen s kódem BASIC09, ale také s jakýmkoli jiným spustitelným programem, včetně jazyk stroje soubory. To znamenalo, že BASIC09 mohl snadno volat systémové rutiny.[5]
Navíc BĚH
, další běžné základní příkazy také používají názvy. Například, SEZNAM bob
vytiskne zdrojový kód ("seznam") proceduru s názvem "bob", zatímco SEZNAM*
vytiskne všechny postupy aktuálně v paměti. Docela vytištěný výstup z SEZNAM
lze přesměrovat na soubor nebo tiskárnu se zápisem podobným prostředí, např. SEZNAM bob> / str
. Dalo by se také ULOŽIT
a ZATÍŽENÍ
postupy ze skladování.[6]
Strukturované programování
Kromě organizačních vlastností POSTUP
, BASIC09 také zahrnoval řadu rozšíření do řízení toku prohlášení nalezená v BASICu poskytují větší strukturu. Například LI
prohlášení lze použít v tradičním LI
...PAK
formát na jednom řádku, nebo jej lze použít ve strukturovaném víceřádkovém formátu:[7]
IF x> 10 THEN PRINT "je větší než 10" ELSE PRINT "je menší než 10" ENDIF
PRO DALŠÍ
smyčky mají přirozeně strukturovaný formát jako DALŠÍ
lze umístit na libovolný řádek, ale přidal také BASIC09 KDYŽ / KONEC
a OPAKOVAT / AŽ DO
pro větší přehlednost při práci s neindexovanými smyčkami.[8] Zahrnovalo také středový východ LOOP / ENDLOOP
který používal EXITIF
prohlášení pro testování kdekoli v těle smyčky.[9]
Typy dat
BASIC09 zahrnoval několik předdefinovaných datových typů. Kromě tradičních řetězcových (STRING) a 40bitových typů s plovoucí desetinnou čárkou (REAL), které se nacházejí ve většině BASICů té doby, zahrnoval také 16bitový podepsaný INTEGER, 8bitový nepodepsaný BYTE a logický typ BOOLEAN. Booleovské typy nebyly zabaleno do bajtů jeden BOOLEAN použil celý 8bitový bajt k uložení jedné hodnoty. Jazyk poskytovaný samostatně po bajtech logické operátory pro bitové operace na BYTE a INTEGER.[10] Na rozdíl od jiných BASIC, které také provozovaly různé základní typy, BASIC09 „nezdobil“ název proměnné k označení typu a místo toho použil ZTLUMIT
pro definice; například, DIM a, b: BOOLEAN
deklarovat dvě BOOLEAN proměnné, nebo DIM c (5): INTEGER
pro pole pěti INTEGERŮ.[11]
Navíc BASIC09 zahrnoval TYP
klíčové slovo, které umožňovalo definovat složené typy, přičemž každý „prvek“ je uveden na jednom řádku odděleném středníky. Například:[12]
TYPE employee_record = name: STRING; number (2): INTEGER; former: BOOLEAN
definuje pojmenovaný typ záznamu zaměstnance zaměstnanec_záznam
se třemi prvky, název
, číslo
a bývalý
. Typ employee_record lze nyní použít v definici jako jakýkoli jiný typ, například Zaměstnanci DIM (100): employee_record
, který definuje pole 100 employee_record. K prvkům se přistupuje v kódu pomocí tečkové notace, například zaměstnanci (50) .name = "Bob"
.[12]
Runtime
Úpravy
Čísla řádků se ve většině základních dialektů používala především jako podpora editoru. Uživatelé by upravovali konkrétní řádky kódu zadáním čísla, přičemž text by měl buď přidat nebo nahradit řádky již v paměti. Protože každý řádek kódu měl číslo, bylo také vhodné je označit jako cíl a JÍT DO
nebo GOSUB
, ve srovnání s jinými jazyky jako FORTRAN kde byl pro tento účel použit samostatný „štítek řádku“.
BASIC09 obvykle nepoužíval čísla řádků, takže jeho editor musel být upraven tak, aby uživateli umožňoval editovat řádky, aniž by na ně odkazoval podle čísla. BASIC09 však nepředpokládal žádný druh funkce celé obrazovky, takže pomocí kurzorové klávesy nebyla možnost. Místo toho měl systém samostatný editorský řádek a umožnil uživateli pohybovat se pomocí + a - klávesy, pohyb vpřed nebo vzad o jeden řádek po druhém. Chcete-li vložit nový řádek kódu bez čísla řádku, nechal uživatel na začátku výpisu prázdné pole.[13]
Všimněte si, že jazyk je rozeznává velká a malá písmena pro uživatelem poskytnuté hodnoty, jako je postup a názvy proměnných, ale ne pro klíčová slova. Klíčová slova zadaná do editoru malými písmeny se při použití programu zobrazí velkými písmeny SEZNAM
vyd.[14] BASIC09 povolil více příkazů na jednom řádku kódu, ale použil jako oddělovač místo : používaný ve většině dialektů.[15][b] Je to proto, že používalo dvojtečku v :=
operátor přiřazení, který byl navíc k normálnímu =
. :=
byl ve skutečnosti totožný s =
, ale zviditelnil rozdíl mezi úkoly a srovnáním.[16]
Překladač
Interní kompilátor více pasů převádí BASIC09 zdrojový kód do tokenizovaný, optimalizováno, bytecode, nazvaný I-kód.[17] I-kód se liší od tradičnějšího tokenizačního přístupu nalezeného ve většině BASICů v tom, že řada položek byla umístěna přímo do paměti namísto použití odkazů, které pak musely být vyhledány.[18]
Například v interpretech založených na MS je odkaz na proměnnou v kódu ponechán ve formátu řetězce; proměnná VAL
by byl v paměti reprezentován třemi písmeny VAL. Během provádění, když se v kódu setká s touto proměnnou, musí tlumočník vyhledat tento řetězec v tabulce proměnných, najít přidruženou adresu úložiště v paměti a nakonec přečíst hodnotu uloženou v tomto umístění. Tabulka je obvykle konstruována tak, aby hodnota následovala název, aby se ušetřil čas při konečném vyhledávání.[17]
Naproti tomu v I-kódu je adresa proměnné určena předem a odkaz v kódu je nahrazen touto adresou. Tím se zabrání runtime vyhledávání v tabulce proměnných.[17] Další optimalizace zahrnují samostatnou PRO DALŠÍ
rutina používaná v případě, že proměnná indexu je INTEGER, a oddělené matematické knihovny INTEGER a REAL.[18]
Pro zvýšení výkonu zahrnoval BASIC09 také BALÍČEK
příkaz, který převzal název procedury a vrátil optimalizovanou verzi. Některé z těchto optimalizací zahrnovaly odebrání nekódovacích pokynů, jako jsou komentáře ke kódu a nahrazení konstantních výrazů na jednu hodnotu. Například, BALÍČEK
poznal by to LET x = x + SQR (100) / 2
obsahuje pouze konstanty vpravo a nahradí jej kódem x = x + 5
, který vyžaduje za běhu pouze jednu operaci, přidání, odstranění dělení a druhé odmocniny. BALÍČEK
snížila paměťovou stopu procedury a zlepšila výkonnost přibližně o 10 až 30%.[19]
Lehký běh
Přestože bylo běžné spouštět programy v prostředí BASIC09, stejně jako v jiných BASIC, BASIC09 se dodával také se samostatnou verzí kódu jen pro běh známou jako Runb. Runb odstranil editační a ladicí funkce systému a ve výsledku byl zhruba o polovinu menší než plný BASIC09.[20]
Účelem Runb bylo primárně spouštět PACKed moduly při volání z jiných programů. To znamenalo, že pokud uživatel zadal do příkazového řádku OS / 9 název modulu BASIC09 a tento modul byl označen jako PACKed, je otevřen a spuštěn Runb namísto BASIC09. To snižuje paměťovou stopu a zkracuje dobu načítání.[20]
Významné vlastnosti
- přiměřeně strukturovaná opatření pro řízení toku (např. čísla řádků byla potřebná hlavně pro výpočet
JÍT DO
, protože BASIC09 neměl příkaz switch / case nebo byl vypočítánGOSUB
) - deklarace struktury (tehdy vzácná v jakékoli variantě BASIC; častější v pozdějších implementacích BASIC)
- vnitřní celé číslo a Booleovské datové typy
- více než dva významné znaky v názvech proměnných (některé BASICy té doby umožňovaly pouze jeden, mnoho Microsoft BASIC varianty povoleny pouze dvě)
- procedury s lokálními proměnnými (ve skutečnosti Všechno proměnné v BASIC09 jsou lokální pro procedury) a předávání parametrů odkazem
- rozumné debugger (jeho jedinou významnou nevýhodou bylo, že člověk nemohl zkoumat obsah polí ve strukturách)
- způsob propojení s jazyk stroje kód, kterému lze předat parametry pomocí volací sekvence BASIC09
- automatický pěkný tisk zdroje, který vynutil standardní rozvržení a vyhnul se příšernému nepořádku, který byl obvyklým vzhledem programu jakékoli velikosti v interpretovaných BASICech té doby. Programátoři by normálně nacpali co nejvíce řádků, aby se vyhnul režii paměti s čísly řádků - v BASIC09 to není problém[21]
Viz také
- COMAL byl další jazyk podobný BASICu se strukturovanými programovacími konstrukcemi
Poznámky
Reference
Citace
- ^ Manuál 1984, str. 1.2.
- ^ „BASIC09“. Geneslinuxbox.net:6309. Citováno 2016-11-27.
- ^ Manuál 1984, str. 5.1.
- ^ Manuál 1984, str. 3.5.
- ^ Manuál 1984, str. 9.12.
- ^ Manuál 1984, str. 2.9.
- ^ Manuál 1984, str. 9.4.
- ^ Manuál 1984, str. 9,6-9,7.
- ^ Manuál 1984, str. 9.8.
- ^ Manuál 1984, s. 7,2-7,6.
- ^ Manuál 1984, str. 7.6.
- ^ A b Manuál 1984, str. 7.8.
- ^ Manuál 1984, str. 2.3.
- ^ Manuál 1984, str. 2.5.
- ^ Manuál 1984, str. 9.1.
- ^ Manuál 1984, str. 9.2.
- ^ A b C Manuál 1984, str. 11.1.
- ^ A b Manuál 1984, str. 11.2.
- ^ Manuál 1984, str. 11.3.
- ^ A b Manuál 1984, str. D.1.
- ^ V zásadě OS-9 „Ron Voigts, 68 Micro Journal, svazek 09, číslo 04, duben 1984, strana 14, Jednou z jeho silných funkcí je zpracování formátovaného výstupu. Jiné jazyky se liší v tom, jak dobře zvládnou formátovaný výstup. Ale BASIC09 dokáže velmi pěknou práci, když vaše řádky umístí do požadované formy
Bibliografie
- Referenční příručka k programovacímu jazyku BASIC09 (PDF). 1984.
- „OS-9 Basic 09 - The Dragon Archive“. Archive.worldofdragon.org. 2016-05-07. Citováno 2016-11-27.
externí odkazy
- Počáteční historie OS-9, vyberte obsah z 68 Micro Journal Září 1980 první recenze OS-9 a Basic09 zaslaná Tomem Harmonem z HHH Enterprises
- Oficiální průvodce zájezdem Basic09, Dale L. Puckett, 1985, ISBN 0-918035-00-7, Kat. Č .: 26-3189
- Balíček: Basic09 1.1.0 / datum vydání: 5. ledna 2003, Toto vydání Basic09 pro Tandy Color Computer 1/2/3 představuje první komunitní vydání od přerušení spolupráce CoCo v 80. letech.
- ^ Inzerát: BASIC09 má dvojí osobnost., 68 Micro Journal, svazek 04, číslo 01, publikováno: leden 1982
- ^ Počáteční historie OS-9, vyberte obsah z 68 Micro Journal, V prosinci 1980 společnost Microware mírně změnila svou reklamu 6809. Basic09 se nyní nazývá „Basic09 Programming Language System“ od společnosti Microware, spíše než „Motorola Basic09“.
- ^ diskusní skupiny: comp.os.os9, od: Colin McKay, předmět: Re: OS / 2 vs. W95 a OS-9, datum: 4. 4. 1995, shrnutí: Výňatky z historie Microware v bulletinu uživatelů OS-9, NOVINKA MIKROWARE NOVÝ VÝROBEK Duben 1979., Děkujeme vám za dotaz ohledně naší řady 6800 rodinných hardwarových a softwarových produktů. Právě zavádíme nový software, takže náš katalog z roku 1979 nebude nějakou dobu připraven. Mezitím v tomto zpravodaji představujeme nové informace o produktu. 6809 SOFTWARE. Společnost Motorola uzavřela smlouvu s firmou Microware na výrobu nejlepšího možného softwaru pro model 6809. Nový software, který jsme pro společnost Motorola připravili, zahrnuje nový jazykový systém BASIC a operační systém. Tento software bude brzy k dispozici u společností Motorola a Microware.
- ^ o autorovi, Terry Ritter, .. Software ... FORMERLY: Staff Engineer, Motorola MOS Division, Microcomputer Systems Design Group, July 1976 - Jan. 1981. ... Architekt strukturovaného jazyka BASIC pro 6809. Softwarový inženýr, 1979-81 .. .. Původce a kontrolní projektový inženýr - BASIC09, 1978-80, strukturovaný projekt jazyka BASIC s operačním systémem OS9 a souvisejícími specifikacemi.