ISO ROM 128

Softwarové zvláštnosti ISO ROM 128

Velmi zajímavé rozšíření možností ZX Spectra s Betadiskem (i bez něj). Setkal jsem se s ním kdysi v Brně, v době kdy jsem na Speccy působil poněkud aktivněji než dnes. ISO ROM sama o sobě přináší několik změn v Basicu a pro Betadisk velmi užitečné zjednodušení zápisu příkazů. A to nahrazením dlouhého příkazu RANDOMIZE USR 15619: REM jediným vykřičníkem, takže pak můžete v basicu s TR-DOSem pracovat mnohem snadněji.

Spolupráce ISO ROM s Betadiskem

!!			(spustí Devast z ROM)
!			(zavolá DOS a zobrazí příkazový řádek DOSu)
!CAT			(zobrazí katalog disku, obdoba ls, nebo dir -w)
!LIST			(zobrazí podrobný katalo disku, obdoba ll, nebo dir)
!RUN			(pokusí se spustit boot.B)
!LOAD "filename"	(načte basicový program pojmenovaný filename)
!GOTO "snapshot" CODE	(načtě snapshot = obsah paměti, registry CPU ...)

Příkazy za vykřičníkem jsou stejné jako příkazy následující za příkazy "RANDOMIZE USR 15619: REM:". Výjimkou je volání Devastu, protože u tohoto příkazu v basicu vlastně jeden vykřičník chybí. Z příkazového řádku TR-DOSu se totiž volá taky !!.

Kromě tohoto má ISO ROM opraveny známé chyby originální ROM, dále po resetu nemaže paměť (lze zvolit v menu), má zjednodušenou syntaxi některých příkazů GOTO = GOTO 0, PAUSE = PAUSE 0 a pod., umí vypsat stav paměti pro interpretr Basicu příkazem =, umí pracovat přímo s čísly v hexadecimálním tvaru (před číslem je $) a ještě pár drobností. ISO ROM 128 je oproti 48k verzi doplněna o druhou 16kB stránku, mezi nimi se pak přepíná úplně stejně jako u standarního Speccy 128 (tedy OUT 253,16 a OUT 253,0). V této druhé stránce je umístěna tabulka (viz. pozadí stránky) s několika funkcemi a tři velmi užitečné zakomprimované programy, které lze spouštět z Basicu. Bohužel ve verzi, kterou vlastním je chyba a program B.D.E. je volán špatně, dochází k zatuhnutí. Je nutné před jeho spuštěním zadat OUT 239,6. Přes tuto chybu je zavolání z ROM mnohem jednodušší než hledání diskety a spouštění z ní. Snad se mi časem podaří chybu opravit, nebo získat lepší verzi ISO-ROM.

Užitečné programy v ISO ROM 128

Všichni, kdo kdy používali osmibitové počítače vědí jak zdlouhavé je načítání jakéhokoliv softwaru z disket, nebo dokonce z magnetofonových pásek. Autoři ISO ROM 128 to věděli také a některé velmi užitečné programy, které se používaly často při údržbě, nebo programování uložili do druhé stránky ROM a přidali několik příkazů do Basicu, aby je bylo možno velmi snadno vyvolat a použít.

  • KCOPY+ užitečný program vhodný ke kopírování a úpravě disket, v podstatě jednoduchý filemanager, který je mimochodem pravděpodobně úplně nejrychlejším programem tohoto druhu pro Betadisk (spouští se zadáním hvězdičky)
  • B.D.E: Beta Disk Editor, velmi dobrý Disk Doktor, umí vše kromě opravy nečitelných sektorů (spouští se zadáním šipky nahoru)
  • TOMPACM - obrazovkový a poměrně účinný komprimační program (spouští se RANDOMIZE USR 15610)
screenshot výpis proměnných Basicu po zadání rovnítka screenshot kopírovací program KCOPY+

Vlevo výpis proměnných Basicu, který získáte zadáním rovnítka a vpravo obrazovka programu KCOPY+.

Hardwarové řešení

Úprava ISO-ROM 128 obsahuje 64kB EPROM, 32kB SRAM, a nezbytný stránkovací obvod. Tento obvod čte port 239 a z něj využívá jen některé bity, konkrétně bity 0,1 a 2 (viz. tabulka). Stránkovací obvod je velmi jednoduchý, řídí jenom přepínaní mezi horními a dolními 32kB ROM a 32kB SRAM pomocí generovaného signálu A15 pro ROM a signálu /CS pro SRAM. Jejich kombinací můžete zvolit jakých 32kB bude ektivních. Přepínaní mezi 16kB polovinami aktivních 32kB částí řídí ULA přes A14 tak jako u každého Spectra 128kB. Signál A14 generovaný ULA je stejně jako většina signálů přiveden přes patici původní ROM. Ostatně patice ROM neobsahuje jen dva signály a to /IORQ a /WR, které je nutné přivést ze sběrnice ZX Spectra a to je také jediný zásah do Spectra, nic jiného do něj není třeba pájet.

