Question about burning ROM's

Discussions about Sinclair ZX80 and ZX81 Hardware
Post Reply
nama
Posts: 128
Joined: Fri May 09, 2008 4:49 pm

Question about burning ROM's

Post by nama »

Ok, so I installed a Zif socket (I had a spare hanging around) to replace the standard socket on my ZX81. My hope was to be able to burn a collection of different EPROM's, that I could quickly switch between.

Can anyone confirm the following... I have downloaded a few different ZX81 .rom files (same as .bin file I believe) including Hforth (treeforth), Aszmic etc, and I have a bunch of 2532 (4k eproms that are possibly pin compatible with original) and 2764 (8k, but not pin compatible) EPROM's. However as far as I can tell, maybe I actually need 2564 EPROMs to be both size and pin compatible?

Also, Azsmic is a 4k file, but other ZX81 rom files are all 8k. I tried burning Aszmic to one of my 2532 EPROM's and it seems to work when installed, but after a few key presses, the screen blanks out and there is no recovery except for pulling the power. Not sure exactly why it's doing this, but it actually might have something to do will all my other hardware mods attached (ZX1541, Maplin talkback, Mpalin I/O controller, internal 16k upgrade), unfortunately the why my machine is assembled it's not so easy to unplug everything.

Anyway, I guess my question is, what EPROM's do i need, and what do I actually have to do to get this to work.

Thanks in advance

Nama
wilf_zx
Posts: 18
Joined: Tue Jun 24, 2008 9:12 pm

Re: Question about burning ROM's

Post by wilf_zx »

While it is possible to use a ZIF socket to swap in various system 8K ROMs, it would seem simpler to use a large capacty EPROM, Flash and/or NVRAM containing multiple operating systems and select the active partition using software or a selecor switch.
In addition, such chips can store many other useful programs such as machine code assembler, hires software, etc. and make them available instantly without using tape loading.

wilf
Chad
Posts: 40
Joined: Mon May 04, 2009 5:17 pm

Re: Question about burning ROM's

Post by Chad »

I think Azsmic relies on "ROM Shadows" and from what I remember expects an echo between 4-8k - I think it should work if you copy it twice to make it an 8k image and burn it as an 8k ROM.

e.g. copy /b aszmic.rom+aszmic.rom aszmic8k.rom

I'd agree with Wilf: make an adapter for the ROM socket on the motherboard so that a much larger device can be plugged in. Bank switching can be achieved quite simply by using pull up/down resistors on the unused upper address lines, and a switch or jumper to pull them to ground/Vcc (as you prefer). I've carried out this modification on many a Space Invaders arcade board to make a simple multigame, it's very effective.

Good luck :-)

Chad
nama
Posts: 128
Joined: Fri May 09, 2008 4:49 pm

Re: Question about burning ROM's

Post by nama »

Hi guys,
Well, yes and adaptor and a larger eprom sounds like the way to go.
Some quick questions for you.
What is the present pinout for ZX ROM. Is it the same as 2532 EPROM?
As I already have the 28p socket in place, what would be a good EPROM to use as a replacement? 27256?
Finally, not being so technically inclined, is there a schematic showing how the pull up/down resistors on the unused upper address lines and switch works?
I can build anything, it's just that I'm never sure exactly what I'm building ;-)

Phil
Chad
Posts: 40
Joined: Mon May 04, 2009 5:17 pm

Re: Question about burning ROM's

Post by Chad »

Hi Phil,

The ZX81 ROM is a bit of an oddball device, being 8k x 8 but only having 24 pins. Standardised JEDEC pinouts of modern day devices need 28 pins for 8k.

If you were to go for a 28 pin device, then the biggest EPROM you could fit is a 27512, which gives you 8 lots of 8k pages which should likely be enough. You can always expand to 32 pins if you need to.

Here's the pinouts in question, firstly the ZX81 ROM (a 2364 type device):

Code: Select all

           ____    ____
           |   !__!   |
       A7  | 1     24 | +5 Volts
       A6  | 2     23 | A8
       A5  | 3     22 | A9
       A4  | 4     21 | A12
       A3  | 5     20 | /CS (Chip select, active low)
       A2  | 6     19 | A10
       A1  | 7     18 | A11
       A0  | 8     17 | D7
       D0  | 9     16 | D6
       D1  | 10    15 | D5
       D2  | 11    14 | D4
      GND  | 12    13 | D3
           |__________|
Next, here's a 27512:

Code: Select all

            ____    ____
            |   !__!   |
        A15 | 1     28 | Vcc  (+5 Volts)
        A12 | 2     27 | A14
        A7  | 3     26 | A13
        A6  | 4     25 | A8
        A5  | 5     24 | A9
        A4  | 6     23 | A11
        A3  | 7     22 | /OE  (Output Enable; Active low)
        A2  | 8     21 | A10
        A1  | 9     20 | /CE  (Chip Enable; Active low)
        A0  | 10    19 | D7
        D0  | 11    18 | D6
        D1  | 12    17 | D5
        D2  | 13    16 | D4
        GND | 14    15 | D3
            |__________|
A quick glance will show you that there are only a few pins which differ, and the 27512 has some extra address lines (A13, A14 and A14) which will be used to select which 8k page you wish to enable.

What I tend to do when I make up these sort of adapters is get a piece of "tri-pad" vero board, solder a socket for the big EPROM on top and solder header pins on the copper side, set slightly offset from the socket by a hole or two, these will reach down to the socket on the PCB (the ZX81 motherboard in this case). Most pins will connect directly so you don't need to do much re-routing, but those that need to be moved around to other pins need to have the copper between your big socket and header pin cut, and a small wire connected to the appropriate pin.

As for the pull up/downs - usually pull up resistors are used, but that can make things slightly confusing, as by default the selected page of your big ROM will be the last one rather than the first.

So, connect a pull down resistor (between 1k and 5k, say) from A13 to gnd, another from A14 to gnd, and again from A15 to gnd. This will pull these 3 lines low by default - page 0 of 7 selected.

Now connect a switch between 5v and A13 ( and one for each of A14 and A15 too) to pull the input high. 3 switches - 8 combinations - one for each page. I usually solder in a 2-pin header between 5v and the address line, then just use a "jumper" to close the two pins and effectively flip the switch.

You could, of course, control the page selection via software by means of an addressable latch, but I'll leave that for someone else!!

Hope this helps..

Chad
sirmorris
Posts: 2811
Joined: Thu May 08, 2008 5:45 pm

Re: Question about burning ROM's

Post by sirmorris »

Nice explanation! I'll likely be doing something similar for (ahem) a different system tonight.

-Charlie
Post Reply