Short:    SuperBASIC toolkit for disassembling files & memory
Uploader: msw@blackpool.ac.uk
Author:   frans (francis swift)
Version:  1.27


VERSION 1.27 ARCHIVE CONTENTS

 D68K_rext   - The toolkit.
 D68K_readme - This file.


FEATURES

* Disassembles files & memory
* SMALL and FAST
* Provides a user link for single-line disassembly
* FREEWARE


SUPERBASIC KEYWORDS

MDIS [#<chan>,]<pc>,[<org><length>]

This procedure disassembles <length> bytes of code at address
<pc>. The disassembly is printed to #<chan> or to #1 if no
channel is specified. Optionally relocated to address <org>.

FDIS [#<chan>,]<filename$>,[<pc>,[<org>[<length>]]

As above, but disassembles <length> bytes from the specified
<filename$>.

D68K <pc>,[<org><buffer>]

This function disassembles one m/c instruction at address <pc>.
The disassembly is stored as a C string (0 terminated) in an
ASCII buffer at address <buffer>. Optionally relocated to
address <org>. The function returns the number of bytes
disassembled. You must allocate a buffer of at least 256 bytes
before using this function.


ADVANCED USER INFORMATION

D68K makes use of an entry in the THING list that allows access
to D68K routines which disassemble a single-line of code.

Currently D68Ks' THING is 64 bytes long and contains the
following entries:

Offset   Value    meaning

$26      '1.27'   version number
$2A      4        name length
$2C      'd68k'   name
$30      'THG%'   thing variables follow
$34      2        freeform shared code
$38      ?        address of a 256 byte buffer (private)
$3C      ?        address of single-line disassembly routine


Finding D68Ks' THING entry

The following machine code could be used to find D68ks' THING
entry. It returns with the address of the thing in A4.

 Entry: none

 Exit:  A0 = corrupted
        A4 = address of D68ks' thing entry or zero
        D0 = corrupted
        D1 = corrupted
        D2 = corrupted

FIND_THG:
         moveq    #MT.INF,d0        ; find system variables
         trap     #1

         lea      $B8(a0),a4        ; start of THING list

NEXT_THG:
         move.l   (a4),d0
         move.l   d0,a4
         beq.s    EXIT              ; exit if not found

         cmp.w    #4,$2A(a4)        ; compare name length
         bne.s    NEXT_THG

         cmp.l    #'d68k',$2C(a4)   ; compare name
         bne.s    NEXT_THG

EXIT:
         rts


Single-line disassembly routine (THING offset $3C)

The routine pointed to by offset $3C in D68ks' THING entry
disassembles one m/c instruction at address <pc>. The
disassembly is stored as a C string (0 terminated) in an ASCII
buffer and is optionally relocated to address <org>. Returns
the number of bytes disassembled in d0.

 Entry: A0 = <pc>
        A1 = <org>
        A2 = 256 byte ASCII buffer

 Exit:  A0 = updated pc
        A1 = updated org
        A2 = updated buffer
        d0 = number of bytes disassembled


CONTACT

 post: FRANCIS SWIFT
       325 CHARLESTOWN ROAD
       BLACKLEY
       MANCHESTER M9 7BS
       UK
