├── photos ├── a1000roms.jpg ├── dsocket.jpg └── rev6tracecut.jpg ├── daugcas2.pld ├── daugcas2.jed └── README.md /photos/a1000roms.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schlae/kickstart-eliminator/HEAD/photos/a1000roms.jpg -------------------------------------------------------------------------------- /photos/dsocket.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schlae/kickstart-eliminator/HEAD/photos/dsocket.jpg -------------------------------------------------------------------------------- /photos/rev6tracecut.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schlae/kickstart-eliminator/HEAD/photos/rev6tracecut.jpg -------------------------------------------------------------------------------- /daugcas2.pld: -------------------------------------------------------------------------------- 1 | GAL16V8 2 | DAUGCAS 3 | 4 | /SROM A18 A17 /PRW /UDS /LDS /RE /RES /ROME GND 5 | /C1 /BERR /WPRO /RRW /LCEN /UCEN /CDR /CDW /ROMO1 VCC 6 | 7 | ROMO1 = ROME * /A18 * /WPRO * /PRW + SROM * A18 * /PRW * ROME 8 | 9 | CDR = CDR*LDS + CDR*UDS + RE*/PRW*/C1*A18*/SROM + RE*/PRW*/C1*/A18*WPRO 10 | 11 | CDW = CDW*/C1 + RE*PRW*/A18*WPRO + RE*PRW*A18*/SROM 12 | 13 | UCEN = UCEN*/C1 + RE*UDS*A18*/SROM + RE*UDS*/A18*WPRO 14 | LCEN = LCEN*/C1 + RE*LDS*A18*/SROM + RE*LDS*/A18*WPRO 15 | 16 | RRW = RE*PRW*A18*/SROM + SROM*RE*PRW*/A18*WPRO 17 | 18 | BERR = WPRO*PRW*RE*/SROM 19 | 20 | WPRO = WPRO*/RES + PRW*RE*/A18 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /daugcas2.jed: -------------------------------------------------------------------------------- 1 | * 2 | QP20* 3 | QF2048* 4 | QV12* 5 | F0* 6 | L00000 11111111111111111111111111111111* 7 | L00032 10111111011111111111111111011011* 8 | L00064 01101111011111111111111111111011* 9 | L00096 00000000000000000000000000000000* 10 | L00128 00000000000000000000000000000000* 11 | L00160 00000000000000000000000000000000* 12 | L00192 00000000000000000000000000000000* 13 | L00224 00000000000000000000000000000000* 14 | L00256 11111111111111111111111111111111* 15 | L00288 11111110111111111111111111111101* 16 | L00320 10111111101111111111101111101111* 17 | L00352 01011111101111111111101111111111* 18 | L00384 00000000000000000000000000000000* 19 | L00416 00000000000000000000000000000000* 20 | L00448 00000000000000000000000000000000* 21 | L00480 00000000000000000000000000000000* 22 | L00512 11111111111111111111111111111111* 23 | L00544 11111111111011111011111111111111* 24 | L00576 11111111111010111111111111111111* 25 | L00608 10111111011111111111101111101101* 26 | L00640 01011111011111111111101111111101* 27 | L00672 00000000000000000000000000000000* 28 | L00704 00000000000000000000000000000000* 29 | L00736 00000000000000000000000000000000* 30 | L00768 11111111111111111111111111111111* 31 | L00800 11111111111111101111111111111101* 32 | L00832 10111111111110111111101111101111* 33 | L00864 01011111111110111111101111111111* 34 | L00896 00000000000000000000000000000000* 35 | L00928 00000000000000000000000000000000* 36 | L00960 00000000000000000000000000000000* 37 | L00992 00000000000000000000000000000000* 38 | L01024 11111111111111111111111111111111* 39 | L01056 11111111111111111110111111111101* 40 | L01088 10111111111111111011101111101111* 41 | L01120 01011111111111111011101111111111* 42 | L01152 00000000000000000000000000000000* 43 | L01184 00000000000000000000000000000000* 44 | L01216 00000000000000000000000000000000* 45 | L01248 00000000000000000000000000000000* 46 | L01280 11111111111111111111111111111111* 47 | L01312 10101111101111111111101111101111* 48 | L01344 01011111101111111111101111111111* 49 | L01376 00000000000000000000000000000000* 50 | L01408 00000000000000000000000000000000* 51 | L01440 00000000000000000000000000000000* 52 | L01472 00000000000000000000000000000000* 53 | L01504 00000000000000000000000000000000* 54 | L01536 11111111111111111111111111111111* 55 | L01568 11111111111111111111111101101111* 56 | L01600 10111111101111111111101111111111* 57 | L01632 00000000000000000000000000000000* 58 | L01664 00000000000000000000000000000000* 59 | L01696 00000000000000000000000000000000* 60 | L01728 00000000000000000000000000000000* 61 | L01760 00000000000000000000000000000000* 62 | L01792 11111111111111111111111111111111* 63 | L01824 11011111101111111111101111101111* 64 | L01856 00000000000000000000000000000000* 65 | L01888 00000000000000000000000000000000* 66 | L01920 00000000000000000000000000000000* 67 | L01952 00000000000000000000000000000000* 68 | L01984 00000000000000000000000000000000* 69 | L02016 00000000000000000000000000000000* 70 | L02048 * 71 | C6A89* 72 |  73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | 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! 4 | 5 | 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.) 6 | 7 | This project is a recreation of the Kickstart Eliminator. You should have some board-level rework skills in order to attempt this. 8 | 9 | Things you need: 10 | 11 | * A GAL16V8A, 25ns or faster 12 | * Four 27C512 ROM chips 13 | * A 20-pin 0.3" IC socket and two 28-pin 0.6" wide IC sockets 14 | * Two 3-pin 0.1" headers and one 2-pin 0.1" header 15 | * Three shorting jumpers for the 0.1" headers 16 | 17 | Tools: 18 | 19 | * A desoldering gun or hot air rework tool 20 | * Soldering iron and soldering supplies 21 | * A sharp knife for cutting PCB traces 22 | * Screwdrivers for disassembling the Amiga 1000 23 | 24 | # Programming the PAL 25 | 26 | 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. 27 | 28 | 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. 29 | 30 | # Programming the ROMs 31 | 32 | 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. 33 | 34 | 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. 35 | 36 | You'll end up with the following images: 37 | 38 | * Lower 128K: FC Even - Install in location U5N 39 | * Lower 128K: FC Odd - Install in location U5P 40 | * Upper 128K: FE Even - Install in location U2N 41 | * Upper 128K: FE Odd - Install in location U2P 42 | 43 | ![Four chips installed in ROM sockets in the A1000 motherboard](photos/a1000roms.jpg) 44 | 45 | # Installation 46 | 47 | 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. 48 | 49 | 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. 50 | 51 | Once the metal shield has been removed, take out the three screws holding the daughterboard in place. 52 | 53 | ## Daughterboard 54 | 55 | 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. 56 | 57 | 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! 58 | 59 | 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. 60 | 61 | ![Corner of daughterboard with the jumper installed and the new DIP socket](photos/dsocket.jpg) 62 | 63 | ## Motherboard 64 | 65 | Unfortunately you will need to remove the motherboard from the Amiga in order to perform the reworks. 66 | 67 | 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. 68 | 69 | Now use the desoldering gun to clear out the solder in unpopulated IC positions U2P and U2N. Install the 28-pin IC sockets. 70 | 71 | Next, you'll need to perform some reworks to jumpers W2 and W4, but these depend on the motherboard revision. 72 | 73 | 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. 74 | 75 | ![Revision 6 motherboard traces to cut](photos/rev6tracecut.jpg) 76 | (Revision 6 motherboard showing the two traces to cut) 77 | 78 | **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. 79 | 80 | **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! 81 | 82 | 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. 83 | 84 | 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.) 85 | 86 | Summary of the two options: 87 | 88 | * 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 89 | * Kickstart eliminator: ROMs in U5N, U5P, U2N, U2P. W2 set to 2-3, W4 set to 1-2. 90 | 91 | # Reinstallation 92 | 93 | 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. 94 | 95 | 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. 96 | 97 | To use the extra 256K of RAM, you can use a program called "Addmem" 98 | 99 | ``` Addmem 0f80000 0fbffff ``` 100 | 101 | # How It Works 102 | 103 | 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: 104 | 105 | * FC0000 to FFFFFF = Kickstart RAM (256K) 106 | * F80000 to FBFFFF = Bootstrap ROM (8K, mirrored). Write to this range to trigger write protect 107 | 108 | 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: 109 | 110 | * FC0000 to FFFFF = Kickstart RAM (256K) now write-protected 111 | * F80000 to FBFFFF = Mirror of Kickstart (bootstrap ROM is swapped out) 112 | 113 | 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: 114 | 115 | * FC0000 to FFFFFF = Kickstart ROM chips on motherboard 116 | * F80000 to FBFFFF = Kickstart ROM chips on motherboard (needed for boot) 117 | 118 | And the first attempt to write to the F8 region changes the memory map and enables the extra RAM: 119 | 120 | * FC0000 to FFFFFF = Kickstart ROM chips on motherboard 121 | * F80000 to FBFFFF = 256K of daughterboard RAM 122 | 123 | --------------------------------------------------------------------------------