Rozvržení obsahu ROM

ISO ROM 128 neobsahuje jen upravenou ROM s několika programy, ale v druhých 32kB je z důvodů zachování naprosté kompatibility (a ta je prakticky 100%) uložena i původní originální ROM ZX Spectra 128kB.

Po zapnutí počítače je jako první přistránkována ISO ROM a na obrazovce by měl být informační nápis ve 48kB módu. Po stisknutí Resetu se ROM překopíruje do SRAM, zakáže zápis, a vzápětí zobrazí tabulku, která je hodně podobná té z originální ROM. Bohužel při této akci zároveň vyžaduje možnost zápisu do oblasti ROM, takže nebude fungovat v emulátorech, které to neumožňují. Pouhá přítomnost kódu nestačí.

screenshot ISO ROM 128 - hlavní menu screenshot ZX Spectrum 128 - hlavní menu

Vlevo hlavní menu po resetu do ISO ROM, vpravo pro srovnání menu ZX Spectra 128kB+.

Význam položek menu

  • AUTO-RESET - Přepne do editoru basicu 48kB (ISO ROM), bez mazání paměti. (ke smazání paměti ovšem občas dochází a to když jsou poškozeny systémové proměnné basicu).
  • HARD-RESET - Jako AUTO-RESET, ale smaže celou paměť včetně 128ičkových stránek.
  • BETADISK - Provede smazání 128ičkových stránek a zavolá TR-DOS. Tato volba se zdá být zbytečná, ale Betadisk sám po startu maže jen základních 48kB.
  • DEVAST+ - Zavolá disassembler Devast+ aniž dojde ke smazání paměti. Užitečné při hackování některých programů, protože proti Resetu žádná ochrana neexistuje, bohužel takto nelze zachovat obsah registrů procesoru. Nicméně mnohokrát jsem tuto volbu ocenil při zacyklení laděného programu.
  • SPECTRUM128 - Přepne do originální ROM 128kB Spectra a provede Reset. Zpátky je možné se vrátit jedině pomocí OUT 239,6 (nebo OUT 239,0)

Kromě tohoto jak už jsem napsal obsahuje ISO ROM 128 i 32kB RAM a do ní je možné vložit libovolnou ROM a to nejen pro 48kB Spectra, ale i pro 128kB Spectra, tedy celých 32kB. Mimochodem pokud používáte na Betadisku můj CYGNUS BOOT 2.1 pak není problém označit soubor a zvolit volbu SRAM. Booter rozliší jestli je ROM 16ti, nebo 32kB a podle toho ji nahraje do 48 nebo do obou stránek SRAM tak aby byla po dalším resetu aktivní.

Rozpis materiálu potřebného ke stavbě

  • plošný spoj - předlohu můžete stáhnout v sekci download
  • 27C512 - 64kB EPROM
  • 62256 - 32kB SRAM (třeba cache z nějaké 386, rychlost 70ns je pro Spectrum až dost)
  • 74LS32
  • 74LS175
  • MHB3205 (nebo ekvivalent 74LS138, zatím nevyzkoušen) blokovací kondenzátor na napájení SRAM (třeba 10uF)
  • 3x LED dioda jako indikace stavu (jaká je zvolena sada ROM - nikoliv stránka 128/48, a zákaz zápisu do SRAM, diody doporučuju připojovat raději přes nějaký oddělovač, třeba invertory)

Zkušenosti se stavbou

Jsou víceméně dobré. Jediný problém je u černých Specter 128kB, ta jsou o něco málo nižší a IO na desce není možné dávat do patic, SRAM i ROM je nutné pájet přímo do desky. U šedivých Amstradů zbývá i s paticí rezerva. tam by se možná ještě něco málo vešlo.

