@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`  `1  ɐ     `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.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 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 ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.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- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} *>copywritewithoutverifywritewithverifydestinationdiskwontdestinationdiskwillbeformattedT}U}V}W}X}Y}Z}[}\}]}^}_}`}a}b}c}өȅ 2 D `Y6;Z6L061 V60W6L[3*慀; 3`+慀; 3`#+6<d} 3`9+6< 3`<* 3^壘 E3* /3! e} 3 3 `L3 L3$Y6,Z6K, 5(V67W6+ #膗V66W6f}PV67W6 5R 5 l5 5 5Ŗ؍V66W66xV67W6! SV67W6g} 5 5V67W6 5 l5 5 5ȍV67W6#+K, 5Lg4Lt߅ө  XLh},`R `@`i`R 0 S @5 5Ńi}`P`W`i慥憥懥  急`(i(`j}pppB:B8;B`;AL6k})nsertsource disk press)nsertdestination disk press#heckyourfloppy pressl}4wofloppiesconnectedyn ,oading&ormatting3am}ving/nemorecopyyn n}o}p}q}r}s}#opy8%+ybernetics /$933%% assoc writtenby4h"usta-3chweig #opyrightc  t}IUUu}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUOQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRREY|writewithoutverify|YARRRRRRv}RRRRRRRRRRRRRRRRRRRRRRRRRRRRDY|destinationdiskwont|Y|beformatted|YARRRRRRRRRRRw}RRRRRRRRRRRRRRRRRRRRRRRDY|copy|YZUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUCYQx}EY||Y|pressdesiredbutton|Y|y}|YZRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRCYKLz}{}2 (. .0.1..׍....8......E_. +- ^,1- ^,L+ ! >.=_. , }}+! a.=. ,L(-. i?0( ɛ"/00 N J- ^,L+LD(._.ق.-.- . ~}_. + , , , , ,L+@..A B V-.- . . +C. ,0C.)C.) I.A.. -L.* }..I.ж'.Q.У5.6. , .ȭ2.3. , .ȭ8.9. , .ȭ;.<. , @.pi .ȭ>.?. }, .ȑ V. .U. .T. .W..X... .L )L ) _. E+.C.)c- ^,. ^,L )0 +. ^, }. E+@ +- ^,. ^,--0BםDT.EU.H.I V.L,HXIY!-- }@ B VL,.0 B V@ B V䩛-L ) Rbr V V0 V@ V .` >Ș0˙.LU+D. }ˍ.:..! .'.!..'..` +ȱ +LHH-- .J .KB--L5, }H.H-- 0JL+@..HH---- B HIIhEhD VL,`H }H BL5,0--Lo,H.h`) . m..)m.`>`ȱA[`*ȑ͈.`L+ k,.- }-) -˙-- ^,L+Filename missing or invalid, eg.COPYM D8:*.* D1:*.* [/N]Parm following }/ invalidTarget file protected,copy skipped -- copying to -new file -ERROR(xxx)    D1:*.*d Ope }ningReadingWritingSourceTargetDirectoryData file( 6COPYMOD - Copy modified files.Requires: SPARTA DOS 3.2. : Date/Time stamped files.Purpose : Selective copy of fil}es which have changed data.Working with several files on ramdisk,it is easy to overlook copying files back to fl}oppy, unless you copy all files back. The COPYM command copies only source files with a later Date/ Time stamp to their t}argetcounterparts.Usage:COPYM sourcespec targetspec [/N]Sourcespec is any valid directorydisplay specification.Targ}etspec is a device id andoptionally subdirectory name only.This defaults to D1:Source and Target may be on the samedevic}e, but at least one would haveto be a subdirectory./N is optional, must be preceded by ablank; additionally copy new file}s.That is, files on sourcespec which donot exist on targetspec are copied inaddition to updated files.One level of subdi}rectory is allowed.The *.* may be omitted when asubdirectory is specified. The > mustbe typed.Examples.COPYM D8:*.DAT }D1: - copy modified files ending in .DAT from D8: to D1:COPYM subdirname1> subdirname2>- copy modified files between }subdirectories.COPYM D8:subdirname> D1: /N- copy modified files and new files.*** Send Feeback or problems to: Mack }Mcleod.$0L=$LLLL ؠ0 $)L$ $`Fi$Gi$i$i$i $i$$i} $%i $`($ '$L$}DCOPY.COM Sparta Version 1.03$ '$L$(1986) by Ralph E. Walden $ }T'['񩛍"% '$ /@L)B - Sparta directoryC - Copy a single fileD - Short DirectoryE - Erase a fi}leF - Format a diskL - Lock a fileM - Multiple file copyP - Print directoryQ - Quit (exit to DOS)R - Rename a fileS - }Show subdirectoriesU - Unlock a fileW - Working directoryMENUBreak key abortNon-existant deviceInvalid commandDevice} doesn't respondDevice not availableWrite protected diskDirectory not foundDrive number errorNot enough file buffersDis}k is fullSystem errorErase protectedFilename errorCannot delete directoryDisk is lockedFile not foundD1:*.*D1:*.қP}:}Put printer on-line and press a key.Press break key to abort.D1:DOS.SYSˠˠŠŠԠ}٠No files were found!Put source in drive #1 and press a key.Put destination in drive #1 and press a key.}H ,0tuhB VL(L) (`(L$( '$L(***EHKNQTWZ]`cmps}v8sLw),&Lb)1&Lb)A&Lb)U&Lb)e&Lb)|&Lb)&Lb)&Lb)&Lb)͢&Lb)&Lb)&Lb)&Lb)'Lb)'Lb)6'L}b)E'Lb) '$o) '$Lt)***L. .Le)Φνɛ $U $L)) '$L) >>> Φν`ɛ $`0 B Vآ) '$L})Command?* $ } $L( $0L $' '$#Lb(U $' '$$Lb(R $΢' '$ Lb(E $Ţ' '$!Lb(F} $آ' '$Lb(Q $`(`D_(L9/B _({L9/S_(L /P .@_(L9/W $' '$,Lb(C M}L,L)* '$L*Copy from? , e.L-+ '$L +Copy to? . $`DEIB VL(8aa( u+L) })}' $? $ $* $L(Y2y.` $a(#D(( '$* $L(p0DEJB VL(80}Ӎx18yҍt8ur0 VL(`0a(ga(#`DaK(1( '$* $L(`: `DEJB V}`DEI B V䤿 (`xhyi bҍd8e V (L,ɈLG+L. . $DEIB VL}(D: 1`, '$L-Multiple copy from? ,- '$L-Device to?@DEIB VL(@}Q@DA: A:B8Aa((PDEJB VL(ʩ҅ȩ0ɢP`DEIB V0a`}0L.:`  .Ȣ ` Ƞ'L-iȐL- . z0 ' '$L)҅ȩ0ɠ}ș`@` G+iȐL)ɛ * ?``BHILV .f' '$* $L(@dD'EJ}B V0`DEI B V`i0 B VL.`ԩթ/ '$L /Error #L$ $_(`GHFH` $' '$ ['}0#C/ '$LQ/٠T' ,0DEJB VL(0 .Hɛ /<_()U+ $թ}* $L(L/ /L/Uа /{ .L) q0- $ q0- $ q0 $ $ $ $ 8 q0: $} H q0h q0 S0 '$L\0 A.M.`g0 '$Lp0 P.M.`ԩL$҅©0iĥiL0iiĐť} Ȑ`°ӠªđŠ& Documentation for DCOPY.COMDCOPY.COM is a handy mini-menu fordealing with SpartaDOS directoriesand copying files.Loa}d DCOPY.COM from the commandline thusly: D1:DCOPYBy following the prompts, shortand long directories are viewa}ble,along with a printout of saiddirectories. Several COPY fileoptions are available, along withthe usual file protectio}n commands. $8L=$LLLL ؠ0 $)L$ $`Fi$Gi$i$i$i $i$$i} $%i $( ''񩛍$ '$ 1@L^*}DCOPY.COM Sparta Version 1.05(1987) }by Ralph E. WaldenA - Append fileB - Sparta directoryC - Copy single fileD - Short DirectoryE - Erase file(s)F - Forma}t disk - Atari 2.0 formatL - Lock file(s)M - Multiple file copyP - Print directoryQ - Quit (exit to DOS)R - Rename a fil}eS - Show subdirectoriesT - Set time/dateU - Unlock file(s)V - View contents of .ARC fileW - Working directoryZ - Sort }directoryBreak key abortNon-existant deviceInvalid commandDevice doesn't respondDevice not availableWrite protected d}iskDirectory not foundDrive number errorNot enough file buffersDisk is fullSystem errorErase protectedFilename errorC}annot delete directoryDisk is lockedFile not found>.ARCD1:*.*FREED1:*.қP:}Put printer on-line and }press a key.Press break key to abort.D1:DOS.SYSˠˠŠŠԠ٠No files w}ere found!Put source in drive #1 and press a key.Put destination in drive #1 and press a key.H @.0tuhB }VL(L^* ((L$) '$L)***EDGJMPSVY\_ilor4oL)L)w&L})&L)&L)&L)¢&L)ע&L)&L)'L)'L)+'L)8'L)E'L)U'L)d'L)|'L)'L) '$Т) '$L)***L}0 0L)Φνɛ $U $L) * '$L* >>> Φν`ɛ $`/* '$LU*堠堠䠠䠛}`(0 B Vw* '$L*Command?* $ } $L( $0? $ '$ 1Lm*A(L2L $ ( '$#L(U} $( '$$L(R $1( '$ L(E $(( '$!L(F $;( '$L(Q $(`D(L0B ({L}0S(L0P 30@(L0W $E( '$,L(ZL;6TL%3VL4C ML.L^*+ '$L+Copy from? @. 0L.}+ '$L+Copy to? h0 $`DEIB VL(8a( D,L^* )' $? $ $* $L(Y2y.` }$(#D(k( '$* $L(p0DEJB VL(80ʍx1@yɍt@ur0 VL}(`0(L .(#`Da(( '$* $L(`0L .(= `DEJB V0L .`DEI B V䤿} (` DEJB V0hideb V B V䭀c \( `DE JB V %*L|4- '$L-}Appending... (LMN%B VL . `DE JB VL!-xhyi bɍd@e V (L=.ɈL},L0 h0 $DEIB VL(D: 1`. '$L.Multiple copy from? @.. '$L.De}vice to?@DEIB VL(@ɛQ@DA: A:B8A((PDEJB V}L(ʩɅȩ8ɢP`DEIB V0a`0L/:`  .Ȣ ` Ƞ (LF/}iȐLF/ 0 T2 U( '$L^*Ʌȩ8ɠș`@` ,iȐL^*ɛ * ?``BHI}LV 0ɢ' '$* $L(@ǝD'EJB V0`DEI B V`i0 B VL0`ԩթ0 '$L0Error #}L$ $(`GHFH` $E( '$ '0#0 '$L0٠' @.0DEJB VL(}0 #0lɛ, ' '$LZ10 #0 #0 #0 #0 0<()U+ $* $L(L*1 0Lg1UЌ 0}{ 0L^*Ӆ) Ӡ K2- $ K2- $ K2 $ $ $ $ 8 K2: $ H K2h K2 }-2 '$L62 A.M.`A2 '$LJ2 P.M.`ԩL$Ʌ©8iĥiL2iiĐťɐ Ȑ`°Ӡª}Š𨩶2 '$L2Append from? @. 0L(ߢ2 '$L2Append to? h0 $`DEIB VL(8a}( D,L^*/3 '$L@3ŠDEIB V䭀ɛ9 3 ȑ ȑ Ӆ) ӥL}*3 '$L3ŠDEIB V䭀ɛL* 3 Ln3򩀅 ٤ԙȄ`B}U6&4 '$L:4נàŠ @. %*.ɛʠ' DEJB VL(hideb} V䭀24 '$L4à(L- B VLm* $L4 $ $ 5}ԭ 6 5ԭ 6>5 '$LF5StoredL5W5 '$L_5PackedL5p5 '$Lz5SqueezedL55 '$L5Cru}nchedL55 '$L5Unkown $ imLmMmN%B VL|4ԩ ٢4 ڢԕ` f} ة0 $) $急 $`E6 '$LY6Ԡ٠' @.*tu,r0 VL(}'0DEJB VL(xyɍt8ur0 VxiɅȭyi8ɭxy0 B VɅ8) }8@L7) iɐȐũɅ©8iĥiLd7iiĐťɐ*Ȱ$ }ˠªđŠυ8} $ɐLF8ȐLF8UT0 i@󢀆L7)L7 $恥 ש憥}8i ') $8 '$L&8* $} $iL7RUTX8 '$Ll8* $H $hY}H0DEJB VL(xyɍt8u r0 V B VL1L^*MDCOPYSP.COM -- a public domain program by Ralph Walden.DCOPYSP is similar to the DCOPY.COM that has been available for seve }ralyears. The original DCOPY.COM is the predecessor of the well-known DCOPYfor the ST. This version of DCOPY is for use w }ith Sparta DOS ONLY. Itcontains several new features that only work with Sparta DOS, such as theability to view the conten }ts of an ARC file, the ability to sort the filesin a directory, the ability to set Sparta's date and time, etc.DCOPYSP is }a menu-driven program. You invoke a command by pressing theletter to the left of the command displayed on your screen. The } menu ofcommands is displayed when you first run DCOPYSP. You may display thismenu again at any time by pressing the BREAK } key.DCOPYSP provides some shortcuts to cut down on the amount of typing itnormally takes to copy, lock, delete files, etc }. When you enter a command,DCOPYSP will display the last filename you used, and position the cursor onthe drive letter. I }f the filename is correct, you only need to pressRETURN to have the command execute. If the drive is correct, but you need }to change the filename, press the TAB key, and the cursor will be moved tothe first character of the filename.The followin }g is a description of the available commands:A - Append a file. Use this command to append one file onto the end of an }other, or merge two .ARC files into one. You are prompted for both filenames. If you use the same drive number for each } file, then DCOPYSP will pause between each file to allow you to change disks. By using this command, you can append } one file from one disk to the end of a file on another disk using only one disk drive. SPECIAL CASE: if the file you ar }e appending TO is a valid .ARC file, then DCOPYSP first lists the filenames in that .ARC file just as if you had requ }ested the View ARC command, and then it appends the second file onto the end of the first file in such a manner that }it will be a valid .ARC file. WARNING: this ONLY works on files formatted with Sparta DOS. If you attempt to use this c }ommand on an Atari formatted disk, it destroys the file you are appending to!B - Sparta format directory. Use this com }mand when you want to list files in the full Sparta format including byte size, date and time. If you want the short }ened Atari-style directory you use the command instead, which has the advantage of listing the files in two columns. } When you enter the command, the drive you ran DCOPYSP from is displayed followed by "*.*". A TAB stop will be se }t on the first and second '*' so that you can easily change either the primary name or the extension.C - Copy a single }file. Use this command to copy a single file. You are asked for the name of the source file. If the name you enter con }tains any wildcards (? or *) then DCOPYSP assumes a multiple file copy is needed and execution will proceed as if you } had entered the command (see instructions for the command--it's different then you might expect). If there a }re no wild cards in the source filename then you are asked for the destination filename. If you have entered different d }isk drive numbers, or one of the files is not a disk drive (cassette, printer, etc.) then copying begins immediately. } If the disk drive numbers are the same, then you are prompted as to when to insert the source and destination disks }.D - Directory. Use this command two get a two-column directory. You may pause the listing by pressing any key. Pres }s a key again to continue with the listing, or press the BREAK key to abort the listing. If you want an alphabetized } listing of all files on a Sparta DOS formatted disk, use the command instead.E - Erase a file. Use this command t }o erase a file or files.F - Format a disk. Use this command to format a disk in Atari format (not Sparta DOS format). } This isn't very useful, really, but comes in handy once in a rare while...L - Lock a file. Use this command to lock a } file or files. You cannot write to or erase a file that has been locked.M - Multiple file copy. Use this command to !}copy multiple files. This command has two advantages and one disadvantage to Sparta's COPY command. DCOPYSP copies a!}ll files in alphabetical order, and it allows you the option of being asked before each filename as to whether you want i!}t copied. The disadvantage is that you can NOT enter a subdirectory name in either the source or the destination fil!}espec. When DCOPYSP copies files, the destination file will have the CURRENT time/date stamp, not the time/date it w!}as created. This was deliberate--it means if you want to preserve the time/date stamp, you can use Sparta's COPY command!}, and if you want to change the time/date stamp, you can use DCOPYSP. This is especially handy if the current time/d!}ate is screwed up since DCOPYSP has a command for setting the time/date which you can invoke before you copy the file!}s. The command first asks you for the filespec of the file(s) to copy, and then the device to copy the files to. Fo!}r example, if you used D2: for the device, this command copies all the requested files to drive number 2. You may o! }ptionally include a 'Q' after the colon of the device, which will result in your being asked as to whether to copy each f! }ile. All files matching the first filespec except DOS.SYS are copied (unless the Q option was invoked). You cannot ! }copy DOS.SYS - you must first rename it to something else, copy it, then rename it again to DOS.SYS--that's in case y! }ou run DCOPYSP under Atari DOS--which is a very bad idea! If the drive numbers are different, then copying will proceed ! }immediately. If the drive numbers are the same, then you are prompted to insert source and destination disks as need!}ed. The files being copied will be displayed on the screen. If you have used the Q option, then the filenames will be !} displayed followed by a question mark. Press the Y key to do the copy, or any other key to ignore copying the display!}ed files. Press the BREAK key to suspend file copying. Note: if you invoked the command (single file copy) and !}the filespec you gave contained a wild card (? or *) then it will be treated just as if you had invoked the command.!}P - Print directory. Use this command to print a directory of files. This command first asks you to place your printer!} on-line. It then asks you for a filespec. All filenames matching that filespec will be listed to the printer in a !}single column, and to the screen in a double column. Like the command, you may pause the listing by pressing any key!}, and then continue by pressing another key, or stop by pressing the BREAK key.Q - Quit. Use this command to return to!} DOS.R - Rename a file. Use this command to rename files. Enter the drive and filespec followed by a space and the fi!}lespec to rename it to. All filenames matching the first filespec will be renamed to the second filespec.S - show !}subdirectories. Use this command to show what subdirectories are on your disk along with any files that do not have exte!}nsions.T - time/date. Use this command to set Sparta's time and date.U - Unlock a file. Use this command to unlock a fi!}le or files.V - view .ARC file. Use this command to see the filenames, their sizes (compressed and normal) and the sto!}rage method of .ARC files. It ONLY works on Sparta DOS formatted disks. You do not need to enter the .ARC extension!}, as this is added automatically.W - change working directory. Use this command to change the current directory you ar!}e logged into.Z - Sort Sparta DOS directory. Use this command command to display all the files in the current director!}y in alphabetical order. After they are displayed on the screen, you have the option of writing them to the director!}y so that the alphabetization is permanent. ,04,˩0̩4Hͱ8E͑JH`ztĺ|rljd2@JDuqeYYUeiYUUeiYUUieb\Rf`ZT%%!}!¼  h VP82,̈~vpjd%!RL bf)ڏHB<ܘ~ezt%!ľД΂|vp.XRLaب~e%!+%"} BfmoXoOfOO3/hb\f~eႱhfXVXf]xrl`H~e,"*$"ڦU|Ѷ̱~D<%#}Ѫ񞘒\Rs))%)%%)%%!B<60*$  沬ΎY%!RLF@:4.(" %$}ԥ¼r0*$SYe%!b\VPJD>8&L0 F.Ye %!rlf`¼q ,V>Ye& |v2%%} !*fNe60*$ᒌ1⎩ʎi2,& OpjdؙF@:4ᢜ,rlf`&TNHB<60*$ -1虥VPJDᲬQUJ F@:4.(%&}).f`ZT%!q0*mp=phb\VPJD>ЏvmpgYvpjd%!RLF@o0.%.f`ZTNHieUYiNezt%!b\ieeYY͂(pjd^XLm%'}qe%!-¼Kztnh ľe$   eO~:1feDܵO5H  %(}C  OO DlqfWzt|vp~xrP6RDRLF0{umo˅rudgyzoozztnhB۲Jz:0b4X䥒-0:1%)}#jҧ1{"[MI:1ޕlUmNUp-hII sP, IuCLv$2/RõQپ`鿰8}1;1%?Q5>QoM5P%3}QImq 5Ǯ)LX$ڌٷu$7$0:=:a)\l297;NWtTZǒh-RRXŲ|,t*9G|Eџ(1NU%4}hURx\P5%l3YHRSTcqkv"H1-U1@I8VAd:pU`Re&ƺVũiTնż@9틉;,I@ 5%5}D%=U=Q[V=UDᠣp=ѩpdh@2` 0}( $(,048Z$W;c8WDhZxax),+8d|-(ȕT$YĤeйa,(fq0#2 :%?}HKZOx  &-F \HUTf89-We8dp$06$9ЭHͪ)& 4ȧQM'X1M4P$4h $åLç*%@}Τ),+`dcx{хe 13MP LS,laYf 晩*#pl8SK ijk5tl) I+1%T1\mUq Ԭ-+%A}A8;MSbc1s-H1-9Bp{)i jA1Ix-P-Qd:@ECcRkɛ-)lçLBV<%R}-@m\L1~ $[@A4*H[]l Pě-Ϩ ېX}ۛpihvozya`pu}sH %S} Peniqu##RrtoĉYEor(9$}vlinmmyB<`ۘonkorďГrekxuĊ[riminux@zPh$%T}fuly, .R* F $ ,$%؉)M#l$(c @[Ic5$U$8p  I#)SM#_S_c_k_[_cQ%Y}0覑'HTB֩C\ݒ[hkݭ{մ!D)$YpVRQ]5aI]Y^aHMPV=`$B85b5 56*RZ^$*;cF;WZ   HH)H }p h  hyhy D L> L JJ 5}   ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"!5} GFE@F (!L }EE !E^ ^ E E75}EȩEdE/EȩE  D } .L }  ;F d  ;?F7F?5} ( .   Z D LL d } . D  L    p  E` , d5})  D L) 0BM݊L݉} ML  N݆ L NL5}ML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTOR5}S G) *Gȩ GȽG GȌ*jj >G}Ǡ C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK},.CO5}MLu L1 L ;LHL1  T`  `8  ɐ     `TU  }'5} L ? .  t`-GBJ ~DEHI B V0dV!}5}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh5}"}ǢDEL8HI4 0 HI,0 0  9 .G V5}LO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DE5}HI$}G V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BD5}EHI%}% VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY5} ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ 5}ઍ  -'}ǔLLu ÝDEHILV 9 .l 9 .l  `` s5}$B BH(}rI|DE V BLV nB,DE JLV B V BLVDEIʩ Bꭝ5}Lu } 3E:}DISK OPERATING SYSTEM II VERSIONˠMODIFIED 1987 S.A.G.HOLLANDA. DISK DIRECTORY I. F5}ORMAT DISKB. RUN CARTRIDG*}"E J. DUPLICATE DISKC. COPY FILE) hK. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAM5}E FILEm M. RUN AT ADDRES+}SF. LOCK FILE 5N. CREATE MEM.SAVG. UNLOCK FILE: pO. DUPLICATE FILEH. WRITE DOS FILES P. FOR5}MAT SINGLEuL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, typ5}e Y Λx -}ǍDEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1il5}d! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0J5}B 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN5} !B 1L!E# 1 !BD0}ǝED:}:1BJ|DE 1DEBHI 5}1 h0ߢ 0.1}ǝ  0?詛 1 y0YЛ 1 ;#L" ;#L!5} BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}WCOPY--FROM, TO?OPTION NOT ALLOWED BANKSW ATW 013 COPYING---D2:5}BANKSW.ATW[l# 0|D .L/%#3}##JB|DE 1BHID#E 1#0:5} B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙5}## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% 5}#D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}GLLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 55}) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}ǿ0#B 1L!WHAT F5}ILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACA6}UTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.6}* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}ǞC, t*6}  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}ǫΞ,6} 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}6}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURN6}E}Ǎ`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% 6}<.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L. 6} G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- 6}B V,#PH}G,^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm 6 }ݭI}I}`8}``|* ? ɛ,`|:-)| / 1L!`D6 }ESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π6 } 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIH6 }IDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V`6 } S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 6},;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 16},ɛ`轤{NAMEO}: TOO LONG B VL!` L1I H1EΝDL1?@D|mDi6}E` V0`8d/8 i:222 1 LP}!ERROR- 164ɛ+,' 20*.. өr2 6}1``2TOO MANY DIGITSINVALID HEXAQ}rDECIMAL PARAMETER800 0 8 00`,0'D800 H6},ɛh`2L1NEED D1 THRU D8wuR}r ECIMAL PARAMETER800 0 8 00`,0'D800 6}H,ɛh`2L1NEED D1 THRU D8wu00} 0 Setting up ATARI 130XE Ram Disk55A N}Tw6} Setting up ATARI 256Kb Ram Disk| T} DDӅ)ӈDD̍DD)DDХ̍ӥ 6}` O2L1 BD0EGHI VU}01    BםD1EJK V B۝D1EJK V6}BDHPEI V` B V V}ǝBD1EJK V BDPEHI V B V BD1E6}JK V B V8?`D8:D1:DUP.SYSD8:DW}UP.SYSD8:MEM.1m2SAV̅Ω˅͠H)xHIhͭIhXئ6}׆ǭIӎ` BGD0EGX}HI V`0m4 5L̺8!LPL`RL6}SLҠEL#X;T`Ӡho6%}#X;xΠ f} "#X;*̠18,#X;T[6#X;w@#X; g}_J#X;ˠ̯Š٠6&}T#X;Π٠Ӡcj^#X;} h} h#X;,3r#X;OV|#X;[m͠Ġry#X;} i}6'}Ġ#X;'4̠;B#X;^e#X;} j} #X;'Q#X;ǠɠӠ#X;Xc6(}Ӡmt#X;y k} Ġ#X;6<#X;ZX;X;X;(X; OPTIONS: Drive l}C6 numbers and density6)}X; if DENSITY=DOUBLE!X;< then DRIVEA=DRIVEB !!!&X;0X;:X;D DRIVEAN DRIVEBX m}mDENSITYSINGLEb6*}X;lX;vX;ӮӺX;X;SINGLE;;Sector lengths DOUBLE(DDEVIC;;SIO Device n}Control Block 6+}DUNITDCOMNDDSTATSDBUFLODBYTLO DAUX1  ICHID@ ICDNOA o}ICCOMB  6,}ICSTAC ICBALD  ICBAHE* ICPTLF4 ICPTHG> ICBLLHH ICBLHIR ICAX1J\ ICAX2K p}f CIO6-}VVp DOSINI z!CHKSUM1;;Temporary checksum1BUFRLO2;;Temporary pointer to user's buffer)ZTEMP4;;Tem q}pora6.}ry miscellaneous use)ZTEM28;;Temporary miscellaneous use"STACKP;;Stack pointer save1PORTB;;PIA port B- r}6/}memory control register"PORTA;;PIA port A register*PACTL;;PIA port A control register NMIENX;X;60} s}lX; Check for 64,128 or 256 KX;'X; Load-time code - Copy OS into RAMX;0X;$X;.TXT130 A}r A8) A61}S t}(etting up ATARI 130XE Ram DiskA=B A--9 [AL AAVTXT256 A}a A`) ASetting up ATARI 2 u}5662}Kb Ram DiskA=j A( At AA~X;X; IF $D0=1 THEN 130XEX;X; IF $D0=2 THEN 256Kb XL v}X;GO63}%>;;START TEST'DD QPORTBPM> PPORTB1'DD Q PPORTB)DD( FNOXE2Q<M>F w} PP64}ORTBP)DDZ HXL256d XE130Q>nPx HNOXE XL256Q>PЖ NOXEQ̠ PPORTBQдR>FXER>F x}ǂ65}XL: XL PTEXT!COS XE$>Q>  PICCOM9Q>TXT130" PICBAL9,Q>TXT1306 PICBAH9@Q>GJ PICBL 66}y}L9TQ>^ PICBLH9h CIOVrQ>|PP Q L>P  $> Q> PICCOM9Q>DRVNUM P67}IC z}BAL9Q>DRVNUM PICBAH9Q> PICAX19 PICAX29 CIOV&$> 0Q>: PICCOM9D Q>DUP1N PICBAL968}XQ>D {}UP1b PICBAH9lQ>v PICAX19Q> PICAX29 CIOVQ> PICCOM9Q> PICBAL9 PICBLL9Q69}>P PICB |}AH9 PICBLH9 CIOVINXT)> FNXT:  NXTQ> * PICCOM94 CIOV>Q>H$> R PICCOM9\ Q6:}>DUP8f PI }}CBAL9pQ>DUP8z PICBAH9Q> PICAX19Q> PICAX29 CIOVQ>  PICCOM9Q> PI6;}CBAL9Q>P PIC ~}GBAH9Q> PICBLL9 Q> PICBLH9 CIOV$ Q> . PICCOM98 CIOVB Q>L $> V PICCOM9`6<} Q>MEM8j PICBAL9 }t Q>MEM8~ PICBAH9 Q> PICAX19 Q> PICAX29 CIOV Q> PICCOM9 CIO6=}V Q> 8 P? : DRVNUM } AD8:A= DUP1 AD1:DUP.SYSA= DUP8 AD8:DUP.SYSA= MEM8 AD8:MEM.SAVA= COS6>}Q>;;Zero page pointer( P2 X };< PF Q>P PZ Pd %>n LOOPx "QNMIEN;;Disable NMI interrupts 5;;Save NM6?}IEN M> PNMIEN =;;Disable IRQ }Ǫ Q@7;;Copy OS 5;;save value QPORTB N>;;Disable OS Rom PPORTB 7 P6@}@7 QPORTB N>;;Enable OS Rom P }PORTB 7 PNMIEN;;Restore NMIEN" .;;Enable IRQ, 36 HLOOP@ $J (>;;Sk6A}ip pages $CC to D7T HNXPG^ $>h &r N }XPG| #Ά 2 &̚ HLOOP QPORTB N>;;Enable RAM OS X; PPORTB6B} &PORTA;;PA7 = 0 : X; PTEXT $> Q> }  PICCOM9 Q>TXT256 PICBAL9& Q>TXT2560 PICBAH9: Q>G6C}D PICBLL9N Q>X PICBLH9b CIOVl :v   }QGO X; X; X; Ramdisk controller code "X;ˠŠ6D}Ӡ̯Š "X;U̠ҮԠ  X;  }X; HOOK ,;;Hook into all SIO calls QDDEVIC ODUNIT %6E}>;;Drive A offset %R>1DRIVEA;;Right drive number ? F }HOOKED %>;;DRIVEB offset* R>1DRIVEB4 FHOOKED> OL6F}DVEC H ! ;;If not go to SIOR HOOKED\ @;;If so interceptf }&STACKP;;Save stack pointerp 'ZTEM2;;Store offsetz 6G}QDCOMND;;Examine command R> !;;Format ? HNOFMT !FORMAT NO }FMT R> P;;Put sector ? HNOPUT !PUTSEC NOP6H}UT R> R;;Read sector ? HNOSET !GETSEC NOSET R> S;;Read statu }s ? HNOSTT !STATUS NOSTT$R> W;;Write 6I}sector ?. HNAKRET8 !PUTSECBX;LBX; Returns-Restore stack pointer,report } error status and returnVX;` NAKRETj $6J}STACKPtB~$%>;;NAK error for improper cmnd 'DSTATSQ> PPAFLG !PA }OUT ERRRET $STACKPB%>;;Bad6K} sector erro 'DSTATSQ> PPAFLG !PAOUT SUCRET  $STACKPB%>;;N }o error( 'DSTATS2Q>< PPAFLGF6L} !PAOUTPX;Z-X; Subroutine - Set pointer to user bufferdX;n SETBUFx'QDBUFLO;;Mo }ve from DCB to zero page PBUF6M}RLOQDBUFLOPBUFRLO:X;5X; Subroutine - Prepare to acces sector of ramdisk }GX; SETSEC Q>DENSITY6N}PSECLEN;;Set sector lengthQDAUX1;;Check sector # HNDTZ QDAUX1FOUTRS;;Sector }0 invalidR> EI6O}NRNS"*Q>;;Sectors 1-3 always 128 bytes long, PSECLEN6 HINRNS@ OUTRSJ"!NAKRET;;Sector # out o }f rangeTNDTZ^6P}R>;;Check for sectorh DINRNSr HOUTRS|Q>І RDAUX1 DOUTRS INRNSQDAUX1;;Sector # valid }PZTEMP QDA6Q}UX1 TZTEMP;U?;;Divide # by 64-Result is bank #, remainder is page # TZTEMPU?O>;;Bank #> } QZTEMP6R}V?V?O>@;;Remainder+64&X;0+X; Subroutine- Prepaire to switch banks;:X; X is bank, A is page #DX;N S }ETBNKX6S}PZTEM2;;Save page #bQ>;;PA7 outputl PPAFLGv PAOUT QPORTBPPBN;;Normal bankM>PPB;;Bank 0 }Q6T}>PPAA;;Bank# in accu,R> ;;Bank# <12 ?DSBNKA;;Yes,jumpQ>;;Banks 12 to 15PPA;;PA7 = 1 SBNKA 6U}}A;;Bank# in accu ,R>;;Bank# <8 ? DSBNKB;;Yes, jump*Q>@;;Banks 8 to 154LPB>PPB;;PB4 & PB6= 1H SBNKBR6V}A; };Bank# in accu\M>;;Only bits 0 and 1fT?pT?;;Shift 2 pos leftzLPBPPB;;Bank X in PBQ;;NMI vector P6W}ZTEMP }ǢQ PZTEMP%>Q>@;;RTI opcode=;;Disable IRQ3P@ZTEMP7;;Place RTI in NMI routine-disables NMI6X}:;;Leave } 0 in Y, bank # in XX;X; Format routineX; FORMAT$>;;Clear banks 4 to F CLOOP1$Q>@. SE6Y}TBNK;;Prepare }for switch8QPAB PPORTALQPBVPPORTB;;Switch bank in`Cj CLOOP2t P@ZTEM27;;Zero entire sector~6Z}3 )SECLEN H }džCLOOP2?#ZTEM2;;Next page ICLOOP2QPBNPPORTB;;Switch bank outQ> PPORTAQ6[}NMIP@ZTEMP7;;Enabl }e interrupts.2;;Next bank (>;;Done ? DCLOOP1 SETBUF(5Q>;;Return a sector with 26\} FF's and the rest 0's2% }>< FLOOPF)>P HNOTFFZQ>d NOTFFn P@BUFRLO7x3 )SECLEN HFLOOP!SUCRET;6]};DoneX;X; Write sector r }outineX; PUTSEC SETBUFQ>PCHKSUM;;Zero checksum$ SETSEC;;Point to ramd6^}isk sector PLOOP*Q@BUFRLO7;; }Get byte from user's buffer$PA &PORTA$PB"&PORTB;;Switch bank,#P@ZTEM27;6_};Put byte into ramdisk6$PBN@&POR }TB;;Normal bankJ$>T &PORTA^,h!OCHKSUM;;Add byte to checksumr PCHKSUM|6`}3!)SECLEN;;Proper sector lenhth HPLO }GOP$$>;;Bank F holds checksum table QDAUX1T? QDAUX1U?(L>`;6a};Sector # indexes checksum table SETBNK }QDAUX1M>? QCHKSUM$PA &PORTA$PB&&PORTB;;Switch b6b}ank0P@ZTEM27;;Store checksum:$PBND&PORTB;;N }ormal bankN$>X &PORTAb%>lQNMIvP@ZTEMP7;;Enable interr6c}upts.!SUCRET;;DoneX;X; Read sector routine }X; GETSEC SETBUFQ>PCHKSUM;;Zero checksum SE6d}TSEC GLOOP$PA &PORTA$PB &PORTB;;Switch bank }#Q@ZTEM27;;Get byte from ramdisk $PBN*&PORTB;;Normal6e} bank4$>> &PORTAH*P@BUFRLO7;;Put byte into user's buffer }R,\OCHKSUM;;Add to checksumf PCHKSUMp3z!)SECLE6f}N;;Proper sector length HGLOOP"$>;;Bank F for checksum table } QDAUX1T? QDAUX1U?L>` SETBNK 6g}QDAUX1M>?$PA &PORTA$PB&PORTB;;Switch bank#Q@Z }TEM27;;Set original checksum$$PBN.&PORTB;;N6h}ormal bank8$>B &PORTAL>V%>`QNMIjP@ZTEMP7;;Enable interrupt }st.~(CHKSUM;;Compare checksums FSCSOK6i}$!ERRRET;;If different bad sector SCSOK!SUCRET;;If same, doneX;X }; Read status routineX; STATUS 6j}SETBUF%>;;Returns 4 bytesQ>;;All 0's SLOOP P@BUFRLO7 1 ISLOOP } R>DENSITY( HSDONE2Q> <3F0P@6k}BUFRLO7;;First byte tells density of driveP SDONEZ!SUCRET;;DonedX;nX;Subroutin }e for PA7 outputxX; PAOUT6l}X; QPACTLN> PPACTL QPAFLG PPORTA QPACTLN> PPACTLQ> PPORT }A:X;X; Variable stor6m}age areaX;"-PAFLG ;;Flag PORTA,$80=output,0=input,6PA ;;value of mem.contr.reg. f }or selected bank66PB 6n};;Value of mem.contr.reg. for selected bank@5PBN ;;Value of mem.contr.reg. for normal bankJ }=NMI ;;First opc6o}ode in NMI routine-Used to restore NMIT)SECLEN ;;Length of current sector^X;h"X; RESET initiali }sation routiner6p}X;|;;Hidden (hopefully !!!)X; NEWINI"PORTB;;Enable RAM OSQ> PPAFLG PAOUTOLDI }NI # ;6q};Call original DOSINI routine MODINI(Q>NEWINI;;Set hook for next RESET PDOSINIQ>NEWINIPD }OSINI6r}:X;$X; Load-time code-Install ramdisk&X;0B:DODQNR>X FCONTb!ENDlCONTv!QZ;;Save or }Gigina6s}l SIO vector POLDVECQ[POLDVEC%Q>HOOK;;Install new SIO vectorPZQ>HOOKP[)Q;;Sa }6t}ve first opcode in NMI routinePQP%>Q@7PNMI (QDOSINI;;Save original dosini vector POLDINI 6u} }QDOSINI*POLDINI4 MODINI;;Install new one>Q HL> ;;DRIVE #3&4RP \1 ;;Reinitialize FMS to show6v} ramd }isk presentf!BEG;;DonepX;zX;!X;FORMAT CODE - Format RamdiskX;C AD4:A= ;B AD3:A= ;BX;6w}BEG }$> ;;IOCB # 2Q>;;FORMAT D4: PICCOM9Q> PICBAL9Q>C PICBAH9 CIOV IDRIV3$:.X;8 6x}DRIV3BQ>L } PICCOM9VQ>` PICBAL9jQ>Ct PICBAH9~ CIOV IDUPOPN:;;Error-returnX;@CX;X;DU6y}PLICATE DUP TO RA }MDISKX; AD1:DUP.SYSA= ;BX; DUPOPNX;$> ;;IOCB # 2Q>;;OPEN D1:DUP.SYS PICCOM96z};;FOR READQ>@ P }DžICBAL9(Q>C2 PICBAH9<Q>F PICAX19PQ>Z PICAX29d CIOVn IDUPRDx:;;Error-return6{}X;X;X;READ D1:DUP. }SYSX; DUPRDX;Q>;;GET BINARY RECORD PICCOM9Q>PICBAL9;;BUFFER AT $50006|}Q>P PICBAH9Q>PI }CBLL9;;$220B BYTES (8715)Q># PICBLH9" CIOV, IDUPCL16)>;;END OF FILE ?@ FDU6}}PCL1J:;;Error-returnTX;^X;h }X;CLOSE # 2rX;| DUPCL1X;Q> ;;CLOSE D1:DUP.SYS PICCOM9 CIOV IDUPOP6~}N1:;;Error-returnX;X;WRITE D }4:DUP.SYSX;X;CX; AD4:DUP.SYSA= ;B X; DUPOPN1 X;& $> ;;I6}OCB # 20 Q>;;OPEN D4:DUP.: PICCOM9;; }FOR WRITED Q>N PICBAL9X Q>Cb PICBAH9l Q>v PICAX19 Q> PICAX26}9 CIOV IDUPWRT :;;Error-return X; } X; X;WRITE D4:DUP.SYS X; DUPWRT X; Q> ;;PUT BINARY RECORD P6}ICCOM9!Q> !PICBAL9;;BUFFER AT $5000!Q>P }! PICBAH9*!Q>4!PICBLL9;;$1411 BYTES>!Q>H! PICBLH9R! CIOV\! I6}DUPCL2f!:;;Error-returnp!X;z!X;!X;CLOSE # 2!X };! DUPCL2!X;!Q> ;;CLOSE D4:DUP.SYS! PICCOM9! CIOV!IFI6}N!:;;Error-return!X;!X;!X;WRITE MEM.SAV TO DRIVE } #4!X;"FIN"$> "Q>$" PICCOM9." Q>MEM48" PICBAL96}B"Q>MEM4L" PICBAH9V"Q>`" PICAX19j"Q>t" PICAX29 }E~" CIOV"Q> ;;CLOSE MEM.SAV"$> " PICCOM9" C6}IOV"X;"X;"X;"Q> 4"P?"ENDQ> ;;CLEAN UP THE"$>;;SCRE }EN" PICCOM9# Q>CLS #PICBAL9;;THANK-YOU# Q6}>CLS# PICBAH9(#Q>2# PICBLL9<#Q>F# PICBLH9P# !CIOVZ# CLS  }}d#MEM4 AD4:MEM.SAVAn#x# DO;;AND GOOD6}BYE!>CLS# PICBAH9(#Q>2# PICBLL9<#Q>F# PICBLH9P# !CIOVZ# CLS  30100 .OPT NO LIST0110 ;:B0120 ;^6}0130 ;ˠˠ}Ҡ0140 ;'Ҡɠˠ̯+40150 ;P0160 ;ǠɠӠ6}0170 ;}Š&0180 ;.:ӠBp0190 ; Ƞ0200 ;}}0210 ;6}4=0220 ;Y0230 ;ǠӺ} 0240 ;&/0250 ;6EӠKT0260 ;[iҠ6}py0270 ;}}Ӡ!0280 ;*8Π=F0290 ;N[̠bk0300 ;}} 0310 ;6}/80320 ;T0330 ;ˠ̯Š٠Š03}40 ;Π٠Ӡ!*0350 ;FO0360 ;kt0370 ;6}}}0380 ;!3͠Ġ8A0390 ;JUĠ]f0400 ;n̠٠}0410 ;*30420 6};OX0430 ;t0440 ;}%ǠɠӠ0450 ;,7ӠAJ0460 ;O^Ġfo0470 ;}6}}0480 ;40490 ;0500 ;0510 ;0520 ; OPTIONS: Drive numbers and density0530 ; } if DENSITY=DOUBLE05406} ;" then DRIVEA=DRIVEB !!!0550 ;0560 ;0570 ;0580 DRIVEA = 30590 DRIVEB = 40600 DENSITY = }ISINGLE0610 ;0620 ;0636}0 ;ӮӺ0640 ;0650 ;0660 SINGLE = $80M ;Sector lengths0670 DOUBLE = $000680 DDEVIC = }G$0300 ;SIO Device Co6}ntrol Block0690 DUNIT = $03010700 DCOMND = $03020710 DSTATS = $03030720 DBUFLO = $03040730 DBYTLO =} $03080740 DAU6}X1 = $030A0750 ICHID = $03400760 ICDNO = $03410770 ICCOM = $03420780 ICSTA = $03430790 ICBAL = $03440800} ICBAH = $06}3450810 ICPTL = $03460820 ICPTH = $03470830 ICBLL = $03480840 ICBLH = $03490850 ICAX1 = $034A0860 ICAX2 = $0}:34B086}70 CIOV = $E4560880 DOSINI = $0C0890 CHKSUM = $31> c;Temporary checksum0900 BUFRLO = $32g ;Temporary pointer to }use6}r's buffer0910 ZTEMP = $34# P;Temporary miscellaneous use0920 ZTEM2 = $38U ;Temporary miscellaneous use0930 STACKP} = 6}$0318 ;Stack pointer save0940 PORTB = $D301 ;PIA port B-memory control register0950 PORTA = $D300 ;PIA port A regis}6}ter0960 PACTL = $D302 ;PIA port A control register0970 NMIEN = $D40E0980 ;0990 ;1000 ; Check for 64,128 or 256 K10106} }6;1020 ; Load-time code - Copy OS into RAM1030 ;1040; g*= $30001050 ;1060 ;1070 TXT130 .BYTE "}mv "1080{ .B6}}.YTE "Setting up ATARI 130XE Ram Disk",$9B10903 :.BYTE "??K Q"1100V .BYTE ""1110 TXT256 .BYTE }"} 6} "1120 F.BYTE "Setting up ATARI 256Kb Ram Disk",$9B1130K R.BYTE "WWc i"1140n .BYTE "}`"1150 ;1160 ; I6}F $D0=1 THEN 130XE1170 ;1180 ; IF $D0=2 THEN 256Kb XL1190 ;1200 GO1210e kLDY #2q ;START TEST}1220 STY $412306} *LDA PORTB1240/ ;STA $CC1250@ MAND #$AF1260R `STA PORTB1270e nDEY 1280s xSTY $|4}1290 LDA $CC1300 (STA PORTB6}1310- 2CPY $64;1320@ MBEQ NOXE1330R ^LDA $CC1340c pAND #$EF1350u STA PORT}B1360 CPY $41370 >BNE XL2561380 XE6}130 LDA #11390C OSTA $D01400T sBNE NOXE1410 XL256 LDA #21420x STA $}D01430 NOXE LDA $CC1440 ,STA PORTB14501 =LDA6} $D01460B MCMP #11470R ]BEQ XE1480b mCMP #21490r BEQ XL1500} !RTS 1510 XL JSR PTEXT1520& BJMP COS1530 XE LDX 6}#01540G SLDA #111550X hSTA ICCOM,X1560m LDA #TXT130&255}1570 STA ICBAL,X1580 2LDA #TXT130/25615907 GSTA ICBAH,X6}1600L XLDA #711610] mSTA ICBLL,X1620r LDA #01630} STA ICBLH,X1640 'JSR CIOV1650, 7LDA #81660< ISTA 19201670N 6}[STA 29531680` nLDA $070A1690s ORA #$801}C700 STA $070A1710 )JSR $07E01720. ;LDX #$201730@ MLDA #2541740R bSTA 6}ICCOM,X1750g LDA #DRVNUM&2551760 } STA ICBAL,X1770 ,LDA #DRVNUM/25617801 ASTA ICBAH,X1790F QLDA #01800V fSTA6} ICAX1,X1810k STA ICAX2,X1820 } JSR CIOV1830 "LDX #$201840' 2LDA #318507 GSTA ICCOM,X1860L ^LDA #DUP1&25518706}c sSTA ICBAL,X1880x LDA #} DUP1/2561890 "STA ICBAH,X1900' 2LDA #419107 GSTA ICAX1,X1920L WLDA #01930\ lSTA ICAX2,X6}1940q JSR CIOV195}0 LDA #71960 &STA ICCOM,X1970+ 6LDA #01980; KSTA ICBAL,X1990P `STA ICBLL,X2000e rLDA #$50206}10w STA IC} BAH,X2020 STA ICBLH,X2030$ 1JSR CIOV20406 BBPL NXT2050G TCPY #$882060Y eBEQ NXT2070j RTS 2080 NXT L6}DA #}122090 STA ICCOM,X2100! .JSR CIOV21103 >LDA #32120C PLDX #$202130U eSTA ICCOM,X2140j LDA #DUP8&2552150 }6} STA ICBAL,X2160 +LDA #DUP8/25621700 @STA ICBAH,X2180E PLDA #82190U eSTA ICAX1,X2200j uLDA #02210z STA} ICAX26},X2220 JSR CIOV2230$ 0LDA #1122405 ESTA ICCOM,X2250J WLDA #$002260\ lSTA ICBAL,X2270q LDA #$50228}0 STA ICBAH6},X2290 (LDA #$112300- =STA ICBLL,X2310B OLDA #$142320T dSTA ICBLH,X2330i vJSR CIOV2340{ LD} A #122350 STA ICCOM6},X2360$ 1JSR CIOV23706 ALDA #32380F SLDX #$202390X hSTA ICCOM,X2400m LDA #MEM8&25524}10 STA ICBAL,X2420 .LDA #6}MEM8/25624303 CSTA ICBAH,X2440H SLDA #82450X hSTA ICAX1,X2460m xLDA #02470} }STA ICAX2,X2480 "JSR CIOV2490' 3LDA6} #1225008 HSTA ICCOM,X2510M ZJSR CIOV2520_ kLDA #'82530p STA $153F254}0 RTS 2550 DRVNUM .BYTE "D8:",$9B2560 DUP6}1 .BYTE "D1:DUP.SYS",$9B2570 DUP8 .BYTE "D8:DUP.SYS",$9B2580 MEM8 .BYTE "D8:}MEM.SAV",$9B2590 COS LDA #$C0" 9;Zero pag6}e pointer2600> QSTA $CC2610 ;2620V bSTA $CE2630g rLDA #02640w STA $C}B2650 STA $CD2660 3LDY #$002670 LOOP2686}08 `LDA NMIEN ;Disable NMI interrupts2690e hPHAq ;Save NMIEN}2700 AND #$002710 )STA NMIEN2720. 1SEI: K;Disable 6}IRQ2730P iLDA ($CB),Y ;Copy OS2740n qPHAz ;sa} ve value2750 LDA PORTB2760% +EOR #11 E;Disable OS Rom2770J XSTA POR6}TB2780] fPLA 2790k STA ($CD),Y2800 }C LDA PORTB2810 EOR #1" 5;Enable OS Rom2820: HSTA PORTB2830M VPLA 2840[ 6}STA NMIEN ;Restore NMIEN2850 } CLI ;Enable IRQ2860# ,INY 28701 >BNE LOOP2880C OLDX $CC2890T \CPX #$CB` ;Sk6}ip pages $CC to D72900 } BNE NXPG2910 !LDX #$D72920& NSTA ICBLL,X3150S ^LDA #03160c sSTA ICBLH,X3170x JSR C6}}IOV3180 RTS 3190 )*= $02E23200. .WORD GO3210 ;3220 ;3230 ; Ramdisk controller code3240 ;ˠŠ6}}Ӡ̯Š3250 ;3̠ҮԠ32608 ^*= $CC003270 ;3280 ;3290 HOOK3300c fCLCo ;Hook into all} SI6}O calls3310 #LDA DDEVIC3320( 6ADC DUNIT3330; CLDY #$00G [;Drive A offset3340` CMP #$31+DRIVEA ;Right drive } number 6}?3350 !BEQ HOOKED3360& .LDY #$802 E;DRIVEB offset3370J ^CMP #$31+DRIVEB3380c BEQ HOOKED3390 OLDVEC = *}+13400 J6}MP * :;If not go to SIO3410 HOOKED3420? BTSXK `;If so intercept3430e STX STACKP ;Save stack } pointer3440 /STY ZTE6}M2 ;Store offset34504 ULDA DCOMND ;Examine command3460Z aCMP #'!f t;Format ?3470y BNE } NOFMT3480 )JMP FORMAT3496}0 NOFMT3500. 5CMP #'P: L;Put sector ?3510Q _BNE NOPUT3520d JMP PUTSEC3530 NOPUT354}0 CMP #'R %;Read sector ?3556}0* 8BNE NOSET3560= WJMP GETSEC3570 NOSET3580\ cCMP #'Sh ;Read status ?3590 } BNE NOSTT3600 0JMP STATUS3610 NOS6}TT36205 LCMP DAUX14240Q jBCC 6}OUTRS4250 INRNS4260o LDA DAUX1 ;S}ector # valid4270 %STA ZTEMP4280* :LDA DAUX1+14290? MASL ZTEMP4300R WROL A^ 6};Divide # by 64-Result is bank }#, remainder is page #4310 .ASL ZTEMP43203 =ROL A4330B HADC #4N Z;Bank #4340_ hTAX 6}4350m LDA ZTEMP4360 } LSR A4370 LSR A4380! )ADC #$40- ;Remainder+644390 ;4400 ; Subroutine- Prepaire to switc6}h banks;4410 ; X is ba}'nk, A is page #4420 ;4430 SETBNK4440, ISTA ZTEM2+1 ;Save page #4450N VLDA #$80Z j;PA7 output6}4460o STA PAFLG4470} JSR PAOUT4480 &LDA PORTB4490+ 2STA PBN7 H;Normal bank4500M ZAND #$A34510_ eSTA PBk w;Bank 06}4520| L} DA #04530 STA PA4540 "TXA+ >;Bank# in accu4550C LCLC 4560Q YCMP #$0C] n;Bank# <12 ?4570s BCC SBNKA }6} ;Yes,jump4580 LDA #$80! 5;Banks 12 to 154590: @STA PAF ^;PA7 = 14600 SBNKA4610c fTXAo ;Bank# in accu}4620 C6}LC 4630 CMP #8$ 4;Bank# <8 ?46409 TBCC SBNKB ;Yes, jump4650Y aLDA #$40e x;Banks 8 to 154660} } ORA PB4670 STA 6}PB 9;PB4 & PB6= 14680 SBNKB4690> ATXAJ ];Bank# in accu4700b hAND #3n ;Only bits 0 an}d 14710 ASL A4720 !ASL A( 6}>;Shift 2 pos left4730C NORA PB4740S YSTA PB_ q;Bank X in PB4750v LDA $FF}CFA ;NMI vector4760 (STA ZTEMP4770- ;LD6}A $FFFB4780@ PSTA ZTEMP+14790U `LDY #04800e mLDA #$40q ;RTI opcode}4810 SEI &;Disable IRQ4820+ dSTA (ZTEMP),Y 6};Place RTI in NMI routine-disables NMI4830i lRTSu ;Leave 0 }G in Y, bank # in X4840 ;4850 ; Format routine4860 ;4870 6}FORMAT4880L RLDX #4X ;Clear banks 4 to F4890 CLOOP14900 !} LDA #$404910 :JSR SETBNK ;Prepare for switch4920? JLD6}A PA4930O ]STA PORTA4940b mLDA PB4950r STA PORTB "} ;Switch bank in4960 /TYA 4970 CLOOP249804 ZSTA (ZTEM2),Y ;Zer6}o entire sector4990_ hINY 5000m CPY SECLEN5010 #} BNE CLOOP25020 !TAY 5030& AINC ZTEM2+1 ;Next page5040F UBPL CL6}OOP25050Z fLDA PBN5060k STA PORTB ;Switc$}h bank out5070 LDA #05080$ 2STA PORTA50907 CLDA NMI5100H mSTA (ZTEMP)6},Y ;Enable interrupts5110r CLI 5120 %} INX ;Next bank5130# +CPX #$10/ ;;Done ?5140@ OBCC CLOOP15150T cJSR SETBU6}F5160h pLDA #$FFt ;Return a&}) sector with 2 FF's and the rest 0's5170. DLDY #05180 FLOOP5190I TCPY #25200Y gBNE NOTF6}F5210l LDA #05220 NOTFF'}5230 STA (BUFRLO),Y5240" +INY 52500 ?CPY SECLEN5260D RBNE FLOOP5270W JMP SUCRET ;Done6}5280 ;5290 ; Write (}§or routine5300 ;5310 PUTSEC5320+ :JSR SETBUF5330? JLDA #05340O nSTA CHKSUM ;Zero checksum6}5350s JSR SETSEC)}* ;Point to ramdisk sector5360 PLOOP5370/ _LDA (BUFRLO),Y ;Get byte from user's buffer5380d oLDX PA6}5390t STX PORTA*}5400 LDX PB5410 7STX PORTB ;Switch bank5420< eSTA (ZTEM2),Y ;Put byte into ramdisk5430j vLDX P6}BN5440{ ST+}X PORTB ;Normal bank5450 +LDX #054600 >STX PORTA5470C LCLC 5480Q wADC CHKSUM ;Add byte to checksum56}490| S,}TA CHKSUM5500 INY 5510! GCPY SECLEN ;Proper sector lenhth5520L ZBNE PLOOP5530_ gLDX #$0Fk ;Bank F holds c6}hec-}ksum table5540 "LDA DAUX15550' 1ASL A55606 FLDA DAUX1+15570K UROL A5580Z bORA #$60f ;Sector # indexes check.}6}sum table5590 "JSR SETBNK5600' 5LDA DAUX15610: GAND #$7F5620L UTAY 5630Z iLDA CHKSUM5640n yLDX PA5650} /} STX P6}ORTA5660 LDX PB5670$ ASTX PORTB ;Switch bank5680F hSTA (ZTEM2),Y ;Store checksum5690m yLDX PBN5700} 0}C STX PORTB6} ;Normal bank5710# .LDX #057203 ASTX PORTA5730F QLDY #05740V bLDA NMI5750g STA (ZTEMP),Y ;Enable 1}1interrupts576}60 CLI 5770" mJMP SUCRET ;Done5780 ;5790 ; Read sector routine5800 ;5810 GETSEC5820r JSR SETBUF2}5830 LDA #06}5840 8STA CHKSUM ;Zero checksum5850= WJSR SETSEC5860 GLOOP5870\ gLDX PA5880l STX PORTA5890 3} LDX PB5900 /STX6} PORTB ;Switch bank59104 ]LDA (ZTEM2),Y ;Get byte from ramdisk5920b nLDX PBN5930s STX PORTB 4} ;Normal bank5940 #6}LDX #05950( 6STX PORTA5960; kSTA (BUFRLO),Y ;Put byte into user's buffer5970p yCLC 5980} 5}" ADC CHKSUM ;Add to check6}sum5990' 6STA CHKSUM6000; DINY 6010I oCPY SECLEN ;Proper sector length6020t BNE GLOOP6}6030 LDX #$0F 5;Bank F fo6}r checksum table6040: HLDA DAUX16050M WASL A6060\ lLDA DAUX1+16070q ROL A6080 7} ORA #$606090 $JSR SETBNK6100)6} 7LDA DAUX16110< IAND #$7F6120N WTAY 6130\ gLDX PA6140l STX PORTA6150 8} LDX PB6160 /STX PORTB ;Switch bank66}1704 ]LDA (ZTEM2),Y ;Set original checksum6180b nLDX PBN6190s STX PORTB 9} ;Normal bank6200 #LDX #06210( 6STX PORTA6}6220; DTAX 6230I TLDY #06240Y eLDA NMI6250j STA (ZTEMP),Y ;Enab:}le interrupts6260 CLI 6270% HCPX CHKSUM ;Compar6}e checksums6280M [BEQ SCSOK6290` JMP ERRRET ;If different bad;} sector6300 SCSOK6310 pJMP SUCRET ;If same, done636}20 ;6330 ; Read status routine6340 ;6350 STATUS6360u JSR SETB<}UF6370 LDY #3 -;Returns 4 bytes63802 8LDA #0> V;A6}ll 0's6390 SLOOP6400[ nSTA (BUFRLO),Y6410s DEY 6420 =} BPL SLOOP6430 (CMP #DENSITY6440- ;BNE SDONE6450@ MLDA #$6}206460R [INY 6470` STA (BUFRLO),Y ;First byte te>}$lls density of drive6480 SDONE6490) JMP SUCRET ;Done6500 ;6510 6};Subroutine for PA7 output6520 ;6530 PAOUT6540 ;65?}50 LDA PACTL6560 %EOR #46570* 8STA PACTL6580= KLDA PAFLG6596}0P ^STA PORTA6600c qLDA PACTL6610v EOR #4@}6620 STA PACTL6630 'LDA #06640, :STA PORTA6650? RTS 6660 ;6670 ; V6}ariable storage area6680 ;6690 PAFLG *= A}*+1 6;Flag PORTA,$80=output,0=input6700 PA *= *+1; v;value of mem.contr.re6}g. for selected bank6710 PB *= *+1{ ;VB}C9alue of mem.contr.reg. for selected bank6720 PBN *= *+1> w;Value of mem.cont6}r.reg. for normal bank6730 NMI *= *+1| ;C}CFirst opcode in NMI routine-Used to restore NMI6740 SECLEN *= *+1 ;Length6} of current sector6750 ;6760 ; RESET initialisaD}tion routine6770 ;6780 X*= $0100 ;Hidden (hopefully !!!)6790 ;66}800 NEWINI6810] DEC PORTB ;Enable RAM OS6820 E} LDA #$806830 $STA PAFLG6840) IJSR PAOUT6850 OLDINI = *+16860N 6}SJSR *Z ;Call original DOSINI routine6870 F} MODINI6880 =LDA #NEWINI&$FF ;Set hook for next RESET6890B QSTA DOSINI6906}0V lLDA #NEWINI/$01006910q STA DOSINI+1G}6920 GRTS 6930 ;6940 ; Load-time code-Install ramdisk6950 ;6960L b*= $427}006970 DO6980g sLDA $D06990x CMP #H}27000 BEQ CONT7010 3JMP END7020 CONT70308 bLDA $E45A ;Save original SIO v7}ector7040g vSTA OLDVEC7050{ LDI} A $E45B7060 "STA OLDVEC+17070' QLDA #HOOK&$FF ;Install new SIO vector7080V dSTA $E47}5A7090i LDA #HOOK/$01007100J} STA $E45B7110 JLDA $FFFA ;Save first opcode in NMI routine7120O [STA $CB7130` nLD7}A $FFFB7140s STA $CC71K}50 LDY #07160 'LDA ($CB),Y7170, 8STA NMI7180= jLDA DOSINI ;Save original dosini vector77}190o STA OLDINI720L}0 LDA DOSINI+17210 -STA OLDINI+172202 SJSR MODINI ;Install new one7230X fLDA $070A7240k rORA7} #12w ;DRIVEM} #3&47250 STA $070A7260" \JSR $07E0 ;Reinitialize FMS to show ramdisk present7270a hJMP BEGm ;Done7}7280 ;729N}20 ;7300 ;FORMAT CODE - Format Ramdisk7310 ;73207 E*= $43007330J ^.BYTE "D4:",9 B7340c .BYTE "D3:",9 B77}350 ;736O} 0 BEG7370 LDX #$20 );IOCB # 27380. 6LDA #$FE: J;FORMAT D4:7390O _STA ICCOM,X7400d oLDA #07410t STA ICB7}ALP},X7420 LDA #$437430 .STA ICBAH,X74403 @JSR CIOV7450E SBPL DRIV37460X sRTS 7470 ;7480 DRIV37490x LDA #Q}7 }$FE7500 STA ICCOM,X7510" -LDA #475202 BSTA ICBAL,X7530G TLDA #$437540Y iSTA ICBAH,X7550n JSR CIOV7560 R} BPL 7 }DUPOPN7570 RTS# <;Error-return7580 ;7590A *= $43407600 ;7610 ;DUPLICATE DUP TO RAMDISK7620 ;7630 S} 9.BYTE "D17 }:DUP.SYS",9 B7640 ;7650 DUPOPN7660 ;7670> FLDX #$20J X;IOCB # 27680] eLDA #$03i ;OPEN D1:DUP.SYS769T}C0 STA ICCOM,7 }X ;FOR READ7700% 2LDA #$4077107 GSTA ICBAL,X7720L YLDA #$437730^ nSTA ICBAH,X7740s LDA #$047U}U750 STA ICAX1,X77 }760 (LDA #07770- =STA ICAX2,X7780B OJSR CIOV7790T bBPL DUPRD7800g jRTSs ;Error-retV}Eurn7810 ;7820 ;7830 ;READ D1:7}DUP.SYS7840 ;7850 DUPRD7860 ;7870J PLDA #7V m;GET BINARY RECORD7880r STA ICCOM,XW}7890 LDA #07900 ;STA ICBAL,X 7};BUFFER AT $50007910@ MLDA #$507920R bSTA ICBAH,X7930g tLDA #$007940y STA X} ICBLL,X ;$220B BYTES (8715)7950% 2LDA #$7}2379607 GSTA ICBLH,X7970L YJSR CIOV7980^ mBPL DUPCL17990r CPY #$88 Y} ;END OF FILE ?8000 (BEQ DUPCL18010- 0RTS9 7};Error-return8020 ;8030 ;8040 ;CLOSE # 28050 ;8060 DUPCL18070 Z};8080 LDA #$0C -;CLOSE D1:DUP.SYS80902 BSTA IC7}COM,X8100G TJSR CIOV8110Y iBPL DUPOPN18120n qRTSz ;Er[};ror-return8130 ;8140 ;WRITE D4:DUP.SYS8150 ;8160 ;8170@ U*7}= $43A08180 ;8190Z .BYTE "D4:DUP.SYS",9 B8200 ;8210 \}DUPOPN18220 ;8230 LDX #$20$ 2;IOCB # 282407 ?LDA #$03C U;7}OPEN D4:DUP.8250Z uSTA ICCOM,X ;FOR WRITE8260z LDA]} #$A08270 STA ICBAL,X8280$ 1LDA #$4382906 FSTA ICBAH,X8300K X7}LDA #$088310] mSTA ICAX1,X8320r LDA #08330^} STA ICAX2,X8340 'JSR CIOV8350, ;BPL DUPWRT8360@ CRTSL ;Error-retur7}n8370 ;8380 ;8390 ;WRITE D4:DUP.SY_} S8400 ;8410 DUPWRT8420 ;8430% -LDA #$0B1 H;PUT BINARY RECORD8440M ]STA ICCOM,X7}8450b mLDA #08460r STA ICBAL,X`} ;BUFFER AT $50008470 (LDA #$508480- =STA ICBAH,X8490B OLDA #$118500T qSTA ICBLL,X7} ;$1411 BYTES8510v LDA #$1a}48520 STA ICBLH,X8530 -JSR CIOV85402 ABPL DUPCL28550F IRTSR ;Error-return8560 ;8577}0 ;8580 ;CLOSE # 2b}8590 ;8600 DUPCL28610 ;8620$ ,LDA #$0C0 F;CLOSE D4:DUP.SYS8630K [STA ICCOM,X8640` mJSR CIOV8657}0r BPL FIN866c}0 RTS c;Error-return8670 ;8680 ;8690 ;WRITE MEM.SAV TO DRIVE #48700 ;8710 FIN8720h uLDX #$20877}30z LDAd} #38740 STA ICCOM,X8750" 4LDA #MEM4&25587609 ISTA ICBAL,X8770N `LDA #MEM4/2568780e uSTA ICBAH,X8790z LD7}Ae} #88800 STA ICAX1,X8810" -LDA #088202 BSTA ICAX2,X8830G TJSR CIOV8840Y `LDA #12e x;CLOSE MEM.SAV8850} f}C LDX7} #$208860 "STA ICCOM,X8870' IJSR CIOV8880 ;8890 ;8900 ;8910N ZLDA #'48920_ ySTA $153F8930 END LDA #11} g}g ;CLE7}AN UP THE8940 LDX #$00$ 0;SCREEN89505 ESTA ICCOM,X8960J [LDA #CLS&2558970` STA ICBAL,X ;THANK-YOU8980 q}P::d7}db%DOS SYSb*)DUP aSYSbSRAMDISK COMbgaRAMDISK M65bRAMDISK SRCb sBANKSW ATW`eep q`uӠC`7 } `!렠`%1򠲵`5@̠q LDA #CLS/2568990 )STA ICBAH,X9000. 9LDA #19010> NSTA ICB7!}LL,X9020S ^LDA #09030c sSTA ICBLH,X9040x JMP Cr}8IOV9050 CLS .BYTE $7D9060 MEM4 .BYTE "D4:MEM.SAV"9070= K*= $02E297"}080P X.WORD DO\ s;AND GOODBYE!LH,X9040x JMP Cje12 2 1 5 0 10 76 2 0 1322769BANKSWITCHING 256K ATARI 800XL7#}277027662PORTA = $ D300k yPACTL = $ D302} t}^ PORTB = $ D301Funkties van de verschillende bits van PORTB:PB0 = 7$}0 :Enable RAM 48 - 64K.d PB0 = 1 :Enable OS ROM 48u}! - 64K.PB1 = 0 :Enable Basic ROM+ dPB1 = 1 :Enable RAM 40 - 48K.PB47%} = 0 :Enable CPU bankingl PB4 = 1 :Disable v}*CPU banking.PB5 = 0 :Enable ANTIC banking0 iPB5 = 1 :Disable ANTIC banking.7&}PB7 = 0 :Enable Self tests PB7 = 1 :Dw}isable Self test.PB2, PB3, PB6 en PA7 worden gebruikt voor het selekteren van de7'} extra banken.Banknummering:Banken 0 tx}G/m 3 zijn de normale banken van de 800 XL. Voorwaarden voor het gebruik van d7(}eze banken zijn:PB4 EN PB5 = 0.0 - 16K = Bay}ynk # 016 - 32K = Bank # 132 - 48K = Bank # 248 - 64K = Bank # 3Extr7)}a banken:Banken 4 t/m 15 zijn de extra banken.Voorz}`waarden voor het gebruik van deze banken zijn:PB4 = 0 OF PB5 = 0 E7*}N A14 = 1 EN A15 = 0.Bank #d PA7 PB6 PB3 PB2 4 {} X 0 0 0 5" #X' (0, -01 61 6> ?XC D0H I1M R0 7Z [7+}X_ `0d e1i n1 8v w0{ 1 |} 0 0 9 0 1 0$ )1 101 206 71; <1@ E0 11M N0R S1W X1\ a1 12i j1n o1s t0x 0 13}7,}} 1 1 0 1 14$ %1) *1. /13 80 15@ A1E F1J K1O m1Adreslijn A8 DRAM.Bank #q A8 Row. A8 C~}ol. PB6 PA7 07-} t/m 3 0# /0 4 t/m 73 40; <1C D0H WX 8 t/m 11 1^ _1f g1k 012 t/m 15 1 }C 0 1 1# /0 4 t/m 73 40; <17.}C D0H WX 8 t/m 11 1^ _1f g1k 012 t/m 15 1 EE4902 2///0/1/p 0*)*+,-.3/50 0L30L2L0#L0%L0;0}&L02L03L0AL0BL0 0L30͍001) 0)WI1JJJJ 0)WI1 0``pppB0pp ppppp     ppANNNN;1}NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN፤򎀈㉦MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM;2}􀩤󀚀#hangeversion)$inmemoryto6ersion;3}6ersion6ersion6ersion6ersion6ersion6ersion;4}6ersionto%xit 2/0/1/// 0H) h`8tName of util: SPARTA-DOS VERSION-FAKER Version: 0.0 Date: 1-Oct.-1996 Status: Public-Domain Payments: ?6}Not Required Copyright: the FOX-1 Address: P.O.Box 16 Zipp-Code: 5160 AA City: Sprang-Capelle Country?7}: the Netherlands Requires: Sparta-Dos running on ATARI 8-Bitter. Files included: lenght: ----?8}----------- ------- FAKER.COM -- 0741 bytes FAKER.DOC -- 2992 '' Some explanation about ?9} FAKERUsing this utility is at own risk !!!Since i'm running BBS Pro! on my ATARI8-bitter i use the 3.3b version ofS?:}parta-Dos very much. Unfortunatelythere are people who create greatprograms for use with Sparta-Dos, butto be sure they wi?;}ll work correctlythey're checking which version ofSparta-Dos is loaded in memory beforethe actual programs starts to run.?<}In most cases they check if it is a3.2 version of the Dos. If not, theprogram errors out after a message yougotta boot a c?=}orrect version. In manycases this is bullshit, 'cause theX33B.DOS is almost 100% compatible withthe older X32C and X32D ve?>}rsions,except that it has also theMUX-routines available and thepossibility to set your RamDisk to D9:.The disadvantage o??}f it, is that MEMLOis al little bit [:-)] higher, but inmost cases this isn't a problem.A good example are the NNTOOLS fro?@}mNelson Nieves and TERM80 from Tom Hunt.Very nice programs but they only runwith a 3.2 version of Sparta-Dos.I guess they?A} don't know that a 3.3version also excists, however, TomHunt even said that this version is anEuropean patch ??? Strange, ?B}since thisis the version which is created for usewith BBS Pro! and it's a re-written3.2c version by Stephen J.Carden, and?C}i'm sure he's NOT from Europe :-)The fact was i want to use theseprograms without booting anotherSparta-Dos again, so thi?D}s util is justreplacing the 'version-address' ($700)with another one you can choose in themenu. Just activate FAKER.COM an?E}dchoose which version-number you want tolet the computer think you're using.You'll see a note on the screen whichID-numbe?F}r is used at that moment.Use ESCAPE to go back to the command-line. Notice that there are noguaranties about the effect of?G} usingthis program, but i haven't got anyproblem when using this way of faking,but you never know...I also have no idea w?H}hat is happeningwhen you use this with a SDX-cart. Ifsomeone has info about it, please letme know... Sysop FOX-1 THUNDE?I}RDOME ATARI 8-Bit BBS +31 (0)416 279990 the Netherlands p.s. you also can reach me at the USF and IAN net...?J} p.s.2 The ID# showed in the TDLINE from Sparta-Dos will not be updated since this will only be checked?K} and stored when loading TDLINE.COM. If you really want to have the actual ID# at the top of the screen,?L} then first use FAKER.COM and load the TDLINE after switching the version-number of Sparta-Dos<u3s70 B VLb9`BʝD9E JK VLb9` BPHI VLb9`CW}BzDC_}63 entries.Table Of Sectors With Read Errors:3@6FAST-OS-------Operating-System for Atari XL/XE. Use of it: unknown Author: unknownWill not load with Sparta-DosGa}diskbased versions.Will load with My-Dos (4.50) witha message: loading o.s.That's all I know... Sysop Fox-Gb}1 Thunderdome, ATARI 8-Bit BBS the Netherlands +31 416-279990.Gc}D @Y LLoading new OS... BDEHI VL BDEHI V` LMemlo must be lowKe}er than $4000! BDE HI VLxԅHө@hө@X`؅(xԭ)Kf}ӮS @ @X`g@OBB@ԭЍ`,lHHHl"lH) ߍҥl H-Il8Kg}%,LIҥm#hlMh@h,l,lhhH)HlHh@@Kh} 6 LMMMNOEO%NТ U O¥B)L­д ԍ5 ԍ41ԭ0ԭ/ԭoKi}Эll8l)ԢXEO%N ԭԢ U R¢ U&)+>)2+2m-+Kj} ɟ ɃɄɔ)? ҍL+JJJJy{)xzЍЍҝpt ҢxJJJ}*|Kk}ʈl$l&l(`` - -`hhh@x/j 'D" x=\>ɓ?Kl}%ȩxآ qĩRFF# ) s F өD"Km})\=>%?R'S)(0b%Kĝ.ĝ 5X)өKn}LPర  )ĩBHDĝE J VL nƥj 9D )ll l`P0C@ESK Ko}BOOT ERRORE:,0­j l ĭ ӥ))ө(IKp} I`}`ӝНԝ<өө8Ӎөөө<Ӎӭӭө"ҩҍҩ(ҩ `Kq}67  , < L n e k Pn8ɍ9 )I` )3L;ƩS S0!  Kr} Y >ƭ`@BC  iiA  Y >ƭЬ Y )ư ; `BiKs}Cill =ĊDE BHLVLzRLS )'Lƭ> } ũ  `lFKt}`1F!@PWS  Y`S :ǠF! :ǠȱȱKu}򈈌 ``3 Ǡ9 Ǡ/E &*ȍȍE3 Ǡ 3` Ǡ, Ǡ"Kv}Emm`ll3 sJjK J}K}mEHmh8HKw}h Hh hh`8H3m6m7h6LPm6m76m6676m6`mKx}6m76}6`H3jhm6m76`mmm6ǒȒȒȒmmȵȵǕǩD)LHHѭɀ Ky} ɑ H`BHG H hH qhB`jHH ʍH hHhh@LɠLKz}LɠLɠ Lɠ L H`G=!H` H HLM`LMBHB HH ɐ LhhLʠHhBLMK{}M`hh̀@ .M  .L .@ L\L)-%-/294%342/-2!-+%9"/!2$4%34K|}[17%2495)/0 ܀!3$&'(*+, :8#6".- K}}30!#%"!23("3\6/)#%qJiI`?e>7e6/e.'e&eK~}i>e>=6e65.e.-&e&%ee=e=<5e54-e-,%e%$ee>e<;6e43.e,+&e$#ee;e;:3eK}32+e+*#e#"ee:e:9LF*u8ޥu0ݥu(ܥu ۥuڥu0͢F*u8ݥu0ܥu(ۥu ڥu٥K}u0͢F*u8ܥu0ۥu(ڥu ٥uإu0͢F*u8ۥu0ڥu(٥u إuץu0͢FK}*u8ڥu0٥u(إu ץu֥u0L͠& (0 8L͐*80(K} 6РЙL6ؤm\G0Q@Ն֩م؅2եمֆשم"ե؅֥مK}ةեׅ֥؅ץم؆لԘ)q %`K6"LvΥLvΥLvΥEK}0:e٥eإeץe֥eՐ؅٥ׅإօץՅ֩L8٥إץ֥հ I8م٘؅ؘׅטօ֘ՅK}L͘.JJJJ)iFiFi1FicFi'ȐȦoFiUȐFiiFi#iFiGi Fii@F iiK}FiiciՊFigi'iՊօשBLͥJffff`ԩ&&&&*` K}`'@g ۰9 Hڢ D ۰!H hم٦0hL`.Eh+-XK} ۰7H ۰H ehe ۥ Iihe+- ې08H*hj ۥiD ܰ  K}` Qک0()?(E$8? p .L L٩` p 8逮0iE ܄ 8K}-+ ܢ8 i H h ܭ0 ii ܠ-`ԥՅ %LΥԅՅօׅ؅م`ܩ0fCK}b8@?i ZڰS ZڰF ZڰAee2 ei$  iiԥ`8`Ԡ``K}&&`I)A)83Ԥԥդե֤֥פץؤإ٤LfL*` Խսֽ׽ؽ`K}LܥE=E)))8@8e0+ e˅څۅ܅݅ޅ߄ԢL0 LL%`8`E)))8i@0 e˅K}ڄԢL:ͥԍՍ֍׍؍ٍ` е bL ۤȄ` `80 `H ې.+-h8`K} ې . ېh`ՠ66666&`LL͠刱䈱㈱∱ሱ`ԍՍ֍׍؍ٍ`؈K}ֈՈ`` ԕ` 8JJJJ ܵ) . ` 0` .0ʽ` ۥ)`8K}`2e21*e*)"e"!ee9e981e10)e)(!e! eeՅօׅ؅مԅՅօׅ؅`` cK}  ڰ3i  fڰ%!LN``وLF`L`ّL`Lԕ` K} ڰԅ)8@0&j ٥ԅX ݢ `ک M @ ڥ#ji@0 ڥ ݢK} (`8`==W3>Tvb>2b'?h`06?2'A?%C4Vu?f'70P@U??CBH@ c  f '  ` L(ۥؑבK}Ցԑ`0xv I@ԥ) Ϣf ' ۩ r @ ک?P f ٥Iiԩ ٥)ԅK} fڦ ޕL(`8` fڥ (`@"wf?P?IWQpIG?9 Wa9cU? 0d? 9`?BXGB?7?()q?D>DIh8EK}?hyx? )D?@ (1V?wD3331??xS4ԅ8Lfffffff>`<|fl0fF68of;K}p88pf< 80 0 ~~`0 0```nf>ff~fff~~f<flxxlf`````~cwkccfv~~nfK}8pp8?ww<~~~<K}x`x`~<~~<0~0 ~ <~~<<>f>``|ff|<```<>fK}f>>ff>|``|fff8<<``lxlf8<fkc|ffffff>|f```>`<|K}~ffff>fff<ck>6f< x~ 0~<~~<~x|nf8x8-I,Ln-LnK},,LnLyLLLLL3LrLLL\LL LL#LLLLL#LPLLLɕɚɟɤɩLK} `@۝FGiɀ``/.)Lp@ " qLp )0K}"%*H_vL Lp' "  ,&-'Lr Lp#  'ۅ&LrK}  氥 .@ Lr"%*Lp () /Lr /0A$ ") /ɛ L ۥ") /0 /ɛ󩉅# K}$ Lr"%*Lp ()/($/  (0")/ɛ()ۥ") Lr#.D$E% @ /K}.#` ",-*稱,ȱ,-,`()(()`$%$`$%`.8H((I))` #`-H,H.`8$10 K}!!$ ! 8` ` %JKJqJ&JKJ V O- `mmK}8 N Ln 08 ݐH  h LYO@@ʎjK}LEǮ}` 38` Q LY&@JKJȱJ`K}8`JK V8( ]'JȭJJKJJ  (8`( JȑJqJȭqJJ VˠJ`K}Ji KilLr ];JHKHJKDJqJ VJȱJhKhJJJ`hh8`L3ɩ<ө<ө2A`B`K}L (ҩmi:; < =:2i4354 ?ΜL"  / ?K} ,p? ?00ν0L B0`?>2i435< 0>A!CE000ɊK}?0`0 1;:2 ҅1L: `H232435; 1 ҩ;  hh@2 e1i1L; :)K}h@1890 @<ӥL9`0`Hҍ 00) 08 109hh@ Ҡ2e1i12324K}35ޥ<<Щ82m43m 5`2̍ҩ b 0 4ӭ Lb 0 4K}ӭ = 0<L*`-2 ` Ҡҍ2ҩ% LV-2 2ҍ ҩ% ҩ(ҢAK}Ҭ`ҍ`%Ң`jj)?j)`,  7` .  . 8 K}8 b8}mJJJ 8)i 8}}`|08|`b}`Lx%) Ԥ  K} [XL')0 Ԥ ҭҭҩҭ2ҩU2ȑ212i23i3X` <ө<ө0XL*K}&'x \X`CT euxd   4dd //__aaaa a ''OOAAAA A  K}((PP@PPP(( 00`` 0 @ HH"0"K}0hh8`hh8`hh`$! ` %&'.M$L`HH)  hh`0.@ 0 )0hhK}'H&H`Lj@Qyz`a`+)*)*WLT̍k/Lҩ@,n čK}ԩd{j`WMQje( zo)?g jjj)g z odXK}eY z x]de edheiA pfW  9*)3n  ij p` pB ief-f-W nK} "QQ pW& ]j8 p pQ @ pQ pY pX pQ @ pp pp pd0e1p pde0hȭ1K}hL `*) R" //L j L d-FoJ`} L ɛ aL L K}TZ****))I Fo L-PI1dPd` ]W I LL&LȩL`,n@ԩn΍LK} b k4TlUm Lɛ bcq VL\  lTmUkk L0 Lb a LLbld b   cLJ L } cH hcK} }H }hL Wλ0TL L dheicH hcTͿ hڠh  WL8 RU L QTT8 [ix( fhdgK}saLJ:K\^OPUI_|VCBXZ$#&%"![ ]NM?REYTWQ()'@}FHDGSA {   ` }K}HHӭ ImɃIm )&= Ҫɟ I)?.M+//K}hhh@!ϭkk п)Lm/͍/HMO-N ԍh@L̍`+>*) >`? 0)K}4Ӧb* \*=Lw` 0̍ҩҩ` h4Ӧb \**=`?03=K}=`R ?0= Lz?`==` |=``0<`=  |0 |L@K}b}ЩР@b} 6`%H$H` `#@R>  Y`K}UW ?`@ `S   Y0 D` `HA! Khɛ` K} LY Kܠ`@!S@ ``W+N(DS  `NܢK} ŋ`` Le查Š饟š`PXBBK}l,_H_/