[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::amiga_v1

Title:AMIGA NOTES
Notice:Join us in the *NEW* conference - HYDRA::AMIGA_V2
Moderator:HYDRA::MOORE
Created:Sat Apr 26 1986
Last Modified:Wed Feb 05 1992
Last Successful Update:Fri Jun 06 1997
Number of topics:5378
Total number of notes:38326

4563.0. "RASCAL - cheap 1.5MB A500" by BAHTAT::FORCE4::hilton (How's it going royal ugly dudes?) Wed Mar 06 1991 08:23

Has anyone out there implemented the Rascal hack on their Amiga?\

I got it off tape::, it means using the rev 6 A500 motherboard, a bit of soldering


The reply to this note is the doc entry, anyone think it sounds reasonable?

Cheers,

Greg
T.RTitleUserPersonal
Name
DateLines
4563.1Rascal readmeBAHTAT::BAHTAT::HILTONHow's it going royal ugly dudes?Wed Mar 06 1991 08:25227
RASCAL II

Expanding an Amiga 500 to 1.5Mb                        By G.D. McCaughan

This Document, the Rascal design and circuit are Copyright 1990 by
Cresting Wave Electronics and G.D. McCaughan.

Disclaimer: This project will invalidate your Amiga's warranty.
Persons using the information contained herein do so entirely at their own
risk. If you are not familiar with electronics practice, *don't* attempt this
project.

The Problem

CBM recently began manufacturing the revision 6 A500 motherboard. This
incorporates a number of changes from earlier A500's, the most significant
being the provision for 1Mb of RAM on the motherboard (using 256k x4 chips).
The rev. 6 board also comes fitted with the obese Agnus chip as standard thus
allowing for 1Mb of chip RAM.

I saw the rev. 6 board as a cheap way of upgrading from a 1Mb A500 (512k on
board + an A501) to 1.5Mb (1Mb on board + an A501). Unfortunately, after
getting my hands on the new motherboard I found it was not so, there is only
1 Mb of address space decoded on the new board, so it is still only possible
to have 1Mb maximum without an add - on memory expansion board. If you have a
rev. 6 A500 you can add 512k by populating the motherboard (and living without
the clock) or by adding an A501, but not both. Either way the extra 512k can
be configured as chip or fast RAM.

The Solution

In order to overcome this deficiency I devised the hardware hack I call the
Rascal. This allows the fitting of an A501 to a rev. 6 A500 with 1Mb on the
motherboard. There is an absolute minimum of interference with the existing
circuitry, no track cutting or other difficult to undo modifications are
involved. By simply desoldering the 3 soldered connections to the motherboard,
unplugging the other connections and resetting a jumper the entire circuit can
be removed leaving your A500 in its original configuration.

Once fitted the A500 auto-configures with 1.5Mb (1Mb chip, 512k fast). The
only problems I have had running programs since I fitted the modification to
my A500 have been with programs that could not handle 1Mb of chip RAM. Only a
few poorly written programs should have this problem (Transformer was one I 
found). However if a program you use has this problem, there is provision in 
the circuit to add a switch to flip between 1.5Mb and 1Mb (512k chip, 512k
fast).

How it Works

There are three main signals involved in RAM address generation on the A500, 
all of which are generated by the Fat Agnus chip: The multiplexed address bus 
(DRA 8:0), the column address strobe (_CASL/_CASU) and the row address strobe 
(_RAS0/_RAS1). The multiplexed address bus and column address strobes are 
common to both 512k memory banks, with the two row address strobes being used 
to select a 512k bank. The rascal works by generating a third row address 
strobe (_RAS2) which is sent to the A501 in place of the normal _RAS1.

The Fat Agnus chip (FANG) maps the upper 512k RAM bank to $80000 or $C00000 
according to whether the signal fed into its A19 line is the A19 or A23 signal 
from the 68000 address bus. The Rascal buffers the A19 and A23 lines with the 
two unused AND gates IC2a and IC2b, and then sends both lines into the FANG 
A19 via an OR gate. This results in FANG asserting _RAS1 for addresses 
beginning at both $80000 and $C00000. I will refer to the _RAS1 FANG output 
as _RASF from here on for clarity

The _RAS1 and _RAS2 output signals are extracted from _RASF by ANDing with the 
complementary control signals output by the flip-flop. Note that as the _RAS 
signals are active low we must use OR gates to perform the AND function. _RAS2 
(and thus the 512k at $C00000) must be asserted whenever A23 and _BLIT are 
high. A low on _BLIT signifies chip access to the bus. This logic is achieved 
by NANDing A23 and _BLIT and passing the resulting signal to the D input of 
the flip-flop.

The flip-flop synchronises the control signal to the _CDAC clock which ensures 
that a transition will never occur during a _RAS cycle. As _RAS1 is driven 
from the _Q output of the flip-flop it will be selected whenever _RAS2 is not.

IC1d ANDs the _RAS0 and _RAS1 FANG outputs to provide the _REFR dynamic RAM 
refresh signal. This is incorporated into _RAS1 and _RAS2 by IC2c and IC2d.

Construction

These constructional details assume the A500 motherboard has been populated to 
1Mb. As well as the usual tools for soldering etc, you will need a good 
desoldering tool.

As the wiring up of the two chips is simple and not critical, the actual 
details of construction are left to the individual. I found a convenient 
method was to use a 24 x 18 piece of prototype board down one side of which I 
mounted a 48 pin DIL socket. The socket plugged into the GARY (U5) socket, and 
GARY plugged in on top. This arrangement left a small piece of board 
protruding from the side onto which I mounted IC1, 2, 3 and 4. The following 
signals were obtained from GARY:

    Signal  U5 (GARY) pin#
    +5v         6
    _BLIT       15
    0v          24
    _CDAC       26
    A19         35
    A23         39

Thus there are only five connections to make from the daughterboard to the 
motherboard. These are: FANG A19 in, FANG _RAS0 and _RASF out  and _RAS1 and 
_RAS2.

Once the daughterboard has been constructed locate JP2 on the motherboard, 
this is just above the ROM on a rev. 6 board. The upper or lower connection 
will be made on JP2 depending on whether the A500 is configured for 512k  or 
1Mb chip RAM. Cut whichever jumper is set and connect a wire from IC1a pin 3 
to the center pad of JP2 (this is the FANG A19 connection). Check with an 
ohmmeter to ensure both jumpers are open circuit.

Next desolder U35 and add a socket if it doesn't already have one. Ensure the 
chip is properly desoldered to avoid lifting any circuitboard traces when it 
is removed. Run the wires for _RAS0, _RASF and _RAS1 to the socket. Bare the 
ends and insert the _RAS0 wire into pin 5 of the socket and the _RAS1 output 
into pin 18. Bend pin 18 of U35 out straight and carefully insert the chip 
into the socket, ensure that the wire in pin 5 is not displaced. Now solder 
the _RASF input of the daughterboard to the bent out pin 18.

Finally we need to connect _RAS2 to the A501. Open up the A501 unit and 
desolder RP903, this is a single in-line resistor pack. Bend pin 5 upwards and 
solder the other pins back in again. Identify pin 34 on the A501 connector, 
this is on the upper row and connects to 0v on the A501 adjacent to RP903. 
Desolder this pin, bend it upwards and solder it to pin 5 of RP903. Identify 
the corresponding pin of the connector on the A500 motherboard. Apply a small 
drop of Cyanoacrylate adhesive (Superglue) on the motherboard side of the 
connector where the pin enters the plastic. Cut the pin a few millimetres 
above the motherboard and desolder the piece left in the motherboard. Solder 
the _RAS2 line from the daughterboard to the pin. As there are plenty of 0v 
lines on the A501 connector there is no need to remake this connection if you 
remove the Rascal.

The A501 will not now work in an ordinary A500 unless pin 5 of RP903 is 
connected back in its original place. A switch could easily be added to 
facilitate this should you ever have the need to put your A501 in a standard 
A500.

A switch is shown on pin 1 of IC2. When connected to +5v via the pullup 
resistor the Amiga will address 1Mb chip and 512k fast RAM. When the switch 
connects to 0v you will have 512k chip and 512k fast RAM. The switch is 
optional and is only needed if you use programs that have problems with 1Mb 
chip RAM. If you omit the switch, simply connect IC2 pin 1 directly to the 
pullup resistor. If you fit the switch it can be mounted in an out of the way 
place on the back panel of the A500. The wiring to the switch is not critical 
as it is not directly connected to the address bus. RAM will only be 
reconfigured by resetting the Amiga, don't expect to be able to switch 
configurations on the fly.

If you have previously configured the A500 for 1Mb chip RAM the EXRAM jumper 
beside the A501 connector will have been opened. This jumper must be closed to 
allow the A500 to configure the A501 at $C00000.

Modifying A rev.5 A500

Although these instructions are for the rev. 6 A500, it is possible to use a 
similar technique to expand a rev. 5 A500. The primary problem is that there 
is no space for any more RAM on the motherboard. There are two reasonably 
simple ways around this problem. Unfortunately neither is as elegant as the 
solution for the rev. 6 board. I have tried the first solution and it works 
well.

In both cases, proceed as per the instructions above except for the connection
into the A501. Note that you cannot address 1Mb chip RAM until you have fitted
an Obese Agnus chip (See your CBM dealer). If you follow the dealer provided 
instructions for setting your rev. 5 A500 to 1Mb chip, you will be told to cut
a track next to the A501 (this is EXRAM) do _not_ do this if you are fitting 
the Rascal. If you have already done it, you will have to solder in a wire to 
remake this connection.

A standard A501 can be modified by adding 16 256k x 1 chips. The extra 16 
chips are piggybacked pin for pin on the existing chips except for pin 4 
(_RAS) which is bent outwards. Wire all the pin 4's together and connect via 
a single 68 ohm resistor to _RAS2. Take especial care with this modification 
to check for any bits of solder that may drop down between the rows of chips 
and double (triple!) check your soldering before plugging into the A500. The 
piggybacked chips must be seated as far down as they will go on the front row 
or the metal shield will not fit properly, even so it may be tight. If the 
shield is not fitted properly the connectors will not line up when you plug 
the expansion back in again. In order to overcome this problem, squeeze the 
top and bottom pieces of the shield together with pliers and solder them 
together along the front.

An alternative which may be a little more expensive but somewhat less messy 
is to obtain a pair of 3rd party 512k expansions. These are now available with
256k x 4 chips and are small enough that two can fit in the expansion bay 
under the A500. Simply connect all the pins on the connectors of the two 
boards together except for pin 38 (_RAS) and pins 41 through 52 (battery 
backed clock). Connect pin 38 on the second board to _RAS2. Again, check your 
soldering carefully before connecting to your A500.

Limitations

The A501 RAM expansion sits on the chip bus of the A500, and is thus 'slow' 
RAM even though the Amiga configures it as 'fast'. Unfortunately there is no 
way to escape the limitations of the chip bus bandwidth with internal RAM 
expansion. The only way to have truly fast RAM is to add a RAM expansion 
directly to the 68000 bus. The Rascal allows the A500 owner to add 512k of 
RAM for the cost of the RAM chips and a handful of other parts and the 
technique could be extended to add more memory to the chip bus, but it is the 
opinion of this hacker that there is little future adding still more RAM to 
the chip bus. Better to bite the bullet and fork out the $$$ for a proper 
memory expansion board.
Enjoy!

                             ===================
Parts List

IC1:            74LS32
IC2:            74LS08
IC3:            74LS00
IC4             74LS74
R1, 2, 3:       6K8
C1, 2, 3, 4:    .1 uF
S1:             SPDT switch (optional)
14 pin DIL socket x4
20 pin DIL socket
48 pin DIL wire-wrap socket (use 2 24's if you can't find a 48)
Prototype board, hookup wire.

                             ===================

The Author can be contacted at:
Snail mail: 3 Dana PL, CHCH 8001, New Zealand. +64 3 852-101.
Email     : geoff@actrix.co.nz
or        : AmigaInfo BBS +64 3 371-531 1200/2400 bps 24Hrs.