bob@imsvax.UUCP (Bob Burch) (12/17/85)
I've been working on expanding my 800XL to 256K as per the BYTE article.
I initially encountered trouble with the implementation and presumed that
the problem was in software (ATARIRAM.ASM from BYTEnet). Much to my dismay
and eventual glee, I discovered that the shielding of the XL had grounded
the circuit causing partial operation. With this corrected the 256K XL
expansion became operable. Therefore, the 9/85 BYTE article "The Quarter-
Meg Atari", with supporting software, by Claus Buchholz does indeed work
as published.
I wish to take this oppurtunity to thank all those individuals,
contributing to this net, for providing the insight and encouragement
necessary to have allowed me to continue this endeavor.
The BYTE implementation swaps 8 32K banks by manipulating PORTB bits
4, 5, and 6. The software provided will format a single virtual disk device
D3: or D4: as a single or double density device depending on the options
selected while assembling. The software will format the device to a full
720 sectors. Copying whole disks to the Ramdisk device is incredibly fast
during the Ramdisk access phases. (I've configured a special version that
uses two single density virtual devices. Copying between them is breath-
taking.)
Disadvantages: First, the 8 32K segments are not 130XE compatible.
Second, any interrupt encountered by a user program while the primary
bank (0-$7FFF) is swapped out will cause a crash.
Short of being a great Ram-Disk application, the BYTE implementation
leaves a lot to be desired. However, it is by no means a "dog" as it has
been referred. If all you want is RamDisk, some inexpensive electronics
project to play around with, and desire a do-able challenge; I fully
recommend the Project as described in BYTE. (by the way, I wield a
soldering-iron as a lumberjack would a scalpel).
There are alternatives, however. Some information I received from a
friend,having access to CompuServe, I am passing along in another posting.
The first, by John P. Radigan, describes RamDisk controllers (ERAMDSK1
and ERAMDSK2) for the 9/85 BYTE circuit. These controllers work with DOS
2.0, DOS 2.5, DOS XL, and SmartDOS (I typically use SmartDOS). The
controllers are "object" modules that can be obtained thru CompuServe.
(Didn't I see something about BINHEX on this net, recently?)
The second is a 130XE compatible upgrade to the original circuit by
Claus Buchholz himself. This article modifies the original circuit to
provide complete compatibility. The controller associated with it is
QMEGXLD.SRC. (I do not have a copy of this code. If anyone could obtain
it, particular Michigan netters in 517, I would appreciate a posting
either to this net or net.sources.)
Third, the Madison Area Atari Users Group (MAAUG) has a third version
called RAMBO-XL (256K) as well as Terminator-XL (512K). These work and have
been demonstrated according to their Newsletter. MAAUG offers pre-printed
circuited boards (un-drilled) for a token sum. (I've ordered 5 boards for
my User's Group and am awaiting delivery). Anyone interested should write
(preferrably thru a User's Group) to:
MAAUG
P.O. Box 56191
Madison, WI 53705
Ask for a copy of the Oct. and Nov. Newsletters ($5.00 should get some
circuit boards, I cannot speak for their production costs.)
Fourth, fellow netter C. David Young has been kind enough to pass along
the information on his 256KXL. He offers a hardware kit (board assembled)
for $99.95. I've seen this in a local store. It looks good, easy to
install, but the one I saw did not include software. This kit seems very
complete, however, you still have to be somewhat adventuresome to summon
up the courage to dismantle your XL. No sweat! The kit can be purchased
from:
CDY Consulting
421 Hanbee
Richardson, TX 75080
(214) 235-2146
Other products include: OMNIVIEW, OMNIMON, RAMROD, etc.
The Buchholz 2nd upgrade, the MAAUG upgrade, and the CDY upgrade all use
the same address scheme to switch 12 16k banks in $4000 - $7FFF using
bits 2,3,5,6 of PORTB. None are truly 100% compatible with the 130XE,
yet they are not really incompatible either. They merely extend bank
switching capability beyond that defined by Atari. All implementations are
compatible with each other, with the exception of the original BYTE
implementation.
-- Bob Burchbob@imsvax.UUCP (Bob Burch) (12/17/85)
The following article has been passed down from CompuServe. It applies to
the original circuit described in "The Quarter-Meg Atari" by Claus
Buchholz in BYTE of 9/85.
=========================================================================
256k 800XL Ram Disk Controller
--------------------------------
Vers. 1.0 10/29/85
This is an enhanced version of the original Ram Disk Controller for a 256k
800XL as described by Claus Buchholz in his construction article which appeared
in the Sept. '85 issue of BYTE magazine, pg. 247. Added is the capability to
change the density of the ram-disk with multiple density DOS systems. This is
accomplished via the PERCOM config block standard. Information on this subject
can be found in the Oct. '85 issue of COMPUTE! magazine, pg.110. Many thanks to
Bill Wilkinson for writing that article, without which, this function would not
have been possible. The other major additon to this controller is the use of
another drive while in single density mode. This gives the user the same amount
of ram-disk storage regardless of which density is active. I have also included
some primitive diagnostic routines that check the operation of the ram upgrade.
Also, a hook has been added to the immediate vertical blank routine that will
enable the HELP key to 'cold-boot' the computer without turning it off, toggle
sound output for ram-disk access and a toggle to modify screen and characther
color for compatability with monochrome monitors.
1). - Density default and changing density.
There are two versions of this controller, ERAMDSK1 and ERAMDSK2, they differ
only in the default density setting when the system is first loaded. The drives
recognized are D3: and D4:, the latter active only when single density is
selected. Changing densities requires one precaution if you are switching from
single to double density. Do not change D3:, use D4: instead. This will prevent
a fatal I/O error from occuring if the DOS your using lists the state of all
drives after one is changed as is the case with the CONFIG command in DOS XL.
If that is the case, D4: will appear to be active but, if you list the active
drive table again, D4: will then be inactive.
2). - Format and diagnostic routines.
Initialization of the drives takes a little longer now that a ram test has
been included to check the memory in each of the 6 banks, (0-5), that comprise
the ram-disk. I have also included a check for the bank select logic circuit.
At the end of the ram test for each bank, the location $00FD is written with
the number of the bank in use. When the ram-test phase has concluded, a loop
check of the same address in each bank is performed to verify that 6 distinct
banks exist. If a format error is returned during an initialize command, ad-
dress $CC06 will contain the type of error that occured. Locations $CC00
through $CC05 hold the results of the error as follows:
$CC06 = 0 - No errors, operational.
1 - Ram test failure.
2 - Select logic error.
Ram test failure results: Select logic results:
=========================== =======================
$CC00 - Bank # of bad address. $CC00 - 00 ( Bank 0 )
$CC01 - Page # of bad address. $CC01 - 01 ( Bank 1 )
$CC02 - Address in page. $CC02 - 02 ( Bank 2 )
$CC03 - Data expected. $CC03 - 03 ( Bank 3 )
$CC04 - Data received. $CC04 - 04 ( Bank 4 )
$CC05 - 05 ( Bank 5 )
If you have a select logic problem you will most likely see some sort of sym-
metry with the data in $CC00 through $CC05, for example, 00 00 02 02 04 04
would indicate a problem that results in the least significant bit of the bank
select circuit not being set.
A problem with the ram test is not as hard to solve as the select logic. Not
to say that there isn't a multitude of things that can go wrong with dynamic
ram. But please take note that this ram test is only capable of finding a
simple failure, not intermittent or other bizzare malfunctions. Also, only the
first error encountered will be recorded before exiting the format routine. If
there are multiple errors they will only show up after the first error has been
corrected. The two types of failures that most often occur are either total
chip failure (dead row or column) or one dead bit. The first failure would
almost certainly prevent the computer from successfully completing a boot pro-
cedure, swapping one ram chip at a time and booting will usualy locate the
offending chip unless two or more chips are faulty (mail order rejects). This
test is centered on the second common error, to find the bad chip in this case
is a straight forward process. Compare $CC03 and $CC04 to determine the bad
bit, change the ram chip according to the following table:
Bit 0 - Chip U09 (closest to power switch)
" 1 - " U10
" 2 - " U11
" 3 - " U12
" 7 - " U16
" 6 - " U15
" 5 - " U14
" 4 - " U13 (furthest from power switch)
3). - HELP key functions.
There are three functions that are controlled by the HELP, SHIFT and CONTROL
keys as follows:
<help> - toggle screen modifiers.
<shift> <help> - toggle ram-disk access sound.
<control> <help> - perform cold boot.
The screen modifiers update the values of character lumenence, background and
border colors and left cursor once every vertical blank. This is included as a
convienence to users of monochrome monitors so the intensity and contrast cont-
rols don't have to be continualy changed between programs. The left margin is
also set to 0 when this toggle is active. The sound toggle gives an audible ap-
preciation of the speed of ram-disk use. The cold boot has been included be-
cause the reset hook can be stepped on when a lock-up or other sort of problem
occurs. This way, the data in the ram-disk will not be destroyed because the
computer doesn't have to be turned off in order to cold boot the system. I am
fairly confident that this hook will not be disabled during operation, but, if
you do experience something strange try to leave me a detailed account of what
went wrong so that I can prevent it from occuring again. One final note about
the cold boot, the burst of broken horizontal lines that appear for a short
time when the system is first turned on will not show when a keyboard cold
boot is initiated.
I have used this controller with DOS XL, DOS 2.0 and DOS 2.5 with no problems
at all. I use Amodem 4.89 for telecommunications with two Indus GT disk drives
running under DOS 2.5, and except for an occasional lock-up with the capture
buffer when Atari translation is in use, I've never had a problem, typical time
for a full buffer (22K+ bytes) to dump to a single density ram-disk takes only
25 seconds!
I can't comment on any other DOS systems, you have to find out just what is
and isn't compatible. If you have any suggestions, please leave me a message
via EASYPLEX, I'm not able to get to read the forum message base often enough.
John P. Radigan
(76545,201)
Of note to DOS XL 2.3xx users:
INIT.COM has a bug that doesn't let you initialize D4:, to correct this you
need a sector editor. On a single density disk with INIT.COM on it, examine
sector 2 of the file, byte 4 should be a $35 not $34, change and save the sec-
tor and INIT.COM will now work.
The two files DOSXL.SUP and DOSXL.XL are extended memory configurations that
gives the user additional free memory. Do not, at any time, use DOSXL.XL, it
will not work with this controller. DOSXL.SUP will work fine with DOS XL 2.30
and this ram-disk, but, DOSXL.SUP will not work with DOS XL 2.35i.
For users with Indus drives and synchromesh, please note that DUPDSK.COM and
DUPDBL.COM while functional, have a rather obscure bug that turns off Synchro-
mesh after writing to the ram-disk the first time. Synchromesh will re-activate
at the end of the duplication. I contacted Indus but they feel that this is a
trivial bug that probably won't be corrected because it only happens when a
non-Indus drive is the destination. I have found that COPY Dn:*.* Dn:*.* is
actually faster in this instance.
Finnaly, by copying all your .COM files to the ram-disk and changing your
default drive to the ram-disk you will see that extended commands such as COPY
are now painless. MAC65.COM for example, loads in under 4 seconds. A double
density drive would take 11 secondes with synchromesh engaged to load, 22
seconds without synchromesh engaged.bob@imsvax.UUCP (Bob Burch) (12/17/85)
This article has been passed down from CompuServe. It is a modification of
the original circuit appearing in "The Quarter-Meg Atari" by Claus Buchholz
in BYTE of 9/85.
=============================================================================
A 130XE-COMPATIBLE 256K UPGRADE FOR THE ATARI 800XL
by Claus Buchholz
I designed the 256K upgrade described in my article, "The Quarter-Meg
Atari" (BYTE, September, 1985), in December, 1984. Since this predated the
130XE, there was no precedent for extended memory on the XLs. I felt free to
implement a system of eight 32K banks. The major reason was to keep the
add-on circuit as simple as possible.
The 130XE, introduced in early 1985, set a different standard for
bank-select memory. It uses 16K banks and makes them separately available to
both the CPU and the video controller (ANTIC). The XE has 128K total memory.
The 64K extended RAM is split into four 16K banks.
A 256K 800XL has 192K extended RAM, which requires 12 16K banks. I have
designed a new upgrade for the 800XL that implements such a scheme. Its
similarity to the 130XE's scheme allows use of software for the XE on a 256K
800XL.
To select one of four banks, the XE uses two bits, #2 and #3, in the
memory control register (port B of the 6520 PIA, addressed at $D301 or 54017
decimal). Zeroing bit #4 makes the selected bank appear at addresses
$4000-$7FFF (16384 to 32767 decimal), as seen by the CPU. Zeroing bit #5
makes it appear there as seen by ANTIC.
In my upgrade, bits #2, #3, #5 and #6 select one of the twelve banks.
Zeroing bit #4 makes the selected bank appear at $4000-$7FFF to both the CPU
and ANTIC. So, any program for the XE that uses the extended RAM for CPU
storage will work on an 800XL with this mod. Those programs won't use the
additional 128K, though. Programs that use the video banking feature of the
XE might run on the modified XL, but the screen display will be wrong.
The procedure for this upgrade is basically the same as in the article,
except for the following points. If your ANTIC (U7) part number is CO21697,
use the circuit described by the first connection list below. If it is
CO12296, include the circuit in the second list. The circuit requires five
connections to the PIA (U23). So, pins 12 through 16 must be bent up and
connected to the circuit. The rest of the procedure is the same. Notice that
this circuit has one more chip than the article's circuit. This is the price
of compatibility.
With the 256K dynamic RAMs in your XL, be sure to wait at least ten
seconds after turning the computer off. Otherwise it may not coldstart
properly when you turn it back on.
My original RAMdisk software doesn't work with this new mod, so I have
written a new version. It is used in the same way, except that it offers a
choice of either two single-density RAMdisks or one double-density. If you
wish a disk copy of the source and object code, send me a blank disk and
return mailer with full postage, and I will promptly send it back with the
software. Alternately, you may download the software from the Capitol Hill
Atari Owners' Society BBS at 517-371-1106 or from the Castle Communications
board at 517-371-4234. The source file is called QMEGXLD.SRC for Quater-MEG
XL Double.
Also available is a RAMdisk program that sets up one single-density
RAMdisk and leaves the XE-equivalent banks free for XE software. This is
quite useful with BASIC XE, DOS 2.5, or the new Synapse software. Its name
is QMEGXLS.SRC.
I ask one thing in return for this information: Please pass it around
to all your interested friends. Put it in your club's library or on your
favorite BBS. Encouraging software support of 256K will result in many
interesting uses for it. Thank you and enjoy!
DEFINITION OF MEMORY CONTROL REGISTER AT $D301 (54017 DECIMAL)
XL MOD 130XE
bit: 7 6 5 4 3 2 1 0 bit: 7 6 5 4 3 2 1 0
D a b E c d B R D V C x y B R
D=0 enables diagnostic ROM D=0 enables diagnostic ROM
B=0 enables BASIC ROM B=0 enables BASIC ROM
R=1 enables OS ROM R=1 enables OS ROM
E=0 enables extended RAM V=0 enables extended RAM for video
abcd is 4-bit extended RAM bank # C=0 enables extended RAM for CPU
- ranges from 4 to 15 xy is 2-bit extended RAM bank #
- banks 12 to 15 are equivalent - ranges from 0 to 3
to XE's banks 0 to 3
PARTS LIST
8 41256 256K-bit dynamic RAM (200ns or less)
1 74LS153 Dual 4-to-1 multiplexer (IC2)
1 74LS139 Dual 2-to-4 decoder (IC3)
1 - 33 ohm, 1/4 watt resistor
ADDITIONAL PARTS FOR ANTIC #CO12296
1 74LS158 Quad inverting 2-to-1 multiplexer (IC4)
1 74LS393 Dual 4-bit counter (IC5)
LIST OF CONNECTIONS FOR THE UPGRADE CIRCUIT
Instead of a drawing of the upgrade circuit, below is a list of
connections. Each entry in the list begins with the name of the signal
followed by all the IC pins that connect together and share the signal.
IC3-13 means pin 13 of IC3. The IC numbers appear in the parts list above.
IC1 is the 74LS158 chip from socket U27 on the XL motherboard. DIP is the
DIP header to be plugged into socket U27. U23-xx refers to the pins you bend
up on the PIA chip at U23 on the motherboard.
Vcc : DIP-16, IC1-16, IC2-16, IC3-16, IC3-13
Vss : DIP-8, IC1-8, IC2-8, IC2-1, IC2-15, IC3-8
A7 : DIP-11, IC2-10, IC2-11
A15 : DIP-10, IC2-13, IC3-3
A6 : DIP-14, IC2-6, IC2-5
A14 : DIP-13, IC2-3, IC3-2
MUX : DIP-1, IC1-1, IC2-2
A4 : DIP-2, IC1-2
A12 : DIP-3, IC1-3
RA4 : IC1-4, DIP-4
A5 : DIP-5, IC1-5
A13 : DIP-6, IC1-6
RA5 : IC1-7, DIP-7
-E : DIP-15, IC1-15
RA7 : IC2-9, DIP-9
RA6 : IC2-7, DIP-12
PB2 : U23-12, IC2-4
PB3 : U23-13, IC2-12
PB4 : U23-14, IC3-1
PB5 : U23-15, IC1-10
PB6 : U23-16, IC1-11
-Zd : IC1-9, IC3-14
-O1a : IC3-5, IC3-15, IC2-14
-O2b : IC3-10, One side of resistor
RA8 : Other side of resistor, Pin 1 of all RAMs
If your U7 part number is CO12296, do not connect signal A7 above, and
make the following additional connections. The connection to U7 is to a
trace on the motherboard that runs from pin 8 of U7.
Vcc : DIP-16, IC4-16, IC5-14, IC4-3
Vss : DIP-8, IC4-8, IC4-2, IC4-15, IC5-7, IC5-2, IC5-12
A7 : DIP-11, IC4-6
-REF : U7-8, IC4-1
REF : IC4-4, IC5-1
A7' : IC4-7, IC2-10, IC2-11
Q7 : IC5-8, IC4-5
Q3 : IC5-6, IC5-13
==============================================================
End of Article. Thanks, Claus.oyster@uwmacc.UUCP (Vicious Oyster) (12/17/85)
In article <479@imsvax.UUCP> bob@imsvax.UUCP (Bob Burch) writes: > > Third, the Madison Area Atari Users Group (MAAUG) has a third version >called RAMBO-XL (256K) as well as Terminator-XL (512K). These work and have >been demonstrated according to their Newsletter. > ...and according to an eyewitness (moi). By the latest count, there are about a dozen club members with expanded machines, evenly distributed between 256K and 512K. I have the necessary parts (<$30), and am eagerly awaiting the next hardware SIG meeting so somebody can hold my hand through the soldering stage (I just program the darn things). Incidentally, the last meeting was prefaced by a bouncing ball demo-- on an 800! It *was* a bit slower, but those buying certain nameless machines based on that ubiquitous demo might want to consider spending $1-2K less for the 8-bitter (:-). > The Buchholz 2nd upgrade, the MAAUG upgrade, and the CDY upgrade all use >the same address scheme to switch 12 16k banks in $4000 - $7FFF using >bits 2,3,5,6 of PORTB. None are truly 100% compatible with the 130XE, >yet they are not really incompatible either. They merely extend bank >switching capability beyond that defined by Atari. All implementations are >compatible with each other, with the exception of the original BYTE >implementation. I've been meaning to post something about the updated BYTE board for the last week. Since you got the scoop, I'll just add the following tidbit-- Mr. Buchholz saw a copy of the MAAUG newsletter recently, and wrote a letter to our group. He said that he had succumbed to pressure to improve his circuit (and sent us his result). He noted that the two were functionally identical, but admitted to liking ours a bit better. He further stated that he dislikes the "Rambo" name (I concur, though I approve of the "Terminator" designation), and expressed his disappointment in not being credited in the original articles (I think BYTE was mentioned, but not Mr. Buchholz personally). Oh well. - Joel ({allegra,ihnp4,seismo}!uwvax!uwmacc!oyster)
DYOUNG@USC-ISID.ARPA (C. David Young) (12/18/85)
Thank you Bob Burch for the informative review of the 256K upgrades available for the 800XL. Let me just add a couple of notes: 1) I did not develop the 256KXL but am acting as a distributor for Newell Industries. 2) The 256KXL comes with MYDOS 4.0 which does support a ramdisk in several different configurations. Also, OMNIVIEW256 has resident ramdisk handlers which allow you to use the ramdisk in many environments. What a relief that all the upgrades appear to address the extra memory in the same way! Have we stumbled upon a standard? By the way, the 256KXL does have a switch option to replace the original function of bit 5. With this switch you can tell ANTIC to follow banked memory or stay in main memory when banking occurs. We needed this mod to be compatible with TYPESETTER by XLENT Software. David Young -------