Pro všechny naše příklady a úkoly budeme potřebovat nějak přeložit zdrojový text do spustitelné podoby. Vzhledem k tomu, že se dnes již nepoužívá metoda programování přímo na speccy, i my se budeme učit používat PC (Pomocný Computer).
Nejprve budeme potřebovat nějaký slušný textový editor. Na Linuxu je jich spousty, pro začátek stačí Kate, Kwrite nebo obyčejný mc. Windows uživatelé musí nejprve stahnout něco normálního, notepad se dá přinejhorším použít.
Pak musíme stáhnout vlastní překladač. Tady používáme AS (http://john.ccac.rwth-aachen.de:8000/as/index.html). AS vyprodukuje soubor s binárním obsahem, takže ještě musíme mít program bin2tap (http://zeroteam.sk/utils.html).
Nakonec potřebujeme slušný emulátor, na kterém si přeložený kód vyzkoušíme. Pro Windows znám jen RealSpec a pro Linux se zdá býti slušný Fuse, ale RealSpecu nešahá ani po kolena, bohužel.
Soubory se zdrojovými texty ukládáme s příponou a80, na začátek textu vkládáme toto:
cpu z80undoc relaxed on
První direktiva oznámí překladači, jaký je použitý jazyk (překladač umí více jazyků) a druhý umožní používat pro zápis hexa a binárních čísel něco podobného jako PROMETHEUS (toto se hodí hlavně při převodu zdrojáků z PROMETHEA do ASu):
ld hl,$25AB ;hexa číslo ld a,%10101010 ;binární číslo ld a,@15 ;osmičkové číslo
Jinak lze pro zápis čísel použít tyto syntaxe:
ld hl,10000 ;dekadicky ld de,25ABh ;hexadecimálně ld a,1001b ;binární zápis ld b,15o ;osmičková soustava
Další odlišnost od PROMETHEA je zápis retězců:
db "Text1" ;normální text db "Text",'a'+128 ;text s posledním invertovaným znakem db 'A' ;pouze jeden znak dw 65535 ;16 bitové číslo db 255 ;8 bitové číslo ds 16 ;definuje prostor 16 bytů
Zdrojový kód přeložíme příkazem takto:
- Linux: asl soubor.a80 -L -E soubor.err
- Windows: as soubor.a80 -L -E soubor.err
Toto vyprodukuje soubor s koncovkou .p, ze kterého je třeba vyrobit binárku:
- Linux: p2bin soubor.p -r $-$
- Windows: p2bin soubor.p -r $-$
Z binárky vyrobíme pomocí bin2tap TAPku už se zaváděcím Basicem, abychom si ušetřili práci:
- Linux i windows: bin2tap soubor.bin -a adresa_zacatku -b
Pak už jen nasměrujeme emulátor na výslednou TAPku a sledujeme výplod naší usilovné práce.
Za domácu úlohu si skúste preložiť nasledujúci text:
sum.a80:
cpu z80undoc relaxed on MAIN ld a,h and 31 ld h,a ld de,16384 ld bc,6144 ldir ld a,191 in a,(254) rra jr c,MAIN ret
Tiež si vyskúšajte zapísať čísla v rôznych číselných sústavách, zapísať chybné čísla (napríklad 16384 nahraďte 16i) alebo chybné inštrukcie (ldir zameňte za ldiruj) a sledujte chybové hlásenia.