@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 ALLOWED223 FREE SECTORS COPYING---D2:TUBES.SCRl# 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- 164ɛ+,' 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 languag i}e OBJ > MACHINE language DOC > DOCumentation PIC|MIC|FNT|MVM > Graphics AMS|MUS|MBD > Music LST j} > BASIC LISTing -Some MACHINE language programs can only be run by booting the disk MENU "without" BASIC! -For s k}ome programs, XL/XE models may require a "TRANSLATOR" program to be booted first! [Also available from BELLCOM] - l}Most programs are relatively self-explanatory; however, some have separate DOCumentation files available. Some BASIC m} programs may contain instructions in their program listings. -To use this great MENU program on your own disks, n}simply copy the file "AUTORUN.SYS" onto your disk. * MENU written by DAVID CASTELL * program on your own disks, ^ Dear ATARI USER: Sector/Disk Editors are one of the most useful programs available to Atari users. There are many p} different types available in the Public Domain, sporting many different features. With a Sector Editor such as SECTOR q}TOOL, you can... - recover deleted files - fix glitched files - change directories - customise disks - add persor}nal details to your own commercial disks - change programs - and lots lots more Unfortunately, most Atari users s}do not know how to use Sector Editors to their full advantage. The following interactive tutorial by David Young will ht}opefully shed the needed light. This is just the information you have been waiting for!!! ***********************u}******* * ATARI DISK DATA STRUCTURES * ****************************** An Interactive Tutorial by Dv}avid Young INTRODUCTION ------------ The floppy disk is a marvelous and yet mysterious media fw}or mass storage of data. Indeed, to understand exactly how a bit of data is stored and retrieved from the surface ofx} the disk requires a good knowledge of physics. However, to learn about the data structures found on a disk requires y}no higher mathematics than hexadecimal arithmetic. The manual supplied with the computer usually does an adequate job z}of supplying all the technical details, but wouldn't it sink in better if the actual data on the media were viewed wh{}ile it is being described? The SECTOR TOOL program is used to demonstrate the disk data structures as they are being|} described. Follow the instruct- ions in the SECTOR TOOL document- ation file to run SECTOR TOOL. Once the program h}}as started, remove the SECTOR TOOL diskette and insert some other diskette that has been backed up. (Do not take any ~}chances with your valuable source disk!) Use the "R" (reset) function whenever you are requested to view a particular } sector on disk. Whenever you are requested to change the display format from hex to character, or vice versa, use the} "C" or "H" (toggle display format) function. THE DISK MEDIA -------------- The first disk struc}ture to be aware of is the sector, which on any computer system consists of a group of contiguous bits recorded at a }specific location on the disk. The disk drive hardware always operates on whole sectors, that is to say, it is not pos}sible to read or write partial sectors. Groups of sectors are organized into tracks forming concentric rings about th}e center of the disk. The ATARI system divides the disk into 40 tracks with 18 sectors per track for a total of 720} sectors. This is best visualized by taking the lid off of the disk drive and watching the read/write head move as c}ertain sectors are addressed. On the ATARI 810 disk drive this is accomplished by removing the 4 phillips head screws }hidden under gummed tabs at each corner of the lid. The 1050 is much easier to open. Just be careful and don't drop i}t. While inside the case, a bit of lubrication on the 2 cylindrical guide rails supporting the head will make the drive} less noisy. Just be sure to use a lubricant which will not attack plastic. If sectors 1 through 18 are read with} SECTOR TOOL, the head remains fixed on the outermost track. When sector 720 is read, the head moves in to the innermo}st track. When a disk is formatted, the head can be seen to bump sequentially through all 40 tracks. It is laying d}own the patterns on the oxide surface which will be recognized by the drive hardware as the sectors. The sectors are} all initially empty (128 bytes of 0), but at the end of the formatting routine, as described in the next section, th}e ATARI DOS records special data into certain sectors. The top of the drive can now be resecured. No more informatio}n about the hardware is needed to understand the higher level disk data structures of the software. Really...its not ha}rd. BOOT SECTOR ----------- At the end of the formatting process DOS reserves and initialize}s certain sectors for special tasks. Into sectors 1 through 3 is stored the bootstrap for DOS. On power-up the ATARI} operating system reads sector 1 to determine how many sectors to read and where into memory to load them. After it} has loaded in the specified number of sectors, DOS starts executing the new code at the load address + 6. Put SECTOR} TOOL into the hex mode and read sector 1 of any DOS disk. Byte 1 says that 3 sectors are read (sequentially) and byt}es 2 and 3 specify a load address of $700. (A 2 byte number is always specified with the least signif- icant byte fi}rst.) Byte 6 is the first intruction to be executed (a $4C1407 is a JMP $714). In this case the code which follows }sets up to load the File Management System of DOS into memory. This is called the second stage of the boot. Look at} the first sector of any other boot disk available (any game or program which loads in from disk on power-up). It mig}ht be seen that the program loads in entirely during the first stage of the boot, i.e. byte 1 of sector 1 has a secto}r count which represents the entire program. For more details on the disk boot process, see the ATARI Operating Syst}em User's Manual. VOLUME TABLE OF CONTENTS (VTOC) ------------------------------- Besides the first three boot s}ectors, DOS sets up sectors 360 to 368 as the directory of the disk. DOS uses the directory to keep track of where fil}es are stored on disk and how much disk space remains. Read sector 360 of a DOS disk with SECTOR TOOL in the hex mod}e and view a part of the directory called the Volume Table of Contents (VTOC). Information pertaining to the availab}ility of every sector on the disk is stored in this sector. Bytes 1 and 2 specify the maximum number of user data se}ctors on the disk ($2C3 = 707) and bytes 3 and 4 specify the number of free sectors remaining on the disk (707 for an e}mpty disk, 0 for a full one). Starting in bit 6 (the second to highest order bit) of byte $0A, each bit up through by}te $63 corresponds to a sector. A 1 corresponds to a free sector while a 0 means the sector is being used. When a f}ile is stored on the disk, the bits corresponding to the sectors used are set to 0. When the file is erased, the bits} are set back to 1. That is why DOS, when it deletes a file, can be heard reading the entire file. It is determining w}hich sectors were being used by the file so that it can free them back up. Notice that bits 1, 2 and 3 (bits 6, 5 an}d 4 of byte $0A) are set to 0. These correspond to the 3 boot sectors. Likewise, the 9 bits starting in byte $37 are }0 because they correspond to the sectors of the directory. These 12 sectors are thus kept from being overlaid by use}r files. If the VTOC is viewed on an older disk which has had many file additions and deletions, it may be noted tha}t the VTOC has become quite fragmented. Any file added to the disk may get stored into sectors scattered about the dis}k. How DOS keeps track of files spread over multiple sectors will be discussed shortly. By the way, even though the }operating system recognizes sector 720 (try reading it; should be all zeroes), DOS never makes use of it. True to Mu}rphy's Law, it adopted the number scheme of 0 to 719 instead of 1 to 720. No need to bother trying to read sector 0!} THE DIRECTORY ------------- Of all the disk data structures, probably the most important one }to be acquainted with is the directory. The 8 sectors follow- ing the VTOC (361-368) contain a list of all the files o}n the disk along with their size, starting sector and status. Put SECTOR TOOL into character mode and read sector 36}1 of a DOS disk that has several files on it. It can be seen that the name of the first file starts in byte $05 and the} extension (if any) starts in byte $0D. If any of the 11 character positions of the filespec are unused, it contains }a blank. Notice that the filenames start every 16 bytes, allowing 8 direct- ory entries per 128 byte sector. Thus, t}he maximum number of entries for the 8 sectors of the directory is 64. Now put SECTOR TOOL in hex mode and read sect}or 361. The first byte of each 16 byte entry contains the status of the file. For a normal file that byte is $42, u}nless it is locked, in which case it has a status of $62. A deleted file has a status of $80. An anomaly occurs when-} ever a file is opened for output (from BASIC, perhaps) but is not closed before the computer is powered down or glit}ched. Since the status of an open file is $43, DOS will neither recognize the entry as "in use" nor "deleted". Even} the sectors which may have been written out will not really exist on disk because the VTOC is not updated until the }file is closed. The only harm done is that this bogus entry will take up space in the directory until the disk is re}formatted. (One other solution would be to change the $43 to an $80 using SECTOR TOOL; refer to the alter sector funct}ion, "A", in the SECTOR TOOL documentation.) The second and third bytes of each entry contain the size in sectors of }the file (low order byte first) while the fourth and fifth bytes specify the first sector of the file. DOS only need}s to know the first sector of a file because each sector points to the next sector of the file in a process called "lin}king". LINKING ------- At this point it would be best to explain how DOS forms a data fi}le on disk. First, the user must open an I/O channel for output to the disk, perhaps with the BASIC "OPEN" command. } DOS responds by creating an entry in the direct- ory with the specified filename and a status of $43. DOS reads the} VTOC into memory and searches the disk map for the first free sector. If a free sector is found, it's number is used }as the starting sector in the directory entry. Now, when the user begins to output data via this I/O channel, perhap}s with the BASIC "PUT" command, DOS waits until it has collected 125 bytes of user data in a buffer. Then DOS adds 3} special bytes of it's own and outputs the sector to the disk. I call these 3 bytes the "sector link". The sector l}ink, bytes 125 to 127 of the sector, contains 3 pieces of information. The high order 6 bits of byte 125 contain a num}ber which represents the position of the file's entry within the directory (0 to 63). DOS uses this number to check t}he integrity of the file. If ever this number should fail to match the position of the file's directory entry, DOS g}enerates an error. The low order two bits of byte 125 and all of byte 126 form a pointer to the next sector of the fil}e. A pointer is the address of a record in the computer's memory or, in this case, the address of a record on disk, }the sector number. The next sector of the file is determined by scanning the bit map of the VTOC for the next free s}ector, which may or may not be the next sequential sector of the disk. Thanks to the link pointers, all sectors of a} file need not be contiguous sectors on the disk. The last byte of the sector link (byte 127 of the sector) contains t}he number of bytes used within the sector. This byte will always be $7D (125) except for the last sector of a file, }which will probably be only partially filled. DOS writes out this partial sector only when the user closes the file,} perhaps with the BASIC "CLOSE" command. When an output disk file is closed, DOS writes the newly updated VTOC back }out to sector 360. It then updates the file's directory entry by changing the status to $42 and filling in the file }size (bytes 1 and 2) with the number of sectors used by the file. This completes the process of creating a file on dis}k. Now, when DOS is requested to read a file from disk, it finds the directory entry of the specified file to determ}ine the start sector. Then, following the link pointers, it reads the file sector by sector until EOF (end of file) }is reached, indicated by a link pointer of 0. Equipped with a basic understand- ing of how a file is stored on disk,} try looking at a file with SECTOR TOOL. In character mode, first locate the name of the desired file in the directory} (sectors 361-368). Then put SECTOR TOOL in hex mode and look at the fourth and fifth byte of the entry to determine} the start sector. For example, if these two bytes were "1F 01", type "287" in response to "Sector #?" to read the f}irst sector of the file. Observe the last three bytes of the sector and verify that the high order 6 bits of byte 12}5 correspond to the directory entry position and that byte 127 is the number of bytes used (probably $7D). Then dete}rmine the next sector of the file from the low order 2 bits of byte 125 and byte 126. For example, if bytes 125 and 12}6 are "1D 20" then the next sector of the file is $120 and the file is the eighth entry of the directory (the first e}ntry being entry 0). If the file is not too long, it would be instructive to follow the sector links to EOF. Once t}he ability of finding a file on disk and following the sector links is mastered, all that remains is to become familiar} with the 3 types of files used by DOS. (NOTE: SECTOR TOOL will automatically follow the sector links of a file if i}t is in linked mode; refer to the SECTOR TOOL documentation.) DOS FILE TYPES -------------- Th}e first type of file is not a true file, per se, because there is no entry in the directory for it. This file type inc}ludes the boot record and the directory itself. And since the sectors which make up these files are not linked but, }instead, are related to each other sequentially, I call these records "sequentially linked files". When examining a } sector of the boot record or directory, merely increase the sector number by 1 to get to the next sector of the record}. An example of the second type of file is that which is created with the BASIC "LIST" or "SAVE" command. This file} consists of ASCII characters which either represent straight text, as in a LISTed file, or a sort of condensed text}, as in a tokenized or SAVEd file. Except when viewing the sector links, the character mode of SECTOR TOOL is best s}uited for examinimg this type of file. At this point it would be instructive to locate in the directory of a DOS disk }a file created with the BASIC "LIST" command. Upon determining the start sector, observe the file in the character m}ode. The BASIC program can be easily recognized. It may be noted that the carriage return-line feed character (CRLF}) is displayed in it's ATASCII representation (an inverse escape character) instead of executed. Now observe a file }that consists of a program that was SAVEd from BASIC. Since the text has been tokenized the program is harder to recog}nize. However, certain parts of the program are not altered during the tokenization process, notably text following }REM and PRINT statements. Now, having investigated ASCII files, it is time to discuss the last file type, the "binar}y load" file. The binary load file is primarily used to load 6502 machine code into memory for execution. However, i}t's format is so general that it can be used just as easily to load any type of data, including ASCII text. Locate a } game or other program which is run with the BINARY LOAD option of DOS. Alternatively, create a binary load file by sa}ving any part of memory (except ROM) with the BINARY SAVE option. Now observe the first sector of the file with SECT}OR TOOL in the hex mode. First, notice that all binary load files start with 2 bytes of $FF. The next four bytes ar}e the start and end addresses, respectively, where the data to follow will be loaded into memory. If these four bytes} were "00 A0 FF BF" then the data would be loaded between the addresses of $A000 and $BFFF. I call these four bytes a} load vector. After DOS has loaded in enough bytes to satisfy the load vector, it assumes, unless EOF is reached, th}at the next four bytes specify another load vector. DOS will continue inputting the file at this new address. Upon }completion of a BINARY LOAD, control will normally be passed back to the DOS menu. However, DOS can be forced to pass }control to any address in memory by storing that 2 byte address at location $2E0. To store the 2 bytes, it is necess}ary to specify another load vector as part of the file. If, for example, it were desired to execute the program load}ed in at $A000, the following load vector would be part of the file: E0 02 E1 02 00 A0 I call this specialized load} vector an autorun vector. It achieves the same result as the RUN AT ADDRESS option of DOS. Try to find the autorun} vector in the file being viewed. Although it could be at the beginning, it is most likely located at the very end o}f the file. CONCLUSION ---------- Anyone who has made it to the end of this tutorial and has} success- fully performed the exercises presented here should consider themselves proficient on the subject of ATARI }disk data structures. You now know more than 90% of Atari users. I hope this tutorial has been useful to those wishi}ng to gain a perspective about how data is stored on disk. At the very least it should have taken some of the myster}y out of working with this popular device. Have fun experimenting. ENDhave taken some of the myster^ SECTOR TOOL =========== copyright (C) 1985 John David McFarland III The Atari} computer program SECTOR TOOL (SECTOOL.BAS) and this documentation are copyrighted. Copy them freely and pass them on } to your friends. If you decide to keep and use SECTOR TOOL please let me know how you like it. John David McFarland } 3206 Dorset Drive Little Rock, Arkansas 72204 SECTOR TOOL is a disk utility designed for single/double density/side}s. SECTOR TOOL does support Atari's enhanced density (the 1050 drives and DOS 2.5). It is written in BASIC and supple-} mented with machine language subroutines. DEFINE DISK ----------- 1. Select drive: SECTOR TO}OL supports drives 1, 2, 3 and 4, contrary to the indication on the screen. 2. Select density: ingle,  } nhanced, or ouble. 3. Select ingle- or ouble- sided. If you use both sides of a diskette with a s }ingle- sided drive such as the Atari 810/1050 you will need to turn the diskette over to read the other s }ide as you normally would. The double-sided option is just for double-sided disk drives. SECTOR TOOL will p }ause a few moments to read the disk directory (sectors 361-368) and pass control to the sector display screen.  } SECTOR DISPLAY SCREEN --------------------- SECTOR TOOL defaults to sector 361, the first sector of the disk d}irectory. The following functions are supported: eq. - The key causes the next sector in numerical order to b}e read and displayed. causes the next lower sector to be displayed. ink - The key causes the sector }indicated by the link bytes of the current sector to be read and displayed. causes the last sector linked t}o the current sector to be displayed, provided you had entered the current sector via the command. The backward l}ink function only remembers the last forward link. eset - The key displays a request for a sector number and }then jumps to, reads, and displays that sector. ir. - The key displays the first 16 filenames of the current }directory along with the file status flag (FL), starting sector number, and number of sectors. Press or to disp}lay the next 16 filenames, etc. Press any other key to return to the main display. causes the first sector o}f the current disk directory to be displayed. disk - The key allows you to re-define the drive number, densit}y, and number of sides. lter - The key presents a cursor and invites you to alter any byte or series of bytes a}s you wish. The bytes may only be altered a row at a time (a maximum of 8 bytes) and should be entered in the same f}ormat as the display. You must press on each row in which you have made changes or the changes will not be r}ecorded. If you wish to change one or more bytes on the same row that the cursor starts on you must move the cursor off} that row and then back on it. (This is due to the way the Atari editor inputs data.) The data written to the indicat}ed sector is taken from screen position. ex - The key causes the sector data to be displayed in hexidecimal f}orm. har. - The key causes the sector data to be displayed in character form.

