ISO ROM 128
( Last changes 5.9.1999 - Corrected 74LS75 to 74LS175, and added scheme )
What is ISO ROM 128 ?
Very interesting expansion of possibilities for ZX Spectrum with Betadisk (and without it too). ISO ROM bring us some changes in Basic and for Betadisk very useful simplify of commands. RANDOMIZE USR 15619: REM is compensated by one exclamation mark (!), so you can work in Basic for example like this:
!! - execute Devast from ROM
! - call DOS and render command line of DOS
! CAT, !LOAD "program", !GOTO "snapshot" CODE .....
Commands after exclamation mark are practicaly same as commands following after RANDOMIZE... . Exception is calling of Devast, because in this command in Basic, one ! is missing. From command line in TR-DOS is called by !! too.
Except this, ISO ROM has corrected known bugs of original ROM, after reset don't erase RAM (is possible to elect in menu), has simplify syntax of some commands... GOTO = GOTO 0, PAUSE = PAUSE 0 etc., can print (on screen) state of RAM for Basic interpreter by command =, can work with numbers in hex format ($ must be before number) and some another trifles. ISO ROM 128 is different from 48k version. She is supplemented by another 16kB page , which is possible to switch like on normal Speccy 128 (so OUT 253,16 and OUT 253,0). In this second page is placemented table (look on background of this page) with some functions and three very useful compressed programs, which are possible to call from Basic. Unfortunately in version I have is bug and program B.D.E. is wrongly called, so it will hang up computer. It's necessary to enter OUT 239,6 before calling him. I hope, that I will correct this error or find better version of ISO-ROM.
KCOPY+ useful program for copying and arrangementing of diskettes (start it by enter *)
B.D.E: Beta Disk Editor, very good Disk Doctor, do all but no unreadable sectors (start it by enter up-arrow)
TOMPACM - in-screen placemented good comprimation tool (start it by RANDOMIZE USR 15610)
By what is ISO ROM composited ?
Arrangement ISO-ROM 128 contains 64kB EPROM, 32kB SRAM, and necessary paging chip. This chip reads port 239 and from him use only some bits, concrete bits 0,1 and 2 (see table). Paging chip is very simple, controling only switching between upper and lower 32kB ROM and 32kB SRAM with generated signal A15 for ROM and signal /CS for SRAM. By combinating them, you can choose which 32kB will be active. Switching between 16kB halfes of active 32kB parts controls ULA by A14 as in normal Spectrum 128kB. Signal A14 generated by ULA is in the same way as many of others signals bringed over socket of original ROM. By the way, socket of ROM contain only two signals (/IORQ and /WR), which is need to bring from slot of ZX Spectrum. And this is only the one arrangement in Spectrum. Nothing another is necessary to do...
Software ISO ROM 128 :
ISO ROM 128 don't contain only arrangemented ROM with some programs, but in second 32kB is from compatibility reasons (practicaly 100%) recorded original ROM of ZX Spectrum 128kB.
After start of computer is at first point paged ISO ROM and on screen will pop up information text in 48kB mode. After pressing Reset button, ROM will be copied into SRAM, write will be disabled and table will be displayed. Table is very similiar to one from original ROM.
AUTO-RESET - Switch into 48kB Basic editor (ISO ROM) without clearing memory. (but sometimes it's cleared anyway...if system variables of Basic is corrupted).
HARD-RESET - the same as AUTO-RESET, but it erase complete memory with all 128 pages.
BETADISK - erase 128 pages and call TR-DOS. This looks as unnecessary, but Betadisk after start erase only 48kB or ram.
DEVAST+ - call disassembler Devast+ with no erasing ram. Useful when hacking some programs, but because against Reset isn't any protection, unfortunately isn't possible to preserve content of processor's registers. But many times I used it with hang-upped tuned program.
SPECTRUM128 - Switch to original ROM 128kB of Spectrum and call Reset. Return back is possible only by OUT 239,6 (or OUT 239,0)
Except this, as I wrote, ISO ROM contains 32kB RAM and into this is possible to place any ROM not only from 48kB Spectrum, but for 128kB Spectrum too, so all 32kB. By the way, if you are using my BOOT 2.1 on your Betadisk, so no problem is to mark file and elect choice SRAM. Booter will detect, if ROM is 16kB or 32kB and by this will load it into one half of SRAM or into both pages of SRAM, so that it will be active after next reset.
List of parts:
Board - Pictures of board and distributing of parts, 1:1 in resolution 300dpi, 1bit - ZIP 22kB
27C512 - 64kB EPROM
62256 - 32kB SRAM (for example cache from some 386, speed 70ns is for Spectrum enough... :) )
MHB3205 (or ekvivalent 74LS138, not tested till now...)
blocking condenser (condensator ?) for powering (?:)) of SRAM (for example 10 micro F (farad))
3x LED diod as indication of state (which set of ROM is choosen - not page 128/48 , and disable write to SRAM, I recommend to connect diods through some separater)
Experiences with building:
Good... Only one problem is with black Spectrums 128kB. They are too low and IO on board isn't possible to place in sockets. SRAM and ROM is necessary to place in beard directly. On grey Amstrads is still some space with sockets.
Next trifle is into, that all necessary address and data INs, power and so, are leaded through set of pins from socket of original ROM of Spectrum. Only /WR is missing (on slot no.18 upper-side) and /IORQ (on slot no. 16 upper-side), but you will connect them with 3cm long wire from slot. Arrangement is very thrifty, but you must to solve by something, how to build set of pins, so that will be possible to press connection into socket. I solved it by destruction of one infunction EPROM, broke window, remove chip and his pins (wires) and this torso I fixed by his backside on board of arrangement ISO ROM. Warning ! Pin no.20 will be connected into tight-fitting hole on board, not on pin on EPROM, and pin no.1 will be connected to nowhere. Before solding, control very carefully, if somewhere isn't short-circuit !
This is look on hip of board, respectively from slot of Spectrum by direction to keyboard.
EPROM and SRAM are oriented as original ROM.
Distributing of ROMs in 64kB EPROM:
I hope that it's right..., for certainty you can compare it with scheme and table of bits of port 239
|0||128 page of original ROM 128kB Speccy|
|16384||48 page of original ROM 128kB Speccy|
|32768||Ramramis 128k - 128 page of ISO ROM 128 - ZIP 10kB|
|49152||Ramramis 48k - 48 page of ISO ROM 48 - ZIP 14kB|
Memory of Spectrum 128kB with completed arrangemet ISO ROM 128 will be oriented by this way:
|mirror of memory
|mirror 1. vram
|2. video ram |
ISO ROM 48
ISO ROM 128
Yellow marked pages are refreshed by ULA not by processor and are slowless.
Cyan and green marked pages are pages added by arrangement ISO ROM 128.
Switching 48 and 128 page in one pair is the same as on standart ROM of Spectrum 128k.
On the same address i.e. on 0, starts ROM of Betadisk too, but it's impossible to switch through port by OUT, but by that in region of font in ROM 48 (15616 to 16383) will be reading instructions. Because data ins't possible to start, Betadisk will swich his own ROM and processor will execute code of TR-DOS.
Controling ISO ROM 128 :
|bit of port 239||meaning of bit|
|0||1=write to SRAM enabled, 0=write disabled|
|1||1=choice of ROM, 0=choice of SRAM|
|2||1=ISO ROM, 0=original ROM 128|
I recommend you to use only this combinations:
OUT 239,6 - ISO ROM 128
OUT 239,2 - Original 128 ROM
OUT 239,1 - SRAM with enabled write
OUT 239,0 - SRAM with disabled write
Paging of memory in original Spectrum 128kB (order reasons) :
|bit of port 253||meaning of bit|
|3||1=show 2. video ram|
|4||0=128 page ROM, 1=48 page ROM|
|5||1=disabling of paging (for compatibility with Spectrum 48kB)|
Pictures of board and distributing of parts - ZIP 22kB
Download ISO ROM - ROM 128 is a part, for example, of emulator X128
Scheme of connection ISO ROM 128 - GIF 9kB
Pictures of connection in resolution 300dpi is as positive. If you will print this as negative on clear celulitide, you will get ideal negative for building of board in 1:1 by photographistic way. I tried it on laser printer Laser Jet 6P and result is very good.
Source : autor of connection is M. Jelínek from Brno city ( alias CBM ). Because I didn't have any documentation, I did total analysis of builded ISO ROM and from it I wrote this text.
Translated to English by Jan Werner of WWW.SPECCY.CZ