# Introduction The Amiga 1000 is a little notorious for shipping with their boot code on a floppy disk instead of in ROM. When you power up the machine, a small 8KB bootstrap ROM puts up a prompt asking for this Kickstart disk. It copies 256K of the disk into RAM chips located on a special daughterboard plugged into the motherboard, write protects the RAM, and then jumps to it. Since the original configuration of the machine had only 256K of main memory, that meant that you were paying for twice as much expensive DRAM as you were actually receiving! A company called Creative Microsystems released a 3rd-party upgrade called the Kickstart Eliminator and RAM Expansion Kit. The kit came with four Amiga kickstart ROM chips, IC sockets, and a special PAL. The idea was that you performed a set of reworks to the motherboard and the daughterboard which let the computer boot from the ROM chips instead of the Kickstart floppy disk, and as a bonus, you gained an additional 256K of RAM that you could use for programs or RAM disks. (Since this memory is not accessible to the Amiga custom chips, it is considered fast RAM rather than chip RAM.) This project is a recreation of the Kickstart Eliminator. You should have some board-level rework skills in order to attempt this. Things you need: * A GAL16V8A, 25ns or faster * Four 27C512 ROM chips * A 20-pin 0.3" IC socket and two 28-pin 0.6" wide IC sockets * Two 3-pin 0.1" headers and one 2-pin 0.1" header * Three shorting jumpers for the 0.1" headers Tools: * A desoldering gun or hot air rework tool * Soldering iron and soldering supplies * A sharp knife for cutting PCB traces * Screwdrivers for disassembling the Amiga 1000 # Programming the PAL To begin with, you'll need to program the GAL16V8A with the [supplied JEDEC file](daugcas2.jed). The [source code](daugcas2.pld) is available for you to inspect. You can build it using [Galette](https://github.com/simon-frankau/galette) if you want. The cheap TL866 device programmer can be used to program the GAL. Be sure to use the GAL16V8 "A" suffix version since this is the one that I tested. # Programming the ROMs I'm assuming you already have a ROM image for your Amiga. You can purchase this from Amiga Forever or you can dump the first 256K of your Kickstart disk, or obtain the ROM from other sources. You will need to split the file in half, giving you a lower 128KB and an upper 128K. You will need to further split these files into even and odd halves since the machine is 16-bit and the EPROM chips are 8-bit. You'll end up with the following images: * Lower 128K: FC Even - Install in location U5N * Lower 128K: FC Odd - Install in location U5P * Upper 128K: FE Even - Install in location U2N * Upper 128K: FE Odd - Install in location U2P ![Four chips installed in ROM sockets in the A1000 motherboard](photos/a1000roms.jpg) # Installation Disassemble your Amiga 1000 by removing the screws from the bottom and lifting the top of the case off. There are plastic tabs that hold the lid in place so be careful to unhook them without damaging them. With the lid removed, be sure to admire the famous signatures molded into it. Remove the metal shield that covers the circuitry inside. There are metal tabs around the perimeter that have been twisted to hold it in place. There are also some fasteners, particularly around the connectors, that need to be removed as well. Once the metal shield has been removed, take out the three screws holding the daughterboard in place. ## Daughterboard Locate the chip marked U6J (DAUGCAS) on the daughterboard and remove it. Be very careful if you are using a vacuum desoldering gun; although it removes the solder in the through-hole barrel, it usually leaves a tiny solder fillet between the top of the pad and the "shoulders" of the IC leads. If you try to pry the chip up without clearing out these solder fillets, you will tear the pads and traces right off the board. I had pretty good success using a hot air station to heat the chip from the top, plucking it off with tweezers. Install a 20-pin IC socket at U6J, and plug the programmed GAL into the socket. Make sure pin 1 is in the correct orientation! Now locate the unpopulated 2-pin header near J1. It's close to the 1K resistor, but it is NOT the header located closer to R8 and the edge of the board. Use the desoldering tool to clear out the holes and install a 2-pin header here. Install the jumper into the header. By removing the jumper you can return the Amiga to the stock "boot from a Kickstart disk" mode. In fact, you can reassemble the Amiga with this jumper removed to confirm that your modifications so far have not damaged the Amiga. ![Corner of daughterboard with the jumper installed and the new DIP socket](photos/dsocket.jpg) ## Motherboard Unfortunately you will need to remove the motherboard from the Amiga in order to perform the reworks. Remove the floppy disk drive, remove the four screws holding the motherboard down (two near the floppy drive and two near the power supply). Lift the motherboard out. It can be tricky to clear the two DE-9 connectors on the right side; you might have to bend the plastic a little bit to get it to work. Once the motherboard is out, you'll need to remove the metal shield underneath it by straightening out the metal tabs holding it in place. Now use the desoldering gun to clear out the solder in unpopulated IC positions U2P and U2N. Install the 28-pin IC sockets. Next, you'll need to perform some reworks to jumpers W2 and W4, but these depend on the motherboard revision. Locate header W2, flip the board over, and cut the small trace that connects pins 1 and 2 together. (Pin 1 is the square pin). Confirm using an ohmmeter that these two pins are no longer connected. Solder a 3-pin header here, and install a jumper between pins 2 and 3. ![Revision 6 motherboard traces to cut](photos/rev6tracecut.jpg) (Revision 6 motherboard showing the two traces to cut) **For revision 6 motherboards**, locate W4 and cut the small trace on the back of the board that shorts pins 2 and pins 3. Again, confirm with the ohmmeter that the pins are not shorted. Install a 3-pin header and install a jumper between pins 1 and 2. See the red lines in the previous photo. **For revision A motherboards**, locate W4 and cut the small trace on the back of the board that shorts pins 2 and pins 3. Also cut the trace that goes from pin 3 of W4 over to pin 3 of W2. Install the 3-pin header, and then add a bodge wire on the back of the board from W2 pin 3 to W4 pin 2. Plug the jumper into the header between pins 1 and 2. Caution: untested instructions as I do not have a rev A motherboard! Remove the two ROM chips in U5N and U5P, and set them aside in a safe place in case you want to reverse the modification. Now install the four ROM chips that you programmed earlier. You can always go back to the original ROMs by putting them back in their sockets and returning the jumpers to their original positions. (You'll also need to remove the jumper on the daughterboard.) Summary of the two options: * Original configuration: ROM 252179-01 in U5N, 252180-01 in U5P, W2 set to 1-2, W4 set to 2-3, U2N and U2P both empty * Kickstart eliminator: ROMs in U5N, U5P, U2N, U2P. W2 set to 2-3, W4 set to 1-2. # Reinstallation Put the bottom shield back onto the back of the motherboard and put it back in the case, installing the four screws in their previous locations. Reinstall the daughterboard into all the pin headers sticking up out of the motherboard, taking care that they're all perfectly aligned and entering their respective sockets on the daughterboard. You probably want to test the board before reinstalling the floppy drive just in case you mixed up the ROMs or the header connections. Power on the machine and make sure the hand icon is displaying the "Workbench" disk. If it does, then go ahead and reassemble the whole machine. To use the extra 256K of RAM, you can use a program called "Addmem" ``` Addmem 0f80000 0fbffff ``` # How It Works The GAL on the daughterboard manages the chip select lines for the motherboard ROM sockets as well as the chip selects and R/W signals for the RAM on the daughterboard. It sets up the memory map as follows: * FC0000 to FFFFFF = Kickstart RAM (256K) * F80000 to FBFFFF = Bootstrap ROM (8K, mirrored). Write to this range to trigger write protect After the bootstrap ROM loads the 256K kickstart contents from the floppy disk, it writes to the F8 range, which sets the write protect flag, and this changes the memory map: * FC0000 to FFFFF = Kickstart RAM (256K) now write-protected * F80000 to FBFFFF = Mirror of Kickstart (bootstrap ROM is swapped out) The daughterboard jumper connects to pin 1 of the GAL and is used to change the functionality of the GAL. With the jumper in place, the /SROM line goes low and changes the memory map: * FC0000 to FFFFFF = Kickstart ROM chips on motherboard * F80000 to FBFFFF = Kickstart ROM chips on motherboard (needed for boot) And the first attempt to write to the F8 region changes the memory map and enables the extra RAM: * FC0000 to FFFFFF = Kickstart ROM chips on motherboard * F80000 to FBFFFF = 256K of daughterboard RAM