Jak zprovoznit vývojářské prostředí pro ZX Spectrum v Debian 13

Motivace

Tento článek volně navazuje na předchozí, který se týkal Debianu 9. S takto instalovanými emulátory, kompilerem a utilitami jsem vydržel několik upgradů až do Debianu 12. Ale protože nyní (srpen 2025) vychází Debian 13 a protože chci zprovoznit maximum toho, na co jsem už zvyklý v právě přicházející verzi novéhu Debianu na nově instalovaném počítači, tak to beru jako příležitost projít celým procesem znovu a při tom sepsat, jaké potíže bylo nutné tom překonat. Cíle jsou tedy podobné jako minule.

Předpoklady a cíle

  • Debian 13.x Trixie - víceméně vanilla po upgradu z čisté instalace Debian 12 Bookworm
  • chceme programovat v BASICu i Z80 Assembleru
  • potřebujeme solidní emulátor, ideálně víc než jeden ve kterém se bude vše spouštět
  • kompilací chceme získat univerzální všeobecně kompatibilní TAP a třeba i jiné formáty
  • potřebujeme další utility pro prohlížení, konverze a obecně pro práci s ZX Spectrum formáty souborů
  • potřebujeme utility pomocí kterých lze dostat data i do reálného počítače
  • potřebujeme vhodný textový editor se zvýrazněním syntaxe

Pokud to bude možné, budu preferovat instalace z repozitáře Debianu, ale protože ZX Spectrum se dostává mimo hlavní proud zájmu a protože rychle mizí podpora 32bit knihoven a s ní kompatibilita se starými programy, je klidně možné, že to toho bude v repozitáři méně než kdysi a nastane víc problémů s kompatibilitou. Zároveň doufám, že alespoň něco z toho, co tu sepíšu bude přenositelné a použitelné v jiných linuxových distribucích, ačkoli na to spoléhat nelze, už před pár měsíci jsem např. zjistil, že v Gentoo Linuxu poslední verze emulátoru Fuse nejde zkompilovat.

Rozložení klávesnice

Jako správný Sinclairista jsem zvyklý na QWERTY a výchozí QWERTZ je pro mě nepřijatelné, neustále se pletu. To se nastavuje pomocí dpkg-reconfigure keyboard-configuration, viz https://wiki.debian.org/Keyboard.

dpkg-reconfigure keyboard-configuration
service keyboard-setup restart

V rozporu s návodem nestačilo restartovat službu, nebo se jen přihlásit, musel jsem rebootovat.

Krom výchozího rozložení klávesnice je nutné přidat i přepínač klávesnice pro grafické prostředí (aplet přepínač klávesnice v LXDE, analogicky jinde... pro přepínáni jsem zvolil levý Alt + levý Shift), protože Fuse emulátor neumí pracovat s českou klávesnicí a pokud není klávesnice přepnutá na US, tak nefungují čísla. Takže buď je nutné to udělat v prostředí pro okno emulátoru, nebo přepnout v terminálu pomocí setxkbmap us před spuštením emulátoru.

Webový prohlížeč

Pokud používáte Firefox, vypněte telemetrii a sponzorované zkratky. V Debian 13 je dále k dispozici Konqueror, nebo Chromium. Brave v repozitáři není.

Osobně si nejsem jistý jestli Brave není z bláta do louže a jestli celý hype okolo něj povede k něčemu dobrému. Situace se mění a čas ukáže kam to celé povede.

FUSE Emulátor

Solidní emulátor je základ a Fuse Emulátor stále patří k nejlepším i když jeho rozvoj je aktuálně minimální a dosud nepodporuje nové možnosti ZX Spectrum Next nebo eLeMeNt ZX, ani Didaktik Gama. Přesto se mi s ním pracuje velice dobře a používám ho rád, pokud je k dispozici. V emulátoru využívám převážně ZX Spectrum 128k +2 s ISOROM a Betadiskem (ROM ke stažení zde).

apt install fuse-emulator-gtk fuse-emulator-utils

