home *** CD-ROM | disk | FTP | other *** search
- * ------------------------------------------------------------------------- *
-
- Disect - © DMA 1994-5 24.11.94
- ===================== ========
-
- V1.0: 13 Mar-Oct 94 At times, I thought I'd never get there...
- -------------------
-
- V1.1: 17.11.94-24.11.94 Well, from my rather affected memory:
- -----------------------
-
- 1) No longer crashes if disassembly window at hardware registers
- 2) No longer need to define hundreds of copper addresses one
- at a time (!)
- 3) DataStrings allow 'X' in base string
- 4) Will load executables containing LINE debug/HCLN hunks
-
- V1.2: 25.11.94-29.11.94 Got fed up playing Frontier, so...
- -----------------------
-
- 1) Gave screen a proper menu bar, and menus. ASL menus OK now.
- 2) Screen is now WB2+, ASL requester is (at last) blue!
- 3) Disect aware of 'gadtools.library' base address
- 4) Main window is now WFLG_BACKDROP, so now cannot lose ASL
- requester window behind it! I remember the day I
- discovered that one...
- 5) Key '+' swaps both disassembly windows
- 6) Symbol Window: LMB on a selected symbol, moves (upper)
- disassembly window to address of (program) symbol
- 7) Up & Down arrow gadgets in disassembly windows
-
- V1.3: 30.11.94-7.12.94
- ----------------------
-
- 1) A bug which made Process crash/caused system corruption
- on Process termination creeped into V1.1. Dead now...
- 2) INCBIN Request. Thanks to Mark M for that idea
- 3) Symbol Window: if press a letter key (with/without) SHIFT key,
- or '.' key, and if symbols are sorted alphabetically,
- now moves window to first symbol which begins with
- that character
- 4) Improved algorithms for ensuring disassembly windows align
- themselves to defined program addresses
- 5) Improved handling of global/local program symbol definition
- and reference
- 6) Added an 'about' message
- 7) When define global program symbol, opens request if causes
- local program symbols to be corrupted
- 8) RMB on a local in program symbol area moves disassembly window
- the local's global symbol
-
- V1.4: 7.12.94-11.12.94
- ----------------------
-
- 1) When disassemble to file, will concatenate successive DC.X
- statements to produce (much fewer) lines of source
- 2) RMB on instruction mnemonic moves PC to instruction
- 3) Can display addresses normally, or as hunk start offsets
- 4) Allows hunk offsets in expressions: "[0:64]"
- 5) Shift key WILL move memory window fast
- 6) Letters in hex now follow selected case
- 7) Up/down arrow gadgets in windows repeat if held down
- 8) Alarm sound when finds search data
-
- V1.5: 18.12.94
- --------------
-
- 1) RMB on displacement (eg: 'dd(Ax)') moves disass window to EA
- 2) WB requesters if cannot get resources
-
- V1.6: 9.1.95-01.02.95
- ---------------------
-
- 1) It sometimes missed arrow gadget messages, only responding
- to them when another IDCMP message occurred which
- created a signal bit to the message port. This
- happened if LMB > 4 times quickly on arrow gadgets
- 2) System DataStrings: now contain 'X' for address pointers, and
- is now aware of address pointers which point to other
- system structures
- 3) System DataStrings: automatic line commenting, and automatic
- program symbol name definition
- 4) Allows definition of user address same as previous defined
- 5) Allows a base offset address to be defined
- 6) LMB on SEA/DEA text to lock register zoom
- 7) Auto blank lines preference
- 8) SS 'Prev' gadget allows offsets from locals if same global
- 9) Dummy symbol selections can be used as line comment texts
- 10) Symbol Window now contains a scroller gadget
- 11) Disect aware of 'mathffp.library' base address
- 12) Added 'PROCP' reserved symbol name
- 13) Added Process Grabber, but only tested on A500+ so far
- 14) Request windows which take an address range: can enter '=',
- '+X', and ',X' into end address string gadgets
- 15) Was unable to read any DSCT data file if the file contained
- no user address structures
- 16) Could not detect characters between "9" and "A" as invalid in
- hex numbers input by user
- 17) Added LMB function in Display Breakpoints request window
- 18) RMB in memory dump will define base offset address
- 19) No longer scans executable files to determine project memory
- sizes, now uses seg list (the things you learn once
- you get the RKMs...)
- 20) Data areas defined using system DataStrings now get DF'd as
- macros
- 21) During DF, if a program symbol name length exceeds one tab
- size, then the remainder of the source line will be
- output using a new line
- 22) Increased executable file hunk limit
-
- V1.7: 2.2.95-20.3.95
- --------------------
-
- 1) When RMB on program address or displacement, right ALT will
- move memory window to the address
- 2) Memory dump now contains a +/- cycle gadget
- 3) When filling memory: eg, if filling LONGs, but address range
- was 31 bytes, Disect would actually write 32 bytes
- (ie: 8 complete LONGs); also changed FORBID/CLEAR
- CACHE/PERMIT method (once per byte, instead of once
- per address range, since very large fills may FORBID
- for too long); also did this for copy memory
- 4) Search memory also gives alarm sound when search ends (data
- not found); source/ASCII searches now match any
- number of spaces or tabs
- 5) During DF, if a program address was automatically replaced
- with a (program) symbol (creating an instruction
- address), the original address would still be logged
- as an missing undefined-reference address; by adding
- a single instruction, this was solved
- 6) Added Process Menu 'Breakpoint At Active Process PC' function,
- but I think the world may not like this too much...
- 7) A new, improved Symbol Selection window...
- 8) Cute little arrow gadgets in main window to move disassembly
- windows left and right
- 9) Disect refused to disassemble movec control registers (unless
- the upper 4 bits of the opcode extension word were 0)
- 10) Disect hung when I ungrabbed what I had previously considered
- to be a safe Process to do this to... it was a very
- well hidden bug (since I did not realise that by
- sending a Signal to a Wait()ing Process, a task-
- switch might/will occur)
- 11) Added Process memory allocations monitor, & unfreed memory
- list when Process terminates
- 12) History buffer no longer limited to only four entries (!)
- 13) ASL window size and coords now saved as Preferences
- 14) Can now extract symbols from .gs files
- 15) Binary files: allows load to a preferred address
- 16) Disect auto-replaces CUSTOM/CIA addresses with symbols
- 17) Another bug: if an address register contained a library base
- address, and was displayed in register window as,
- eg: 'BASEDOS', then the content of the address would
- not be displayed
- 18) Mark M pointed out to me that 'CUSTOM' is defined in
- 'intuition/preferences.i', but not as $DFF000,
- so had to rename the same symbol (held within
- Disect executable file) to 'CUSTOM_BASE'
- 19) Allows '.x' in expressions for FFP values
- 20) Fill & Copy Memory: no longer FORBID/CLEAR CACHE/PERMIT
- 21) LMB on address digits in disass window: if right ALT pressed
- moves memory window to address (instead of defining
- a breakpoint)
- 22) Had a bit of screen corruption (register/memory window) if
- defined a base offset which caused large offsets to
- be displayed (eg: '[-$12345678]', which would not
- fit into 10-chars available for it)
- 23) Now allows definition of key macros... it's simple, but
- highly effective, and I'll sleep with a grin on
- my face tonight! (I will get around to allowing
- macros to be loaded/saved... eventually)
- 24) Previously, could not replace references to seglists with
- program symbols (eg: 'move.l main-4,a0'), so Disect
- will now do this automatically
- 25) Grabbing a Process would crash if it's pr_WindowPtr was -1
- 26) Now replaces 'jsr dd(a6)' with relevant '_LVO' symbols for
- following libraries: Exec, DOS, Gfx, Int, ASL,
- GadTools, MathFFP
- 27) Can no longer define breakpoints outside project memory range
- 28) MultiBin files load and save, and program 'AllocMultiBin'
- 29) Request window gadgets now display '_' characters beneath
- letters equivalent to keyboard controls
- 30) Now allows definition of a Process's variables memory area
- (either within Process, or allocated memory), and
- can define user constant symbols as displacements
- within this memory (eg: dd(ax)), so that Disect can
- auto-replace any displacements with relevant constant
- symbol
- 31) Disect will now display content of addresses (eg: register
- window) as program symbols (no longer displays only
- an address as a program symbol)
- 32) Found a very obscure bug: if a 'JSR _LVOAllocMem' was ('E')
- executed (buffered), and if this memory was not freed
- then when Process terminated, unfreed memory was not
- listed as 'SELF' allocated
- 33) Now allows binary files to be inserted into loaded project
- 34) With much DSCT data (especially on a 500+!), things tended
- to get slow, so added something to speed things up
- (although it still seems too slow at times...)
- 35) Auto Trace mode!!
- 36) Hardware monitor (not finished?!)
-
- V1.8: 21.3.95 ... 10.7.95
- -------------------------
-
- 1) Hardware monitor now finished
- 2) Can now end a key-macro definition with a request window open
- 3) Key-macros now record menu messages
- 4) Can save INCBIN areas as IFF ILBMs
- 5) Added audio sample player
- 6) Can manually open trackdisk device (for when if have saved
- a pre-loaded boot block as a multibin file)
- 7) Disect will now auto-replace ARID references to chip & CIA
- registers when PC at, eg: ...,dmacon(a4)
- 8) Can now SET or EQU constant symbols manually
- 9) Disect now shows possible Process variables memory references
- using a 'V' marker, and LMB on this will auto-replace
- 10) Instant definition of BYTE/WORD/LONG Data addresses via LMB
- 11) Defining data addresses until 'Next Symbol' will now define
- data area size explicitly, instead of leaving it 'variable'
- 12) Can now save boot blocks
- 13) DF now warns of references to addresses in project mem but
- outside disassemble area(s)
- 14) DF areas now displayed as (blue?) background in disassembly
- window
- 15) DF address range lists can now be loaded and saved
- 16) Can now 'Run Copper List'
- 17) Will now remap executable file's Process [hunk:offset]
- to a corresponding [offset] into the executable
- file on disk (for when executable is loaded as a
- binary file...)
- 18) Will now search user addresses for use of any system/user
- symbol
- 19) MultiBin files now allow Process status to be saved. Is only
- useful for games (ie: does not use OS, probably kills
- it straight away) since is ?impossible? to save a
- Process which has eg: opened a screen & 4 windows
- and half a dozen third-party libraries, set up
- interrupt servers, ... etc AND restore EVERYTHING
- when you load it back up later
- 20) A MultiBin 'file' can consist of more than one file (eg:
- a 1.5 meg 'file' split across two disks)
- 21) Two more prefs: maximum MultiBin file size & '.b'/'.s' for
- branch instructions
- 22) Bug fixed: did not select copjmp1 or 2 when execute a write
- to either register
- 23) Hardware monitor now does (certain) blitter registers
- 24) Finally removed the (redundant) project request window
- 25) Can now also define data areas until next -1 byte/word/long
- 26) Finally fixed the annoying ASL for Mark M
- 27) Can load/save individual DataStrings
- 28) DF: user constant EQUs now grouped according to prefix text
- (ie: any text before a '_' character), and listed
- in increasing numeric order
- 29) And system constant EQUs are also
- 30) Found a bug during DF with spaces (not tabs), which caused
- corrupt source files when disassembling system
- structure macros
- 31) Bug: sometimes, when LMB on an #immediate number which was
- in project memory range, its value was ignored,
- resulting in only allowing a symbol selection
- for a value of zero (this only occurred when #imm
- was specifically immediate data in an instruction,
- eg: addi.l #x, as opposed to, say, add.l <EA>,
- where <EA> was immediate data
- 32) Added maximum DF source file size pref
- 33) Crashed when traced/executed, eg: move.l d0,$4.w, even with
- hardware monitor enabled; is ok now
- 34) Hardware monitor now tracks bus error vector instead of odd
- address vector, since Disect uses odd vec during HWM
- 35) Previously, did not auto-replace, eg: ...,0(a0), to become
- ...,ciapra(a0), because EA mode was ARI (not ARID),
- where '0' was auto done by Disect
- 36) Now replaces ARIDI references to hardware registers (used to
- be only ARID references)
- 37) Will now auto replace the bit number of a btst/bset/bclr/bchg
- when DEA is CIAA_PRA, CIAB_PRA, or CIAB_PRB (very
- useful when dissecting disk loaders...)
- 38) Added stuff to allow a Process to safely alter a7 (hardware
- menu item 'Stack Top'), and checks if attempt to
- execute or auto-trace a move to a7 when the address
- is not in project memory
- 39) SysSymbol data is now compressed; this saved about 40-50k of
- disk space
- 40) Bug fixed: if executed/traced instruction with (conditional)
- breakpoint at PC, did not suspend at next instruction,
- only did so when expression was TRUE (it was a loop,
- fortunately!)
- 41) Ditto: sometimes got an $80000003 when LMB on the operand of
- a DC.X which had been defined using a system Data-
- String
- 42) Previously, GrabProcess would check the instruction before
- the rts address from Exec.Wait()/WaitPort(), to
- ensure it was a jsr _LVO(a6) - this is not always
- the case, and resulted in not being able to grab
- certain Processes, so I removed this check
- 43) DC.L operands: if have matching program symbol, now displays
- 'P' marker, and can LMB on this for auto-replace
- 44) Auto-LVOs now also done for jmp dd(a6) as well as jsr dd(a6)
- 45) Added Task & Process system DataStrings (I wanted them to
- dissect ExecBase TaskWait list, to see why I couldn't
- grab SimCity! see #42 above!)
- 46) Further to #38, I forgot to allow a7 to be changed by an
- instruction so that the new address is not in project
- memory, but is in stack memory (!). Then, spent two
- days allowing for every instruction which would alter
- a7. By method, this worked by checking if the DEA is
- a7, but, finally, discovered: exg a7,a0 (a7 is SEA!).
- What fun this all was (?)
- 47) In memory window (small one in main screen), if any memory
- address is within the Process's Process structure,
- Disect now displays, eg: TC_SPLOWER, or pr_SegList
- instead of the address (is preference-able: 'Symbolic
- Address Display')
- 48) Previously, if I defined a data area using, for example, an
- LH DataString, but then realised it was an LN, it
- would not (always) replace the line comments, and it
- would never replace the program symbol at data area
- start (which messed up the macros during DF!)
- 49) During auto-trace, a JMP to a ROM (or external) function
- would be traced even if you didn`t want it to be,
- since Disect was only looking for JSR (or BSR!)
- to ROM/etc
- 50) Another One! With a grabbed Process, auto-trace mode did
- not detect a write to stack memory as being a
- permitted DEA
- 51) Disect now checks to ensure that TRACE and ILLEGAL vectors
- are intact before executing anything/anyhow
- 52) Can now (at last!) display Process's allocated memory
- (if a memory monitor has been installed)
- 53) Current project name now displayed in screen title
- 54) Disect now allows 'address constant' symbols; defined via
- CTRL key & LMB on 'd0', etc, in register window
-
- * ------------------------------------------------------------------------- *