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
parametrvýznam
115200115200 baudů
cs88 bitů
clocalzákaz modemových řídících signálů
creadpovolí příjem
-cstopbjeden stop bit
parentbbude generovat a očekávat paritní bit
-paroddlichá parita
crtsctspovolí RTS/CTS handshaking, tj. hardwarové řízení toku dat
rawignoruje ří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

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

[ 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.