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.
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).
16384 (memory version from START). Registers in
monitor are without change.
16387 (memory version from START+3). Actual state
of Z80 registers is set in monitor.
You'll see somethink like this:
ADDRESS INSTRUCTION CODE INSTRUCTION MNEMONIC
REGISTERS AND THEIR VALUES SHORT DUMP
INTERRUPT AND FLAGS EDIT ZONE
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
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
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
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,
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
- To enter a character value without mask press SS+Z.
- To enter a character value with mask press Z and enter
N - find next.
SS+G - displays values and mask for search.
SS+Z - step, perform one instruction.
SS+X - step, perform one instruction, CALL and RST with all
SS+V - slow tracing. Performs SS+Z. Press Break for
SS+B - fast tracing. Performs SS+X. Press Break for
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
SS+T - jump. Asks for address (To:) and confirmation
(Yes:), press Y. Return to DevastAce only by warm or cold
Works properly only with real tape, not with
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
M - load to 16384 and jump to 16384 (to load and run
other screen located monitor or packer or ...).
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).
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,
Prometheus turbo assembler (by Universum) uses
monitor similar to DevastAce.