@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} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8u&&آ B VBD2E JK V) - O.`K30L3 ,~K30L3 , -K30L3 , {.K30L3 ,T} {.K30L3 , {.ԍK30L3 , -K30L3 , {. K31L3 , BhD1EHI V , 3H .h12 3U} O.L8&&'LS'Ln( -SK33L3 , \/2222 -qK33L3 , \/22222 O. t) g.L2& -K31L3 , \/2I3V}2J3 -ōK31L3 , \/2M32N3M3L2& -K31L3 , \/22222i22i2 O. ?( SLJ0r8s8 t)W}M3M3N3N'(3M3L9(2i22i22i22i2I3iI3J3iJ3L' g.L2&7RI3 J3 X} `2 - O. 22 3- U) 3)2 ( U) ( ( )07 t)L(7 t) g.L2& 32!32` 32!32` 2Y}82H22IH()I}H7}IjhhL_-`D7EB VɈ O3hhhhL/` 3LI)!3LI) U)`2hhL/ Z}B D3EHI V` - .6 7ȹ7 + + ) +l2 D+22ȭ222 D+2ș22ș2` , u+ b+Lt) y[}, + + + u+ ,Lt) y,)* + >, , u+ ,Lt) y, + + u+ ,Lt) y, + + , u+ ,Lt) y, + + , u+ ,Lt) m,\} + + u+ ,Lt) m, + + , u+ ,Lt) m, + + , u+ ,Lt) m, , + + , u+ ,Lt) y, , + + , , u+ ]},Lt) y, , + + , , u+*+ ,Lt) ,A2 u+ b+Lt) ,?222 u+ b+Lt) :+K30 ȱ :+ K3`80 `H^}JJJJ W+2h W+2`) 0ii0`2`Lf+2` BD2E(HI VH3 -`2` 2$L+`2222`_}324252`#2`$+,2` D+ + D+ +`ii2i22i2`ii2i22i`}2`2iK32mK3 `LZ,LO, D+ + D+ + D+ +` D+ + D+ +`,2X2`,2Ya}2`(2`)2` BK3DL3EHI ,-V`B D3EHI V`822 `822`hh` -K33L3 , b},`2B D3E2JK VO3hhL/`K32L3 , g.L2& -K33L3 , ,` BPD3EHI V` B Vc}0 B V`0 BD2E(HI V0`hhH3-.L/L/0BD2EJ V0`H3!3P H3 -`DH3 r-d}022 3-` 3ɛ`hhhhLn/pK31L3 ,`rK31L3 , , O.` BRD3EHI V`Эe} hhhh g.L2&` 3 5. +20 +2`2` 5.Ȍ2./222 380 2 /2m22L.`2L.hhLn/2f}2K3 .2 .2 .2m2 S/m2 S/22mK3mK32`hhhhL/2` , 3$ .` .`K32L3 , g.L2&K32L3 , - g.L2&g}K31L3 , g.L2&O3ɪ׍K31L3 , g.L2&ɤK31L3 , g./0L2&ɥK31L3 , g.L2&ɊK32L3 , g.L2&ɋ)K3h}2L3 , g.L2&ɠQK32L3 , g.L2&hK32L3 , g.L2&sK32L3 , - g.L2&} Antic Disassemble! By Davii}d KiblerDisassemble From : 1. Memory 2. A File01 3. Disk SectorsPrecede Hex input with '$'j}Enter 'P' directly after desired number to list to Printer, or 'D' to list to Disk File.Choice>}Press RETURN to contk}inuePRINTER ERRORSTARTING SECTOR NUMBERLOCATION IN MEMORYNUMBER OF S12ECTORSFILE NOT FOUNDFILE NUMBER MISMATCHl}BAD FILE NAMEDEVICE DOES NOT RESPONDDEVICE MALFUNCTIONED, REFUSES COMMANDDRIVE NUMBER UNKNOWNBAD FILEERROR WHEm}N GETTING SECTORNUMERICAL INPUT ERRORNOT A BINARY FILEFILE TOO LARGE FO22R MEMORY CAPACITYP:E:P3K4ENTER STn}ARTING MEMORY ADDRESSENTER ENDING MEMORY ADDRESSENTER INPUT FILE NAME (INCLUDE DEV)ENTER OUTPUT FILE NAME (INCLUDE DEV)BOo} OA POA OA BO OA CO OA JA BAR PAR BAR BA AR SA AR RE EL PEL JEL BE EL CE EL RA AR PAR JAR BA AL4G5R SA p} AR S SSS D T SSS BS SSS TST S LLL LLL TLT LLL BL LLL CLT LLL CC CCD ICD CCD BC CD CC CD CS CSI ISN CSI BS SI q}SS SI RR RS HRS RS PR RS LR RS SN INO LNO INO MN NO EN NO TO OS HOS MOS VO OS LO OS TD DO LDO MDO VDH5Cr}6 DO ED DO T TTT E X TTT CT TTT YTX T DDD DDD ADA DDD CD DDD LDS DDD PM PME NME PME NM ME LM ME PB PBN NBO PBs}N EB BN EB BN KA AL PAL AL LA AL CA AL RD TDL PDL TDL ID DL CD DL IR RR ARR PRR CR RR IR RR SC CR ACRt} PCD6?7R SC CR IC CR A YAX Y A YAX CA YAX AAS A YAX YAX YAX YAX SA YAX VAX YAX YP YPC YPX YPC EP PC DP PC XC u}XCC XCP XCC QC CC DC CC          v} @77             w}    +)*))**3*L*a*z****&\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  l 9GLH D: W000 ! LK WZVEMABHSRDLOUX?%FC@-=+GP\<32'N3 y}(-41)&W"BB27:8@wAg4444/0 T ` m n "` '`BDE'HI V z}0ޢ (0`ppB0!BA !} by Tom Wells {} Use a ? for helpTRPAMMY #X!Y! BD!EHI V 2 0!1rX!( 2r! |}( 2:G "`ok... BD"EHI V`##$$$$%Z%%%%n&&&    5 > }} R?ee  ?    D ;""<"" ' "> "   Щ`8 ~}#. `:G" $ # % 8$ $ % % $ % Q  #L<# #!  #0 #L#  #0 w# }) w#`ii`ii`ii`& "! '?>  #=  # '?> #= } #`D` >ii`A4 >ii`#4 'G '?> D= E l$5) 0ȭ( ȭ' > }ii`' ( ) ( i( ) i) L|$ح( )' ( JJJJ( ' 0' `$4 $ $ " >ii`5 }` ! & `$4 % $ " >ii`& ȱ! `(4$5 $ Q% ",Xȑ)ȑ >ii`6 }`(4$5 $ Q% "),ȑYȑ >ii`$4 % $ ",Xȑ >ii`$4 % $ ",Yȑ > }ii`$4 '?> D= EI急8倅L!&eiii8吅呅 '?> 5= 6 '?> } 7= 8 >ii`$4 $ $ ",Xȑ >ii`$4 $ Q% ",Yȑ >ii`(4$5 % }Q% ") >ii`* , + - 5 > R?ee  ?, * - + U'8, , - - L }2'`` '8吅呅 '?> (= ) '?> *= + '?> (= ) '( >ii }`}~ ' `.( '`" # :G B/ 0 (0 B V䥊`0BDE(HI } V ;Т   ʽ  '$ R?ȑii # 0L( #" i }" # i# L-(labeling now onlabeling now off. . (( 2`. (( 2` B/ `0 f-1 2  , } C`0 f- + * QS L3CL *0 f- JDLA)iiŁŀLE)8倅偅$ % $ i }$ % i% 8倅偅0BDE$ H% I V JDLA) ',LE)8倅偅$ % $ i$ % i% e }e M,2 1 3 4 Lu)eeYʼnXň M,Lu)0BDE$ H% I V JDLA)LE)Load Ra }nge = $ - $oad oncatenate kip uit2 '?> *= *1 '?> *= *4 '?> *= *3 '?> *= }**( > *( 2`entry point = $init point = $ -T+1 0=0 f-1 '?> i+= }j+2 '?> g+= h+X+( >`l+1 0<0 f-1 '?> += +2 '?> += +p+( >`6,( } 2`virtual addressing set#\,( 2`load range beyond buffer, skipping,( 2 Q`L1 2 ȑ }0BDE}DD}EEHI V JD 8--( 2`not binary load file. uit oadfile loaded at } virtual $0000ii}H}I`0B1D E0 HI V`appended file1 A2 : }-( 23 $ 4 % 0 f-1 3 2 4 $ 1 % 2 `9  ?9 5 6 7 8 c.9 9 L. c.5 i5 6 } i6 7 i7 8 i8 9 ֠ȱ8倅偅 "/`5 6 7 8 R@1  Y }`5 6 7 8 P1  Y`# of sectors = init address = $boot continuation = $ } '?= .> .ȱii '?= /> / '?= /> / '?= /> / '?= /> /. }( >.( >/( >`9 5 : 6 7 8 Lt0 R?00000( 2`5 }6 U ?00 9 : 5 R?ee0( 2`7 8 c.5 i5 6 i6 6 05 }0!7 i7 8 i8 9 ƭ: : Lt0`address below bufferinvalid sector number9 5 : 6 7 8 L1 R? }00000( 2`5 6 U ?00 9 : 5 R?ee0( } 2`7 8 .5 i5 6 i6 6 05 0!7 i7 8 i8 9 ƭ: : L1` (P6DS; < [2i2( } 2`; 2( 2`< BfD2EJ V JD [2`2( 2` B V`P:output sent only to screenoutp }ut sent to paperoutput sent to disk B(DE%HI V` B [2l virtual addressing off  R?8倅 }偅 ',`2( 2`free memory $addr range $ - $8 '?> 13= 23 '?> /3 }= 03"3( 2 '?> A3= B3 '?> C3= D3 '?> I3= J3 '?> K3= L343( 2`code buffer zeroed }恦XY L43( 2`labeler compression onlabeler compression offf4f4N4( } 2`f474( 2`+find listing option reset 44( 2`D:CODEBUST.HLPno help file} Help Screen }@BĝD4EJ V 4( 2@ B V` BD4E&HI V@B(DE&HI V0(ɠ >L }K5 QL-5TTACH OOT HANGE ISPLAY NTER IND ELP IST EMORY PEN EAD END NOPENIRTUAL RITE ERO EIT LABELE }RLIST FOUND-1 LIST FOUND DISP FOUNDET UT COMPRESSV (addr) S (D,P,S)E filename O filenameR filename } % filenameB (max # of sectors)D [addr] (# of bytes)C hex or char stringL [addr] (# of instructions)F (F,A) (he }x or char pattern)G (hex sec #) (# of sec) (buff addr)P (hex sec #) (# of sec) (buff addr)W filename lo-addr hi-addr [run- }addr] [init-addr] (alt-adr)(optional), < * , X - /required>[ * , x - /optional]Valid place holders are * , X - }BD5E9HI V`gathering referencesverifying internalassigning labelsF G :G +C/ ` 9 kC EC I: kC E }C C)8( 2 C kC C D C 8" # ) 2` : ; 

