Home > Previous Page >  Adiss v1.1: Jupiter Ace disassembler
Archive Search  

Jupiter Ace disassembler

Full title Adiss v1.2: Jupiter Ace disassembler
Year of release 2017 [updated July 2020]
Publisher Alan Bleasby
Producer / Author(s) Alan Bleasby
Memory 51k
Type Utility
Cost : PD
Download Adiss v1.2: disassembler [CRC32 766C9589] Distribution Permission Allowed | Group 1

Instructions

 Adiss v1.2: Jupiter Ace disassembler
Copyright (c) 2017 Alan Bleasby

1. Memory Usage

Adiss occupies memory from hexadecimal addresses cc00 to d772.  If
your RAMTOP is at dc00 (as it is for my own ACE) then this allows
approximately 40 (decimal) addresses on the return stack before Adiss
would get corrupted. That is only likely to happen if you run heavily
recursive code after Adiss is loaded.

2. Usage

Adiss is invoved using the syntax:

    Address cc00(52224 decimal) call

where address specifies where Adiss should disassemble from.


3. Options

Adiss will disassemble until the screen is full, at which point
scrolling will stop and the main options are shown at the
bottom of the screen. All displayed numbers are in hexadecimal.

At the scrolling prompt:

   c - Continues disassembly until another screen is full.
   a - Allows you to specify a new disassembly address. This
       is done using the ROM code for QUERY LINE so it is
       possible for you to abuse this input method. The
       new address must be given in hexadecimal.
   x - Exits back to Forth

Two more options are possible at the scrolling prompt:

   q - Same action as 'X' i.e. returns control to Forth
   h - This is a toggle. By default Adiss will display
       the hexadecimal bytes disassembled immediately after
       the address at which they occur. Pressing 'h' will
       make subsequent screens display the ASCII representation
       of those bytes instead. Using 'h' again will set the
       display back to showing the default hexadecimal.


4. Disclaimer

THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  

Example Use

Make some space for your machine code or protection to stop Forth stack corrupting the free RAM.
This is done by lowering the system variable 'RAM #3C18' the first address past the last address in RAM for forth.

32000 15384 ! QUIT

This loads #3C18 (15384) with address 32000, So every address above 32000 will not but used by Foth or the systen stacks. You can load diss to its normal address with 0 0 bload diss.

You can also load any other code to address 32001 up to 52220, and call diss with 52224 call, but make sure put the starting address of the diss assemblycode onto the FORTH stack before you call diss.

The screen shot below is diss looking at itself, 52225 15384 ! quit

0 0 bload diss

52224 52224 call

screenshot