Description

DevastAce

History:

Milimon, Mikromon, Pikomon, VAST (all done by T.R.C.)
DEVAST, Devast Ace, DevastAce II (done by Universum)

DEVAST = Dream extension of Viewer of Assembly language and Screen located Tracing utility

ACE in word DevastAce means, that two bugs in original DEVAST were repaired (OK, you're right. Devastace means devastation in czech...)!

Difference between DEVAST from Universum and older VAST from TRC:

code was rewritten, 14 new functions were added!

There is only one known "bug" in DevastAce: because it was saled by Proxima, it can't crack soft from Proxima (it tests some two-byte number at some address), you can remove this bug easily.

DevastAce II is a special version for disk drive D40/80 (MDOS), can trace programs in DOS ROM, has faster tracing, but cannot be located in screen.

Versions:

DevastAce exists in two versions:

  • screen located (4600 long)
  • memory located (6700 long, after relocating about 5700 long)

Memory located version can't be located in screen, you can load it to any address and relocate it to other address (example: You wish to place DevastAce at the end of memory. Load it to 59800, run it (USR 59800). You will see Starting address: and some number. Change it to 60800, press enter).

Restart:

Warm start:

16384 (memory version from START). Registers in monitor are without change.

Cold start:

16387 (memory version from START+3). Actual state of Z80 registers is set in monitor.

Screen:

You'll see somethink like this:

ADDRESS    INSTRUCTION CODE    INSTRUCTION MNEMONIC
REGISTERS AND THEIR VALUES               SHORT DUMP
INTERRUPT AND FLAGS                       EDIT ZONE

Main functions:

M - Address change. Memory: appears, enter new value.
CS+6 - one byte back.
CS+7 - one instruction forward.
ENTER - one byte forward, if edit zone is not empty, writes it to memory as one byte number.
SPACE - two bytes forward, if edit zone is not empty, writes it to memory as two bytes number.
SS+3 - switches DEC and HEX.
CS+1 - switches upcased and lowcased characters for disassembly.
CS+2 - switches normal and bold font.
CS+3 - in memory version only: switches screen third for display.
CS+0 - in memory version only: clears screen.
SS+A - calculator. Enter two numbers (First:, Last:). Calculator writes in both DEC and HEX, signed, unsigned, F+L, F-L, and other useful...
SS+Q - return.

Dumps and depth:

CS+8 - change depth - level down. Asks Memory: for new address.

Sometimes you need to examine some subroutine, but not lost actual address. So you can go deeper, "down" to lower program level, and then return to "surface". DevastAce allows to you 8 levels to go to depth.

CS+9 - change depth - level down. New address takes from actual instruction (for example CALL).
CS+5 - change depth - level up.
SS+C - display addresses stored by depth change.
U - display first 5 values stored at SP.
SS+4 - disassembly from actual address.

Disassembly control keys are:

CS+1 or SS+4 - return to main panel
5 - return to actual address
6 - next page
7 - one line back
N - find next (see there)
SS+3 - in memory version only: change HEX - DEC
any key - one line forward

V - disassembly. Asks First: for address.
O - text dump from actual address.
SS+O - text dump. Asks First: for address.
L - memory dump from actual address.
SS+L - memory dump. Asks First: for address.
K - BASIC list from actual address. Prints keywords, graphic characters, after value 14 prints real value of number.
SS+K - BASIC list. Asks First: for address.

Block operations and texteditor:

I - move block. Asks for first block address (First:), last (Last:) and target address (To:).
SS+I - move block. Asks for first block address (First:), lenght (Lenght:) and target address (To:).
P - fill block (First:, Last:, With:).
SS+P - fill block (First:, Lenght:, With:).
T - texteditor. Address change: CS+6, CS+7, exit:CS+1.

Search:

G - find. Asks for 5 number sequention, any of them you can skip.

  • To enter bit mask press X and not ENTER, then enter mask (Mask:).
  • To enter a character value without mask press SS+Z.
  • To enter a character value with mask press Z and enter mask (Mask:).

N - find next.
SS+G - displays values and mask for search.

Tracing:

SS+Z - step, perform one instruction.
SS+X - step, perform one instruction, CALL and RST with all subroutine.
SS+V - slow tracing. Performs SS+Z. Press Break for stop.
SS+B - fast tracing. Performs SS+X. Press Break for stop.
SS+N - set register value. 5 and 8 moves, Enter to change value. For return to main panel press CS+1 or SS+4.
W - sets start address for SS+U.
SS+U - sets breakpoint at actual address (3 bytes) and jumps to address stored using W.
SS+H - call. Asks for address (To:) and confirmation (Yes:), press Y. Return to DevastAce can be performed using ret.
SS+T - jump. Asks for address (To:) and confirmation (Yes:), press Y. Return to DevastAce only by warm or cold restart.

Tape operations:

Works properly only with real tape, not with emulator!

J - load. Asks for First: and Last:. You can load over DevastAce (that part of memory where it is stored is "write protected").
SS+J - load. Ask for First: and Lenght:.
S - save. Saves headerless block, asks for First:, Last: and Leader: (usually 255).
SS+S - save. Saves headerless block, asks for First:, Lenght: and Leader:.
R - to recognize and display leader byte of file on tape.
Y - read head of file. Displays type (T:), name (N:), start (S:), lenght (L:), variables lenght (V:) and waits for key:

J - load to start address (basic to 23755).
M - load to 16384 and jump to 16384 (to load and run other screen located monitor or packer or ...).

Short info:

Halfs of IX and IY are displayed as HX, LX, HY, LY. Rotation CB30-CB37 is SLIA. In groups DDCB and FDCB post copies are printed, for example SRL A,(IX+5). In disassembly mode after RST 8 one DEFB byte is printed, after RST 28 is DEFB printed to DEFB 38 (end of calculation).

My opinion:

OK, you must write direct numbers to edit program in memory, you can't use writing of instructions, so to edit or write longer routines use something other.

But it's the best tracer and cracker! You can't find more powerfull utility (and it's only 4600 bytes long!). Simple, very good.

Prometheus turbo assembler (by Universum) uses monitor similar to DevastAce.


+Gama