QASM - Quick ASseMbler



ÚVOD

K programování v asembleru (JSA - jazyk symbolických adres) je často využíván jazyk TurboAssembler (TA) firmy Borland. Překladač a linker TA (TASM.EXE, TLINK.EXE) jsou standardně dodávány společně s TurboPascalem, C++... Tyto programy slouží však pouze ke kompilaci již napsaného zdrojového textu, který je nutno vytvořit v textovém editoru, navíc se ovládají z příkazové řádky DOSu a vypisují všechna hlášení přímo na obrazovku. Tento styl programování je neefektivní, pomalý, zdlouhavý a pro programátora velmi nepříjemný, a proto vznikl Quick ASseMbler.
Quick ASseMbler (QASM) je integrované prostředí pro tvorbu programů v assembleru. K překladu editovaného programu využívá externího kompilátoru, jedná se tedy o nadstavbu. Program dodržuje standardní konvence používané v programech stylu Borland Pascal. V prostředí editoru je zabudována kalkulačka, ASCII tabulka, šetřič obrazovky, hypertextový help atd. Editor okamžitě zvýrazňuje editovaný text. QASM je aplikace, která umožňuje editovat více programů současně, a přenášet mezi nimi text.


METODIKA

Cílem bylo vytvořit uživatelsky příjemné prostředí určené pro programátory v jazyku asembler. Dosavadní způsob tvorby programů v JSA vypadal následovně:
pozn. : NE - NortonEditor

ne prvni.asm

cade segment
assume cs:code,ds:code
orh 100h
saart:
mov ah,9w
mov dx,offset send
int 21h
xor az,ax
int 16h
int 20h
send db Nazdar lidi !',10,13,'$'
code ends
end start


tasm prvni

**Error** C:\ASM\PRVNI.ASM(2) Undefined symbol: CADE
**Error** C:\ASM\PRVNI.ASM(3) Illegal instruction
**Error** C:\ASM\PRVNI.ASM(5) Illegal number
**Error** C:\ASM\PRVNI.ASM(8) Undefined symbol: AZ
**Error** C:\ASM\PRVNI.ASM(11) Undefined symbol: NAZDAR
*Warning* C:\ASM\PRVNI.ASM(12) Unmatched ENDS: CODE
**Error** C:\ASM\PRVNI.ASM(13) Undefined symbol: START

Takže musíme opsat chyby na papír a pokračujeme v „programování"

ne prvni.asm

.. oprava ..

tasm prvni

OK

tlink prvni /t

prvni

Nazdar lidi!

To byl jen malý příklad jak vypadala práce bez QASM. Při odlaďování delších programů je chyb samozřejmě mnohem více.
K vytvoření QASMu byl použit Borland Pascal 7.0, konkrétně jeho objektová knihovna Turbo Vision 2.0. Tato knihovna byla zvolena proto, že přináší uživateli příjemné prostředí, které je mu známé z mnoha programů. Pro úsporu paměti byla použita technika známá např. z programu M602: v paměti je trvale přítomen pouze krátký loader, který spouští vlastní program, kompilátor, linker atd. Toto řešení není z rychlostního hlediska nejideálnější, ale díky němu je při paměťově náročných operacích (kompilace, spuštění editovaného programu, dosshellu) konvenční paměť ochuzena jen o 19kB.
QASM se tedy skládá ze zavaděče QASM.EXE a vlastního editoru QASMM.EXE. Zavaděč byl naprogramován převážně v Pascalu, rychlostně náročné funkce v asembleru. Jádro je nejdůležitější částí programu a zajišťuje většinu uživateli poskytovaných funkcí. Představuje přibližně 2000 programových řádků v Pascalu {nepočítaje Borlandské unity}.
Práce probíhala ve čtyřech etapách: 1. Vytvoření editoru bez vazby na TASM, ukládání konfigurace, desktopu, zabezpečení základních funkcí - clipboard, práce s okny... 2. Vytvoření zavaděče a propojení s jádrem 3. Syntax highlighting - při zobrazování i tisku , vytvoření Helpu 4. Doladění chyb, doplnění funkcí programu z připomínek uživatelů


VÝSLEDKY

Bylo vytvořeno prostředí podobné prostředím BP, C++, jenž obsahuje:

Stavová řádka

Je poslední řádka na obrazovce. Zde jsou vypsány nejpoužívanější akce a jejich zkratkové klávesy. Akce lze aktivovat také pomocí kliknutí myši na příslušné položce status baru.

Menu

Zpřístupňuje všechny funkce poskytované programem. Lze ovládat pomocí myši nebo klávesnice. Přístupné je po stisku klávesy F10, nebo kombinace Alt+X, kde X je zvýrazněné písmeno v názvu submenu.

Editační okno

Vytvoří se pomocí FILE-NEW,OPEN. Jedná se o standardní editační okno, ve kterém platí běžné editační klávesy. Najednou může být v programu větší množství oken, která jsou odlišena čísly. K manipulaci s okny slouží submenu WINDOW, nebo myš. Editační okna podporují práci se schránkou {clipboard} a bloky - submenu EDIT. Obsah každého okna je automaticky zvýrazňován {pokud tato volba není vypnuta - OPTIONS-ENVIRONMENT-EDITOR-SYNTAX HIGHLIGHTING}

