home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / programming / debug-utils / mykesbug / mykesbug.doc < prev    next >
Encoding:
Text File  |  1992-10-19  |  26.8 KB  |  658 lines

  1. MykesBug Debugger Version 1.10
  2. ©1986,1987,1988,1989,1990,1991 Mike Schwartz, all rights reserved.
  3. ©1992 Joshua Dinerstein, all rights reserved.
  4.  
  5.  
  6. *******************************************************************************
  7. *                                                                             *
  8. *   This program is freeware. You can freely distribute it as long as you     *
  9. *   don't charge more than nominal fee (max $3 US) for copying it and no      *
  10. *   additions/deletions/modifications are made to the original archive. You   *
  11. *   may include it in PD Libraries such as the Fred Fish Collection. This     *
  12. *   program is distributed without warranty of any kind. So the authors take  *
  13. *   no responsibility whatsoever for this program, its documentation,         *
  14. *   functionality or damages it may cause. The risk is entirely yours.        *
  15. *                                                                             *
  16. *   This having been said the program has been well tested and should not     *
  17. *   cause any problems.                                                       *
  18. *                                                                             *
  19. *******************************************************************************
  20.  
  21.  
  22. 1.  INTRODUCTION
  23. ~~~~~~~~~~~~~~~~
  24.  
  25.     This is the first truely public release of a new debugger for the
  26. Amiga family of computers. The current version represents several weeks of
  27. work. However it still lacks some of the ultimate polish it will have as
  28. well as several features that will be implemented soon.  However, what is
  29. implemented is completely stable - I've run the SAS 'C' compiler, LMK, and
  30. various other programs through the debugger with no problems.
  31.  
  32.     Mykesbug was originally written by Mike Schwartz and ran only on an
  33. Amiga with a 68030 and AmigaDos 2.0. I, however, really wanted to use it on
  34. an Amiga 500 under 1.3. And Mike allowed me to make the changes that I needed
  35. too to get it to run on the A500. So for the time being I have taken over
  36. the developement of Mykesbug for the Amiga computer.
  37.  
  38.     If you have any comments or bug reports then please send them to:
  39.     
  40.     Joshua Dinerstein
  41.         SLMT9@cc.usu.edu
  42.         
  43.         or to Forge on IRC
  44.  
  45.  
  46. 2.  WHAT IS MYKESBUG
  47. ~~~~~~~~~~~~~~~~~~~~
  48.  
  49.     Mykesbug is a debugger for the Amiga family of computer. The debugger
  50. is designed to be as system independant as possible. This means that it is
  51. possible to do debugging after a program has guru'ed. Infact it is sometimes
  52. possible to correct what went wrong and have the system continue as if it had
  53. never crashed.
  54.  
  55.     Because of this system independance it is also possible to debug
  56. code that "takes over the system", such as demos and commercial style games.
  57. This is one of the best features in the debugger, at least in my opinion.
  58.  
  59.  
  60. 3.  WHAT'S NEW
  61. ~~~~~~~~~~~~~~
  62.  
  63.     For this first major release I have added several new features to
  64. the debugger as well as made several major changes. What I have basically
  65. done is to make the debugger run under both the 1.3 and the 2.0 version of
  66. the operating system. There is now also a 68000 compatible version of the
  67. MykesBug program. All of the features that are available under 2.0 are also
  68. available under the 1.3 version of the debugging system. There are however
  69. some slight differences in the way certain functions operate. These
  70. differences are caused by the differences in the two OS version. The
  71. differences will be covered in detail later in this text under the heading
  72. OS DIFFERENCES.
  73.  
  74.     For the 68000 version the display was redisigned to use a 640x200
  75. resolution screen. This change removed the terrible interlace flicker and
  76. sped up the display rate for this slower machine, but it also cut down the
  77. amount of information that was available on the screen at any one time.
  78. Even with this smaller display size all that has been removed from the
  79. display are several registers that do not exist on the 68000. One of the
  80. benefits of this smaller screen is that it has freed up a large chunk of
  81. Chip Ram for use by other programs.
  82.  
  83.     Baring the re-arrangement of the display layout, the 68000 version
  84. has remained almost identical to the 68030 version. Those of you who own 
  85. several amigas and have both types of processors should be able to switch
  86. back and forth between versions with no trouble at all.
  87.  
  88.     For a more complete list of the new features look at the revisions
  89. history under version 1.10.
  90.  
  91.  
  92. 4.  CONTENTS
  93. ~~~~~~~~~~~~
  94.  
  95. This archive should contain the following files:
  96.  
  97. Mykesbug.doc    - this file
  98. mykesbug     - the resident portion of the debugger
  99. debug        - the debug-time portion of the debugger (CLI usage)
  100. test        - a very simple demo program that I test debug with
  101. test.s        - source to test program above
  102. hello        - a 'C' test program to test CLI compatibility and 'C'
  103. hello.c        - source to hello program
  104. umain.c        - source to _main from SAS (required for source level
  105.           debugging of hello)
  106. suspend.info    - icon for suspend mode AppIcon (Under 2.0)
  107.  
  108. 5.  INSTRUCTIONS
  109. ~~~~~~~~~~~~~~~~
  110.  
  111. * WARNING:  Be sure to turn Enforcer OFF, or MykesBug will fail.
  112.         The CPU command from CBM also seems to make MykesBug
  113.         fail when used with FASTROM option.
  114.  
  115.     MykesBug is the resident portion of the debugger.  It exists
  116. half in OS land and half in the supervisor state.  This program should
  117. be RUN with the RUN command (segment splitting or TSR functionality to
  118. be added in the next release).  Once MykesBug is running, it will have
  119. revectored all of the low level CPU exception vectors so it can catch
  120. any of these exceptions.  The only vector not currently handled is the
  121. privilidge violation, because of some specialized code that exists in
  122. the ROM version of the handler. This will be addressed in the next
  123. release.
  124.  
  125.     Mykesbug has to be run before any debugging or error trapping
  126. can be done. A good place to run MykesBug is from the Startup-Sequence.
  127.  
  128. MykesBug can be installed in your startup-sequence by adding the
  129. following line:
  130.     RUN <NIL: >NIL: MykesBug >nil: <nil:
  131.  
  132. There are two ways to initially activate the supervisor mode debugger.
  133. The first way is to run a program that gurus, the second is to use the
  134. Debug program.  The second method is the one that is usually prefered.
  135.  
  136.  
  137. To use the Debug program, use:
  138.  
  139.     {RUN} Debug program {parm...}
  140.  
  141.     Debug is a wedge between the CLI and MykesBug (workbench
  142. support will be added).  Debug does a LoadSeg() on the program and
  143. also parses the executable file for symbol and debug hunks.  Currently,
  144. only level 1 debugging hunks are processed and others ignored.
  145. The symbolic and source level debugging information and other
  146. information is stored in a debugging CONTEXT structure for use
  147. by MykesBug.  This CONTEXT structure is registered with MykesBug -
  148. Note that as many CONTEXTs can be handled by MykesBug as you have
  149. RAM for (this allows multiple concurrent debugging sessions).
  150. Debug updates various parts of the CLI structure, sets a breakpoint
  151. at the first instruction in the debugged program (so MykesBug gains
  152. control right away) and then does a JSR to the loaded program.  When
  153. the program returns, Debug prints the exit code and passes this
  154. on via its exit() parameter.
  155.  
  156. NOTE:  The resident MykesBug can be told to exit by running MykesBug a
  157. second time.  I use this feature to remove an old version and install
  158. a new one.  For example, Run MykesBug (installs mykesbug), Run MykesBug
  159. (Kills first MykesBug), Run MykesBug (installs mykesbug again).
  160.  
  161.  
  162. 5.1 MYKESBUG:
  163. =============
  164.  
  165.     MykesBug operates in Supervisor mode of the 68030 and 68000. It
  166. is specifically designed to use ZERO OS functions or resources (i.e. 
  167. blitter, etc.) and is designed not to interfere with the OS.  The 
  168. reasoning for this is that there is no excuse for a debugger to crash
  169. because the OS has been trashed.  MykesBug is careful to preserve the
  170. state of the OS and hardware, to drive the hardware directly (as 
  171. minimally as needed) while in operation, and to restore the OS and
  172. hardware states to allow return to the OS.
  173.  
  174.     68000 support has now been added to Mykesbug. There are now 2
  175. different version of the program Mykesbug in the archive. Mykesbug is
  176. still the 68030 version, and Mykesbug000 is the 68000 version. These 2
  177. versions are functionaly equivalent as far as the differences between
  178. the two processors allow. The main difference is that some registers do
  179. not exist in the 68000 and therefore can't be accessed in the 68000
  180. version. The 68030 version definately DOES NOT work on a machine with
  181. only a 68000 installed. The 68000 version, however,  works on all Amiga
  182. machines.
  183.  
  184.     MykesBug currently uses the VBL interrupt for mouse counter
  185. reading, keyboard I/O polling (system friendly), and timing.  This is
  186. the only interrupt that will be enabled while the supervisor mode
  187. debugger is running.
  188.     
  189.     The 68030 version of MykesBug uses its own copper list, and
  190. uses two 640x400 planes (for color support), and renders its own font
  191. with the CPU to the bitplanes (to avoid use of the OS Text() routines).
  192.  
  193.     The 68000 version now uses two 640x200 planes. This avoids
  194. problems with both interlace flicker and using to much chip ram on the
  195. smaller systems.
  196.  
  197.     The MykesBug display screen consists of 5 specific areas.  
  198.     
  199.     1- At the top of the screen, the current task name and status
  200.        is displayed.
  201.     2- The left side of the display contains Amiga Hardware
  202.        register display (currently only INTENA and DMACON).
  203.     3- Below this, on the left side, is the CPU register display
  204.        (currently FFP and MMU registers are not displayed).
  205.     4- A large window to the right of the register display is used
  206.        to display diassembly, hex dumps, source code, help, etc.
  207.        (this is a general purpose display window).
  208.     5- The bottom two windows are used for command line input and
  209.        for debugger messages.
  210.  
  211.  
  212.        The 68030 Layout                 The 68000 Layout
  213.     +--------------------+           +--------------------+
  214.     |          1         |           |          1         |
  215.     +---+----------------+           +---+----------------+
  216.     | 2 |                |           | 2 |                |
  217.     +---+                |           +---+                |
  218.     |   |      4         |           |   |      4         |
  219.     | 3 |                |           | 3 |                |
  220.     |   |                |           |   |                |
  221.     +---+----------------+           |   +----------------+
  222.     +----------5---------+           |   +------5---------+
  223.     +--------------------+           +---+----------------+
  224.     
  225. NOTE:    The smaller screen size for the 68000 version forced the size
  226. of the main window (area 5) to be shrunk to about half of the size of
  227. the one in the 68030 version. Also the command and message lines were
  228. shrunk and offset to the right to allow enough room for the CPU
  229. registers display.
  230.  
  231.  
  232. 5.2 COMMAND LINE:
  233. =================
  234.  
  235.     The command line entry system for MykesBug is still very
  236. preliminary and needs a bit of work.  However, it is quite usable in its
  237. current form.  The concept behind the command line is that you should be
  238. allowed to enter a command and then hit return to execute it.  The
  239. previous command line is retained and displayed.  If you start to type a
  240. new command, the previous line is erased and new command line input is
  241. begun.  Otherwise, you are able to hit return again to execute the last
  242. command again.
  243.     You are also allowed to edit the previous command line by using
  244. the backspace and left/right cursor keys.  Also mouse support still needs
  245. to be added, but the mouse is there and works and there is even a mouse
  246. blanker so the pointer doesn't get in the (visual) way.
  247.  
  248.     There are several keys that are accepted during command line
  249. input that perform different features.
  250.   
  251.     1- The TAB key can be hit and this causes the SYSTEM copper
  252.        list (obtained from GfxBase) to be displayed by the copper
  253.        until a key is hit.
  254.     2- The ^X key which clears the command line.
  255.     3- The HELP key displays on-line help in the Main window.
  256.     4- The ^C key terminates a debugging session.
  257.     5- The ^Z key suspends the current debugging session.
  258.     5- The Up and Down keys on the keypad scroll the the general
  259.        purpose window (disassembly/source...) up/down.
  260.  
  261.     The cursor up/down keys will be used to implement command line
  262. history.
  263.  
  264.     Function keys are now supported, minimally.  The current bindings
  265. are displayed by the he (help) command.  There is now a startup script
  266. and hopefully these commands will be able to be set from this script.
  267.  
  268.  
  269. 5.3 IMPLEMENTED COMMANDS:
  270. =========================
  271.  
  272. The following commands have been implemented. The are pretty much self
  273. explanatory. Those commands that needed more explanation are covered
  274. again in the next section.
  275.  
  276.  
  277. ?                    Display Task Info
  278. ExecBase             Display ExecBase
  279. MemList              Display Mem List
  280. ResourceList         Display Resource List
  281. DeviceList           Display Device List
  282. IntrList             Display Intr List
  283. LibList              Display Lib List
  284. PortList             Display Port List
  285. TaskList             Display Task List
  286.  
  287. symbols              display all of the defined symbols
  288. as name addr         Add Symbol name at addr
  289.  
  290. bs addr              set sticky breakpoint at addr
  291. br addr|ALL          clear breakpoint at addr or clear all
  292. bd                   display breakpoint table
  293. dc addr              display copper list {at addr}
  294.  
  295. he                   this list (HELP KEY)
  296. db {addr}            display bytes at addr
  297. go {addr}            go {to addr}
  298. lm {addr}            list (disassemble) memory {at addr}
  299. so {addr}            display source {at addr}
  300. b? addr              display byte at addr
  301. w? addr              display word at addr
  302. l? addr              display longword at addr
  303. bc addr              run until byte changes
  304. wc addr              run until word changes
  305. lc addr              run until long changes
  306. mb addr val {val...} modify bytes at addr to val {val...}
  307. mw addr val {val...} modify words at addr to val {val...}
  308. ml addr val {val...} modify longs at addr to val {val...}
  309. REBOOT               reboot the machine
  310. ss                   single step
  311. st                   step over
  312. ex {addr}            exit debugging context {at addr} (^C)
  313. su                   suspend debugging session/context (^Z)
  314. mr reg val           modify a register to a value
  315.  
  316.     All commands must be lower case (the first two letters).
  317. Symbols may be mixed case but ARE case sensitive. Use the symbols
  318. command to get the correct case if you are uncertain.
  319.  
  320.  
  321. 5.4 COMMAND DISCUSSION:
  322. =======================
  323.  
  324.     Scrolling has been added to all of the lists that the debugger
  325. displays (ie. ExecBase, MemList, etc...). Also the use of the Pg_Up and
  326. Pg_Down keys has been added to the scrolling. This jumps the display 1
  327. page at a time. The source display cannot be paged at this time, both the
  328. regular arrow keys and the Pg_Up/Dn keys just step the display by one in
  329. the correct direction.
  330.  
  331.     The ex command works in 2 seperate ways. The first way is if just
  332. the command "ex" is enter. This causes the debugger to look for a routine
  333. named "abort", "Abort", or "XCEXIT".  The second way it to call
  334. "ex <label>". This causes the debugger to look only for the specified
  335. routine and exit using that routine. The ex command works by changing PC
  336. to point at the proper routine and then a GO command is executed.
  337.  
  338.     Under 2.0 the su command causes an AppIcon to be added to the
  339. workbench screen for the current context and the system is restored.
  340. The AppIcon's name will be the name of the task being debugged.
  341. To reactivate the debugging context, double click on the AppIcon.
  342.  
  343.     Under 1.3 the su command causes a small titlebar style window
  344. to be opened on the workbench screen. The screens title will be the
  345. name of the task being debugged. To reactivate the debugging context,
  346. click on the close gadget for the window. Multiple suspend windows will
  347. all appear on top of each other. The windows are draggable though, so
  348. just pull them out of the way to get to the one that you want.
  349.  
  350.     The st command is implemented by setting a breakpoint after the
  351. current instruction.  It allows you to step over jsr,bsr, etc.  It also
  352. allows you to step over a DBRA (handy!).  If you st over an rts command
  353. then it set the breakpoint right at the address that it should return
  354. too.  It is also now, marginally, smart enough to detect source display
  355. mode and to set the breakpoint at the next source line (This is still
  356. not quite perfect).
  357.  
  358.     The b?, w?, and l? commands are similar to their equivialents in
  359. the JForth environment.  These cause a single value to be displayed in
  360. the prompt area.
  361.  
  362.  
  363. 5.5 ADDRESS EXPRESSIONS:
  364. ========================
  365.  
  366. Whenever command line input requires an address or other number, 
  367. certain expressions are allowed.  Any hex number may be typed in
  368. with no special qualifiers (hex is the default).  If a decimal number
  369. is desired, precede it with a period (.).  In addition, the following
  370. strings are recognized:
  371.  
  372. (pc)    where program counter points
  373. (ip)    where program counter points
  374. *    where program counter points
  375. (sp)    where stack pointer points (NOTE: this is system stack pointer)
  376. (usp)    where user stack pointer points (NOTE: this is the application's SP)
  377. (d0)    where d0 points
  378. (d1)    where d1 points
  379. (d2)    where d2 points
  380. (d3)    where d3 points
  381. (d4)    where d4 points
  382. (d5)    where d5 points
  383. (d6)    where d6 points
  384. (d7)    where d7 points
  385. (a0)    where a0 points
  386. (a1)    where a1 points
  387. (a2)    where a2 points
  388. (a3)    where a3 points
  389. (a4)    where a4 points
  390. (a5)    where a5 points
  391. (a6)    where a6 points
  392. (a7)    where a7 points
  393.  
  394. No arithmetic expressions or otherwise more complex expressions are
  395. supported (yet).  This means that 1+1 is illegal, as is 24(a6).
  396. Note:  lower case is required for the above expressions.
  397.  
  398.  
  399. 5.6 MYKESBUG-STARTUP:
  400. =====================
  401.  
  402.     This file contains some startup information for the debugger. The
  403. format for these commands is a command on one line and then the options
  404. if any on the next line. At the moment there are only 2 commands that are
  405. supported. These are:
  406.  
  407.     1- PALETTE: This just sets the palette. Is this command is left
  408.        out the debugger just uses the default system colors.
  409.     2- SUSPEND: This sets the path and name for the Icon. This is the
  410.        Icon that is used in the suspend option under 2.0.
  411.  
  412.     For a better example of how these work simply look at the
  413. supplied MykesBug-Startup file.
  414.  
  415.  
  416. 6.  OS DIFFERENCES
  417. ~~~~~~~~~~~~~~~~~~
  418.  
  419.     The main difference is that AppIcons exist only under 2.0 and so
  420. cannot be used under 1.3. To solve this problem a simple window was added.
  421. The window has the same effect as the AppIcon it allows the debugging
  422. session to be suspended and the restarted when the window is closed.
  423. There may be multiple windows at once, one for each suspended sesion.
  424. The problem is that each window appears in the same spot. The windows are
  425. draggable and can be moved out of the way to get to the window that you
  426. want. Under 2.0 the AppIcons work like normal icons, in that they start
  427. in the upper left corner of the Worbench screen and appear under the
  428. previous icon.
  429.  
  430.     Both version of MykesBug, MykesBug and MykesBug000, have the 2.0
  431. and the 1.3 code in them. They autodetect what version is being used and
  432. will use 2.0 if it is available.
  433.  
  434.     The Debug program works the same way. The one program will work
  435. under both versions of MykesBug as well as both versions of the OS.
  436.  
  437.  
  438. 7.  INSTALATION
  439. ~~~~~~~~~~~~~~~
  440.  
  441.     To install MykesBug I recomend that you make a new directory and
  442. place the version of MykesBug that you want to use in it. Also copy in
  443. the Debug program and the Suspend.info file. Then add this to the path
  444. command in the Shell-Startup. This will insure that you can always get to
  445. the debugger commands.
  446.  
  447.     Starting with this version there is also a startup script called
  448. MykesBug-Startup. When MykesBug is run is looks both in S: and in the
  449. current directory for this file. I recommend that you just copy the
  450. supplied MykesBug-Startup file into S until you are more familiar with
  451. what is in it and what it does.
  452.  
  453.  
  454. 8.  THANKS
  455. ~~~~~~~~~~
  456.  
  457.     Special thanks go out to all of the beta testers that have helped
  458. me to get this to the bug-free (Hopefully :) state that this program is
  459. now in. I would list you all here but unfortunately I mostly know nicknames
  460. from IRC so I will hold off for now.
  461.  
  462.     A million thanks go Mike Schwartz for writing this debugger in the
  463. first place and then for letting me have the source so that I could make
  464. the changes that I wanted too. And another million thanks for all the
  465. help that he gave me in getting ready to go.
  466.  
  467.  
  468. 9.  BUGS/PROBLEMS
  469. ~~~~~~~~~~~~~~~~~
  470.  
  471. * The source mode display has problems because of the way level 1 debug
  472.   hunks are generated by SAS.  Multiple source lines may have the same PC
  473.   value.  This display mode is going to be replaced with a MIXED mode of
  474.   source and disassembly.
  475.  
  476. * MykesBug copperlist and bitplanes are permanently allocated in CHIP
  477.   RAM.  This makes the debugger vulnerable to wild blits, wild stores,
  478.   etc.  This will be fixed by having the debugger swap what CHIP RAM it
  479.   needs with FAST RAM.
  480.  
  481. * MykesBug is currently 41 hunks.  It needs to become 1 contiguous hunk
  482.   so it can easily be protected with the MMU.
  483.  
  484. * Since MykesBug operates in SuperVisor mode, it does not have access to
  485.   OS routines.  This makes it not possible to do DOS, for example. For
  486.   this reason, the Debug program will read 100% of your source files (if
  487.   -D1 hunks are present) into RAM.  For HUGE projects, this can either
  488.   take a lot of time or may require a lot of RAM.
  489.  
  490. * The disassembler has a few bugs in it and only disassembles 68000
  491.   instructions.
  492.  
  493. * Keys don't autorepeat!
  494.  
  495. * Mouse does NOTHING ( YET! :)
  496.  
  497. * From time to time, the command line is trashed (displays garbage) when 
  498.   running debug (first command) or unsuspending a debug session.
  499.  
  500. * 'C' compiler complains about valid syntax for the code that does SetFunction()
  501.   and if the instructions aren't tweaked to just the right order, the compiler
  502.   quits with a CXERR #25 message.  BLINK is taking a long long time.  Wonderful, no?
  503.  
  504. * Workbench support for MykesBug and Debug is not fully implemented.  MykesBug should
  505.   create an AppIcon so you can drag programs onto it to debug them (mykesbug will
  506.   run Debug automatically).  Additionally, double clicking on this icon should activate
  507.   the resident MykesBug debugger.
  508.  
  509. * It is not clear if MykesBug works on an 040 processor.  
  510.  
  511. * The copper list used by MykesBug is not aware of future/enhanced chipset registers.
  512.   It is likely/possible that these registers may be set to an incompatible state
  513.   with the copper list.
  514.  
  515. * MykesBug does not support the FPU or MMU at all.  The FPU and MMU registers should
  516.   be preserved and restored as the rest of the registers are.  These registers should
  517.   also be displayed on the screen and should be alterable with the mr command.
  518.  
  519.  
  520. 10.  PLANNED ENHANCEMENTS
  521. ~~~~~~~~~~~~~~~~~~~~~~~~~
  522.  
  523. * PLANNED ENHANCEMENTS (Fer sher)
  524.  
  525.     1.    Simple Command Line History.
  526.     2.    Mouse Input (lots of good ideas here).
  527.         Mouse click on source/dism line will do a
  528.             go (to that line)
  529.         Mouse click on address part of line will
  530.             simply set a breakpoint at the line.
  531.         Mouse click on numbers will autotype them
  532.             on the command line.
  533.         Mouse click on registers...
  534.     3.    "Consistency" check
  535.         validate memory list
  536.         validate low memory addresses
  537.         check stack against bounds
  538.         checksum memory regions
  539.         etc.
  540.     4.    "poor man's history trace"
  541.         Use the trace bit and record history
  542.         of program execution.
  543.     5.    Command line switches for Debug program 
  544.         history size, etc.
  545.     6.    Library breakpoint
  546.         run until somebody calls AllocMem()
  547.     7.    Library trace
  548.         Record calls to library routines
  549.     8.    Command line history and editing improvements
  550.     9.    DOS library structure dumps
  551.     10.    Graphics library structure dumps
  552.     11.    Intuition library structure dumps
  553.     12.    Stack Trace
  554.     13.    Modifyable global symbol table
  555.         This will allow you to comment and label OS
  556.         routines :)
  557.     14.    Context display
  558.         Show symbols
  559.         Select different context/task to debug
  560.     15.    Signal command (sets signal bit of a task)
  561.     16.    CLI local environment variables to be used to
  562.         specify source code directories.  This will
  563.         prevent the need for running Debug from the
  564.         same directory as the sources.
  565.     17.    Full-blown 68010/68020/68030/68040/68851/68881/68882
  566.         disassembly support.
  567.     18.    Display info about MMU setup and usage.
  568.  
  569. * PLANNED ENHANCEMENTS (Blue Sky)
  570.  
  571.     1.    Fuller source level debugging support (i.e. >d1)
  572.         for SAS 6.0.
  573.     2.    Source level debugging support for Manx (and DICE?).
  574.     3.    Enforcer/Mungewall/MemMunge features (use MMU).
  575.     4.    Remote debugging via serial port
  576.  
  577.  
  578. 11.  CHANGE HISTORY
  579. ~~~~~~~~~~~~~~~~~~~
  580.  
  581. 1.10 Changes
  582.     1.    Created the 68000 version of Mykesbug.
  583.     2.    Optimized the screen display to make it faster
  584.         for both versions.
  585.     3.    Mykesbug now shows the correct name for the program
  586.         being debugged.
  587.     4.    Added the use of the Page UP and Page DN keys in Help
  588.         mode and in the system list display modes.
  589.     5.    All of the system lists now scroll. This makes them alot
  590.         more readable. (This was hard! :)
  591.     6.    Added the 'symbols' command. Displays, in a scrolling list,
  592.         the symbols in the loaded program.
  593.     7.    The screen now refreshes properly when Single Stepped past
  594.         the bottom of the dissassembly window.
  595.     8.    The suspend action now works correctly under both 1.3 and 2.0.
  596.     9.    Adde the file MykesBug-Startup. This allows the User to 
  597.         pre-set several options for the debugger.
  598.     10.    The Stepping now leaves the stack clear.
  599.  
  600. 1.04-1.09 Changes (These happened somewhere in here :)
  601.     1.    Addition of Mixed mode display
  602.     2.    Color support (there are 2 planes :)
  603.         Highlight changed registers
  604.         Highlight current PC in display window
  605.         Highlight breakpoints
  606.     3.    Display of the source file name on screen
  607.  
  608. 1.03 Changes
  609.     1.    *Color added to display.
  610.     2.    *Cursor Up/Down in source mode - use line #
  611.     3.    X Breakpoints use line # if in source mode
  612.     4.    *breakpoints in supervisor context
  613.     5.    *case insensitivity
  614.     6.    Uses GfxBase routines to contruct CopperList.
  615.         (temporarily removed)
  616.  
  617. 1.02 Changes
  618.  
  619.     1.    MykesBug now does SetFunction on Debug()
  620.         (assembly programmers can just use a TRAP instruction
  621.          anywhere they want in their code, as well)
  622.     2.    Added Info command, moved library base display
  623.         to info display.
  624.     3.    Added ExecBase command, dumps ExecBase structure.
  625.     4.    Added MemList, ResourceList, DeviceList, IntrList,
  626.         LibList, PortList, TaskList commands for displaying
  627.         Exec lists.
  628.     5.    InitDebugger and CleanDebugger now called via
  629.         Supervisor() and the VBR register is used to locate
  630.         the exception vectors!
  631.     6.    VBL handler no longer cycles pointer color
  632.  
  633. 1.01 Changes
  634.  
  635.     1.    32 sticky breakpoints implemented, using
  636.         bs,br, and bd commands.
  637.     2.    Single Step changed to restore system before
  638.         stepping.
  639.     3.    Source level single step improved to work
  640.         as good as CPR.
  641.     4.    Source level stepover function is same as
  642.         single step.
  643.     5.    Copper List disassembler implemented, using
  644.         dc command.  Initial dc address is GfxBase->LofList.
  645.     6.    Fixed bug in the mr command that prevented modification
  646.         of data and address registers ('C' syntax problem :)
  647.     7.    Debugger now revectors Alert() to catch OS errors as
  648.         well as CPU exceptions.
  649.     8.    suspend.info added to distribution
  650.     9.    MykesBug now checks for the existance of suspend.info
  651.         and prints instructions on how to create one if it is
  652.         missing.
  653.     10.    Bug fixed in suspend routine to handle case where suspend.info
  654.         doesn't exist (used to try to FreeDiskObject(NULL), which is
  655.         a NONO).
  656.     11.    Bugs fixed in the bc,wc,lc commands.  These now should work.
  657.  
  658.