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