Springe zu Hauptinhalt

Springe zu Hauptmenü

Henryk Richter

3x Kickstart in one EPROM

Kickstart 1.3, 1.4alpha and 3.1 in one 1MB EPROM

You are here: Startseite » Hardware » Amiga500 » Kickstart EPROM 


Electronic 3-Kickstart switcher circuit right above the Kickstart EPROM

Amiga ROM images prior to 2.0 are 256k (262144 Bytes) in size. The later versions are fitted into 512k ROMs. I was going to upgrade my (new) Amiga 500 to Kickstart 3.1 but wanted to retain the ability to switch to 1.3.

I've owned a Kickstart selector board back in the day which allowed to place two ROMs into the Amiga, which sadly broke a few years ago. An easy to install alternative to a ROM selector PCB is given by EPROM chips with 1 MB capacity (e.g. ST M27C800, 512kbit x 16).

It is quite easy to install such an EPROM into Rev.6A Amiga 500s, Amiga 500+ and Amiga 600. You just need to duplicate a 256k image, appended by a 512k image to one file (Unix/Linux/OSX: cat Kick13.rom Kick13.rom Kick31.rom >eprom_source.rom). This file can then be burned into an EPROM. Don't forget Byte Swapping if the burning is done on a LittleEndian Machine like the usual PCs. In my case, I performed the Byte Swapping directly in the Galep-5 tool on Windows (after verifying that the Galep-5 reads out original ROMs in byte swapped order). As kipper2k already demonstrated on the EAB forums, such a dual Kickststart ROM can be easily installed into later revisions of the aforementioned machines. You just need to insert the EPROM chip into the socket such that the first pin (Pin 1 = side where the EPROM is indented) hangs out of the socket. Connect Pin 1 to a switch that either pulls the pin to GND or +5V. That being said, while the outlined approach requires just a minimum of electronics, you get a maximum of two available Kickstart versions.

Back to topic. In my case, I own an Amiga 500 with a Rev.5 board. This board has a famous design bug where the address line A17 is not routed to Pin 1 of the ROM but to Pin 31 instead. Funny side node: Commodore's own schematics sheet 312511-02 marks the ROM Pin 31 as "oops". The usual approach getting 512k ROMs working with Rev.5 boards is to connect Pins 1 and 31 of the socket. For EPROMS, another step is necessary where the EPROM pin 31 is bent up and connected to Pin 21 (VCC, Pull-up to keep the EPROM in 16 bit mode).

Question was: When these modifications are necessary anyway, how about obtaining some advantage from the address line routing issue? The answer follows below.

In case you are wondering: I accidentally put Kickstart 1.4alpha "after" Kick 1.3 into my image and could only boot into 1.4alpha or 3.1 with the A18 switch. Oops, indeed.

Electronics Part 1

Experimental A500 Rev.5 EPROM stability improvement by pullup resistors
Schematics for stable 512k EPROM chips in Rev.5 Amiga 500 computers

Several people ran into a showstopper regarding Rev.5 Amiga 500s and Kickstart EPROMs. The complaints range from machines unable to boot at all to serious instabilities of the system. The same happened to me. My initial approach to an EPROM based Kickstart (see image above) was giving me the boot screen and a booting system most of the time but the system was quite unstable. At first, I assumed issues with my Kickstart switcher. Some time later I realized that the issues were systematic. Interestingly, owners of Rev.6a boards were getting their Kickstart EPROMS to work without any problems. So I started comparing the schematics of Rev.5 boards with Rev.6a. The main difference concering the ROM chip is just that the later revision includes two pullup resistor nets on the address lines.

This was my cue. I experimented a little with two pullup resistor nets on the address lines which I put directly into the socket. The EPROM above was of course not sitting tight (i.e. mechanically instable) but with this modification, the system ran for hours doing benchmarking, memory testing and of course Eagle-playing. To conclude the initial experiment, it is quite obvious that the MC68000 alone cannot drive the EPROM address lines reliably.