A samozřejmě povolit všechny závislosti, které si emulátor vyžádá. Krome toho potřebujeme i standardní Sinclair ROM, ty se ukrývají v balíčku spectrum-roms, ale aby bylo možné balíček instalovat je nejprve nutné povolit v /etc/apt/sources.list i non-free nikoli pouze non-free-firmware a potom apt update.

apt install spectrum-roms

Všechny balíčky viz https://packages.debian.org/sid/fuse-emulator-common.

Kompilovat Fuse emulátor jsem tentokrát nezkoušel, protože tentokrát je v repozitáři Debianu poslední existující verze. Pokud hledáte zdrojáky, jsou zde https://fuse-emulator.sourceforge.net/.

screenshot

Emulátor FBZX

Musím se přiznat, že tento emulátor téměř nepoužívám, ale narozdíl od Fuse Emulátoru v něm funguje celoobrazovkový režim a pokud vám nevadí chybějící emulace disketových a jiných úložišt, vystačíte pouze s emulací magnetofonu, tak není špatnou volbou.

FBZX emulátor už se taky nerozvíjí a repozitář je od ledna 2019 archivovaný pouze pro čtení - viz https://github.com/rastersoft/fbzx, ale v tuto chvíli poslouží jako první program k prošlapání cesty k dalším kompilacím. Po rozbalení můžeme zkusit make na Makefile a nejspíš selže na absenci zdrojáků SDL.

apt install libsdl-image1.2 libsdl-image1.2-dev libsdl-sound1.2 libsdl-sound1.2-dev \
libsdl-mixer1.2 libsdl-mixer1.2-dev libsdl-net1.2 libsdl-net1.2-dev libsdl2-dev \
libsdl2-compat libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-2.0-0 \
libsdl2-net-dev libsdl2-ttf-dev

A spolu s tím všechny závislosti... ale FBZX se mi zkompilovat nepodařilo. Viz screenshot, dál jsem se prozatím nepokoušel.

screenshot

Emulátor Spectral

Spectral je novější emulátor, stále aktivně vyvíjený, ke stažení zde https://github.com/r-lyeh/Spectral. Po rozbalení mě překvapilo a znechutilo MAKE.bat a málem jsem nepokračoval dál, ale znovu jsem se podíval na GitHUBu do popisu, kde je podpora Linuxu jasně uvedena a postupoval dále podle něj. Nejprve jsem omylem kompiloval pod rootem, což proběhlo bez protestů a chyb. Spuštění nikoli, skončilo pouze nápisem v terminálu a nic víc se nestalo. Divné, že emulátor neoznámil, že nemá přístup ke grafice. Naivně jsem očekával, že v průběhu taky nabídne instalaci do /user/local, ale nestalo se. Zjevně autor nemá cit pro správné linuxové postupy a zvyklosti.

Zkusil jsem i kompilaci pod neprivilegovaným uživatelem a skript MAKE.bat proti všem zvyklostem chtěl heslo roota, nejspíš kvůli ověření přítomnosti potřebných balíčků (je to tak ve skriptu). Ale i když jsem ho zadal 3x špatně tak kompilace proběhla korektně. Pravděpodobně si chybějící balíčky doinstaloval při prvním pokusu.

screenshot screenshot

Z roota jsem emulátor překopírovat do home neprivilegovaného uživatele, změnil vlastníka souborů a spustil tam. Což proběhlo. Uvítal mě realistický, hnusně zarušený obraz jako skrz kompozitní video, což může být fajn, pokud si to člověk chce jednou zkusit, ale na delší používání to je otravné a nežádoucí (proč asi chceme u reálných strojů RGB, VGA, nebo HDMI výstup?). Nastavovací menu nepřehledné, něco v něm najít podle jednopísmenkových zkratek a nesmyslných symbolů je peklo. Tak neintuitivní ovládání jsem už dlouho neviděl.

Takže zprovoznit to jde, ale to je vše, co k tomu teď mohu říct. Zkoušení ponechám na někom jiném.

Emulátor LnxSpectrum

LnxSpectrum https://www.ilnx.cz/lnxsp/ je omezený na jednu zastaralou a neperspektivní platformu od šmírovací megakorporace. Ač bych tento emulátor používal rád, Lanexovy výtvory jsou moc pěkné, tak toto je nepěkná komplikace.

