@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@W!( 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  ,}) !"`3!3}x"ە#ܕӍ"#0iD1iEX01h`8?}Hݕ)0Iiݕݕ! ԍ ԭЭЭЭLѕ"ЩЩ h@8@}HݕhL Hݕ)0Iiݕݕ! ԍ ԭЭЭЭLѕ"ЩЩ h@8 KAa2]B2w'BByAU9BBrKAY@4]A#@ (} 4B},Q (}-( The Softkeys Source DiskQ( ========================6"("(Written by Bob DuHamel.JS(4C}S(HUse any wordprocessor to read the following files for instructions:TR(( SOFTKEYS.DOC-( NOTES.DOCC(4D} TECHNOTES.DOCR( READMEUC(C(8- - - - - - - - - - - - - - - - - - - -DOS 2.5 UtilitiesVd(d(YFor informatio4E}n on the additional utility programs read the manual UTILITY.DOC]B(B(7Distributed by the Bournemouth & Poole 4F}Atari User Group^$~U(U(JFor details on the additional utility programs read the manual UTILITY.DOC6 A p650}L)l 2lllllll3l5l0ll [  ` WARM STX DOSINIP]} STY DOSINI+1;;intercept keyboard interrupt; LDX # CHECK STX VKEYBD P^} STY VKEYBD+1;;ENDWARM RTS ;;;COLD START;;Steal DOSINI;COLD LDX DOSINI LDY DOSINI+1 STX IP_}NIDOS+1 STY INIDOS+2;;Make vector to release keyboard;interrupt; LDX VKEYBD LDY VKEYBD+1 P`} STX EXIT STY EXIT+1; JMP WARM1;;Initialization tailer; *= GLBABS+2 .WORD COLD;P};;FLIB;;Function library for SOFTKEYS;;Equates;DOSINI = $0CMEMLO = $02E7ENDWARM = $0470PAGE6 = $06Tb}00DOSEND = $1CFCDISKIOEND = $2934GLBABS = $02E0KRPDEL = $02D9KEYREP = $02DANOCLIK = $02DBSHORTD Tc} = $14FSTRTE = $03LONGD = $30SLORTE = $06NOKEY = $FFCH = $02FCVERIFY = $57NOVER = Td} $50DVERIF = $0779COLDSV = $E477RTCLOK = $12KCTRLX = $96J0 = $0416J1 = $041DJ2 =Te} $0424J3 = $042BJ4 = $0432J5 = $0439J6 = $0440J7 = $0447J8 = $044EJ9Tf} = $0455;;Use PAGE6, DOSEND or DISKIOEND for;start address; *= DOSEND;;Toggle key click;CLICK LDTg}A NOCLIK EOR #$01 STA NOCLIKEXXIT LDA #NOKEY STA CH PLA RTI ;;Toggle key Th}repeat delay and rate;from normal to fast or back;REPEAT LDA #LONGD CMP KRPDEL BEQ FASTSLOW STA KTi}RPDEL LDA #SLORTE STA KEYREP BNE EXXITFAST LDA #SHORTD STA KRPDEL LDA #FSTRTj}TE STA KEYREP BNE EXXIT;;Toggle disk write-verify.;DISK LDX DVERIF LDA #VERIFY STTk}A DVERIF CPX #VERIFY BNE EXXIT LDA #NOVER STA DVERIF BNE EXXIT;;Cold start;;Tl}Initialization for this routine;changes SOFTKEYS to look for;[CONTROL][X] instead of [0].;COLDST LDA #0 STA RTTm}CLOK+2DELAY LDA RTCLOK+2 CMP #$30 BNE DELAY JMP COLDSVENDLIB;;Function library initializatiTn}on; *= J1 JMP CLICK; *= J2 JMP REPEAT; *= J3 JMP DISK; To}*= J0-3 .BYTE KCTRLX *= J0 JMP COLDST;;Protect from system; *= ENDWARM LDXTp} # ENDLIB STX MEMLO STY MEMLO+1 RTS ;;Initialization tailer; *Tq}= GLBABS+2 .WORD ENDWARM; STX MEMLO STY MEMLO+1 RTS ;;Initialization tailer; *T% ; ;FLIB ; ;Function library Xs} ;for SOFTKEYS ; ;Equates ; Xt} DOSINI = $0C MEMLO = $02E7 ENDWARM = $0470 DISKIOEND = Xu}$2934 GLBABS = $02E0 KRPDEL = $02D9 KEYREP = $02DA Xv} NOCLIK = $02DB SHORTD = $14 FSTRTE = $03 LONGXw}D = $30 SLORTE = $06 NOKEY = $FF CH = $02FC Xx} VERIFY = $57 NOVER = $50 DVERIF = $0779 COLDSXy}V = $E477 RTCLOK = $12 KCTRLX = $96 J0 = $0416 Xz} J1 = $041D J2 = $0424 J3 = $042B X{}J4 = $0432 J5 = $0439 J6 = $0440 J7 = $0447X|} J8 = $044E J9 = $0455 ; X}}*= variable ;FLIB FLIB FLIB ; ;Toggle key click 3 2 ; X~} ;0600 1CFC 2935 ADDB02 CLICK LDA NOCLIK0603 1CFF 2938 4901 EOR #$010605 1D01 293A 8DDB02 STX}A NOCLIK0608 1D04 293D A9FF EXXIT LDA #NOKEY060A 1D06 293F 8DFC02 STA CH060D 1D09 2942 68 PLA 060E 1D0A 294X}3 40 RTI ; ;Toggle key ;repeat delay X} ;and rate ;from normal ;to fast or ;back. X} ;0600 1D0B 2944 A930 REPEAT LDA #LONGD0611 1D0D 2946 CDD902 CMP KRPDEL0614 1D10 2949 F00A BEQ FAX}ST0616 1D12 294B 8DD902 SLOW STA KRPDEL0619 1D15 294E A906 LDA #SLORTE061B 1D17 2950 8DDA02 STA KEYREP061E 1D1AX} 2953 D0E8 BNE EXXIT0620 1D1C 2955 A914 FAST LDA #SHORTD0622 1D1E 2957 8DD902 STA KRPDEL0625 1D21 295A A903 X} LDA #FSTRTE0627 1D23 295C 8DDA02 STA KEYREP062A 1D26 295F D0DC BNE EXXIT ; X} ;Toggle disk ;write-verify. ;062C 1D28 2961 AE7907 DISK LDX DVERIF062X}F 1D2B 2964 A957 LDA #VERIFY0631 1D2D 2966 8D7907 STA DVERIF0634 1D30 2969 E057 CPX #VERIFY0636 1D32 296B X}D0D0 BNE EXXIT0638 1D34 296D A950 LDA #NOVER063A 1D36 296F 8D7907 STA DVERIF063D 1D39 2972 D0C9 BNE X}EXXIT ; ;Cold start ; ;InitializationX} ;for this routine ;changes SOFTKEYS ;to look for X} ;[CONTROL][X] ; ;instead of [0]. ;063F 1D3B 2X}974 A900 COLDST LDA #00641 1D3D 2976 8514 STA RTCLOK+20643 1D3F 2978 A514 DELAY LDA RTCLOK+20645 1D41 297A C930 X} CMP #$300647 1D43 297C D0FA BNE DELAY0649 1D45 297E 4C77E4 JMP COLDSV064C 1D48 2981 ENDLIB X} ; ;Function library ;initialization ;064C 1DX}48 2981 *= J1041D 041D 041D 4Cxxxx JMP CLICK ;0420 0420 0420 *= J20424 0X}424 0424 4Cxxxx JMP REPEAT ;0427 0427 0427 *= J3042B 042B 042B 4Cxxxx JMP DISK X} ;042E 042E 042E *= J0-30413 0413 0413 96 .BYTE KCTRLX0414 0414 0414 *= X} J00416 0416 0416 4Cxxxx JMP COLDST ;FLIB3 not ;Protect fromprotected ;sX}ystem ; 0419 0419 *= ENDWARM 0470 0470 A2xx LDX # ENDLIB 0474 0474 8EE702 STX MEMLO 0477 0477 8CE802 STY MEMLO+1 047A 047A 60 RTX}S ; ;Initialization ;tailer ; 0X}47B 047B *= GLBABS+2 02E2 02E2 7004 .WORD ENDWARM ; ; 0XbSOFTKEYSFunction Keys for Atari 8-bitsBy Bob DuHamelWouldn't it be nice if the Atari 8-bit computer had programmable\} function keys, such as on IBM and the ST. I never really missed them myself until I got an 800XL. I like being able to tur\}n off the key click and speed-up the cursor but I don't like having to do several pokes before I start working or after press\}ing [RESET]. If you're not in BASIC you can't make the changes anyway. For some time I have been thinking about combining t\}he [OPTION] key with the number keys to make 10 or more programmable keys. I finally got around to doing it.Now, after I b\}oot a disk with my soft key routine, I press [OPTION][1] to turn the key click off and on, [OPTION][2] to change the cursor s\}peed from slow to fast and back, [OPTION][3] to turn the disk write-verify on and off (with DOS 2), and [OPTION][CONTROL][X] \}to do a cold start (reboot). When I do a cold start I have about 1/2 second to release the [OPTION] key if I want BASIC enab\}led. The routine is RESET proof and works with most programs I have tried it with.ABOUT THE PROGRAMI decided to design t\}he routine so it can be thought of much as a regular part of the computer. I assigned a permanent location for the main rout\}ine, SOFTKEYS, in memory. It intercepts the keyboard interrupt routine and checks to see if the [OPTION] key is pressed. If\} [OPTION] is pressed SOFTKEYS checks to see if one of the number keys has been pressed. If so, that key is turned over to th\}e keyboard interrupt routine for processing. In other words, SOFTKEYS does absolutely nothing by itself. Display list inter\}rupts work much the same way. The second program, FLIB, is a library of functions. The library initializes by changing the \}jump vectors in SOFTKEYS to point to the functions in the library. By designing the routine this way, SOFTKEYS can be loaded\} by itself and modified by another program to point to it's routines instead.I needed a safe place to put the SOFTKEYS rout\}ine. After some thought I decided to use the cassette buffer which starts at $3FD and ends at $47F (decimal 1021 to 1151). \}Addresses $3FD to $3FF are cleared when RESET is pressed so the routine starts at $400 (1024). This area is virtually unused\} by disk drive owners. Of course you can't use a cassette recorder for data with this routine in the cassette buffer. If by\} chance you need to use a cassette recorder after this routine is loaded, first type POKE 520,PEEK(1024):POKE 521,PEEK(1025).\} This will take SOFTKEYS out of the keyboard interrupt routine. It will also allow you to use the DOS utilities, DUP.SYS, i\}f you are using an incompatible function library file. DISKIO's KILL command will also disable SOFTKEYS.Three function lib\}rary files are provided on this disk. They are FLIB.EXE, FLIB2.EXE and FLIB3.EXE. FLIB.EXE starts at $2935 (10549) which is\} where DISKIO ends. This library ends at $2981 (10625). FLIB2.EXE starts at $1CFC (which is where DOS 2 ends) and ends at $\}1D48 (7420 to 7496). FLIB3.EXE uses page 6 and starts at $600 and ends at $64B (1536 to 1611). The FLIB file you choose wil\}l depend on whether you are using DISKIO and whether you want to use page 6 ($0600 to $06FF). The library has only four func\}tions leaving 7 you can add yourself.There are two ways to put together an AUTORUN.SYS file to install SOFTKEYS. The stand\}ard way is to go to the DOS utilities (by typing DOS in BASIC). From the utilities you can append the desired FLIB file to S\}OFTKEYS. To append the files: 15First copy SOFTKEYS.EXE and the desired FLIB file to the disk you want to boot from;Next\} use the copy commad (C) to append the FLIB file to SOFTKEYS using the following syntax; FLIB.EXE,SOFTKEYS.EXE/A (Don't\} forget the "/A")Finally, delete the FLIB file (it is now appended to SOFTKEYS) and rename SOFTKEYS.EXE to AUTORUN.SYS. 10\}If you want to use SOFTKEYS with DISKIO you can append above finished SOFTKEYS file to the DISKIO AUTORUN.SYS file instead \}of renaming SOFTKEYS. Use FLIB.EXE or FLIB3.EXE with DISKIO. FLIB2.EXE will write over part of DISKIO.Another way to appe\}nd the files is to load them into a buffer in the order you want them appended. You can do this with FASTIO from the Atari B\}ASIC Power Pack or with some word processors. You then resave the complete file under the name AUTORUN.SYS. To do this with\} FASTIO: 15Be sure that LNBUF in line 30196 is large ennogh to hold all the files;Also be sure that BUFF$ is empty by eit\}her typing RUN or BUFF$="";Type GOSUB RDFILE and D:(filename 1);Type GOSUB RDFILE and D:(filename 2) etc. 10After all t\}he files are appended: 15Type GOSUB WRFILE and D:AUTORUN.SYS 10To append the files with ATARIWRITER: 15Type [L] then fi\}lename 1;Type [E] then move the cursor to the end of the file;Type [OPTION][L] and filename 2;To load any other files, \}move the cursor to the end of the file again before typing [OPTION][L];Type [ESC] then [S] (IMPORTANT! use [CONTROL][S] wit\}h ATARIWRITER PLUS);Type AUTORUN.SYS. 10MODIFIED DOSIf you use my modified DOS II be sure to use the extender .RUN ins\}tead of renaming the routine to AUTORUN.SYS.CUSTOMIZING SOFT KEYSThe soft key routine has ten jump vectors and ten check \}bytes starting at $0412 (decimal 1042). The following table shows where each check byte and jump vector is and which key it \}is used for.Soft Key Jump Table 15KEY Check byte Jump Vector hex dec hex dec0 $0413 1043 $\}0416 10461 $041F 1050 $041D 10532 $0421 1057 $0424 10603 $0428 1064 $042B 10674 $042F 1071 \} $0432 10745 $0436 1078 $0439 10816 $043D 1085 $0440 10887 $0444 1092 $0477 10958 $044B 109\}9 $044E 11029 $0452 1106 $0455 1109Table exit vector $0458 1112 10The jump vectors are indirect jumps thro\}ugh $0400. They must be changed to direct jumps to your routine. See the FLIB.SRS file for an example of how this is done. \} If you want to pass the key on to the keyboard handler after your routine is finished with it, end your routine with "JMP ($\}0400)". This is an indirect jump through $0400 to the keyboard interrupt routine. If you want to keep your key from the han\}dler, store the number $FF (255) in $02FC (764), then use PLA, RTI to exit the routine. The table exit vector could be used \}to jump to another table to check for more keys. Remember that the functions become part of the keyboard interrupt routine a\}nd should usually be kept short. A good type of routine would set a flag byte that another program could check later.You c\}an also alter the jump table in BASIC. Change the table with a routine like the following. This example assumes that a mach\}ine language routine starts at $600. 76 is the decimal code for a direct jump. 1000 REM Point OPTION 4 to $600 1010 J4=10\}74:JMP=76 1020 POKE J4,JMP:POKE J4+1,0:POKE J4+2,6It is best to have the machine language routine somewhere secure such as\} $600 to $6FF (1536 to 1791). If your machine language routine is in a basic string, it may get moved when the program is st\}opped. This can cause disasterous results if you press a soft key when the program isn't running.You may have noticed that\} FLIB changes the 0 key to CONTROL X. You can do this too. Just change the check byte for the key you want to replace. The\} code you will replace it with is not ATASCII. The easiest way to find the correct key code is to use the following short BA\}SIC program. 10 ? PEEK(764):GOTO 10Run the program and press the key you want to use. The decimal code for the key will \}print on the screen. Just replace the check byte with the new code and it will check for the new key.code for the key will \gSOFTKEYS is usually appended to the end of any AUTORUN.SYS file it is loaded with. In the case of TURBO-BASIC, SOFTKEYS must`} be loaded first. In other words, do not append SOFTKEYS to TURBO-BASIC. Append TURBO-BASIC to SOFTKEYS. Be sure to use FL`}IB2.EXE with TURBO-BASIC.You can use the DOS utilities from TURBO-BASIC with SOFTKEYS installed. Softkeys will be active w`}hile using the utilities. However, you cannot get back to BASIC by reloading the SOFTKEYS/TURBO-BASIC file. You will need t`}o first run KILLKEYS.EXE using the L option. KILLKEYS.EXE will turn off SOFTKEYS so the appended file will not try to activa`}te SOFTKEYS when it is already active.So far I have been unable to make SOFTKEYS work with Atariwriter or Atariwriter Plus.`}e SOFTKEYS when it is already active.So far I have been unable to make SOFTKEYS work with Atariwriter or Atariwriter Plus.`  FF                    d}                          d}        Technical Notes for SOFTKEYSNote 1:SOFTKEYS must insert itself into the keyboard ind}terrupt routine. It does this by replacing the address at the keyboard interrupt vector with it's own start address. Befored} doing this SOFTKEYS steals the original address at the keyboard interrupt vector and stores it at SOFTKEYS' own exit vector d}($0400). The keyboard vector may have already been stolen by another routine, such as DISKIO. This doesn't matter. SOFTKEYd}S just becomes another link in the keyboard interrupt chain.All this vector theft takes place in the SOFTKEYS cold-start rod}utine and only needs to be done once. The memory used by the cold-start can be over written if needed.Note 2:Protecting d}SOFTKEYS from [RESET] is a little more complicated than inserting it into the keyboard interrupt routine.First the SOFTKEYSd} cold-start steals the DOS initialization vector (DOSINI). The computer uses this vector whenever [RESET] is pressed. SOFTKd}EYS then puts it's own warm-start address in DOSINI.DOS must be initialized after [RESET] so the first thing the SOFTKEYS d}warm-start does is jump to the original DOSINI address. (DOSINI may have already been stolen by another program but that doed}sn't matter as long as things are done in the proper order.) When DOS initializes it puts it's own initialization address bad}ck in DOSINI. SOFTKEYS then restores it's own warm-start address in DOSINI.The computer's reset routine also restores the d}default address in the keyboard interrupt vector. SOFTKEYS has to put it's address back during it's warm-start.Note 3:FLd}IB.EXE and FLIB2.EXE are located where BASIC would like to put it's programs. To protect themselves, these FLIB files changed} the address in MEMLO to reflect their presence. (MEMLO must also be changed after [RESET] is pressed.) They do this by appd}ending their own initialization routines to the end of the SOFTKEYS warm-start routine.Making Your Own FunctionThe follod}wing is a routine to turn off SOFTKEYS. Use this as an example of how to make your own routine work with SOFTKEYS. It is wrd}itten for MAC/65.J4 = $0432EXIT = $0400VKEYBD = $0208ENDWARM = $0470NOKEY = $FFCH = $02FCENDLIB = $d}2981GLBABS = $02E0;;; * = ENDLIB;KILL LDX EXIT LDY EXIT+1 STX VKEYBD STY VKEYBD+1;DONE LDA #NOKEYd} STA CH PLA RTI;ENDFUNCTION;;initialization;;changes jump table; * = J4 JMP KILL;;NEW PROTECd}TION ROUTINE; * = ENDWARM LDX # ENDFUNCTION STX MEMLO STY MEMLO+1 RTS;;Id}NITIALIZATION TAILER; * = GLBABS+2 .WORD ENDWARM;The initialization tailer tacks the initialization address to d}the file in the standard DOS format. The above function is assembled to work with FLIB.EXE. To make it work with the other d}flib files, check the file FLIB.ASM to find where the desired file ends (the address of ENDLIB). You could also edit FLIB.SRd}S to include the above function. ENDWARM is the end of SOFTKEYS warm-start. ENDLIB is the end of the original FLIB file.SRd{ )h n# J KI  & a&$E˩̩˙iȱi5)h}` >ɛ(`HHH7ͩЍ&ud˩ [)ـȄαHȱH`"1ȱh}iL="Щ.Ȅ̈́Ω" U˩L ܩeͅ$%"h0hh(` @ '`XXFIND/@&%/%DI6.!cDEL DELET q.h}!eLOC u.!eUN UNLOC y.!cRE RENAM }KIL .!eE ENTE .!eLO LOA .!eRUN!Z.!cS SAV .!cLI LIST!ZL LISh}%.!eBL BLOA&HEL&FORMA%.!cM MOV#WDO$D1:*.* R110HH %L# g"ѩ}h}HH( % V |" i) ƅ˩څ˩̥HH % L Зȑˈȱh}ȑˠ) JJJJi0ȥ)i0JƩ L - L $hhL΢ ͙8ΨeHiH %hhL#h}`!б#Э$Щ V%0L ЖL&J K Lt Έ)0 ȱHȱH`͈ͤ ` $L&h} 3!ـȩ:ـ/ 1%  D  :` ͌ `Ω ЀХi}d00]:Y8 8 0  HH8X˥Y̠( =" =" hhL&爭)i} ѩ ,0 3! =" -". G" ;" -"hh˩L  T" G"`e˅ː`H h`H****)h)c"` @i}`XiYi` # `( #( ~# #( =" ~# # #L# ="8i} #$( # /# #( ~# # # # ="$( #( # /#'X+X` D#` # D#` ~# ݀i}0 ( #`( # ;"`˝``˭`˭`H# h,A0L@L4hi} L - HHB8名呍 %|ɈЩIH Ω1ف.I&&  > H$i}Ω1iHH %0HH B %0Т&  LE: $H$H %0D1:DOS.SYS`HHͩ?i}ȩ % H%H %H%H %ЩϢ&  YФͩ `K:&˩&̠ #Р $ ~#Р $L' i}L͠,oـHDH:HH hHiHDiHE % B Vۢ&  hhh,i }`BJ IHhhhEhDHHLV eΝDiE͹~/͹NΞͩ Li } L#&  Lˆ̥˦ ȱ(ɛ(`?' a&L DISK DRIVE 1ARE YOU SURE??INSERT DISK2;HIT ANY KEY (S=TO SCi }REEN)OUT OF RAM ALREADY EXISTSBAD LOAD FILEDOS 2.5MDISKIOFUNCTION KEYSInstalledType HELP for commands } i } click rate w/verify boot i } DIR(n) RUND .RFORMAT LOCK .LWDOS i} UNLOCK UN. .ULISTD LI. .X RENAME RE. .NSAVE S. .S DELETE DEL. .DENTER E. .E BLOAD BL. .BLi}OAD LO. .L MOVE M. .M.R9 runs #9 etc. To use DOS type KILL.Reboot to restore DISKIO. i}.H k)йl)ѠhH hHhO&\&L 5$$%%Y&j&8## $$$%%%5)LZ)l 2li}llllll3l5l0ll[ [  `  L^qKi}Ih@0 ܮyWyWЩPyɩ0LwLL$%&L,+,-Li}?`ܮyWyWЩPyɩ0LwLL$%&L,+,-Lh  FF                    m}                          m}        A voluntary payment of $5.00 isrequested for this disk. I will giveany technical supm}port I can to thosewho have paid this fee and include aS.A.S.E. with their questions. Writeto:Bob DuHamel6915 Casselbem}rry WaySan Diego, CA 92119------------------------------------Do you program in BASIC? Add over 40powerful new commanm}ds to Atari andcompatible BASICs with the AtariBASIC Power Pack; a function libraryfor Atari BASIC. Just some of it'sfeam}tures are: High speed disk access directly to strings. High speed graphics saving and loading. Cum}stom character set loading. Mixed text and graphics in mode 8. English error messages. Decimal alignedm} number columns. Five color, 40 column text mode.It is written in standard Atari BASICwith some machine language inm}strings. It's easy to use toobecause all commands are called byname, not by address or line number.For this and and my om}ther publicdomain software write to:BELLCOMP.O. Box 1043, Peterborough ONTARIO, CANADA K9J 7A5orC & T ComputerActivm}eP.O. Box 893Clinton, OK 73601to:BELLCOMP.O. Box 1043, Peterborough ONTARIO, CANADA K9J 7A5orC & T ComputerActivl" F Uԅ֩שբ w؅բ w F`ԩՠH Uh F`I FΞ0A l i/DE !} Uԅ֩ש w FL' Uօԩשբ: w FΝL fXpԩ `xԍҭ)Lk ` "}`֑`?m Uԅ֩թע w؅ע w F`15`xԍҭ)Lk ` Yt#4 (c)1983 Action Computer Services  B JKIHiDiELV`L#$} # BLV`iL $$l L$ &` Fj`8冨凪` ?$EӅӥ%} ?$`ʆǪƩ Ɛee` P$ƦʆǢ &Ɛeǐ t$ t$L;$ P$'&&&8儨児&}祂*L;$&&*ń8&&L;$ $`hihiHHȱȱL$c !#3`'}L$JJJJ`H $h`Hȩh #La% #La% #La% #La% #H8(}`HhHh %La% BHI V䅠La% L& #La%Ԇ ؠPIPP`)} ;&P #La% ]&L#& ;&Lb& v&L1&H- ,&8塪墨hLv& &L#& &L1& ;&ȹP`*}텠8堨塪 ;&芨Oȩ-`PP %P棩 Ѥģ0-ģ6000:,80H +}& &ehe&eģ0ʥ 8堅塅`$ %&&*i0:0i %&Ʀ`¢ 护,}°ڱ%ȱ%E %&L'担CS %L'I &L'H 'L' ]&L' &B V a%NLMȑ-}` MLN%B VLa%S:r(E:w(H % z({( % %h)0Iu(v(L%[\ZUVT` (u(v(.}` (L5& (L& (L(&) ` (L5& $` 0d $ҥ `2)2/}ҩ`p`0)9q)`@0)ӈJJJJ)`Ѕ`ȱ`` )ȥ`Hh1}@@ D:TITLE.OBJ)@)@-)@)@-6-%AV$-)@6.}ƣĢ`ƥĤ`Ѣ 0*`ȱѢĦ`膡`2}`ťƤe8夰LF* Ƥ8`ŦeѠe桊LJ* PrintD3}E(6," ")D5d  7 % *77:77* 7) '777 ;* 774+!>-7+77 ,=> 77!4} 7) 3/+``LT+`LX+`L\+ |( 1&Lu+ now+i %*IRL+L+ READING+ %L+L+ WRITING+5} % 1& 1&`iL+ |( 1&L+ error encountered+۩ % 1&L , Ԡ+ %L%, RETRY, % 1&LD, 6} Ԡ,6 %L], exit,P % 1&IL,IL,Lk,IL, Y++*   $,,+7}L,V*IRL,R (&L,W (&+L, Q+L, U+`L,1**IL- * YL- SIL$- +`L)-Ӎ%-8%8}-өӭ%-` NLJ-E-D-F-D-mF-E-iIL-ӐL}-Lp-D-mF-E-ii@D-mF-E-iF-9}LU-` SL----Ȍ-͵-'-L---L-`L-DөӠӐL.L.-I--H-`L-`L. |( 1&L6. :} insert.) %LO. SOURCE.B %Lg. DISK.[ % 1& 1&L. press Ԡ.} %Э*IRL.+;}+ G-** G-+ + G-L. (L. DESTINATION.Ω %IL.L.`L. (*IL*/L/DOUBLE/  %*Ή<}*LG/*L9/SINGLE/2 %(***ILi/ILi/LM/`=Ln/Íj/*IL/L/ $j/e=}e* $e`L/R*@** k/ Y+**6* * *0*00 0 L0*I>}LB0  L=0*LB0* ,*   %L0*IRLz0R (&L0W (&* $e?}e8**L0*IL0*L0* k/@**  L 0P**Щ |( 1&L%1 @} Ԡ1 %LB1 write it out11 % 1&La1 Ԡ1S %Lz1 exit1m %++ G-** G-A}+ + G- 1&IL1IL1L1IL1 .L1L1L/`L1 .*IL2*Ȍ**h* /R* .*i**Ѝ*B} /L02*Ȍ**Ѝ* /` L6212@* k/c@* k/@IL2L2 Unable to Bank Switch...2b %1222C}722L222 ) )M22L2L2 Cartridge Present...2 %12B2222L212IL3L3 Program abortD}ed2 %L3`L3,S+,R+3W+3V+ &-D ) -* k/j ) 32N+M+ G-.+-+ G-* k/j )***R‰E}* |((*L3 single pass3 %L3 3 %L3 FOR 130XE 3ԩ %L3 BY 3 %LF}4 dale lutz 4  % 1&L64 Ԡ4* %LR4 begin copying4B %Lk4 Ԡ4^ %L4 change densG}ity4w % 1&L4DENSITY: SINGLE4 %IL4 .IL4 1Lk3``3 Ԡ4^ %L4 change densVh ۰k F Dڈ ۰ م٦0.0EA ې+-B ۰; e e ې+ 0`ЍI}.󩰠+- i08eL8J ۤ iԔILيd19 K Qڥ 8~ J} ȩE oة+8- odȢ8 i m؊ 0~-`CPYRT.1981,MARSLETT*`eׅץeօ&&K}Bj &&&Ր }܅Ԙ}ܨPiԘi`զԆՠׄ؄ʈ0Ր)Cj>d8L}ԕIؠ7`ە1IiE0yʈ0niհdڥEԠ``&`I)M})8iE040 uʈiԐԕեE*`80 ʈL`<68?N}e ۵ԕڕڅ cԊEEhh*08``LC ݥ8i@ ۵ԕբ 8Lܥم؅٥ׅإօץO}ՅքզJJJJ fܦ) fȥإЄL; `80 ` ې>.+- .,0"8` ېȄP}`Ԡ66666`:`Lٔ0ȵߵ޵ݵܵ۰٘ eeߵe޵eݵeܵiۈٔۍQ}0Lۨuu٥uإuץu֥uՈ` 'Oc?'N?Jf tصJJJJ mص) R}m0 tة0̀  . 0.``` x݅` x݅ b` " ڰS} b fڐ`i`ԝ````ԕ`ߢ ڰ F ٍT}8ԅLCieȅ ԩf fڥ)?%ߢl ݥ f `ڠ ڠޢ @ -ݩ ;ݍU} ` (۠ߢl f fڥ b F ߢ e?` | fڠ - `L%@p8f@i 1&@4@ g@Y!3'@"wfЍV} } ۢ?1FffffوԠߢ ڠߢr 8ݢ -ݩ C ( " b fڢ եW}8 f fڥ b `?PE@i@g5`@04VD?8@0% ?CBH@>DIh8E?hyx?X} )D?@ (1V?wD3331??xS4ffffffff>`<|bf 0fF68of;Y}p88pf<f<0 0 ~~`0 0```nff>f[}ff~fff~~f<flxxlff``````~cwkcccfv~~~nf8pp]}8?ww<~~~<^}x`x`~<~~<0~0 ~ <~~<`nf<ff~ff~~f<flxlf````~cwkcfv~nf`<|~ffff~`}fff<ckwcf<SOFTKEYSDOCbNOTES DOCbTECHNOTEDOCbDiskio_kRUNb README b-----------bSome bDOS 2.5 bUtilities b-----------b PATCH25 COMb$#XECOPY COMb`HTRANSXL COMb9FID COMb*DUP SYSb RAMDISK COMbUTILITY DOC) LtHHl"MMMNO  B)L ԍ5 ԍ41ԭ0ԭ/ԭoТXEO%Nr} ԭԢ   &)+)`+ + ҍJJJJxʹ)xʈНs}ҝpҝt ҢxJJJ}*|ʈl$+l&l(`` - -`hhh@ff~ft}|Lf|``nf>ff~<ө<ө2A`B`L7 6(ҩmi:u}; < =:2i4354 ?6L 6 j u? ,p? j ?0070Lv}t _B0`?>2i435< 0>A!CE000Ɋ?0`0 1;:2 ҅1Lw}: _`H232435; 1 ҩ;  hh@2 e1i1L; :)h@1890 <ӥLx}9`0`Hҍ 00) 08 109hh@ Ҡ2e1i1232435ޥ<<Щ82m43m 5`y}.̍ҩ  0 4ӭ j kL 0x 4ӭ j u  0<L `-2 `Ѝz} Ҡҍ2ҩ% L1-2 2ҍ ҩ% ҩ(ҢAҬ`ҍ`%Ң`jj){}?j)` k `    8 8 }imJJJ 8)i 8|}}}`|08|`i`Lx%) Ԥ   aXL )0 Ԥ  ̭ҭ}}ҩҭ2ҩU2ȑ212i23i3X` _<Ӎө0XL &'x \X`CT eu$F`1~}F!@WS   Y`S mF! mȱȱ򈈌 `}``}~S  Y0 ` ` ɛ`  Y` ޠ`}@S@ ``W+N(DS  `Nݩ̍`+>*) 9`? X0}$4Ӡ@* \*=L` X0̍ҩҩ` h4ө \**=`?03==}`R 0= L?`==` =``0<`=  0 L2@i}ЩР@ i  `%H$H` `#@R>  Y`UW }`P0C@ESK }ATARI COMPUTER - MEMO PADBOOT ERRORE:xDxآ ? w(r s D}R'S% X  <ర  9BDE J VL%}  ) D )l )ll 0L*HH`lll}I Ii`Нԝҝ`T67  , < L n e k)J` }) ~`S S`    K`@BC  iiA   }KЮK l ~ `BiCill DE BH V`KLzR S` ) `J>K } }KJ  `l)j@`+)*)*W/Lҩd{j`}WiLQjeE( !o)?gjjj)g ! odXeY z udedhei A fW -}*)' j ` B  efffQQ W]j8  O Q Y X Q @ p p d0e}1p dehdie1 0 LH h`*) R" //L! 2 L4 Gd-FoJ` }Ѝ} L!ɛ 0L! L!TZ****)) GFo L-PI1dPd` ]W I LL` } k4TlUm Lɛ cq LP lTmUkk L0 L 0 !LLld  L} de !L*JbX| ɀɁ ILɂɃ@ЩɄ}ОɅ L&|@a{ |L ML4`TʆTL\TTͿUU0RSULUUSRL} deej cmTVl`cR!UR s UST   L UR 4 c %LcLc}L } cH hc }H }hLD λ0TL GdheicH hcTͿ hڠh h L8 {RU Gd}hi(feiigT N L QTT8 #ix(  RU G L ` L0+dL0d8}dee dL`THUHVH Tfgf &gQg &g &geQfgmgW0f&gL~U0 FVjnLeffg8n}fedd^geee_ohVhUhT`}cUVUWݍ S`VW0cQ }& 0Lw 4Tix %} }L} VTW${T& }ɛ8 lΝ8ﭝTL8ptpquq`W 'SSWT}*( VVU L` Lhh{ L4]^`H)nhJJJ`...` n` nI=`T}ix %n8`W****))`eGd'fPhfPdeidhfi(fg` "iy( 0TTix(LRU} G'd` XdYe(djedddeejLcTQQ " ci(cQLceUc` cHlTmUk{T} USkL9 kcRT kcR USTkhc ` QlRm`cRT cR GS8RdL`-ʍ}`T`T` L4 THTh{I{`Ў `{WRU`XdYe`"`获T`U}aVbyz8`Zv yvIiv8a[wb\xzwIwxIxwxspZTw訥xu wvv~tHuJhjp~}LBpevpqqupt TeyT zrewrsexsu'rt$zUUV VUV z / TH }hT  L  8~~0LL4 4d //__aaaa ''OOAAAA }((PP@PPP 00``0 @ (ʔFy}~02- m7@ ` @`lj;k+*opu}i-=vcbxz436521, .nm/reytwq907~8<>fhdgsaLJ:K\^OPUI_|VCBXZ$#&%"![ ]NM?REYTWQ()'@}FHDGSA { }  ` }  ɟ IM0+h@%橔ȍ}{R'SDE ˑ pxqxrxۑ[ }LLzz\<z}DE ˑsLNzDE ˑЍsLNzDE ˑsLNzDE ˑЍsLNLNpLN}z%!ԅ֩؅թhנԑץpp!ԅ֩թpנԑץtԅ֩hթ؅עr \LoI }ӱԑ {{|I Lb捃) |Lw BHILVI`I`J}GN 2.1ɑ`LtLw} ɠ̠ֲ  ϮӮŠ}Š Ԡ} 砠 }Π򠠠 } Ԡ䠠 }  ͠렠 ҍ}Ġ  ͠렠 Ġ }  ͠렠 Ԡ }  ͠렠 Ԡ } Ң`ҩ ҍ҅ `Ԡ T)D (c)1983 Action Computer Services  B JKIHiDiELV`LJ)} J) BLV`L))l L) &` Fj`8冨凪` )EӅӥ} )`ʆǪƩ Ɛee` )ƦʆǢ &Ɛeǐ * *L) )'&&&8儨児}祂*L)&&*ń8&&L) h*`hihiHHȱȱL)c !#3`}L)JJJJ`H )h`Hȩh )L* )L* 2)L* :)L* @)H8}`HhHh l+L* BHI V䅠L* L+ J)L*Ԇ ؠPIPP`} +P :)L* +L+ +L+ ,L+H- +8塪墨hL, ,,L+ 3,L+ +ȹP`}텠8堨塪 +芨Oȩ-`PP +P棩 Ѥģ0-ģ6000:,80H }& &ehe&eģ0ʥ 8堅塅`$ +&*i0:0i +Ʀ`¢ 护}°ڱ%ȱ%E +Lm-担CS _+Lm-I ,,Lm-H '-Lm- +Lm- &B V *NLMȑ}` MLN%B VL*S:.E:.H Y+ .. "+ Y+h)0I..L"+[\ZUVT` M...}` T.L+ G.L+ M.L+) ` T.L+ 3*` 0d )ҥ `2)2}ҩ`p`0)9/`@0)ӈJJJJ)`Ѕ`ȱ`` B/ȥ`Hh}ƣĢ`ƥĤ`Ѣ /`ȱѢĦ`膡`}`ťƤe8夰L/ Ƥ8`ŦeѠe桊L/EW0A}W0EDL0 m0*(m0}L0 ˠө0 m0*(m0L1 ˠө1ȑ  m0*(m0LF1 Šө1ȑ9 m0}*(m0Lq1 ٠ө1ȑf . B/ .' p.' p. p. p. . G.L1}Ρ1 _+ G.L 2Atari File Developer1 L+ G.00L52 +0L 2 G.LM2 Version 1.42A }L+ G.Lc2by2` L+ G.L2 Dale Lutz2v L+  G.L2Functions Available:2 L+ G.L21. Batch Copy File}s2 L+ G.L22. Lock Files2 L+ G.L33. Unlock Files3 L+ G.L:34. Delete Files3) L+ G.L]}35. Format Disk3M L+ G.L3Your Choice-->3p _+ +`L3͌3L333 3* e G.1m}3 +3͌3L333 3* e G.m3 +`L44444 +`L@4}0! +`L]40# +`Lz40$ +`0L40X00W0}0 Y+L4D1:*.*4Ω "+L54 +0400 /0i00i0L4 Y+`L,5 *#5#5i&5$5i}'5#5$5m#5q5m$5r5q5&5r5'5L50m%500i0&5'50[0 3*e(5(5 +&5Ф}'5L`5 +`L50 G.L55 L+000L60i G.L6 6 L+Ͷ000L=680 G.L66 62} L+`LI6 G.80ŮLk6E6Lt680E6D6C6E666C6D6L60mC60mD6 3*}W0e0X0e0C600 )5C6ЧD6L6`L6 G. +00 3*W0e0X0e000 )5 G. +}`L87 G. + G.0i0i 3*W0e0X0e000 )5`L7800000 0L7}0Ȍ0ʹ000L780000 6 5`L70080Ͷ000L8800000ILM80 0LM80I} 0ILM80000 570I 0IL800800Ů00L800 570I 0IL8800E }0IL800 5`L808IL8 7L9IL988L8 78L8L9IL9 7L9IL7988}L49 78L!9L9I IL9800000m088[0Ly98[0L98[08 3*W0e0X0e}0000 )500000L90m00m080EIL900 5`L:U:T: G.0 0Б}L]: + +L8:MORE:3 _+ + +LS: :L _+L:0 m0*(m0 _+ G.80M0 M}0L:80ŮL: + +L:MORE: _+ + +L: : _+L;0 m0*(m0 _+:U:}T`L#;;;A;;LM;;[0;;L+; . B/ 4000Ȍ0 F6 5IL; 8;Ȍ;d;;L;};;L; :Ls;`L;;;;;i;;i;;i ;;i;;ͮ;;;L"<;;;;I Lk=[0ILb>}k= 3*W0e0X0e000 ;0ILE> Z4Lb>0ILU> w4Lb>0ILb> =4k=L=`Ll>0`0}L> .L> Checking Disk>>>>>> 2/8&堅 h*>>͐>L> +>L>>> L+ +}0)>)>k>)j>) Y+L.?D1:*.*?' "+ Y+>)>)0IL?L}?This disk is already formatted.?]} L+L? Enter 'Y' to it anyway-->? _+>r +s>IYL?s>IyL?` +L?Formatting Disk...? L+L?D1:? 4`L?} Y+L @K:@ "+ +? Y+? +?`L<@5@ + +Lp@%Insert Destination Disk, Press ΢@J _+L@} -->@z _+ B/ ?8@6@85@@@6@LA6@[0ILA6@ 3*W0e0X0e0LAWrit}ing File: @ _+00 ; Y+0 "+L6A D:DOS.SYS0A, /LTA +LA6@i7@6@ m0*(m0}007@ m0*(m08AȱAAͼ0A0LA008@8@ +00LA Y+6@[06@L@5@A}LUB + +L"B Insert Source Disk, Press ΢B _+L=B -->B, _+ B/ ?8@`L[BVB Y+0} "+VB m0*(m000LB +WB00WB000M 0MLBVB 9@L0,00`LB}VBiWBWB m0*(m000`LC0 ;L0,0CACLaCC m0*(m0CL2C .}CACLCC[0ILCLCReading File: C _+C 3*W0e0X0e000 ;C XB0ILC8CC}0CLkCC 9@`LC 0IL4D 30Ȍ0@ͺ00L1D00LDLD ?080000ILUD >L|D0ILeD CL}|Dͱ0L|D0L|D m=LC``CD 30Ȍ0@ͺ00L1D00LDLD ?080000ILUD >L|D0ILeD CL$ 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 !BD}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC}COPY--FROM, TO?OPTION NOT ALLOWED697 FREE SECTORS COPYING---D8:COPY32.COMl# 0|D .L/%#}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E }1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A}LLOWED IN DESTINATION 0 <.|K L :::: :Lr:::IEL[::i:iIIL[:`:i::i}::L:`L{:w:w: C`L:L: D8:MEM.SAV: 8| 9 '9`L:L: D:DUP.SYS:̩ 8} x:ɀL: '9`88 |9Y:X: '9L); D8:DUP.SYS; 8::88 9 '98? :`;WL`; 9}Ln; ` :Y;Y;L;L;)} Setting Up ATARI 130XE Ram Disk; 9L; ; -9  } L;D8:; :9 :Y;L