Hello everyone, with permission from John Harris I put mae_95.arc at umich archives! This is John's Macro Assembler/Editor v 0.95. Below is a list of updates from previous versions. Please do not distribute modified Archives! For those of you that still are confused about what MAE is, download and try it now! WFR: Fredrik Lundholm d1dol@dtek.chalmers.se --history.doc - New since version .93 - This will be the last version of the assembler that will run in 64K of memory. Because the symbol table takes up half of the bank select RAM area, there is just not enough room to fit the monitor into banked RAM, or add the improvements I would like to do to the editor and assembler modules. Thus, future versions will be using two banks of XE bank select memory, and it will no longer be possible to make do with a 64K machine. When recording key macros in the editor, you must now use Ctrl-3 to end recording, instead of Esc. This allows Esc menu commands to be entered into macros, primarily to support a chain of assemble commands when your program contains several modules. The next version of the assembler should allow loading and saving macros to disk, which will further enhance the macro usefulness. Hunt routine in the monitor now automatically skips over the area from $D000-$D7FF. So you can search the OS using $C000-$FFFF and not generate any hardware accesses. Hunt and Memory display routines would not always stop when the address reached $FFFF. This has been fixed. I removed the automatic OS routine detection from the trace function. Now, you must use the S key to trace through OS functions in one step, just like any other subroutine. You can also use the R key if you are already within the OS code. The reason for doing this, is that it makes things more consistant, and also allows you to trace code in the $C000-$FFFF area if you need to. Pseudo-ops are now available in the debugger's single line assembler. The debugger now includes a built-in function for switching between display lists for the debugging text screen, and your program's screen. It uses the letter "V", for change View. Both V and the "U" user function can be called from both the trace mode, as well as any paused memory or disassembly listing. The "%" key did not work as a wildcard in the debugger, since it was interpretted as the start of a binary number. I have changed the default wildcard to "?" in both the debugger and editor. This propagated through a few of the debugger command key assignments, along with a few other changes as well. Overall, I feel the key assignments have been improved, and they won't be changed from now on. Here is a sumnmary of the changes: ? - Change Wildcard = - Evaluate expression V - Change display view \ - Disk Directory The editor uses the same wildcard configuration byte as the debugger. You can use the debugger's "?" command, or a Cntl-? in the editor to change the wildcard character. Both modules will use the new assignment. 1200XL function keys are now supported for moving the cursor. You may enter Ctrl-key graphic symbols or international characters into the editor by pressing Ctrl-A, and then the key you wish to enter. Now uses an improved method for detecting the default drive when first loaded. This should be compatible with all SpartaDOS versions, and cause no problems for non-Sparta DOSes. It also allows you to specify a different default drive from the command line, such as, "MAE D2:". If a drive is not specified, the default drive will be where the MAE program was loaded from. Note that this is slightly different from the previous behavior. If D1: is the current drive, and you type "D2:MAE", this version will set the default drive to D2:. The previous versions would set the default drive to D1:, being the drive Sparta was logged on to. The MAE.COM file now comes with a RUNAD address installed. The SpartaDOS bug that prevented using the RUN command to return to a program which used RUNAD has been fixed in 3.2g and later, so I have decided to include RUNAD in the file now. Fixed a stack corruption problem when disk I/O errors occurred during assembly with a .IN include file. Improved documentation. - New since version .92 - The editor's label search using either the ^L or ^J commands has been made a bit cleaner. Searching for a label "TEST" used to stop if it found a label "TESTING", since "TEST" is a part of it. The search will now find the unique label. Also, the ^J JSR function will operate correctly on lines such as "LDA LABEL+1", and will take you to where "LABEL" is defined. Previously, things such as "+1" or ",X" used to confuse the editor about where the label name ended. An example macro file is now included. Note that version 1.0 of the asembler is going to use two banks of XE banked memory. I received some good suggestions that I want to implement, plus moving the monitor into banked memory will use up too much space in a single bank, leaving insufficient space for the symbol table. I hope this does not inconvenience anyone, but it is the best way to ensure the largest amount of main system RAM will be available to the user, without making any compromises. - New since version .9 - A long standing bug which could trash the Esc menu has been fixed. The TAB compression could sometimes mess up .BY statements with ASCII strings. The debugger is now ZP clean, so all of ZP is available for the user. You can look at RAM under the OS, by setting the bit in $D301, as long as you are using SpartaDOS or some method of handling interrupts when the OS is disabled. Previously, this used to crash the debugger, which uses 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. Depending upon which version you had, some or all of these changes may already have been in place. Fixed problems in the startup code, that could cause crashes either starting the assembler, or returning to it from DOS. The debugger crashed when giving an address in the I command. The RTI instruction was not traced correctly in the debugger. This bug has been here for almost 10 years! I guess in all that time, I never had an occasion to trace through an RTI. Fixed problems with extra CR's in the assembly listing. Note that the only way to send assembly listings to the printer right now, is by using I/O redirection through DOS, or you can use the 'O P:' command from the monitor. I'll provide an option in the Esc Menu in the future. The editor functions for label searching, and 'JSR', did not work when the source was entered in lower case. Raw files loaded with the .BI command were not handled properly when assembling to disk. Documentation for the SET directive was incorrect. The correct usage is: SET label = expression