Přesto jsem to hned úplně nevzdal a zkusil jsem odsud https://www.ilnx.cz/downl/ stáhnout alespoň portable verzi, jestli nebude fungovat ve Wine. Wine už mám nainstalovaný, začal jsem tedy spuštěním winecfg, který v home uživatele vytvořil složku .wine a v nastavení jsem zvolil Windows 7 doufaje, že to bude správný kompromis mezi příliš starou a příliš novou verzí. Potom jsem rozbalil obsah staženého ZIPu do složky ~/.wine/drive_c/lnxspectrum. Emulátor se mi spustit nepodařilo, instalaci knihoven z Prerequisities taky ne. Tudy cesta nevedla.

Zkusil jsem tedy wintricks, stáhnuté odsud https://packages.debian.org/trixie/winetricks. Balíček jsem rozbalil a spustil winetricks ze složky src. Proklikal jsem se k instalaci knihoven a zvolil instalaci .NET 4.0, protože je v požadavcích emulátoru napsaný. Vyžádalo si to instalaci architektury i386 pomocí:

dpkg --add-architecture i386 && apt-get update && apt-get install wine32:i386

To chvíli trvalo, balíčků bylo opravdu hodně, ale nakonec proběhlo. Potom jsem zkusil instalovat emulátorem požadované knihovny znovu (dotnet40, dotnet40_kb2478871 a xna40). Zároveň jsem zaškrtl k instalaci i dsound a dswave. Nevím, jestli je to potřeba, ale pro jistotu. Skript mě varoval, že používám 64bit Wine, ale tentokrát to snad proběhlo korektně. Ale opět se ani jedna z verzí emulátoru nespustila, ani 32bit portable, ani 64bit.

~/.wine/drive_c/lnxspectrum64$ wine LnxSpectrum.exe 
MESA-INTEL: warning: Haswell Vulkan support is incomplete
MESA-INTEL: warning: Haswell Vulkan support is incomplete
screenshot

Varování o nekompletní podpoře grafiky se zobrazuje před spuštěním čehokoli i regeditu a notepadu. Emulátor nejspíš selhává kvůli problémům s .NET / Mono. Ale nemám chuť to důkladněji zkoumat. Pro mě to v tuto chvíli znamená, že LnxSpectrum je v Linuxu nepoužitelný. Pokud se někomu podaří dát dohromady spolehlivý funkční postup, rád ho sem přidám.

textový editor se zvýrazněním syntaxe

Stejně jako v minulosti i teď bude potřeba nějaký textový editor vhodný k programování se zvýrazněním syntaxe. Já jsem si oblíbil Kate, resp. KWrite z K.D.E., protože je pro mě tak akorát mezi minimální otravností velkého molochu a zároveň je velmi příjemně ovladatelný s klávesovými zkratkami a drobnými vymoženostmi na které už jsem zvyklý. Sice poslední dobou musím vypínat a ukrývat víc panelů a ikonek než v minulosti, ale to je třeba udělat jen jednou. Taktéž zjednodušit přechytralé odsazování, které se do assembleru hloupě plete.

Editor už instalovaný mám z repozitáře, přidávám pouze písmo, které se mi líbí. Lze zadat:

apt install kwrite kate fonts-terminus

Pak je potřeba stáhnout soubor s definicemi zvýraznění syntaxe Z80 assembleru. Kdysi jsem používal svůj, ale ten, co je nyní součástí kompileru sjasmplus je lepší. Pouze jsem si do staženého XML souboru přidal příponu za v extensions="*.za;*.asm;*.a80;*.s", protože takové přípony používám k odlišení od obecného asm, což může být assembler pro libovolný procesor.

screenshot

kompiler BASICu

Stahoval jsem odsud https://github.com/speccyorg/bas2tap. Kompilace příkazem make proběhla bez problémů. Makefile předpis pro instalaci neobsahuje, nutno do /usr/local/bin zkopírovat ručně.

Stručný návod je taktéž na GitHubu, přinejmenším se hodí ke kompilaci komplikovanějších zavaděčů než je schopen produkovat bin2tap (viz dále). Málokdo už programuje pouze v BASICu, ale je to základní jazyk na ZX Spectrum, takže i BASIC by měl fungovat.

