Já vím, já vím… Není to nic nového, ale mě to baví. Pokud byste někdo hledali online assembler pro staré osmibitové procesory, tak je tady.

ASM80 je online editor / assembler / emulátor pro osmibitové procesory.

 

ASM80 ukládá soubory ve vašem prohlížeči. Nenajdete je tedy ani na svém disku, ani na serveru. Pokud s nimi chcete pracovat mimo IDE, můžete si celý pracovní prostor (workspace) stáhnout jako ZIP soubor. V budoucnu přibude možnost ukládat si pracovní prostory a soubory na serveru.ASM80 pro práci nevyžaduje přihlašování ani zakládání účtu.

1. Konvence

Assembler rozlišuje typ procesoru podle přípony:

Přípona Procesor
.a80 Intel 8080 / 8085
.z80 Zilog Z80
.a65 MOS 6502

Pokud nepozná typ podle přípony, zkouší najít pseudoinstrukci „.cpu“

Po úspěšném překladu souboru filename.ext (např. pokus.a80) vzniknou soubory filename.ext.hex a filename.ext.lst (pokus.a80.hex a pokus.a80.lst), které obsahují přeložený kód ve formátu INTEL HEX a listing překladu.

Assembler nerozlišuje mezi velkými a malými písmeny, interně si názvy instrukcí i návěští překládá na velká písmena. Název návěští smí obsahovat znaky A-Z, 0-9, – a _.

2. Instrukce pro preprocesor

Instrukce pro preprocesor začínají vždy tečkou. Provedou se ještě před parsováním zdrojového textu.

Pseudoinstrukce Význam
.include filename Vloží obsah jiného souboru do tohoto místa.
.macro macro_name Označuje začátek definice makra. Tyto definice nelze vnořovat.
.rept počet Zopakuje instrukce od tohoto místa až po .endm tolikrát, kolik říká parametr
.endm Konec definice makra / smyčky REPT

2.1. Makra

Makro se definuje pomocí pseudoinstrukcí .macro a .endm. Parametry jsou číslovány od 1 a odkazovány pomocí zápisu %%1, %%2, %%3, …

.macro decadd
   adi %%1
   daa
.endm
; Ukázka použití
 decadd $22

Výsledný kód je:

0000 ; Ukázka použití 
 **MACRO UNROLL - DECADD
0000 87 22 ADI $22 
0001 27    DAA

3. Pseudoinstrukce

Slouží k ovlivnění běhu překladače nebo pro vložení obsahu do výsledného kódu. Některé z nich lze z důvodu zpětné kompatibility používat bez úvodní tečky, ty jsou v následující tabulce uvedené bez tečky (ale lze použít i tečkovanou verzi).

Pseudoinstrukce Význam
db (alias: defb) Vložení bajtů. Umožňuje DB čísel i řetězců. Lze použít syntaxi 10 DUP (123) – N krát zopakuje to, co je v závorce.
dw (alias: defw) Vložení slov. Lze použít syntaxi 10 DUP (123) – N krát zopakuje to, co je v závorce.
ds (aliasy: defm,defs) Vložení prázdného místa
org addr Nastavení počáteční adresy překladu
.ent addr Nastavení adresy, od které se kód spustí v emulátoru. Použití např.: .ent $
equ (alias: =) Přiřazení hodnoty návěští. Např. VIDRAM equ $4000
.if cond Podmínka – blok instrukcí až po .endif se vloží pouze tehdy, pokud podmínka platí (výraz je nenulový)
.ifn cond Podmínka – blok instrukcí až po .endif se vloží pouze tehdy, pokud podmínka neplatí (výraz je nulový)
.endif Ukončuje blok s podmínkou. Pozor! Podmínky nelze vnořovat!

 4. Výrazy a čísla

Assembler z důvodu kompatibility umožňuje zápis v různých formátech. Decimální čísla se zapisují bez jakéhokoli prefixu či postfixu (10,42,-5). Hexadecimální v několika různých tvarech – s prefixy 0x nebo $ či s postfixem h: 0x12AB, $12AB nebo 12ABh jsou ekvivaletní zápisy. Binární konstanty se zapisují pomocí prefixu „%“ nebo postfixem „b“: 01001b / %01001

Parser v assembleru zvládne i složitější matematické výrazy se závorkami apod. Lze použít operátory +, -, *, /, % (modulo), # (modulo – alias k % kvůli komaptibilitě) a další. Ve výrazech lze použít návěští v roli proměnných. Lze použít i pseudoproměnnou $, která obsahuje aktuální hodnotu čítače adres.

5. Emulátor

IDE obsahuje jednoduchý emulátor procesorů 8080 a 6502 (Z80 je v přípravě). Stiskem F10 proběhne překlad a spustí se emulátor. Můžete krokovat instrukce po jedné nebo po 50 a můžete měnit obsah registrů (změna obsahu paměti zatím není implementována)

Dotazy a připomínky

K posílání dotazů a připomínek slouží ikona otazníku v pravém horním rohu. Upozorňuju předem, že ASM80 funguje pouze v moderních prohlížečích (IE9 a novější, Firefox, Chrome).

Demo

Pomocí následujících odkazů si můžete do svého pracovního prostoru přidat připravené zdrojové kódy:

Další demokódy budou následovat. Máte-li nějaký námět nebo nabídku, pošlete mi jej, díky.

Roadmap

(nikoli v pořadí důležitosti)

  • emulace Z80
  • Emulátory počítačových sestav (PMI-80, BOB-85, TEMS 80-03 a další)
  • Podpora procesorů 680x
  • Možnost uložit si soubory z prohlížeče na serveru, přidat k nim dokumentaci, zveřejnit je jako knihovny
  • otevřené API pro vytváření dalších emulačních modulů