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