So, in addition to the usual modifications concerning 512kB Kickstarts in Rev.5 Amiga 500s, the 18 address lines must be stabilized as well when EPROMs are used instead of Mask ROMs (e.g. Kickstart 2.04). Please note that the address line naming in the Commodore schematics refers to byte addresses (A1-A18) while the EPROMs assume word addresses (A0-A17). My schematics refer the latter naming scheme. The checklist for installment of EPROMs in Rev.5 Amiga 500 machines is as follows:

  1. Correct the Rev.5 signal routing bug by connecting Pin1 of the EPROM (A17) to Pin31 of the board's socket (famous Commodore "oops"), where the address line A17 is located.
  2. Isolate Pin31 of the EPROM (/BYTE) from the socket by bending it up carefully. To keep the EPROM in 16 Bit mode, this bent-up pin must be connected to VCC. VCC can be found on Pin21 of the Socket. See the bent-up pin in the first image of this article as a reference.
  3. Place 9 4.7k resistors (or a convenient resistor net) on pins 1-9 and connect the resistors to Pin21 of the socket (VCC).
  4. Place 9 4.7k resistors on pins 32-40 and connect the resistors to Pin21 of the socket (VCC) as well.

You might want to use a socket for the EPROM. If done carefully, you can for example solder the resistor nets and signal lines to precision socket strips and keep all the cruft underneath the EPROM. If you dare to modify the board directly, you might also consider to solder the pullup nets to the underside of the board. The space between board and bottom case should be sufficient to place the two resistor nets at the underside of the ROM socket.

Electronics Part 2

Schematics for 3 Kickstarts in one EPROM, Amiga 500 Rev.5

After the necessary detour into pullup resistor necessities I went back on setting up my 3 Kickstart switcher. I didn't want to solder the resistor nets to my old socket and I didn't really like the bent-up EPROM pin either. So I decided to set up a simple PCB carrying the components. Please note that the EPROM is different from the previous section where I demonstrated how to stabilize a 512 kB EPROM. The 1 MB EPROM has two additional pins (on top) which change the pin assignment in the schematics.

The shopping list includes the following items:

  1. 1 PCB - I still was too lazy for etching and drilling of a PCB so I kept the quick'n'dirty veroboard approach.
  2. 3 resistor nets, 4.7k x 9 each
  3. 1 74LS00, 74HCT00 or 74HC00 (the initial approach used an LS type chip, I've used a HC type CMOS chip for the later version, both worked just fine)
  4. 2 precision socket strips, 21 pin each
  5. 2 precision IC adapter strips, 20 pin each
  6. 1 EPROM 27C800, where the low order 512 kBytes are filled with Kick 1.2 and Kick 1.3, consecutively. I assume Kickstart 3.1 in the high order 512 kBytes.

The schematics are shown among the images on the right. In terms of logic, the three states (Kick 1.2, Kick 1.3, Kick 3.1) require two inputs which I labeled A and B. If A and B are open, Pin 1 (=A18) of the 1 MB EPROM will be put to high state, addressing Kickstart 3.1. In this case, the address line A17 from the mainboard must be patched through to the EPROM as well to use the 512 kByte address space correctly. So if A and B are open, the logic puts the level of the A17 line to the output of the IC.

The other two cases lead to Pin 1 (=A18) staying low. Depending on A and B, the A17 line will be either low or high, thus selecting one of the 256 kByte Kickstart images. Since the A17 line will be fixed with either A or B pulled to ground, the Kickstart image is mirrored in the 68000 address space and appears like a normal 256k Mask ROM.

In my experience, the type of the 4x NAND chip is not critical. I was using a 74LS10 clone (DL010, former GDR) in my initial experiments, as well as a 74HC00 for the latest board. In both cases, the signals looked nicely shaped on my oscilloscope and the system stability confirmed that conclusion.

Apart from the switching logic, the other rules still apply for Rev.5 boards. Insert the resistor networks at a convenient location. Isolate Pin 32 of the EPROM and connect it to VCC (Pin 22) to keep the word mode active and connect that corresponding pin of the socket (Pin 31 in socket numbering scheme, just the same physical location as the EPROM pin 32) to one of the inputs of the NAND chip. The output of the mentioned NAND cascade goes to Pin2 of the EPROM (A17).

The two pullup resistors on the lines to switches A and B should have around 5 kOhm. Out of convenience, I just used another 4.7 kOhm resistor network.

While the presented approach is designed around some flaws with Amiga 500 Rev.5 mainboards, it can easily be adapted to later Amiga 500 revisions. In case of Rev.6A, the resistor networks on the address lines and the pull-up on Pin 32 are not needed. In order to switch the Address line A17 with Rev.6A and above, Pin 1 of the socket goes into the NAND. Please note that some later Amiga 500 mainboards (notoriously Revision 8A) are missing the pull-ups as well, so you might have to populate RP106 and RP107.


Finished Kickstart selector Board for Rev.5 Amiga 500
Installed Kickstart selector Board in Rev.5 Amiga 500