rint - The

key sends a} facsimile of the display to the printer. In double density mode both pages of the sector display are printed. If you }only want to print one page of a double density display (i.e. bytes 0-127 or 128-255) press . ext - The < }N> key toggles the display of the two pages of a double density sector. ind - The key allows you to define up!} to 8 bytes to search for within a range of sectors or within a file. To escape during a search press any key. ov"}e - The key allows you to write a copy of the current sector to any other sector. dir - The key allows you#} to establish a working disk directory other than the standard disk directory. Enter the starting sector number of the$} working directory. re-establishes the default directory. race - The key will ask for a starting sec%}tor number and then follow the sector links to the end of the file. A list will then be displayed of all the sectors &}found to be linked. You may abort a Trace by pressing , for full abort, or any other key to see a current link l'}ist. uit - The key terminates the program. NOTES ----- The "error detected" (}sign is displayed when any kind of error occurs. This is just a warning. It does not mean that a fatal error has occu)}rred. SECTOR TOOL ignores most disk errors so it is possible to recover some bad sectors by reading and rewriting the*} bad sector. As an alternative, you could move the data from the bad sector and make the appropriate changes to the l+}inkage bytes and bit map (VTOC). Because the first 3 sectors are boot sectors they are always single density. In doub,}le density mode you will not be allowed to read sectors 1, 2, or 3. To read sectors 1, 2, or 3 of a double density di-}sk use single density mode. The Find function may be set to follow the linkage within a file or to read sequentially.}. The Find function reads across the byte count and linkage bytes (the last 3 bytes of a sector), so that a string of/} data bytes starting near the end of one sector and continuing into the next sector will be recognized. If you make 0}an alteration to the disk directory, this change will not be revealed by a command unless you first re-read the d1}irectory via an command or a / command. Problems will be encountered if you try to alter data bytes in2} character format on rows that contain 'EOL' characters. In that situation it is recommended that you make your altera3}tions in hexidecimal form ($9B). When the

