★ HARDWARE ★ MONTAGES ★ AMSTRAD ROM EXPANSION: 96K OF ROM IN ONLY SIX BITS? ★ |
Amstrad Rom Expansion: 96k of Rom in Only Six Bits (Practical Electronics) | Hardware Montages |
One answer to a shortage of memory space in a computer is to add sideways rom expansion. The system describea here can handle up to 252 roms, but for the sake of practicality the design is based around a six-rom unit. WHEN the Amstrad CPC range of computers were conceived, their designers built in tremendous capabilities. I refer in particular to the provision for adding expansion (sideways) roms to enhance the already powerful operating system. Adding these roms is much simpler and cheaper than most people imagine, and certainly within the abilities of most home constructors. The rom expansion board described here was built for around £14.00 excluding pcb and case and allows up to six external roms to be added. EXPANSION ROM An expansion rom is a 16K read only memory chip containing a program (or programs) which can be made to replace the on board Basic rom. It follows from this that all roms are mapped in the area of memory normally occupeid by the Basic rom'ie &C000-&FFFF. Up to 252 roms can theoretically be added to the system, and these can be split into two types (a) Foreground roms - These usually contain one large program which replaces the Basic rom completely, such as, for example, another high level language like Pascal. Of the 252 possible roms, only seven (15 on 664 and 6128 machines) may be of the background type, the rest must be foreground. It is expected that most users will not require more than six expansion roms, background or otherwise, not least because these tend to be a little expensive, and for this reason and to keep the additional circuitry. simple, only six sockets arc provided on this board. The main advantage of storing programs in rom is that none (or very little) of the ram of the computer is taken up by the program itself. This is very noticeable with ward processing programs, which if rani based, allow only a small amount of the system's ram to be used to store the text. Rom based word processors (such as Protext - used to write this article!) allow almost all the computer's ram to be used to store text (typically 38K or more). Programs in rom are also instantly available, without having to wait while the program loads. THE CIRCUIT The computer chooses which rom is selected by writing the rom select address to I/O location &DF00 If a rom is fitted at that address, all further READ operations from the top 16K of memory will lie from that rom. If no rom is present, then the on-board Basic rom is read. As can be seen in Fig.1, the circuit is quite simple. 1C1a and 1C1b detect the presence of I/O address &DF00 on the bus. and latch the rom select address (present at the time on the data bus), into IC2. Note that because of the way that the Amstrad computers use the I/O space, it is only necessary to detect address line A13 going low to know that the address is &DF00, greatly simplifying the decoding process. Most hardware supported by the system is mapped in this way, each with a different address line in the low slate. If the rom select address is between one and seven inclusive, the output of IC5a goes low. enabling decoder IC3. The outputs from this decoder select the respective rom by pulling its OE (output enable) pin low. IC5b provides a high level on the ROMDIS pin to disable the internal rom. The circuit is so arranged to ensure that ROMDIS is asserted before the external rom is selected to avoid contention between internal and external roms as switching takes place. Whenever (he operating system is using the firmware (lower) rom, all other roms (including external roms) must be disabled. This is achieved simply by including address lines A15 in the external rom enable/disable circuitry on the expansion board. Whenever the lower rom is in use, A15 will be low; since the rom occupies address 0000-3FFFH, this low level disables external rom decoder IC3 via IC5a. By now. some of you may have realised that the disc rom is normally rom seven, and that the computer will receive a response both from this rom and from our expansion board when a rom search takes place. This will not cause any problems in practice since the computer cannot actually tell that ROMDIS has been asserted by more than one device, but obviously a rom must not be fitted at this address. CONSTRUCTION The expansion box may be wired on a prototyping board, although in view of the large number of connections, and beta use wiring errors can prove fatal to the computer, the use of the double sided printed circuit board in Fig.2 is strongly recommended. The component layout is shown in Fig.3. Care should be taken to ensure that the transparencies used to expose the board are accurately aligned, since errors could result in the pads being drilled away on one side of the board. All holes arc 0.8mm except for the 50 way pcb header connector holes which are 1.0mm.
If the board is not plated through, it will be necessary to use pins, or short lengths of tinned copper wire soldered both sides. Where a change of layer occurs, in all, 99 pins are required. Some of these soldered joints arc very close together, so great care will be needed to avoid shorts between adjacent conductors. IC1 to IC5 may be soldered directly into the board, but 28 pin dil sockets should be used for the six roms since these will probably be removed and re-inserted from time to time. The wires of decoupling capacitors C1-C6 should be soldered on both sides of the board, since in some cases they are used to connect the layer together.
The board is fitted with a 50-way pcb header allowing connection to the computer to be quickly and neatly made. A short length (approximately 2-3 inches) of 50-way ribbon cable is required, fitted with a matching female socket connector at one end and a 50-way card edge connector at the other (to fit the Amstrad's expansion connector). This method of connection is not the cheapest way to connect the board to the computer, but it makes further expansion of the system very neat and simple. The card edge connector should ideally be fitted with a locating peg in the position shown in the Amstrad user instructions, to make it impossible to insert the connector into the expansion socket upside down. Users of the DD1 disk interface will unfortunately have to provide a through connection of the bus to allow both units to be used simultaneously. TESTING Remove any roms from the board, and connect it to the computer's expansion connector with the power switched off. Switch on the computer, and watch for the normal Amstrad start up message. Program 1 10 REM Expansion Board Test Program |
|
|