Вход

Просмотр полной версии : Вопрос по отладчику Unreal Speccy



Shadow Maker
01.09.2012, 13:54
Мне надо поставить точку останова на вывод во второй канал AY. Как это сделать?

null_device
01.09.2012, 14:12
Если вы хотите найти место в которм это происходит, можно попытаться перехватывать команды записи значений в порты AY через Breakpoints Manager (ALT+C).
Если место вам известно, правой кнопкой мыши на сроке операции, ставится точка останова. При повторении операции, точка осанова снимается.

Shadow Maker
01.09.2012, 15:50
Да, я имел ввиду именно перехват команды записи в порт AY, соответствующий второму (среднему) каналу, видимо непонятно написал. Естественно надо использовать Breakpoint Manager, мне надо конкретную команду, которую написать в условие. Я догадываюсь, что это что-то типа OUT % 0FD и что-то еще, но я не догоняю, какая именно это будет команда, те, что пробовал, не срабатывают.

null_device
01.09.2012, 16:03
Как мне кажется, нужно искать и запись значений FFFD->хFFD->ххFD в регистр(ы), т.к. запись в порт может быть не непосредственным, а через регистровую пару BC.

Shadow Maker
01.09.2012, 20:55
Ну мне команду кто-нибудь скажет, которую вбить в отладчик? При чем тут непосредственная или косвенная запись мне решительно непонятно. Вот выдержка из хелпа.


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 - pentagon port #FD (also know 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, but must start with digit: DFFD - wrong, 0DFFD - right
characters - must be enclosed in single quotes ('A','B',etc..)
all calculations uses 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 treated as 'out & (0FF == 0FE)' <- always 0

M(x) is peek byte at address x (same as x->0)
'=' is an alias for '==' (for pascal programmers)

samples:

(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>"

psb
01.09.2012, 21:59
(out & 0FFFF)==0FFFD && (val==2 || val==3 || val==9)

и что вообще значит "точку останова на вывод во второй канал AY"? только на включение регистра, относящегося ко 2му каналу.

Shadow Maker
01.09.2012, 23:48
Только на вывод в регистры второго канала. твой метод чего-то ошибку выдает, val не нравятся.

psb
02.09.2012, 02:47
(((OUT&0FFFF)==0FFFD)&&(((VAL==2)|(VAL==3))|(VAL==9)))
вот так у меня пашет.

Alex Rider
02.09.2012, 07:56
Deleted