0L0YUTILITY5( (  Error: No DOS(0 )0 / 0/(0/)00ֹ/ / Ȅ`lL*0  1 1%7x0 1 1 18H 1(哅h k1 y0L0l00DEH B VL0@   Y0`0.` a000. 08&.` 0mm 8 L1ƕƔ 1擥` (Main  Z2X32F DOS]9yREADME 1ST]+ DSWAP COM]+DSWAP DOC]+ DTC DOC]+"]FRMTDRV1COM]+(]FRMTDRV2COM]+)GETCNG ACT]+*FGETCNG COM]+-HDFORMATBAS]+0HDFORMATLST]+3 LOCKOUT BXE]+7LOCKOUT DOC]+:!MIO ACT],"\MIO COM],0AMIO DOC],B#RECONFG BAS], PRECONFG LST], aRECONFG0COM],dRECONFG1COM],gRECONFG2COM],jUPGRADE DOC], XE256 DOC],IXE576 DOC],!Q:XE1088 DOC],4DOS SYS]- AUTORUN SYS]-VTEX COM]",)VTEX TXT]"8nKBMENU COM])pBMENU M65])x BBSTATUSCOM])6BBSTATUSDOC]* BSWAP21 COM]*BSWAP21 DOC]*LOADPARTCOM],QLOADPARTDOC], LOADPARTM65],44ؠ?օ Lw/ N`Rѩ֩Lt80 0 0č4ȱ )_8Am4Ȍ4 4юS֩H ,ةHѰV0ѹV֢ё8ѩѩyHiY֪h֍֩Ѭ4L4$6HZl~**** LOADPART VERSION 2.1 ****August 1992By Joe Perkins with subroutines from the CSS Black Box manual. Modified by John Brandt to work with DOS XL and SpartaDOS X.This program is Freeware.........LOADPART is a utility for use with the Black Box (from CSS) and command-line oriented DOSes such as DOS XL and SpartaDOS. It does not work with menu-driven DOSes such as MYDOS.It is designed to allow you to load Hard Drive partitions into whatever drive number you choose (D1:-D9:). You then have the option of returning to DOS or doing a coldstart. You may also use this utility to simply reload the default configuration from HD #0,0.To assign new partitions to drive letters, usage is as follows:[X] LDPART2 [/ppd]...[/N]where pp is the partition number, (1C, 1D, etc.) and d is the drive number you want the partition to be assigned to (1, 2, etc.) The /ppd parameter may be repeated for as many partitions as will fit in the command line buffer (64 characters long). Enter "/N" (no reboot) for the last parameter to return to DOS. If you omit the /N parameter, the computer will do a coldstart. The "X" in front of the command should only be entered by SpartaDOS X users who wish to reboot with SpartaDOS X disabled.To use LOADPART to simply reload the default configuration from Hard Drive 0,0, simply type in:LDPART2 /RYour default configuration will be reloaded and the computer will do a warmstart.****** ******That's all there is to it. I use this utility with programs such as Syncalc. I have the partition containing Syncalc load in as D1:, and a data partition containing Syncalc spreadsheets load in as D2:. Then I let LOADPART do a reboot, all from a batch file. Since I use a menu program that launches files with a point and _!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^~S28$HHH өH*HHllhhh@HHLH|)ӝtI)MӍ|hh`HH||)thh(`44DEPH BLV `)`` '4 4 4Ȣ4 4LI4 4 w4 4x '4 44X 4) ~`8 '4 4 4L4L4Error: Not an XL/XE Computer.4.4t5} SpartaDOS Ver 3.2f 25-Feb-94 Copyright (C) 1994 by FTe 4.4 4 4G)@}҅  EEF E x4 d5 d5" #   c5  M c5 , W5 4LL4 L LLHEi ȱEi `|40 `` 7 YL\ 2BHG H-G H ةHhJ \hBL\`@B 442@3Y45245324 `L1( (ҩmi:; < =x:23454 Μ ,  w ,P lνе X0`234 5` P21 ,350 2 9 4 2 9 LD1 9)ҢL1,350 &2 4 2 1`08` S< ACE,0ɋ8` `ύ&'0`e1i1`,07 ,ߍҩҭҍ )  `_ҩҩ,,,8`H)ҩh `#,ҍ ҩ(ҥA,ҩҩ`jj)?j)`Ң`H?ʎ @  0h ``@@B,~-32@3452453c24` ɔ FNot SpartaDOS disketteLɢ FDisk fullLɪ FFile not foundLɣ FIllegal wildcard in nameLɘ FNot binary fileLɤ FFile erase protectedLɕ FNot version II disketteLɩ FDisk write lockedLɖ FDirectory not foundLɀ FBreak AbortLɐ% FWrite protected or bad sectorLɥ FFile name errorLɨ FFunction not supportedLɧ FCan't delete fileLɗ FFile existsL` w  w(0   0a Y©ÍYh   N Y©  NΟ`L 8L`@D , ̍̍)̝BJJJJJ ̝D̝E0 KJ)̝JJJ)̝H̝I D@   Ϭ,0),~  FError -- L`(),! *+  -"#$./0_@ @CA똩)*K HJJJJ 9h) 0:iLhWhXWXͭ LNͭXHWH`, Nnn ͠H͎͌͢ͽ `Mܩ,0 N ͭO` P..*N  . 0PH0  ʩ `$%` Π vAG) ..ܭ` 7`  7`L @ ύ  ύ 乀` Ω* #* Z 0DLϠ ̠ ̭0L0f 0  LϮ Lϭ  /A ̠ LL~υCυD. yϠC  y 婛蝀`ȹ  ` ̢0 8̽ H̽I̠0 (ʢ 0L *)L* *M @ L ( `L(= # , 魗  筙`( L#() LLL I0   䍠 e , ʎi 0L CL] 0G   KQ;`) x뭤B L  ,  ,)ߍ "LLL  ,] 0 # K ح)  "L  밻) 멀 "L` ,L  Ld͙Lj魗  Lj$H0Ld88A e , s eECFD8  8  9L H ,C]Dah LꭖCD L譔  魙8L LL$H0 s ,LxECFD  鬙 9L謓CCC)` L_CC C`C`C`  EFL뭔 K`8mi` /L9 Z"C X `L ꭔ C8 CDC}TCȱC}UC`  eCCD`  _C``Ipi ͟? x0,)C) `II  08` CL # , 魗 `1@R H0>h0   * HH 0hh`hh,L L { P*)0 0*`*)& K9:*$+0;QG` {!*B sﭟͻͼ/ P {0*)((a,,,L ) *)  I0 , *)  I  0 I  K 䍝 ,) *I *c 0L U*) 0 @`L,0 K) MﭝI $ 0 zz  G L  Z v #(> sL L,0`H hɛ ,'L0,L P*H * {0h*L04*  0 )L Lq * { M {0Y) *LJ, -* { M {0 ,  ,) LkL, LLLL: * {, (] 0 # K M {0 LL8*  * 0I LL,H ) ") čɍҍ)*LB 0 ͠E 0)  0  63# ͌;QL   ͩ: ͭ ͩ: ͭ ͩa p ͩmLͭ ͩ- ͭ ͩ- ͭ L͢$ ` 6(ȭ(Ȣ(((ȭ(ȭ(` ȱCL,~LL # wL ʈ`1N@ 1!@1S@@8` v P  > Ȣ L >(ȩ(` (H(h `*$/ȱ$Aȩ *$$ `2Kd}j #H 0K 08}  )L ,08J mHh 8Jm , 3m L  8 L iL?EF,L譞)  #T 0N 0   Q 0` >$H s L)L  CȭC _ 1 /͓ hL\ s)H   EF 묓 hL\ KL\FА֐#eCCD$H0CELW `abcdefghijklmnopqrstuvwxyz{|}~EC$H _8m䍖L ``H譞=L `   hC̓ _`LK8EmEF8m䍚 W 0`8`8`CȱC`CȱC`  hCD ` / ?䭒,06/O)͒/?}` &O`)8O,0, } ,0} 8,0 8JHjmChmD`H)h)/ ?  &CD8 ` ` i͓ L?CC, CȭC CȭC _L 3 `),)   C&̓ͬ L,L   X,}T}U` .C   I1CC`   CC,0  L4L@ٯ` N j  ,0 z` _)8j`m K`, HJjhj`, H**hJ`_/]^/` 0 `y"U a ې;ݒ- ;m ; - ;  ]!K`Z6<` 2 @ ɛ  `  8)ɀɛ ȹ`COPLOASAVAPPENCWERASRENAMCREDIDELDICARUPRINTYPDIDIRMEPAUSVERIFBOOCHKDSPROTECUNPROTECLOCUNLOCXDIAINI?DIBASITIMDATTKE,,,,L̩` FFormat: Are you sure? )_H hY L W,P` 7l FNo cartridge` ̭8 F Volume:  ͭ   0ͩ   0 F͛Bytes/sector: 0 F͛ Total bytes:  l F͛ Bytes free:  lͭ ( F͛ Write lock: ,!0 FOFFL FONL  , ̠ 0  BLL `LX  ΍ 7 PL\l FPress any key to continue L FMemlo: $ 0ͭ 0 F Memhi: $ 0ͭ 0ͩL ̠ ̠L M)MӍӌj E L ̭O NF FParameter ErrorL` *L *L  FCurrent date is   F͛Enter new date: - 3_ɛX KJLL  FCurrent time is  F͛Enter new time: : 3 ɛ F`ɛ )_PAϩ, mJ  J JLO WMJ`:8`M {)pM mM iM {`ȹ 0:`8`L ` 7 VL\ 7 L\%H$H`LPLI L2 X  UD1:autorun.sysstartup.batQ*.*.COM.BATD1:Volume: Directory: FREE SECTORS LI z)͒}`This is the fifth in a series of sixdisks containing public domainutilities specifically for SpartaDOS.No two disks contain the same file.Disks 1 through 4 contain genericutilities, with each disk having agood assortment. Disk 5 containsspecific files for MIOs andhard drives. Disk 6 is my version ofthe SpartaDOS Tool Kit--only usingpublic domain files. This disk was formatted with, andhas the DOS.SYS of, DOS 2.5 to enableall users to view its contents, notjust those lucky enough to haveSpartaDOS. Please use the text reader (theAUTORUN.SYS file) to becomeacquainted with the files beforeusing them. Any Share-Ware files that may be onthese public domain disks are agratuity--the disk space they takewould be blank if not for them. If you would like more public domainutility disks for SpartaDOS write to: H. Brewer 4010 Ridgedale Granite City, IL 62040-5741As of Summer 1988, disks are $5 eachor $12/set of 3, with two sets available.@AHHHͩ˩̱ @L<@ȱ/eͅ˥iL]@Ωϩ @TL@˅ͽ@L<@1Π˅͢@L<@1ν@ΦϽ@ϩѩ Ѥι֝FiͤΦϽ֙ϢF(hhh`%22/212345678 (08************************************* DSWAP.COM v1.2 A utility for MIO owners ------------------------------------- by Ed Bachman DSWAP.COM is a Sparta utility that lets you duplicate the "swap" funct-ion on the MIO menu via a DOS command(external). You get no reboot as withusing the menu. and hardisk ownerswill find this convienent when usinga program that uses #1 drive(flop), etc. the syntax is. Dn:DSWAP /12 the"1" and "2" being the drive numbersyou wish to swap.(no they dont have to be Dn's 1&2 can be any Dn 1-8) NOTE: the space and the slash "/"between DSWAP and the drive num. Ifignored an error will be output andthe operation aborted. LIKEWISE:aviodputting a space between the Dn's oryou get an error. this file can be renamed just remember the syntax."filnam""/"DnDn. well thatsit! Any Questions or comments can beaddressed to me thru E-mail on the ,NAC-ACK bbs,24hr,300/1200bd215-837-1813 source code is available to intrestedpersons. G'day EdBa.====================================== ===================================== DTC hard drive controller -- help for ICD's MIO and SpartaDos owners. Feb '87 The DTC SASI controller forgets it's configuration every time RESET is triggered or the unit is powered up. The latter isn't much of a problem, but the former is since RESET is triggered every time SYSTEM RESET on your computer is pressed. We could reconfigure the DTC all the time, but such would require a custom ROM for the MIO. The easier fix is to isolate the DTC's RESET from the SCSI buss' RESET and manually reset the board via a push button switch. Here's how to do just that: obtain a momentary contact switch (SPDT) and some small jumper wires. Bend pin 40 (buss RESET) on the DTC's SASI connector out of the way of the 50 pin connector, and connect a jumper to it. The other end of the jumper goes to the common terminal of your switch. The NC (Normally Closed) contact will go to +5V on the controller board, and NO (Normally Open) goes to ground. In use, the switch is pressed once, then the files RECONFG1.COM and (for a second hard drive,) RECONFG2.COM are run. The SASI connector is reconnected to all the other 49 pins that constitute the SASI buss. If your hard drives aren't ST506s, you'll need to create a reconfiguration file for each drive connected to the controller. The file called 'RECONFG0.DAT' should be copied to 'RECONFG1.COM' and (if you have 2 hard drives,) 'RECONFG2.COM'. Do NOT rename the file; copy it -- RECONFG0.DAT is the master COM file that is modified for each drive's individual characteristics. (With the DTC controller, you are allowed mixtures of hard drives.) If you're interested in what the RECONFG file does, read the LST file associated with it; it is the MAC- 65 source code for RECONFG0.DAT. For most purposes, though, enter BASIC and run the RECONFG.BAS program. It will ask you the particulars for each hard drive you are to configure, then creates the COM files through SpartaDos's XIO 40 and 41 commands. (Therefore, only SpartaDos should be used with this program.) Configuration options are: number of heads, # of cylinders, step rate, step period and mode, and RWC cylinder #. If this bothers or confuses you, don't let it. Your hard drive manual contains most or all of the information, and the MIO manual has the more pertinent stuff for common hard drives. For all but the most oddball drives, a step rate of 16, step period of 90, and step mode 0 work fine. (The alternative for mode is 4; no others exist. Consult the DTC manual for what it means.) Of course, the number of heads and cylinders is important, and should be easy to find. Some drives need a RWC (reduced write current); if yours does enter the cylinder # the controller needs to start the RWC at, otherwise set it to 0. Use this for each drive you need to reconfigure. Formatting your drive can take either of 2 approaches; ICD's HDFMTPH?.COM files (using Xebec option) or the FRMTDRV?.COM files. These files do nothing more than tell the DTC to format the drive; no verify or sector count is given. Again, the LST file is MAC-65 source code for FRMTDRV?.COM, and FRMTDRV.BAS allows you to change options from Basic. (Ala the XIO 40 and 41 commands again...) Use HDFMTDIR to write the directories. In use, the DTC works well. I'd rather have another controller, but... For some reason, when Sparta boots from the hard drive, it searches all of drive 1 before booting. This may cause a considerable delay if the drive happens to be larger than the default 10Megs of the ST506, because the controller keeps returning 'address out of range' errors. To overcome this problem, make drive 1 short; just large enough to hold DOS, a STARTUP.BAT file, and the RECONFG?.COM files. The batch file should be: ;Good morning... RECONFG1 RECONFG2 (optional...) ;Booting system... -START2.BAT Or something similiar. If you have to RESET the controller once it's powered up and running, simply run the RECONFG?.COM files in the boot directory after pressing the RESET button. Hope I haven't confused you too much. The programs were written by Bill Dyck, and touched by me; be that good or bad. Hope your controller works out for you; Bill is having no problems and I'm almost there. Regards, Remus. @V@ @Q@I,0 @@`Iѭ)ѭ) ,0`,0(`@V@ @Q@I,0 @@`Iѭ)ѭ) ,0`,0(` INCLUDE "D1:>ACTION>RUN_TIME>SYSLIB.ACT"INCLUDE "D1:>ACTION>RUN_TIME>SYSIO.ACT"PROC Stop() [$A2$FF$9A$6C$0A$00]PROC MIO() BYTE A16=$D1E2, ; Address bits A19-A16 A8=$D1E0, ; Address bits A15-A8 TA16, ; Temporary area to save original A16 TA8, ; Temporary area to save A8 i BYTE POINTER ConfigTable=$D610 ; Beginning address of configuration table BYTE ARRAY buff(112) ; Temporary storage area for the configuration table TA16 = A16 ; Save old value of address lines TA8 = A8 A8 = 0 ; Enable page zero of MIO A16 = $20 ; Have to copy the configuration table before using MIO ; Using the file will switch the MIO page in the ; middle of the program. FOR i=0 TO 111 DO buff(i) = ConfigTable(i) OD A16 = TA16 & $DF ; Restore original MIO page A8 = TA8 ; and disable it. Open(1, "D1:MIO.CNG", 8, 0) FOR i=0 TO 111 DO ; Save configuration data to disk PutD(1, buff(i)) OD Close(1) ; And that's it! PrintE("All done!") Stop()RETURNA1z7 (c)1983 Action Computer Services  B JKIHiDiELV`Lz1 z1 BLV`L11l L1 &` Fj`8冨凪` 2EӅӥ 2`ʆǪƩ Ɛee` 2ƦʆǢ &Ɛeǐ A2 A2L2 2'&&&8儨児祂*L2&&*ń8&&L2 2`hihiHHȱȱL1c !#3`L1JJJJ`H 1h`Hȩh 1L.3 1L.3 b1L.3 j1L.3 p1H8`HhHh 3L.3 BHI V䅠L.3 L3 z1L.3Ԇ ؠPIPP` 4P j1L.3 *4L3 4L/4 C4L3H- 38塪墨hLC4 \4L3 c4L3 4ȹP`텠8堨塪 4芨Oȩ-`PP 3P棩 Ѥģ0-ģ6000:,80H & &ehe&eģ0ʥ 8堅塅`$ 3&*i0:0i 3Ʀ`¢ 护°ڱ%ȱ%E 3L5担CS 3L5I \4L5H W5L5 *4L5 &B V .3NLMȑ` MLN%B VL.3LB6l  FIXpTURN(0)XX%;************************************X%;Change 'c' to uppercase if necessaryX\L6эH6эL6ѩ ьP6oP6L 7T6mP6U6iP6V6P6L6H6)ߍѭL6L(7 D1:MIO.CNG7 R3P6oP6L]7P6V6 3P6L>7 3Lo7 All done!7e |3 ?6``6@NAMEDRIVHEADCYLINDERCYLHIGCYLLORWCYLINGERYNINTERLEAV %%*******************************%%* ǡ *%%* *%%* THIS PROGRAM TO BE USED ONLY*%%* WITH SPARTA-DOS BECAUSE OF *%%* THE XIO 40 AND 41 COMMANDS *%%* (BINARY LOAD AND SAVE). *%%******************************* ;@&,;@, },, $ Ԯ BASIC BUILDER PROGRAM\( ( (\(KWHAT IS THE NAME OF THIS FILE (SHOULD BE ıX. X BEING DRIVE #)(2,(((WHICH HARD DRIVE TO FORMAT: ,<!!!@) @@PF"@6-P"@6-@2Z(($(WHAT INTERLEAVE TO USE: ( } ź  ź " 1"@2 2  ź &("(IS THIS CORRECT? (Y/N) &4N@((@@@@BdfBdi,""67B:,%@,. 4000 40566((@A@@@ }J FILE IS UPDATED!!!TD2:HDFORMAT.BAS &("(T? (Y/N) &4N@((@@@0100 *= $40000110 ;0120 ; SPARTA-DOS 3.2 PROGRAM TO0130 ; PHYSICALLY FORMAT A HARD0140 ; DRIVE.0150 ;0160 ; BILL DYCK, JANUARY 19870170 ;0180 DRIVE_INPUT = $D1E20190 DRIVE_OUTPUT = $D1E20200 DATA_OUT = $D1E10210 DATA_IN = $D1E10220 IO = 40230 CD = 10240 ATTN = $100250 BUSY = $200260 ;0270 START0280 JSR GET_ATTENTION0290 TRANSFER_TO_DRIVE0300 LDX #$000310 TRANSFER_LOOP0320 LDA FORMAT_DRIVE,X0330 EOR #$FF0340 STA DATA_OUT0350 OUTPUT_OK?0360 BIT DRIVE_INPUT0370 BMI OUTPUT_OK?0380 INX 0390 CPX #$060400 BNE TRANSFER_LOOP0410 FINISH0420 JSR DROP_ATTENTION0430 RTS 0440 ;0450 ; Ǡӛ0460 ;0470 GET_ATTENTION0480 LDA #$01 ;CONTROLLER ID0490 EOR #$FF ;INVERT FOR SCSI0500 STA DATA_OUT ;PUT ONTO DATA BUS0510 WAIT_FOR_RESPONSE0520 LDA DRIVE_INPUT ;LOAD DRIVE STATUS0530 AND #IO ;ISOLATE I/O BIT0540 BEQ WAIT_FOR_RESPONSE ;IF 0, NOT READY0550 LDA #ATTN ;ATTENTION CODE0560 STA DRIVE_OUTPUT ;PUT ON BUS0570 GOT_ATTN?0580 LDA DRIVE_INPUT ;LOAD BUS0590 AND #BUSY ;CHECK IF BUSY0600 BNE GOT_ATTN? ;KEEP GOING UNTIL READY0610 CLEAR_ATTN0620 LDA #$00 ;TAKE ATTENTION OFF BUS0630 STA DRIVE_OUTPUT0640 WAIT_FOR_REQUEST0650 BIT DRIVE_INPUT ;CHECK REQUEST LINE0660 BMI WAIT_FOR_REQUEST0670 RTS 0680 DROP_ATTENTION0690 LDA DATA_IN ;LOAD DATA BUS0700 DESELECT0710 BIT DRIVE_INPUT ;CHECK IF READY TO DE-ASSERT0720 BMI DESELECT ;NOT YET0730 LDX #$28 ;MAKE SURE CNTRLR GETS DE-SELECTED0740 DESELECT_LOOP0750 LDA DATA_IN ;READ DATA0760 DEX ;MIO RESPONDS WITH ACK0770 BPL DESELECT_LOOP ;CNTLR DE-SELECTED0780 RTS 0790 ;0800 ; ͠0810 ;0820 FORMAT_DRIVE .BYTE 4,0,0,0,1,00830 ;  0840 ; THIS NUMBER IS '0' FOR DRIVE 10850 ; $20 FOR DRIVE 20860 ; 0870 ; THIS NUMBER IS FOR AN INTER-0880 ; LEAVE OF 1.     10 Dim A$(1),Buf$(256),Map$(8192):Poke 82,0:Fast 20 Close #1:? "}LOCKOUT -- a utility to read SpartaDos"30 ? "diskettes and lock out defective":? "sectors in the VTOC bit maps."40 ? "By Remus, 8-19-87 Ԡ":? 50 ? "Which drive do you wish":Input "to work on ?",A$:Trap 20:Drive=Val(A$)60 If Drive<1 Or Drive>8 Then 90070 Trap 40000:Bytes=128:Sector=1:Gosub 1000:If X>128 Then 900:Rem Is drive valid?80 Totl=256*Asc(Buf$(13))+Asc(Buf$(12)):? "Total sectors: ";Totl90 Free=256*Asc(Buf$(15))+Asc(Buf$(14)):? "Free sectors: ";Free100 Maps=Asc(Buf$(16)):? "Map sectors: ";Maps:Rem # of bit map sectors110 Fbit=Asc(Buf$(17)):? "First bitmap: ";Fbit:Rem First bit map sector #120 Rem (All VTOC bit map sectors are sequential...)130 X=Asc(Buf$(31)):Y=X>128:X=X-(128*Y)140 ? "Tracks: ";X;" Sides: ";Y+1150 Size=Asc(Buf$(32)):If Size=0 Then Size=256160 ? "Bytes/sector: ";Size:Bytes=Size170 Poke 752,8:? "Reading sectors..."180 Position 25,9:? "<=-":Position 0,14190 For Sector=Fbit To Fbit+Maps:? "Reading bit map ";Sector;:Gosub 1000200 If X>127 Then 900210 Map$=Map$,Buf$:Next Sector220 Position 25,9:? " "230 Bytes=128:Rem Sectors 1-3 are ALWAYS SD.240 Position 25,7:? "<=-":Position 0,14250 For Sector=1 To Totl:? "Reading:";Sector;" Status:";:If Sector=4 Then Bytes=Size260 Gosub 1000:? X;:If X<128 Then 300270 X=Int(Sector/8):Y=7-(Sector-X*8)280 Map$(X,X)=Chr$(Asc(Map$(X))&(255-(2^Y)))290 ? " (Byte ";X;" Bit ";Y;")":Free=Free-1:Bad=1300 Next Sector:? :? "All sectors read"310 If Not Bad Then ? "No bad sectors":Goto 400320 Input "Write new map?",A$:If A$<>"Y" Then End 330 Rem Write updated bit maps340 For Sector=Fbit To Fbit+Maps350 X=(1+Sector-Fbit)*256-255360 Buf$=Map$(X,X+Size-1):Gosub 2000370 Next Sector:Sector=1:Bytes=128:Gosub 1000380 Rem Write new free sector count390 X=Int(Free/256):Y=Free-X*256:Buf$(14,15)=Chr$(Y),Chr$(X):Gosub 2000400 ? "All done...":Poke 752,0:? :End 900 ? :? "Error ";X;" -- Drive ";Drive;" Sector ";Sector:? "Program aborted"910 Poke 752,0:? :End 999 Rem Load sector # Sector into Buf$(Secs 1-3 are always SD.)1000 Buf$=" ":Buf$(Bytes)=" ":Buf$(2)=Buf$1005 Rem Prepare to READ...1010 Poke 770,82:Poke 771,641015 Rem Prep DCB for sector transfer...1020 Poke 768,48:Poke 769,Drive:Dpoke 774,31030 Dpoke 772,Adr(Buf$):Dpoke 778,Sector1040 Rem Now do it!1050 X=Usr(Adr("h Sԩ`")):Return 1060 Rem PLA,JSR $E459,LDA $303,STA $D4,LDA #$0,STA $D5,RTS1999 Rem Prepare to WRITE2000 Poke 770,87:Poke 771,128:Goto 1020 Q1425ALL  Documentation for LOCKOUT.BXEThis utility (written in Basic XE) willlock out any bad sectors on a hard drive.It works with Basic XL or XE.RUN the program and all defective sectorswill be mapped out and locked. !INCLUDE "D1:>ACTION>RUN_TIME>SYSLIB.ACT"INCLUDE "D1:>ACTION>RUN_TIME>SYSIO.ACT"PROC Stop() [$A2$FF$9A$6C$0A$00]PROC MIO() BYTE A16=$D1E2, ; Address bits A19-A16 A8=$D1E0, ; Address bits A15-A8 TA16, ; Temporary area to save original A16 TA8, ; Temporary area to save A8 i BYTE POINTER ConfigTable=$D610 ; Beginning address of configuration table BYTE ARRAY buff(112) ; Temporary storage area for the configuration table ; Have to copy the configuration table before using the ; file. Using the file will switch the MIO page in the ; middle of the program. Open(1, "D1:MIO.CNG", 4, 0) FOR i=0 TO 111 DO ; Read configuration data from disk buff(i) = GetD(1) OD Close(1) Print("Configuring MIO...") TA16 = A16 ; Save old value of address lines TA8 = A8 A8 = 0 ; Enable page zero of MIO A16 = $20 FOR i=0 TO 111 DO ; Store the configuration table in the MIO page zero ConfigTable(i) = buff(i) OD A16 = TA16 & $DF ; Restore original MIO page A8 = TA8 ; and disable it. PrintE("Done") Stop()RETURN#$%&'()*+,-./6< (c)1983 Action Computer Services  B JKIHiDiELV`L6 6 BLV`7L 77l L7 &` Fj`8冨凪` V7EӅӥ V7`ʆǪƩ Ɛee` g7ƦʆǢ &Ɛeǐ 7 7LR7 g7'&&&8儨児祂*LR7&&*ń8&&LR7 7`hihiHHȱȱL*7c !#3`L7JJJJ`H *7h`Hȩh 6Lx8 7Lx8 6Lx8 6Lx8 6H8`HhHh 8Lx8 BHI V䅠Lx8 L9 6Lx8Ԇ ؠPIPP` R9P 6Lx8 t9L:9 R9Ly9 9LH9H- C98塪墨hL9 9L:9 9LH9 R9ȹP`텠8堨塪 R9芨Oȩ-`PP 9P棩 Ѥģ0-ģ6000:,80H & &ehe&eģ0ʥ 8堅塅`$ <9&*i0:0i <9Ʀ`¢ 护°ڱ%ȱ%E <9L:担CS 8L:I 9L:H :L: t9L: &B V x8NLMȑ` MLN%B VLx8L;l sr - pectory read(SpartaDOS only)``;X` ; Output:H`; none3`;+` ; return:`); L?@A Many people complained about the fact that there is no way to save the MIO configuration unless using a hard disk. No reason for complaints anymore. I wrote two small programs that will help you save the configuration and then restore it back anytime. Files in the archive: GETCNG.COM - This program when run will save the current MIO configuration. MIO.COM - This program when run will restore the MIO configuration. GETCNG.ACT and MIO.ACT source code for both programs. Saving the configuration ------------------------ The first step is to save the MIO configuration. Before doing it, get into the MIO configuration screen (Select-Reset). Set the configuration parameters of the MIO the way you want them to be by default. When finished return to DOS. When you'll run GETCNG.COM it will create a file by the name MIO.CNG on D1:. This 112 bytes long file contains the current MIO configuration. Copy this file and MIO.COM to the DOS diskette you are using when booting the system. Restoring the configuration --------------------------- When you'll run MIO.COM it will read the configuration file and will write the configuration parameters into the MIO's zero page. If you are using SpartaDOS run the program from the STARTUP.BAT file, and it will set the MIO parameters automatically on bootup. Both programs were written using Action! Action! is Trademark of Action Computer Services Portions of this program are (c)1984, A.C.S. If you have any problems, questions or suggestions I can be reached at: CI$: 71350,2006 GEnie: A.SCHWARTZ Avi Schwartz CDEFGHIJKLMNOPNAMEDRIVHEADCYLINDERCYLHIGCYLLORWCYLINGERYN %%*******************************%%* ǡ *%%* *%%* ONLY TO BE USED WITH SPARTA-*%%* DOS BECAUSE OF THE XIO 40 & *%%* 41 COMMANDS (BINARY LOAD & *%%* BINARY SAVE). *%%******************************* ;@&,;@, }++ # Ǯ BASIC BUILDER PROGRAM\( ( (\(KWHAT IS THE NAME OF THIS FILE (SHOULD BE ıX. X BEING DRIVE #)(21(-(!WHICH HARD DRIVE TO RECONFIGURE: 1<?!@) @5 ** ONLY DRIVE OR **? @PF"@6-P"@6-@2Z ((HOW MANY HEADS:  d6-&@n$( (HOW MANY CYLINDERS: $x6-&@6-P:'AV,6-&$AVI(E(9REDUCE WRITE CURRENT OR WRITE PRECOMP CYLINDER (0-NONE): I } ź   Š " 1"@2 2 Ӻ %@  Ӻ %@ ŠР̺ &("(IS THIS CORRECT? (Y/N) &4N@((@@@@BeBeBe Be"Be,""67B:,%@,. 4000 40826((@A@@@ }J FILE IS UPDATED!!!TD2:RECONFG.BASQRSTUVWXYZ[\]^_`0100 *= $40000110 ;0120 ; SPARTA-DOS 3.2 PROGRAM TO0130 ; RECONFIGURE A DTC-520A CTLR0140 ; TO ACCEPT A DIFFERENT HARD0150 ; DISK THAN THE ASSUMED DEFAULT.0160 ;0170 ; BILL DYCK, JANUARY 19870180 ;0190 DRIVE_IN = $D1E20200 DRIVE_OUT = $D1E20210 DATA_OUT = $D1E10220 DATA_IN = $D1E10230 IO = 40240 CD = 10250 ATTN = $100260 BUSY = $200270 ;0280 START0290 JSR GET_ATTENTION0300 TRANSFER_TO_DRIVE0310 LDX #$000320 TRANSFER_LOOP0330 LDA ASSIGN_DRIVE_PARAMETERS,X0340 EOR #$FF0350 STA DATA_OUT0360 OUTPUT_OK?0370 BIT DRIVE_IN0380 BMI OUTPUT_OK?0390 INX 0400 CPX #$060410 BNE TRANSFER_LOOP0420 WAIT_FOR_CONTROLLER0430 BIT DRIVE_IN0440 BMI WAIT_FOR_CONTROLLER0450 GIVE_UP_DATA0460 LDA DRIVE_IN0470 EOR #$FF0480 AND #IO0490 BNE GIVE_UP_DATA0500 DUMP_DATA0510 LDX #$000520 DUMP_LOOP0530 BIT DRIVE_IN0540 BMI DUMP_LOOP0550 LDA DRIVE_PARAMETERS,X0560 EOR #$FF0570 STA DATA_OUT0580 INX 0590 CPX #$0A0600 BNE DUMP_LOOP0610 FINISH0620 JSR DROP_ATTENTION0630 RTS 0640 ;0650 ; Ǡӛ0660 ;0670 GET_ATTENTION0680 LDA #$010690 EOR #$FF0700 STA DATA_OUT0710 WAIT_FOR_RESPONSE0720 LDA DRIVE_IN0730 AND #IO0740 BEQ WAIT_FOR_RESPONSE0750 LDA #ATTN0760 STA DRIVE_OUT0770 GOT_ATTN?0780 LDA DRIVE_IN0790 AND #BUSY0800 BNE GOT_ATTN?0810 CLEAR_ATTN0820 LDA #$000830 STA DRIVE_OUT0840 WAIT_FOR_REQUEST0850 BIT DRIVE_IN0860 BMI WAIT_FOR_REQUEST0870 RTS 0880 DROP_ATTENTION0890 LDA DATA_IN0900 DESELECT0910 BIT DRIVE_IN0920 BMI DESELECT0930 LDX #$280940 DESELECT_LOOP0950 LDA DATA_IN0960 DEX 0970 BPL DESELECT_LOOP0980 RTS 0990 ;1000 ; ͠1010 ;1030 ASSIGN_DRIVE_PARAMETERS .BYTE $C2,0,0,0,0,01040 DRIVE_PARAMETERS .BYTE $1C,0,0,3,2,$63,0,0,0,0bc@@ =@s@I,0,0I),0y@I b@`Iѭ)ѭ) ,0`,0(`cef@@ =@s@I,0,0I),0y@I b@`Iѭ)ѭ) ,0`,0(`chi@@ =@s@I,0,0I),0y@I b@`Iѭ)ѭ) ,0`,0(` cklmnopqrstuvwxyz{|}~ THE ATARI 130XE MEMORY UPGRADE The Atari 130XE lends itself to memory increases quite easily. For those who may care the Freddie chip (Part # CO61991-29) has been around for a while. Remember the 1400 and 1450XL computers? These machines used Freddie also. Freddie is used for multiplexing the address's fo th RAM chips and provides system timing. The chip that does all of the actual work in providing for the memory management is the custom chip next to Freddie. (Part # CO25953) This chip takes it's input's from th 6520 PIA and from Antic for CAS, RAS, etc. The pin that we are concerned with is pin 14 (CASBANK). .c Technical Overview Now for the good part. If we redirect the output of pin 14 of the CO25953 to another bank of 64K ram chips we can, via software, select any one of 8 banks of 64K. In this configuration one would have a maximum of 589,815 bytes of memory. The only disadvantage of this is the fact that under these constraints the hardware becomes more complex and the software to drive it does too. I recommend that for general purposes the 130XE be upgraded to a maximum of 320K. It gives the user sufficient "horsepower" and yet at the same time the software does not become too intense. Now for the bad news. To implement the 320K mod one has to remove the internal basic ROM which really isn't that bad because most users are using Basic XL/XE anyway. The reason for this is quite good. That bit is required for the addressing of the extra bank(s) of memory. Actually one could use the Self-test bit but that requires additional hardware or a reburn of the O.S. ROM. More on that later. .c The Mod What we will do is to wire up a 74LS138 to the 6520 PIA and to pin 14 of the CO25953. The 74138 can be best described as a routing switch. The data that we want to re-direct is presented at pin 4 of the 138 and the data output is pins 15, 14, 13 and 12. The pins that tell the chip to what bank to directs it's output to are pins 1, 2, and 3. Now for the installation. 1) Take 24 64K x 1 RAM chips and bend out pin 15 on all of them. Pin 15 is the CAS line. 2) Solder these chips onto the existing RAM chips in the 130. Do not solder anything to pin 15 yet! For ease of servicing and soldering I staggered these new RAM chips onto the existing ones. I recommend this highly. When you has completed soldering in each new bank take a piece of insulated wire and solder this wire to pin 15 of each new RAM chip. Wire wrap wire works nicely for this. Continue with this process until all 3 additional banks are wired. 3) Just to the right of Freddie is an area to solder in a 14 pin IC chip. We will use this area to supply +5 and ground to our 74138. Take a 74LS138 and bend out all of the pins except pins 8 and 16. Solder pins 8 and 16 into the holes of the unused chip area next to Freddie. 4) Next to the RAM chips is the chip with the part # of CO25953. Behind the chip are two 33 ohm resistors. (orange, orange, black, gold) Unsolder the right-most lead of the rear resistor. (R111) Solder a wire from the free end of the resistor to PIN 15 of the 74138. Solder another wire from the land where the resistor used to go to pin 4 of the 74138. 5) Solder two wires from pins 11 and 16 of the 6520 PIA chip (Part # CO14795-12) to pins 1 and 2 of the 74138. Also ground pins 3 and 5 of the 74138. 6) Solder the CAS line from each new bank of 64K to pins 14, 13, and 12 of the 74138. 7) Unsolder the Basic ROM chip from the board. This is the 24 pin chip that is located closest to the front of the machine just to the left of the 555 timer IC. Thats it. .c Conclusion and Tech notes: To test each bank boot with DOS 2.5 with your basic cartridge, POKE 5439,49, set the appropriate PIA port bit, go to DOS and reformat D8. Continue through all the banks and check your directory. If you write a file to one bank, switch banks, and write another file, you will not lose what you wrote to the first. The real advantage is that you can have your ramdisk and Basic XE too. Around the bbs's here in Chicago there is a file floating around called RAMDISK2. The source code is available on compuserve. By re-writing the routine you can have your ramdisk invisible to Basic XE and/or double density. I mentioned previously about using the Self-test bit in the PIA port. To use this bit you have to disconnct the line on the PIA that runs to the PAL MMU and connect it to a 556 timer that will enable the self-test input to the PAL for about 3-5 seconds. Half of the timer is used for timing and the other half is used as an inverter. The reason for using a timer is that on boot-up the OS uses some of the routines in the self test to check for valid RAM and to determine RAM size. I have done this and then pulled the circuit out. It was just too "messy" to suit me. One potential problem is the 555 timer used in the 130. This chip is used for system reset timing. If you press your system reset key down and hold it there the system should not reset. If it does you will notice that if you release it the system will reset again. The reason for this is because the 555 timer is putting out a spike that the system sees as a valid reset. To solve the problem replace the chip. It seems about 1 in 10 are bad. That's it! Hope you enjoy the mod. Rich Andrews Box 229-1 RR#7 Lockport, Il 60441 THE WINDHOVER SUPERRAM 130XE UPGRADE BY JAY TORRES THE WINDHOVER PROJECT COPYRIGHT (C) 1985, 1986 ALL RIGHTS RESERVED NOTICE: THIS UPGRADE IS RELEASED INTO THE PUBLIC DOMAIN FOR THE FREE USE OF ALL ATARIANS. NO WARRANTY IS GIVEN FOR ANY DAMAGE WHICH RESULTS THIS UPGRADE MAY BE DISTRIBUTED BY ANY PERSON, BBS OR USER GROUP PROVIDED CREDIT IS GIVEN TO MYSELF AND THE WINDHOVER PROJECT. DUE TO THEIR REPEATED FAILURES IN THE PAST TO ACKNOWLEDGE THE WINDHOVER PROJECT AND MYSELF FOR THE CREATION OF THE WINDHOVER 288K SUPE DUE TO THE ARCHITECTURAL DESIGN OF THE NEW 130XE AND THE USE OF THE FREDDIE CHIP (P/N C061991) THE XE IS VERY EASY TO MODIFY AS FAR AS TO DO THIS MODIFICATION YOU WILL NEED THE FOLLOWING PARTS: 8-41256 DRAMS (150NS), 1-74LS158 2-TO-1 MULTIPLEXER, 1-33 OHM RESISTOR AND 1. OPEN THE 130XE CASING AND REMOVE THE MOTHERBOARD FROM THE INTERNAL RFI SHIELDING. 2. USING A DESOLDERING TOOL AND A 10 TO 15 WATT SOLDERING IRON REMOVE THE EIGHT 64K RAM CHIPS FROM BANK #2. DO THIS CAREFULLY SO YOU DO NO 3. SOLDER THE 16 PIN SOCKETS INTO THE OLD RAM CHIP LOCATIONS. YOU WILL PUT THE 256K CHIPS INTO THEM LATER. 4. TIE TOGETHER PIN 1 OF THE RAM SOCKETS. USE ENOUGH WIRE TO LEAVE A 10 TO 12 INCH LEADER WHICH YOU WILL USE LATER. 5. CAREFULLY DESOLDER PINS 15 AND 16 OF THE 6520 CHIP (P/N C014795) AND BEND THEM STRAIGHT OUT. 6. TAKE THE NEW 74LS158 MULTIPLEXER AND BEND ALL BUT PINS 8 AND 16 OUT. 7. PLACE THE 74LS158 ON TOP OF THE 4050 CHIP LOCATED LEFT CENTER OF THE BOARD NEXT TO THE COLOR ADJUSTMENT POTENTIOMETER. USING THE SOLDERI 8. CONNECT PIN 15 OF THE 74LS158 CHIP TO PIN 8 OF THE SAME 74LS158 CHIP. 9. NOW CONNECT PIN 1 OF THE 74LS158 TO PIN 30 OF THE GTIA CHIP (P/N C014805). 10. SOLDER A WIRE FROM PIN 15 OF THE 6520 CHIP TO PIN 2 OF THE 74LS158. 11. SOLDER A WIRE FROM PIN 16 OF THE 6520 CHIP TO PIN 3 OF THE 74LS158 CHIP. 12. CONNECT ONE END OF THE 33 OHM RESISTOR TO PIN 4 OF THE 74LS158 CHIP. CONNECT THE OTHER END OF THE RESISTOR TO PIN 1 OF THE RAM SOCKETS 13. PLUG IN THE 256K CHIPS. BE CAREFUL! THEY ARE VERY SENSITIVE TO STATIC ELECTRICITY. 14. PUT THE MOTHERBOARD BACK INTO THE RFI SHIELD AND PUT THE ASSEMBLY BACK INTO THE CASE. TURN THE POWER ON AND SEE IF THE BLUE SCREEN COMES UP. IF IT DOES NOT TURN OFF THE COMPUTER AND CHECK YOU WIRING AGAIN. IF THE BLUE SCREEN COMES UP AND EVERYTHING ELSE SEEMS ALRIGHT THEN BOOT UP DOS 2.5. YOU SHOULD SEE THE FAMILIAR MESSAGE INDICATING THE NOTICE TO WINDHOVER PROJECT MEMBERS: WINDDOS VERSION 3.3 (USING A DOUBLE DENSITY RAMDISK), 3.4 (USING 2 SINGLE DENSITY RAMDISKS) AND 4 IF ANYONE DEVELOPS NEW SOFTWARE OR IDEAS FOR POSSIBLE USES OF THIS MODIFICATION I WOULD BE INTERESTED IN HEARING FROM THEM. ENJOY! ^Z (Y OR N)? N BEGIN SENDING YOUR DATA. USE A CONTROL-Z (1A HEX, 032 OCTAL) TO INDICATE THE END OF YOUR DATA.  The 130XE/576K upgrade by Scott Peterson. Copyright (C) 1986, released to the public. Well, here we go again, this time I recommend you have some electronics experience if you wish to perform 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 cartridge, 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 perform this upgrade you need the following: -Low wattage fine tip soldering iron. -Vacuum de-soldering tool (like Radio Shack PN#64-2098). -Some 30-gauge wire (Radio Shack PN#278-501). -#2 phillips head screwdriver. -Heat-shrink tubing, 1/8 in. Dia. -Also a pair of small needle-nose pliers and a small flat tip screwdriver are handy. PARTS NEEDED: Z1 74LS158 Z2-Z17 41256 (150ns.) Z18 74LS138 Z19 7432 R1-R2 33 ohm 1/4 watt resistor. S1 Micro-mini DPDT switch (like Radio Shack PN#275-626) Remove the 130XE case and metal RF shield to get down to the mother board. (320XE users go to step 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 from 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 near the ram chips. Next, desolder and remove U23 (CO14795), and replace it with a 40 pin socket. Bend up pins 15 and 16 and insert 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 pins 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 about 4 in. long, solder one end to pin 30 on the chip ATARI 130XE modification for 576K memory page 1 marked "CO14805" on the mother board, and the other end to pin 1 on Z1. Next 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 pin 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 TWO: Slide the mother board back into the bottom half of the plastic case (do not use the RF shield, you must be able to get at the mother board), and attach the keyboard. It will rest above the mother board without touching it. Test all 41256 ram chips 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 remove 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 15 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 backed 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. Take 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 except 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 below 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 exposed 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 and bend it up. Take a piece of wire and solder it to the landing where you just removed the leg of R111. Connect the other end to 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 and 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 (CO14795) 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 from Z19 pin 8 to the right side of the 3.3K ohm resistor marked R206 (located at the bottom right of U23). Connect a wire to Z19 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 switch size) at the rear right on the back of your 130XE. Take the small DPDT switch (S1) and install it in the hole. Now connect it as shown (make sure the switch ATARI 130XE modification for 576K memory page 2 DOESNT have a center off position); S1 (rear) U23 ________ U23 pin 20 ----|-O O-|----- pin 1 | \ / | Z19 ---|-O \/ O-|--- Z19 pins 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-assemble the computer, being carefull not to break any wiring going to the switch. You 8      !"#$%&'()*+,-./01234567should now have in one switch position a 100% compatible 130XE, and in the other you have a 576K 130XE that does not have Antic memory enhance mode and also can-not use 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 table 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 (please, no checks) for $10.00 to: Scott Peterson P.O.Box 33 Ft.Ord CA. 93941-0033 This includes the 800 288K upgrade by D. G. Byrd, the 800XL/256K (C.Burchholz), the 130XE/320k upgrade and anything else I finish. Good luck, and have fun. ATARI 130XE modification for 576K memory page 3 Memory Control Register 54017 (D301) 130XE in 576K mode Bit 7 6 5 4 3 2 1 0 D a b E c d e R D=0 enable diag. ROM R=1 enable OS ROM E=0 enable extended memory abcde= memory control bits. ----------------------------- Bank# Control# (dec) Hex ----------------------------- Bank 0 ---------->129 81 Bank 1 ---------->131 83 Bank 2 ---------->133 85 Bank 3 ---------->135 87 Bank 4 ---------->137 89 Bank 5 ---------->139 8B Bank 6 ---------->141 8D Bank 7 ---------->143 8F Bank 8 ---------->161 A1 Bank 9 ---------->163 A3 Bank 10 --------->165 A5 Bank 11 --------->167 A7 Bank 12 --------->169 A9 Bank 13 --------->171 AB Bank 14 --------->173 AD Bank 15 --------->175 AF Bank 16 --------->193 C1 Bank 17 --------->195 C3 Bank 18 --------->197 C5 Bank 19 --------->199 C7 Bank 20 --------->201 C9 Bank 21 --------->203 CB Bank 22 --------->205 CD Bank 23 --------->207 CF Bank 24 --------->225 E1 Bank 25 --------->227 E3 Bank 26 --------->229 E5 Bank 27 --------->231 E7 Bank 28 --------->233 E9 Bank 29 --------->235 EB Bank 30 --------->237 ED Bank 31 --------->239 EF ----------------------------- There is a version of MYDOS to support this mod, its 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 written 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 Peterson ATARI 130XE modification for 576K memory page 4 Additions to Memory Control by John Castravet Bit 7 6 5 4 3 2 1 0 D V C a b B R <=130XE-128K D a V C b c B R <=130XE-192K D a b E c d e R <=130XE-576K D=0 enable diag. ROM V=0 enable video bank access C=0 enable CPU bank access E=0 enable extended memory B=0 enable BASIC ROM R=1 enable OS ROM abcde= memory control bits. ----------------------------------------------- Bank# Control# (dec) Hex Location ----------------------------------------------- Bank 0 ---------->129 y 81 0-16383 Bank 1 ---------->131 83 16384-32767 Bank 2 ---------->133 y 85 32768-49151 Bank 3 ---------->135 87 49152-65535 Bank 4 ---------->137 y 89 65536-81919 Bank 5 ---------->139 8B 81920-98303 Bank 6 ---------->141 y 8D 98304-114687 Bank 7 ---------->143 8F 114688-131071 Bank 8 ---------->161 A1 131072-147455 Bank 9 ---------->163 A3 147456-163839 Bank 10 --------->165 A5 163840-180223 Bank 11 --------->167 A7 180224-196607 Bank 12 --------->169 A9 196608-212991 Bank 13 --------->171 AB 212992-229375 Bank 14 --------->173 AD 229376-245759 Bank 15 --------->175 AF 245760-262143 Bank 16 --------->193 xy C1 262144-278527 Bank 17 --------->195 C3 278528-294911 Bank 18 --------->197 xy C5 294912-311295 Bank 19 --------->199 C7 311296-327679 Bank 20 --------->201 xy C9 327680-344063 Bank 21 --------->203 CB 344064-360447 Bank 22 --------->205 xy CD 360448-376831 Bank 23 --------->207 CF 376832-393215 Bank 24 --------->225 E1 393216-409599 Bank 25 --------->227 E3 409600-425983 Bank 26 --------->229 E5 425984-442367 Bank 27 --------->231 E7 442368-458751 Bank 28 --------->233 E9 458752-475135 Bank 29 --------->235 EB 475136-491519 Bank 30 --------->237 ED 491520-507903 Bank 31 --------->239 EF 507904-524287 ----------------------------------------------- The banks marked with "x" are the normal 130XE banks, where DOS 2.5 will set-up the 130XE RamDisk, or where BASIC XE will move data in and out. It should be noted here that BASIC XE will not allow you to access any other banks of the extra memory. The banks marked with "y" are the additional 4, 16K banks (64K) ATARI 130XE modification for 576K memory page 5 obtained when the switch is in the position that enables the use of the built-in BASIC. In this position of the switch a bank of memory can be selected by the following formula: PORTB=54017 POKE PORTB,129+64*INT((BANK+4)/8)+16*MODE+4*(BANK-4*INT(BANK/4)) where: BANK=0<=>0-16383 BANK=1<=>32768-49151 BANK=2<=>65536-81919 BANK=3<=>98304-114687 BANK=4<=>262144-278527 BANK=5<=>294912-311295 BANK=6<=>327680-344063 BANK=7<=>360448-376831 ----------------------------------------- MODE 6502 CPU access ANTIC access ----------------------------------------- 0 extra extra 1 normal extra 9:;<=>?@ABCDEFGHIJKLMNOP 2 extra normal 3 normal normal ----------------------------------------- The additional memory can be reached in the window at 16384-32767 ($4000-$7FFF). Any programs for the 130XE with 128K will run normally. I would also like to stress the importance of a good desoldering technique and careful handling of the mother board. Use a grounding strap at all time since you start opening the case until after you put back the last screw. Despite the fact that I work in the electronics field, I have managed to open a few traces on the printed circuit board, and worse than that, to blow the POKEY chip, which left me with a computer that couldn't access the printer. It isn't an expensive chip, but on the other hand your friendly neighborhood Radio Shack doesn't carry them. This way a four hour job turned into something in the range of 25 hours. When soldering directly on the IC pins use only as much heat as necessary to obtain a good joint. I also recommend instead of the Radio Shack desoldering tool a professional desoldering station with a vaccuum pump. Clean the desoldering tool frequently to obtain maximum performance. It is very easy to destroy the plating-thru inside the holes if the ICs are not entirely free from the board. The SAMS service manual for the 130XE is a must for later reference, since I do not believe that any of the repair shops will take care of the modified computer, so get your copy as soon as it is available. You should also download the following additional files: 1. TEST576K.BIN--This will allow you to test the extra memory that you installed. 2. RAMD576K.BIN--This will allow you to setup and use the extra memory as a 4088 sector single density RamDisk (no built-in BASIC, or external cartridge). The program automatically configures to use the extra RAM as a RamDisk, with less sectors if the built-in BASIC is enabled, or depending on the position of the switch. But it only works with SpartaDOS version 3.2d from ICD. Since this DOS is ATARI 130XE modification for 576K memory page 6 completly compatible with the ATARIDOS format, I strongly reccomend it. While you are thinking about SpartaDOS also give the R-Time 8 cartridge a thought. You 130XE computer will become one of the most powerfull tools. Move over Commodore.... Enjoy the extra RAM, John Castravet ATARI 130XE modification for 576K memory page 7RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~The final step, the 1088XE.Version 2.0(This one works!)By Scott Peterson, June 1986. Well, this is it for me, the last installment on the 130XE. I have not built this mother, but one has been built and tested by another person in Mass., and it works!! This doc assumes you have allready built and tested a 576K 130XE. to finish it you will need the following parts;Quanity part no. description.------------------------------- 16 41256-15 256K DRAM'S 1 7432 quad OR gate 1 7404 quad invert buff. 2 33 omh resistors.Small piece of PC board.-------------------------------Note: On the 74 series, you can sub them with 74LS series chips, they use less power...Tools;Nothing fancy, a fine tip soldering iron,screwdriver,needle nose pliers, and some fine wire, ect. Mount the 7404 and the 7432 on a small PC board(1in. X 2in.) 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, 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 wire 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 the 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. Solder 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 it 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 the 74LS138 you piggy backed to the mother board when doing the 576k mod, remove the jumper from pins 1 and 16. solder a wire 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 4. Put some double backed tape on the PC board and stick it somewhere on the mother board of the 130XE.RAM-CHIP installation(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 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 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 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 you 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 all 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 inches and install a 33 ohm resistor in-line, cover with heat shrink tubing and do the same to the other wire. Connect one wire to 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 the 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 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.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 a table for the control numbers, ect.-------------------------------------Bank# Control# Hex#-------------------------------------1 1 12 3 33 5 54 7 75 9 96 11 B7 13 D8 15 F9 33 2110 35 2311 37 2512 39 2713 41 2914 43 2B15 45 2D16 47 2F17 65 4118 67 4319 69 4520 71 4721 73 4922 75 4B23 77 4D24 79 4F25 97 6126 99 6327 101 6528 103 6729 105 6930 107 6B31 109 6D32 111 6F33 129 8134 131 8335 133 8536 135 8737 137 8938 139 8B39 141 8D40 143 8F41 161 A142 163 A343 165 A544 167 A745 169 A946 171 AB47 173 AD48 175 AF49 193 C150 195 C351 197 C552 199 C753 201 C954 203 CB55 205 CD56 207 CF57 225 E158 227 E359 229 E560 231 E761 233 E962 235 EB63 237 ED64 239 EF------------------------------------- That's all of them, 64 16K banks for a total 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. Like I said earlier, There is a working model, It was built by Dennis Porter of Mass. His many long distance phone calls made this work.  Good Luck ScottP.S. 2 meg is very, very possible. You just need wwuunnn 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 from here, thats funny, the 1040 ST only has 1,024,000 bytes of ram.d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr J  ((  p L ()   JL= ( 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*` BF7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!LEE !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`  `1  ɐ     `TU  L ? .  t`GBJ ~DEHI B V0dVQDEHI VF9 ,0 ,0 s0hhL  L` H hDHEhDEL8HI4 0 HI,0 0  9 .G VLO,0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI VY8 B V  @  /DE `E:D1: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 BHI|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu $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.Lk.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(L.L(L/L9/L6/L/L/L/L/L0L0L+0LC0L/L^(Lj(L)'L@'Lo/Lr/LO/L%L'L%L% -膚 ɩҍD҅ 2 222 a(2222 ` -Lq -l ԤՄԅ`ȱ`ȱ`ȥ`ԑȥՑ`ԤՄ`ԤԅդՅ` '0=D '04.5 '0.( '0 ' ' 8`ԅ` & & & &ѐ & &ʥ %аЪ %Зьɛ &0 &0 `ԥ`Ɠƒ` % &LS* %LS* %օ0֥0 S*` %eԥe` %La* % % o*L% %Lo* % &L|* %L|* %L% % Ʌ` BLV䅆L' %ԅ`TU HH 'hhL, B VԩL%p v'PKJBDEL, &fL=) %ԅ`Ę eĘ +L4( % & %` %Ԅԅ` -``&eԅԥeՅ`L% o(ԨL%Ԅ & %eԥe` Ԅ &ɛ +0` d) ذI ( 8ԅԩՅL%L,ȹɛ꩛` d)f & 8fԆՅɛ摥0L?)$0`2 2L,(,ɛM(M( )ɛ )򩀅` %ԍ`ԄL%ԄL%ɛԆL% &󅐩f =) ؐL(L4,ԅԥՅL%82ԭ 2L%ԤՄԅե`8ե`eեe` B* K+fL% B* +fL%8ԨՄԅL% & B*ԥՄԩՅօפԥFf G+ԥ K+ԅՅԥզЦ`ԅՅʩ0B+=+ B+ 08f$˹ `' d +1ԦԄզՄFԐ eਊe&Lh+Ԇ`hh L, +Ff&֐ݥ ԆՅԠ&&&8થօԈ`քע +Ե 8`晄 ,L,`GHFH` U,0ɛȄ ؐL,HI h 8ԅԩՅL%?S, ,򦅩DEBHIL,ɛ +` +` %HI BL,՝HIB VL,L%B Vú.hh -l. -0dd-8/ i - 0-- ,@ . ,... + x' $(.Ԏ.8ե ".LO-- , `,ɛD(C` ذ -L- -L 2 -- ,L- - -L-l lp '8`ERROR- ?Run address> BASIC exitTrace:P8Յթԅ` ,.L, .-ȘH *h00,)` & ҅ԭ ) |*օեׅ` L,0թԅթᨊઐ```Յ`8Յթԅ`0 ԩ`ԅ`` ' %`BԝK)I JD/ELVS:)H)h y` & % & %TԅUՅV`&B ,NLսM` & %ԝL՝MN%BL, & /` BHIL, & /`B JKL, %ԅUՅV & %ԅT`)ҩҊ H) hҘ` %)xԩL% %))Lc&LZ& %)pԩL% %)|LZ&Lc& V0L-$2~2'@'@DDhDDL 2 $ppҠD Z$1@ H$ ?$ $ <G@vD $K@D $5@ !$PD '$5@ !$R22D '$N@hD $Z@D $a@ !$ $D $ h9 Z$ ?$ Z$c@ H$ Z$ -$ᢐD <$2}3թ@D $L*3L3ԩթ@D $LY3L3ԩթ@D $~33L3@wD $L3 h9L2 h9 Z$ ?$ Z$@ H$ Z$ -$ᢐD <$ԩթ@D $L43{4L%6ԩթ@D $L/4L%6ԩթ@D $Ls4@D $Ly4 h9L3 h9|44 Z$ ?$ Z$@ H$ Z$ -$ᢐD <$ԩթڅ@D $L4LV5ppҠDԩթ@4z5D $L5LV5ԩթ܅@D $LP5/@ !$PD '$LV5 h9Ly4 h9 Z$ ?$ Z$ޠ@ H$ Z$ -${55ᢐD <$ԩթڅ@D $L5L%6ԩթ@D $L5L%6ԩթ@5y6D $L6/@ !$RD '$L%6 h9LV5 h9 Z$ ?$ Z$A H$ Z$ -$ hD <$ԩթ @hD $z66L6N@hD $L> h9 Z$ ?$ Z$A H$ ?$ Z$ ?$ Z$5A H$ ?$Щ r$LD '$LD !$C@ $L6L7LD6x7 !$?@ $L7L 2L6 Z$1@ H$ ?$8 %vD{D $hD~D $ Z${D f$ Q$ Z$y77ᢌD f$ Q$ppҠD =ԩթ@D $L8 Z$1@ H$ ?$ Z$ ?$ Z$ ?$ Z$ ?$ Z$Q7x8A H$ ?$ Z$ `$FD '$ԩթjAD $L?8 ~; Z$FD !$ $ᢀ K$FD !$a@ $L8 Z$y88ᢧD K$ ?$L8é r$HD '$RHD !$pA $L8 Z$ ?$ Z$rA H$ ?$ Z$ ?$L9 Z$ ?$ Z$A H$HD !$ E$8x9A H$ ?$ Z$ T$ Z$ T$0 Z$ T$ppҠD Z$A H$ ?$Щ r$LD '$LD !$C@ $L_9Lb9L69L 2L$5@ !$OA $$ $y99 Z$ؠA H$ ?$A !$B $$ $ Z$wD K$ ?$ԩթjAD $L9A !$A@ $$ $ Z$B H$9x: ?$ԩթ@D $LH:A !$A@ $$ $ Z$ B H$ ?$PD !$5@ $L:A !$B $$ $ Z$By:: H$ ?$PD !$/@ $L:A !$B $$ $ Z$B H$ ?$RD !$5@ $L:A !$'B $$ $ Z$)B H$ ?$RD !$/@:v; $L$;A !$'B $$ $ Z$,B H$ ?$A !$'@ $$ $ Z$0B H$ ?$A !$'@ $$ $ Z$ hD K$ ?$5@ !$E@w;; $$ $`T r$JD '$^D !$3@ $L; Z$ ?$ Z$ $L> Z$A@ !$ $ᢀ K$RD !$/@ $L> Z$)D !$ $ᢀ K$-D !$ $ᢀ K$/D !$n>> $ᢀ K$` Z$1@ H$ ?$/@ !$^D '$8 %vDD $0 Z$ T$ R Z$1@ H$ ?$0 Z$ᢓD f$>l? Q$ppҠD Z$3D H$vD K$7D H$ ?$ Z$ ?$? %/@ !$ND '$0 Z$ `$`D '$ Z$`D !$ $ᢀm?? K$`D !$a@ $L? Z$ᢧD K$ ?$ ~;ND $BD $LE?é r$HD '$pA $L?L83@ !$^D '$ ~;R?b@ Z$ ?$0 Z$ T$5@ !$^D '$ Z$1@ H$ ?$ Y IUXXiYYXLYYLYY IUXLYLYY IUXILY@ UWWI}L^ZXXL+ZLZZ IUXXMXLZXmXXi 8XXLOZ~ZM IUXL+ZWI~LZXLZXmXXi 8XXLZ~Z IUWILZXXLZXLZZ IUWILZXLZ8XXLZZ IUWL)[W{L)[XXL)[XXmXXiWW UWI WILY] QW`LL[ `LS[ AW`X_X_XiaX`XibX_Xi!cX`XidXaXibXi AWWJ[iK[iW QWaXibXi AWWJ[iK[iW QW I[dXcXX WWWiXIL$\L1\WWIL \WX`L;\XI:L\XI:L\WWiWXX8WWWLT\DX1X:X`L\X dW UL\Enter filename:\ 6UX XWIL\ CU CUW QWl 8\`L\ISL\ P[ISL ]XI ISL] \ UL(]File = ] IUX 6U`L:]W`LC]( TXeYe( dW WWIL]L]Ģ] IUL]L]] IUWIL]L]ע] IUL]L]] IUXIL]L]] IUL]L]] IUL ^Š] IUfXeX UWIL7^L0^ Ơ^& IU`L;^VXUX dW( TYX dWXȌ WWIL^L^Ģ^ IUL^L^^ IUWIL^L^ע^ IUL^L^^ IUXIL^L^^ IUL^L^^ IUL_Š^ IUfXeX UWW UWLX_WLD_ Ơ_: IUfXhXeXgX`XLg_WIXIL_WI L_WWL`XIL_WI L_L`XL_X@XMWL_XXXL_WL_XW)WWIL_WL_WW)WW L `Wi@WL `W`L `8W WWIL2`W WWILO`WLO`WLO`L`WIL`WLv`WLv`WWL`XmWYi(W TeeW QWWL`XmWYi(W TeeW QWWWI(LaWWWILaLaL _`LaW UL6aERROR - opening a$ IUX 6U U \ CUX UWLa`Lla CULwaK:at U AWWҢ QW uX \S^XS]X9]S8]SW CUX UWILa a^XS]XSfXȌeXjXȌiXWrXqXXtX_sXrXqXtXsX VeX mmXfX*(mnX`X_XYXmeXZXmfXW 8^@ UWWI=LcWLceXfXWrXqXXtX_sXrXqXtXsX VeX mmXfX*(mnX`X_XYXmeXZXmfXW 8^iXeXjXfXLcfXjXeXiXWI-LceXfXLc8eXeXfXfXWeX mmXfX*(mnXȱYXmeXZXmfX V 8^WIBLceXfXLcfXȌeXWeX mmXfX*(mnXȱYXmeXZXmfX V 8^WIEL|dgX hXLd WLdƠd IUL|deXMgX fXMhXL|dhXfXgXeXeX mmXfX*(mnXYXmeXZXmfX V 8^WIWLdhXgXjXȌiXWIWfXȌeXeX mmXfX*(mnXYXmeXZXmfX V 8^WIDLLehXgXjXȌiXWIWfXȌeXeX mmXfX*(mnXYXmeXZXmfX V 8^WIALehXgXjXȌiXXIXfXȌeXeX mmXfX*(mnXYXmeXZXmfX V 8^WILLgS^XS]X9]S8]SWWXW"XWWILeWX dW( TXeYe( dW WLJf Filename:f@ IUX XWILf 8\ CUX UWILfLff IUW WILe^XS]XS CUWILfWW"XWXWWILf @] WLg CUX UWWWXhXgXjXiXfXȌeXjXȌiXWrXqXXtX_sXrXqXtXsX VeX mmXfX*(mnX`X_XYXmeXZXmfXW 8^WI|L9hfXlXeXkXeXi fXiiXŮjX寐LgjXfXiXeXLgeXi eXfXifXkXMeX lXMfXL9hWeX mmXfX*(mnXȱYXmeXZXmfX V 8^WI_LhfXlXeXkX8eX fXPŮ寐8eX fXLhfXȌeXLh8eX eXfXfXkXMeX lXMfXLhWeX mmXfX*(mnXȱYXmeXZXmfX V 8^WIFLfiXL^i( TXeYe( dW WLHiFile =iA IUX IUXLfi @]XWISLjWLj( TXeYe( dW WLi Enter string i IUX@ XWȌXXX@XI LiLj8XXXLiWILj WX @]XLjeXfXWrXqXXtX_sXrXqXtXsX VeX mmXfX*(mnX`X_XYXmeXZXmfXW 8^iXeXjXfXLjfXjXeXiXWI WIL$jXWILj CU CUW QWl Ldb``iaW !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV VTEX - The Text Viewing Utility Version 1.0 8/4/91 Program and Documentation by: Larry Richardson P.O. Box 472 Aurora, Co. 80010 This program is distributed as SHAREWARE. I have spent a great deal of time designing, coding, debugging, and modifying this program. Any donations I receive for my time and effort will encourage me to continue supporting this program, as well as writing new software for the Atari 8-bit computer. Thank you. I. What does it do? VTEX is a utility that allows you to view any file on the screen. If you have used DOS to view a file (copy from the file to E:), you already know how unfriendly it is. VTEX is an attempt to give the Atari 8-bit users an easier and more powerful method to view a file. II. Features VTEX can page through a file, both forward and backward. It has the ability to skip to the last page and back to the first page, or to skip in increments of ten pages. Since VTEX doesn't go through CIO to display on the screen, special characters (such as the clear screen command) will not interfere with the display. VTEX has a pseudo-word wrap (I'll explain later), and can delete the leading spaces from the left margin (good for viewing files that have been PRINTed to disk). VTEX also has string search capabilities and ASCII CR/LF handling. It has been tested under both Atari DOS 2.5 (2.0) and SpartaDOS. III. Running VTEX From any Atari type DOS, use the binary load command and load the VTEX executable file (VTEX.COM). The program will prompt for a filename. Enter the filename to view and press RETURN. After VTEX opens the file, the VTEX view screen will appear. At the bottom of the screen is the VTEX status line. It displays the version number of the program, the current page number of the file being viewed, and has an end-of-file indicator. It also indicates if word-wrap or the delete leading spaces options are active or not. From SpartaDOS, you may specify the filename to view on the command line. Simply type - VTEX filename . Under SpartaDOS, VTEX will look for the filename on the command line. If it doesn't find the filename there, it will prompt you to enter the filename (as it always does under Atari DOS). With either DOS, if VTEX encounters an error while trying to open the file, it will re-prompt you for a new filename. If you wish to exit VTEX at this prompt, press ESC. The program will then exit to DOS. IV. Commands Once VTEX is running, you have a number of commands to choose from. The commands are explained below. PAGE FORWARD Press the down arrow key (without holding down the CONTROL key). VTEX will display the next page in the file. As VTEX moves forward through a file, it notes the position of the beginning of each page so that it can move backward (or jump forward) directly to that page. PAGE BACKWARD Press the up arrow key (without holding down the CONTROL key). VTEX will display the previous page in the file. FORWARD 10 PAGES Press down arrow (without the CONTROL key). Note that because of the way Atari 8-bit DOS's handle random access files, VTEX cannot just jump to a page that it has not yet read in a sequential manner (see the explanation in PAGE FORWARD). It doesn't know at what point in the file the 10th page occurs, for example, until it has read pages 1-10. Therefore, when you press down arrow, VTEX will either: 1) Move forward 10 pages (if it has already read that far in the file) - or - 2) Move to the highest page it has read (if less than 10 pages from the current page) BACKWARD 10 PAGES Press up arrow (without the CONTROL key). VTEX will either: 1) Move backward 10 pages (if the current page being displayed is greater than 10) - or - 2) Go to the beginning of the file GO TO THE BEGINNING OF THE FILE Press B to return to the first page of the file. GO TO THE END OF THE FILE Press E to ATTEMPT to go to the end of the file. VTEX can only go directly to the end of the file if it has already read the last page. Once the last page has been read (using the down arrow to page forward), VTEX notes the position of this page so it can access it directly. If the end of the file hasn't been read yet, the message NO EOF is displayed in the status line. DISPLAY THE CURRENT FILENAME Press F to display the name of the file that is currently being viewed. Press F again to see the normal VTEX status line. WORD WRAP THE DISPLAY Press W to turn on the pseudo-word wrap. A 'W' will appear on the left side of the status line to let you know that word wrap is active. This is not a true word wrap, so long words will hang over onto the next page. VTEX will simply start looking for a space after column 31. If it finds a space, it will break the line here and wrap the text at this point. Pressing W again will turn the word wrap off. Note that because selecting word wrap (or the delete leading spaces option) will change the size of the displayed pages, VTEX resets the file to start back at page 1 when either of these options are selected. This allows the program to re-build its pointers to the beginning of the pages (which will now be in different positions). DELETE LEADING LEFT SPACES Press D to turn on the delete leading left spaces option. A 'D' will appear on the left side of the status line to let you know that this option is active. Any spaces that would have appeared on the left edge of the page are now gone. Also, the current page is reset to 1 (see the note under the word wrap option for an explanation). Press D again to turn this option off. SEARCH FOR A STRING Press S to search for a string. The program will prompt you to enter a string. Type the string you wish to search for and press RETURN. The program will start from the current page and look forward for the search string. The search will stop when the program has found your string or the end of the file has been reached. The function will not search if the current page is the end of the file. ASCII option VTEX can optionally display ASCII carriage return/line feeds or carriage returns alone as it would ATASCII carriage returns. This is useful for viewing text generated on IBM PC's, such as many text files that are on bulletin boards. Pressing A will toggle this option on or off. An 'A' will appear on the left side of the status line to let you know that the ASCII option is active. As with the word-wrap and delete leading spaces option, the file will be reset to the beginning when this option is selected. LOAD A NEW FILE Pressing L will make VTEX prompt you for a new filename to load and view. Enter the filename and press RETURN. IfXYZ[\]^_`abcdefghijklm the program encounters an error while trying to open the file, the buzzer will sound and the prompt will re-appear to allow you to try again. Pressing ESC at this prompt will exit the option and let you continue to view the current file. When a new file is loaded, VTEX operates as if it has just been loaded (i.e. you begin at the first page in the file and all pointer information must be re-created). EXIT THE PROGRAM To exit VTEX and return to DOS, press the ESC key. Note that if you choose the search option, pressing ESC while the program is prompting for the search string simply takes you out of the search function. This is also the case with the load a new file option. Pressing ESC while the program is prompting you for a filename will simply abort the command. V. SpartaDOS X Notes If you are lucky enough to own a SpartaDOS X cartridge, then this section will give you a few common sense ideas on how to best use VTEX. First, it is very easy to make VTEX behave as though it is simply another command by placing it on one of the active drives and setting the PATH to look on that drive. I use a 256K 800XL, so I have an AUTOEXEC.BAT file that does the following: 1) Set up a ramdisk as D8: 2) Copy VTEX up to the ramdisk and call it V.COM. 3) SET PATH=CAR:;D8: With the path set up to look on the ramdisk for .COM files, I can now execute VTEX from the command line without having to tell SpartaDOS what drive it is on. Since it is on the ramdisk, it loads and begins executing in a second. Also, by calling the program V.COM, all I have to type to view a file is: V filename Second (and last), SpartaDOS X now handles the NOTE and POINT calls in the same manner for both SpartaDOS and Atari DOS disks (it uses a byte offset from the beginning of the file). What does this mean to the end user??? It means if you use VTEX under the SpartaDOS X environment to view an Atari DOS formatted disk, you will notice BIG delays when paging backwards or forward. This is because SpartaDOS X must re-read your Atari DOS file from the beginning each time a POINT command is given. The solution is to copy the file to a SpartaDOS formatted disk before using VTEX to view it. I hope this is as useful to someone else as it has been for myself. Drop me a line at the address given, or leave a message on the Atari Clubs of Denver BBS at (303) 343-2956. Suggestions and donations are both welcome! Larry Richardson o>hxѠ<`0 <3H4HHLةX`)qrstuvw X;SAVE#D5:B>ENTMENU.M65X;#X;This routine invokes the Black($X;Box menu. Use X=USR(1536) from2!X;BASIC, or JSR $0601 from ML.<X;FPEIZ7dSTART=;;kill interruptsnQ>xP;;set bank #2%> X1$>Q8;;look for 3RTABLE9;;particularFX2;;bytes in the ROM;3HX1;;if we don't find:;;them, bail outX230GX3Q8 RTABLE9HX1FX2X31;;ok found em at $d8yy" 'X4,Q>RETURN 65;;push return address@Q>RETURN J5;;cause the BB pushesT5;;the Y register prior^!Q>;;to the code we jump intoh8X4!;;this is modified by the STY X4+1 instructionrX;|RETURNQ>P;;back to normal.:;;and returnX;%TABLE ==);;bytes to scan forX; STARTyz{|}~04hihiHHȱȱ`p B V8l -0 VhhlA0HHJJJJhh`hhlA0 `HhC0`Hh`Hh` d0IHiDiE B D0HI B D0` ~0L0 u0L0 0L0 u0L0 d0HI B D0`C0L0L0UVT`L1l `L!1L-1Disabled1$ 0`L81LD1Enabled 1; 0`LQ1L1M1L1j1j1M1Lv1B. 0M1L_1 1`L}1 1)L1L1Off1 0L1L1On 1 0  1)L1L1Text 1 0L1L1Graphics1 0  1)L2 1L2 51 1)L02 1L32 51 1)LP2 1LS2 51 1) Lp2 1Ls2 51 1)@L2L2 Epson 2 0L2L2 Prowriter2 0 1)L2L2 Black Box2 0L2L2 MIO 2 0`L2R1R} 0 1L13 3 0LX3 | Black Box Status |3; 0L3 3b 0L3 |Barry Gordon 8/92|3 0L3 3 0 1 1L3 Write Protect3 0 N1 1L4Printer Dump mode3 0 N1 1L34HD port/HiSpd SIO4! 0 N1 1LR4 Printer port4E 0 N1 1Lo4 RS232 port4d 0 N1 1L4Printer linefeeds4 0 N1 1L4 Printer mode4 0 N1 1L4Hard Disk I/O mode4 0 N1 z1IL41R 1``2 BBSTATUS.COM Barry Gordon 8/92How many times have you wanted to setor reset the switches on your BlackBox, but didn't feel like pulling outthe manual to look up what each onedoes? Well here's the answer to yourproblems. Simply run this program fromDOS and you can set all of the switchesto your exact preference. Press Start,Select, or Option to exit.The program displays the status of:Write Protect, Printer Dump mode,HD port/HiSpd SIO, Printer port,RS232 port, Printer linefeeds,Printer mode, and Hard Disk I/O mode.These correspond to Switches 1 & 2,followed by DIPs 2-7. KEEP IN MIND thatthe status of many switches may beoverridden in the Black Box menu.@DDRD [C BSWAP 2.1 by Dan Knauf (c) 1990S1 [CThis programis for use with SpartaDOS only!` C i$˥ i C/ȱ10;:7)D 0BDȱ10#:)ͲDD 0BDȱSDLgA [C Usage: BSWAP /xy[S] Where:RHUR [Cx and y are the drives to swapand [S] (optional) saves thecurrent directory on both driveshRLB CD D L@ [CMIO - @ ED [CBlackBox - * [CNo compatible interface on system.LBDlp SCp0BDDEHDI V0 p0BDDEHDI V' [CError saving CWD - Aborting.LBD BDD BD CD D lDDaDDDDp,BDDE   V0p,BDDE   V [CError saving CWD. [CDrives and swapped!DDRLC ICDmD` ICHDDDiDDiDDD>E>FεDhDDD>E>FεD`D` BLVhiDhiEHIHILvCHH B V`HI B V` ȱɛa0{8 LC`xѩ `X` C֙>E>F C D>ED>ED`8D` C>FLCxэDD`DDX` /D֙>E>F FHiY>Fh?F>F /D>FL?Q>;PDRIVEPGE;; STORE HIGH BYTE OF DRIVE NUMBER IN $8E+1X;#X;** COMMAND LINE INTERPRETER **X;MYLOOPQ@DOSVEC73 ICKSLSH!!w;;IF NO "N" THEN COLDSTART&(CKSLSHR> /;;TEST FOR SLASH CHARACTER0 HMYLOOP:Q@DOSVEC7;;GET PARAMETERSDR> N;;TEST FOR NO REBO540N HCHKRX:b,CHKRR> R;;TEST FOR RELOAD CONFIG FROM HDl)HCALCPN;;IF "R" THEN RELOAD HD CONFIGvX; Q>CFGPAGE PRAMPAGEQ>DPCFGCHKN;; STORE INNACURATE VALUE TO CAUSE RELOAD FROM HD 0,0Q>DUMMYPAGE PRAMPAGE!t;; WARMSTARTX; CALCPN;S> 0 DMYLOOP FMYLOOPT?;;NO BCS HERE--T?;;OK IF INVERSE  EMYLOOP GMYLOOP T?*T?4 EMYLOOP> GMYLOOPH1PINPUT1;;STORE FIRST PART OF PARTITION NUMBERR3\1Q@DOSVEC7;;GET SECOND PART (PARTITION LETTER)f-M>_;;THROW AWAY INVERSE / LOWER CASE BITSp;zS> A;;CONVERT TO RANGE 0-15 DMYLOOP, OINPUT1>3'YSAVE;; STORE Y REGISTER3Q@DOSVEC7;; GET THIRD CHARACHTER = DRIVE NUMBER?8QDRIVENO18;; STORE LOW BYTE OF DRIVE NUMBER IN $8E PDRIVEPGEX;6X;**** PLACE PARTITION DATA INTO DRIVE ASSIGN *****X;Q>MISCPAGE PRAMPAGE&S$Q>HDCODEBANK.PPBISHADOW8 PPBIBANKB ,LQ>VPPBISHADOW` PPBIBANKj ESETERRORtQV~ GSETERROR%>SET1$>MISCPAGE &RAMPAGEQV8 $>CFGPAGE &RAMPAGE/P@DRIVEPGE7;; PUT INTO CORRECT DRIVE NUMBER3)> DSET1, DSET2 SETERROR; SET2Q>DUMMYPAGE PRAMPAGEX;(@X;**** CONFIGURATION CHECKNUMBER CALCULATION AND STORAGE ****2SETCHECKSUM< Q>CFGPAGEF PRAMPAGEPQ>Z>d?n,xSETC1OBBRAMW85AO> NBBRAMW8>73)> DSETC1 &CFGCHKNPCFGCHKNQ>DUMMYPAGE PRAMPAGE %YSAVE !MYLOOPX;"X;**** DATA TABLES ****,X;6&DRIVENO ==$=6=H=Z=l=~=@X;JX;**** BUFFER AREA ****TX;^INPUT1 hYSAVE HPPOXJUIUIJTQSPKFDU^5y5^Щ)Ѡi`^5^5y;IJTQSPHSBNXBTBTTFNCMFEVTJOHUIFBDSPTTFNCMFSWFSTJPOIFIBSEXBSFQMBUGPSNVTFEXBTBO XJUILPGBMBDLPY JOUFSGBDFUXPFBHBUFIBSEESJWFTEEJUJPOBMTPGUXBSFUPPMTJODMVEFBDVTUPNJ[FEWFSTJPOPGQBSUBPTQBUDIFEUPWFSTJPODQOBQTIPU BOEBDVTUPNJ[FEWFSTJPOPGXIJDIBMMPXTNFUPHFUUPUIFNFOVCZTJNQMZUZQJOHPSIJUB JOTUSVUJPOFTVSFUPDIFDLPVUUIFPUIFSGJOFTPGUXBSFUJUMFTGSPN OUFSQSJTFTTVDIBTOBQTIPUN IJTTPGUXBSFQSPEVDUDPVMEOPUIBWFCFFOEFWFMPQFEXJUIPVUUIFVTFPGOBQTIPUIJTJTCFDBVTFOBQTIPUTBWFENBOZIVOESFETPGNBOIPVSTEVSJOHUIFDPVSTFPGEFWFMPQJOHUIF SPXTFS XPVMEOPUIBWFVOEFSUBLFOTVDIBQSPKFDUXJUIPVUOBQTIPUBUNZTJEF^Щ5Ѡi`^;^;C%3ource|#opy|$estination|#7$|#loser|3wap|""30(/.%4o|).&/.|  (ome|$ir|(ours%nterprises|0rotect|$ays0resents|5nprotect|倀|3et0ath|"aud|$etails||%xecute|# |2un|"y4om(unt|!ll||$elete||2ead||3how0ic||0lay3nd|6ersion|!2#"atch||5sr#md||5sr#md||5sr#md||5sr#md||5sr#md|RRRRRRRRRRRRXRRRRRRRRRRRXRRRRRRRRRRRRR%QRRRRRRRRRRRRRRRRRRRE|0ath2equestor|QRRRRRRRXRRRRRRRRRRRRRRRRRRRXRRRRRRRE|)nputpath |ZRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRC `ԩЩ>/Щ ?o` 0 oЎЎЎЎЎЎЎТ"/`?m????i? MC? CL)C C 9C?L)C C 9C CL)C C 9C C 9C?L)C CL)C C 9C ?L)C  CL)C  C 9C?L)C  CL)C  C 9C?L)C C 9C CL)C C 9C C 9C?L)C CL)C C 9C ?L)C CL)C C 9C?L)C CL)C C 9C?L)C C 9C CL)C C 9C C 9C?L)C CL)C C 9C ?L)C CL)C C 9C?L)C CL)C C 9C?L)C C 9C Ю?L)C# C 9C Ю?Т 9C?L)C  CL)C C 9C! Ю?L)C" Ю?L)C Ю?Т 9C" Ю?L)C$ Ю?L)C Ю?Т 9C% Ю?L)C&? Ю?L)C? Ю?Т 9C' Ю?L)C Ю?L)C?Ќ`?Ќ `?Ќ `?Ќ `?`?H?i?h`쭛? i?i ?i???̙?`COh5Dh6DhhhhhhhCLCхօϢׅͥ؅ͅmCͥ΅iΤϱː аȐѬCHˑhкдМ5DLA LWDi@L~D`LdD8 L~DɀLnDL~DL{D8 L~DL~D`@LDi LD`LD8@LDɀLDLDLDi LDLD8@LDLD`YTLrE`LDb.^)\TL)EDi R(DiS(S(D      R(DU`HH HHR(DHS(DH O`D8 R(DS(S() R(^U`HH HHR(DHS(DH O`LyEb:^5\TɀLEwEi R(xEiS(S(vE R(uE U`HH HHR(wEHS(xEH O`wE8 R(xES(S(5 R(^ U`HH HHR(wEHS(xEH O`РL(Fx1FLAF*+=-LWFLqFИ` И` И`U lX`ʎR(S( (^mR(ԩ)mS(բ,X: >LFHXlXh) D lX 쩛lX` I$LG Path needs '>', press a keyDFE"HI B V $ I$LzG WDGE"HI B V $`V X`ʎR(S( (^mR(ԩ5mS(բ,X: >LFHXXh) D X 쩛X` ?R ZULI FlXLJ} F$ lDXE =$ $JJ C$} HLdIT Hh F$JiJJiJ¢ :$ $ lZ Z sLHТ I$LHԯǽDHEHI B V $x LTILkJ [JhhhLHLH C$-LkJ=LTIɛ [JhhhLH F$LHJJ} F$` I$LI嬠ԯǽpDIEHI B V $  C$UhLHhL:J ? GXLJ} F$ DXE =$ $ C$} HLdIT Hh F$Ӣ :$ $ lZ Z sLH`` &BJKlDXE V $l8lmm)ml %BJKlDXE V $} F$JJ` lZ Z Z [`QRRRRRRRRRRRRRRRRRRE|#7$2equestor|QRRRXRRRRRRRRRRRRRRRRRRXRRRE|"ackward&orward|ZRRRRRRRRRRRRRRRRRRRRRRRRRRCLKF ZFKHHJHJHHJH O ???? o?xFFK ? ???? o? BK ? ???? o?4LK C$+ x*xɛLLLK lZ ZULGMKFLLULLʎR(S( (^mR(Щ)mS(Ѡ $LL(X: >LL D) .X>X*X.X*X詛XL[`L M(X: >LL` LLL LLL*X.X*X詛XX(L[KFLMVLLʎR(S( (^mR(Щ5mS(Ѡ $LL(X: >LL D) .X>X*X.X*X詛XL[LM(X: >LL` MLL MLL*X.X*X詛XX(L[`'N IN U N # Z w VTL>N :$ $L[NK:XDNE =$ $j8j @$ $ I$ F$ F$X$NY%NѥjiөЅҢБLNji`LNHH^;H_;H`H;H OYTHYT UhYT`LSSUhTThUTTThhhNhNhR(S( ($NmR(ҭ%NmS(he҅ҩeӅӭNNNNБNNNN mNХiѥi(ҥiӠLL`TYT[TZT\T F  C$ (b- \TYTULT= \TYTULT+[TLT*[TLThhL(ɛ U1:LcLVT[TYTLTLVTYTZT]T[T]T\T\TLU DLVT Z[TYT\TZT Z`L!U 5b$NЭ%NѭZTR(S( (R(eЅХmS(ѭYT LUi ХiѠ LUiХiѠ LULUҠԠˮ´IЈ`ЩUѩdҩWӠХiХiU`LtWUcVVcWtWkXYTLW wLWLWLWҠԠ UZTUUIUZTL1c` UZT UVIVZTL1c` ?ZTL[LhX LHLKLaLlL& L\n LnLoLq LtL'vLvvLvLx LL# Z` Z`L/YXXXXD1:*.*XYD2:*.*/Y[HH>H>HH>H Z O  I$ULY _ǝDXE(HIB VR I$ F$X X lZ ZL[ _DXE(HIB VR I$ F$X X lZ ZL[iZjZ$Nԭ%Nթ֩Oנԑ֥iԥiեi֥i׭iZ8iZjZjZjZ``iZjZԩOխ$N֭%Nנԑ֥iԥiեi֥i׭iZ8iZjZjZjZ`LZ ??YT ? ?LZ??ZT? ????????? o?`L[[c b(XlXXXULv] 5_[[ :$ $&NL` :$ $ 8` lDXE =$ $^Щ)Ѣ D[EHIB V _D[i[[i[[ХiХi .ХiХi L\^) b :$ $[t HH[H[H^H)HH C[R([S( ( _ lDXE =$ $ ^D)ER(HS(I B V䩛 F$ :$ $ -] ]`DIR.INFUL^HH HH^H)H O Z`[R([S( (R(^Щ)Ѡ JDХiХiѭR(8R(S(S(S(` n_[[ :$ $&NL` :$ $ 8` DXE =$ $^Щ5Ѣ D[EHIB V _D[i[[i[[ХiХi .ХiХi L]^5 b :$ $[ HH[H[H^H5HH C[R([S( (X*]Xɛ DXE =$ $ ^D5ER(HS(I B V䩛 F$ :$ $ ^ ^`HH HH^H5H O Z`[R([S( (R(^Щ5Ѡ JDХiХiѭR(8R(S(S(S(`L:_^Щ)Ѡ8_9_8_9_U`Ls_^Щ5Ѡq_r_q_r_V`FREE SECTORS[F [٧_ 8``,X`,X`UL`(lX>:Ƚ]lXɛ`(X>:Ƚ]Xɛ`UL``(lX>:Ƚ`lXɛ`(X>:Ƚ`Xɛ`*.*UL`^Щ)ѠɛLD_` JDL`ҠԠƮԮϮé^Щ5ѠɛL}_` JDX$ULWa _ 5_ lDXE =$ $L[ ^D)EHIB V ` ] :$ $X$`X$ _ n_ DXE =$ $L] ^D5EHIB V ` ] :$ $`&NLa I$LaON DaEHI B V $&N Z` I$LaOFFDaEHI B V $&N Z`HЩh`ZT`YT`L|bة^ԩ)խUR(S( (R(eԅԭS(eՅՠI `ة^ԩ5խ UR(S( (R(eԅԭS(eՅՠI `ULbU]T^D)D` U_T^wE5xE`^Щ)Ѡ `^Щ5Ѡ `zcUL(c _ cL[ _ cL[tcLuctcYTHUHYT WVIVhUhYT`VHYT WhVhYT`tc`D1:*.*ULcycX`ycX`ULc*oXqX.pXrX`*XX.XX`ce8p``p8<<<>~>(ʔF D  $6J^r