Только у Ralf'а, наверное, ТР-ДОС'а нет...
На реальном компе STS - лучший вариант, а, вот, на эмуляторах, возможно, есть альтернативы и получше. Хотя я не знаю - я ж реальщик! ;)
Вид для печати
Только у Ralf'а, наверное, ТР-ДОС'а нет...
На реальном компе STS - лучший вариант, а, вот, на эмуляторах, возможно, есть альтернативы и получше. Хотя я не знаю - я ж реальщик! ;)
LaserGenius (с которого содрали скорповский монитор) тоже неплох.
http://www.worldofspectrum.org/infos...cgi?id=0008330
http://www.worldofspectrum.org/pub/s...aserGenius.gif
Да, у меня нет ТР-ДОСА и нет опыта с ТР-ДОСОМ :)
Я работаю с емулятором Spin. Там самая хорошая поддержка breakpoints какую я знаю. Можно входить в дебуггер при разных условиях, на пример - HL=12345, [30000]=255, write to [30000], read from [30000] и.т.д.
Но не всё там мне угодно и мне интересны тоже другие утилиты.
А это окно "Breakpoints manager" откуда?
Unreal BreakPointManager
manager can handle 3 types of breakpoints:
1. conditional breakpoints and on-screen watches
are using C expression syntax.
operators (in priority order):
() ! ~ M(x) -> * % / + - >> << > < == = <= >= != & ^ | && ||
operands:
a,b,c,d,e,h,l,bc,de,hl - common registers
a',b',c',d',e',h',l',bc',de',hl' - alternative registers
ix,iy,pc,sp,i,r - control registers
FD - memory port #FD (also known as #7FFD)
OUT - port used in 'OUT' command (or 0FFFFFFFF when no outs)
IN - port used in 'IN' command (or 0FFFFFFFF when no ins)
VAL - read/written value to port (only meaningful when OUT !=
0FFFFFFFF or IN != 0FFFFFFFF)
numbers - hex, must start with digit: DFFD - wrong, 0DFFD - right
characters - must be enclosed in single quotes ('A','B',etc..)
All calculations use 32-bit unsigned interger arithmetic.
If you are not familiar with C, use brackets as much as possible, due to
non-intuitive operator's precedence, e.g.
out & 0FF == 0FE is treated as 'out & (0FF == 0FE)' <- always 0
M(x) is byte from memory address x (same as x->0)
'=' is an alias for '==' (for Pascal programmers)
examples:
(out+1) | (in+1) - in/out to any port
(in & 8001) == 0 - read keyboard row from <B> to <SPACE>
!(out & 1) - any out to port #FE
(out & 0FF)==0BB && (val==0F3 || val==0F4) - reset General Sound
(out & 0FF)==0FD && (val&7)==3 - set 3rd memory page
(FD & 7) == 3 - the same
M(pc)==0CB && pc->1 >= 10 && pc->1 <= 17
- set break on executing instruction "rl <reg>"
I hope, these examples will be enough to get idea
note: double-click on breakpoint to edit it
2. execution breakpoints (also set in CPU window by pressing SPACE).
In manager window it is easy to setup breakpoint on execution
range like 6000-FFFF
3. breakpoints on reading/writing memory. Similar to execution
breakpoints, but have flags "R" and "W" to issue interrupt on
reading/writing memory address (flags may be set together)
А у какого из эмулей есть запись полного лога выполненных инструкций? У Unreal есть? Имхо очень помогает при понимании причины какого-нибудь непонятного фейла, ибо такие штуки брекпойнтами не отследишь. Точнее отследишь, но запаришься)
Откопал в закромах парочку образов с переведёнными с моих кассет играми.