====== Z80 assembler ====== LnxSpectrum obsahuje i Assembler editor, ve kterém je možné vytvořit vlastní projekt určený pro ZX Spectrum 48 / 128 / Didaktik Gama. V kompileru pro procesor Z80 je možné povolit zápis do ROM, takže je možné vytvořit si i vlastní ROM. Kompiler umí pracovat s rozšířením paměti v ZX Spectrum 128 a Didaktik Gama. Přímo v kódu můžete rozhodovat, ve které pamětové stránce následující kód bude. Kompiler lze řídit direktívy ORG, ENT, DEFB, DEFW, DEFM, DEFS, FILL, HFILL, INCLUDE, MODEL, RAMPAGE, ROMPAGE, ROM_WRITE_ENABLE, #region, !návěstí. Jejich popis najdete [[lnxspectrum:asm_direktivy|zde]]. Do projektu lze přilinkovat nejen externí soubory (například BIN, ASM, SCR, BINC a jiné), ale i interní knihovny obsažené v kompileru. Jejich seznam najdete [[lnxspectrum:asm_knihovny|zde]]. Jedná se o pomocné rutiny, jako například rozbalování komprimovaných dat. {{:lnxspectrum:pic2.jpg?nolink|}} ====Funkce podle menu:==== ^File / ^^ |New project: |Vytvoří novou složku s projektem.| |Open project: |Otevře existující projekt (projekt musí obsahovat soubor "main.asm").| |Save project: |Uloží editovaný soubor v projektu.| |Save and Close project: |Uloží editovaný soubor v projektu a zavře projekt.| ^Edit / ^^ |Undo / Redo |Vrací nebo reaplikuje změny.| |Copy / Paste / Cut |Kopírovat / Vložit / Vyjmout označený text| |Find / Replace |Najít / Nahradit| |Find next |Najít další| |Find Label|Pokud je kurzor na návěstí, a pokud je hodnota návěstí známa, přesune kurzor na pozici, kde je návěstí definováno.| |Add / Remove breakpoint |Pokud je známá adresa instrukce v paměti, na které se nachází kurzor (projekt se zkompiloval bez chyb a vytvořil se kód) je možné přímo z editoru vložit nebo odstranit Breakpoint.| |Remove All Breakpoints |Odebere z celého dokumentu všechny Breakpointy.| |Text Format |Pokud text není správně naformátován (například z důvodu vkládání z jiného editoru), text se správně přeformátuje. | ^View / ^^ |Watch / CallStack |Otevře okno, ve kterém se zobrazují výsledky #Watch funkcí, nebo se zobrazí seznam adress posledně vykonaných instrukcí CALL / RST. | |Memory |Zobrazuje výpis paměti v bajtech, ve wordech a znaky v Ascii | |Last Edited Line |Vrátí kurzor za posledně měněný znak. | ^Export / ^^ |Save Binary |Uloží obsah paměti ve zvoleném rozsahu do souboru, ve formatu *.bin, nebo ve zkomprimované formě ve formátu *.binc| ^Compiler / ^^ |AutoCheck |Pokud je povolené, automaticky po každé změně ve zdrojovém kódu provede kompilace, a tím ukáže již při editaci vzniklé chyby. Pokud není povolené, kompiler se musí spouštět ručně (tlačítka Build, Run, Run from Basic).| |AutoBuild |Pokud je povolené, ukládá při každé automatické kompilaci strojový kód přímo do paměti emulovaného počítače. Pokud není povolené, strojový kód se nikam neukládá (jen simulace). Pokud strojový kód uložit chceme, musíme použít ruční kompilaci (tlačítko Build, Start, Start from Basic).| |AutoReplace JR > JP |Pokud je povolené, automaticky nahradí při kompilaci relativní skoky (JR) které jsou mimo rozsah, a nahrazuje je absolutním skokem (JP). Ačkoliv je funkce skvělá, je vhodná spíše pro dočasné použití při psaní části kódu, protože při každém nalezeném JR mimo rozsah se musí opakovat celý jeden průchod kompileru. To prodlužuje čas kompilování někdy i mnohonásobně.| ^Debug / ^^ |Build |Vygeneruje strojový kód.| |Build and Start |Vygeneruje strojový kód a spustí od adresy ENT.| |Build and Start from Basic |Vygeneruje strojový kód a spustí z Basicu (pouze s 48K ROM).| |Run |Spustí Z80 emulaci.| |Stop |Zastaví Z80 emulaci.| |Step |Provede se jeden krok následující Z80 instrukce.| |Step over |Provede následující Z80 instrukci. U CALL, RST, LDIR, HALT a podobných instrukcí se provedou všechny kroky najednou. | |Show CPU stats |Zobrazí stav procesoru přímo v ASM editoru - pro účely trasování kódu přímo v editoru. | |Reset t-stats |Vynuluje počítadlo taktů procesoru. | |Show in HEX |Hodnoty procesoru se bude vypisovat v HEX formátu. | |Visible all video changes |Všechny video změny jsou viditelné. Povolením této funkce uvidíme při trasování programu okamžitě změnu, prováděnou ve videoram. Standartně bysme tuto změnu uviděli až po prolétnutí obrazového paprsku televizoru. Obrazový paprsek prolétává přes obrazovku 50x za sekundu, jedno obnovení obrazovky trvá 20ms. | | Visible Beam position |Na levé straně se bude zobrazovat značka, kde se zrovna vykresluje paprsek na televizoru. | ==== Tlačítka ve spodní liště: ==== |Build |Vygeneruje strojový kód.| |Start |Vygeneruje strojový kód a spustí od adresy ENT.| |Start from Basic |Vygeneruje strojový kód a spustí z Basicu (pouze s 48K ROM).| |Run |Spustí Z80 emulaci. | |Stop |Zastaví Z80 emulaci. | |Step | Provede se jeden krok následující Z80 instrukce.| |Step over | Provede následující Z80 instrukci. U CALL, RST, LDIR, HALT a podobných instrukcí se provedou všechny kroky najednou. | |Find debug line |Přesune kurzor v Editoru na pozici instrukce, která je na adrese registru PC |