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