А зачем обнулять flg в основной программе, если он уже обнулен? Там скорее его в не-ноль надо выставить.
Вид для печати
А зачем обнулять flg в основной программе, если он уже обнулен? Там скорее его в не-ноль надо выставить.
Парни, а напишите тестовую программку для точной идентификации Z80 (NMOS-CMOS), наличие-отсутствие у него бАга с флагами для LD A,R и как выполняется OUT (C),0. Сразу масса вопросов отпадёт при некорректной работе некоторого софта.
Ага, ща проверил - если вместо OUT (C),0 идет OUT (C),$FF, он пишет вместо Z80 - Z84.
Вообще на 128м проверить NMOS/CMOS легко:
LD BC, #BFFD ; порт выбора регистра AY
XOR A
OUT (C),A ; выбираем регистр 0
LD B,#FF ; BC=#FFFD - порт записи в регистр
OUT (C),0 ; недокументированная команда, на NMOS z80 пишет в порт #00, на CMOS z80 - #FF
LD B,#BF ; BC=#BFFD - порт чтения регистра AY
IN A,(C) ; читаем регистр 0 AY с выставлением флагов
JR NZ,lCMOSz80 ; если в нем 0 - процессор NMOS, иначе CMOS
На 48м - вроде как только с помощью вопроса пользователю после вывода в порт #FE.
Ой, правда. Я и забыл, что на некоторых реалах AY может не быть) Значит, будем индицировать NMOS/CMOS цветом бордюра)
- - - Добавлено - - -
Сваял простой тест: Вложение 63707.
Если бага LD A,R у Z80 нет, программа повисит 10 секунд, и выдаст сообщение. Если есть - отработает быстрее.
NMOS/CMOS сразу индицируется цветом бордюра (черный - NMOS, белый - CMOS).
- - - Добавлено - - -
Потестил эмули - ZXSpin, Zero и EmuzWin о баге не знают, Spectaculator, SpecEmu, Fuse, Unreal и ZXMAK2 знают.
Ага, добавил scl в архив.
- - - Добавлено - - -
Если у кого на реале стоит CMOS z80, прогоните тест, плиз, надо ж выяснить, есть на нем баг LD A,R или нет.