rint function is called from the character display, an inverse characte4}r will be printed as a normal character and a non-printing character will be printed as a ".". Endte{ :/:SDSKIODUNIDCOMNDSKSECTONOKSIDOLDSECTONXCCOGNOSBYTECOUNFPOINODUMMXXXXHEXSCRPUTXHEPFLAWO6}RKDIROFLINEDDIRDUMPDSK2SIJCOTKSSESMAFPOINTFNCOUNOLDSECTENFTRACESECTORTRBI 7}@@Aa@@ @ $ @ @  oAa8}B%6 WW$@rAa@PP a JK!r "r9}HU#@$@%&'(At)*A +,-./@01A :}234E&&================================&&> ӠŠàԠϠҠԠϠϠ̠ <&&> (SINGLE/DOUBLE D;}ENSITY) <&&> (C) 1985, 1986 BY <&&> JOHN DAVID MCFARLAND III <&&> VER. 0.861A 01/16/86 <}<&&> <&&> 3206 DORSET DRIVE <&&> LITTLE ROCK, AR. 72204 < &&=====}============================O6-Aa!A)@3A0@E@@O B %%============>}===================#%%> SUBROUTINES <$%%===============================(C -@6@?}<2@"@@ C$21.6-?:C:,<< ENTER SECTOR B}NUMBER CHECK RANGE D}& READ SECTOR <$$==============================E+!$)+ @*"@,) @5 B ;6-E A'E}6-6-@'6-@ @P A0$$==============================$$> DISPLAY DATA CONTF}ROL <$$============================== (}( D-@% BP/( ҠD(G}Link Sector : X!26-P:+&@,'@,%@>!@L6-&@X6-@6-?:C:, WRITE <$$==============================o @@-@@!o(JUse S}cursor controls to change any byte. Press on each row.RAR'-@2@/( 9 @T}C AR6.7@,,AR@,6-F:@,&@!! )!@AUS"@g#-U}@O67@ &@$,.7@"&@$,S "@r A@ -@7%@( BV}4-@@!*(Is that all?4 @#@*@x# ADD67@%$@%+A($W},<@%$@%A($,."@A0"@xA j-@@!`(EIf you're sure youX} really want to write this sector press .j @@A&6-@ @P0 A`##Y}=============================##> LINK DATA <##=============================..6-P:@:7A($&Z}@,,'+@$,,OO6-+@:7A($&@,,&$+@$,,$AV%@:7A($&@,, @)!$6[}-6-@:7A($,,$$##=============================##> MOVE SECTOR ROUTINE <##==================\}===========s-@@!I(MOVE sector # to sector # : ----[ARc(m @s6-]})AR@)"A33!$)+ @*"@,) @AX-@@!N(2Pre^}ss <> to move this sector to sector # X @ @A) 6-6-@ @P) A`##_}=============================##> HEX CONVERSION <##=============================YY6-?:C:DhhhЩ`}΅ͤ.Hȱ80 h80  ȄΤ͑Ȅ`, INTRO <'""============================$'5#@@E:5AR@b}']];@6,;A`,;AV,;@,;Ap,;A H,;Ac,;@u,'<<;@,;A,;Ac},;@,;AW`,'; 6.67A H,.)67@,./6.56.;6.'6-@r' B 't @@d} BP)-@@>(Drive # or ?H @^ @P)!@Rj6-@t B'6-&@H'e}-@0@('6-!-@@ _(9ingle, nhanced, or ouble density ?i @f}u"@6-@'b6-A "@i'6-@36-A#?6-@Q-@0@X(>:,b Bg}("@h6-@ (!! @)!@B(-@0@(>:,(a6-!-@@?(q}jb%DOS SYSb*)DUP SYSb SAUTORUN SYSb_HELP DOCboTUTORIALDOCb3SECTOOL DOCbv5SECTOOL BASbSECTCOPYBASbPDISKMAP OBJbE!FILEDUMPBASingle or ouble sided ?I @U"@a6-@("@h6-@((!! @)!@B-(-r}@0@(>:,<( @@Z(--@@-(*6-Aa B *""===============s}=============*""> DISK HANDLER <*""============================*y96./hhhhhhhh h hht}hhh hY67@H<@H,.>:Ab,y67@I<@I,.>:A%,*` 67@P<@T,.@67@U<@Uu},.>:Ab,`67@V<@V,.>:AS,*tt67@W<AE,.Yҩ1 W@ Y  iv})ұ%э ȱ΍   iΐϭ  *,,67AF<Ab,.  У`*""============================*""> w} SCREEN DUMP <*""============================*TT6.JhhhХYӥXhhi(Ґɀ` x}@i @(`*""============================*""> SCREEN DISPLAY <*""============================*ty}T67@<@W,.9hhhХYϥXiΐhhͩ҅өԤұ{ҦCFJJJJt67@X<@X,.>:Ab,*E%67@Yz}<@h,. ҈)E67@i<@i,.>:Ab,*C#67@p<@w,.C67@x<@x,.>:@',{}*nn67@y,.[ iiӑлӥi(ΐɠɀ` i@8 ӑп`*""===========|}=================*""> SEARCH FOR A STRING <*""============================*RR6.HhhhhhhhhhР}}ߥЅԥх`ԅ`*""============================*""> SIDE BARS OF MAIN DISPLAY<*""=========~}===================*c6.hX˥Yhhi567@ ,.>:Ab,K67@!,.ːc67@',.>:Ab,*v#6}7@(,.͑i;67@D,.>:@0,v67@E,.+ː̱͑i ːi͐ΰ`*mm6.c}*e!67A,.!!}967A,.>:@4,M67A,.e67A,.>:@4,*<<67A ,.)##$$%%&}&*$*""============================*""> PRINT <*""============================+B B}-@@P:8@B B+%"@6-% B@ + 3 3+F/3 Byte count : } SECTOR: C3 Link sector: F3 +-@@*+6-?:C:,'H A R+$S+FFF:A,A8*F:A,%AV$F}:A,BBU+R-@ @ 0(D-@@N @@R V+((~~~~~~~~~~}~~~~~~~~~~~( B\+""============================]+""> DIRECTORY <^+""============================}p+ 6-z+C-@@!2(Reading Directory...C67A H,.+_6-@6-A`'6-@1 @P}76-_6-@:7@,,%AV$@:7@,,+::6-?:C:,<<@ TRACE FUNCTION } <.""============================.Y6-!-@@!O((Enter starting sector # : ----Y @}.33 @)!$)+ @*"@,A.a6-@6-@'6-@-6-56.F67AW`,.U6}7@,.a6-.G 6--@@!-( Tracing G67@<@,.=:,/b-@@!( } %6-/ @P9 A0T67$@%@,.b"B ` / F:Ad,AUB"/=67@%$@},.=:,-6-%@36-= B @/""============================/4 (}-@4(&/}-@+-@@"9-$@(A:7@%@$+$@"%&@,%<@%@$+$@"}%&@,%,,0/-$@"%%'@ '#'- B!:/O  6-%A+-@@#;( 宮E }@O B `D/4-@@#!"4( N/D-@"@#*(4 @:6-}D AU/(F:Ad,"@(6-( AU/6-@ B `:""============================:""> OTH}ER SUBROUTINES <:""============================:EB(9 E$:}g (}-@@d(DӠŠàԠϠҠԠϠϠ̠ (C) 1985 by J.D.McFarlandg$R""===================}========= R""> FIND FUNCTION < R""============================lR>-@@!>($You may search for }up to 8 bytes.R-"@g-( --------RK"@rK(6 -- -- -- -- -- -- -- --}R1AR(' @1 AR4AR F:@,@#ARV"@r*}6-+B:,%@,'@;67@),.*E A@ V6.7@<,R)B:,!@)6.7@<@,R B}Rw#6-@%+&@,$@5-@@![( Starting at sector ----e @q"w6-R}*$&@6-RN6-!-@@!D(Follow linkage (Y or N) ? N @RO"@)"@v}96-@%+&@,$ARE6-O BRI-@@!9(Ending at sector ----C @I6-}R' )!$&@'6-$&@R:AR@'-@@!:( Searching R ! B0P A}RP-@@!( 4F:Ad,AUFAdAUP A R) 6.67A,.)67@,.}R>46-?:C:,<<@ B0Rd/67A($&@,.7A($%@,d6-?:C:, AND MORE SUBROUTINES (H BPpq$zq$ @@ @@! @@$$t""============================}t""> SIGN-OFF SECTOR COPY <&&> VER. 1.0 05/2}7/84 <&&> BY JOHN DAVID MCFARLAND III < &&================================2#@@E:5A}R@G-@@(;ŠҠ٠ by COGNOS (C) 1984<; A"'6-}%@1 A; A`F] A5-@@N()Enter: from unit #,to unit # ]@P9}9+"@)"@,*+"@)"@,AZ @pdy-@@A(&Enter: ingle/ouble density } a@@K:n)@y@n>-@3@(>:,("@46-@> A@}x%"@h6-@% A@ Ay-@@A(&Enter: ingle/ouble sided a@}@K:n)@y@L-@3@(>:,("@66-$@B6-@L A%}"@h6-@% A A@;-@@ A@1-@@; A@y-@@}A(&Copy : ll/art of disk a@@K:n)@y@T-@3@(}>:,("@e46-@B6-A $J6-&T APT"@!-@@J($Enter: starting sector,endi}ng sectorT A0 Al-@@/( >@N6-&%@l"@* }@A!)!$A A 6- 6--P:', 6-%$ &$ 6-&$"}7 A5-@@) A7"A ,G-@@ A +"=-@@"G AP}6=-@@" A0) Ap3 A= A@@E-@@ AP1-@@; A0E A}pJk A5-@@) A ;-@@E APW-@@a A0k AT ^((}}finished........% A5(r$$==============================|$$> SUBROUTINES <\-@@}/(a moment please......K-AeAe%A O"UY \$B?(4INSERT SOURCE DISKETTE IN} DRIVE B$=:(/INSERT DESTINATION DISKETTE IN DRIVE =$C@(Pass %@ of P:',%@ } C$C -@6@<2@"@@ C$UR(J } U$k(and press ...0A@dP@@K:]})@h@k$e6-I:,+6-P:'AV,&@:;AV$,B6.S67$AV,.b67@,.e}$*'6-?:Ae<<@F  \ L HS  >F  \ L HS FF >F  tU $"FE  wU  wU!}    wU  tU  %oF[F } R   N   \ HS R  wUxs!}F`E L  |F M |F -M  |F EM  |F R O GG& % G O ( %#GF O!}sF  1\  9HsF  mGx  sF1B T  & %G!} ( %G  } D  }     HH } ~  2D  !} %5HG c W sF _M |F_ _ &IH_ "!}#H ] i a D[ [ &IH[ "#H Y [  c W IIHH[ sF_ _!} (&wJ5I_ "#I_   JU  U B$tJa a &IIa "#hI _   ] !}wI  a a &IIa "#I _   ] I   U JJ    !} [ a \ mM U  U uM  UW "#c "#c (tJc [ *I  \ yM Ue !}R] c O] & % J] U ( %JwJ [      &+K KKK "#!}J      K  Drive %d: Used: %5d Free: %5d%c=Used%c=Empty%1d0123456789<<---- Tra!}ck Numbers ---->>This program is in the publicdomain. Please feel free to distribute this program.Enter drive # to maL!}Lp(1-4 or 0 to quit) : Insert disk into drive %dand press [RETURN] : D:*.*Error reading diskAtari Disk VTOC Mapper!}VERSION 3.1 - 11 April 1985Copyright (C) 1985By Michael Curry & SLCC<< Press any key >><< to continue >><< !} >><MM< Display Options >>1. Map Entire Diskette2. Trace Specific FileEnter Selection (1 or 2) One Moment...%2d. !}%s.%sEnter File # -> MN   &M     "#   0  (MM !} &N  "# -    "N   N   &NiN "# #"F!}N       NO     VN    %N "N  !}     % O "#N  "#   "# %5O O    '{Oi!}O "OO   _O OP  O $  $  $O "OOO !} +$  -$ P -$O    "  0)  9'TP    0  "P!}     P PQ$  $  $P "PPpP TQ 0)  9'P!}  00Q a)  f'Q  W0Q A)  F'-Q  70QTQ    !} "P   &Q @ QR  tU $QQ "pQ $Q    !} bU  r$Q R w$Q R a$R R        !} S    &tR R   RS   bU   S R !}    S 00 R R   x   S &#S   H zU !}   VS  bUS    ST SS 0 !}   S  "#  TS # &S  $  $   :%   :% !}  :%yT U /U   /U  /U    TU  . _U &T  !} .     /U a& % T z( %TT  A& % U Z( %%U!}.U  00      2U00 0u _U000!0D:UV zU  !}    zU tU V zU     zU tU   zU V!}   zU N #X   % _U &{V  VS VW(V "}    S         GW " #   -$W  DW"} 0)  9'AW    0DWGWV       zU d$W  WX "} 'XX s$W   ZX c$W   ZX x$W   UYX  R"}   " #CV   ' &sX  "# -   X "} XY   (X  "#  0      sX $X  "# 0 "}   (#Y    4[  VS &QY    4[   "} )YZZ      (Y 'Y  "#  0Y  "#  a  "}  yY $"Z  "# 0    (PZ    4[  VS &~Z "}    4[ZU[ (Z   4[  R &Z   4[  N " } ([    4[  VS &0[    4[ #" (T[  R4[ V[U\  R " }   0   ^ |R ^  ^ wU U  }U T  wU       S " }  \  R T  wU U  }U^  R U  }U T  wU        wU V\U" }] ^ wU   wU U  }U T  wU       S p   tU |   tU " }x   tU    tU \ .]] ].]&]  )]0] n])] \ .J]Q] "}Y].Y]V]^a]  d]k] ]d]$0 &]  # @)]  ]   )]  "} ] #  tU tU   &^] S:00L 2Li0L0L0L0L1LP1L^1L1L1L1L1L1 3ت"}ʎL08L0إ M0ԆLa4L0 HȱHL0JH @3lhhh hhBhhDEhhHIhhJhhK V"}Ii``hhh) BHI V0`L0hhhhh) BHIL0hh01hhh L 1`hhh"}hhhhL41`hhhHlhhhhhhh ``Ls1hhh"}`hhhhh`hhh𪈱`hhhȱhh`hhh) hhhh) 12 hh)`dbc@2L!"}2CL36Щ2ѭ@ҭ@LF2@ @2C2l  j2عk2l`'013W3h3{3333333334-4E4a4444445"}5)5P5`5555556*696B6^6q6666666664dbc 1 run-time-error ""Type a key to ret23urn to DOS.2 BȝD2"}E8HI Vl @3؅ԘLF2ЅȱЅ٥iА` @3؅ȱ؅LF2 @3e؅ԥeمLF2 @3ԑLF2 @3"}ȥՑLF2 3ԑإ8ҥLF2҅ȱ҅` 3ԑȥՑL3ԅԄLF2ԪȱԅՆLF2BL3 @334؅ԥمLF2 4ԑȥ"}LF2iҥi `AL3Ա҅ԊȦձ҅ՊLF2 4 @3Рȥёҥ؅ХمLF2҅ȱ҅ _2إ8؅ҥLF2"}б҅ЊȦѱ҅ъLF2 @3؅ХمLF2L4eЅАLF2 @3L4 @3e؅ҥeم45AL3LF2"}&LF2eԅȱeՅL38ԅȱՅL3ԍՍҍȱҍ 7ԭL3 p5ԭL3 p5ԭL3ҍȱ"}DL3դL87ԅȱՅL3EԅȱEՅL3%ԅȱ%ՅL3҅ȱ҅FfL356ȱ҅L3"}҅ȱ҅&L3Ա҅L38ԅԩՅLF2EԅԩEՅLF2LF2LF28ԅȱՅ` M6ʆL"}3 M6ԅL3 M60 M60 M60åп M60ՐнԐՐЪԐПՐ67 "}ԐLg6Ր԰Lz6&&& L27 `ɀE ɀf8ਊ"} 7$ 8$P 8`E0 IIL78L7Ff eeF7" }7fff$ 8` 2`E0 IIL78L7Ff eeF7 #CDDZ"j"AAHDHDIADBGINOUSSANEVPOPOPRSFNCHCHS&"}   BB"&#}&@7 @ (@ G  FILEDUMPLLROUTINE TO GET BYT&$}ES FROM DISKETTE AND PRINT HEX, DECIMAL AND OP CODESWITH PRINTER(11;@,;@,;@,;@,211&%};@,;@,;@,;@,<LL;@,;@ ,;@ $AV,;@,;@$AV,A'&&}@'@@9F=6-B6-B'6-1 B=6-P< +!(PRINTER (Y/N&'})%<B:,"@Q 4Y AR%(Enter skip count%6-U. @6-A:,$ B.&(} @X6- BZ(Enter complete filename[B:,"@\* @!*(@&)} _<@+@@<OPEN DISK FILE` B Ac (FILE NOT FOUND @&*}dFOR LABEL REFERENCEnFOR LABEL REFERENCE6-F:Ad,"AUA5"@!AdAU&+}+ A5 A5"@5!AdAU+ A 5 A5"@")"@b+AdAU5 AP&,} A6-&@ 6- 6- 6.$ A)@$ B&-} 6.7@<@,<6-%@<6.7$@ %@<$@ %@ ,!..6.7$@%@<$&.}@%@,&(:   02!2(@:   : AX!$&/}bA#@@P:/6-@>( ҠA$l"$v-@6-*( Ҡ&0}-$6!@&6-6( Ҡ$$(CONT may be used to continue& A)F:A&1},"A6&( Input EOF)4( I/O Error F:A,(@46-((( Type CONT and to continue&2}& @'INPUT CONVERSION ROUTINE' GIVEN A$ (DIM A$(5)), WITH$'!!LEADING 0 FOR HEX, CONVERTS.'!!ADDRESS TO&3} BINARY (DECIMAL)8'IN D. DESTROYS TRAP, WITHB'D=-1 IF INVALID VALUEL'!B:,"6-!$V'B:,"@&4}B`'$$7@<@,40B j' B6-A:, Bt'$~'6-6@ B$'46-&5} -@B:,4 BP'L7<,1A*7<,/FB6-$@%@:7<,,%@&@:A,L B`'D7<&6},10*7<,/9:6-$@%@:7<,,&@:0,D B`'6-6@'   $'OUTPUT CONVERSION ROUTINE'!!GIVE&7}N D (DECIMAL), CONVERTS'!!TO FOUR CHARACTER HEX IN H$'(DIM H$(4)), USES HI, D1,(D2. D IS NOT DESTROYED (6.&8}0000 $(& 6-&-@@6@($6-P:'@,$6-&$@((6!@ ,67<,.>:@:A&9},%&@,6 B2(67<,.>:@:0,%,<( 6- $**uu67@<@,.ZBRK ORA (I X)NOP NOP&:} NOP ORA Z ASL Z NOP PHP ORA IMM *uu67@<A,.ZASL A NOP NOP ORA ABS AS&;}L ABS NOP BPL ORA (I) YNOP NOP *uu67A<Ap,.ZNOP ORA Z X ASL Z X NOP CLC O&<}RA ABS YNOP NOP NOP ORA ABS X*uu67Aq<A`,.ZASL ABS XNOP JSR AND (I X)NOP NOP &=}BIT Z AND Z ROL Z NOP *uu67Aa<AP,.ZPLP AND IMM ROL ACC NOP BIT ABS AND ABS ROL ABS &>} NOP BMI AND (I) Y*uu67AQ<A@,.ZNOP NOP NOP AND Z X ROL Z X NOP SEC AND ABS&?} YNOP NOP *uu67AA<A0,.ZNOP AND ABS XROL ABS XNOP RTI EOR (I X)NOP NOP NOP &@} EOR Z +uu67A1<A ,.ZLSR Z NOP PHA EOR IMM LSR ACC NOP JMP ABS EOR ABS LSR ABS NOP &A} +uu67A!<A,.ZBVC EOR (I) YNOP NOP NOP EOR Z X LSR Z X NOP CLI EOR ABS Y+u&B}u67A<A ,.ZNOP NOP NOP EOR ABS XLSR ABS XNOP RTS ADC (I X)NOP NOP +uu67A &C}<A ,.ZNOP ADC Z ROR Z NOP PLA ADC IMM ROR ACC NOP JMP IND ADC ABS +uu67A <A&D},.ZROR ABS NOP BVS ADC (I) YNOP NOP NOP ADC Z X ROR Z X NOP +uu67A<Ap,.ZS&E}EI ADC ABS YNOP NOP NOP ADC ABS XROR ABS XNOP NOP STA (I X)+uu67Aq<A`,.ZNOP &F}NOP STY Z STA Z STX Z NOP DEY NOP TXA NOP +uu67Aa<AP,.ZSTY ABS STA ABS &G} STX ABS NOP BCC STA (I) YNOP NOP STY Z X STA Z X +uu67AQ<A@,.ZSTX Z Y NOP TYA &H} STA ABS YTXS NOP NOP STA ABS XNOP NOP  +uu67AA<A0,.ZLDY IMM LDA (I X)LDX IMM NOP &I} LDY Z LDA Z LDX Z NOP TAY LDA IMM  +uu67A1<A ,.ZTAX NOP LDY ABS LDA ABS LDX A&J}BS NOP BCS LDA (I) YNOP NOP  +uu67A!<A,.ZLDY Z X LDA Z X LDX Z Y NOP CLV LDA &K}ABS YTSX NOP LDY ABS XLDA ABS X +uu67A<A,.ZLDX ABS YNOP CPY IMM CMP (I X)NOP NOP CPY&L} Z CMP Z DEC Z NOP  +uu67A<A,.ZINY CMP IMM DEX NOP CPY ABS CMP ABS DEC ABS NO&M}P BNE CMP (I) Y+uu67A<A,.ZNOP NOP NOP CMP Z X DEC Z X NOP CLD CMP ABS YN&N}OP NOP +uu67A<A p,.ZNOP CMP ABS XDEC ABS XNOP CPX IMM SBC (I X)NOP NOP CPX Z &O}SBC Z +uu67A q<A!`,.ZINC Z NOP INX SBC IMM NOP NOP CPX ABS SBC ABS INC ABS NOP &P} +uu67A!a<A"P,.ZBEQ SBC (I) YNOP NOP NOP SBC Z X INC Z X NOP SED SBC ABS Y+QQ6&Q}7A"Q<A#,.6NOP NOP NOP SBC ABS XINC ABS XNOP .uu67@<@,.ZHEART RTINT RTBAR ULA&R}NG LFINT DLANG RTSLANTLFSLANTDRTRI DRSQR DLTRI URSQR ULSQR .uu67@<A,.Z UBAR DBAR DLSQR CLUB DRA&S}NG MBAR INTRS BLOT DHALF LFBAR DTEE UTEE LHALF.uu67A<Ap,.Z URANG ESC UAROW DAROW LAROW RAR&T}OW SPACE ! # $ % & .##67A9<A9,.>:@4,.uu67Aq<A`,.Z ' ( &U} ) * + COMMA - . / 0 1 2 3 .uu67Aa<AP,.Z 4 5 6 &V} 7 8 9 : ; < = > ? @ .uu67AQ<A@,.Z A B C D &W} E F G H I J K L M.uu67AA<A0,.Z N O P Q R &X} S T U V W X Y .uu67A1<A ,.ZZ [ \ ] ^ ULINE DIA&Y}MND a b c d e f .uu67A!<A,.Z g h i j k l m n &Z} o p q r s .uu67A<A ,.Z t u v w x y z SPADE VST&[}ROK CLRSCN BACKSP TABF IHEA.uu67A <A ,.ZRT IRTINT IRTBAR IULANG ILFINT IDLANG IRTSLNTILFSLNTIDRTRI IDRSQR IDL&\}TRI IURSQR IULSQR IUB.uu67A <A,.ZAR IDBAR IDLSQR ICLUB IDRANG IMBAR IINTRS IBLOT IDHALF ILFBAR IDTEE IUT&]}EE ILHALF IU.uu67A<Ap,.ZRANG RETURN CSRUP CSRDN CSRLF CSRRT ISPACE I! I I# I$ I% I& &^} I.##67A6<A6,.>:@4,.uu67Aq<A`,.Z' I( I) I* I+ ICOMMA I- I. I/ &_} I0 I1 I2 I3 .uu67Aa<AP,.ZI4 I5 I6 I7 I8 I9 I: I; I< I= &`} I> I? I@ .uu67AQ<A@,.Z IA IB IC ID IE IF IG IH II IJ IK &a} IL IM .uu67AA<A0,.Z IN IO IP IQ IR IS IT IU IV IW IX IY &b} IZ .uu67A1<A ,.Z I[ I\ I] I^ IULINE IDIAMNDIa Ib Ic Id Ie If Ig &c}.uu67A!<A,.Z Ih Ii Ij Ik Il Im In Io Ip Iq Ir Is It.mm67&d}A<A,.R Iu Iv Iw Ix Iy Iz ISPADE IVSTROKBUZZER DELCHR INSCHR /$D/EEHEART,RTINT,&e}RTBAR,ULANG,LFINT,DLANG,RTSLANT,LFSLANT,DRTRI,DRSQRD:TEMP.2PADE IVSTROKBUZZER DELCHR INSCHR /$D/EEHEART,RTINT,$D