screenshot screenshot

KWrite pro příponu .bas použil zvýraznění pro jiný BASIC než je ten ze Sinclair ROM, částečně je to taky použitelné, ale některé příkazy chybí.

makroassembler - AS

Macroassembler AS je můj oblíbený kompiler, mnozí považují sjasmplus za lepší, ale mě na AS nic zásadního nechybí, je časem prověřený a pro moje programy zcela dostačující. Snad jedině název mohl autor zvolit nalezitelnější. Stahoval jsem odsud http://john.ccac.rwth-aachen.de:8000/as/download.html a můžete stahovat i pomocí wget, protože web je, jak se patří jednoduchý, zcela bez zbytečností a zdržujících javascriptů.

wget http://john.ccac.rwth-aachen.de:8000/ftp/as/source/c_version/asl-current.tar.gz

Před kompilací je nutné soubor Makefile.def.tmpl přejmenovat, nebo zkopírovat do Makefile.def. Upravovat skript potřeba není, už je připravený pro kompilaci na Linuxu. Zkompilujte příkazem make. Po zkompilování pod rootem nainstalujte do /usr/local příkazem make install.

cp Makefile.def.tmpl Makefile.def
make
su -l
make install

Stejně jako kompilace i instalace proběhla bez problémů. Chybové hlášky o chybějícím pdflatex lze ignorovat, týká se pouze manuálů. Ale pokud byste chtěli i manuály v PDF, pak před instalací AS nainstalujte balíčky:

apt install texlive-latex-base texlive-latex-extra texlive-lang-german

To by mělo stačit k tomu, aby proběhla instalace makroassembleru bez protestů i s vytvořením manuálů v PDF. Budou k nalezení v /usr/local/doc/asl.

screenshot screenshot screenshot

makroassembler - sjasmplus

Začal jsem stáhnutím poslední verze odsud https://github.com/z00m128/sjasmplus a rozbalil jsem stažený ZIP do podsložky. První pokus o instalaci selhal na absenci LuaBridge.h, zkusil jsem doinstalovat lua knihovny z repozitáře, ale LuaBridge jsem v repozitáři nenašel. Stahoval jsem tedy odsud https://github.com/vinniefalco/LuaBridge. Kompiloval jsem podle návodu:

apt install cmake git libgtest-dev

Protože jsem s tím trochu zápasil, nejsem si zcela jistý, jestli jsem nedoinstaloval i nějaký další balíček, resp. který z instalovaných by mohl při kompilaci sjasmplus ještě chybět, kromě uvedených. A potom už bylo možné provést:

cmake -DCMAKE_BUILD_TYPE=Debug -B build
cd build
make -j

A pak můj notebook zatuhl. Musel jsem ho vypnout, protože přestal reagovat na cokoli. Spustil jsem make -j znovu, tentokrát jsem sledoval výpis, kde se to zastavilo na 96% při Test53. Počkal jsem cca 10 minut až se restartoval XOrg, nejspíš kvůli nedostatku RAM. A tím moje pokusy o kompilaci sjasmplus skončily, protože bez LuaBridge nelze pokračovat.

Pokud assembler pro Z80 vyžaduje knihovnu která se nezkompiluje s 8GiB RAM s 2GiB swapu na SSD... Jasně, 8GiB RAM je dneska velmi málo, ale i tak.

základní sada pomocných utilit - zxspectrumutils

Stahoval jsem odsud z webu projektu https://sourceforge.net/projects/zxspectrumutils/, přesněji z sekce files https://sourceforge.net/projects/zxspectrumutils/files/, po rozbalení proběhla kompilace obvyklým způsobem, zcela bez problémů.

./configure
make

Pak je potřeba přepnout na roota třeba pomocí příkazu su -l a nakonec ve stejné složce s utilitami:

make install

Výsledkem je sada utilit v /usr/local/bin.

