Jdi na obsah Jdi na menu
 


25. 6. 2022

Assembler pro ZXS na Linuxu

Po delší odmlce a měsících na pokraji smrti kvůli covidu jsem si řekl, že bych sem mohl ještě před zánikem civilizace něco dát. Narazil jsem nedávno na bezva článek o tom, jak psát a zkoušet assemblerovské prográmky pro Spectrum pohodlně v prostředí Linuxu. A podobně by to mělo jít i ve Windows.

Zatím jsem psal assembler pouze ve svém oblíbeném assembleru Full Screen Editor/Assembler od fy OCP Jamese Hutchbyho. A to přímo a jen na samotném Spectru/Didaktiku. Mělo to trochu nevýhodu, že větší projekty se mi nevešly do paměti a musel jsem je kompilovat na vícekrát jako oddělené bloky kódu.

Článek mě navedl na metodu, jak dělat věci jednodušeji. Článek už je staršího data (2008), takže předpokládám, že skalní programátoři už danou metodu dávno znají. V principu jde o to, že si člověk napíše zdrojáky v obyčejném textovém editoru a zkompiluje je pomocí assembleru z80-asm.

sudo apt update
sudo apt install z80asm

Výstupem je binární soubor pro procesor Z80. Pro potřeby testování v emulátoru nebo spouštění na reálném stroji je potřeba ještě tento binární soubor zkonvertovat do formátu TAP. To lze provést pomocí utilit BIN2TAP nebo BIN2CODE. Na stránce se dají najít ke stažení binárky pro Windows (EXE), ale jsou tam i zdrojáky (source), které lze zkompilovat pro Linux pomocí gcc. Tyto verze pro Linux kdysi šlo stáhnout i z webu Retards.org, což je web autora článku. Ale zdá se, že už tam nejsou k dispozici. Já si je zkompiloval přímo na Linuxu pomocí gcc. Zkoušel jsem to úspěšně v Linux Mintu 19 a pak i na Raspberry Pi 400, na kterém teď píšu tento článek. V druhém případě to bylo již později večer, takže jsem s tím trochu bojoval...

Z80 Assembler on Linux

Autor článku si ještě pro zjednodušení ladění programů vytvořil skript, který mu zdrojáky zkompiluje, převede do TAP formátu a rovnou i spustí v emulátoru. Byl zde použitý emulátor Spectemu (xspect) od maďarského fandy Miklose Szerediho. Ten je sice bezva i když má trochu divoké uživatelské rozhraní, kde se jména nahrávaných souborů musejí zadávat trochu nepohodlně z příkazové řádky. Ale mě u tohoto emulátoru z neznámého důvodu vůbec nefungují číselné klávesy 2 až 6. Takže pro psaní nebo ladění programů je tento emulátor pro mě nepoužitelný. Proto jsem musel zvolit emulátor Fuse. Upravil jsem proto i dotyčný skript (makez80), aby se zkompilované TAPky spouštěly ve Fuse:

#!/bin/sh -e
# Usage: ./makez80 hello

z80asm $@.asm ; utils/bin2tap a.bin $@.tap ; fuse $@.tap

Autor v článku uvádí na zkoušku zdroják pro "Hello World", který se nechal inspirovat programem 99 Bottles of Beer on the wall, což je podle jakési trampské písničky.

Tak to je k tomu vše. Uvedenou metodu jsem úspěšně vyzkoušel a je to opravdu rychlá a příjemná metoda pro psaní assemblerovských kousků kódu.

Související odkazy:

ZX Spectrum Assembly Programming Under Linux

 

Komentáře

Přidat komentář

Přehled komentářů

cross assembler

z00m, 27. 6. 2022 14:18

Ďaleko sofistikovanejší je sjasmplus (https://tinyurl.com/2yt3p78s), ktorý je v spolupráci s rozšírením Z80 macro-asembler pre vscode (https://tinyurl.com/5ersmwrf) dnes snáď najlepšie prostredím na programovanie pre ZX Spectrum. Dokáže produkovať priamo TAPky a ďalšie formáty. Ak to náhodou nestačí, sú k dispozícii zxspectrum-utils (https://tinyurl.com/4xwsuskb). Všetko dostupné, alebo skompilovateľné pre všetky tri hlavné platformy - Linux, Win, aj Mac.

Re: cross assembler

Pedros, 1. 7. 2022 7:13

Díky za tipy. Vím, že existuje spousta sofistikovanějších řešení. Zkusím, jak bude trochu čas, se na některé podívat. Zmínku o SJASM jsem zahlédl v popisu nástroje ZX-Assembler z balíku ZX-Modules, který jsem si kdysi stahoval. Dnes už stránky ZX-Modules neexistují, ale jsou uchovány na mém disku a také je něco na serveru Archive.org (https://web.archive.org/web/20190912222451/http://www.zx-modules.de/). Zvažuji, že bych všechny ty utility z balíku ZX-Modules dal na blog ke stažení. Je to moc pěkně udělané i s parádní nápovědou. Teď jsem hlavně potřeboval nějak disassemblovat své programy ze Spectra a dostat assembler do textových souborů na PC. Abych mohl dělat úpravy. Protože přímý převod z OCP assembleru do texťáku asi nebude možný. To bych si musel něco napsat sám. Zatím jsem použil export z toho ZX-Assembleru, výsledek nahrál jako CSV soubor do Libre Office, kde jsem vybral jen sloupce s adresami a instrukcemi a zkopíroval přes schránku do texťáku. No, asi to půjde i jinak a lépe. Koukám teď ještě na projekt DeZog - https://github.com/maziac/DeZog. To vypadá dobře. Skoro jsem od 90. let na Spectru neprogramoval, tak jsem tyhle věci nepotřeboval. Teď se k tomu vracím po 30 letech.

include

dex, 26. 6. 2022 11:40

Spousta assemblerů na ZX Spectru umí include z microdrivu, takže se do zdrojáku dá vkládat a překládat hezky naráz, ale zrovna ten od OCP ne.