Další drobnost spočívá, v tom, že všechny potřebné adresové a datové vstupy, stejně tak napájení a další jsou vedeny přes sadu nožiček z patice původní ROM Spectra. Chybí jedině /WR (sběrnice vývod č.18 shora) a /IORQ (sběrnice vývod č. 16 shora), ale ty připojíte asi 3cm dlouhým drátkem ze sběrnice. Úprava je velmi šetrná, ale musíte nějak vyřešit vyrobení sady nožiček, aby se zapojení dalo zasunou do patice. Já to vyřešil, tak že jsem zlikvidoval jednu nefunkční EPROM, rozbil okénko, odstranil čip včetně tenkých drátků, kterými byl připojen, no a tohle torzo jsem připájel zádama k desce na plošný spoj ISO ROM. Pozor! Vývod 20 bude připojen do přilehlého otvoru v desce, nikoliv na vývod EPROM a vývod 1 nebude připojen nikam. Před připájením pečlivě zkontrolujte, jestli někde nezůstal zkrat.

pohled na rozmístění IO z boku

Takhle vypadá pohled z boku desky, respektive od sběrnice Spectra směrem ke klávesnici. EPROM i SRAM jsou orientovány stejně jako původní ROM.

Rozmístění ROMek v 64kB EPROM

Snad je to dobře, pro jistotu to můžete porovnat se schématem a tabulkou bitů portu 239.

Takto bude vypadat mapa paměti ZX Spectra 128kB s kompletní úpravou ISO ROM 128 a připojeným Betadiskem. Každý obdélník označuje jednu stránku paměti, která je veliká přesně 16kB.

mapa RAM s ISO ROM

Žlutě označené stránky jsou občerstvovány pomocí ULA nikoliv procesorem a jsou pomalejší. Stránky modré a zelené jsou stránky navíc přidané úpravou ISO ROM 128. Přepínání 48 a 128 stránky v jedné dvojici je stejné jako u standarní ROM Spectra 128k (RPG 0 označuje stránkovací bit pro ROM nastavený jako 0 ...). Na stejné adrese tj. na 0 začíná i ROM Betadisku, ale tuto nelze přistránkovat přes port pomocí OUT, ale jedině tak, že v oblasti fontu v ROM 48 (15616 až 15871) budou čteny instrukce. Protože data nelze spustit, přistránkuje si Betadisk vlastní ROM a procesor provede kód TR-DOSu.

Ovládání ISO ROM 128

bit portu 239význam bitu
01=zápis do SRAM povolen, 0=zápis zakázán
11=výběr ROM, 0=výběr SRAM
21=ISO ROM, 0=originální ROM 128
3 - 7nepoužity, ale rezervovány do budoucna

Doporučuji používat raději pouze tyto kombinace:

  • OUT 239,6 - ISOROM 128
  • OUT 239,2 - Originál 128 ROM
  • OUT 239,1 - SRAM s povoleným zápisem
  • OUT 239,0 - SRAM se zakázaným zápisem

Stránkování paměti v originálním ZX Spectru 128kB:

bit portu 253význam bitu
0 - 2stránka 0 - 7
31=zobrazení 2. video ram
40=128 stránka ROM, 1=48 stránka ROM
51=zákaz stránkování (kvůli kompatibilitě se Spectrem 48kB)
6nemá
7nemá

Schéma zapojení

schéma ISOROM 128

Obrazce spojů, které si můžete stáhnout v sekci download, jsou v rozlišení 300dpi jako pozitiv. Pokud je v tomto rozlišení vytisknete negativně na čirou fólii získáte ideální negativ pro výrobu plošného spoje v měřítku 1:1 fotografickou cestou. Já jsem to zkoušel na Laserové tiskárně Laser Jet 6P a výsledek je velmi dobrý.

Download

Zdroj informací: Autorem zapojení je M. Jelínek z Brna (alias CBM). Jelikož jsem ale neměl vůbec žádnou dokumentaci provedl jsem totální analýzu vyrobené ISO ROM a podle toho jsem napsal tento text.

Opravené chyby a změny

  • 18.7.2006 - navrhl jsem a odzkoušel nové zapojení ISO ROM 128
  • 30.7.2005 - přidal jsem fotku
  • 7.4.2005 - Opraven rozsah adres v němž Betadisk přistránkuje ROM s TRDOSem z 15616 až 16383 na 15616 až 15871 (Upozornil Velesoft)
  • 5.9.1999 - 74LS75 jsem opravil na 74LS175, přidal jsem schéma

[ Zpět na hlavní stránku ]

Cygnusova stránka o ZX Spectru a kompatibilních počítačích byla napsána (přepsána) výhradně pomocí svobodného Open Source softwaru. V případě že naleznete chybu, nebo byste rádi cokoliv co se ZX Spectrem souvisí, neváhejte mi napsat na některý z mých emailů, nebo pracovně do zaměstnání. Stručně o mém webu se můžete dočíst zde.