mirror of
https://github.com/marketideas/qasm.git
synced 2026-10-25 13:02:45 +00:00
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.
1 line
30 KiB
Plaintext
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.
|
|
; |