@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- Release notes for v.92 -This is almost, but not quite complete. I'm still working on some changesto the debugger, and T}for now, an older version is included with theassembler. This version resides entirely in main system RAM, whichpartially U}undermines the fact that the rest of the package is designed tofit mostly in bank select memory. Thus, this version takes uV}p almost 5Kof system RAM, whereas the final version will only require 1-2K.Note for non-SpartaDOS users. The MAE.COM fileW} does not have a DOS II runaddress appended to it, and so it will not automatically run as is.However, I have included a fiX}le called RUNAD.OBJ that you should appendonto the end of the MAE.COM file in order to make the assembler auto-run.The RUNAY}D wasn't included in the file, because it can mess up the automaticreturn to the program from SpartaDOS using the RUN commanZ}d. I feel it isvery important to be able to easily switch to DOS and back without losinganything. To return to the assemb[}ler from any non-Sparta DOS, you can runat the address $A900.Another note for non-Sparta users. The assembler picks up th\}e currentdrive number from the SpartaDOS variable structure. An attempt has beenmade to bypass this step for non-Sparta DO]}Ses, but I don't know for sureif it will work in all cases. Worst case, you will find the default driveset to something ot^}her than what is stored in the configure section. Thiscan easily be reset from the assembler menu.Please report any and a_}ll bugs and suggestions. I can be reached on GEnieat J.HARRIS32, or on internet at jharris@cup.portal.com. Moreconvention`}al access is available at:John Harris45346 Graceway Dr.Ahwahnee, CA 93601(209)683-3412On to the assembler...- STRENGa}THS -Excellent full screen editor with many features such as key macros,automatic 'JSR' and return to subroutine labels, bb}lock moves and copies,multiple undo.XEP80 compatable.High level of integration between editor-assembler-debugger. The ec}ditorcan take you directly to lines that had assembly errors. The debugger canreference labels in the symbol table and assd}emble single program lines.Very user friendly -- it will save you a lot of typing. (Now, if I couldhave just gotten it toe} type this DOC file for me. Sigh...)Local labels referenced between global labels.Can assemble directly to bank select mf}emory or bank select cartridges.Uses very little system RAM. Most of the code resides in bank selectmemory.Full 65816 ag}nd 24 bit support.- WEAKNESSES -Simple implementation of macro ability, compared with Mac/65 or other moreadvanced macroh} assemblers. Only expression values can be passed asparameters.Slower assembly speed than Mac/65 -- especially with largei} source files.There are a few things that can partly offset this though. You can startthe assembly at Pass 2 if no changesj} have been made that effect the symboltable values. This can more than double the assembly speed in thesecases. You can ak}lso include binary files within the assembly, forpre-assembled code or data segments. If you program in a modular fashion,l}avoiding the constant reassembly of large unchanged portions of code, youwill of course completely avoid any speed problems.m}I don't know how many people I may have scared at this point. Thisassembler is not depressingly slow. It takes 45 secondn}s to assembleitself, and while Mac/65 could do it in 10 seconds, I would spend a wholelot more than 35 seconds fighting wito}h its inept editor. I prefer to ratethe speed of a development system in terms of how long it would take towrite a programp} with it. In this regard, I don't think this assembler canbe beat. Enough of defending this product. I'm proud of it the q}way itis, and I hope you'll enjoy using it.- MEMORY USAGE -This assembler is designed to run in one bank of the extendedr} memoryavailable on the 130XE or other memory expanded Atari. This bank numberis configurable. A portion of the assemblers} must reside outside of bankselect RAM, and in this version, it will occupy $A900-$BBFC. Memory usagefor the source file at}nd symbol table is also configurable. In addition,memory for the symbol table will use bank select RAM when the addressesau}re within the $4000-$7FFF range, while memory for the source file willalways be in normal system RAM. This allows memory fov}r the source fileand symbol table to overlap, and gives you the largest possible freememory buffer. Having the symbol tablw}e in bank select RAM has one otherbenefit. It will usually stay intact so that the labels can be used fromthe debugger. Tx}he default values for memory usage are to place the symboltable from $6400-$7FFF and the source buffer from LOMEM to $A8FF. y} Thefile ED.DOC has specific instructions about changing the memoryconfigurations.Zero page memory is saved and restored z}from the editor and assembler, sothat they will effectively leave all of ZP available to the user.All three modules use a {}$100 byte buffer in low memory that is currentlyat $400-$4FF. Please contact me if these locations conflict with yoursetup|}, and I can assemble a version that uses a different area.When assembling to disk files, a $100 byte buffer is used for dis}}k I/O.The location of this buffer is configurable, as described in ED.DOC, andis currently set to use $500-$5FF.- EXPRESS~}IONS -Expressions can be made from decimal numbers, hex numbers by using "$",binary numbers by using "%", single ASCII cha}racters with a "'" (singlequote), and label names.Any of these values can be mixed with math operators +-*/, ! (bitwiseO}R), & (bitwise AND), and unary -. The | vertical bar can be used inplace of !.There are also special operators that refer} to the low byte, high byte,and bank byte (24 bit highest byte) of the calculated expression. Theseoperators are <, >, and} ^.There is no operator precedence. All math is evaluated left to right,with the exception of <, >, and ^, which are done} after the rest of theexpression has been evaluated.Examples of valid expressions: LDA #-1 ;= $FF LD}A #'A-$20 ;= $21 LDA #%101&3 ;= 1 LDA #>$1234+1 ;= $12 LDA #^$123456 ;= $12 LDA #>$123456} ;= $34 (mid byte)All of these expression types can be used in .BY statements as well.Like:LOWS .BY LABEL1 >LABEL2 >LABEL3 .BY 15+3!%1000 etc...- LABELS -The first character of a label may} be any letter, or the symbols @, \, _,or ?. All remaining characters may also include numbers plus the symbols., :, ;, <,} =, >, and ^. Labels may be up to 15 characters long.Label names, and for that matter all text entered with the assembler,} canbe entered in upper or lower case. Labels are not case-sensitive.When the first character of a label is '?', the labe}l is a 'local label'.Locals are defined only in the source code segment between two global(i.e. non-local) labels. Referen}ces to local labels cannot cross aglobal label definition.Internally, the assembler creates local labels by appending the }local ontothe end of the previous global label. Thus in the following code segment:DELAY LDX #100?L DEX BNE }?L'?L' is a local label, and will be entered in the symbol table as DELAY?L.Knowing how the label is stored, allows you to} access it from the debuggeror the Esc-V expression evaluator. You can also code a direct referenceto the label DELAY?L if} you need to access the local from the other sideof the global label DELAY.Locals are not printed in X-reference or symbol} table listings, whichmakes them most useful for simple loop and branch structures where youdon't want to think up unique l}abel names for all occurances.- ADDRESSING MODES -All 6502 and 65816 addressing modes are supported. Any addresses that}evaluate less than $100 will use zero page modes when possible. Thus,zero page labels must be defined before being used, or} assembly errorswill result.There is also a way to force 8 bit, 16 bit, or 24 bit addresses using theoperators <, !, and }>. (Yes, I know this is inconsistant with theimmediate operators for low, high and bank bytes -- I didn't write the65816 a}ssembler specifications). This can be really useful for forcingabsolute 16 bit addressing on zero page labels, to add 1 cyc}le in timecritical applications. For the 65816, it can force direct page addressingfor non-ZP labels, (which of course req}uires you to move the direct pageregister to the proper page address). All 24 bit addresses must bepreceded by the > chara}cter.The operands for the 65816 MVP and MVN instructions should be simple bankbytes -- not full addresses. Ex: MV}P $40 $80moves memory from bank $40 to bank $80, using the addresses in X and Y.- PSUEDO OPS -Note that only 2 letters a}re required, but if additonal letters arepresent they will be truncated without assembly errors. For example, youmay use p}suedo ops like '.byte' and '.org'. Personaly, I really likehaving the psuedo ops the same width as all 6502 instructions, a}nd onlyuse 2 letters. .24Sets the symbol table and program counter to use 24 bit addresses.This is only useful for} 65816 programs, and may crash your machine if youtry to use it without having a 65816 CPU. .ABThe assembler will g}enerate byte-sized values for accumulator-relatedimmediate constants. (Default) .AWThe assembler will generate wor}d-sized values for accumulator-relatedimmediate constants. This is only useful for 65816 programs. .BA byteFor ban}k addressing, you can specify an operand to force assemblergenerated object code into bank select RAM. If the operand is >=} $80,this value will be stored into location $D301 when storing bytes of objectcode into RAM. Operands less than $80 are p}laced in the X register, and aSTA $D580,X is performed. This can control certain bank select cartridgedevices. NOTE: For} using the second method of bank addressing, theassembler should be able to return the bank select cartridge to normal.Ther}e is currently a 'STA $D5DC' for this purpose, but this may not be theright address for your cartridge setup. You should se}arch the disk filefor this instruction, ($8D $DC $D5), and replace it with the appropriateaddress. .BI filenameInc}ludes the contents of a binary disk file into the assembly. If thisfile does not contain a DOS binary header, it will be as}sembled as in-linedata at the current PC. Otherwise, a file that contains a header will beloaded at its load address. } .BY [+byte] bytes and/or ASCIIStore byte values in memory. ASCII strings can be specified by enclosingthe string in ei}ther single or double quotes.If the first character of the operand field is a '+', then the followingbyte will be used as }a constant and added to all remaining bytes of theinstruction.Ex: .BY +$80 1 10 $10 'Hello' $9Bwill generate:81 }8A 90 C8 E5 EC EC EF 1BValues in .BY statements may also be separated with commas forcompatability with other assemblers.}See also .SB which creates ATASCII screen codes. .CLClose output object code file. When using the .OU psuedo op to} createobject code files on disk, the file will normally be closed at the end ofassembly. However, if you wish to close th}e file before that, it can beforced closed with the .CL psuedo op. You may use this to create multipleoutput files in one }assembly, or to place something in RAM in addition tothe disk file. .DC word byteDefine constant-filled block. Thi}s will fill an area of size 'word' withthe constant 'byte'. .DS wordDefine storage. This will reserve an area of s}torage equal to size'word'. .ECDo not display macro generated code in the assembly listing. Only themacro call it}self will appear. .EJEject -- Send a form feed code to eject the page in an assembly listing. .ENMark End o}f assembly. This psuedo op *must* be present to end theassembly, or an error will result. .ESDisplay the code resu}lting from Macro expansions. .HE hex bytesStore hex bytes in memory. This is a convenient method to enter stringso}f hex bytes, since it does not require the use of the '$' character. Thebytes are still separated by spaces however, which }I feel makes a muchmore readable layout than the 'all run together' form of hex statementthat some other assemblers use. E}xample: .HE 0 55 AA FF .IBThe assembler will generate byte-sized values for index register-relatedimmediate }constants. (Default) .IWThe assembler will generate word-sized values for index register-relatedimmediate constant}s. This is only useful for 65816 programs. .IN filenameInclude additional files in the assembly. Only the main sou}rce file cancontain .IN psuedo ops. You cannot nest them. Default drive processingworks the same here as it does when loa}ding files from the editor, and soyou will usually not need any 'Dn:' types of filespecs. The file nameonly should be suff}icient. .LCTurn off (clear) the display of the assembly listing. (Default) .LLDisplay the assembly listing} on this line only, even if the full listingis turned off. This can be extremely handy to display the program countervalue} at important positions in the source file. .LO longStores a longword, 3 byte value in memory. Only one operand is }supported. .LSTurn on (set) the display of the assembly listing. .MC adrMove Code to a different address wh}en storing object code in memory. Thisis in case the .OR assembly address conficts with something already atthat location }in memory.!!!name .MD ([label1] [label2]...)Begin macro definition. Described in a separate section. .MEEnd macr}o definiton. .MGMark the current .IN include file as Macro Global. This keeps this filein memory thruought the ass}embly, which is required if the file containsmacros that are referenced in other .IN files. .OCTurn off (clear) the} storing of object code in memory. .OR adrSets the origin address for the assembly.Note: If there is a label on t}his line, it will be given the value of thenew origin. This is not the same as in Mac/65 which could use its origindirecti}ve to reserve space (*= *+1). You should use the .DS psuedo op forreserving space. .OSTurn on (set) the storing of} object code in memory. (Default) .OU filenameCreate an output disk file for the object code. Regretfully, this fi}le ismade up of individual 256 byte segments much like Mac/65 does. Iapologize for the laziness here on my part, but it re}aly was a lot easierto do this way. You will need to run some type of strip program tode-segment the file. The .OU psuedo} op should be placed above the first.OR psuedo op. .PR "text"Print a text message to the screen on pass 1 of the as}sembly. This isgenerally used with the .VA psuedo op when prompting for values to beentered from the keyboard. .SB} [+byte] bytes and/or ASCIIThis is in the same format as the .BY psuedo op, except that it willconvert all bytes into ATASC}II screen codes before storing them. TheATASCII conversion is done before any constant is added with the '+'modifier.lab}el .VAWill print a '?', and then accept input from the keyboard. You may enterany value, which will be given to the label} in front of the .VA. .WO wordStores a word in memory. Only one operand is supported. SET label = expressio}nSet the specified label to a new value. This instruction allows a labelto be redefined with different values during the a}ssembly. Any label canbe SET.- CONDITIONAL ASSEMBLY -There are four conditional instructions IFE, IFN, IFP, and IFM, th}atrepresent conditional assembly if Equal, Not equal, Positive, and Minus.The operand of the IF instruction will be evaluat}ed, and if the processorstatus codes match the type of IF statement, then the source codefollowing the IF will be assembled}. Mark the end of the conditional blockof code with the psuedo op '***'. (*** is like an ENDIF statement).There is no 'E}LSE' instruction, and so you must use complimenting IFstatements.Examples: IFN FLAG . ;This bl}ock of . ;code gets asm'ed . ;when FLAG <> 0 *** IFE FLAG . } ;This block does . ;when FLAG=0 *** IFN FLAG1!FLAG2 . ;asm'e}d if FLAG1 . ;or FLAG2 <> 0 IFE WIDTH-40 . ;This gets asm'ed . } ;when width=40 *** IFM WIDTH-40 . ;asm'ed if WIDTH . ;less than }40 *** IFP WIDTH-40 . ;if WIDTH greater . ;or equal to 40- MACROS -}Macros must be defined before they are used in your source. Thedefinition looks like this:!!!name .MD ([label1] [label2]}...)Where 'name' is the name of the macro, and 'label1' etc. are itsparameters. The three exclamation marks are a specia}l macro identifier,and must precede the macro name. The body of the macro definition willfollow, and should be ended with }a .ME psuedo op.The number of parameters used when calling the macro must always match thenumber of labels in the definiti}on. When called, these parameters will beplaced into the label names, in order, where they can be used in the bodyof the m}acro. Parameters can only be expressions -- there is no methodfor passing arbitrary text strings.Macros can pass up to 8 }parameters.Any labels defined within a macro must use a special form. Because macroscan be expanded multiple times, a spe}cial label type exists to avoiderrors from multiple label definitions. These label types start withthree periods, followed} by any normal label name. These special macrolabels will be given unique numbers with each macro expansion to keep themse}parate. You can consider them local labels to each macro expansion.Here's an example of a macro to increment a two byte va}lue:!!!IND .MD (LOC) INC LOC BNE ...SKP INC LOC+1...SKP .METo call this macro, you would use: } IND $80- ERROR MESSAGES -These are the error messages that can be produced by the assembler. Errormessages are marke}d with an '!', and also include the source line numberthat they occured on. If you are assembling a single file, or if the}errors occurs in your main file, you will be able to use the editor ^Hcommand to jump directly to the errors. For errors th}at occur in includedfiles, you will need to load in that portion, and jump to those linenumbers manually using the ^G goto }line number command. BRANCHBranch instruction out of range. OPCODEError in opcode field. This can be eithe}r a bad 6502 instruction, badpsuedo op, or an undefined macro. DUPDuplicate label definiton. EOFEnd Of Fil}e error. All assemblies must end with a .EN psuedo op. Thisshould be in the main source file, not in any included files. }This errorcan also occur if a conditional or macro definition is pending at the .EN. UNDEFUndefined label reference}. NESTNested definition. IF conditionals may not be nested. .MD macrodefinitions cannot contain additional defini}tions. OPERANDError in operand field. ADR MODEAddressing mode not spported. BAD LABELBad character}s in label name. MACRO OVMacro overflow in either the number of expansions, or level of nestedexpansions. S}YM OVSymbol table overfow. PARMSNumber of macro parameters in the call does not match the definition. LABEL} MISSINGMissing label on either a SET psuedo op or in an = equate definition.l does not match the definition. LABELOWelcome to the editor version .8 beta. Changes new to this version arelisted at the end of this file.File Format:The ed }itor saves files in straight ATASCII. It can either keep all spacesexpanded, or can use $7F TAB characters to reduce the si }ze of the file.The text can be freely converted between these formats. TAB compressionand expansion is done on a line by l }ine basis while you are editing, whichis different from the way most editors handle TABs. While you are editinga line, TAB } characters are not present, and the line will edit in the sameway as if it had only spaces. When the line is saved back in }to the file,the program will see if it can convert any sequences of spaces into TABs,based on the configured TAB fields. T }ABs are not rigidly enforced.Meaning, if you slide a comment field a little to the left to make moreroom, that spacing will } be retained, and that particular place simply won'tbe TAB converted. Thus, it is simply a manner of saving memory and file }space. The editor will actually run faster with the TAB setting on.Especially with the XEP80.Currently, this editor will } not allow lines longer than the right margin.It will allow 79 column lines with the XEP80 device though. Actually, themax } line length is one shorter than RMARGN to avoid problems with the E:device sending an extra EOL. Any lines longer than RMA }RGN-1 will be splitin two. One other problem with the line length should be pointed out.When using the character insert, i }t is possible to push a character intothe last column on the screen. Please note that this character will NOT besaved as p }art of the text, and will disappear the next time the editor getsa chance to draw the line. In fact, I had to set LOGCOL eq }ual to RMARGN*2to prevent inserts from doing line wrap.Eventually, I will fix the editor so that it can handle 79 characte }r linesin 40 column mode. My time recently has been spread much thinner thananticipated.Configurtion:The editor has se }veral configurable parameters that can be modified with asector/file editor. These are located at +3 bytes from the start a }ddress,+9 counting the DOS binary header. Here they are: (Words are 6502 Lo,Hi)Word - Text buffer start adr. If 0, the }editor will use MEMLO. (Default)Word - Text buffer end. If 0, the editor will use MEMTOP. Default $A8FF.Word - Symbol ta }ble start adr. Default $6400. This is located just past the part of the assembler that resides in bank select RAM.W }ord - Symbol table end. Default $7FFF. This configuration puts the symbol table entirely in bank select memory.Word } - Address for a 256 byte disk I/O buffer that is used when assembling to disk files. Default is set to $500.Byte - }0=Replace mode, 1=Insert modeByte - 0=Use spaces only, 1=Convert spaces into Tabs.3 Bytes - Tab settings for asm fields.By }te - When drawing the screen for a particular location, such as a Find or Goto command, this byte sets the screen row }where the desired line will be located. If you set this to 0, the line will be on the top row. $0C will put t }he line in the middle of the screen. Default is 6.Byte - # of lines the PgUp & PgDn command will move by. Setting } this to $18 gives single screen paging. If you normally use scrolling for short moves, you can set this value t }o something like $60 to jump through the file in larger steps.Byte - Line length saved in the Undo buffers. Default }is 39. You can increase this to 79, if you want entire XEP80 lines saved. You can also decrease this number to } something like 25, if you want to increase the number of history buffers without using extra memory. You woul }d only lose the comment field for any restored lines.Byte - # of Undo buffers. This number sets how many lines of hi }story can be undo'ed. Default is 16. Multiplied by the number above, equals the total size needed for undo st }orage, located at the end of the text buffer.Byte - Sets what bank of extended memory to put the assembler. It shoul }dbe a value appropriate for the $D301 register. Default is $E7. If you have no bank select memory, this byte should } be $FF.String - Default drive and dir spec. Must be in the form Dn:?????, like "D3:*.*", or "D3:*.SRC" if you want }dir listings to only show a certain file type. Filenames for loading and saving do not require a full "Dn:" fi }lespec. If you type just a name, it will be prepended with the default drive selected here.The editor begins in the } ESC menu. During the session, the ESC key willbring this menu back.Esc Menu Commands:A - Assemble current file. Hold }the Shift key when pressing A to turn on the assembly listing.B - Break to the monitor. Actually issues a 00 BRK instru }ction.D - Go to DOS. If you return to the editor by running at the start address, the source file will still be intact. } This is automatic in SpartaDOS by using the RUN command. For other DOSes, you will need to supply the starting add }ress which is currently $A900 as of version .8 beta.L - Load file. You do not need to type an entire filespec. The default } drive 'Dn:' will be prepended if the entered name doesn't have a ':'. Press Shift-L to append into an existing file. }P - Do Pass 2 only of the assembly. A full assembly must have already been performed, and then this function may be use }d if the source code was changed in such a way that didn't effect any label addresses. This can save a lot of assemb }ly time, but please do not use it unless you understand what it does and are certain that no label addresses have bee !}n changed since the last assembly.S - Save File. Save displays the last loaded filename. Press Return to accept it, or "} backspace and change. Press Shift-S to save a marked text block. To do this, mark the starting line with ^Z, then move #} to the ending line and enter the Esc-Shift-S command. To print a file or text block, first make sure to convert the $} text to spaces only, and then save to P:.T - Tab convert. It will prompt to convert to Tabs or Spaces. Tab conver %}ted text will have $7F TAB characters for any sequences of spaces that can be converted. The conversion is done from bac &}k to front for best speed, but it can still take awhile. It is also possible to run out of RAM when converting to sp '}aces. After this command is entered, the editor will remain in the specified mode. In other words, if you do a tab (}convert to spaces, all future entered lines will remain in an expanded space format.V - (Value) Will allow you to enter )} any expression, and then displays the calculated value in both hex and decimal. This can be handy for getting the v *}alue of labels, or as a simple calculator.X - Perform cross reference listing. The source file must already have been a +}ssembled with the A command. It allows you to enter a label name to start from, or just press return to create a cross r ,}eference for the entire symbol table. Be prepared for this to take awhile. This is a simple implementation that req -}uires a full pass of assembly for each label. Yeah, I know. On the positive side, it doesn't require any memory to .}build an XRef table, and so generating an XRef on large files should not have any problems running out of memory. Plus, /}being able to specify label names directly makes it very easy to get a report for one or two labels of immediate inte 0}rest.1-9 Directory, and set default drive. If you just want to change the default drive without getting a dir listing, 1}press Esc after pressing the desired number.Shift-Clear - Clear text buffer.Editing Commands:Standard Atari editing 2}keys apply, with a few exceptions. Clr & Set Tabhave no effect. Use the configure bytes to change tabs. Pressing the Caps 3}key without Shift will always set lower case instead of toggling. UseShift-Caps to set upper case.Return will insert a n 4}ew line if pressed at the end of the current line.Otherwise, it will just move to the line below.S^Up (Shift&Ctl&Up) Scrol 5}l upS^Dn Scroll Down. These two commands are handy, because they scroll immediately, without waiting for the cursor to 6} reach the screen's edge.S^< Page up by configurable # of linesS^> Page DownS^Del Delete to end of line^, Start 7}of line^. End of line^T Top of file^B Bottom of file^I - Toggle Insert/Replace mode.^W - (Write) Begin key macro 8}recording. When done, press Esc. Up to 60 keystrokes can be recorded.^E - Execute Macro^K - Prompts for a number, an 9}d then will repeat the next entered key that number of times. ^K cannot be used within a macro, but it can be used :} to execute ^E multiple times.^F - Find text -- not case sensitive. '%' can be used as a wildcard.S^F Find by searching ;}backwards towards the start of the file.^R - Replace. F&R Max length=15. Replace only works forwards. It will ask for <} a Find string and a Replace string. For all matches of the find string, the editor will display an inverse '>' symbol =}in front of the occurance. You may press Y to replace it, N to skip it, A to replace all occurances to the end of >}the text, or Esc to abort.^N - Next. If the previous operation was a replace, then you will be in the prompted replace ?} mode if the string is found. Otherwise, if the previous operation was a Find, then you will simply be taken to the @} next occurance.^P - Find Previous match, by searching backwards.^G - Goto line number. You can also enter a '+' or '-' a A}s the first character to move a number of lines relative to the current location.^L - Enter a label name, and the edito B}r will jump to where the label is defined. (By searching from the first column only.)^S - Set mark at current location C}^M - Go to Mark^J - The editor's version of a JSR. It looks at the operand field of the current line, and jumps to wh D}ere that label is defined. It also sets a mark at the current line so that you can return with a ^H. The use of th E}is function is not limited to JSR instructions. JMPs, branches, even data variable locations can be traced with this F} command. For any line that contains an operand field, ^J will attempt to find the location where that label is defin G}ed.^H - Return to previous position where a ^J command was entered. ^H is also used to jump to locations that gave asse H}mbly errors. During the assembly, up to 16 error positions will be remembered.^Z - Set block start.^X - Cut from block I} start to current line. (Forwards only -- sorry) If you find you want to mark a block backwards, the easiest way to do J} this, is to set a mark at the current line, then move backwards to the start of the block. Press ^Z, then press ^M K} to return to where you started, and give the ^X or ^C command. A clear to end of file command can be done by pres L}sing the keys, ^Z, ^B, ^X.^C - Copy text from block start to current line, into the cut buffer. The text is left unchan M}ged.^V - Paste cut buffer at current line.^D - Duplicate line.^U - Undo line deletes, or changed lines. Does not undo blo N}ck ops.New for version .8:Several bug fixes regarding use with the XEP80. Only one known bugremains, in that you cannot O} search for the ATASCII TAB character when usingthe XEP80. I am still trying to work this out.Find command is no longer c P}ase-sensitive. Although, text in the Replacefield will still be stored in whatever case it was entered in.Documentation f Q}or the Replace command was incomplete, and you may not haveknown what to do in the Replace mode. It's now described under ^ R}R above.The ^N next command will continue in replace mode if that was the mostrecent activity.The ^J JSR function is now S} independant of the ^S and ^M single bookmark. Anew command, ^H, was added to return from JSRs. ^J will also track up to1 T}6 levels of subroutine calls now.^H can take you directly to any source lines that contained assemblyerrors.All bookmark U}s, and marks set from the ^J and error position reporting, willnow auto-adjust to any changes in the source text, so that th V}ey will alwayspoint to the correct line in the source file.Page up and page down functions are calculated by screen positi W}on now,instead of by cursor position.More bug fixes. As of this release, I haven't noticed any more editorproblems, and X}I have been typing a lot of code in the last few weeks.While it's still a good idea to be cautious, and make backups of your Y}source, previous warnings about the safety of this editor can be toned downa bit. I'm now using it exclusively for all my Z}code.e, previous warnings about the safety of this editor can be toned downa bit. I'm now using it exclusively for all my - New since version .9 -A long standing buf which could trash the Esc menu has been fixed.The TAB compression could somet\}imes mess up .BY statements with ASCIIstrings.The debugger is now ZP clean, so all of ZP is available for the user.You c]}an look at RAM under the OS, by setting the bit in $D301, as longas you are using SpartaDOS or some method of handling inter^}rupts whenthe OS is disabled. Previously, this used to crash the debugger, whichuses the E: OS routines for text output._}A faster version of the Hyper_E screen accelerator is included.- New since version .8 -Several intermediate versions were`} released, from .81 to .84. Dependingupon which version you had, some or all of these changes may already havebeen in placa}e.Fixed problems in the startup code, that could cause crashes eitherstarting the assembler, or returning to it from DOS.b}The debugger crashed when giving an address in the I command.The RTI instruction was not traced correctly in the debugger.c} This bug hasbeen here for almost 10 years! I guess in all that time, I never had anoccasion to trace through an RTI.Fid}xed problems with extra CR's in the assembly listing. Note that the onlyway to send assembly listings to the printer right e}now, is by using I/Oredirection through DOS, or you can use the 'O P:' command from the monitor.I'll provide an option in tf}he Esc Menu in the future.The editor functions for label searching, and 'JSR', did not work when thesource was entered in g}lower case.Raw files loaded with the .BI command were not handled properly whenassembling to disk.Changed the editor Savq}B%DOS SYSB*)DUP SYSBSASM DOCBhED DOCB[HISTORY DOCBsHYP COMB%xHYP DOCBHYP ROMBHYPS COMBpMAE COMBpMAE64 COMjMONITOR DOCNOTE64 DOCRUNAD OBJe command to remain in the menu, making it easier toassemble or load another file witout having to bring up the menu again.r}Documentation for the SET directive was incorrect. It is describedcorrectly later in this file. bring up the menu again.c88 ? ?Ȏ$?%?E͹\ͅȱ̠ͅ1L%%?舭˅i?ȭ˅i?Lt}89 DEHBLV䌡?φi͆΍??i荖??8͈8ȥͩꍟ?Ϧi ?u}Ϙ 89? 8 J9 8G9 }8k9 }8ˈҩҩҠ 89 Ҡ<`ҠźScreen Accelerator Wedgev} by Doug Wokoun v1.4JH 24-Mar-94* Can't Install *E:??WUS)} Li@`]^TZU[w},_TZ ^ &_ &_e^_eU_eX^_eY_U8iU[c^^_^]I^` ``8TZU[tThe Hyper E: accelerator will doubleyour screen display speed, while takingup only 150 bytes or so of low memory.If you ary}e using a DOS other thanSpartaDOS, it will take up an addtional30 bytes, but that's still a prettysmall amount.The Hyperz} E: accelerator was originallywritten by Doug Wokoun. I found somecompatability problems with it, andhave released modifi{}ed versions.There are three versions of the HyperE: screen accelerator in this archive.HYP.COM is the normal version.H|}YPS.COM includes a routine to set thescreen color to a user defined valueany time the E: device is opened. Thecolor value}}s are preset to $82 and $0Cintensity, and the only way to changethem right now is with a disk fileeditor. The change is a~}lmost at theend of the file, and will start withthe bytes, $A9,$82,$8D,$C6,$02.Finally, for the hackers out there, Iincl}uded version HYP.ROM that can beburned directly into the OS ROM. Thereare a few advantages to this. It won'ttake up any }memory. It will accelerateany programs that use the $E400 vectorsdirectly, and there are alot of those.RAM loaded version}s will only speed upprograms that use CIO though E:. Alsothe ROM version can be more securesince it doesn't have to worry} abouthaving its handlers overwritten in lowmemory.Installation of the ROM version will bedescribed at the end of this f}ile.Use of HYP.COM and HYPS.COM is assimple as loading the program. Hyper Eis relocatable, and will positionitself righ}t above MEMLO. When itinstalls, it will check to see if theE: handler has already been patched, asis the case with Sparta}DOS, and if soit will install into the patchedhandler. This allows Hyper E: toremain compatable with Sparta's I/Oredirec}tion abilities. If no patchedhandler is found, Hyper E: will createit's own, along with a DOSINI routineto reinstall it a}fter a system reset.It is possible that Hyper E: may find apatched handler, but be unable tointegrate itself into it. If} thishappens, Hyper E: will display themessage, "Can't Install", and you willbe unable to use the program. Pleasecontact} me if you see this message, letme know what is running in your system,and I will try to adapt Hyper E:.- ROM version ins}tall -The HYP.ROM file is 149 bytes long, andis designed to execute as the start ofthe OS's E: PUT routine. You will nee}dto know the location of this routine inyour particular ROM, as well as a free149 byte area. In my 130XE ROM, the E:PUT }routine is at $F2B0, and there isan unused space at $CB65. This iswhere the supplied file is set to work,but it can easil}y be changed to otherlocations.The first step is to copy the ROM imageto someplace in RAM, and then find 149bytes of spa}ce that you can use. Youcan try searching for a long string of0's. The HYP.ROM file has a loadaddress of $4B65. If you }have movedthe ROM down to $4000, and have freespace at $CB65/$4B65, you may simplyload the binary file HYP.ROM.Otherwise,} use whatever method you arecomfortable with to place the contentsof the HYP.ROM file into your emptyspace area. The code} is relocatable,so you do not have to worry aboutmoving it.Next, the existing PUT routine needs tobe changed to jump to }this new code.Right now, the first instruction of thePUT should be "STA $2FB". This needsto be changed to a JMP to the ne}w codewe just loaded. The first instructionof HYP.ROM is "STA $2FB", so that willtake the place of the existing one that}you are about to overwrite. The bytevalues you want to store, are $4C, thenthe low byte of HYP.ROM, and then thehigh byte}. In my example, these byteswould be $4C, $65, $CB. (Make sure youuse the upper ROM address like '$CB',and not the '$4B'} temporary RAMaddress!)The final step is a JMP instrustionback to the OS ROM. The JMP is locatedin the HYP.ROM code, $2}6 bytes from thebeginning. In our example, that wouldbe location $4B8B. This JMP needs topoint to the location *after* t}heoriginal "STA $2FB" in the OS PUTroutine -- the one you replaced with aJMP in the previous step. In otherwords, this l}ocation will be theoriginal PUT address +3. In theHYP.ROM file supplied, this JMP is setto $F2B3. If this is the right p}lace,leave it alone. Otherwise, change theaddress to point to the correct spot.You should be able to save the binaryima}ge of the ROM file now, and burn a27128 EPROM.If you hae any questions or comments,please feel free to contact me.John }HarrisGEnie: J.HARRIS32Internet: jharris@cup.portal.com any questions or comments,please feel free to contact me.John ;eKKWUS)} Li@`]^TZU[,_TZ ^ &_ &_e^_eU_eX^_eY_U8iU}[c^^_^]I^`} Li@`]^TZU[,_TZ ^ &_ &_e^_eU_eX^_eY_U8iU88Ȏ?? ? ?Ȏ$?%?E͹\ͅȱ̠ͅ1L%%?舭˅i!}?ȭ˅i?L89 DEHBLV䌰?φi͆΍??i荖?? 9͈8ȥͩ?Ϧ!}i89 i͊iȑ͠?Ϙ ? 8 J9 8d9 89 8ˈҩҩҠ U9 Ҡ<`!}źScreen Accelerator Wedge by Doug Wokoun v1.4JH 24-Mar-94* Can't Install *E:??WUS)} L!}i@`]^TZU[,_TZ ^ &_ &_e^_eU_eX^_eY_U8iU[c^^_^]I^` !}  `8Z ^ &_ &_e^_eU_eX^_eY_U8iU[c^^_^]I^`  $ժLd 'D1:*.*LʩLLLTLr`````l `HH ܩIHhDhE V'f ܩ)%}(ȄRɛa{I ݬ!8 r+e؅ٰؐ5,/,8ө ܩ HHh(`Ӆ%}ޑƠӅޑ0ޑ8ްߥ8 ޑȱɛ SکȄ%}`٠8eتi ɛȘ٘` @ ܩ 0 @ D DcU DL@00 @o<z%}yz i8ʈ LFІхֆעʎʎ 18 )# 0%}%%$R7! !6 ܑЅޢ@ߢӱޮӑd DL@@@L D AL@LHL+J*@,L%}}smrkosoadass 2aveabalueRef DirOUT OF MEMFind:Repl:Ln #Lbl:Times:ab%}-pc 0D B A @BL@ F D Dۤ H A`,`ɂ JI@)@@LL=A%}|0@LyɄ,p` Aa{I `S[ ` nAȘH ©ܤm Фх܄h%} ȩ\ ȩ`ۅY CCA ũH \hɛ\Ċ AU\ I`U %}D E AHU ũ Dh,_KfUSH A  mCh U\LDi8LBC DLDRL FR ^A 1 :LGIٌK%}0ؘi-L>C A|x nAN>\ 6H0\'"h"h\0\ H ChȘ8ڄ J%}ک[2 ʩۤ㘤| KHKH|yU`0 \LD0 DLBS[\U IS*8eUc Dc` CU\` DU I %} Dȹ\[S`SЩ` D D ^ANYA He؅ؐ٭8 J2 ʩ D%} D DmL!H؍:@ٍK@`8Hתh` nA,UL=EM `҅e窥Ӆe`؅م`\< `H Ih%}\ aA: `R @>Lʩi!LTiLD :I< @\ LD H IB} %}D0 V0P H$p H D +JLG GI ^AS D fD-LB \`@,0J ZJH h XJ A隥ɉLB H I$p 0Dҥ%} ئ٥ԅإՅي@8 kJ I XJ >J D< FLI IѤ kJЕHe؅ҽIeمӊH Jh BHHKީ BH%}H8بLPHH B H҅ӆ K e*@e;@8H٪h ALʩ_Ii8ҥӥ؅eޥمe%}ߠ K *@;@8Hh *@;@`H@*hJL@L!@O\ aA\ H $@ DLI~ `}%}   ADLBPSTVX}RCClCCCCCHCHHD@@CCCB\D7DC{DmDGG&B_E^EEFFFFEFFG/GGEDGFHF%}IG0K(I9I0KGII5I4IDHFFGSG@IInIDK&@  @)@LLLLLLLLL)ULTL_LTLXc L gM {[ȱ!.%} MV,`Hchc` LcBʆ WLL L膽 [LL$0XHH$P0Y*@%}Y;@ƅ ^hb! ^ȹb  AT #h pY ^` Y T LTJcL@ح`\!. MPȹ[ɛ`P ȹ[%}ɛPP`Ȣ) ^()` ^ ^`ʍMNM,ߥ.N`N[8eߪ٤`ԥ%}`.N/Nhh Ml24RABQAWQBA!RBI9RBYSCLTDC1SDSWSEC`aEJQENYTES_aHE^bIBRIN%VIWRLCQLLQLORLSQMCSMDaME5bMGQOC%}QORSOSQOU^PRQSBSVAQWOR-9=MQUYiy}BCCBCSBEQBGEBLTBMI0BNEBPLBRABVCPBVSpADCANDASLBIT#CMP(COP7CPX%}8CPY;DEC>EORCINCRJMLYJMPWJSL[JSR]LDA_LDXnLDYsLSRxORA}PEAPEIREPROLRORSBCSEPSTASTXSTYSTZTRBTSBrqaseucim}ygwo21!3%}%5#)-=9'7/? $4,<:RQASEUCIM]YGWO_l|L\" FVN^J &%}6.>*fvn~j⒑dt   %} BRKCLCCLDCLIXCLVDEXDEYINXINYNOPPHAHPHBPHD PHKKPHPPHXPHYZPLAhPLBPLD+PL%}P(PLXPLYzRTI@RTLkRTS`SEC8SEDSEIxSTPTAXTAYTCD[TCSTDC{TSC;TSXTXATXSTXYTYATYXWAIWDMBXBAXCE%)]iy%} ^\"ȹ\P " ^LU)? ^ ^ \ɛ[ \؈ ^LULU$P  LU膚膝%}膞륛 {_֩,H ^hLX ^LUH) ^h`҅إӅ @ _ @% / / /R /%}$ / / .T IY(70519&ʈeeȑ =_ئ A_ cS O_0H%}ؐiޥiߐ / XߥҥӐh؅ҥم TT/ S M [H Xh S cS _LUu%}u` S .Tѥ $P IYH +RhעLm` SLU ] T Mʆޢ+ ^ MP LLU"'ˍ%}SP\' TP)` @ eeLX\ `ҥӢAL $P LT Y %}L$pLU$0? -PASS-Q _ T K^ b {Y YL@ _ rLULr{cحc {[ȱ2ȱ0:? b@Q b\@%} \ Not FoundL@[cح~c٥؍{cٍc ^ M : b {_ɆΆφ­é҅Ӆ녚%}@…إÅ٢̆_hhHH…ҥÅ TTʅ̥˅͢B`hh٥H YhLU Y%} zb͠ 0 [ٍYH؍YH/ \ Lɀ LU$p ,Lm`YY Y̅ʥͅ漥҅¥Ӆå…إÅ %} @ @LUɆ A ]\  M u`LU\@\ =Z rM=.3 M LLU M +R%}\H) [h؅م ATК_x\B: M2 MNeH ^h XH hE$h LLzWh06\Y3)N MLW%}\)lQʩMP M P XLUL_2JJ5P00}N|O X ^(xǽNXlYhd [L LLU MxXJ,P%}PP\?K#(Ȣ< >!F [ u` XὤPHH Xhh8 [A ]Ȣ ̢ [(L%}X,b H ^h X88堅塅ЛЗD,T X ^H M ^ XhLzWi,؆JJ8 wPH5P)VPHyNh %} L{OH$P;09*" PY YL Y ^ihH ^06h $h` ^%}Ħ뵠 ^-L^hlY _`0̦LYΦυH ]h` YH, ^h ^ ^L^HLYHLYH$Pp0njc%}^ PY ^ pY ^ة٢Z/ H ^h ^ɛ ^hɆ`䥳 D[g T[ %} g[LjZ D[ Y]^ \[ȹ\?@ȹ\) ^ _ L8` \ LȐ`mi8 %} ޅ߅ L8` _8H٪h # Zȹ! .)iج!}YcYc|cؘ8؅م`\%}!]^`\.LI[]^`]^`\`ȱ.!8ȱe؅ؐ`ȆPLL [8\ `%}\`ȹ\-#< >^7HȢ [h` [8*ȹ[܈ 6\ [ #& 6\.\ {8`%}\' b@) b6 )eHeehJ&&& b2`$$%*1`&&) b`%}"$0\!. ?)iYcؽ|c٦\!.?Hh r[ r[ r[ r[\ ^Ș%}ʆज़ L`.ٽ! ! !.!𮥴Ъȱ)$0C {[L6]%}$05ȱ! ^ )^. ^ :^äؙ8` TYL] [,` [LL. /]`8`ȱȱ`ȱŻ%}ż`ȱŹȱź`  - Label File -[cح~c٢ ^ȱL^ȱ0 ? {[Ls^ Me= ^ M {[ ^$Ű%} ^ ,H0 Ĭh`HJJJJ ^h) 0:iإ@ @  j_LU 4YWM2.qHq%}h8ȑȑ@ B g_ȑȥȥ` E TT r dL@!Yc|cȑ`@U ^$ ^%} ^ ZL^_ u`ʥH) \h LLU\ ^  Lk`HH M1( M'\)%} H [hHȹhԢ Yh؍YhٍYHH泥  LLLqV`ߪ\`ߦ`0 Mhh aH %}aH`   #&),/258;>,X,X),S,S),Y]],Y.ME.MD.ENBRLPERMVPMVNIFEIFNIFPIFMSET***.EN.aaXTZX]XXX3a?aHaO%}ada)aXTLULU WaLU Wa Wa0 Wa0愶 S`膸LU [LS , LLU M=HH M Shh٤؈L%}U  LLU沥hhHȑ؈HLULk`Q\( LL=b M4)0 [ =ZȽ0%} rMLaйLU\PƳ0 ƹƺhhLU LLUP \ L X ML0ɗɈ IƩ%}` bLZM}LĬح8` b/L^ b AG6`ȹ\0:`!R!)2.Դ{4VYc(%}Ybh h+hh*D?67+)? 4."0/-+ ) LL%}*Lȳ *HH Xl +H-,.(`.-,`T  ,A X Y NV-BDIZC SP ;*Hh0 &}H* Ĭ ߥ ZL\R@PH #S S) h  D  &}J j Y0!mm   (`'(L`*hihHiHLȱ` ¬&} 5 ";I "ɭ>! 0 )?;hhU ? Ĭ X&} ¬* E ݎ0Š LG;9 } ¬8 沰 L !X ¬ 沍 Z&}| LG*L@'`( [L7l()d)_|Rh+hihioHhȱ&}V | h+8ɭ HH L ة 0 L h+ة *LLjee`L: 6&}!7 tE L ƴRl # 0` '\ %ș ș0%   y `&}\ \ɛ` 5  y %`  %\\\ ,`*ޢ [=\, 5`&} 8` ᵐ AG6`0:` HH `L: ǵ * & }H h̬ ¬ t`   |LĬ$e`   ǵe  : & } »   »ɛ $ {. Ĭ |67Lm S\* = *Ϣ C 5& }ݍ0-  ٿL: 10꘤ 5/L5SPYXA@ -` @ 5L\`& }"Н`  -  bH  hZ&*i? Ĭ   Ĭ& } Ĭ`iee L J J") JJJJJ))) JJJ Ȉ`H Ƿh&}8UL@E@ 0"E3@ @E3@ @E@ "D3ЌD"D3ЌD"D3@ "D3@ bx!YMJ,),#($YX$$#]#)i#&}$S#$S[[i$$)|mi)S4i#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDDȢʎʎ&} "` 0[.\0 \]\ tTH 7hTT& } ¬ U E .-*Ц tL &}蝬$ʎ  y X`` 52ee X` y X&}` 8+H\ ۭhH h?  eeL W 5Ȅ ۭ&} / %  dL:BDEiHiI  L0 Џ&} Lt`8`e ei`H »h` ǵ H Ә V hӘ`0 Џ$mժLd? 'D1:*.*LʩLLLTLr`````l `HH ܩIHhDhE V'f ܩ)*}(ȄRɛa{I ݬ!8 r+e؅ٰؐ5,/,8ө ܩ HHh(`Ӆ*}ޑƠӅޑ0ޑ8ްߥ8 ޑȱɛ SکȄ*}`٠8eتi ɛȘ٘` @ ܩ 0 @ D DcU DL@00 @o<z*}yz i8ʈ LFІхֆעʎʎ 18 )# 0*}%%$R7! !6 ܑЅޢ@ߢӱޮӑd DL@@@L D AL@LHL+J*@,L*}}smrkosoadass 2aveabalueRef DirOUT OF MEMFind:Repl:Ln #Lbl:Times:ab*}-pc 0D B A @BL@ F D Dۤ H A`,`ɂ JI@)@@LL=A*}|0@LyɄ,p` Aa{I `S[ ` nAȘH ©ܤm Фх܄h*} ȩ\ ȩ`ۅY CCA ũH \hɛ\Ċ AU\ I`U *}D E AHU ũ Dh,_KfUSH A  mCh U\LDi8LBC DLDRL FR ^A 1 :LGIٌK* }0ؘi-L>C A|x nAN>\ 6H0\'"h"h\0\ H ChȘ8ڄ J*!}ک[2 ʩۤ㘤| KHKH|yU`0 \LD0 DLBS[\U IS*8eUc Dc` CU\` DU I *"} Dȹ\[S`SЩ` D D ^ANYA He؅ؐ٭8 J2 ʩ D*,} D DmL!H؍:@ٍK@`8Hתh` nA,UL=EM `҅e窥Ӆe`؅م`\< `H Ih*-}\ aA: `R @>Lʩi!LTiLD :I< @\ LD H IB} *.}D0 V0P H$p H D +JLG GI ^AS D fD-LB \`@,0J ZJH h XJ A隥ɉLB H I$p 0Dҥ*/} ئ٥ԅإՅي@8 kJ I XJ >J D< FLI IѤ kJЕHe؅ҽIeمӊH Jh BHHKީ BH*0}H8بLPHH B H҅ӆ K e*@e;@8H٪h ALʩ_Ii8ҥӥ؅eޥمe*1}ߠ K *@;@8Hh *@;@`H@*hJL@L!@O\ aA\ H $@ DLI~ `}*2}   ADLBPSTVX}RCClCCCCCHCHHD@@CCCB\D7DC{DmDGG&B_E^EEFFFFEFFG/GGEDGFHF*3}IG0K(I9I0KGII5I4IDHFFGSG@IInIDK&@  @)@LLLLLLLLL)ULTL_LTLXc L gM {[ȱ!.*4} MV,`Hchc` LcBʆ WLL L膽 [LL$0XHH$P0Y*@*5}Y;@ƅ ^hb! ^ȹb  AT #h pY ^` Y T LTJcL@ح`\!. MPȹ[ɛ`P ȹ[*6}ɛPP`Ȣ) ^()` ^ ^`ʍMNM,ߥ.N`N[8eߪ٤`ԥ*7}`.N/Nhh Ml24RABQAWQBA!RBI9RBYSCLTDC1SDSWSEC`aEJQENYTES_aHE^bIBRIN%VIWRLCQLLQLORLSQMCSMDaME5bMGQOC*8}QORSOSQOU^PRQSBSVAQWOR-9=MQUYiy}BCCBCSBEQBGEBLTBMI0BNEBPLBRABVCPBVSpADCANDASLBIT#CMP(COP7CPX*9}8CPY;DEC>EORCINCRJMLYJMPWJSL[JSR]LDA_LDXnLDYsLSRxORA}PEAPEIREPROLRORSBCSEPSTASTXSTYSTZTRBTSBrqaseucim}ygwo21!3*:}%5#)-=9'7/? $4,<:RQASEUCIM]YGWO_l|L\" FVN^J &*;}6.>*fvn~j⒑dt   *<} BRKCLCCLDCLIXCLVDEXDEYINXINYNOPPHAHPHBPHD PHKKPHPPHXPHYZPLAhPLBPLD+PL*=}P(PLXPLYzRTI@RTLkRTS`SEC8SEDSEIxSTPTAXTAYTCD[TCSTDC{TSC;TSXTXATXSTXYTYATYXWAIWDMBXBAXCE%)]iy*>} ^\"ȹ\P " ^LU)? ^ ^ \ɛ[ \؈ ^LULU$P  LU膚膝*?}膞륛 {_֩,H ^hLX ^LUH) ^h`҅إӅ @ _ @% / / /R /*@}$ / / .T IY(70519&ʈeeȑ =_ئ A_ cS O_0H*A}ؐiޥiߐ / XߥҥӐh؅ҥم TT/ S M [H Xh S cS _LUu*B}u` S .Tѥ $P IYH +RhעLm` SLU ] T Mʆޢ+ ^ MP LLU"'ˍ*C}SP\' TP)` @ eeLX\ `ҥӢAL $P LT Y *D}L$pLU$0? -PASS-Q _ T K^ b {Y YL@ _ rLULr{cحc {[ȱ2ȱ0:? b@Q b\@*E} \ Not FoundL@[cح~c٥؍{cٍc ^ M : b {_ɆΆφ­é҅Ӆ녚*F}@…إÅ٢̆_hhHH…ҥÅ TTʅ̥˅͢B`hh٥H YhLU Y*G} zb͠ 0 [ٍYH؍YH/ \ Lɀ LU$p ,Lm`YY Y̅ʥͅ漥҅¥Ӆå…إÅ *H} @ @LUɆ A ]\  M u`LU\@\ =Z rM=.3 M LLU M +R*I}\H) [h؅م ATК_x\B: M2 MNeH ^h XH hE$h LLzWh06\Y3)N MLW*J}\)lQʩMP M P XLUL_2JJ5P00}N|O X ^(xǽNXlYhd [L LLU MxXJ,P*K}PP\?K#(Ȣ< >!F [ u` XὤPHH Xhh8 [A ]Ȣ ̢ [(L*L}X,b H ^h X88堅塅ЛЗD,T X ^H M ^ XhLzWi,؆JJ8 wPH5P)VPHyNh *M} L{OH$P;09*" PY YL Y ^ihH ^06h $h` ^*N}Ħ뵠 ^-L^hlY _`0̦LYΦυH ]h` YH, ^h ^ ^L^HLYHLYH$Pp0njc*O}^ PY ^ pY ^ة٢Z/ H ^h ^ɛ ^hɆ`䥳 D[g T[ *P} g[LjZ D[ Y]^ \[ȹ\?@ȹ\) ^ _ L8` \ LȐ`mi8 *Q} ޅ߅ L8` _8H٪h # Zȹ! .)iج!}YcYc|cؘ8؅م`\*R}!]^`\.LI[]^`]^`\`ȱ.!8ȱe؅ؐ`ȆPLL [8\ `*S}\`ȹ\-#< >^7HȢ [h` [8*ȹ[܈ 6\ [ #& 6\.\ {8`*T}\' b@) b6 )eHeehJ&&& b2`$$%*1`&&) b`*U}"$0\!. ?)iYcؽ|c٦\!.?Hh r[ r[ r[ r[\ ^Ș*V}ʆज़ L`.ٽ! ! !.!𮥴Ъȱ)$0C {[L6]*W}$05ȱ! ^ )^. ^ :^äؙ8` TYL] [,` [LL. /]`8`ȱȱ`ȱŻ*X}ż`ȱŹȱź`  - Label File -[cح~c٢ ^ȱL^ȱ0 ? {[Ls^ Me= ^ M {[ ^$Ű*Y} ^ ,H0 Ĭh`HJJJJ ^h) 0:iإ@ @  j_LU 4YWM2.qHq*Z}h8ȑȑ@ B g_ȑȥȥ` E TT r dL@!Yc|cȑ`@U ^$ ^*[} ^ ZL^_ u`ʥH) \h LLU\ ^  Lk`HH M1( M'\)*\} H [hHȹhԢ Yh؍YhٍYHH泥  LLLqV`ߪ\`ߦ`0 Mhh aH *]}aH`   #&),/258;>,X,X),S,S),Y]],Y.ME.MD.ENBRLPERMVPMVNIFEIFNIFPIFMSET***.EN.aaXTZX]XXX3a?aHaO*^}ada)aXTLULU WaLU Wa Wa0 Wa0愶 S`膸LU [LS , LLU M=HH M Shh٤؈L*_}U  LLU沥hhHȑ؈HLULk`Q\( LL=b M4)0 [ =ZȽ0*`} rMLaйLU\PƳ0 ƹƺhhLU LLUP \ L X ML0ɗɈ IƩ*a}` bLZM}LĬح8` b/L^ b AG6`ȹ\0:`!R!)2.Դ{4VYc(*n}Ybh h+hh*D?67+)? 4."0/-+ ) LL*o}*Lȳ *HH Xl +H-,.(`.-,`T  ,A X Y NV-BDIZC SP ;*Hh0 *p}H* Ĭ ߥ ZL\R@PH #S S) h  D  *q}J j Y0!mm   (`'(L`*hihHiHLȱ` ¬*r} 5 ";I "ɭ>! 0 )?;hhU ? Ĭ X*s} ¬* E ݎ0Š LG;9 } ¬8 沰 L !X ¬ 沍 Z*t}| LG*L@'`( [L7l()d)_|Rh+hihioHhȱ*u}V | h+8ɭ HH L ة 0 L h+ة *LLjee`L: 6*v}!7 tE L ƴRl # 0` '\ %ș ș0%   y `*w}\ \ɛ` 5  y %`  %\\\ ,`*ޢ [=\, 5`*x} 8` ᵐ AG6`0:` HH `L: ǵ * *y}H h̬ ¬ t`   |LĬ$e`   ǵe  : *z} »   »ɛ $ {. Ĭ |67Lm S\* = *Ϣ C 5*{}ݍ0-  ٿL: 10꘤ 5/L5SPYXA@ -` @ 5L\`*|}"Н`  -  bH  hZ&*i? Ĭ   Ĭ*}} Ĭ`iee L J J") JJJJJ))) JJJ Ȉ`H Ƿh*~}8UL@E@ 0"E3@ @E3@ @E@ "D3ЌD"D3ЌD"D3@ "D3@ bx!YMJ,),#($YX$$#]#)i#*}$S#$S[[i$$)|mi)S4i#bZH&bTDThDt(ntJrtttrDh2"&&rr&HDDȢʎʎ*} "` 0[.\0 \]\ tTH 7hTT& } ¬ U E .-*Ц tL *}蝬$ʎ  y X`` 52ee X` y X*}` 8+H\ ۭhH h?  eeL W 5Ȅ ۭ*} / %  dL:BDEiHiI  L0 Џ*} Lt`8`e ei`H »h` ǵ H Ә V hӘ`0 Џ(mMonitor version .92 beta. General:Note: 24 bit support, and the full 65816 instruction set are not completedyet.Fi.}lenames default to the current drive number which can be changed.(input of 'FILE' = 'D1:FILE') A full filespec will overrid.}e the default.Non destructive prompt character (.) for ease in full screen editing. Also,the prompt does not interfere wi.}th command decoding. If the cursor is movedup to redo a prior command, the '.' does not need to be deleted.Upper and Lowe.}r case accepted.Continuous memory displays can be stepped one line at a time with the spacebar. Press 'C' to return to co.}ntinuous display. ESC, RETURN, or BREAK willstop the display.ALL addresses and data bytes can be entered in HEX (default).}, in DECIMAL with# (#1234), in binary with % (%10011010), in ASCII with ' ('A) or as a labelcurrently defined in the MAE sy.}mbol table with . (.LABEL). Arithmeticoperators +-*/&! can also be used, and will be performed left to right. Anycombina.}tion of these can be mixed at any time in a completely free formatscheme, with no limits on length. (Ex: 2000-#256+'W/100).} Very little willbe mentioned about this feature later on, but ALL numbers for ALL commandsaccept this versatile entry syst.}em.All commands use spaces as delimiters. A '?' indicates a command error.Parameter uses for commands are abbreviated to:.}adr: a 16 bit address.by: an 8 bit byte. ('by' with numbers indicates a string of bytes.)bit: a 0 or a 1.char: an AS.}CII character.Quantities in [brackets] are optional parameters. Default values will beused if they are not entered. All n.}on-bracketted values must be entered.Any other upper case characters or symbols should be entered as stated.'Current addre.}ss' refers to the last displayed or changed address, (plusone), and is separate from the current program counter or PC. .} COMMANDS: Display Memory. M [adr] [adr][/]Displays hex and ASCII. Displays 24 locations if only 1 paramete.}r. Displaysfrom current adr if no parms. '/' = to $FFFF. The '/' can be used on allother commands as well. Does not dis.}play ASCII control characters whenoutput is being sent to an external device. Peek Memory. P adr1 [adr2..].} [*]Special memory display that allows multiple addresses to be entered, and onlyprints one byte per address. * causes con.}tinuous print of list of addresses.Push Break to abort. Disassemble D [adr]Disassembles memory starting at adr, .}or the current adr if not entered. IfMAE is resident, the assembly code can be modified using normal screenediting. Singl.}e line assembly can be started from scratch by typing,"-adr ." followed by an assembly mnuemonic. (The '.' is necessary). .}Fromthe single line assembler, you may enter '*' as the first mnuemonic characterto continue disassembly from that address .}forward. Change Memory. :adr by1 [by2..by8]The change memory command ':' can be entered directly, or edited .}from thedisplay memory command. Only 8 data bytes will be changed. ASCII Mem Change C adr ASCII STRINGStores.} ASCII string at adr. Addresses for both change memory commands mayuse * for current address. (ex. C 1000 COMPUTER. :* 9.}B.) The secondcommand will put a CR after the ASCII string. Display Registers RDisplays 6502 registers in this.} form: ,A X Y NV-BDIZC SP ;AB 5D FA 10110001 FF 7014 LDA #$00 Change Registers ; register bytesSupports s.}creen editing of R command. Status flags can be modified in bitform. When entering values directly, a comma will skip to t.}he next register,and you don't need to enter all the values. EX: ';55' will change the Aregister to 55. ';,,20' will cha.}nge Y to 20. Goto G[S] [adr] [*brkpt] [C by] [r by] [Pf bit]Run program at adr, or PC if not enter.}ed. At any time during execution, theBreak key will return to the monitor and display the current registers andPC. Use th.}e 'S' option to run code that ends in an RTS. (Note: When usingthe S option, the PC adr in the register display on return .}is an internaladdress, not the address where the actual RTS or RTI occurred.)A breakpoint will create a return point to th.}e monitor whenever a particularaddress or condition is reached. *brkpt will place a 00 (BRK) at thebreakpoint address. Fo.}r this reason, breakpoints can not be used forprograms in ROM. A '?' will be printed in this case. The breakpoint mustals.}o be set at an opcode rather than an operand location so that it willexecute. The rest of the parameters add conditions to .}the breakpoint.C + by Counts the number of times the breakpoint is reached. Executioncontinues until the BRK is passed th.}e specified number of times. Breakpointscan also test for specific conditions by specifying (r) reg name and (by)byte it m.}ust contain in order to BRK. Processor flags can also be tested by'P' + flag character + (bit) for condition. Use the flag.} characters as inthe register display.The breakpoint will be skipped over until the specific condition is reached.When bo.}th count and condition options are used, the count will apply to thenumber of times the condition is met. Execution speed w.}ill be slightlyslower than real time in this mode. Actual speed will depend on how oftenthe program is interrupted to chec.}k conditions.NOTE: A peculiar bug in the ATARI hardware causes breakpoints to beintermittenly skipped over. When the BRK.} interrupt occurs, the programcounter+2 is pushed on the stack, but instead of jumping through theinterrupt vector, the OS .}will occasionally just return to the program atPC+2. This is usually a very rare occurrance, but can happen more often when.}using conditional breakpoints on very small and quick loops, thus BRKinterrupts are occurring very rapidly. It took many y.}ears before I was ableto really understand what was going on, and be assured that the problem wasindeed in the computer, an.}d not a bug in the monitor.ADDITIONAL NOTE: This bug does not occur on the '816 processor! Yeeeehaaa!(Thanks John.) .} Go command examples.G 2000 = Run program at $2000G 4000 *4124 = Run at $4000, and break at $4124G *3100 A'Q .} = Run at current PC and break at 3100 when A register equals ASCII 'Q'G *4200 C10 PZ1 = Run at PC and b.}reak at 4200 the 16th time the zero flag is set Remove Breakpt *Brkpts remove themselves, .}and replace what was there when the BRK isexecuted. However, in case the program stops at other than the brkpt, * willremo.}ve it. This can occur when the Break key is pressed, conditional orcount values are not reached, or when the BRK is set in .}an operand ratherthan an opcode. Setting a new brkpt with the G command will also remove anunused BRK. Exit to .}DOS X Return to Assembler A Fill Memory F adr1 adr2 [by1] [by2 by3...]Fill memory with.} 0 if no data bytes. Otherwise enter 1 byte, or a sequenceof any number of bytes to fill with. Transfer Mem .} T adr1 adr2 adr3Move memory from adr1 through adr2 to adr3. Handles overlapping moves. Hunt for chars H .}adr1 adr2 by1 [by2...][!] Hunt for String H adr1 adr2 'ASCII string [!]Hunt memory for ASCII string or string .}of hex bytes up to length of 60. Use'!' for a wild card to match anything. Realize the number entry system willlet you se.}arch for things like "A9 'A", (as in LDA #'A), but not the reverseof this. Entering "'A A9" will put the hunt into full ASC.}II form, and searchfor the literal string that you typed in. The second example can actually beentered in the form "! 'A A.}9", using a wild card to avoid the initial 'identifier. For one more example, let's say you wanted to search for a JSRto a.} MAE defined label. This can be entered as "20 .LABEL .>LABEL". Change wild card % charChange the wild card f.}or the Hunt command to 'char'. This is used in case acharacter in the search string is '%' or HEX 25. Compare me.}m K adr1 adr2 adr3Compare memory from adr1 to adr2 with memory starting at adr3. Displays alladdresses with differ.}ences. DEC to HEX # decimal number [no2...] HEX to DEC $ by1 [by2...]Displays hex val.}ues of a string of decimal numbers and vice versa. Change Output O [filespec]Send output to screen and file.}spec. O by itself returns to just screenoutput. Default drive processing is not done on this command. Fullfilespecs must.} be entered for disk files. Because of this, other devices donot need a ':'. ('O P' is sufficient to send output to printe.}r) Re-open Editor IOCB EThis is useful for returning to the text screen from a graphics mode, or80-column di.}splay, or to reset the screen after changing RAMTOP. The otherIOCB's used are: #3 disk reads, #4 disk writes, and #6 exter.}nal output. Query MAE symbol table Q adr (Sorry, I was running out of let.}ters)Search the current symbol table for a label that matches the value enteredfor adr. If found, the label will be printe.}d. This is basically the reverseprocedure for symbol table lookup, and as such will only work well when therequested value.} has only one label associated to it. Trace Instr I [adr]Traces program an instruction at a time. Automa.}tically traces OS calls(including jumps with implied return) as one step. Trace normally works onprograms in ROM, except '.}G' and 'R' options as noted below. After each step,the monitor will wait for one of the following keypresses to control the.}tracing mode:Space - Steps one instruction at a time.C - Continuous trace.D - Disassemble next instructions. Us.}eful for previewing code that you are about to step through. The program counter will remain at its current .}location.G - Execute all instructions up to current 'D' command listing. Use to quickly execute loops or other .}structures. First use 'D' to find a spot past the structure, then 'G' will execute everything up to that poi.}nt. This command puts a Breakpoint at the end position, and therefore cannot be used if the program is in ROM.S .} - Execute entire subroutine as one step.R - Return from subroutine. Use this command if you are already in a s.}ubroutine, and wish to return to the previous level. A BRK will be placed at the instruction the subroutine returns .}to, and therefore cannot be used for programs in ROM.P - Peek the value of the operand of the current instructio.}n.Q - Perform a Q monitor command on the operand of the current instruction. If the operand value is defined in .}the current MAE symbol table, the label name will be printed. You can use this on JMP, JSR and branch intruc.}tions to get an idea where you're going, and also on any memory references that have you thinking, "What the heck is .}*that*?"U - Execute the user function.X - Ignore instruction. Skip to the next one without executing.ESC, RETURN,.} or BREAK exits trace mode. Change Default Drv / 1-8All default drive accesses change to drive number entered, i.}ncluding uses inthe assembler section. The starting default drive number will be the same asthe current SpartaDOS drive..} Binary Load L [@adr][-adr] filenameLoad DOS II binary file where it was saved, or at @adr if entered. Pri.}nts a'?' if the file is not DOS II format. Loads appended files, but @adr onlyworks on 1st part. -adr loads raw data with.} no header using a straight CIOtransfer. Both PC and default address are set to the load address. Binary Save .} S [-]adr1 adr2 [@adr3] [+]fileSave DOS II binary file from adr1 to adr2. If @adr3 is entered, it will beused as the .}header allowing the file to load in at a different address thanwhere it was saved. Use '-' for a CIO save without header. .}If + is entered,append to existing file. Directory V [name or spec] (Sorry, I *am* out of letters)Dis.}plays disk directory. Default of Dn:*.*. A filespec of D2: = D2:*.* Sector Read R adr sector# [ending se.}ctor] Sector Write W adr sector# [ending sector]Direct sector I/O to default drive. Reads single and doubl.}e density disksautomatically including single density sectors 1-3 of a DD disk. Hex Arithmetic ? by1(+-*/&!).}[by2..] (no spaces)Prints hex and decimal values of expression evaluated left to right.Can also be used for ASCII convert.}. (?'A) User Function U [adr1] [adr2] [adr3]Accepts up to 3 parameters, which will be stored at $F0, $F2, a.}nd $F4. $F2and $F4 will be 0 if not entered, while $F0 will have the current address ifnot entered. In addition, the carr.}y flag will be set if no parms. Thenjumps to the end address of the monitor-3. ($BBFD in top of RAM version)User function.} expects an RTS return. parms. Thenjumps to the end address of the monitor-3. ($BBFD in top of RAM version)User function,This assembler isn't designed for a 64Kmachine, but it can be configured tooperate in a limited fashion. Becausethe bulk 2}of the code sits at $4000,that will be right in the middle of RAMif you don't have bank select memory.The best you will be2} able to do, is setthe text buffer from $6400-$A8FF, andthe symbol table from wherever yourLOMEM is up to $3FFF. That wil2}l giveyou about 17K for your text buffer.Instructions on how to configure theaddresses, and where they are located,are c2}ontained in the file ED.DOC.You will need to use a disk fileeditor to change the configuration.Skipping 9 bytes from the 2}start of thefile, (6 bytes for the binary headerplus 3), you will want to change thefollowing bytes to:00 64 FF A8 00 00 2}FF 3F(Using 00 00 for the symbol tablestart, will use the value in lomem.)You should also set the Bank selectconfigure b2}yte to $FF, which willcancel the bank selecting. use the value in lomem.)You should also set the Bank selectconfigure b03FF, which willcancel the bank selecting. use the value in lomem.)You should also set the Bank selectconfigure b4