[net.micro.atari] 256K 800XL Lives

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 Burch

bob@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
-------