Syntax highlighting

Je metoda pro zvýraznění napsaného zdrojového textu {tato technika se stala trendem posledních verzí komerčních integrovaných prostředí - C++, BP..}. Program rozlišuje sedm typů slov:

normální text
rezervovaná slova kompilátoru
návěstí - musejí obsahovat jako první znak @
registry
komentář - musí být oddělen znakem ;
konstanty - v jakékoli číselné soustavě, musejí začínat číslicí
řetězce - musí být sevřeny mezi znaky ' ' nebo " "

Každému slovu je přiřazena určitá barva, kterou lze změnit v OPTIONS-ENVIRONMENT- COLORS.
Pro zvětšení flexibility prostředí jsou klíčová slova a registry uloženy v samostatných souborech {RWORDS.TXT, REGS.TXT}.

Kompilátor

Se spustí pomocí COMPILE-COMPILE. Poté se zdrojový program v právě aktivním okně překompiluje pomocí externího kompilátoru. Před kompilací se ovšem z bezpečnostních důvodů všechny zdrojové texty uloží. Cesta k externímu kompilátoru se nastavuje pomocí OPTIONS - DIRECTORIES. Během překladu se informace o překladu vypisují v kompilačním okně. Po ukončení překladu je automaticky otevřeno okno s výpisem chyb.

Spuštění programu

Zdrojový program se překompiluje a spustí pomocí menu COMPILE-RUN, je spoušťen s argumenty nastavenými v menu COMPILE-ARGUMENTS. Po ukončení programu se otevře chybové okénko s informacemi o překladu. Pokud došlo při překladu k chybě, program se nespustí.

Chybové okno

Obsahuje výpis chybových a varovných hlášení TASMu a TLINKu, návratový kód spouštěného programu atd. Je přístupné pomocí Alt-Z a pohyb uvnitř okna je zajištěn kurzorovými klávesami. Pokud text pod kurzorem obsahuje číslo řádku je v editačním okně ihnded příslušný řádek nalistován. Z chybového okna se lze pomocí klávesy Enter přepnout do okna s textem souboru. Zkušený uživatel může chyby opravovat i bez tohoto přepnutí {chybový výpis vidí v chybovém okně}, v editačním okně však není aktualizován kurzor.

Hypertextový help

Po stlačení F1 je v menu ke každé položce k dispozici kontextový help. Po jednotlivých položkách helpu je možné se pohybovat pomocí klávesy TAB, nebo kurzorových kláves. Help dále obsahuje užitečné informace pro programátory {dokumentace k VGA,GIF.., parametry TASM, TLINK atd.}

Nastavení prostředí programu

Pomocí submenu OPTIONS-ENVIRONMENT lze nastavit vlastnosti: programu - nastavení 25/50ti řádkového módu, ukládání CFG,DSK editoru - vytváření záložních kopií, povolení highlightingu, souborová maska pro Open myši - nastavení rychlosti doubleclicku a prohození tlačítek barev - nastavení barev integrovaného prostředí a barev pro zvýraznění textu.

Nastavení adresářů

Nastavení pracovních adresářů se provede pomoci menu OPTIONS-DIRECTORY: Working directory - adresář, do kterého se ukládají překompilované soubory, záložní kopie, OBJ, MAP, LST atd.. Tasm directory - adresář ze kterého se spouští externí kompilátor TASM, TLINK a TD {TD286}.

Nastavení typu výstupního souboru

Nastaví se pomocí menu OPTIONS-TYPE . EXE - soubor jehož vlastnosti jsou určeny modelem {SMALL, LARGE..}
COM - je soubor, jehož maximální délka je 64K
OBJ - při této volbě se nevytvoří spustitelný program - použití - např. pro přilinkování k pascalu..
DLL - dynamicky linkovaná knihovna

Tisk

Tisk se spustí pomocí FILE - PRINT. Integrované prostředí QASMu umožňuje tisk zdrojových textů a to jak normálně tak i zvýrazněně. Tisk je možno provést na traktorový papír i na jednotlivé stránky, které se nahoře očíslují. Dokument může obsahovat hlavičku, ve které se vytiskne název soboru, datum a čas započetí tisku - viz. nastavení tisku

Nastavení tisku

Se provede pomocí menu FILE - PRINTER SETUP, zde lze nastavit, zda má program požívat escape sekvence podle normy EPSON, nebo tisknout pouze ASCI znaky, dále zde lze nastavit tvar hlavičky pro tisk.

Menu FILE

Kromě již popsaných funkcí pro tisk obsahuje:

OPEN - otevření souboru na disku
SAVE - uložení souboru na disk
SAVE AS - uložení pod jiným jménem
NEW - otevření prázdného okna {untitled}
CHANGE DIR - nastavení aktivního adresáře DOSu
EXIT - ukončení programu

Uživatelská obrazovka

Program si při svém spuštění a při ukončení programu uchovává původní DOSovskou obrazovku, kterou lze zavoloat přes systémové menu- USER SCREEN, nebo Alt - F5.

