Files
qasm/IIGS.601.SRC/Debugger/Old.Debugger.Comments.1988
Shawn Quick dfcaae62dd Add qlink, the disk tools, and a bootable ProDOS 8 image.
Move the assembler to src/qasm. qlink links OMF 1.0 and 2.0 from a script. makeBin flattens a load file, qomf dumps OMF, and qpro builds ProDOS volumes. APW and MPW assemble through the ORCA front end. Relocatable modules emit OMF objects. Listings stay off unless -l is set.

make boot assembles the GS/OS 6.0.1 ProDOS 8 kernel and BASIC.SYSTEM into an 800K volume. BASIC.SYSTEM accepts ls and pfx, and its splash reports PRODOS BASIC 2.0, copyright 1983-2026. IIGS.601.SRC is the source and the BASIC.SYSTEM oracle that image is built from.
2026-10-16 14:41:55 -07:00

1 line
30 KiB
Plaintext

;
;
; May 11, 1988 1) Converted the debugger to run
; in ROM. On power-up the debugger
; looks like a DA and then the system
; copies itself into RAM (entire 64K bank)
; It then steals the DA vector and then
; replaces the starting address of the debugger
; in its place. Once the debugger has been invoked,
; it asks for 1K of bank zero memory for stack and
; direct page use. It saves the environment of any
; memory that it uses. It presently uses the DA
; calls to save and restore the text screens for exit
;
; 2) Cleaned up several bugs that had been present
; from the beginning of time:
;
; A) The debugger screwed up the stack when it
; transferred from native mode to emulation mode
; and back. I saved the upper half of the native
; mode stack pointer and restore it when going
; to native.
;
; B) When loading files to debug, the system loader
; sets aside a portion of zero page to hold some
; variables it needs. When the debugger quit
; it did not dispose of this memory. This made
; it impossible for ProDOS 8 applications to
; run following the debugger because they reserve
; all of bank zero. I saved all of the file ID's
; and then dispose of them and all of their memory
; when I quit. This also enabled people to
; load more than one file at a time and still
; keep track of all the memory. 15 max files
; can be loaded.
;
; 3) Added the feature to allow JSR's to be run real
; time. Before only JSL's could. Now this only
; works in RAM.
;
; 4) Fixed the re-entrancy problem. Once you are inside
; the debugger, attempts to access it again are useless.
; The only way to re-enter is to quit and then get
; back in using CTRL-OA-OPTION-ESC.
;
; May 22,1988 1) Stored the current stack in 01/0100 on exit. To keep
; interrupts from trashing my input/output variables,
; I pushed them on entrant stack and then saved stack
; in 01/0100. Problem was that stack was drifting down
; every time the debugger was called about 1B bytes and
; quickly drifted into zero page and died!!. I'm now
; saving the stack on exit. Now the stack drifts three
; bytes every time (from rtl that follows). Will check and
; see if that should be fixed.
;
; 2) saved and restored the graphics switches -- including
; the super hi-res switch. Now you can return to the finder
; and see the pretty screen. Only works if you have not
; used the graphics screens -- I'm still thinking about
; that!!
;
; May 23,1988 1) When a break occurred, the break handler was still set
; to the ROM bank. This was changed to be in the RAM bank.
;
; 2) When the jump (J) command was used, the proper bank was
; not saved in MYID to be used to get the proper address
; to jump to like it is in the JSL and JSR. This was fixed.
;
; 3) A problem was occurring with the heart beat task. If the
; DA vector had not changed from the last task and was
; still my vector, then the task replaced the CDA vector
; with my vector. CDA's were never available and trying
; to get at one hung the system in a wait loop.
;
; 4) Added three more to the stack before restoring it in QUIT.
; This insures that the stack pointer is in the EXACT same
; place as when it entered the debugger. Should make
; everyone happy.!!
;
; 5) The stack is still causing me problems. This time I'm
; saving the emulation stack pointer away and then restoring
; it when I leave. This way it is always exactly the same.
;
; May 26,1988 1) Fixed subtle stack problem. The lower byte of the A reg
; wasn't being saved in the save loop due to a bne that
; should have been a bpl. If the debugger was called
; in between an instruction that loaded A and then
; transferred it to the stack, the stack got trashed because
; the proper value wasn't being restored.
;
; May 27,1988 1) Added the code that allows real time JSR's to be run
; out of ROM!! The code keeps a table for each ROM bank
; The first time a ROM JSR is called, the code searches the
; bank for any RTL and uses that address for the RTS to
; return to. The next time a JSR is needed in the same
; bank, it has it saved and doesn't need to look for it.
; Now there is no provision for what happens if there is
; no RTL anywhere in the bank.
;
; May 31,1988 1) Went through and added all of the longa and longi's to
; go with the rep's and sep's in the code. Did it care-
; fully to avoid any crashes when the code is assembled
; and run.
;
; June 1,1988 1) Made a special ROM for the people who changed the CDA
; vector. The normal one is E1/0048, their's is E1/02B4
;
; June 2,1988 1) One good hack deserves another. For Fern's special ROM's
; I set up the CDA vector to point to the manager -- like it
; supposedly is on power-up. This insures that you can
; always get into the DA's
;
; 2) Changed the save and restore screen calls from the DA one
; to the one that requests a handle and then puts all of the
; memory there. There is no provision for error handling yet.
; This allows DA's to be called from the debugger.
;
; June 8,1988 1) There is a problem with the boot code turning off the
; VBL's. This caused problems because the heartbeat task
; needed to keep me installed was not being called. Thus,
; the hack: when the debugger is called, I re-install my
; heartbeat task. If it is already there, I simply turn on
; VBL's and go for it. If it is not there, then I assume
; that a pr#5 or something similar wiped me out of the
; heartbeat queue. I install myself, clear out my queue and
; turn on VBL's. With this solution, the worst thing that
; can happen, is that someone will try to get into DA's, find
; they can't, access the DA's.
;
; June 8,1988 1) Changed the base conversion feature to handle expressions of
; 32-bit numbers. An expression consists of a series of one or
; more hex or decimal numbers separated by operators and
; ending with an equal sign. Hex numbers must be preceded by
; a '$'. Decimal numbers may be preceded by a positive or
; negative sign or nothing. Negative numbers are converted
; to 32-bit two's-complement. Numbers that are larger that
; 32-bits will wrap. Legal operators are '+', '-','*', '/',
; and '%' (modulus). All operators are evaluated left to
; right with equal precedence. Overflow is ignored. The result
; will be printed in either hex or decimal depending on the
; form of the expression. If the expression consists of just one
; hex number, then it is assumed we want to convert it to
; decimal, so the result will be in decimal. If the expression
; is just one decimal number, the result is printed in hex.
; If the expression contains more than one number and all the
; numbers are in decimal,then the result is printed in decimal.
; Otherwise the result is printed in hex.
;
; 2) Changed command parser to read command starting at the
; rightmost equal sign in the current line that is not at the
; end of the line. This allows the result of a calculation to
; be used in a command without having to retype the result.
;
; June 9, 1988 1) Added indirect memory referencing. An address followed by two
; colons will dump memory starting at the 3-byte address which
; is stored at the address given in the command.
;
; 2) Added direct page mode for the memory subdisplay. Typing 'Z'
; while editing a memory cell will toggle direct page mode.
; A direct page memory cell will display the given direct page
; address even when the direct page changes.
;
; June 10, 1988 1) Added a new disassembler mode that causes the disassembler to
; recognize REP's and SEP's and switches between long and short
; accumulator and index registers automatically during
; disassembly.The mode is controlled by the disassembly mode
; flag (d). If d is set, then SEP's and REP's are recognized;
; if d is clear, then they are ignored. The flag can be set or
; cleared by the command d=x, where x is either 0 or 1.
;
; June 13, 1988 1) Added dereferencing mode for the memory subdisplay. Typing
; 'I' while editing a memory cell will toggle deref mode.
; Two colons are used to indicate a deref. The memory
; displayed will be the contents of the memory location whose
; address is stored in the three bytes starting at the address
; of the memory cell.
;
; June 14, 1988 1) Added alignment of bytes in the dump display, so that the
; position of the byte is determined by the low nibble of it's
; address.
;
; 2) Added a dump range option. The command 'addr1.addr2:' dumps
; memory between and including addr1 and addr2. If the number
; of bytes requested is greater than the number that will fit
; on the screen, then only what will fit on the screen is
; displayed.
;
; June 15, 1988 1) The deref memory dump option was extended so that the number
; of colons following the dump address or range is the number of
; bytes in the indirect address. That is the command of the
; form '$XXXXXX::' will dump the block of memory starting at
; the two byte address stored at $XXXXXX. The bank is decided
; by the value of the bank register. A command of the form
; '$XXXXXX:::' will dump the block of memory starting at the
; three byte address stored at $XXXXXX.
;
; 2) The memory subdisplay was updated to handle both 16-bit and
; 24-bit dereferencing. The referencing is done as described
; for the dumping. The type of referencing (16-bit, 24-bit, or
; none) is changed by typing a colon while editing a memory
; cell. The current referencing mode is indicated by the
; number of colons following the address as described above.
;
; 3) Allowed entering of addresses into memory. When setting
; memory, if the value is longer than 1 byte, it is assumed
; to be an address. For example, typing '00/2000:123456' will
; store a $56 at 00/2000, a $34 at 00/2001, and a $12 at
; 00/2002. Note that if the address is a 24-bit address,
; you must explicitly enter leading zero's.If you want to
; store the 24-bit address 00/1234 at 00/2000, you must type
; '00/2000:001234'. If you type '00/2000:1234', it will be
; assumed to be a 16-bit address, and only two bytes will be
; entered into memory. Note that the v1.0d1 ERS (5/11/88)
; implies that this feature already exists. In fact,
; it did not exist.
;
; 4) Added a quickdump feature. If you type an address and then
; press return without following it with a colon, then the 16
; bytes starting at that address are displayed at the bottom
; of the screen. They will stay there until any key is pressed.
; This keypress will be passed to the input routine, so it will
; be the first character of the next command.
;
; June 16, 1988 1) Changed the expression routines so that decimal results are
; preceded by a plus. This makes sure that they are not
; confused with hex results.
;
; 2) Added a column heading line to the dump display.
;
; June 20, 1988 1) A circular history queue was added to record the last 32
; instructions in a trace. This queue is used to show the
; trace history when returning from tracing with the display
; off. This means that a fast trace can be done by turning
; the display off first, but that you can still see the
; instructions that have been executed when done tracing.
;
; June 21, 1988 1) Added display mode switches to the command mode. These
; switches are similar to the ones available in trace mode.
; The backslash key '\' is now treated specially. If this
; key is pressed any time while on the command line, then
; the next key pressed will be interpreted as a display switch
; key. The display switch keys are the same as in trace
; mode. Neither the backslash or the switch key will be
; displayed, so they can be entered in the middle of a command
; without affecting it.
;
; June 22, 1988 1) Initial register values are set to the saved irq values
; found in the $E1000 bank.
;
; June 23, 1988 1) Removed previous change (hopefully temporarily).
;
; June 27, 1988 1) Fixed trace history to work with stepping and with tracing
; using the 'T' command without an address.
;
; June 28, 1988 1) Fixed 80COLSTORE switch bug. The debugger now restores the
; value of the switch after it clears it.
;
; June 30, 1988 1) Added conditional assembly stuff to allow the creation of
; an init version of the debugger. This version should be
; made into a file type of $B6 on the GS. It will load on
; bootup and act exactly like the rom version.
;
; 2) Updated the copyright/version message.
;
; July 5, 1988 1) Removed code that initialized the display screen (i.e.
; break points, mem protection, mem cells, stack display,
; etc.) The initial values are now determined by the
; values in the various tables and variables at assembly
; time. Doing this means that if the values are changed
; when in the desk accessory version, then if we exit the
; debugger and then return, the values will be the same.
;
; 2) Fixed bug in quick dump routine that caused crash when
; exiting the debugger.
;
; 3) Modified code so that the entry state is now saved as
; variables instead of on the stack.
;
; 4) No longer return to calling procedure with a rtl. Now
; we pull the return address off of the stack on entry
; and do a jmp to that address to exit.
;
; 5) The return address and processor status that were saved
; on the user's stack by the interrupt routines are now
; saved on entry to the debugger, and then restored on
; exit. This allows the user to trace his/her program
; in the debugger without having to worry about destroying
; the return stuff on the stack.
;
; July 6, 1988 1) On initial startup, the break vector is patched to jump
; into the debugger. When a break in encountered, the
; the debugger will launch and check the break status flag.
; If it is set to debugger breaks, then the debugger will
; beep and then set all of the registers to reflect the
; status of the machine at the time of the break. The stack
; pointer will be set to it's value at the time of the break
; (not after the break,) and the PC will be set to the
; address of the break instruction. If the break status
; flag is set to use breaks, then the the debugger will just
; break to the monitor.
;
; 2) When entering the debugger by using the entry key
; sequence, debugger will reflect the state of the machine
; when the interrupt occurred.
;
; 3) Fixed bug that caused crash when doing a J or an X with
; either m=1 or e=1. The fix involved restoring some lines
; that had been commented out in the jump routine (JPC.)
;
; 4) Added new debugger command 'START' that prints out the
; address at which the debugger is loaded. This is to
; help in the debugging of the debugger. This command is
; only available if the debugger is assembled with
; ThisIsDEV equal to 1.
;
; July 7, 1988 1) Fixed bug in the routine that check to see if the break
; vector has already been patched. It now compares the
; bank in the break vector against the current bank, not
; the bank at assembly (or load) time. This was only a
; problem in the rom version.
;
; July 8, 1988 1) Fixed bug that that caused problems when executing an JSL
; or JSR at real time with the emulation mode on.
;
; 2) Fixed bug that caused the high byte of both X and Y to be
; trashed when returning from executing a JSL or JSR at real
; time.
;
; 3) Fixed bug in 'X' command that sometimes caused a jump to
; the wrong bank.
;
; 4) Fixed bug that caused a crash when tracing a JSR in real
; time with short accumulator.
;
; 5) Added two new commands: STACK and DP. These commands
; respectively set the users stack pointer and direct page
; pointer to point to the stack and direct page that are
; allocated by the debugger on startup. These are primarily
; useful for when the user enters the non-application version
; of the debugger, and doesn't want a safe stack and direct
; page to use instead of using those of the application that
; was running at the time that the debugger was called. Note
; that the stack command only works if e = 0.
;
; 6) Fixed bug that caused the stack pointer to be off by one
; when returning from real time code in emulation mode via
; a BRK instruction.]
;
; July 11, 1988 1) Fixed bug in the loops that saved and restored the entry
; state.
;
; July 12, 1988 1) Fixed bug that caused the bank byte of the break vector
; to be patched incorrectly in the rom version.
;
; 2) Fixed bug that caused problems with real breakpoints
;
; July 13, 1988 1) Fixed bug that caused real breakpoints to mess up on the
; first J or X command executed after a trace or single
; step with the display on.
;
; July 15, 1988 1) If the option key is held down when the debugger is
; first called during initialization, the debugger will
; not be installed.
;
; 2) Fixed bug that caused the debugger's memory not to be
; deallocated by the QUIT command in the init version.
;
; 3) Fixed bug that caused PC not to be set when entering
; debugger via a break.
;
; July 18, 1988 1) Moved allocation of 1k back to every time debugger is
; run.
;
; 2) Fixed bug that caused the PCK on entry not to be
; restored on exit if in emulation mode.
;
; 3) Debugger now recognizes CTRL-OA-Option-ESC while doing
; real-time execution within the debugger. This will not
; re-enter the debugger recursively, but will just stop
; execution of the code and drop you back to the main
; debugger display screen. When quitting, you will still
; exit to the point at which the debugger was first called.
;
; 4) The Prodos 16 stack based system call is now recognized,
; and all JSLs to it are executed at real time.
;
; 5) The PC was being set to two bytes past the break when
; entering the debugger via a brk instruction. Now it
; is set to point to the brk instruction.
;
; July 19, 1988 1) When doing the QUIT command, the debugger checks if the
; user has patched the break vector since the debugger
; patched it since initialization. If not, then it is
; restored to what it was before initialization.
;
; 2) Version # is now followed by a letter indicating which
; version of the debugger. The letters are 'r' for the
; rom version, 'i' for the init version, and 'a' for the
; application version.
;
; July 21, 1988 1) Changed user breaks to monitor breaks. This just means
; that the command to set breaks to drop into the monitor
; is now 'mbrk' instead of 'ubrk.' Also the flag that
; indicates the type of break is now an 'm' instead of a 'u'.
;
; 2) Changed commands around to remove almost all case
; sensitivity. To do this several things were changed.
; First of all, the commands 'e=', 'm=', and 'x=' were
; removed. These can still be changed by toggling them with
; the 'e', 'm', and 'x' commands, which must be in lower
; case. The old 'M=' and 'X=' commands now work in lower
; case as well as upper case. The old command 'D' which
; was not case sensitive has been changed to 'DP:'. This
; is so that the old command 'd=' could be removed and
; replaced with the new command 'd' which toggles the
; disassembly mode. The old command 'DP' was changed to
; 'DPAGE'. This was done so as to avoid typing it
; accidentally when meaning to type 'DP:'. Finally, the
; 'quit' command was changed to 'unload'.
;
; 3) Fixed bug that caused error when doing a command of the
; form '1234X' or '1234J' from the dump screen.
;
; 4) The command parser now only starts interpreting the
; currentcommand from the previous equal sign if that
; equal sign was from a valid expression. This eliminates
; some confusion from occurring when trying to set an
; invalid flag equal to a value.
;
; 5) Fixed bug that caused numbers of more than 3 bytes that
; were entered on the command line to be truncated to 2
; bytes.
;
; 6) The default base for numbers not preceded by any sign
; in an expression is now hex. Decimal numbers now must
; alway be preceded by a positive or negative sign.
; This means that if you want to add hexadecimal $1A to
; decimal 5 for example, you must now type '1A++5='.
;
; 7) The 'J' command (without an address in front of it)
; was not working corectly. The code was doing some strange
; things that didn't seem to make much sense. I added code
; that should make it do the right thing. Let's hope it
; works OK.
;
; 8) Made the letter 'G' interchangable with the letter 'J'
; for jumping into code. This was done because everyone
; (myself) included thought that there already was a 'G'
; command, but it didn't exist.
;
; July 22, 1988 1) Changed the 'on' command so that it always causes the
; master display screen to be displayed. It used to ignore
; the on command the screen was on, but we were viewing
; a different screen by using the backslash commands.
;
; July 25, 1988 1) Took out fix that stopped numbers of greater than 3 bytes
; to be truncated. It was causing too many problems.
;
; 2) Fixed bug that caused CLOAD and CSAVE not to work in
; ROM version.
;
; 3) Fixed bug with the automatic switching back to the
; master display screen when typing a command that
; isn't available from the dump screen.
;
; 4) Fixed bug that caused an expression of the form
; '5A=' not to be converted to decimal.
;
; July 26, 1988 1) Fixed bug that caused master display screen to be turned
; back on automatically if doing a trace or single-step
; while it was turned off.
;
; July 27, 1988 1) Took out the letters following the version number.
;
; July 28, 1988 1) Corrected the help screens. Made changes so that there
; are no invalid commands, but didn't add all the new
; commands.
;
; Aug. 1, 1988 1) Toolbox calls are now recognized during disassembly.
; If a JSL $E10000 is seen, then the debugger will check
; if the previous instruction was a LDX immediate and if
; long indexing is on. If both of these are true, then
; the tool call name will be displayed instead of the
; JSL E10000. The LDX # will still be displayed.
;
; 2) It is now possible to return from the monitor (after
; entering it via the MON command) by pressing
; CTRL-OPTION-OA-ESC.
;
; Aug. 3, 1988 1) Fixed bug that caused the debugger to be messed up after
; hitting a BRK or pressing CTRL-OA-OPTION-ESC while
; tracing a subroutine in real-time.
;
; 2) Fixed bug/feature that pushed an extra long return
; address onto the stack when executing a JSR in real
; time.
;
; Aug. 5, 1988 1) Fixed another bug that caused the debugger to crash on
; exit if a BRK was hit or CTRL-OPTION-OA-ESC was pressed
; while inside a real time JSR.
;
; 2) Debugger now restores the next instruction if a BRK was
; encountered or if CTRL-OA-OPTION-ESC wass pressed while
; tracing a subroutine in real time.
;
; 3) The quit command now quits to the current PC and
; current state instead of to the point of entry. The
; screens are still set to what they were on entry.
;
; Aug. 10,1988 1) Fixed bug that caused the high byte of both X and Y to
; be destroyed when entering a subroutin in real time.
;
; 2) Added an unload by user ID command. This command is
; of the form 'UNLOAD id#' and simply calls the
; tool box routine DisposeAll with the given ID #.
;
; 3) The routine that checks for toolbox calls during
; disassembly now no longer checks to make sure that
; long indexing is on. This was causing problems when
; code was being entered with the mini-assembler.
;
; 4) Added two new commands, 'TOOL #toolnum' and
; 'TOOL _ToolName' Both of these commands output the
; tool number and name of the specified tool. If
; an unknown tool number is requested, then the tool
; name will be output as unknown. If an unknown tool
; name is requested, the debugger will just beep.
;
; Aug. 11, 1988 1) Changed the UNLOAD command to SHUTDOWN. It now takes
; two arguments, the user ID and a quit flag, and executes
; a UserShutDown call. The command should be of the form
; 'SHUTDOWN id# quit_flag.'
;
; 2) The TOOL command now also prints the actual address
; of the tool routine.
;
; 3) Pressing 'S' while in set mode now toggles the stack
; subdisplay between showing stack addresses and stack
; offsets.
;
; 4) Pressing 'D' while in set mode now toggles the dump
; alignment on and off. If dump alignment is on, then
; memory dumps will be aligned to 16-byte boundaries.
;
; Aug. 12, 1988 1) Fixed bug that caused extra bytes to be left on the
; stack when returning from a real time JSR.
;
; 2) Fixed bug that caused major problems when entering real
; time JSR's and JSL's in emulation mode.
;
; 3) The debugger now recognizes GS/OS calls (JSL $E100A8)
; and formats them in disassemblies.
;
; Aug. 18, 1988 1) Added the ability to load and use templates. A file of
; templates can be loaded in with the command:
; 'LOADTEMP TemplateFile'. An error $FFFF while loading
; a template file means that the file is not in the correct
; format. A template can be used with
; the command '_TemplateName address' where address is
; the address of your data. A template file consists
; of one or more templates. Each template should start
; with a line of the form '_START TemplateName' and end
; with a line '_END'. Anything not between a start and
; end will be ignored. Each line in the template should
; be of the form 'Label type count'. The fields should be
; seperated by on or more tabs or spaces. The count field
; can be omited signifying just one value. Types may
; be either 'byte', 'word', 'long', 'ascii', 'cstring',
; or 'pstring' and may be abreviated to their first letter.
; All templates can be unloaded by the command 'KILLTEMP'.
;
; Feb. 2, 1989 1) The user ID used for the stack and direct page segment
; was being read of real zero page. This random value sometimes
; worked and sometimes did not.
;
; Feb. 16, 1989 1) Debugger now loads in a default configuration file on
; startup. This file should be called 'DEBUG.SETUP'. It
; should be located in the same folder as the debugger for
; the init version, and should be located in the
; SYSTEM/SYSTEM.SETUP folder of the bootup disk for the init
; and ROM versions.
;
; 2) If breakpoints are in when the BP command is entered, they
; will automatically be taken out before the user edits the
; breakpoints. When the user is done editing the breakpoints,
; they will automatically be put back in.
;
; Feb. 22, 1989 1) Now check to see if the printer slot is selected before
; allowing the screen to be printed. Also make sure that slot
; three is selected before allowing the MON command. These
; changes will supposedly prevent bugs in system 5.0.
;
; Feb. 22, 1989 1) Fixed file so that tabs are set to 20. It used to be
; that everything was indented with spaces and some tabs.
; This made it a real pain to edit the code.
;
; Feb. 23, 1989 1) Added a scroll down (SCROLLDN) and a scroll dissasembly
; subdisplay down routines. These are to be used with viewing
; history.
;
; Feb. 24, 1989 1) Found and fixed three SEP #30's and two REP #30's.
; These should have been SEP #$30 and REP #$30. This fixed
; the ten-speed bug and who knows what else.
;
; Mar. 3, 1989 1) Changed quit command to QR (for quit resume) and put
; back the old quit command as Q (or QUIT). The Q command
; restores the state of the machine to what it was on entry.
;
; 2) Default config file now called GSBUG.SETUP not
; DEBUG.SETUP.
;
; 3) We no longer try to load a default config file in the
; ROM version.
;
; 4) No longer define ThisIsRAM in this file. It must be
; defined on the command line.
;
; Mar. 10, 1989 1) Fixed bug that caused stack to be messed up when
; tracing in emulation mode. Now all of the save and
; restore register routines are macros. Before they
; were copies of the same code.
;
; 2) Debugger stack is now allocated as not locked
; and is then locked afterwards. This causes it to be
; allocated near the top of bank 0, and not at $2000.
; This fixes the bug that caused crashes when trying to
; view page 2.
;
; 3) Quit command no longer works from init or rom versions.
; the RESUME command (R or RESUME) does what QR was doing.
; UNLOAD unloads the debugger and then does a resume. There
; is no command that does what quit did.
;
; 4) Added two new commands: SE (Save Environment) and
; RE (Restore Environment). SE saves a snapshot of the
; current state of the registers. RE will restore this
; saved state. If the RE command is used when no state
; has been saved with the SE command, then the state of
; the registers on entry will be restored.
;
; Mar. 16, 1989 1) Fixed bug that caused set command to no longer work.
;
; Mar. 17, 1989 1) Added saved trace history. You can set trace save ranges
; in the MP subdisplay. The H command sets a window. If
; any windows are set, then only instructions inside of
; the window are saved in the trace. Open a trace history
; file with the command 'OPENHIST filename'. All instructions
; in the trace history range will be saved to the file allong
; with the current state of the registers. Close the history
; trace file with the command 'CLOSEHIST'. View a history
; trace with the command 'VIEWHIST filename'. When viewing
; history, the current instruction is highlighted and the
; registers reflect the state of the registers just before that
; instruction was executed. Use the up and down arrows to move
; up and down one step. Use the arrows with OA to move a
; page at a time. Use the left and right arrows to move to
; the start or end. Type a step number to move to that step.
; Press esc to finish viewing the history.
;
; 2) Added breaks on toolcalls and toolcall errors in trace mode.
; To set a break on a toolcall use the command 'SetTBrk #toolnum'
; or 'SetTBrk _toolname'. To clear a break on a toolcall, use
; the command 'ClrTBrk' followed by the name or number. To clear
; all breaks on a toolcall, use 'ClrAllTBrk'. If a break is set,
; execution will halt on the toolcall, before it is executed. The
; commands to set and clear breaks on tool errors are 'SetEBrk',
; 'ClrEBrk', and ClrAllEBrk'. These will cause the trace to halt
; if the given toolcall returns an error. The debugger will halt
; on the next instruction without executing it. If either byte of
; the tool call number equals zero, then that byte will match any
; high byte. For example, setting a break on $0004 will cause a
; break on any Quick Draw call, while $0000 will cause a break on
; any call. Up to twenty of each kind of break can be set. The
; set breaks will be saved with your configuration. To view the
; currently set breaks, use the command 'ShowBrks'.
;
; 1) Fixed expresions, hex #'s weren't right.
;
; 2) Fixed check for $C017 before entry into mon.
;
; March 20, 1989 1) Can now break on tool calls and tool call errors while
; in real time. This can be done by using the commands
; TBRKIN and EBRKIN to set real time tool breaks and real time
; tool error breaks respectively. To disable real time
; breaks, use the commands TBRKOUT and EBRKOUT.
;
; 2) Fixed problem that caused the PC to incorectly reflect
; the current instruction when halting from a trace while the
; display is off.
;