Patch pro 48k ROM a SIF
Úvod
Pokud máte SIF, pak určitě chcete snadno a rychle načítat data z PC. Pár užitečných programů už existuje, ale pro vývoj nových programů se mi velmi osvědčuje upravená 48k ROM. Zvláště v případě programů, které nelze testovat v emulátorech, protože využívají hardware dosud neemulovaný.
V praxi to funguje tak, že na PC prostě pomocí cat ./filename > /dev/ttyS1 pošlu data a na ZX Spectru je načtu pomocí příkazu Sinclair BASICu LOAD "". Podobně to funguje i opačným směrem, jen PC musí data přijímat. V případě potřeby lze samozřejmě použít i příkazy MERGE a VERIFY. Pokud program používá BASICové příkazy, nebo volá ROM na adresách
Co potřebuji k provozu?
RS232 interface SIF, bez něj to nemá smysl. Dále ZX Spectrum s možností úpravy ROM a to je vše. Nezáleží na tom, jestli úpravu ROM realizujete pomocí DivIDE, nebo ISO ROM 128, nebo čehokoli jiného.
Ve většině případů by dokonce nemělo ani záležet do jaké ZX ROM budete patch aplikovat. Určitě by měl fungovat s originální 48k ROM, testován je s ISO ROM. Možná by mohly být problémy v nějaké Turbo ROM, kde jsou modifikované TAPE IO rutiny, netuším, nezkoušel jsem.
Oproti odchytávání LOAD/SAVE v emulátorech, DivIDE ... to má samozřejmě jeden zásadní problém. ZX ROM je potřeba upravit a proto se její malá část zároveň stane nekompatibilní v případě nestandardního volání. Programů kterým to vadí pár je, takže není úplně vhodné tuto úpravu programovat do EPROM napevno, na druhou stranu pro určité situace není pohodlnější řešení.
Určitě nebudou fungovat programy, které pro načtení ROM využívají rutiny v ROM nestandardně, nevolají je stejně jako při zpracování příkazů na adresách 1218 a 1366, nebo mají vlastní rutiny pro čtení dat z magnetofonu, např. Turbo, nebo zobrazují efekty během načítání dat. To ostatně nebude fungovat ani na DivIDE.
Ovládání
Program má dvě rutiny, jenž je občas nutné zavolat pomozí RANDOMIZE USR. Ano, bylo by možné to řešit složitou úpravou, modifikovat nějaký příkaz, který tuto funkci vykoná, ale mně osobně by to žádnou výhodu nepřineslo. Můžete to realizovat sami, zdrojové kódy jsou k dispozici.
RANDOMIZE USR 1294 - inicializuje SIF, toto je nutné spouštět po každém stisknutí tlačíka reset, nikoli po resetu softwarovém (např. NEW)
RANDOMIZE USR 1494 - čte data tak dlouho, dokud nějaká přicházejí a zahazuje je, tímto se vyčistí všelijaké buffery RS232 rozhraní, zvláště v případě USB - RS232 rozhraní, které má buffer veliký několik set bytů až jednotky kB
Data posílaná z PC musí být ve formátu TAP. Stejně tak data, která bude ZX Spectrum generovat jsou ve formátu TAP a získaný soubor půjde bez problémů načíst v emulátoru. Formát TZX nebudu podporovat. Je to zbytečné a obtížně realizovatelné, navíc s omezením na takový obsah TZX souboru, který obsahuje data ekvivalentní TAP.
V Linuxu lze sériový port pro tento patch nastavit např. takto.
stty -F /dev/ttyS0 115200 cs8 clocal cread -cstopb parenb -parodd crtscts raw stty -F /dev/ttyS1 115200 cs8 clocal cread -cstopb parenb -parodd crtscts raw stty -F /dev/ttyUSB0 115200 cs8 clocal cread -cstopb parenb -parodd crtscts raw
parametr | význam |
---|---|
115200 | 115200 baudů |
cs8 | 8 bitů |
clocal | zákaz modemových řídících signálů |
cread | povolí příjem |
-cstopb | jeden stop bit |
parentb | bude generovat a očekávat paritní bit |
-parodd | lichá parita |
crtscts | povolí RTS/CTS handshaking, tj. hardwarové řízení toku dat |
raw | ignoruje řídící znaky |
Zdrojové kódy se zvýrazněním syntaxe
- clear - přijme a zahodí data z bufferů
- init - nastaví SIF na 115200bps, lichou paritu, HW řízení toku dat ...
- install - zapíše patch do 48k ROM, pokud je instalována ISO ROM 128
- load - obsluha čtení dat
- save - obsluha zápisu dat
Pokud nepoužíváte ISO ROM 128, pak ignorujte instalační kód. Musíte si poradit nějak sami, podle svého hardwarového řešení.
Zapojení kabelu lze nalézt zde, je potřeba kabel s překříženými signály pro propojení dvou počítačů (DTE-DTE nullmodem).
Download
- 2010-02-14_sif-rom_patch.tar.bz2 - kompletní patch včetně zdrojáků a instalační utilitky do ISOROM - BZ2 10kB
- 2014-05-05_sif-rom_patch.tar.bz2 - Duskyho vylepšená verze kompatibilní s DivIDE - BZ2 26kB
Historie změn článku
- 2007-10-21 - zveřejněna první verze článku.
- 2007-10-26 - doplněna fotka z reálného provozu.
- 2014-05-05 - opravena inicializace stty, doplněn Duškyho patch kvůli kompatiblitě s ESXDOSem
- 2014-12-25 - aktualizovány html zdrojáky na které jsem zapomněl