binto0		bin2mbd		bin2tap		breplace
createtrd	dird80		dirhob		dirtap
dir0		dithvide	divideogen	d802tap
hobeta2trd	hobto0		lstbas		lstrd
makesna		mbdcheck	mbdidfix	mbdir
mbdirsec	mbdnew		mbload		mbrokfix
mb2tap		permutor	tapto0		tap2d80
tap2mbd		tap2mbhdd	tap2tzx		tm9tap
tsttap		tzx2tap		xzxs		0tobin
0tohob		0totap

V době, kdy jsem toto stahoval šlo o verzi 2025-01-25, která dosud neobsahuje nove verze mých utilit. Ty jsou více orientované na Linux a dosud si nejsem jistý, jestli budou funkční i na Windows, resp. jaké změny v kódu, především ve výpisu barev do terminálu (CMD) budou opravdu potřeba. Teprve potom je bude možné zařadit.

diskuze na Oldcompu

pomocné utility - lstap, lstrd a hobeta2trd

Pokud už nejsou součástí předchozí sady, což 2025-07-29 nebyly, tak mnou zveřejněné poslední verze jsou ke stažení zde. Kompilace proběhla bez problémů, až na to, že Makefile je zjednodušený na úplné minimum a neobsahuje předpis pro instalaci. Výsledné binárky je nutné do /usr/local/bin zkopírovat ručně.

pomocné utility - playtzx

Jednou z mnoha možností jak přenášet data do reálného hardwaru je přehrávání TAP skrz zvukovou kartu a tím napodobení magnetofonu.

Utilita playtzx je zastaralá, původní verze byla pro MSDOS a linuxová neumí pracovat s moderními zvukovými výstupy, pouze se zastaralým OSS. Odkaz na World of Spectrum už dávno nefunguje, naštěstí byl program distribuován se zdrojovými kódy a existují dva forky, novější z nich je zde https://github.com/kounch/playtzx.

Návod ke kompilaci je v README.

aclocal && autoconf && autoheader && automake --add-missing
./configure
make

A nakonec pod rootem...

make install
apt install oss-compat
modprobe snd-pcm-oss

Utilita se zkompiluje a nainstaluje, ale nehraje, protože neumí pracovat s moderním zvukovým výstupem. Zkusil jsem doinstalovat balíček oss-compat a modprobe snd-pcm-oss, ale to tentokrát už nepomohlo. Každý pokus skončí chybou "/dev/dsp: No such file or directory"

Přesto lepší než nic, protože se utilitou playtzx dají vytvářet VOC soubory a ty se pak následně dají přehrát pomocí Audacity. Je to méně pohodlné než používat playtzx přímo, ale v nouzi použitelné.

pomocné utility - sercp

Než řešit propojení zvukové karty, správnou úroveň hlasitosti (občas je nutný zesilovač) a čekat na pomalý přenos dat, je tu možnost přenášet soubory rychleji a spolehlivěji po RS232. Každé ZX Spectrum s AY-3-8912 může mít softwarovou RS232. Převodníků TTL-RS232 a RS232-USB je stále dostatek a od té doby, co Pavel Vymetálek napsal utilitu pro ESXDOS se tento způsob značně rozšířil i na různé klony a jiné RS232 porty (třeba SIF), nebo sériový port na joystick portu, který lze zapnout v konfiguraci MB03+ a eLeMeNt ZX (nutný převodník TTL-RS232, třeba MAX232).

Stahujte z webu autora, já jsem použil aktálně poslední verzi sercp-pc-0.8.1.tar.gz. Postup instalace je opět standardní - make pod uživatelem, make install pod rootem.

make
make install

Aby to správně komunikovalo, musíte mít sercp nainstalovaný i v ESXDOSu, aktuální verze je zde.

závěrem

Hádám, že to proběhlo relativně úspěšně jen díky tomu, že Debian je konzervativní linuxová distribuce. Je možné, že bych v jiné distribuci měl potíže minimálně se zprovozněním přijatelného emulátoru.

Odkazy

[ Zpět na hlavní stránku ]

Tento web je převážně o ZX Spectru, kompatibilních počítačích a jiném zajímavém hardwaru. Naleznete-li chybu, nebo byste rádi cokoliv co s tímto souvisí, můžete mi napsat email. Stručně o mém webu zde.