Z80 Cross-Assembler CP/M és HT1080Z-hez (C) Kollár Zoltán, zka@freemail.hu Ez az assembler kifejezetten a HT1080Z-hez készült, nincs túlbonyolítva, mégis leegyszerűsíti a nosztalgiázni vágyók életét. A program használata: Bármilyen text-editorral írjuk meg a programot és .asm fájlba mentsük el. A z80 filename [/ht] paranccsal fordítsuk le. filename.asm a forrásfájl, ebből a fordítás után filename.lst lesz a listafájl. A /ht paraméterrel filename.cas, anélkül pedig filename.com (cp/m) formátumú lesz az object fájl. Nincs szükség linkerre, az object fájlok azonnal futtathatók. v1.2a-tól: Használható a /ht mellett a /cas is, illetve a /cmd, ekkor cmd formátumban ment. Az assembler a z80 utasításokon kívül a következő képességekkel rendelkezik: ---------------------------------------------------------------------------- Cimkék: max. 15 karakteres hossz, max. 4000 db. (v1.2a -tól) Az 'A'..'Z', '0'..'9', '@', '_', '?' karaktereket tartalmazhatják, de nem kezdődhetnek számmal. A fordító nem tesz különbséget a kis- és bagybetűk között. A '$' vagy 'PC' az aktuális címet adja vissza. Pl: ld b,100h djnz $ ;Saját magát címzi A '@' karakterrel kezdődő cimke lokális cimke. Mi az a lokális cimke? ---------------------- Egy assembler program általában rengeteg ciklust tartalmaz, így a programozó nem győzné pl. a loop cimkéket sorszámozni. A lokális cimkékkel ez leegyszerűsödik, ugyanis egy általános cimke megszünteti az előzőleg felhasznált lokális cimkéket, így két vagy több rutinban is használhatók ugyanazok a lokális cimkék. pl: scroll: ld b,10 @loop: call newline djnz @loop ret space20: ld b,20 @loop: ld a,' ' call chrout djnz @loop ret Hogyan működik mindez a valóságban? ----------------------------------- A fordító megjegyzi az utolsó általános cimkét és hozzáfűzi a lokális cimkét. Ezért figyelembe kell venni, hogy így se haladja meg a cimke hossza a 15 karaktert. Az előző példában a következő 4 cimke jön létre: SCROLL SCROLL@LOOP SPACE20 SPACE20@LOOP Amíg nincs definiálva egy általános cimke, addig a 'MAIN' névhez fűzi hozzá a fordító a lokális cimkét. Egyebek: -------- ORG address ;PC beállítása, többször is használható END [address] ;Forráskód vége és start cím megadása HT1080Z-nél ;Magyarul a HT programok ezen a címen fognak indulni. label EQU value ;vagy label = value ;értékadás cimkének DB data[,data...] ;bájt méretű adatok DW data[,data...] ;szó méretű adatok DS size ;helyfoglalás a memóriában (00h-val tölti fel) például: DB 127,0FFh,'C' DW 1234h,15630,0 ;A bájtokat alsó-felső sorrendben tárolja DS 100 ;100 bájt hely lefoglalása include filename ;a forráskódba beilleszti a megadott (.asm) fájlt. ;maximum 3 mélységig ágyazhatók egymásba Matematikai kifejezések: (v1.2a-tól) A következő operátorok használhatók: +, -, or, xor *, /, (vagy mul, div), mod, and, shl, shr (vagy <, >) pl. display + 2 * width (display + column.width) * 3 Megjegyzés: ----------- A programot bárki ingyenesen használhatja, terjesztheti, de semmiféle anyagi ellenszolgáltatást nem kérhet érte! További jó nosztalgiázást mindenkinek.