@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`  `8  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D8:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D8:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED HELP DOC 016 COPYING---D2:HELP.DOCMl# 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- 128ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u05  15 2 2151^116115ύ011$r2ԭ5 3)5)5ԭx GT}@@L00)+& 2 L0=ɛ -L!1LV1L1 /3 3ȹ441L-4 v3 25 2H 2h͔5U}L3L3 2 k3U hh`DOC`QL3P1Lk0S1H /3h0B k3@ VL0LU!#$53 1181118V}1111Ε5 1Lk0552 1Ȍ1i111i11115Lk0pppB4f5&&&&&&&&^6f^6&&&&&W}&&A1@BJ D2ELVK@BHILV^Щ6 2BD2EJ VBD5EHI0 V0%5X}5 2iХiL[2 25 25`D:*.*` i@`8 ``@i `8@`0 BLV525<4Y}5`HH i ԍΗ552 ԍhh@ Lح1Э1Ѣ 24.4 24Z}4`D4E` 2BJ k3LVRH` 2BD4EhK)I JLV333 BASIC language TUR > TURBO BASIC OBJ| f}COM > MACHINE language DOC > DOCumentation PIC|MIC|FNT|MVM > Graphics AMS|MUS|MBD > Music LST > BASIC g} LISTing -Some MACHINE language programs can only be run by loading the MENU without BASIC! ------- -For s h}ome programs, XL/XE models may require a "TRANSLATOR" program (available from BELLCOM) to be loaded first! -Most i}programs are relatively self-explanatory; however, some may have separate DOCumentation files. Some BASIC programs m j}ay contain instructions in their program listings. LIST to read. -To view DOCumentation files one page at a time, k} press [START], [Return], or the Joystick Trigger to display the highlighted DOC file. Pressing the [Esc] key cau l}ses a return to MENU. -To print out a hard-copy of any DOCumentation file, [Q]uit the MENU, boot DOS, and then from m} DOS, use the (C)Copy command: D:Filename.DOC,P: -To use this great MENU program on your own disks, simply n} copy the file "AUTORUN.SYS". D:Filename.DOC,P: -To use this great MENU program on your own disks, simply ! softKEYS _________________________________ FUNCTION KEYS FOR ATARI 8-BITS By Bob DuHamel _p}________________________________ Wouldn't it be nice if the Atari 8-bit computer had programmable function keys, suchq} as on IBM and the ST? I never really missed them myself until I got an 800XL. I like being able to turn off the keyr} click and speed-up the cursor but I don't like having to do several pokes before I start working or after pressing [s}RESET]. If you're not in BASIC you can't make the changes anyway. For some time I have been thinking about combining t}the [OPTION] key with the number keys to make 10 or more programmable keys. I finally got around to doing it. Nowu}, with softKEYS, after I boot a disk with my soft key routine, I press [OPTION][1] to turn the key click off and on, [Ov}PTION][2] to change the cursor speed from slow to fast and back, [OPTION][3] to turn the disk write-verify on and offw} (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 x}to release the [OPTION] key if I want BASIC enabled. The routine is RESET proof and works with most programs I have try}ied it with. ABOUT THE PROGRAM _________________ I decided to design the routine so it can be thz}ought of much as a regular part of the computer. I assigned a permanent location for the main routine, SOFTKEYS, in {} memory. It intercepts the keyboard interrupt routine and checks to see if the [OPTION] key is pressed. If [OPTION] i|}s pressed SOFTKEYS checks to see if one of the number keys has been pressed. If so, that key is turned over to the k}}eyboard interrupt routine for processing. In other words, SOFTKEYS does absolutely nothing by itself. Display list i~}nterrupts work much the same way. The second program, FLIB, is a library of functions. The library initializes by c}hanging the jump vectors in SOFTKEYS to point to the functions in the library. By designing the routine this way, SO}FTKEYS can be loaded by itself and modified by another program to point to it's routines instead. I needed a safe pl}ace to put the SOFTKEYS routine. After some thought I decided to use the cassette buffer which starts at $3FD and en}ds 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 dat}a 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 r}outine. It will also allow you to use the DOS utilities, DUP.SYS, if you are using an incompatible function library }file. DISKIO's KILL command will also disable SOFTKEYS. (DISKIO is a handy disk utility copyrighted by Antic Publish}ing.) Three function library 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 will depend on whether you are using DISKIO and whether you want to use p}age 6 ($0600 to $06FF). The library has only four functions leaving 7 you can add yourself. There are two ways to p}ut together an AUTORUN.SYS file to install SOFTKEYS. The standard way is to go to the DOS utilities (by typing DOS i}n BASIC). From the utilities you can append the desired FLIB file to SOFTKEYS. To append the files: -First copy SO}FTKEYS.EXE and the desired FLIB file to the disk you want to boot from; -Next use the copy commad (C) to append t}he FLIB file to SOFTKEYS using the following syntax; FLIB.EXE,SOFTKEYS.EXE/A (Don't forget the "/A") -Fin}ally, delete the FLIB file (it is now appended to SOFTKEYS) and rename SOFTKEYS.EXE to AUTORUN.SYS. If you want t}o use SOFTKEYS with DISKIO you can append above finished SOFTKEYS file to the DISKIO AUTORUN.SYS file instead of rena}ming SOFTKEYS. Use FLIB.EXE or FLIB3.EXE with DISKIO. FLIB2.EXE will write over part of DISKIO. Another way to app}end 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 BASIC Power Pack or with some word processors. You then resave the complete file under the name AUTORUN.SYS. T}o do this with FASTIO: -Be sure that LNBUF in line 30196 is large ennogh to hold all the files; -Also be sure t}hat BUFF$ is empty by either typing RUN or BUFF$=""; -Type GOSUB RDFILE and D:(filename 1); -Type GOSUB RDFILE} and D:(filename 2) etc. After all the files are appended: -Type GOSUB WRFILE and D:AUTORUN.SYS To append the} files with ATARIWRITER: -Type [L] then filename 1; -Type [E] then move the cursor to the end of the file; -Typ}e [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] with ATARIWRITER PLUS); -Type AUTORUN.SYS. } CUSTOMIZING SOFT KEYS _____________________ The 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 KEY Check byte Jump Vector --- ----------- ----------- hex dec } hex dec 0 $0413 1043 $0416 1046 1 $041F 1050 $041D 1053 2 $0421 1057 $0424 1060 3 } $0428 1064 $042B 1067 4 $042F 1071 $0432 1074 5 $0436 1078 $0439 1081 6 $043D 1085 $0440 }1088 7 $0444 1092 $0477 1095 8 $044B 1099 $044E 1102 9 $0452 1106 $0455 1109 Table exit vecto}r $0458 1112 The jump vectors are indirect jumps through $0400. They must be changed to direct jumps to your rou}tine. See the FLIB.SRS file for an example of how this is done. If you want to pass the key on to the keyboard handl}er after your routine is finished with it, end your routine with "JMP ($0400)". This is an indirect jump through $04}00 to the keyboard interrupt routine. If you want to keep your key from the handler, 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 and should usually be k}ept short. A good type of routine would set a flag byte that another program could check later. You can also alter }the jump table in BASIC. Change the table with a routine like the following. This example assumes that a machine la}nguage routine starts at $600. 76 is the decimal code for a direct jump... 1000 REM Point OPTION 4 to $600 1010 J4=}1074:JMP=76 1020 POKE J4,JMP:POKE J4+1,0:POKE J4+2,6 It 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 stopped. This can cause disasterous results if you press a soft key when the program isn't runni}ng. 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 co}rrect key code is to use the following short BASIC program: 10 ? PEEK(764):GOTO 10 Run the program and press t}he 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. Enjoy...ll print on the screen. Just replace the check byte with the< softKEYS TECHNICAL NOTES _________________________________ Note 1: ------ SOFTKEYS mu}st insert itself into the keyboard interrupt routine. It does this by replacing the address at the keyboard interrupt} vector with it's own start address. Before doing this SOFTKEYS steals the original address at the keyboard interrupt} vector and stores it at SOFTKEYS' own exit vector ($0400). The keyboard vector may have already been stolen by anot}her routine, such as DISKIO. This doesn't matter. SOFTKEYS just becomes another link in the keyboard interrupt chai}n. All this vector theft takes place in the SOFTKEYS cold-start routine and only needs to be done once. The memory }used by the cold-start can be over written if needed. Note 2: ------ Protecting SOFTKEYS from [RESET] is a lit}tle more complicated than inserting it into the keyboard interrupt routine. First the SOFTKEYS cold-start steals the} DOS initialization vector (DOSINI). The computer uses this vector whenever [RESET] is pressed. SOFTKEYS then puts }it's own warm-start address in DOSINI. DOS must be initialized after [RESET] so the first thing the SOFTKEYS warm-st}art does is jump to the original DOSINI address. (DOSINI may have already been stolen by another program but that do}esn't matter as long as things are done in the proper order.) When DOS initializes it puts it's own initialization a}ddress back in DOSINI. SOFTKEYS then restores it's own warm-start address in DOSINI. The computer's reset routine als}o restores the default address in the keyboard interrupt vector. SOFTKEYS has to put it's address back during it's w}arm-start. Note 3: ------ FLIB.EXE and FLIB2.EXE are located where BASIC would like to put it's programs. To pr}otect themselves, these FLIB files change the address in MEMLO to reflect their presence. (MEMLO must also be change}d after [RESET] is pressed.) They do this by appending their own initialization routines to the end of the SOFTKEYS }warm-start routine. MAKING YOUR OWN FUNCTION ------------------------ The following is a routine to turn off SOF}TKEYS. Use this as an example of how to make your own routine work with SOFTKEYS. It is written for MAC/65. J4 } = $0432 EXIT = $0400 VKEYBD = $0208 ENDWARM = $0470 NOKEY = $FF CH = $02FC ENDLIB = $2981 GLBABS} = $02E0 ; ; ; * = ENDLIB ; KILL LDX EXIT LDY EXIT+1 STX VKEYBD STY VKEYBD+1 ; DONE LD}A #NOKEY STA CH PLA RTI ; ENDFUNCTION ; ;initialization ; ;changes jump table ; * =} J4 JMP KILL ; ;NEW PROTECTION ROUTINE ; * = ENDWARM LDX # ENDFUNCTION} STX MEMLO STY MEMLO+1 RTS ; ;INITIALIZATION TAILER ; * = GLBABS+2 .WORD ENDWARM ;} The initialization tailer tacks the initialization address to the file in the standard DOS format. The above funct}ion is assembled to work with FLIB.EXE. To make it work with the other flib files, check the file FLIB.ASM to find w}here the desired file ends (the address of ENDLIB). You could also edit FLIB.SRS to include the above function. END}WARM is the end of SOFTKEYS warm-start. ENDLIB is the end of the original FLIB file.include the above function. END[ softKEYS ADDITIONAL NOTES _________________________________ ON USING TURBO BASIC ____}_____________________________ SOFTKEYS is usually appended to the end of any AUTORUN.SYS file it is loaded with. In t}he case of TURBO-BASIC, SOFTKEYS must be loaded first. In other words, do not append SOFTKEYS to TURBO-BASIC. Appen}d TURBO-BASIC to SOFTKEYS. Be sure to use FLIB2.EXE with TURBO-BASIC. You can use the DOS utilities from TURBO-BASI}C with SOFTKEYS installed. The utilities will then work with SOFTKEYS. However, you cannot get back to BASIC by rel}oading the SOFTKEYS/TURBO-BASIC file. You will need to reboot ([OPTION][CONTROL][X]. You can also append the entire} SOFTKEYS/FLIB/TURBO-BASIC file to KILLKEYS.EXE. KILLKEYS.EXE will turn off SOFTKEYS so the appended file will not t}ry to activate SOFTKEYS when it is already active. So far I have been unable to make SOFTKEYS work with Atariwriter }or Atariwriter Plus.S when it is already active. So far I have been unable to make SOFTKEYS work with Atariwriter L)l 2lllllll3l5l0ll [  ` } L^q2lllllll3l5l0ll [  ` GIh@0 ܮyWyWЩPyɩ0LwL$&L +-L(L;pzH }`ph@0 ܮyWyWЩPyɩ0LwL$&L +-L(L;pzH KIh@0 ܮyWyWЩPyɩ0LwL$&L+-L,L?pzH$s5))Ih@0 ܮyWyWЩPyɩ0LwL5)$&LD)+-La)Lt)pz)(}`ph@0 ܮyWyWЩPyɩ0LwL5)$&LD)+-La)Lt)pz)( ;;;SOFTKEYS;;This program intercepts the;keyboard interrupt routine and;checks the [OPTION] key.;If the [OPTION] key i,}s pressed the;routine gets the CIO key which;caused the interrupt and jumps to a;vector table to perform a function;;EQU,}ATES;GLBABS = $02E0PAGE4 = $0400DOSINI = $0CVKEYBD = $0208MEMLO = $02E7CONSOL = $D01FKBCODE,} = $D209OPTION = $04K0 = $32K1 = $1FK2 = $1EK3 = $1AK4 = $18K5 =,} $1DK6 = $1BK7 = $33K8 = $35K9 = $30; *= PAGE4;;;Make room for exit vecto,}r;EXIT *= *+2;;DOS initialization jump vector;INIDOS JMP $00 modifyed by; cold start;;,}KBI routine: Check for [OPTION][x];then jump to vector table if;pressed.;CHECK LDA CONSOL AND #OPTION ,} BEQ TABLE;;[OPTION] not pressed, jump through;exit vector.; JMP (EXIT);;[OPTION] has been pressed, get CIO;,}key and check jump table;TABLE LDA KBCODE CMP #K0 BNE T1J0 JMP (EXIT)T1 CMP #K1 ,} BNE T2J1 JMP (EXIT)T2 CMP #K2 BNE T3J2 JMP (EXIT)T3 CMP #K3 BNE T4J3 JM,}P (EXIT)T4 CMP #K4 BNE T5J4 JMP (EXIT)T5 CMP #K5 BNE T6J5 JMP (EXIT)T6 C,}MP #K6 BNE T7J6 JMP (EXIT)T7 CMP #K7 BNE T8J7 JMP (EXIT)T8 CMP #K8 BNE,} T9J8 JMP (EXIT)T9 CMP #K9 BNE T0J9 JMP (EXIT)T0 JMP (EXIT);;WARM START;;Initialize ,}DOS;WARM JSR INIDOS;;Point DOSINI back to warm start;WARM1 LDX # WARM STX DOSINI,} STY DOSINI+1;;intercept keyboard interrupt; LDX # CHECK STX VKEYBD ,} STY VKEYBD+1;;ENDWARM RTS ;;;COLD START;;Steal DOSINI;COLD LDX DOSINI LDY DOSINI+1 STX I,}NIDOS+1 STY INIDOS+2;;Make vector to release keyboard;interrupt; LDX VKEYBD LDY VKEYBD+1 ,} STX EXIT STY EXIT+1; JMP WARM1;;Initialization tailer; *= GLBABS+2 .WORD COLD;,};;FLIB;;Function library for SOFTKEYS;;Equates;DOSINI = $0CMEMLO = $02E7ENDWARM = $0470PAGE6 = $060}00DOSEND = $1CFCDISKIOEND = $2934GLBABS = $02E0KRPDEL = $02D9KEYREP = $02DANOCLIK = $02DBSHORTD 0} = $14FSTRTE = $03LONGD = $30SLORTE = $06NOKEY = $FFCH = $02FCVERIFY = $57NOVER = 0} $50DVERIF = $0779COLDSV = $E477RTCLOK = $12KCTRLX = $96J0 = $0416J1 = $041DJ2 =0} $0424J3 = $042BJ4 = $0432J5 = $0439J6 = $0440J7 = $0447J8 = $044EJ90} = $0455;;Use PAGE6, DOSEND or DISKIOEND for;start address; *= DOSEND;;Toggle key click;CLICK LD0}A NOCLIK EOR #$01 STA NOCLIKEXXIT LDA #NOKEY STA CH PLA RTI ;;Toggle key 0}repeat delay and rate;from normal to fast or back;REPEAT LDA #LONGD CMP KRPDEL BEQ FASTSLOW STA K0}RPDEL LDA #SLORTE STA KEYREP BNE EXXITFAST LDA #SHORTD STA KRPDEL LDA #FSTR0}TE STA KEYREP BNE EXXIT;;Toggle disk write-verify.;DISK LDX DVERIF LDA #VERIFY ST0}A DVERIF CPX #VERIFY BNE EXXIT LDA #NOVER STA DVERIF BNE EXXIT;;Cold start;;0}Initialization for this routine;changes SOFTKEYS to look for;[CONTROL][X] instead of [0].;COLDST LDA #0 STA RT0}CLOK+2DELAY LDA RTCLOK+2 CMP #$30 BNE DELAY JMP COLDSVENDLIB;;Function library initializati0}on; *= J1 JMP CLICK; *= J2 JMP REPEAT; *= J3 JMP DISK; 0}*= J0-3 .BYTE KCTRLX *= J0 JMP COLDST;;Protect from system; *= ENDWARM LDX1} # ENDLIB STX MEMLO STY MEMLO+1 RTS ;;Initialization tailer; *1}= GLBABS+2 .WORD ENDWARM; STX MEMLO STY MEMLO+1 RTS ;;Initialization tailer; *0% ; ;FLIB ; ;Function library 5} ;for SOFTKEYS ; ;Equates ; 5} DOSINI = $0C MEMLO = $02E7 ENDWARM = $0470 DISKIOEND = 5}$2934 GLBABS = $02E0 KRPDEL = $02D9 KEYREP = $02DA 5} NOCLIK = $02DB SHORTD = $14 FSTRTE = $03 LONG5}D = $30 SLORTE = $06 NOKEY = $FF CH = $02FC 5} VERIFY = $57 NOVER = $50 DVERIF = $0779 COLDS5 }V = $E477 RTCLOK = $12 KCTRLX = $96 J0 = $0416 5 } J1 = $041D J2 = $0424 J3 = $042B 5 }J4 = $0432 J5 = $0439 J6 = $0440 J7 = $04475 } J8 = $044E J9 = $0455 ; 5 }*= variable ;FLIB FLIB FLIB ; ;Toggle key click 3 2 ; 5} ;0600 1CFC 2935 ADDB02 CLICK LDA NOCLIK0603 1CFF 2938 4901 EOR #$010605 1D01 293A 8DDB02 ST5}A NOCLIK0608 1D04 293D A9FF EXXIT LDA #NOKEY060A 1D06 293F 8DFC02 STA CH060D 1D09 2942 68 PLA 060E 1D0A 2945}3 40 RTI ; ;Toggle key ;repeat delay 5} ;and rate ;from normal ;to fast or ;back. 5} ;0600 1D0B 2944 A930 REPEAT LDA #LONGD0611 1D0D 2946 CDD902 CMP KRPDEL0614 1D10 2949 F00A BEQ FA5}ST0616 1D12 294B 8DD902 SLOW STA KRPDEL0619 1D15 294E A906 LDA #SLORTE061B 1D17 2950 8DDA02 STA KEYREP061E 1D1A5} 2953 D0E8 BNE EXXIT0620 1D1C 2955 A914 FAST LDA #SHORTD0622 1D1E 2957 8DD902 STA KRPDEL0625 1D21 295A A903 5} LDA #FSTRTE0627 1D23 295C 8DDA02 STA KEYREP062A 1D26 295F D0DC BNE EXXIT ; 5} ;Toggle disk ;write-verify. ;062C 1D28 2961 AE7907 DISK LDX DVERIF0625}F 1D2B 2964 A957 LDA #VERIFY0631 1D2D 2966 8D7907 STA DVERIF0634 1D30 2969 E057 CPX #VERIFY0636 1D32 296B 5}D0D0 BNE EXXIT0638 1D34 296D A950 LDA #NOVER063A 1D36 296F 8D7907 STA DVERIF063D 1D39 2972 D0C9 BNE 5}EXXIT ; ;Cold start ; ;Initialization5} ;for this routine ;changes SOFTKEYS ;to look for 5} ;[CONTROL][X] ; ;instead of [0]. ;063F 1D3B 25}974 A900 COLDST LDA #00641 1D3D 2976 8514 STA RTCLOK+20643 1D3F 2978 A514 DELAY LDA RTCLOK+20645 1D41 297A C930 5} CMP #$300647 1D43 297C D0FA BNE DELAY0649 1D45 297E 4C77E4 JMP COLDSV064C 1D48 2981 ENDLIB 5} ; ;Function library ;initialization ;064C 1D5}48 2981 *= J1041D 041D 041D 4Cxxxx JMP CLICK ;0420 0420 0420 *= J20424 05 }424 0424 4Cxxxx JMP REPEAT ;0427 0427 0427 *= J3042B 042B 042B 4Cxxxx JMP DISK 5!} ;042E 042E 042E *= J0-30413 0413 0413 96 .BYTE KCTRLX0414 0414 0414 *= 5"} J00416 0416 0416 4Cxxxx JMP COLDST ;FLIB3 not ;Protect fromprotected ;s5#}ystem ; 0419 0419 *= ENDWARM 0470 0470 A2xx LDX # ENDLIB 0474 0474 8EE702 STX MEMLO 0477 0477 8CE802 STY MEMLO+1 047A 047A 60 RT5%}S ; ;Initialization ;tailer ; 05&}47B 047B *= GLBABS+2 02E2 02E2 7004 .WORD ENDWARM ; ; 04b  *= GLBABS+2 02E2 02E2 7004 .WORD ENDWARM ; ; 08 b%DOS SYSb*)DUP SYSb SAUTORUN SYSb_HELP DOCbDoSOFTKEYSDOCbTECHNOTEDOCb TURBNOTEDOCbSOFTKEYSEXEbFLIB EXEbFLIB2 EXEbFLIB3 EXEbSOFTKEYSSRSbFLIB SRSb%FLIB ASMb'KILLHEADEXE