Мне надо поставить точку останова на вывод во второй канал AY. Как это сделать?
Мне надо поставить точку останова на вывод во второй канал AY. Как это сделать?
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Если вы хотите найти место в которм это происходит, можно попытаться перехватывать команды записи значений в порты AY через Breakpoints Manager (ALT+C).
Если место вам известно, правой кнопкой мыши на сроке операции, ставится точка останова. При повторении операции, точка осанова снимается.
Последний раз редактировалось null_device; 01.09.2012 в 14:14.
Когда есть, но не знаешь где - это все равно, что нету.
Да, я имел ввиду именно перехват команды записи в порт AY, соответствующий второму (среднему) каналу, видимо непонятно написал. Естественно надо использовать Breakpoint Manager, мне надо конкретную команду, которую написать в условие. Я догадываюсь, что это что-то типа OUT % 0FD и что-то еще, но я не догоняю, какая именно это будет команда, те, что пробовал, не срабатывают.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Как мне кажется, нужно искать и запись значений 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>"
Последний раз редактировалось Shadow Maker; 01.09.2012 в 20:59.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
(out & 0FFFF)==0FFFD && (val==2 || val==3 || val==9)
и что вообще значит "точку останова на вывод во второй канал AY"? только на включение регистра, относящегося ко 2му каналу.
Только на вывод в регистры второго канала. твой метод чего-то ошибку выдает, val не нравятся.
Последний раз редактировалось Shadow Maker; 02.09.2012 в 00:09.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
(((OUT&0FFFF)==0FFFD)&&(((VAL==2)|(VAL==3))|(VAL== 9)))
вот так у меня пашет.
Deleted
Последний раз редактировалось Alex Rider; 02.09.2012 в 07:58. Причина: Читать предыдущие посты надо было внимательнее :)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)