#@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED228 FREE SECTORS COPYING---D1:DISKFIX.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 160ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u A 130XE-COMPATIBLE 256K UPGRADE FOR THE ATARI 800XL T} by Claus Buchholz I designed the 256K upgrade described in my article, "The Quarter-Meg Atari" (BYTE, U}September, 1985), in December, 1984. Since this predated the 130XE, there was no precedent for extended memory on the XLV}s. I felt free to implement a system of eight 32K banks. The major reason was to keep the add-on circuit as simpleW} as possible. The 130XE, introduced in early 1985, set a different standard for bank-select memory. It uses 16X}K banks and makes them separately available to both the CPU and the video controller (ANTIC). The XE has 128K total memoY}ry. The 64K extended RAM is split into four 16K banks. A 256K 800XL has 192K extended RAM, which requires 12 16K banksZ}. 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. Zero_}ing 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 128a}K, though. Programs that use the video banking feature of the XE might run on the modified XL, but the screen display wilb}l be wrong. The procedure for this upgrade is basically the same as in the article, except for the following points.c} If your ANTIC (U7) part number is CO21697, use the circuit described by the first connection list below. If it id}s CO12296, include the circuit in the second list. The circuit requires five connections to the PIA (U23). So, pins 12 e}through 16 must be bent up and connected to the circuit. The rest of the procedure is the same. Notice that this cif}rcuit has one more chip than the article's circuit. This is the price of compatibility. With the 256K dynamic RAMs ig}n your XL, be sure to wait at least ten seconds after turning the computer off. Otherwise it may not coldstarth} properly when you turn it back on. My original RAMdisk software doesn't work with this new mod, so I have writteni} a new version. It is used in the same way, except that it offers a choice of either two single-density RAMdisks or onej} double-density. If you wish a disk copy of the source and object code, send me a blank disk and return mailer witk}h full postage, and I will promptly send it back with the software. Alternately, you may download the software from thl}e Capitol Hill Atari Owners' Society BBS at 517-371-1106 or from the Castle Communications board at 517-371-4234. The m}source file is called QMEGXLD.SRC for Quater-MEG XL Double. Also available is a RAMdisk program that sets up on}ne single-density RAMdisk and leaves the XE-equivalent banks free for XE software. This is quite useful with BASIC Xo}E, DOS 2.5, or the new Synapse software. Its name is QMEGXLS.SRC. I ask one thing in return for this information: p} Please pass it around to all your interested friends. Put it in your club's library or on your favorite BBS. Encoq}uraging software support of 256K will result in many interesting uses for it. Thank you and enjoy! r} DEFINITION OF MEMORY CONTROL REGISTER AT $D301 (54017 DECIMAL) XL MOD s} 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 t} D V C x y B R D=0 enables diagnostic ROM D=0 enables diagnostic ROM B=0 enables BASIC ROu}M B=0 enables BASIC ROM R=1 enables OS ROM R=1 enables OS ROM E=0 enables extendv}ed RAM V=0 enables extended RAM for video abcd is 4-bit extended RAM bank # C=0 enables extended RAM w}for CPU - ranges from 4 to 15 xy is 2-bit extended RAM bank # - banks 12 to 15 are equivalent x} - ranges from 0 to 3 to XE's banks 0 to 3 PARTS LIST 8 41256 2y}56K-bit dynamic RAM (200ns or less) 1 74LS153 Dual 4-to-1 multiplexer (IC2) 1 74LS139 Dual 2-to-4 decoder (IC3) z} 1 - 33 ohm, 1/4 watt resistor ADDITIONAL PARTS FOR ANTIC #CO12296 1 74LS158 Quad i{}nverting 2-to-1 multiplexer (IC4) 1 74LS393 Dual 4-bit counter (IC5) LIST OF CONNECTIONS FOR TH|}E 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 socke}t 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, IC}2-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, I}C1-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, IC}2-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. T}he 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}-1 A7' : IC4-7, IC2-10, IC2-11 Q7 : IC5-8, IC4-5 Q3 : IC5-6, IC5-13 The 130XE/320K upgrade by Scott Peterson.(Note: ANALOG Computing has NOT triedthis modification to the 13 }0XE and ispresenting this file for yourinformation only. Try this hardwaremodification at your own risk!)After both read }ing and building boththe 800/288K upgrade (D.G.Byrd), andthe 800XL/256K upgrade (C.Buchholz),I decided that there also had } to be away to upgrade the 130XE. There is,and thanks to the "Freddie" chip(CO61991) this modification is mucheasier to d }o than either of the otherupgrades.To do the upgrade you will need asoldering iron, a de-soldering tool,and some fine wi }re. See the partslist for the chips needed.First, remove both the case and themetal shield to get down to themother-boar }d. Then remove the eightram-chip U26 thru U33 (MT4264). Theyare the row closest to the TV RFmodule. Next, install Z2 thru }Z9 inthe place of U23 thru U33. These arethe 256K ram-chips. You can solderthem to the mother board, or usesockets. Now t }ake a piece of wireapprox 12 in. long and run a jumperfrom pin one on each of the 256Kram-chips to the next. After you do }this the wire will be connected topin 1 on Z2 thru Z9 and you shouldhave about 6 inches left over. Dothis on the rear of t }he mother boardand then snake the wire thru thelarge hole near the ram chips.Next, desolder and remove U23(CO14795), and } replace it with a 40pin socket. Bend up pins 15 and 16 onU23 and insert it in the socket youjust installed. Take Z1 (74LS }158) andbend up all the pins on it exceptpins 8 and 16. Put this "piggy-back"on top of U20 (HD14050) and solderpins 8 and } 16 of Z1 to pins 8 and 16on U20. Now solder a short jumperfrom pin 15 on Z1 to pin 8 of Z1.Now, take a piece of wire abo }ut 4 in.long solder one end to pin 30 on thechip marked "CO14805" on the motherboard, and the other to pin 1 on Z1.Next s }older a wire to pin 15 (one ofthe two you bent out) of U23 andconnect the other end to pin 2 on Z1.Solder a wire to pin 16 } on U23 andconnect the other end to pin 3 on Z1.Take R1 (33 ohm) and trim the leadsto about 1/4 in. Take the wire youcon }nected to pin one on the 256Kram-chips and solder it to one end ofR1, solder the other end of R1 to pin4 on Z1. Re-assembl }e the RF shieldand case and you are finished. PARTS LIST ----------1) Z1 74LS158 (2 to 1 Mul }tiplexer)8) Z2-Z9 41256 dynamic RAM (150ns)1) R1 33 ohm 1/4 watt resistor1) 40 pin socket8) 16 pin sockets } (optional)The next page is a quick overview ofthe bit table and numbers to be usedin location 54017 (PORTB). I havefini }shed modifying a ramdisk handlerfor the extra ram. It uses a rambased OS so basic XE or XL can't beused. At present the be }st deal forthis mod. is to use MYDOS 4.0. Thissupports a very large single densityramdisk. With basic XE you can use a150 }0 sector ramdisk and without ityou can have about 2000 sectors.This upgrade has been built andtested on a BBS, it has run } for dayson end without a memory loss orerror. If you need help or moreinformation feel free to call thePeanut Gallery (4 }08)-384-3906. 24HR,300/1200 Baud. Leave mail to theSysop(thats me). Good luck and let meknow if you write a better handler }.Memory Control Register 54017 ($D301) Bit 7 6 5 4 3 2 1 0 D a b C c d B RD=0 enable diagnostic ROM.B=0 ena }ble BASIC ROM.R=1 enable OS ROM.C=0 enable extended RAM.abcd= memory control bits.--------------------Bank # Control# }--------------------Bank 0 -------->131|Bank 1 -------->135|Bank 2 -------->139|Bank 3 -------->143|Bank 4 -------->163 }| Basic= offBank 5 -------->167| OS = onBank 6 -------->171| ENH = onBank 7 -------->175|Bank 8 -------->195|Ba }nk 9 -------->199|Bank 10 ------->203|Bank 11 ------->207|Bank 12 ------->227|<--\Bank 13 ------->231| \Bank 14 ----- }-->235| / 130XE BanksBank 15 ------->239|<--/--------------------If you are using MYDOS 3.016 and wishto use Basic XE } and a ram-disk at thesame time, boot DOS and poke 5275,163and 5324,16. Go to DOS and write thenew DOS. This will keep the } two from"bumping" into each other. A similarpoke can be done to DOS 2.5, it ispoke 4838,163. The handler I havewill set }up 192K of the extra ram as2 SD ramdisks or 1 DD ramdisk.If you are a hot-shot programmer (I'mnot) I think a print spoole }r thatuses part of this ram would also bevery nice. This mod is easy to do andperfect for running a BBS. One note,on comp }userve there is a mod by RichAndrews which should not be confusedwith this one, his uses 33 new chipsand mine uses 9 new c }hips. Have fun.Scott Petersonrews which should not be confusedwith this one, his uses 33 new chipsand mine uses 9 new c ! The 130XE/576K upgrade, by Scott Peterson.Copyright (C) 1986, released to the public. Here we go again, this time }I recommend you have some electronics experience if you wish to preform the upgrade. Some of the work is duplicated from the }320K upgrade so 320XE owners will not have as much work to do. One other point, when in the 576K mode you MUST use some sort }of basic cart. as you lose the internal basic, this is only in the 576K mode, in the 130XE mode internal basic will function }normally.TOOLS NEEDED; To preform this upgrade you need the following;Low wattage fine tip soldering iron.Vacuum de-sold}ering tool(like Radio Shack PN#64-2098).Some 30-gauge wire(Radio Shack PN#278-501).#2 phillips head screwdriver.Heat-shrin}k tubing, 1/8 in. Dia. Also a pair of small needle-nose pliers and a small flat tip screwdriver are handy.PARTS NEEDED;Z1} 74LS158Z2-Z17 41256(150ns.)Z18 74LS138Z19 7432R1-R2 33 ohm 1/4 watt resistor.S1 Micro-mini DPDT switch(l}ike Radio Shack PN#275-626) Remove the 130XE case and metal RF shield to get down to the mother board.(320XE users go to st}ep two).STEP ONE: Now de-solder and remove the eight ram chips U26 thru U33(MT4264). They are the row closest to the TV RF} module(do NOT use solder wick, the circuit board of the 130XE has very weak runs and they will pull loose if not completely }de-soldered). Replace these with the 16 pin low profile sockets. Take a piece of wire approx 12 in. long and run a jumper fro}m pin 1 of each socket to the next. When you are done the wire should be attached to pin 1 of each of the new sockets and you} should have about 6 inchs left over. Do this on the rear of the mother board and then snake the wire thru the large hole nea}r the ram chips. Next, desolder and remove U23(CO14795), and replace it with a 40 pin socket. Bend up pins 15 and 16 and in}sert it in the socket you just installed. Take Z1(74LS158) and break off pins 5,6,7,9,10,11,12,13,14. Bend up the other pins }on it except 8 and 16. Put this "piggy back" on top of U20(HD14050, or 4050 - located just to the right of C50) and solder pi}ns 8 and 16 of Z1 to pins 8 and 16 on U20. Now take a short jumper from pin 15 on Z1 to pin 8 of Z1. Take a piece of wire abo}ut 4 in. long, solder one end to pin 30 on the chip marked "CO14805" on the mother board, and the other end to pin 1 on Z1. N}ext solder a wire to pin 15(one of the two you bent out) of U23 and connect the other end to pin 2 on Z1. Solder a wire to pi}n 16 on U23 and connect the other end to pin 3 on Z1. Take R1(33 ohm) and trim the leads to about 1/4 in. Take the wire you} connected to pin 1 of the ram chip sockets and solder it to one end of R1, solder the other end of R1 to pin 4 on Z1.STEP T}WO: Slide the mother board back into the bottem half of the plastic case(do not use the RF shield, you must be able to get a}t the mother board), and attach the keyboard. It will rest above the mother board without touching it. Test all 41256 ram chi}ps by putting one set of 8 in the sockets and using the handlers(or DOS's), and then the next. After testing all ram chips re}move them all from the sockets, and take 8 of them and cut about half of pin 15 off of each one. Only the "fat" part of pin 1}5 should be left. After doing this you have to "piggy back" the 8 256K ram chips with the short pin 15's on top of the other }8 256K ram chips. Now solder all the pins together on the stacked ram chips except for pin 15, it should not be touching the }other pin 15, make sure you have them going pin 1 to 1, pin 2 to 2,ect. When you get done you will have 8 sets of Piggy backe}d 256K ram chips. Now take a piece of wire about 16 in. long and run a jumper from pin 15 to the next one on all the top 256k} DRAM's, leaving about 1 inch between each ram chip. Put these stacked ram chips into the 8 sockets you installed earlier. Ta}ke Z18(74LS138) and bend up all the pins except 8 and 16, cut the pins you bent up in half so only the fat part is left, and} solder pins 8 and 16 to pins 8 and 16 of the other 74LS138 right below the U23(CO14795). Take Z19 and bend up all pins excep}t 7 and 14, once again cut all the pins you bent up in half and solder pins 7 and 14 to pins 7 and 14 of the 74LS08 right bel}ow U23. Take the wire you jumpered earlier to pin 15 of Z10 thru Z17(the upper row of 256K ram chips) and go out 2 in. and }cut the wire, now install R2(33 ohm) between this cut. Place a piece of heat shrink tubing over R1 and make sure no wire is e}xposed and heat it with a lighter. Take the other end of this wire and connect it to Z18 pin 14. Find the 2 33 ohm resistors }just to the right of U28(one of the ram chips you socketized). The upper one of the 2 is R111, desolder the right leg of it a}nd bend it up. Take a piece of wire and solder it to the land where you just removed the leg of R111. Connect the other end t}o Z18 pin 4. Trim back the leg of R111 and solder a wire to it, slip a piece of heat shrink tube over it and heat it up. Now }connect the other end to Z18 pin 12. Take a short wire and run a jumper from pins 1 and 16 of Z18. Take another short wire an}d connect a jumper from pins 3,5, and 8 of Z18. Now connect a wire from Z18 pin 2 to Z19 pin 3. Find the wire you installed }from U23 pin 15 to Z1(74LS158) pin 2 and desolder it from U23. Take it and reconnect it to Z19 pin 11. Ok, now pry U23(CO1479}5) back out of the socket and bend up pin 11, plug it back in. Run a jumper from pins 1 and 4 of Z19, and another jumper from} pins 10 and 13 of Z19. Connect a wire from U23 pin 11 to Z19 pin 1, and from U23 pin 15 to Z19 pin 13. Now connect a wire fr}om Z19 pin 8 to the right side of the 3.3K ohm resistor marked R206(located at the bottem right of U23). Connect a wire to Z1}9 pin 6 and run it to pin 18 of U3(CO61618). Now comes the tricky part, drill a small hole(1/4 in. or so, depending on the sw}itch size) at the rear right on the back of your 130XE. Take the small DPDT switch(S1) and install it in the hole. Now connec}t it as shown(make sure the switch DOESNT have a center off position); S1(rear) U23 ________ U23} pin 20 ----|-O O-|----- pin 1 | \ / | Z19 ---|-O \/ O-|--- Z19pins 2+12 | /\ | pins 5+9} | / \ | | O O | |________| Note: where the wires cross in the middle, they are NOT} connected. Make the connection from the switch to U23 on the rear of the mother board. Well that's it(thank god). Now re-ass}emble the computer, being carefull not to break any wiring going to the switch. You should now have in one switch position a }100% compatable 130xe, and in the other you have a 576K 130XE that does not have Antic memory enhance mode and also can-not u}se internal basic. In the 130XE mode you gain 64K as bit 6 of the PIA can still be used. The following page list of the bit t}able and numbers to be used in location 54017(PORTB). Once again, if you need help call the Peanut Gallery BBS (408)-384-3906}. If you want a mailer of all the upgrades I have as well as a disk with handlers, source codes, ect. send a money order(plea}se, no checks) for $10.00 to;Scott PetersonP.O.Box 33Ft.Ord CA. 93941-0033 This includes the 800 288K upgrade by D.G.Byr}d, the 800XL/256K(C.Burchholz), the 130XE/320k upgrade and anything else I finish. Good luck, and have fun.Memory Co}ntrol Register 54017(D301) 130XE in 576K mode.Bit 7 6 5 4 3 2 1 0 D a b C c d e RD=0 enable diag. ROMR=1 ena}ble OS ROMC=0 enable extended memoryabcde= memory control bits.-------------------------------------Bank# Control#(de}c) Hex-------------------------------------Bank 0 ---------->129 81Bank 1 ---------->131 83Bank 2 ---------->133 8}5Bank 3 ---------->135 87Bank 4 ---------->137 89Bank 5 ---------->139 8BBank 6 ---------->141 8DBank 7 --------}-->143 8FBank 8 ---------->161 A1Bank 9 ---------->163 A3Bank 10 --------->165 A5Bank 11 --------->167 A7Bank }12 --------->169 A9Bank 13 --------->171 ABBank 14 --------->173 ADBank 15 --------->175 AFBank 16 --------->193 } C1Bank 17 --------->195 C3Bank 18 --------->197 C5Bank 19 --------->199 C7Bank 20 --------->201 C9Bank 21 ----}----->203 CBBank 22 --------->205 CDBank 23 --------->207 CFBank 24 --------->225 E1Bank 25 --------->227 E3Ba}nk 26 --------->229 E5Bank 27 --------->231 E7Bank 28 --------->233 E9Bank 29 --------->235 EBBank 30 --------->2}37 EDBank 31 --------->239 EF------------------------------------- There is a version of MYDOS to support this mod, it}s called 4.1A and will run up to 32 16K banks. At this time ICD is working on a RD.COM file to support this. Also I have writ}ten a machine lang. tester that will load and test all 32 banks of memory to insure that they are there and work. Wonder how }long it will take Jay Torres to copy this one. Good luck Scott Petersonand work. Wonder how hTHE THREE FILES CALLED RAMS.BIN RAM2S.BIN AND RAMDD.BIN ARE THE ASSEMBLED FILESTO CREATE YOU RAM DISKRAMS.BIN IS A SINGLE }DENSITY 720 SECTORRAM DISK NUMBER 3RAM2S.BIN IS RAM DISK 3 AND 4RAMDD.BIN IS A 720 SECTOR DOUBLE DENSITYRAM DISK. BE SUR}E TO SET UP YOU DOSTO USE DISK 3 AND 4#.BIN IS RAM DISK 3 AND 4RAMDD.BIN IS A 720 SECTOR DOUBLE DENSITYRAM DISK. BE SUR*8h8 I8ˑ4 ^8xԭ) I8͑4 ^8X`˩̩ͩ@΢@` ʈ`8}m6 7L̺8!LPL%RLzSLWL%ͮ```23`ͭ   }LB  4 4*4*i4JJi@9Ӎ)͊ H) ͍h )` ͍ͭ45@x4`@ ̭͍Ә89}͍ͭӭ͑4X `̩2LV `̩1 ḵ2͎ӑ8͎e11  * ` ̭ )1͎ӑ8͎Ӡ͑4X}LV `̩1 k̮͎ӱ8͎ӑ2e11  * ` ̭ )͎ӱ8͎Ӫ͑4X1LLLV `̠2ɀ ȑ2LV}   `878Z̭[̩Z̍[˭̠ˍͥ    `8͑4X1LLLV `̠2ɀ ȑ2LVNA UK users notes on the 256k modThe antic chip number was neither of the ones mentioned in the listing QMEGXL.TXT , but par}t # CO21698 . I think this is the PAL version rather than the NSCT version . As it is a higher number than either of the two }antics in the file , it seems reasonable to assume that it is the newer type , e.g. one with an 8-bit refresh signal . i}nstallation is not too difficult , I would recommend using a solder sucker to desolder the chips . You might not be bothered }about the ram chips , but the chip at U27 is needed in the mod , so unless you want to buy a new one , use a solder sucker . }I think it would be practical to use clippers to cut out the chips , but this is rather wasteful . I used the first  }circuit in the listing , the other two chips seem to be quite tricky to get hold of . SOFTWARE The suppli }ed software (on this disk) didn't work at all . To be fare , I did not get it from Mr. Buchholz , but from a guy in Hungary , } so it had probably been through several hands . The Sparta Dos 3.2 "RD.COM" file works fine , giving about 1522 free sectors } . Also , the "RAMDISK.COM" on DOS 2.5 works fine , although it will only give a 128k ramdisk . I think one of the f }iles that was supplied with the instructions will use the other 128k for another ramdisk , but I haven't got it to work yet .} All the happy software apart from 7.10 recognizes the ram as a 130XE type ramdisk . Happy 7.10 recognizes the ram a}s a Newell 256kxl , but does not work with it . The happy 7.10 gives information on how to customise the disk , to save time }it is : table of bytes is $A3,$A7,$AB,$AF $C3,$C7,$CB,$CF $E3,$E7,$EB,$EFThis must be c}hanged in sectors 3 and .63 . The original table starts with $83,$87,$8b,$8f, etc , at about offset $3a . I think th}at with the bank select information for the newell XL and this one , it would be possible to convert this to newell compatibi}lity , but I haven't thought about it yet . If anyone is interested then contact me : JIM CREW , } c/o 1 Valentine Drive, Oadby, Leicester, LE2 5GN England. JIM CREW , ` BELLCOM MENU INSTRUCTIONS _________________________ MENU by David Castell -Press [SELECT],[OPTION], !}cursor UP or DOWN arrows, or move your Joystick to scroll the MENU. -Press [START], [RETURN], or the Joystick Tri!}gger to run and/or display a highlighted program. -Press both [SELECT] and [OPTION] together, to refresh the MENU !} display after changing disks. -COMMANDS: [Control][D]=Delete, [L]=Lock, [U]=Unlock, [Q]=Quit. Execute by pressing !}the relevant key(s); but be careful, as they allow no second chance! Pressing "Ctl D" will immediately delete the!} highlighted file ...ZAP!!! -To enter a "LISTED" BASIC file, [Q]uit the MENU to BASIC and use: ENTER"D:Filenam!}e.Ext" -Programs may be one of the following file types: BAS > BASIC language TUR > TURBO BASIC OBJ|!}COM > MACHINE language DOC > DOCumentation PIC|MIC|FNT|MVM > Graphics AMS|MUS|MBD > Music LST > BASIC!} LISTing -Some MACHINE language programs can only be run by loading the MENU without BASIC! ------- -For s!}ome programs, XL/XE models may require a "TRANSLATOR" program (available from BELLCOM) to be loaded first! -Most !}programs are relatively self-explanatory; however, some may have separate DOCumentation files. Some BASIC programs m! }ay contain instructions in their program listings. LIST to read. -To view DOCumentation files one page at a time,!!} press [START], [Return], or the Joystick Trigger to display the highlighted DOC file. Pressing the [Esc] key cau!"}ses a return to MENU. -To print out a hard-copy of any DOCumentation file, [Q]uit the MENU, boot DOS, and then from!#} DOS, use the (C)Copy command: D:Filename.DOC,P: -To use this great MENU program on your own disks, simply!$} copy the file "AUTORUN.SYS". D:Filename.DOC,P: -To use this great MENU program on your own disks, simply ! __________________________________ MEMORY EXPANSION FILES INFORMATION __________________________________ Well%&},... You've heard about it.... CHAOS Member Claus Buchholtz started it all... THE 256K 800XL!! And now we have %'}collected quite a variety of instuction files, documentation, source code for assembler, ramdisk drivers, driver crea%(}tors, demos, and just about everything else for use in/by/for expanded memory in your ATARI computer. Here's some o%)}f what's available on this disk from the CHAOS BBS. Be sure to READ the documentation and instruction files for these %*} files where possible before worrying about why they crash on you! (All files here are listed in the "UTILITIES/TECHNOL%+}OGY" section of the CHAOS BBS!) HINT: the biggest single cause of ramdisk failure is not having set up your DOS to r%,}ead any disk drive numbered higher than D2. Read the QXLINSTR file for discussion of this, also see your DOS manual. %-}The second most trouble comes from using the wrong ramdisk driver for your DOS. Select carefully, and report your suc%.}cess or failures to us here so that we can let everyone else know. Check the messages, especially the LIBRARY BASE (#3)%/}, and look for NEW QX.... files in the "N"EW section under "F"iles. ALSO BE SURE TO SEND US ANY EXPANSION, UPGRADE, %0}WHATEVER FILES YOU MAY HAVE TO ADD TO OUR LIST!___________________________________Now, here goes...QXLINFO.DOC - %1}DOCFILE---------------------This file!QXLINSTR.DOC - DOCFILE----------------------How to do your 256K 800 XL!Includ%2}es vital information on howto use and configure your systemafter the mod is installed.QMEGXLD.SRC - SOURCE CODE--------%3}-----------------This is Claus's actual assemblercode for constructing a doubledensity ramdisk driver file or adriver to%4} make TWO SINGLE densityramdisks. The drive number for theramdisk may be selected beforeassembly using the ATARI ASSEMBLE%5}Rcart, or any good assembler. Namethe resulting binary fileAUTORUN.SYS or load from DOS.QMEGXLS.SCR - SOURCE CODE----%6}---------------------Code for constructing a singledensity ramdisk driver file, usefulfor running software designed foru%7}sing the 128k in the 130XE. (Won'twork with some, like BASIC XEcart!) The drive number for theramdisk may be selected. Se%8}e thediscussion of these two SOURCE CODEfiles in the QXLINSTR file.Files assembled into OBJECT CODEfor DOS "L"oading fro%9}m the abovefiles:QXLDD3.OBJ----------Makes a double-density Ramdisknumbered as "D3:"QXLSD34.OBJ-----------Makes%:} TWO ramdisks, both singledensity, numbered "D3:" and "D4:"QXLSD3XE.OBJ------------Makes one single density ramdisknu%;}mbered "D3:" that stays out ofthe way of much 130XE software.QXLSD04.OBJ-----------Makes one single density ramdisknu%<}mbered "D4:" that stays out ofthe way of much 130XE software.QBASXED4.OBJ - OBJECT---------------------This one is spe%=}cial made to allow adouble-density 503 sector ramdiskcalled "D4:" that will work withDOSXL and BASIC XE!! (Perhaps itwill%>} work on SOME other DOS's. Letus know.)QXSPARTA.OBJ - OBJECT---------------------Use this like this from SPARTADOSpro%?}mpt: >D:QXSPARTA D3: (or anydrive # you want...) to set up a1530 sector ramdisk!!! It might doeven more on a 320 or 512X%@}E! Likeall of these, it is still anybody'sguess what compatibility may or maynot be found.QXCONFIG.OBJ - BASIC--------%A}------------Writes ramdisk drivers set up frommenu choices, supposedly will workwith MYDOS and others. Some reportsof se%B}mi-functioning with this fileunder some DOS's.QXLDEMO.BAS - BASIC-------------------Just a quick basic routine to get%C}you started and to check out bankselection.QXLLOADR.BAS - BASIC--------------------Load that/those ramdisks with files%D}copied off prepared disksautomatically with this one.QXLDOS25.DOC - DOCFILE----------------------How to set up DOS 2.%E}5 for ramdiskuse of the extended memory.Now, some other files...GENEMDE2--------Install EMDE vs.2 for 800 plusmemo%F}ry mod. Generates RAM disk.ADRCHECK--------Extended memory diagnostic for 800plus addressing error test.ERRCHECK--%G}------Extended memory diagnostic for 800plus Data Bit Error Test.XLDSK.SRCXLDSK.OBJ---------Ramdisk controller for %H}256K 800XL.RD.DOC RDS.OBJRD.SRC RDD.OBJRD2.SRC-------Ramdisk controller for 256K 800XL.________________________%I}___________ Keep us up-to-date! Let us know what's hot and what's not in upgrades and software, and upload whatever%J} you find! SUPPLIED BY THE CHAOS BBS (517) 371-1106 Updated 4/20/86___________________________________ whatever$r _________________________________ A 130XE-COMPATIBLE 256K UPGRADE FOR THE ATARI 800XL by Claus Bu)L}chholz _________________________________ I designed the 256K upgrade described in my article, "The Quarter-Meg Ata)M}ri" (BYTE, September, 1985 and recapped here in this article), in December, 1984. Since this predated the 130XE, the)N}re was no precedent for extended memory on the XLs. I felt free to implement a system of eight 32K banks. The major )O} reason was to keep the add-on circuit as simple as possible. The 130XE, introduced in early 1985, set a different st)P}andard for bank-select memory. It uses 16K banks and makes them separately available to both the CPU and the video c)Q}ontroller (ANTIC). The XE has 128K total memory. The 64K extended RAM is split into four 16K banks. A 256K 800X)R}L has 192K extended RAM, which requires 12 16K banks. I have designed a new upgrade for the 800XL that implements such)S} a scheme. Its similarity to the 130XE's scheme allows use of software for the XE on a 256K 800XL. To select one )T}of four banks, the XE uses two bits, #2 and #3, in the memory control register (port B of the 6520 PIA, addressed at )U}$D301 or 54017 decimal). Zeroing bit #4 makes the selected bank appear at addresses $4000-$7FFF (16384 to 32767 decimal)V}), 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)W} select one of the twelve banks. Zeroing bit #4 makes the selected bank appear at $4000- $7FFF to both the CPU and AN)X}TIC. So, any program for the XE that uses the extended RAM for CPU storage will work on an 800XL with this mod. Thos)Y}e programs won't use the additional 128K, though. Programs that use the video banking feature of the XE might run on )Z}the modified XL, but the screen display will be wrong. The Dynamic RAM --------------- Each chip)[} inputs or outputs one bit at a time, so each bit has a unique address. For the 256K-bit chip the address requires ei)\}ghteen bits. The chip has nine address inputs, each of which does double-duty. During the first part of a memory access)]}, half of the address bits are presented to the chip. This half is called the row address. Later in the access cycle,)^} the chip receives the other half of the address, called the column address. The storage cells in the chip lie in a )_}matrix, and the cell being addressed lies at the intersection of the row and column specified. To complete the access)`} cycle, the chip reads or writes the selected bit. The 800XL uses 64K-bit RAM chips, which have eight address inputs)a} for an eight-bit row address and an eight-bit column address. This is fine for the 16-bit addresses the 6502 gives. T)b}here are eight of these chips, each contributing one bit to each byte of RAM. The 256K-bit RAM is practically identi)c}cal to the 64K-bit RAM except that it has one extra pin to accommodate the two additional address bits it needs. This e)d}xtra pin is pin #1 on the chip. Pin #1 on the 64K-bit chip has no function. The functions of all the other pins on bo)e}th chips are identical. Therefore, our upgrade involves unplugging the eight 64K-bit RAMs and plugging eight 256K-bi)f}t chips in their place. We must also add some circuitry to provide two extra address bits for pin #1. The storage ce)g}lls in dynamic RAM chips are actually microscopic capacitors, storing an amount of electric charge that represents a )q}B%DOS SYSB*)DUP SYSB9SQMEGXL TXTB&XE320 TXTBHXE572K TXTBFILE DOCBRAM576 DOCBRAMUSER DOCBHELP DOCB&%QXLINFO DOCBKQXLINSTRDOCBQXLDOS25DOCBFSETUP COMBENQMEGXLD SRC>QMEGXLS SRCQXLDD3 OBJQXLSD34 OBJQXLSD3XEOBJQXLSD04 OBJQBASXED4OBJ QXSPARTAOBJ-QXCONFIGOBJ +QXLDEMO BAS$6QXLLOADRBAS.ZRAM1088K #TEST576 +TEST1088 $XEFIX DIA1050 0 or 1 bit. Since capacitors leak charge, they must be periodically recharged or refreshed. The chip refreshes one or t)r}wo entire rows when accessed. This means that every row must be accessed frequently to keep the stored data accurate.)s} Since normal operation of RAM can't guarantee that, the computer system must provide special access cycles called re)t}fresh cycles. A refresh cycle is a dummy read cycle in which a refresh address is used as the row address. The 16K- )u}and 64K-bit RAMs require seven-bit refresh addresses. The computer must provide all 128 possible refresh addresses ever)v}y few thousandths of a second to keep the RAM refreshed. In the Atari, the video controller provides refresh cycles i)w}n addition to its screen memory accesses. It automatically provides seven bits for the refresh address. It turns out,)x} the Atari spends four percent of its time refreshing RAM. One snag in designing the 256K-byte upgrade is that sta)y}ndard 256K-bit RAMs require an eight-bit refresh address. Older versions of the Atari video controller chip provide onl)z}y seven bits of refresh address, whereas newer versions give all eight. So, there are two versions of the upgrade's i){}nterface circuit. The more complex one must add another bit to the Atari's refresh address. Notes on Bank-sele)|}ction ----------------------- To fit 256K bytes into the 6502's 64K memory space, we must divide it into banks.)}} If a program in RAM were to replace the entire 64K RAM with another bank, it would cause itself to disappear, and t)~}he system would certainly crash. Also, the top 32K of the Atari's address space is cluttered enough with hardware add)}resses and ROMs that can be switched in and out themselves. The screen RAM is usually in the top 32K and we don't want )}to switch that out and cause glitches to appear on the screen. Additionally, the operating system keeps important da)}ta in the lower part of RAM and it expects the data to be there when it is called. Further, the 6502's stack is in lo)}w memory. Worse, interrupts occur frequently and the routines they invoke also keep data in low RAM. Programs must th)}erefore follow a strict rule: Keep the "normal" bank enabled as much as possible. If you select another bank, you must)} first disable all interrupts and not call the operating system until the "standard" bank is restored. Inte)}rfacing the RAM ------------------- The interface circuit for the 256K RAM is to be assembled on a small circ)}uit board and installed inside the computer, as the computer's expansion slot doesn't carry the signals we need. The )}circuit consists of four (or five for older models) chips and replaces one of the chips on the computer motherboard. It)} also requires jumper wires to various points on the motherboard and connection to 5 pins of the PIA (U23). The ci)}rcuit plugs into the socket at position U27 on the motherboard. This gives it access to six important signals, includ)}ing power and ground. The chip that was at U27 becomes IC1 in the circuit. As U27, this chip was one of the two respons)}ible for selecting which eight of the sixteen address bits are passed to the 64K RAMs at one time. If your ANTIC (U7)}) part number is CO21697, use the circuit described by the first connection list at the end of this article. If it i)}s 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 extra circuitry for the older version of the 800XL is)} an eight-bit binary counter that counts the refresh cycles. It supplies the eighth bit of the refresh address that t)}he 256K chips need. The refresh signal it uses comes to the circuit through a jumper wire from the motherboard. )} Performing the Upgrade ---------------------- To disassemble the 800XL, remove the six screws on the unders)}ide and separate the top and bottom portions of the plastic case. Be careful of the flexible keyboard cable. Pull it )}straight up out of its socket on the motherboard. To detach the motherboard from the case bottom, remove three screws:)} one on the right side, one in the right rear corner, and one in the left rear. Gently pull the board free of the case)}. Next, remove the small nuts and bolts around the metal shielding that encases the motherboard. On the left side of)} the exposed motherboard, locate the row of eight 16-pin RAM chips. Just to their right is U27. Behind U27 is a three)}-inch square area that fits inside the shielding. The circuit goes there, because the shielding is highest toward the )} rear. Replace the 64K RAMs with the 256K RAM chips. The new RAMs are very easily destroyed by static discharges, so)} extreme care is necessary in their handling. Lay aluminum foil on the work surface and keep the motherboard, RAM chi)}ps, tools and hands in contact with the foil at all times. This keeps everything at the same potential, decreasing the)} possibility of damage. On the motherboard, locate the video controller, the 40-pin chip at U7. If the part number st)}amped on it reads "CO21697," you are lucky! You may use the simpler circuit. If the number reads "CO12296," you must )}use the larger circuit. Assemble the appropriate circuit on a two by three inch circuit board (Radio Shack's #276-15)}0 is ideal). Use very low profile sockets or no sockets at all, as height is severely limited by the shielding. If yo)}u use no sockets, be careful not to apply heat to the IC pins for too long a time. Keep the wiring on the chip side o)}f the board to conserve space. The wiring must be soldered, as there is no room for wire-wrap posts. The board plugs)} into the socket at U27 via a 16-pin DIP header and short ribbon cable. Finally, install the jumper wires. Find a res)}istor marked R32 immediately behind the row of RAM chips and remove it. A trace from one of the holes runs to pin 1 of )}the RAMs. Solder the first jumper to that hole. The next jumpers run to a parallel port which the Atari uses to co)}ntrol ROM switching. We need pins 12 through 16, which are normally unused and not connected to any traces. Locate U2)}3 and carefully pry the 40-pin chip from its socket. Bend up pins 12, 13, 14, 15 and 16 so that they point straight out)}. Reinsert the chip. Cut five adjacent pin positions from an IC socket and solder the jumpers to them. Use this custo)}m socket to connect the jumpers to the three protruding pins. Cover the connector with electrical tape, as the shield)}ing is very low at this point. If you are using the circuit for the older 800XL, you must install an additional jump)}er. Locate a trace on the motherboard from pin 8 of the video controller, U7. Along the trace find a hole and solder )}the jumper there. Finally, insert a thin piece of stiff cardboard or plastic under the small circuit board to avoid )}shorting the circuit. Refasten the shielding to the motherboard. If it doesn't fit over the circuit, carefully pound a )}dent out of the shielding with a hammer. Reassemble the computer. If all has gone well, the computer should power up)} and perform normally, although with the 256K in your XL, be sure to wait at least ten seconds after turning the comp)}uter off, else it may not coldstart properly when you turn it back on. The computer is ready to try some software th)}at utilizes the large RAM space. The RAM-disk Software --------------------- Bank-select RAM is useles)}s without software to control it. The software must obey strict rules as outlined above to work properly. The softwar)}e must also be tailored to fit the application. Applications vary. For example, many graphics screens may be stored )}in the RAM, possibly to be displayed in quick succession for animation. Alternately, the RAM may act as a print spool)}er. A word processor would print an entire document quickly into the RAM and go on to other jobs while the RAM empties)} slowly to a printer. These applications are rather specific and might not appeal to all users. A more universal ap)}plication is the RAM-disk, a RAM-based disk drive simulator. To DOS and to the user's programs, the RAM-disk appears )}just as another disk drive, except that it is very fast. The application program may then use standard DOS commands to )}access the large RAM space. The 192K bytes of available RAM hold more data than two Atari 810 drives or one double-de)}nsity drive. The RAMdisk software I have prepared, QMEGXLD.SRC, offers a choice of either two single-density RAMdisk)}s or one double-density. Also available is QMEGXLS.SRC, a RAMdisk program that sets up one single-density RAMdisk an)}d leaves the XE-equivalent banks free for XE software. This is quite useful with BASIC XE, DOS 2.5, or the new Synap)}se software. Assemble the source code with any assembler that accepts the syntax of the Atari Assembler/Editor. Asse)}mbly produces an object file that performs several tasks as it loads. First, it copies the operating system from ROM in)}to the underlying RAM. Next, the RAM-disk routines load into the RAM-based OS, overwriting the international characte)}r set, a little-used feature of the 800XL. Lastly, it patches the OS to install the RAM-disk program and calls DOS's )}initialization routine to let DOS recognize the new drive. The source code allows two options: the drive number and )}the density. The RAM-disk can act as any drive numbered 1 to 8. If you have one real drive, you might want the RAM-di)}sk to be drive number 2. Remember that your DOS must be set up to look for the drive number chosen. See the DOS manua)}l for instructions concerning drive numbers. Typicallly, you must POKE memory location 1802 with a value of 15 in order)} to recognize disk drive numbers up to #4. Then you will write new DOS files which will thereafter always include yo)}ur POKE. The RAM-disk object file should be made to boot in after DOS so the user needn't worry about it. In Atari D)}OS, naming the file AUTORUN.SYS accomplishes this. Once the object file has loaded, the RAM-disk MUST BE FORMATTED be)}fore use. You may do it manually from DOS, or the application program may do it automatically (use the BASIC XIO comm)}and or a call to CIO in machine code). RESET won't harm the contents of the RAM-disk, nor will rebooting the compute)}r, as long as the computer is not turned off (to reboot without powering down, POKE 580,1 and press RESET, or jump to)} $E477 in machine code). After rebooting, the RAM-disk program must be reloaded to access the data, which should then)} be found unharmed in the RAM-disk. This is why the RAM-disk program does not automatically format the RAM-disk upon )}loading. The major disadvantage to the RAM-disk approach is that all data is lost when the computer is turned off. T)}he application must take care to save important data to a real disk before ending. However, the speed, convenience, a)}nd versatility of the RAM-disk overshadow its drawbacks. Uses ---- An assembly langu)}age programmer, after studying the RAM-disk source code and heeding the rules above, can devise many practical uses f)}or a quarter-megabyte of RAM. The large RAM space, joined with the Atari's versatile hardware and low price, gives a )} performance/price ratio that is unbeatable in today's micro- computer market. I ask one thing in return for this in)}formation: 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! )} IMPORTANT NOTE -------------- COPY THE REMAINDER OF THIS FILE TO YOUR 80-COLUMN PRINTER FOR BEST VIEWING R)}ESULTS! _________________________________ 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 R)}AM 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 multiplex)}er (IC2) 1 74LS139 Dual 2-to-4 decoder (IC3) 1 - 33 ohm, 1/4 watt resistor ADDITION)}AL 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 circui)}t, below is a list of connections. Each entry in the list begins with the name of the signal followed by all t)}he IC pins that connect together and share the signal. IC3-13 means pin 13 of IC3. The IC numbers appear in the par)}ts list above. IC1 is the 74LS158 chip from socket U27 on the XL motherboard. DIP is the DIP header to be plugged in)}to 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, I)}C2-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-1)}2 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 fro)}m 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 : I)}C5-8, IC4-5 Q3 : IC5-6, IC5-13 _________________________________ SUPPLIED BY THE CHAOS BBS (517) 371-1106)}5-8, IC4-5 Q3 : IC5-6, IC5-13 _________________________________ SUPPLIED BY THE CHAOS BBS (517) 371-1106( _________________________________ DOS 2.5 Modification for Q-MegXL _________________________________ I found th-}e following modification in the Madison (WI.) Area Atari Users Newsletter (October, 1985). Their hardware sig built a 2-}56 XL upgrade similiar to the one described by Claus Buchholz. Since they didn't have Claus's software at the time, -}they modified DOS 2.5 so it would run two 720 sector ram-disk drives; one is created by runing RAMDISK.COM, the other-} must be formatted (in this version it is drive 7, but can be anything between 2 and 7; see my note below). I tried t-}his mod on my 256 XL (Claus Buchholz Oct. 1985 version) and it worked. I had found that my new copy of Typesetter fo-}r the XE did not work with Claus's software (typesetter uses the international character set for its own purposes), b-}ut DOS 2.5-256K did! In fact I was finally able to load the entire Typesetter package into the RAMDISK, which speeds-} up operation dramatically! -Richard Evans, East Lansing, MI. _______________________-}__________ What follows are the instructions as they appeared in the MAAUG newsletter... Pataching DOS 2.-}5 by Kurt Grittner ----------------- 1) Insert your assembler cartridge. Put Dos 2.5 in driv-}e 1 (without RAMDISK.COM). Cold start your machine. 2) When the "EDIT" prompt appears, get into debug mode -} by typing: "BUG". 3) When the "DEBUG" prompt appears, get into the mini-assembler by typing "A". 4) T-}ype the following lines ending each with the RETURN key. The mini-assembler will respond to each line with on-}e or more lines of assembled object code. Notice that you MUST type a space after each "<" sign. -} B86< LDX #0 105C< LDA #$64 12DE< LDY $21 < CPY #8 < BCC *+4 < ADC #5 < TAY < LDA $185B,Y-} < JMP $1846 148D< CMP #6 14C4< LDA #$70 < JSR $1846 183A< .BYTE "MEM.SAV ERR",$9B 1846< STA $44.} < LDA $D301 < AND #$83 < ORA $44 < STA $D301 < RTS 185B< .BYTE $20,$24,$28,$2C < .BYTE $4.}0,$44,$48,$4C < .BYTE $60,$64,$68,$6C 77F< CPX #7 (change # for other < BCC $78A (drive number .}B88< CMP #7 (--2,3,4,5, or 6. < BCS $BD3 105E< CPY #7 (Don't type this!) < BCS $1076 70A< .BYTE $.}C3 5) Press RETURN to exit the mini assembler. 6) type "X" followed by RETURN to return to the EDIT mo.}de. 7) Type DOS to access the Dos Menu. 8) Write DOS files to disk. 9) Turn off the machine and cold .} start DOS . . with RAMDISK.COM on the disk. When you do a directory of D8: you should have DUP.SYS, MEM.SAV.}E and 620 sectors free. Use the "I" command to format D7:. When you do a directory you should have 707 .}sectors free.ectors free. Use the "I" command to format D7:. When you do a directory you should have 707 ,u L <.`Lu 4U (c)1983 Action Computer Services  B JKIH2 }iDiELV`L94 94 BLV`"L44l L4 &` Fj`8冨2 }凪` 4EӅӥ 4`ʆǪƩ Ɛee` 4ƦʆǢ &Ɛeǐ 5 2 }5L4 4'&&&8儨児祂*L4&&*ń8&&L4 W5`hihiHHȱȱ2 }L4c !#3`L4JJJJ`H 4h`Hȩh n4L5 w4L5 !4L2 }5 )4L5 /4H8`HhHh [6L5 BHI V䅠L5 L6 94L5Ԇ2} ؠPIPP` 6P )4L5 6L6 6L6 7L6H- 68塪墨hL7 7L6 "2}7L6 6ȹP`텠8堨塪 6芨Oȩ-`PP 6P棩 Ѥģ02}-ģ6000:,80H & &ehe&eģ0ʥ 8堅塅`$ 6&*i0:0i 6Ʀ`2}¢ 护°ڱ%ȱ%E 6L\8担CS N6L\8I 7L\8H 8L\8 6L\8 2} &B V 5NLMȑ` MLN%B VL5S:8E:9[\ZUVT`Ѣ =9`ȱѢĦ2}`膡``ťƤe8夰LS9 Ƥ8`ŦeѠ2}e桊LW9)")T1RINTE(" but DO use the pD1:AUTORUN.SYSD1:D1:DOS.SYS,DOS.SYSRUN"D: .SAV, @7K82}P?@     Y`  Y0 l `7L 䙣ލ2}Ȏ!"` !"H h`lDD L;;;L9; 6L2; to continue, push 2}Ԣ; N6)ILL;L9;)L];LL;`Lb; 6^;^;`our BL; 5w;{; _;z;z;IL;{;iw;e2}x;iw;x;{;{;`z;)z;z;I}L<{;L<z;{;< 5==8= > >=2}LD>o=m==i 6=L>`TLI>Lj>} 堢>L ;6L> This program will work with and>t 2};6L>" affect the diskette inserted in> ;6L> drive number %C.%E9> ?8L?"To specify another drive, simply2}> ;6LD?# enter just the drive's number at? ;6Lq?" the prompt (any key but a valid?N ;6L?& drive number requests2 } 'no change').?{ ;6L?Which drive to use ? ? N6 _;E>E>1L:@4E>L:@E> 6E>9E>9E>9E>:L)@ %E%E 2!}Drive %C now selected.%E9@ ?8Lu@Lg@)%E%ENo change--drive %C still selected.%E9@= ?8`'Lz@L@ Current Syste2"}m Configuration:@} ;6L@Active Drives: @ N6v@v@L@ v@=%:L@v@i0 6 6v@L@ 6 )L-AL2#}&A (RamDisk)A ;6 )v@v@ILALdA!κ IF a RAMDISK is added toAB ;6LA# this configuration, th2$}e DOS menuAn ;6LA will NOT work properly!A ;6v@ILOBLA!Һ do NOT return to DOS withA ;6LB" this confi2%}guration active. theA ;6LHB# DOS menu will NOT work properly!B$ ;6L|B)%EUp to %B files open simultaneously.%E%E 2&}BR ?8LBDisk writes occur B N6yIPLBLB verify.B ;6LBLB with verify.B ;6` CloLBLC&} 2'}B ;6 w@LIC"Do you want to change any part ofC& ;6LrC that configuration (Y/N) ? CS N6 `=2(}LC 6 69` B ByBLC#}Specify active drives by simplyC ;6LC" typing their drive numbers, oneC2)} ;6L!D! after another. Any key exceptC ;6LOD# a valid drive number (1 to 4) isD+ ;6L}D# assumed to be end of your2*} entry.DY ;6LDActive drive numbers ? D N6 )   _;BB1LD4BLDB 6 6B) %: LDL2+}DLD 6L!E#How many files do you need to haveD ;6LKE open simultaneously (1-7) ? E+ N6 _;BB1L|E7BL|E2,}B 6B)  6LE!Do you want disk writes to occurE ;6LE verify (Y/N) ?E N6 `=ILEPyLEWyLF2-}!} E ;6 w@L@F#Are you this configurationF ;6LgF is what you want (Y/N) ? F2.}J N6 `=LFByB B LG  6LF!Current system configuration hasF ;6LF been changed. Do you want toF2/} ;6LG! make these changes to the diskF ;6L;G! currently in drive %C (Y/N) ? 9G ?8 `=ILG H6920}:  69LG 6 6LG!Unable to change DOS on that diskG ;6LG! because error # %U occurred.%E921}G ?8 6LGLB`,LGL!H&}Please enter the name of the BASICG ;6LLH program that you wish to haveH+ ;6LzH# auto22}matically RUN when this diskHV ;6LH is next Booted.H ;6LH!Do NOT enter the drive specifierH ;6LH# (i.e., do 23}not use D:, D1:, etc.)H ;6LI" but DO use the proper extensionH ;6LKI" (e.g., .BAS, .SAV, etc.) if youI( ;6LtI 24} SAVEd it with an extension.IU ;6LI"REMEMBER: The BASIC program thatI~ ;6LI wish to 'AUTORUN' in this wayI ;6L25}I! MUST be SAVEd on the same diskI ;6L%J" which receives this AUTORUN.SYSJ ;6L@J program file!J/ ;6LpJ%Now e26}nter your BASIC program's nameJJ ;6LJ here >> Jz N6 9 |;LJ`G9 <`ILJLJ&} 27}ήӠ堢J ;6LK"When the disk currently in driveJ ;6L=K# number %C is next booted, what%E9K ?8L28}hK do you want to happen?KN ;6LK"1. The RS232 (R:) drivers for theKr ;6LK! ATARI 850 Interface Module areK ;6L29}K loaded and made active.K ;6LL&2. A BASIC program will automaticallyK ;6L2L load and RUN.L! ;6L_L"3. Both 2:}actions (1. and 2. above)L< ;6LxL will occur.Li ;6LL0. None--quit to main menu.L ;6LL! Your choice (0,1,22;},or 3) ? L N6 _;JJ0LL3ʹJLLJ)` = ;LJRINTELM JMMLM9`M)LwO GILMLUM}2<}Oops! That was not aM; ;6LsM valid file name!M_ ;6LM%Read the instructions again, please.M} ;6 ;9`992=}Т9 < H699 69LeO9ILN9LN}Be careful!M ;6L9NThe BASIC program name you used2>}N ;6L`N has not yet been SAVEd onNC ;6LxN this disk!Nj ;6LNDo you want to do this AUTORUNN ;6LN setup a2?}nyway (Y/N) ? N N6 `=ILN9`LeO 6L O#Oops! Error # %U while trying to%E9N ?8L=O check that BASIC prog2@}ram file.O ;6L]O%EUnable to continue.OG ?8`:9Т: L2M}U9SI2LU BLU9SI3LU MLU =9LU 6 6 ;LS`:S,or 3) ? U8 N6 _;9S99SI0L~U RLU9SI1LU F>L0A0100 ; 192K RAMDISK CONTROLLER FOR 256K ATARI 800XL (version 2)0110 ; by Claus Buchholz, Oct., 19850120 ;0130 ; OPTIONS: D6O}rive numbers and density0140 ; Note: If DENSITY=DOUBLE make DRIVEB=DRIVEA !0150 ;0160 DRIVEA=30170 DRIVEB=40180 DENSITY=6P}SINGLE0190 ;0200 ; Equates0210 ;0220 SINGLE=$80 Sector lengths0230 DOUBLE=$000240 DDEVIC=$300 SIO Device Control Block6Q}0250 DUNIT=$3010260 DCOMND=$3020270 DSTATS=$3030280 DBUFLO=$3040290 DBYTLO=$3080300 DAUX1=$30A0310 DOSINI=$0C Access to6R} RESET initialization0320 CHKSUM=$31 Temporary checksum0330 BUFRLO=$32 Temporary pointer to user's buffer0340 ZTEMP=$34 Te6S}mporary miscellaneous use0350 ZTEM2=$38 Temporary miscellaneous use0360 STACKP=$318 Stack pointer save0370 PORTB=$D301 PIA6T} port B - memory control register0380 ;0390 ; Load-time code - Copy OS into RAM0400 ;0410 *=$38000420 GO0430 LDA PORT6U}B Enable Bank #30440 AND #$830450 ORA #$0C0460 STA PORTB0470 LDA #$C0 Zero page pointer0480 STA $CC0490 LDA #$406V}0500 STA $CE0510 LDA #00520 STA $CB0530 STA $CD0540 TAY0550 LOOP0560 LDA ($CB),Y Copy OS0570 STA ($CD),Y0580 6W}INY0590 BNE LOOP0600 LDX $CC0610 CPX #$CB Skip pages $CC to $D70620 BNE NXPG0630 LDX #$570640 STX $CE0650 LDX #6X}$D70660 NXPG0670 INC $CE0680 INX0690 STX $CC0700 BNE LOOP0710 LDA PORTB0720 ORA #$7C Disable bank0730 AND #$FE6Y} Enable RAM OS0740 STA PORTB0750 RTS Continue load0760 *=$2E20770 .WORD GO Execute preliminary load-time code0780 ;6Z}0790 ; Ramdisk controller code0800 ;0810 *=$CC00 Permanent code - in place of alt. char. set0820 HOOK0830 CLC Hook in6[}to all SIO calls0840 LDA DDEVIC0850 ADC DUNIT0860 LDY #$00 DRIVEA offset0870 CMP #$31+DRIVEA Right drive number?08806\} BEQ HOOKED0890 LDY #$80 DRIVEB offset0900 CMP #$31+DRIVEB0910 BEQ HOOKED0920 OLDVEC=*+10930 JMP * If not, go to SI6]}O0940 HOOKED0950 TSX If so, intercept0960 STX STACKP Save stack pointer0970 STY ZTEM2 Store offset0980 LDA DCOMND E6^}xamine command0990 CMP #'! Format?1000 BNE NOFMT1010 JMP FORMAT1020 NOFMT1030 CMP #'P Put sector?1040 BNE NOPUT106_}50 JMP PUTSEC1060 NOPUT1070 CMP #'R Read sector?1080 BNE NOGET1090 JMP GETSEC1100 NOGET1110 CMP #'S Read status?16`}120 BNE NOSTT1130 JMP STATUS1140 NOSTT1150 CMP #'W Write sector?1160 BNE NAKRET1170 JMP PUTSEC1180 ;1190 ; Return6a}s - Restore stack pointer, report error status and return1200 ;1210 NAKRET1220 LDX STACKP1230 TXS1240 LDY #139 NAK er6b}ror for improper command1250 STY DSTATS1260 RTS1270 ERRRET1280 LDX STACKP1290 TXS1300 LDY #144 Bad sector error136c}10 STY DSTATS1320 RTS1330 SUCRET1340 LDX STACKP1350 TXS1360 LDY #1 No error1370 STY DSTATS1380 RTS1390 ;1400 6d}; Subroutine - Set pointer to user buffer1410 ;1420 SETBUF1430 LDA DBUFLO Move from DCB to zero page1440 STA BUFRLO1456e}0 LDA DBUFLO+11460 STA BUFRLO+11470 RTS1480 ;1490 ; Subroutine - Prepare to access sector of ramdisk1500 ;1510 SETSE6f}C1520 LDA #DENSITY1530 STA SECLEN Set sector length1540 LDA DAUX1+1 Check sector #1550 BNE NOTZ1560 LDA DAUX11570 6g} BEQ OUTRG Sector 0 invalid1580 CMP #41590 BCS INRNG1600 LDA #$80 Sectors 1-3 always 128 bytes long1610 STA SECLEN166h}20 BNE INRNG1630 OUTRG1640 JMP NAKRET Sector # out of range1650 NOTZ1660 CMP #2 Check for sector # > $2D01670 BCC IN6i}RNG1680 BNE OUTRG1690 LDA #$D01700 CMP DAUX11710 BCC OUTRG1720 INRNG1730 LDA DAUX1 Sector # valid1740 STA ZTEMP6j}1750 LDA DAUX1+11760 ASL ZTEMP1770 ROL A Divide # by 64 - Result is bank #, remainder is page #1780 ASL ZTEMP1790 RO6k}L A1800 ADC #4 Bank #1810 TAX1820 LDA ZTEMP1830 LSR A1840 LSR A1850 ADC #$40 Remainder+641860 ;1870 ; Subroutin6l}e - Prepare to switch banks:1880 ; X is bank #, A is page #1890 ;1900 SETBNK1910 STA ZTEM2+1 Save page #1920 LDA PORTB6m}1930 STA PBN Normal bank1940 AND #$831950 STA PB Bank 01960 TXA1970 ASL A1980 ASL A1990 PHA2000 AND #$0C20106n} ORA PB2020 STA PB2030 PLA2040 ASL A2050 AND #$602060 ORA PB2070 STA PB Bank X2080 LDA $FFFA NMI vector2090 6o}STA ZTEMP2100 LDA $FFFB2110 STA ZTEMP+12120 LDY #02130 LDA #$40 RTI opcode2140 SEI Disable IRQ2150 STA (ZTEMP),Y6p} Place RTI in NMI routine - disables NMI2160 RTS Leave 0 in Y, bank # in X2170 ;2180 ; Format routine2190 ;2200 FORMAT6q}2210 LDX #4 Clear banks 4 to F2220 CLOOP12230 LDA #$402240 JSR SETBNK Prepare for switch2250 LDA PB2260 STA PORTB 6r}Switch bank in2270 TYA2280 CLOOP22290 STA (ZTEM2),Y Zero entire sector2300 INY2310 CPY SECLEN2320 BNE CLOOP22330 6s} TAY2340 INC ZTEM2+1 Next page2350 BPL CLOOP22360 LDA PBN2370 STA PORTB Switch bank out2380 LDA NMI2390 STA (ZTEM6t}P),Y Enable interrupts2400 CLI2410 INX Next bank2420 CPX #$10 Done?2430 BCC CLOOP12440 JSR SETBUF2450 LDA #$FF R6u}eturn a sector with 2 $FFs and the rest 0s2460 LDY #02470 FLOOP2480 CPY #22490 BNE NOTFF2500 LDA #02510 NOTFF2520 6v} STA (BUFRLO),Y2530 INY2540 CPY SECLEN2550 BNE FLOOP2560 JMP SUCRET Done2570 ;2580 ; Write sector routine2590 ;266w}00 PUTSEC2610 JSR SETBUF2620 LDA #02630 STA CHKSUM Zero checksum2640 JSR SETSEC Point to ramdisk sector2650 PLOOP266x}60 LDA (BUFRLO),Y Get byte from user's buffer2670 LDX PB2680 STX PORTB Switch bank2690 STA (ZTEM2),Y Put byte into ram6y}disk2700 LDX PBN2710 STX PORTB Normal bank2720 CLC2730 ADC CHKSUM Add byte to checksum2740 STA CHKSUM2750 INY Ne6z}xt byte2760 CPY SECLEN Proper sector length2770 BNE PLOOP2780 LDX #$F Bank F holds checksum table2790 LDA DAUX12800 6{} ASL A2810 LDA DAUX1+12820 ROL A2830 ORA #$60 Sector # indexes checksum table2840 JSR SETBNK2850 LDA DAUX12860 AN6|}D #$7F2870 TAY2880 LDA CHKSUM2890 LDX PB2900 STX PORTB Switch bank2910 STA (ZTEM2),Y Store checksum2920 LDX PBN26}}930 STX PORTB Normal bank2940 LDY #02950 LDA NMI2960 STA (ZTEMP),Y Enable interrupts2970 CLI2980 JMP SUCRET Done26~}990 ;3000 ; Read sector routine3010 ;3020 GETSEC3030 JSR SETBUF3040 LDA #03050 STA CHKSUM Zero checksum3060 JSR SE6}TSEC3070 GLOOP3080 LDX PB3090 STX PORTB Switch bank3100 LDA (ZTEM2),Y Get byte from ramdisk3110 LDX PBN3120 STX PO6}RTB Normal bank3130 STA (BUFRLO),Y Put byte into user's buffer3140 CLC3150 ADC CHKSUM Add to checksum3160 STA CHKSUM6}3170 INY Next byte3180 CPY SECLEN Proper sector length3190 BNE GLOOP3200 LDX #$F Bank F for checksum table3210 LDA 6}DAUX13220 ASL A3230 LDA DAUX1+13240 ROL A3250 ORA #$603260 JSR SETBNK3270 LDA DAUX13280 AND #$7F3290 TAY33006} LDX PB3310 STX PORTB Switch bank3320 LDA (ZTEM2),Y Get original checksum3330 LDX PBN3340 STX PORTB Normal bank33506} TAX3360 LDY #03370 LDA NMI3380 STA (ZTEMP),Y Enable interrupts3390 CLI3400 CPX CHKSUM Compare checksums3410 BEQ6} GCSOK3420 JMP ERRRET If different, bad sector3430 GCSOK3440 JMP SUCRET If same, done3450 ;3460 ; Read status routine6}3470 ;3480 STATUS3490 JSR SETBUF3500 LDY #3 Return 4 bytes3510 LDA #0 All 0s3520 SLOOP3530 STA (BUFRLO),Y3540 DEY6}3550 BPL SLOOP3560 CMP #DENSITY3570 BNE SDONE3580 LDA #$203590 INY3600 STA (BUFRLO),Y First byte tells density of6} drive3610 SDONE3620 JMP SUCRET Done3630 ;3640 ; Variable storage area3650 ;3660 PB *=*+1 Value of memory control regi6}ster for selected bank3670 PBN *=*+1 Value of memory control register for normal bank3680 NMI *=*+1 First opcode in NMI rou6}tine - Used to restore NMI3690 SECLEN *=*+1 Length of current sector3700 ;3710 ; RESET initialization routine3720 ;3730 6} *=$100 Hidden (hopefully)3740 NEWINI3750 DEC PORTB Enable RAM OS3760 OLDINI=*+13770 JSR * Call original DOSINI routine6}3780 MODINI3790 LDA #NEWINI&$FF Set hook for next RESET3800 STA DOSINI3810 LDA #NEWINI/$1003820 STA DOSINI+13830 R6}TS3840 ;3850 ; Load-time code - Install ramdisk3860 ;3870 *=$38003880 DO3890 LDA $E45A Save original SIO vector3900 6} STA OLDVEC3910 LDA $E45B3920 STA OLDVEC+13930 LDA #HOOK&$FF Install new SIO vector3940 STA $E45A3950 LDA #HOOK/$106}03960 STA $E45B3970 LDA $FFFA Save first opcode in NMI routine3980 STA $CB3990 LDA $FFFB4000 STA $CC4010 LDY #046}020 LDA ($CB),Y4030 STA NMI4040 LDA DOSINI Save original DOSINI vector4050 STA OLDINI4060 LDA DOSINI+14070 STA OLD6}INI+14080 JSR MODINI Install new one4090 JSR $7E0 Re-initialize FMS to show ramdisk present4100 RTS Done4110 *=$2E26}4120 .WORD DO Execute final load-time code JSR $7E0 Re-initialize FMS to show ramdisk present4100 RTS Done4110 *=$2E24,0100 ; 96K RAMDISK CONTROLLER FOR 256K ATARI 800XL (version 2)0110 ; by Claus Buchholz, Oct., 19850120 ;0130 ; OPTION: Dri:}ve number0140 ;0150 DRIVE=30160 ;0170 ; Equates0180 ;0190 DDEVIC=$300 SIO Device Control Block0200 DUNIT=$3010210 DCO:}MND=$3020220 DSTATS=$3030230 DBUFLO=$3040240 DBYTLO=$3080250 DAUX1=$30A0260 DOSINI=$0C Access to RESET initialization02:}70 CHKSUM=$31 Temporary checksum0280 BUFRLO=$32 Temporary pointer to user's buffer0290 ZTEMP=$34 Temporary miscellaneous us:}e0300 ZTEM2=$38 Temporary miscellaneous use0310 STACKP=$318 Stack pointer save0320 PORTB=$D301 PIA port B - memory control:} register0330 ;0340 ; Load-time code - Copy OS into RAM0350 ;0360 *=$38000370 GO0380 LDA PORTB Enable Bank #30390 A:}ND #$830400 ORA #$0C0410 STA PORTB0420 LDA #$C0 Zero page pointer0430 STA $CC0440 LDA #$400450 STA $CE0460 LDA :}#00470 STA $CB0480 STA $CD0490 TAY0500 LOOP0510 LDA ($CB),Y Copy OS0520 STA ($CD),Y0530 INY0540 BNE LOOP0550 :} LDX $CC0560 CPX #$CB Skip pages $CC to $D70570 BNE NXPG0580 LDX #$570590 STX $CE0600 LDX #$D70610 NXPG0620 INC :}$CE0630 INX0640 STX $CC0650 BNE LOOP0660 LDA PORTB0670 ORA #$7C Disable bank0680 AND #$FE Enable RAM OS0690 STA:} PORTB0700 RTS Continue load0710 *=$2E20720 .WORD GO Execute preliminary load-time code0730 ;0740 ; Ramdisk controll:}er code0750 ;0760 *=$CC00 Permanent code - in place of alt. char. set0770 HOOK0780 CLC Hook into all SIO calls0790 L:}DA DDEVIC0800 ADC DUNIT0810 CMP #$31+DRIVE Right drive number?0820 BEQ HOOKED0830 OLDVEC=*+10840 JMP * If not, go to:} SIO0850 HOOKED0860 TSX If so, intercept0870 STX STACKP Save stack pointer0880 LDA DCOMND Examine command0890 CMP #:}'! Format?0900 BNE NOFMT0910 JMP FORMAT0920 NOFMT0930 CMP #'P Put sector?0940 BNE NOPUT0950 JMP PUTSEC0960 NOPUT:}0970 CMP #'R Read sector?0980 BNE NOGET0990 JMP GETSEC1000 NOGET1010 CMP #'S Read status?1020 BNE NOSTT1030 JMP S:}TATUS1040 NOSTT1050 CMP #'W Write sector?1060 BNE NAKRET1070 JMP PUTSEC1080 ;1090 ; Returns - Restore stack pointer,:} report error status and return1100 ;1110 NAKRET1120 LDX STACKP1130 TXS1140 LDY #139 NAK error for improper command1:}150 STY DSTATS1160 RTS1170 ERRRET1180 LDX STACKP1190 TXS1200 LDY #144 Bad sector error1210 STY DSTATS1220 RTS1:}230 SUCRET1240 LDX STACKP1250 TXS1260 LDY #1 No error1270 STY DSTATS1280 RTS1290 ;1300 ; Subroutine - Set pointer:} to user buffer1310 ;1320 SETBUF1330 LDA DBUFLO Move from DCB to zero page1340 STA BUFRLO1350 LDA DBUFLO+11360 STA :}BUFRLO+11370 RTS1380 ;1390 ; Subroutine - Prepare to access sector of ramdisk1400 ;1410 SETSEC1420 LDA DAUX1+1 Check :}sector #1430 BNE NOTZ1440 LDA DAUX11450 BNE INRNG Sector 0 invalid1460 OUTRG1470 JMP NAKRET Sector # out of range14:}80 NOTZ1490 CMP #2 Check for sector # > $2D01500 BCC INRNG1510 BNE OUTRG1520 LDA #$D01530 CMP DAUX11540 BCC OUTRG:}1550 INRNG1560 LDA DAUX1 Sector # valid1570 ASL A1580 LDA DAUX1+11590 ROL A Divide # by 128 - Result is bank #, rema:}inder is page #1600 ADC #4 Bank #1610 TAX1620 LDA DAUX11630 ORA #$80 Remainder+1281640 ;1650 ; Subroutine - Prepare:} to switch banks:1660 ; X is bank #, A is 2*page #1670 ;1680 SETBNK1690 LSR A1700 STA ZTEM2+1 Save page #1710 LDA #0:}1720 ROR A1730 STA ZTEM21740 LDA PORTB1750 STA PBN Normal bank1760 AND #$831770 STA PB Bank 01780 TXA1790 ASL:} A1800 ASL A1810 PHA1820 AND #$0C1830 ORA PB1840 STA PB1850 PLA1860 ASL A1870 AND #$601880 ORA PB1890 STA:} PB Bank X1900 LDA $FFFA NMI vector1910 STA ZTEMP1920 LDA $FFFB1930 STA ZTEMP+11940 LDY #01950 LDA #$40 RTI opcod:}e1960 SEI Disable IRQ1970 STA (ZTEMP),Y Place RTI in NMI routine - disables NMI1980 RTS Leave 0 in Y, bank # in X199:}0 ;2000 ; Format routine2010 ;2020 FORMAT2030 LDX #4 Clear banks 4 to 92040 CLOOP12050 LDA #$802060 JSR SETBNK Prep:}are for switch2070 LDA PB2080 STA PORTB Switch bank in2090 TYA2100 CLOOP22110 STA (ZTEM2),Y Zero entire page2120 I:}NY2130 BNE CLOOP22140 INC ZTEM2+1 Next page2150 BPL CLOOP22160 LDA PBN2170 STA PORTB Switch bank out2180 LDA NMI:}2190 STA (ZTEMP),Y Enable interrupts2200 CLI2210 INX Next bank2220 CPX #$A Done?2230 BCC CLOOP12240 JSR SETBUF22:}50 LDA #$FF Return a sector with 2 $FFs and the rest 0s2260 LDY #02270 FLOOP2280 CPY #22290 BNE NOTFF2300 LDA #023:}10 NOTFF2320 STA (BUFRLO),Y2330 INY2340 BPL FLOOP2350 JMP SUCRET Done2360 ;2370 ; Write sector routine2380 ;2390 :}PUTSEC2400 JSR SETBUF2410 LDA #02420 STA CHKSUM Zero checksum2430 JSR SETSEC Point to ramdisk sector2440 PLOOP2450 :} LDA (BUFRLO),Y Get byte from user's buffer2460 LDX PB2470 STX PORTB Switch bank2480 STA (ZTEM2),Y Put byte into ramdis:}k2490 LDX PBN2500 STX PORTB Normal bank2510 CLC2520 ADC CHKSUM Add byte to checksum2530 STA CHKSUM2540 INY Next :}byte2550 BPL PLOOP2560 LDX #9 Bank 9 holds checksum table2570 LDA DAUX1+12580 ORA #$70 Sector # indexes checksum tabl:}e2590 ASL A2600 JSR SETBNK2610 LDY DAUX12620 LDA CHKSUM2630 LDX PB2640 STX PORTB Switch bank2650 STA (ZTEM2),Y :}Store checksum2660 LDX PBN2670 STX PORTB Normal bank2680 LDY #02690 LDA NMI2700 STA (ZTEMP),Y Enable interrupts271:}0 CLI2720 JMP SUCRET Done2730 ;2740 ; Read sector routine2750 ;2760 GETSEC2770 JSR SETBUF2780 LDA #02790 STA CHK:}SUM Zero checksum2800 JSR SETSEC2810 GLOOP2820 LDX PB2830 STX PORTB Switch bank2840 LDA (ZTEM2),Y Get byte from ramd:}isk2850 LDX PBN2860 STX PORTB Normal bank2870 STA (BUFRLO),Y Put byte into user's buffer2880 CLC2890 ADC CHKSUM Add:} to checksum2900 STA CHKSUM2910 INY Next byte2920 BPL GLOOP2930 LDX #9 Bank 9 holds checksum table2940 LDA DAUX1+1:}2950 ORA #$70 Sector # indexes checksum table2960 ASL A2970 JSR SETBNK2980 LDY DAUX12990 LDX PB3000 STX PORTB Swi:}tch bank3010 LDA (ZTEM2),Y Get original checksum3020 LDX PBN3030 STX PORTB Normal bank3040 TAX3050 LDY #03060 LDA:} NMI3070 STA (ZTEMP),Y Enable interrupts3080 CLI3090 CPX CHKSUM Compare checksums3100 BEQ GCSOK3110 JMP ERRRET If d:}ifferent, bad sector3120 GCSOK3130 JMP SUCRET If same, done3140 ;3150 ; Read status routine3160 ;3170 STATUS3180 JSR:} SETBUF3190 LDY #3 Return 4 bytes3200 LDA #0 All 0s3210 SLOOP3220 STA (BUFRLO),Y3230 DEY3240 BPL SLOOP3250 JMP S:}UCRET Done3260 ;3270 ; Variable storage area3280 ;3290 PB *=*+1 Value of memory control register for selected bank3300 P:}BN *=*+1 Value of memory control register for normal bank3310 NMI *=*+1 First opcode in NMI routine - Used to restore NMI33:}20 ;3330 ; RESET initialization routine3340 ;3350 *=$100 Hidden (hopefully)3360 NEWINI3370 DEC PORTB Enable RAM OS338:}0 OLDINI=*+13390 JSR * Call original DOSINI routine3400 MODINI3410 LDA #NEWINI&$FF Set hook for next RESET3420 STA DOS:}INI3430 LDA #NEWINI/$1003440 STA DOSINI+13450 RTS3460 ;3470 ; Load-time code - Install ramdisk3480 ;3490 *=$38003:}500 DO3510 LDA $E45A Save original SIO vector3520 STA OLDVEC3530 LDA $E45B3540 STA OLDVEC+13550 LDA #HOOK&$FF Insta:}ll new SIO vector3560 STA $E45A3570 LDA #HOOK/$1003580 STA $E45B3590 LDA $FFFA Save first opcode in NMI routine3600 :} STA $CB3610 LDA $FFFB3620 STA $CC3630 LDY #03640 LDA ($CB),Y3650 STA NMI3660 LDA DOSINI Save original DOSINI vec:}tor3670 STA OLDINI3680 LDA DOSINI+13690 STA OLDINI+13700 JSR MODINI Install new one3710 JSR $7E0 Re-initialize FMS :}to show ramdisk present3720 RTS Done3730 *=$2E23740 .WORD DO Execute final load-time code JSR $7E0 Re-initialize FMS 8a8=8) ө̩@Ω˅ͨˑW΢ |)`8m4 4L̺8!LPL%R>}LzSLWL%ͮ```23`ͭ   LB  4 4*4*i4JJi@>}9Ӎ)͊ H) ͍h )` ͍ͭ45@x4`@ ̭͍Ә89͍ӭ͑4X `̩2LV `̩>}1 ḵ2͎ӑ8͎e11  * ` ̭ )1͎ӑ8͎Ӡ͑4XLV `̩1 k̮͎ӱ8͎ӑ2e11  >} * ` ̭ )͎ӱ8͎Ӫ͑4X1LLLV `̠2 ȑ2LV   `878Z̭[̩Z̍[˭>}̠ˍͥ    `8pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp>}ppˍͥ    `8pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp<8=8) ө̩@Ω˅ͨˑW΢ |)`8m4 5L̺8!LPL%RB}LzSLWL%ͮ```23`ͭ   LB  4 4*4*i4JJi@B}9Ӎ)͊ H) ͍h )` ͍ͭ45@x4`@ ̭͍Ә89͍ӭ͑4X `̩2LV `̩B}1 ḵ2͎ӑ8͎e11  * ` ̭ )1͎ӑ8͎Ӡ͑4XLV `̩1 k̮͎ӱ8͎ӑ2e11  B} * ` ̭ )͎ӱ8͎Ӫ͑4X1LLLV `̠2ɀ ȑ2LV   `878Z̭[̩Z̍[˭B}̠ˍͥ    `8ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppB}ppˍͥ    `8pppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp@8=8) ө̩@Ω˅ͨˑW΢ |)`8̭m4L ̺!LPLRLNSLF}WLͮ```23`  L8   *i  J9j8Ӎ)͊ H) ͍h F})` ͍ͭ45@x4` ̭͍Ә89͍ӭ͑4X V̩2LL V̩1 a̱2͎ӑ8͎e11 F} p ̬ 1͎ӑ8͎Ӡ͑4XLL V̩1 a̮͎ӱ8͎ӑ2e11  p ̬ ͎ӱ8͎Ӫ͑4X1LBLL V̠F}2LL   `878Z ̭[ ̩Z̍[˭ӑ2e11  p ̬ ͎ӱ8͎Ӫ͑4X1LBLL V̠D;080 ө̩xԨӑө@X`0m5L ̺!LPLRLkSLWJ}Lͮ```23`ͭ   L8   8y)ͭӍ)͊ J} ͍ͭ45@x4͍Ә͍ͅ` ̭͍Ә͍ӭ͑4X V̩2LL V̩1 a̱2͎J}ӑ͎e11 i ̬ 1͎ӑ͎Ӡ͑4XLL V̩1 a̮͎ӱ͎ӑ2e11 i ̬ ͎ӱ͎J}Ӫ͑4X1LBLL V̠2Lͩ2LL   `070Z ̭[ ̩Z̍[˭̠ˍͥ    `J}0͑4X1LBLL V̠2Lͩ2LL   `070Z ̭[ ̩Z̍[˭̠ˍͥ    `H8;LY  `  `8 4  4*4* 5xӪ)5H48jJ5423N}0hHӱ4ӑ2GhӪHhHӱ2ӑ4)lD#dd˰ dddddhHhX`LS N}`Ӫ)Ϩӭ@@@I@@I@(L9S")& $#' Yͱ ͲkͤcYͣ\N}x)ӭ7S38, :  ;7;8 өXL: өX` :  ;"& ;N}#' Ln i  i  x)H DӢdddhjө@3223iH)N} hh) Dөd32ȩ2ȑ22ȑ2 2ȑ2J272ȩ2 |өX`8*   2 3485N}042354242 i; i;`8J272ȩ2 |өX`8*   2 3485L98n<H cHI`)|MӍөBA@*:@U<: @@ @@N@,U< R}@ @iA:Ah`MAIN L0 RAM-DISK"h:h:::R} :L::H:H`HI BLV o=`1b<Lxԭ45S]999';;<;<.>n>o> n>`8>R}> y>m>ȱm>L= y> m>L > y> m>m>m>L>>P>Q>S>T>Q>T>>i >L=R}n>o>` m> m>`=;;aL>>P>Q>S>T>Q>T>>i >L=P;OPARUNSTATDRVCDTANUMDRIVEDPTNUMLINERRDRDDUMDRVBYT@V} $$RAM DISK CONFIGURATION PROGRAMW}##FOR THE UPGRADED 256K 800XL'sBY SHAWN HART GG;A`,;@,9@,;@,;@0,W};@,*-@@&68,-* 6.h S`Ap@(-@@2AiW}<6-?:C:,,F'F:@H,A8'68,-@P dA +'0@A0@@@W}n-@x1+(# ATARI 256K RAM CONFIGURATIONS.(1(&&( 1. 130XE W/ 1 SD RAMDISK''( 2.W} 800XL W/ 2 SD RAMDISKS&&( 3. 800XL W/ 1 DD RAMDISK( 4. BOOT FROM DISK( 5. INSTRUCTIONS W}(( Select  6-@:,&@H!! @)!@A//AAAAPAW} A6-?:B,COLDSTART,'6-A6-@"'6-10*("} INPUT NUMBER FOR RAMDISW}K -(0(6$ A$PRINT CURRENT DRIVES;8( (#( DRIVE NUMBER = '86-@:,&@H@-@@EW}"$8,6-J O!! @)!@AT68,-@6-Y A`CALC DRVBYTE^ AW }BUILD ARUN$c%%67@<@,.>:@I%,h A BUILD NUMDRIVE$m APWRITE AUTORUNr$3W }6-A 6-@$'6-36-1+(#} INPUT NUMBERS FOR RAMDISK .(1($ A$PRINT CURRENTW } DRIVES8( (#( DRIVE NUMBER = '86-@:,&@H-@@"$8,6- !!W } @)!@A."68,-@$6-. A68,-@6- A`CALC DRVBYTEW } ABUILD ARUN$%%67@<@,.>:@I%,%%67@<@,.>:@I%, A BUILD NUW}MDRIVE$ APWRITE AUTORUN$36-A 6-@$'6-36-1+(#} INPUT NUMBERS FW}OR RAMDISK .(1($ A$PRINT CURRENT DRIVES8( (#( DRIVE NUMBER = '86-@:,&@H-@W}@ "$8,6- !! @)!@A68,-@6-6-! A`CALC DW}RVBYTE& ABUILD ARUN$+%%67@<@,.>:@I%,,%%67@<@,.>:@I%,-##67A<AW},.>:,.##67Ae<Ae,.>:,0 A BUILD NUMDRIVE$5 APWRITE AUTORUN:$XIW}NSTRUCTIONS]++(#}This program writes an AUTORUN.SYSb**("file to disk, which configures theg((( memory in a 256K UPGRW}ADED 800XL,l**("into one of the following options.q)()(Π duplicates the memoryv**("of a 130XE, and adds 1 W}SD RAMDISK.,,($Π gives you a standard 800XL,(and adds 2 SD RAMDISKS.&&(Π is also an 800XL, butW}(with 1 DD RAMDISK. ( **("DOS 2.0, DOS 2.5, DOSXL, SMARTDOS,++(#and MYDOS will work with this file...(W}&MACHDOS and TOPDOS are not compatible.**("RAMDISKS may be numbered from 1-8.**("If you decide to use 1 DD RAMDISK,W}++(#be sure to use a DD compatible DOS.-(-("Change AUTORUN.SYS to AUTORUN.AR1,""(if you are using SMARTDOS.+W}($(ӠΠϠ(+$PRINT CURRENT DRIVES""( CURRENTLY DRIVES AT -@@W}8,"@ =:,  $CALC DRV BYTE6--@@""6-%8,$@#+&@W},  $ #%-@*"/--67B:,%@,.7@$R..@@W} D:AUTORUN.SYSW+(+( WRITING AUTORUN.SYS TO DISK\ @f@p$BUILD STRW}ING TO SET 18026.  67@<@,.>:,$$$"8=8) ө̩@Ω"$$"ͨˑW}W΢"$$" |)`8m"$$"3L ̺!LPL"$$"RLNSLWLͮ"$W}$"```"$$$"23`  L8 ".$$"   *i  J9j"8$$"8Ӎ)͊ W } H) ͍h )`"B$$" ͍ͭ45@x4`"L$$" ̭͍Ә89͍ӭ"V$$"4X V̩̭2"`W!}$$"LL V̩1 a̱2͎ӑ8"j$$"e11  p ̬ 1"t$$"͎ӑ8͎Ӡ͑4XLL V̩"~$$"1 a̮͎W"}8͎ӑ2e11"$$"  p ̬ ͎ӱ8͎"$$"Ӫ͑4X1LBLL V̠"$$"2LL   `"W#}$$"878Z ̭[ ̩Z̍["$$"˭̠ˍͥ    ""`8"$$"8=8) ө̩@Ω"W$}$$"ͨˑW΢"$$" |)`8m"$$"3 3L̺8!"$$"LPL%W%}RLzSLW"$$"L%ͮ``" $$"`23`ͭ "$$"  LB W&} " $$" 4 4*4*i4JJi@9"*$$"Ӎ)͊ H) ͍h )` "4$$"͍ͭ45@x4`@ ">$$"̭͍W'}89ͭ"H$$"͍ӭ͑4X `̩"R$$"2LV `̩1 ḵ2͎"\$$"ӑ8͎e11 W(} "f$$"* ` ̭ )1͎ӑ8͎"p$$"Ӡ͑4XLV `̩1 k̮͎"z$$"8͎ӑ2e11  "$$" * ` W)}̭ )͎ӱ8͎"$$"͑4X1LLLV `̠2"$$"ɀ ȑ2LV "$$"  `878Z̭[̩W*}Z"$$"̍[˭̠ˍͥ  ""  `8"D:RDSAVn$$"  `878Z̭[̩TbR>AX AA7@ @256XL BANK SELECTION DEMOBY RICHAR[,}D EVANS 11/24 %;@0,9@,% A(6.BANK 6-Aa( A(6.BANK 6-Ae( A[-}(6.BANK 6-Ai( A(6.BANK 6-As( A(6.BANK 6-A( A[.}((6.BANK 6-A( A2(6.BANK 6-A( A<(6.BANK 6-A( AF([/}6.BANK 6-A%( AP(6.BANK 6-A)( AZ)6. BANK 6-A3) Ad)6.[0} BANK 6-A7) Ax&#( 256 BANK SELECTION DEMO&(2( (+(WHICH BANK TO EXAMINE (0-11)/2('[1}!@( TRY AGAIN' A7 @+B@Aa%$@76-@O @*!@'6-&@[2}CB@A%$@O6-@E!@6-&@9B@A%%$@E6-@*6-F:B[3}c%, "* A# (>:,6-%@# A ,CB@ -@B:,.6-@:7<,,<Bc%[4}@ C$B@A AB@A AB@A AB@A A[5}2-@@0+Bc%/ 2$X D:BNKSELDE.MO ABANK Eɛ8B@A AXjy^oCIOCIO2ADRV2SPASNAMESLOCKSTRTLENGLINETMPFILEUSEDBUFLEBUFFILEINFILOUTFILAPPNINDEFILENINI_7}NRETRISTAOUTINLINES @ -A6.A J. ^ | _8}A .B@]_9}dEEALPHABETIZING MULTIFILE COPY BY DAVE SCHAMBACH (N.O.A.U.G.)##XL256K MODS BY:RICHARD PARKER$$_:}CALL:I/O CONN BBS-404-446-8044A +'0@A0@@@;@,6.h V`_;};@,6.h V`?&;@,;@,;@,26-@?6.D1:*.*ee;@E$@,;@E_<},9@E,9@E,;@0,;@,;@,9@E,6/6-@P$P:+I:,&AV,'@P,6;,_=}L8(0Hit to format D5: and D6:or hit N to bypass!<L4NA hAdAU(?("***FORMATTING DRIVE _>}#5 AND #6***hAT@D5:,,AT@D6:8A@L62(_?})Insert disks in D1 and D2 then 6V* B*@@dd-@@P`67B:,%_@}@,.2 d j6-~@(**7@<@,4_A}SECTORSA3&7@<@,4 MEM SAV)(3 AP++7@<@,4BAD AP6-%@_B}7767$@&@<$@,.7@<@,67,.7@<@, AP6-&@@_C}(3-@ 68,-/68,-3 6-@6-@6-6-@x!_D}A }8,!A B  68,-&&6.7$@&@<$@,;;(Ժ 7@<_E}@, 7@ <@, B @@;8,!@-6-@;6_F}-&@ 68,-68,-6- B"A6A#!%@ ( READ ERROR#&_G}@A; @6-%@1( ERROR - ; A/,($ERROR AFTER 5 RETRIES, COPY ABORTED._H}/&E (8,T@^6-%@h!!%@&A%Ar A (8,*@_I}@6-@"@A0 -@8," 6- &&6.7$@&@<$@,_J}::(Ժ 7@<@, 7@ <@, B7"@6.7@,(6.D5:767@,._K}7"@6.7@,(6.D6:767@,.A! @@  A"_L}>6- B  @6-%@  A 0 !A@ A> A_M}P -@07<,4*A@ 4 > AP -@7<,4 AA&&6.7$@&@<$_N}@,(˺  B7"@6.7@,(6.D5:767@,.7"@6.7@,_O}(6.D6:767@,.((@5@ 8B@@`$( STOP NOW ?(84YAPP_P}F(( DO YOU WANT DRIVE ONE 'B' DRIVE?,44YFB@@R9( DO D5:AGAIN ?!4Y(6./6.9 A_Q} 6-%@"@ &(6.D2:*.*6.6.( A>-($}Insert FoReM program in D1 then 1_R}>%D1:START' 6.$' 6.D1:)'"@6.D2:.'-@@8'7<,4 BB'67B:,_S}%@,.7<,L' t'67B:,%@,..~'+(67B:,%@,.7@ <@,+$+AP@ +6-C:7_T},,+;$AR&AV$P:'AV,;ASP:'AV, +6-%@&%+6-A%$P:'A%,*+;$AV&_U}AV$P:'AV,;AWP:'AV,4+6-?:C:,,>+%%6-F:AV,%AV$F:AW,C++6-F:AQ,(!@*_V}A6+$H+68,-8,%R+ 6-%$.Af@.6-C:7,,.;$Ah&AV$P:'AV,;Ai_W}P:'AV,/ 6-8,/;$Ar&AV$P:'AV,;AsP:'AV,/6-?:C:,,0/6-%8,$4N#6-6_X}@#6. ||||||||||||>N(-@(8,B RN..27$@&@<$@,B \N&&6.7$_Y}@&@<$@,fN 6-Q   $0u}""* THE END * D:NEWCOPY,B \N&&6.7$\fThe final step, the 1088XE.Version 2.0(This one works!)By Scott Peterson, June 1986. Well, this is it for me, the last c[}installment on the 130XE. I have not built this mother, but one has been built and tested by another person in Mass., and it c\}works!! This doc assumes you have allready built and tested a 576K 130XE. to finish it you will need the following parts;c]}Quanity part no. description.------------------------------- 16 41256-15 256K DRAM'S 1 7432 quad OR gatec^} 1 7404 quad invert buff. 2 33 omh resistors.Small piece of PC board.-------------------------------Note:c_} On the 74 series, you can sub them with 74LS series chips, they use less power...Tools;Nothing fancy, a fine tip solderinc`}g iron,screwdriver,needle nose pliers, and some fine wire, ect. Mount the 7404 and the 7432 on a small PC board(1in. X 2in.ca}) connect together pin 14 on the 7432 and pin 14 on the 7404 with a length of fine wire. This is the +5v supply to the chips,cb} connect it to pin 14 of any 14 pin chip in the 130XE or pin 16 of any 16 pin chip in the 130XE. Next connect a lenght of wircc}e to pin 7 of the 7432 and pin 7 of the 7404, this is ground for the two chips, connect it to pin 7 of any 14 pin chip in thecd} 130XE or pin 8 of and 16 pin chip. Next, take U23(U23) out of the socket and bend up pin 17, reinsert it in the socket. Soce}lder a piece of wire to pin 17 U23, and connect it to the 7432 pins 2 and 5. Next connect a wire to pin 14 on U23(PIA) run itcf} to pin 1 on the 7404 and pin 1 on the 7432. Now connect a wire from the 7432 pin 6 to pin 17 of the socket U23 is in. Find tcg}he 74LS138 you piggy backed to the mother board when doing the 576k mod, remove the jumper from pins 1 and 16. solder a wire ch}from pin 3 of the 7432 on the PC board to pin 1 of the piggybacked 74LS138. Run a jumper from the 7404 pin 2 to the 7432 pin ci}4. Put some double backed tape on the PC board and stick it somewhere on the mother board of the 130XE.RAM-CHIP installaticj}on(lots of them!) Take the 16 new ram chips and cut pin 15 on all of them in half so only the 'fat' part is left. Now, you ck}have to piggy back them on-top of the 64K drams(the left-most row of chips). Solder in 8 of them, connecting all pins except cl}pin 15, then connect a jumper to pin 15 of each new ram chip. Make sure you have about a foot left over. Solder in the next cm}8 doing the same thing(you might want to piggy back the 256K DRAM's prior to mounting them on-top of the 64K DRAM's). When yocn}u get done you should have 2 new rows of 256k DRAM's solder in on-top of the 64K DRAM's, with a 2 wires, one connected to allco} the pin 15's of the middle row and another connected to all the pin 15's of the top row. Take one wire and go out a few inchcp}es and install a 33 ohm resistor in-line, cover with heat shrink tubing and do the same to the other wire. Connect one wire tcq}o pin 15 of the 74LS138 and the other to pin 13 of the 74LS138. Last but not least, install a jumper to pin one of each of thcr}e left bank of ram-chips, just like you did in the 576k mod to the bank on the right. After doing this run the jumper to any cs}pin one of the right bank, what you should wind up with is a common connection to every pin one of both banks of ram-chips.ct}Your done!!! Sorry, as of right now I know of no software to run on this(maybe Mydos 4.2? or Top-Dos 1.5+). I will provide acu} table for the control numbers, ect.-------------------------------------Bank# Control# Hex#-------------------------cv}------------1 1 12 3 33 5 54 7 75 9 cw} 96 11 B7 13 D8 15 F9 33 2110 35 2311 cx} 37 2512 39 2713 41 2914 43 2B15 45 2D16 cy}47 2F17 65 4118 67 4319 69 4520 71 4721 73 cz} 4922 75 4B23 77 4D24 79 4F25 97 6126 99 c{} 6327 101 6528 103 6729 105 6930 107 6B31 109 6D3c|}2 111 6F33 129 8134 131 8335 133 8536 135 8737 c}} 137 8938 139 8B39 141 8D40 143 8F41 161 A142 1c~}63 A343 165 A544 167 A745 169 A946 171 AB47 173 c} AD48 175 AF49 193 C150 195 C351 197 C552 199 c}C753 201 C954 203 CB55 205 CD56 207 CF57 225 E158c} 227 E359 229 E560 231 E761 233 E962 235 EB63 c} 237 ED64 239 EF------------------------------------- That's all of them, 64 16K banks for a total c}of 1,024,000 bytes extended ram and 64,000 bytes of 'normal'(?) ram. I have a tester for this one but thats it for right now.c} Like I said earlier, There is a working model, It was built by Dennis Porter of Mass. His many long distance phone calls madc}e this work. Good Luck ScottP.S. 2 meg is very, very possible. You just need wwuunc}nn more control line. This would have to be bit 0 of the PIA, but you would lose the switch-able O.S. Its up to you guys fromc} here, thats funny, the 1040 ST only has 1,024,000 bytes of ram. you would lose the switch-able O.S. Its up to you guys from`A$d0L 2L>%L-Lx%Lo(L(L(L(L4)L2)L%L%L%L%L%LU,L`,L(L)L,L(L+L$(L".L,L(L'L'L'Lm'Lv'L,L,L'L(L'L'L.L.Lkg}.L.L.L.L.L.L.L#*L.*L&L&L.&L=&LF&LQ&Lk&Lr&L{&L&L&L&L)L)L)L)L,.L)L:'L'L&LL'L['LR'L*L*L.L&L&L&La'LB(LR(Lg}.L(L/L9/L6/L/L/L/L/L0L0L+0LC0L/L^(Lj(L)'L@'Lo/Lr/LO/L%L'L%L% -膚 ɩҍD҅ 2 22g}2 a(2222 ` -Lq -l ԤՄԅ`ȱ`ȱ`ȥ`g}ԑȥՑ`ԤՄ`ԤԅդՅ` '0=D '04.5 '0.( '0 ' ' 8`ԅ`g} & & & &ѐ & &ʥ %аЪ %Зьɛ &0 &0 `g}ԥ`Ɠƒ` % &LS* %LS* %օ0֥0 S*` %eԥe` %La* % % o*L% %Lo* % &L|* %L|* %g}L% % Ʌ` BLV䅆L' %ԅ`TU HH 'hhL, B VԩL%p v'Pg}KJBDEL, &fL=) %ԅ`Ę eĘ +L4( % & %` %Ԅԅ`g} -``&eԅԥeՅ`L% o(ԨL%Ԅ & %eԥe` Ԅ &ɛ +0` d) ذIg} ( 8ԅԩՅL%L,ȹɛ꩛` d)f & 8fԆՅɛ摥0Lg}?)$0`2 2L,(,ɛM(M( )ɛ )򩀅` %ԍ`ԄL%g}ԄL%ɛԆL% &󅐩f =) ؐL(L4,ԅԥՅL%82ԭ 2L%ԤՄԅե`g}8ե`eեe` B* K+fL% B* +fL%8ԨՄԅL% & B*ԥՄԩՅօפԥFf G+g}ԥ K+ԅՅԥզЦ`ԅՅʩ0B+=+ B+ 08f$˹ `' d g}+1ԦԄզՄFԐ eਊe&Lh+Ԇ`hh L, +Ff&֐ݥ ԆՅԠ&&&8થg}օԈ`քע +Ե 8`晄 ,L,`GHFH` U,0ɛȄ ؐL,HI h 8g}ԅԩՅL%?S, ,򦅩DEBHIL,ɛ +` +` %HI BL,g}՝HIB VL,L%B Vú.hh -l. -0dd-8/ i - 0-- ,g}@ . ,... + x' $(.Ԏ.8ե ".LO-- , `,ɛD(C` ذ -L- -L 2 -- ,g}L- - -L-l lp '8`ERROR- ?Run address> BASIC exitTrace:P8Յթԅ` ,.L, .-g}ȘH *h00,)` & ҅ԭ ) |*օեׅ` L,0թԅթᨊઐg}```Յ`8Յթԅ`0 ԩ`ԅ`` ' %`BԝK)I JD/ELVS:)H)h yg}` & % & %TԅUՅV`&B ,NLսM` & %ԝL՝MN%BL, & /` BHIL, & /`g}B JKL, %ԅUՅV & %ԅT`)ҩҊ H) hҘ` %)xԩL% %))Lc&LZ& %g})pԩL% %)|LZ&Lc& V0L-$2}2e4e5666L 2 $ Z$e5 H$ ?$ Z$i5 H$ ?$ Z$5 H$ g}?$ Z$5 H$ ?$g5 !$6 '$ 3$6 '$6 !$ $ԌӢ5 !$5~22 $$ $ Z$5 H$6 !$ E$ ?$5 !$6 '$6 !$g}6 $$ $6 $5 $L26 $5 $LZ25 !$5 $$ $ Z$52{3 H$ ?$Ӣg5 !$6 '$5 !$6 '$ 3$g}6 '$6 !$ $Ԍө Z$e5 H$ ?$5 !$5 $$ $ Z$ʠ5 H$6 !$ E$ ?$5 !$|336 '$6 !$ $6 $L3g}5 !$٠5 $$ $ Z$۠5 H$6 !$ E$5 H$6 !$ E$ ?$g5 !$6 '$6 $5 $L33d46 !$ $L,4 Z$5 Hg}$6 !$ E$5 H$ ?$6 $5 $L35 !$6 $$ $ Z$6 H$ ?$L$L$e44129,131,133,135,137,139,141,143,161,163,1g}65,167,169,171,173,175,193,195,197,199,201,203,205,207,225227,229,231,233,235,237,2394d5129,131,133,135,137,139,141,143,g}161,163,165,167,169,171,173,175,193,195,197,199,201,203,205,207,225227,229,231,233,235,237,239e55} 576XE MEMORY TESg}TER BY SCOTT PETERSON LOADING BANK #@J8 DONE LOADING TESTING BANK #56ERROR AT BANK# LOCATIONg} # BANK # OK. TEST COMPLETE.$DING BANK #@J8 DONE LOADING TESTING BANK #56ERROR AT BANK# LOCATIONd*$1L 2L>%L+Lx%L'L'L'L(L(L(LLLLLL*L*LA(L(Lg*LN(L<*L|'LE,L~*L!(L9'LJ'Lk'L&L&L*L*L&'Lo(LP'L&L(0LS0Lk},L-L-L /L^-LZ0Lc0L)L)L%L%L%L%L%L%L&L&L"&L+&L9&L2&L0)L7)LF)Lc)LO,L")L&L&L&L&L&L&L,L,L.,LF&LS&L@&L&L'L'Lk}w0Lt'L0L0L0L(1L+1LB1LE1L1L1L1L1L}1L'L'L)L)L1L1L0L)L'L%L% +膚 ɩҍD҅ 2 22k}2 '2222 ` +Lq +l &0JQ &A0?F ݥE07, `ڥ0.,!" &k}0 & & . 8` D` `& `& `& `&Ԑ `& `&ͥ ݥзг ݥФьɛk} &0 &0 `ԥ`Ɠƒ` 7,L& `ڰ%` fڰ` ڰ` 7,L& (۰` L+ ݢ. fL k}٥ Ʌ` ٥ԅ`TU HH k'hhL+ B VԩL٩p &PKJBDk}EL + ٥ԅ`Ę eĘ B*L' 7, ٠` ٠ԅԄL٘/+``&դԦ&eԅԊek}eԅԥeՅ`L 'ԨL݆Ԅ 7, eԥe`@GԄ 7,ɛ B*0` ( ؐL+ȹɛk}꩛`f 7," (f 7, 8fԆՅɛ摥0L($0`2 2k}L+ (,ɛM (M ( )ɛ )򩀅` ٥ԍ`ԄLنԄLنɛk}ԆLن 7,󅐩f ( ؐ0LI(ԅԥՅL82ԭ 2Lن` 7, eԥe` 7, k} *ԦԄզՄFԐ eਊe&Ԇfؐ ԅԩՅ`؄քע **Ե 8`R晄 Z*Lk}+`GHFH` *0ɛȄ ؐL+ɛ B*` B*` ٦HI BL +՝HIB Vk}L+L?٠* *򦅩HIDEB Vú-,hh/+l-, ,0dd,8/ k}i , 0,+ *<, *-,-,* <* & |'-,8-, E,Lt+ , * *ɛD%C` ذ lk} +L 2 + , *L+ + +L+l p k'8`ERROR- ?Run address> Trace:BASIC exit I`Դ` Ok},L~* )ԩ-ȘH h00,)` @?"6?D'8h4d=u#@(>33!fffg?k}@W)WyQB'h M,ԭ ҍ,) ٢̠, L( 7,L, ݥ Q0OLD')ԥ)8@0=,j,H k}ޢ hԅ`, L+0t8??Ԣ ݢ, ڢ, fک ݢ 7, (ۢ fڢ, (k}n , e)`Ơ, L(ۥIԩ, - IԢ>^ԝ ڢ ݢ. @ݢ ݢk} ݢ. @ݢ (ۢ ڢ ڢ fڭI miǪi. fhIԥ Ơ, `LDڥ)Dk}"@Dڔ . ``ԅL٥I`. (`` k' ٢`BԝK)I JD0EL +S:)H)k}h y` 7, 7, ٥TԅUՅV`&B +Nԩ ݦLԽML 7, 7, ٠%LMԝNBL + k}7, \1` BHIL + 7, \1`B JKL + (0 ٥ԅUՅV 7, (0 ٥ԅT`)ҩҊ H) hҘ` ٥k})xԩL ٥))L &L& ٥)pԩL ٥)|L&L & 1L+$225Y7x888L 2 $ Z$qk}7 H$s7 H$ ?$ Z$7 H$ ?$ Z$ ?$ Z$7 H$ ?$ Z$ ?$ Z$7 H$ ?$ Z$7 H$ ?$ Z$ -$22ᢧ8 <$ԩk}թ󅌩78 $L278 $ԩթ78 $L37833 k}$ԩթ󅌩78 $8 '$ԩթ78 $8 $Le3L2I5 % Z$ᢢ8 f$k}33 Q$e7 !$x8 '$ Z$q7 H$ ?$ Z$8 H$x8 !$ E$ ?$ 3$~8 '$~8 !$ $ԌӢ*8 !$8 '$x8 !$8 $$ $8k} $084~4 $L3x8 $ 8 $L35 % Z$q7 H$68 H$ ?$ Z$ ?$e7 !$x8 '$ Z$I8 H$x8 !$ E$ 3$~8 '$~k}8 !$ $ԌӢ*448 !$8 '$8 !$ $x8 $L4 Z$V8 H$ ?$e7 !$7 $8 '$e7 !$7 $8 '$L+58 $k}08 $L4 Z$[8 H$4|5 ?$e7 !$7 $8 '$e7 !$7 $8 '$x8 $ 8 $LN4 Z$ T$L$ Z$q7 H$_8 H$ ?k}$e7 !$7 $8 '$e7 !$}557 $8 '$ Z$ T$L2L$1,3,5,7,9,11,13,15,33,35,37,39,41,43,45,47,65,67,69,71,73,75,7k}7,79,97,99,101,103,105,107,109,1115w6129,131,133,135,137,139,141,143,161,163,165,167,169,171,173,175,193,195,197,199,201,k}203,205,207225,227,229,231,233,235,237,239x661,3,5,7,9,11,13,15,33,35,37,39,41,43,45,47,65,67,69,71,73,75,77,79,97,99,10k}1,103,105,107,109,1116X7129,131,133,135,137,139,141,143,161,163,165,167,169,171,173,175,193,195,197,199,201,203,205,2072k}25,227,229,231,233,235,237,239Y77@@@@} THE 1 MEG/130XE TESTER.@( BY SCOTT PETERSON@k}%758TEST RESULT'S TO SCREEN OR PRINTER ?@61) P:@2) S:1P:2E:@@dLOADING BANK #@B@k}BiBy68w8BANK TESTING@BANK #@ BAD OKDEVICE NOT READY!!@$@dLOADING BANK #@B@h^SUPPLIED BYT THE CHAOS BBS(517) 371-1106XE CONSOLE KEY FIX...... that really works.I found that I was not alone wheno} Istarted having trouble getting myconsole keys to work on the ATARI130XE the CHAOS club used for itsBBS. It seems that o}very many ofthe machines develop this problem.I asked around and found severalothers that had done as I did,opened the keo}yboard and cleaned thebutton contacts, only to get goodresults for a week or so beforelosing them again.I then received o}a couple reprintsof articles suggesting hardwarefixes. I tried a couple that didnot work, but one that worked thebest cao}me from Alan Haskell(printed in the SBACE GAZETTE,April/May '86). Heres how, with asmall modification to save you thetroo}uble I made for myself tryinghis recommended installation.You will need a small phillips headscrewdriver, needle nose plio}ers, asmall soldering iron, and three 3k(3,000 ohm) resistors.Quarter-watt rating is plenty, infact, the smaller the resio}stors arephysically, the better.1. Turn over the XE computer andremove the 4 screwss that hold ittogether. Turn the coo}mputer overagain and remove the top half ofthe case.2. Lift out the keyboard andgently pull the ribbon out of itsconno}ector. DO NOT OPEN THE KEYBOARDas cleaning internally will nothelp, and you may damage the carbontracks on the baking sheeo}t inside.3. Remove the motherboard fromthe lower half of the case byremoving the phillips screwsholding it down.4. o} Remove the top and bottommetal sheilds from the board bycarefully straghtening the benttabs that go through the board.5o}. Observe the top and undersideof the connector you pulled thekeyboard ribbon out of. As seenfrom the top as you would lo}ook atthe computer normally, there are 24connections, with connection #1 atte left and #24 at the right.Connection #3 (fro}om the left) isthe ground connection. The last 4,#21, #22, #23, #24 are the START,SELECT, OPTION, and RESETconnections. o}When a connection ismade from these points to theground, the computer will know oneor several of the keys are beingpushedo}. Due to a design problem,the console keys have a bit toomuch resistance to always registereven when you really lean on to}hem.So, we will install the threeresitors between the connectionsand ground so as to "leak" a bitmore ground signal to tho}e computer.That way, not nearly so good aconnection is required by theactual keys when pressed.6. Identify the proper o}pins onthe bottom side of the circuitboard. We will install the resitorsunder the board.7. Solder one end of all threeo}resitors together. Then connectthis common end to the groundconnection (pin 3). Then solder thefree end of the resiters, o}one each,to pins 21, 22, and 23. (The resetsystem never seems affected, norany other keys.)8. Be certain that the wireo}s onthe resistors do not touch eachother nor any other circuitry! Useas little solder and as short aheating time as possio}ble. Tape theresitors to prevent shorting ifneeded, and press them close to thecircuitboard.9. Reassemble the shields o}to theboard, bending back the tabs tohold it all together. Look insideto be sure the resitors do nottouch the lower shielo}d.10. Complete the re-assembly,taking extra care not to stress orinsert the keyboard ribbon too manytimes. The spring o}contacts bendeasily, and the conductive coatingon the ribbon, if scratchedthrough, will cause the keyboard tobe useless. o}Don't worry too much,thats hard to do if you arecareful. (The original modsuggested pressing the resistorleads into the co}onnector so as tomake it solder-free and simpler....but that "simplicity" ruined myconnector and made hour more work!Soldo}er it!)11. Test the repair. Power up themachine and type in this one linebasic program: 10 PRINT PEEK(53279):GOTO 10o}Then type RUN. You will see a rowof 7's down your screen. PushOPTION. They should turn to 3's. SELECT will give you 5'so}, andstarts will give you 6's.Combinations will give othernumbers from ) to 7. If each keyresponds, you have finished theo}repair.This has permanently fixed theproblem on dozens of XE's. It hasrestored my keys to "feather touch"after a long o}siege of having toboot 5 or 6 times mashing theOPTION key trying to get a bootwithout BASIC. It WILL work foryou.John o}Nagy, SYSOP of the CHAOS BBS(517) 371-1106heOPTION key trying to get a bootwithout BASIC. It WILL work foryou.John l. }1050 DISK DIAGNOSTICCopyright 1983 Atari,Inc.SET DISK DRIVE NUMBER TO 1LEAVE DIAGNOSTIC DISKETTE IN DRIVE-Ps}RESS WHEN READYExecuting MPU & Controller TestsˠŠ̠Ԡ-VERIFY CONNECTIONS,TURN DRIVE OFF/ON-VEs}RIFY DRIVE #,P !RESS WHEN READYCONTROLLER TEST ӛDRIVE STATUS CHECK ӛExecuting Invalid Command TestDRIVEs} INVALID COMMAND TESTTesting Continues....DRIVE INVALID COMMAND TESTExecuting Write Protect TestDRIVE WRs}ITE PROTECTEDDRIVE !" WRITE PROTECTEDMOTOR START TEST ӛMOTOR START TEST ,Executing Motor Start TestExecutins}g Head Step/Settle Test Executing Motor Speed Test MOTOR SPEED IS MSMOTOR SPEED TEST ӛ堲p}?