Мне надо поставить точку останова на вывод во второй канал AY. Как это сделать?
Вид для печати
Мне надо поставить точку останова на вывод во второй канал AY. Как это сделать?
Если вы хотите найти место в которм это происходит, можно попытаться перехватывать команды записи значений в порты AY через Breakpoints Manager (ALT+C).
Если место вам известно, правой кнопкой мыши на сроке операции, ставится точка останова. При повторении операции, точка осанова снимается.
Да, я имел ввиду именно перехват команды записи в порт AY, соответствующий второму (среднему) каналу, видимо непонятно написал. Естественно надо использовать Breakpoint Manager, мне надо конкретную команду, которую написать в условие. Я догадываюсь, что это что-то типа OUT % 0FD и что-то еще, но я не догоняю, какая именно это будет команда, те, что пробовал, не срабатывают.
Как мне кажется, нужно искать и запись значений FFFD->хFFD->ххFD в регистр(ы), т.к. запись в порт может быть не непосредственным, а через регистровую пару BC.
Ну мне команду кто-нибудь скажет, которую вбить в отладчик? При чем тут непосредственная или косвенная запись мне решительно непонятно. Вот выдержка из хелпа.
Код: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>"
(out & 0FFFF)==0FFFD && (val==2 || val==3 || val==9)
и что вообще значит "точку останова на вывод во второй канал AY"? только на включение регистра, относящегося ко 2му каналу.
Только на вывод в регистры второго канала. твой метод чего-то ошибку выдает, val не нравятся.
(((OUT&0FFFF)==0FFFD)&&(((VAL==2)|(VAL==3))|(VAL== 9)))
вот так у меня пашет.
Deleted