R?J R?P }(= ) '?> *= +;? '?> A= B:F}:F}:FiE/ʈ` ? B(DE%HI V< & } B(DE%HI V JDL?; & B(DE%HI V JDL?``%( `詛(` = JJJJ> = ) }= = ii@=  ` ?B :/B B D B C E D ` ?E )E D E E C )D B D D }8E E D D L?` B L?? eiB ` @  @`F L6@A } @ ޽'" @` N@`@ 9B C B :/B B B C @Ȍ@LS@ @`'" L@ }@ @`end of buffer reached݀5@򥒅ii ?A @`iiYXЧ }@( 2`4=#- U'`8  "`  "` LB > R?ee T' }" ZB` B`need source string for changeneed address and string for changeA( 2`"A( 2` 5B  }C B :/B B B C LB tB`' " tB`HH U'hh`   𩛙 }  BD EJ V/ 0 ` JD B ` B V`   𩛙 0BD EJ V/ 0` JD C`0 } B V`   𩛙 @BD EJ V/ 0` JD kC`@ B V`D:CODEBUST.TMPPBvDCEJ V } / JD C`P B V`@B(DE(HI V`D:CODEBUST.TMP,LW0 Cɛ P BԝDCE V JD` }@!BD E V JD`I/O error number iiإ)i0HDJJJJi0GDi0FD5D( 2` }             }             ???A }DCANDASLBCCBCSBEQBITBMIBNEBPLBRKBVCBVSCLCCLDCLICLVCMPCPXCPYDECDEXDEYEORINCINXINYJMPJSRLDALDXLDYLSRNOPORAPHAPHPPLAPLPROLRORRTI }RTSSBCSECSEDSEISTASTXSTYTAXTAYTSXTXATXSTYA ##%## ####('(((-(*!$!!  }!!+)&)) )/)0201620102018070  43  5  } ,,,",,,.,, 620102018070  43  5  6 Codebuster is a delightful toolfor the experienced ATARI hacker. Itis a disassembler that will load anyDOS file into a }buffer and displaythe contents as ASCII, hex, or6502 instructions. It will write outthis same file as a binary load file.}More than one file may be loaded intothe buffer and then rewritten out asone combined file. It will read boot files, but} it won't write out boot files.Press to go on to the nextpage or enter a 'Q' to exit HELP.The next few screen}s contain theformats of the commands availablein this program. All of the commandsare entered through the standard OSinpu}t routines and thus must befollowed by pressing the key.The commands are entered as singlecharacters followed by th}e requiredand/or optional positionalparameters. All addresses must beentered in hex (hhhh). All othernumbers will be in d}ecimal (dddd).Codebuster does not check for validhex or decimal numbers.Here are all the commands available:ttach,} oot, hange, isplay, nter,ind, elp, ist, emory, pen, ead,end, nopen, irtual, rite, eit,ero, labels, comp}ress, lister options, et utPlace holders * , -Filenames do not need the "D:".ttach labels to the disassemb}ly.AThis will turn on the label attachinglogic. Entering the command a secondtime will turn it off. However thelabels }must first be ntered.Read the oot file.B ddddThe decimal number is the max numberof sectors to load. If none iss}pecified all the sectors in the bootfile will be loaded.hange memoryC hhhh hhhhhhhhhhhhhhhhhhhhhhhorC hhhh 'abScef}gh...'Change the contents of memory at hhhhto the hex string or the ASCIIstring. Remember you will be changinga virtual }address which should relateto a section of code in the codebuffer. You can change memoryanywhere in the machine so becare}ful. Using a place holder in theaddress will change memory at thelast found address.isplay the contents of memory.D} hhhh ddddDisplay memory at address hhhh forthe next dddd bytes. This will be avirtual memory address unless a isenter}ed to turn off virtualaddressing. If only a 'D' is enteredthe next default number of bytes willbe displayed. A place holde}r may beused for the address to change thedefault number of bytes withoutchanging the address.nter the label file.}E filename.extEnter the standard named DOS file tobe used to build a table for thelabel attacher. Each entry must havea }$ to start the hex value.LABEL = $hhhh ;commentsorLABEL EQU $hhhh ;commentsThe labels will be placed at the endof }the program moving the user codebuffer up in memory. If you werelooking at some code it will be over-written and the virtu}al addressingwill be incorrect.ind a stringF (F,A) hhhhhhhhhhhhhhhhhhhhorF (F,A) 'abcdefghijThe second F tells c}odebuster to findthe first occurance in the codebuffer. If it is not specified thenext occurance will be searched for.The} A requests codebuster to start atthe front of the buffer and find ALLoccurances of the string. When theend of the buffer }is reached amessage is printed and the findpointer is reset to the front of thebuffer.et sectors from the diskG hhh}h dddd hhhhGet dddd sectors starting with sectorhhhh (first hhhh) and put them atvirtual address (second hhhh). If noadd}ress is given put sectors atbottom of code buffer. If no count ofsectors is given get 1. If no sectoris given get the firs}t sector.ist machine language code.L hhhh ddddList machine language code beginningat hex hhhh for the next ddddin}structions. If the number ofinstructions is entered it becomesthe new default. The standard defaultis a full screen (21). }If only an 'L'is entered the next default number ofinstructions will be listed. A placeholder may be used in the addressf}ield to change the default withoutchanging the address.Display the emory location and thesize of the user code buffer}.MThis probably is of little use to youbut it helped me during developmentand I didn't have the heart to takeit out.}pen the listing disk file.O filename.extThis is the file where all output canbe sent with the end command. Thefil}e must be opened before issuinga isplay or ist command with sendpointing to the disk. Once it is openyou may leave it op}en and end theoutput to the screen or the disk.When you are done you must close(nopen) the file before output canbe sen}t to another file. Many otherscreen messages will go to this filelike the boot file record and binaryload file load ranges}.ut sectors to the diskP hhhh dddd hhhhPut dddd sectors starting at sectorhhhh (first hhhh) from the virtualaddres}s (second hhhh). If no addressis given put sectors from the bottomof the code buffer. If no count ofsectors is given put 1}. If no sectoris given put to the first sector.ead a binary load file into memory.R filename.extAs each block of b}inary load file isencountered the program will promptyou for a response. This allows youto skip, load, or concantenatecer}tain portions of a binary file. Arange that is loaded is placed at thebottom of the buffer. If you load asecond load range} it will overwritethe first and the virtual addressingwill be set to that of the secondload range.You may also concan}tenate a loadrange if it will fit in the buffer.A concantenated load rangewill be placed in the bufferaccording to the vi}rtual addresssetting.For example if the front of thebuffer was set to virtual address$5000 and you tried to concantenate}a load range of $4000 Codebusterwould not allow you to because thatwould place the load range belowthe buffer in the prog}ram area.The address could also be to high.That is beyond the top of free RAM.end output to screen, printer, diskS }Dend output to the open disk file.S Pend output to the printer.S Send output to the screen only.This cancels }end printer and enddisk.Output can be sent to the printer andthe disk at the same time.This entire help file may be} printedby ending it to the printer.nopen the listing disk file.UThis file must be closed in order tosave anythi}ng written to it beforeleaving CODEBUSTER. If you leave withan eit it will close this file foryou, but if you just system} reset thefile will be lost. Sorry about thesilly name. I needed the "C" for thechange function.Set irtual addressin}g.V hhhhIf a "V" is entered by its selfvirtual addressing will be turned offand you will be looking at realaddresses. }If an address is enteredthe start of the code buffer can bereferenced by the address you gave.It is like relocating code }inmemory. The program starts up withvirtual turned off, or in real mode.rite binary fileW filename.ext lo-addr hi-a}ddr run-addr init-addr alt-addrThis command will create a binaryload file from the code buffer. Youmust specify the st}art and end of theblock of memory to write. You mayspecify an alternate address(changing the virtual address will dothe s}ame thing). Either run and orinit addresses may be specified.Place holding characters may be usedon run-addr and init-addr}.eit the CODEBUSTER.XThis will close the listing file andreturn you to DOS.ero out the user code buffer.Z}This will zero out all of theaddresses specified in the emorycommand. When looking at a section ofcode the zeros will he}lp identifywhere the code ends. invoke the internal label processor% filename.extThe input file is an assembly lis}tingfrom CODEBUSTER. Create the file bypening a listing file, listing somecode and nopening the listing file.Then give }the label processorthe file name The labeler willgather up all references and then verify which ones are internal andconv}ert all internal addresses tolabels. All undefined opcodes areconverted to AMAC DB commands. Toggle the compress opti }on@This will place MEDIT tab charactersin and shorten the the output fromthe labeler. It is a space savingfeature. }Lister options list found address - 1 list found address display found addressWhen "finding" ASCII or hex strings }these options determine how to tellyou where the string is. The addessmay be displayed or listed. Listingminus one will al }low you to see theinstruction that is associated withimmediate values or addresses ininstructions. Listing or displayingt }he address found allows you to seeASCII strings or assemblerinstructions.This program is public domain andtherefore f}ree for the giving and getting. My best wishes to allfellow hackers.Don't forget - Who ya gonna call .... } `````````````` `` `Ҡ` `` `````````````` xHl (LF*w [0B4D(EL7(E: JK VK(L]( REMOVE CARTRIDGE0DE BHI V}Lx(` } } } .BYTE($ ,X)($ ),Y$ ,X$ ,Y$ ,X$ ,Y($ )*=$( * 2 %/( +(BL,DL`}:MLP,SL 6XL 6` 1B(Lw 1B(LF* * E( ( ( ( (/ )0 B V0}BD*EL*E: JK V` H + FL9+ ENTER PRINTOUT TITLE (1 LINE):0D)EB&HI V` :} M; >` ,(ɭ(ʭ(ǭ( b+ +ɍ(ʍ((͌( (( p P ((PI `(ieɅɥi(ieDžǥi`( }(C*(( F()()( F((()() < $= >`H ;, FL=,}`H M, FLO, ` 9- + l+ 1BH} k, FLp,ś)? L*LF* B VBԝD(EJK VLA , &5 + ,L, , ,`((}((`ɩM b+ +Ǎ(ȍ((͌( (( p P ((PI ̭(` ((L>H H- FLa-} ENTER START AD}DRESS: -((((((((H - FL- ENTER END ADDRESS: -((((L,,(0D(E}BHI V($LV.001:-( ذ ٥ԍ(Ս( ((8`H 8. FLT.*INVALID- PLEASE REENTER: }8`(((( .5(ɛ? /)((((ɛ .(ɛ( /((`(H((h(`(JJJJ(` .(( (}((JJJJ(`00$: (`A0Gi ) (L.0L).: ) ((`A0Gi L / y/ 0E PDC3`( 5L%/( } 5L%/( }1(( 1 1L%/( 5L%/"H / FL/} SELECT OUTPUT OPTION(S):[H / FL0 E SCREE }N EDITOR P PRINTER D DISKVH %0 FL|0 C CASSETTE !} RETURN TO CONTNUE `H 0 FL0 `)? L*)_ H0 }0"}h`)? L*:0H0 }0h`(:)((`9H &1 FL`1 Ρ YOU ARE GOING T#}O WRITE ON YOUR INPUT DISK.)? L*`3H 1 FL1 ENTER OUTPUT FILE SPECS WITHOUT EXTENDER:$} 0D(EB HI V`((ԭ( ؠ0()(06( ((((%} 0(L22 Lf2(ɛ .LJ2.(((((((詛( (` 2 0(BD MXS 5` 4&}(( 4`H Ӡ2 FL2} DISASSEMBLER 6502H 3 FL3 Version 1.0!H &3 FLH3 Copyright 1983'} by Gary C. CriderH W3 FLu3 SELECT INPUT OPTION:?H 3 FL3 B BINARY LOAD FILE (} D DISK BOOT FILELY,H1(0} hN@  Y0(((((H((h(`((`( 7(m(((m((11}M  :LAm((m((`ɩMʩ(M((m(((m((8(((( =9(͚( (( p P 2}((PI `m((m((8(ɥ(eɅɩMeʅ8ɥʭ(L9(MML}8NMNML}83}(|}MML}8MM|}NML}8(1M (m(m :*΢(  4} p P PI LA 9 b+ +ɍ(ʍ((ͦ( (( p P ((PI L9`M˭M(e˅˭(e̩̅ȑȑ`(5}( ( ( (R@ Y`H @: FL]: ENTER INPUT DRIVE NUMBER: L0 1:5)(( 1(( 7M(M6}(M(M(MǭMȩ((M((( + G8(( >LY,( ( p P (PI L0;ͩ(Ω˩F̠7}ɍ(L&;(e˅˭(e̅L ;ˑ͈`F(8((((`( Ǎ(ȍ( + ( )7 .) ; 8}; =l( = < $=`;)$) F()() F()()` F(((((- F((((( F((9}((`m((m(((ԭ( ؠ0)))06) )))) 0)L]<` ):}m((m(((ԭ( ؠ0)))06) )))) 0)L<`( t<);}))) < ())()`(,)q)))))))(8))F)(N)<})`)`(F((*(`(((`(` ()`()(),)))`(=})(),)))(`)?L*(`(K(!0D(E B HI VLx>0D)E B HI V>}(.к(L? &ALA((4m((m(( D)E BHI V9LAm((m(( D)E B?}HI V).Ж(d OALA((& @PD)E BHI V+LA @PD)E BHI V).в@}(L? @LA((L&@(: ( p P (PI 0 @m((m((@.D)E B8HI VLA )A} )7 g)((@ ( p P (PI  ZB`(: ( p P (PI 0 @m((m((@gD)EB} B8HI VLA(.L?L?(`m((m((`.) ? ? ? ? ? ?@D)E B0HI V ?(C}( .)`@ B V@BDAEL AP:JK V`.) ? @` B V BD(EJK V`P B VPD}BmDAELpAC:JK V`H A FLAERROR- . ABNORMAL END.`(((ԭ( ؠ0A)A06AE} AAAA 0ALA 1B ~A)? L*LY, B V@ B V B VP B VF}`((`P B V B VCH B FLB 1600 LINES OUTPUT TO FILE.(LCG}!H B FLC REVERSE OR INSERT NEW CASSETTE.((LkCH C FL?C INSERT NEW DISK IF NECESSARY. CH QC FLeC H} SECTORS FREE. 1(()? ((` SC( 71 ((I} (h  R@ Yԭ ؠ0SC)SC06SC SCSCSCSC 0SCL5D`J}F(L_;$) F()()L;L;*) F()()L;$) F()()L;#)$) F(K})()L;A)L; L LLD$) F()() F()()L;Ǎ(ȍ(m((m((ɍ(0L}((m(((m(($)( F()()( F()()L;*) F()()L;$*) F(M})()L;)*) F()() F()()L;LLD0*) F()() F()()L;N}<*) F()() F()()L;7*) F()()L;FLF)JJJJ F(F) F(LF iiO}0``turhhhxyHH0 V`BYTZDORAxDBYTZDBYTZDBYTZDORADASLDBYTZDPHPuDORADASLDBYTZDBYTZDORADASLDP}BYTZDBPLEORAEBYTZDBYTZDBYTZDORAEASLEBYTZDCLCuDORAEBYTZDBYTZDBYTZDORAFASLFBYTZDJSRDANDxDBYTZDBYTZQ}DBITDANDDROLDBYTZDPLPuDANDDROLDBYTZDBITDANDDROLDBYTZDBMIEANDEBYTZDBYTZDBYTZDANDEROLEBYTZDSECR}uDANDEBYTZDBYTZDBYTZDANDFROLFBYTZDRTIuDEORxDBYTZDBYTZDBYTZDEORDLSRDBYTZDPHAuDEORDLSRDBYTZDJMPDEORS}DLSRDBYTZDBVCEEOREBYTZDBYTZDBYTZDEORELSREBYTZDCLIuDEOREBYTZDBYTZDBYTZDEORFLSRFBYTZDRTSuDADCxDBYT}TZDBYTZDBYTZDADCDRORDBYTZDPLAuDADCDRORDBYTZDJMP>FADCDRORDBYTZDBVSEADCEBYTZDBYTZDBYTZDADCEROREBU}YTZDSEIuDADCEBYTZDBYTZDBYTZDADCFRORFBYTZDBYTZDSTAxDBYTZDBYTZDSTYDSTADSTXDBYTZDDEYuDBYTZDTXAuDBYTZDV}STYDSTADSTXDBYTZDBCCESTAEBYTZDBYTZDSTYESTAESTXrFBYTZDTYAuDSTAETXSuDBYTZDBYTZDSTAFBYTZDBYTZDLDYW}DLDAxDLDXDBYTZDLDYDLDADLDXDBYTZDTAYuDLDADTAXuDBYTZDLDYDLDADLDXDBYTZDBCSELDAEBYTZDBYTZDLDYELDAX}ELDXrFBYTZDCLVuDLDAETSXuDBYTZDLDYFLDAFLDXEBYTZDCPYDCMPxDBYTZDBYTZDCPYDCMPDDECDBYTZDINYuDCMPDDEXY}uDBYTZDCPYDCMPDDECDBYTZDBNEECMPEBYTZDBYTZDBYTZDCMPEDECEBYTZDCLDuDCMPEBYTZDBYTZDBYTZDCMPFDECFBYZ}TZDCPXDSBCxDBYTZDBYTZDCPXDSBCDINCDBYTZDINXuDSBCDNOPuDBYTZDCPXDSBCDINCDBYTZDBEQESBCEBYTZDBYTZDB[}YTZDSBCEINCEBYTZDSEDuDSBCEBYTZDBYTZDBYTZDSBCFINCFBYTZDH(L¥ Li¥iå\}iiLL(555555555555555555555555555555555555555555555555555555555555555555555555555 Li¥iåd DISASSEMBLER 6502 Copyright 1983 By Gary C. Crider For the North ^}Texas Atari Computer Team. DISASSEMBLER 6502 was writtenfor the hardcore assembler languageprogrammer who is seldom _}happy with existing piece of software. Whenno source code is available,modifying machine language programscan be extreme`}ly difficult. DISASSEMBLER 6502 creates sourcecode from machine language that canbe modified, reassembled, andexecutea}d.SYSTEM REQUIREMENTS:MEMORY: 24k minimum and 48k desirable.INPUT DEVICES: Keyboard and one or more disb}k drives.OUTPUT DEVICES: Screen and one disk drive. A second disk drive or cassette drive is needed c} for machine-readable output of disk boot files or large disassemblies. Double density can be very bd}eneficial.SOFTWARE: An assembler/editor is required if you wish to reassemble the output. DISASSEMBe}LER 6502 output has been tested on the ATARI ASSEMBLER/EDITOR cartridge and MAC/65 from Optimf}ized Systems Software.INPUT: Input to the disassembler can befrom the following sources: MEMORY - Any range og}f memoryaddresses from 0 to $FFFF can bedisassembled. Addresses can beentered in either decimal or hex(e.g. 100 or $64).q}(B%DOS SYSB*)DUP SYSB%SANTICDISEXEBQxCODEBUSTCOMBGCODEBUSTHLPBMDIS6502 COMB)]DIS6502 DOCBLABELS DISK SECTORS - Any range ofsector numbers from 1 to 720 can bedisassembled. Sector numbers maybe entered in eithr}er decimal or hex.The last three bytes of a DOS formatsector are control bytes. Theycontain the directory entry number,ns}ext sector number and number ofbytes used in the sector. Optionsare available to disassemblesectors including or excludint}g thesecontrol bytes. DISK BOOT FILES - By simplyplacing the disk in the specifieddrive after disk boot optionselecu}tion, any boot file on that diskwill be disassembled. This doesnot work on double density disks. TheATARI operating systev}m initializationcode only supports double densitydisk boot in half sectors. Caution-Many times the disk boot file issimplw}y a loader to load the remainderof the program. Use the sectordisassembly option to disassemble theremainder of the progrx}am once it hasbeen determined what sectors arebeing loaded. BINARY LOAD FILES - DISASSEMBLER6502 will disassemble any}y DOS 2.0 orOS/A+ Version 2 format binary loadfile. Compound structures are alsosupported.OUTPUT: There are fourz} output optionsavailable for DISASSEMBLER 6502. Anyone or more in combination can beused. You may continue to selectopti{}ons until the key ispressed. At that time remaininginformation may be obtained anddisassembly begun. SCREE|}N - Output is directed tothe screen editor. A line of outputincludes the hex machine instruction,the 6502 assembler langu}}ageinstruction, and the hex address ofthe instruction. PRINTER - Output is directed tothe printer. You will be pr~}omptedfor an optional page heading to beprinted at the top of each page. Aline of output includes the hexinstruction, th}e line sequence number(as it would appear on a disk outputfile), the assembler instruction andthe hex address of the instr}uction. DISK - Output is directed to aspecified disk file. The output isin LIST format and includes a linesequence }number, assemblerinstruction, and hex address. Thefile can be ENTERed into theassembler/editor for modification andreass}embly. Since most assemblerscan only assemble about 1800-2100lines of instructions, the output isput into multiple files }of 1600 linesor less. This allows room formodifications. An extender of X01 -Xnn is appended to the file name. Allof the} output files can bereassembled as a unit by using the.INCLUDE facility and/or diskassembly facility which are availablei}n many good assemblers. They canalso be assembled separately andcombined using the binary savefeature of DUP.SYS. A 1600} line filewill use from 120 to 150 singledensity disk sectors. Thus an emptydisk can hold two files. Doubledensity disks} have double thecapacity. CASSETTE - Output is directed toa cassette recorder in the same formatas that directed to }disk. The filesare also split into 1600 line files.This will require most of one side ofa sixty minute cassette.UNRECO}GNIZED INSTRUCTIONS: If an opcode is encountered thatis not recognized as a valid 6502opcode, a .BYTE instruction is}generated. Up to three unrecog-nizable characters will be includedin a single .BYTE record. A BRKinstruction ($00) most }often occursas a data byte rather than aninstruction. The disassembler treatsbinary zeros as a .BYTE character. }Since data bytes that are validopcodes cannot be distinguished by adisassembler as data bytes, they willbe interpreted as }instructions. Thelogic flow of the program shouldindicate which of these instructionsare actually data bytes. This mis-}interpretation of data bytes will notprevent the reassembled program fromlooking just like the original.ytes. This mis-l;------Operating System Equates ------; FOR THE CODEBUSTERCOLDST=$244WARMST=$8CRITIC=$42HATABS=$31ATABMAP}=$2A3FILDAT=$2FDFILFLG=$2B7VPRCED=$202VPRCD2=$203VINTER=$204VINTR2=$205VBREAK=$206VBREK2=$207VKEYBD}=$208VKEYD2=$209VSERIN=$20AVSERN2=$20BVSEROR=$20CVSERR2=$20DVSEROC=$20EVTIMR1=$0210VTIM12=$0211VTI}MR2=$0212VTIM22=$0213VTIMR4=$0214VTIM42=$0215OLDROW=$5AOLDCOL=$5BOLDCL2=$5CTXTROW=$290TXTCOL=$291T}XTCL2=$292LMARGN=$52RMARGN=$53SCRFLG=$2BBRAMSIZ=$2E4CHAR=$2FACDTMV1=$0218CDTM12=$0219VVBLKI=$0222V}VBLI2=$0223VVBLKD=$0224VVBLD2=$0225ATACHR=$2FBAPPMHI=$000ESOUNDR=$41DSTATS=$0303DCOMND=$302DUNIT=$3}01DBUFLO=$304DBUFHI=$305SSFLAG=$2FFSHFLOK=$2BEINVFLG=$2B6PRNBUF=$3C0PBUFSZ=$1EDSKINV=$E453DAUX1=$0}30ADAUX2=$030BDOSVEC=$0ADOSVC2=$0BDOSINI=$0CDOSIN2=$0DPOKMSK=$10BRKKEY=$11RTCLOK=$12RTCLK2=$13RTC}LK3=$14CDTMV2=$021ACDTMV2=$021BCDTMV3=$021CCDTMV3=$021DCDTMV4=$021ECDTMV4=$021FCDTMV5=$0220CDTMV5=$}0221CDTMF3=$022ACDTMF4=$022CCDTMF5=$022ECDTMA1=$0226CDTMA1=$0227CDTMA2=$0228CDTMA2=$0229VIMIRQ=$0216}VIMIR2=$0217VDSLST=$0200VDSLS2=$0201SRTIMR=$022BSDMCTL=$022FSDLSTL=$0230SDLSTH=$0231SSKCTL=$0232GPRIO}R=$026FPADDL0=$0270STICK0=$0278STICK1=$0279STRIG0=$0284STRIG1=$0285SHFLK=$02BEPCOLR0=$02C0PCOLR1=$0}2C1PCOLR2=$02C2PCOLR3=$02C3COLOR0=$02C4COLOR1=$02C5COLOR2=$02C6COLOR3=$02C7COLOR4=$02C8COLRSH=$4FDRK}MSK=$4ECOLCRS=$55COLCR2=$56ROWCRS=$54CRSINH=$2F0ATRACT=$4DDINDEX=$57SAVMSC=$58RAMTOP=$6AMEMLO=$0}2E7MEMLO2=$02E8MEMTOP=$02E5MEMTP2=$02E6CHACT=$2F3CHBAS=$2F4CH=$02FCICCOM=$0342ICSTA=$0343ICBAL=$03}44ICBAH=$0345ICBLL=$0348ICBLH=$0349ICAX1=$034AICAX2=$034BCIOV=$E456SIOV=$E459SETVBV=$E45CXITVBV=$E}462SYSVBV=$E45FOSRETN=$E474CLICK=$FCD8;---------Hardware Registers ---------HPOSP0=$D000HPOSP1=$D001HPOSP2}=$D002HPOSP3=$D003M0PF=$D000HPOSM0=$D004P0PF=$D004P1PF=$D005P2PF=$D006P3PF=$D007P0PL=$D00CP1PL=$}D00DP2PL=$D00EP3PL=$D00FM0PL=$D008SIZEP0=$D008SIZEP1=$D009SIZEP2=$D00ASIZEP3=$D00BSIZEM=$D00CGRAFP0}=$D00DTRIG0=$D010GRAFM=$D011COLPM0=$D012COLPF0=$D016COLPF1=$D017COLPF2=$D018COLBK=$D01APRIOR=$D01BV}DELAY=$D01CGRACTL=$D01DHITCLR=$D01ECONSOL=$D01FPOT0=$D200AUDF1=$D200AUDF2=$D202AUDF3=$D204AUDF4=$D2}06AUDC1=$D201AUDC2=$D203AUDC3=$D205AUDC4=$D207AUDCTL=$D208ALLPOT=$D208KBCODE=$D209STIMER=$D209RANDOM}=$D20APOTGO=$D20BIRQEN=$D20EIRQST=$D20ESKCTL=$D20FSKSTAT=$D20FPORTA=$D300PORTB=$D301DMACTL=$D400CH}ACTL=$D401DLISTL=$D402DLISTH=$D403HSCROL=$D404VSCROL=$D405PMBASE=$D407CHBASE=$D409WSYNC=$D40AVCOUNT=}$D40BNMIEN=$D40ENMIRES=$D40FNMIST=$D40FPBCTL=$D303PACTL=$D302E=$D407CHBASE=$D409WSYNC=$D40AVCOUNT=N