Systémové menu

Osahuje služby různého druhu:

SCREENSAVER - spustí šetřič obrazovky, lze jej aktivovat také umístěním kurzoru do pravého horního rohu obrazovky
CALCULATOR - otevře okno s hexadecimální kalkulačkou
ASCII TABLE - otevře okno s ASCII tabulkou
ABOUT - vypíše informace o programu
USER SCREEN - viz. výše
REFRESH DISPLAY - překreslí pracovní plochu - použitelné např. pro ladění rezidentních programů zapisujících na obrazovku
ERROR WINDOW - zobrazí chybové okno (pokud existuje)

Menu EDIT

Obsahuje služby pro práci s bloky a s clipboardem. Blok lze označit pomocí myši táhnutím na daném textu, nebo pomocí klávesy SHIFT a kurzorových kláves.

COPY - kopíruje označený blok do clipboardu
CUT - přesune označený blok do clipboardu
PASTE - kopíruje obsah clipboardu do dokumentu
UNDO - zruší předchozí akci
VIEW CLIPBOARD - ukáže obsah clipboardu v okně

Menu WINDOW

Obsahuje služby pro práci s okny:

TITLE - uspořádá editační okna tak, aby se nepřekrývala
CASCADE - uspořádá edtitační okna do kaskády
CLOSE ALL - zavře všechna editační okna
SIZE/MOVE - umožňuje pohyb a změnu velikosti aktivního editačního okna. Tato volba se uplatní u počítačů bez myši
CLOSE - zavře aktivní editační okno
ZOOM - maximalizuje / vrací původní velikost aktivního editačního okna
NEXT - aktivuje následující editační okno
PREVIOUS - aktivuje předchozí editační okno

Menu SEARCH

Obsahuje služby pro hledání textu

FIND - nalezne zadaný text
REPLACE - nahradí zadaný řetězec jiným
SEARCH AGAIN - provede další hledání již zadaného řetězce


ZÁVĚR

Shrneme-li předešlá fakta, můžeme konstatovat: Qasm zaplňuje díru v oblasti software pro vývoj programů v asembleru, jeho použití přináší uživateli podstatné ulehčení od zbytečných činností, vysoký komfort a známé prostředí stylu TVISION. Qasm obsahuje velké množství prostředků pro psaní v asembleru - hexadecimální kalkulačku a ascii tabulku využije prakticky každý programátor v JSA, přímá vazba na debugger - možnosti trasování, výpis paměti, výpis rezidentních programů...
Protože je QASM vytvořen stejným systémem jako BP, je jeho zváldnutí otázkou několika minut. Barevné zvýrazňování textu podstatně zvyšuje přehlednost editace, snížení rychlosti je na průměrně rychlém počítači zanedbatelné {na pomalejších strojích jej lze vypnout} Vysoká pružnost prostředí umožňuje po minimálních úpravách programu přizpůsobení se jakémukoli překladači asembleru i procesoru.
Qasm neobsahuje vlastní překladač, uživatel proto musí mít zakoupen Turbo Assembler. Tato nevýhoda však přináší také výhodu snadného upgrade překladače. Uživatelskou obrazovku lze prohlédnout pouze v textovém módu, díky tomu je ale přepínání obrazovek spolehlivější, neboť nebyly použity hardwarové služby videoadaptéru. Šetřič obrazovky vyžaduje adaptér VGA kompatibilní, k programovaní však není nutný - jedná se spíše o doplňkovou záležitost.
Zvýrazněný tisk lze použít pouze na tiskárnách kompatibilních s normou Epson, ostatní platformy mohou použít jen tisk ascii.
Help obsahuje některé užitečné informace a je možná jeho modifikace bez zásahu do programu - standardní hypertextový help *.HLP.
Všechny nastavitelné parametry a desktop se ukládají do souborů QASM.CFG a QASM.DSK. Většinu nesrovnalostí v konfiguraci je možné vyřešit smazáním těchto dvou souborů, nastaví se implicitní hodnoty a soubory se vytvoří znovu. Další vlastnost programu se týká spíše větších organizací, kde na jednom počítači pracuje více uživatelů: pokud je Qasm spuštěn z adresáře ve kterém se nalézají konfigurační soubory, pak se tyto použijí. Jinak se použije konfigurace z domovského adresáře Qasmu. Pokud si chce uživatel vytvořit vlastní konfiguraci ve svém adresáři, spustí Qasm z tohoto adresáře. V této chvíli Qasm použije konfiguraci z domovského adresáře. Poté zvolí uživatel volbu QPTOINS - SAVE TO ACTUAL. Qasm vytvoří nové konfigurační soubory v aktuálním adresáři a začne do nich ukládat. Příští spuštění QASMu z tohoto adresáře již bude bezproblémové. Toto řešení je praktické, neboť snižuje pravděpodobnost zaplnění velkého prostoru na disku konfiguračními soubory.
Důkazem použitelnosti QASMu budiž fakt, že jej v současné době používá SPŠE Pardubice k výuce programování v asembleru.