Странно, там на прерываниях висит уменьшение обратного счетчика тиков, по достижении 0 должен выходить в Бейсик. Понятия не имею, чем этому включенный ТУРБО мешает.
Странно, там на прерываниях висит уменьшение обратного счетчика тиков, по достижении 0 должен выходить в Бейсик. Понятия не имею, чем этому включенный ТУРБО мешает.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
МГТФ - любимый провод!
KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL
Посмотри в теневике, меняется ли содержимое регистра BC со временем. Если не меняется - что-то с турбо режимом, почему-то, если он включен, отключены прерывания.
- - - Добавлено - - -
Листинг кода, может, кто-то шарит в особенностях Турбо-режима Кая, разберется, почему виснет:
Скрытый текст
; CLEAR 32255 (#7DFF)
ORG 32700
LD C,#FE
OUT (C),0
LD HL,#7E00
LD DE,#7E01
LD BC,256
LD (HL),#7F
LDIR
LD BC,500 ; время определения ошибки z80 в 1/50 секунды
LD A,#7E
LD I,A
IM 2
EI
L1 LD A,R
JP PE,L1
LD BC,1
LEND IM 1
LD A,#3F
LD I,A
EI
RET
ORG #7F7F
PUSH AF
DEC BC
LD A,B
OR C
JR Z,L3
POP AF
L2 EI
RET
L3 POP AF
POP AF
JP LEND
[свернуть]
Последний раз редактировалось Spectramine; 14.01.2018 в 22:37.
В турборежиме может случиться так, что прерывание приходит не в любой такт, а только в такой такт, чтобы не затронуть команду LD A,R. Точно это зависит от кол-ва тактов в прерывании и от логики WAIT в турборежиме. А вообще классная тема, спасибо всем, кто высказался, открыли мне глаза на важный баг Z80!
Правда, позанудствую немного. Мне кажется, иметь такие подпрограммы, которые проверяют, разрешены ли прерывания - это дурной тон. В любой момент исполнения программы программисту известно, запрещены прерывания или разрешены. Можно иметь две точки входа в подпрограмму, одна из которых разрешает прерывания по выходу, а другая - нет, и вызывать ту из них, которая соответствует режиму работы процессора в данный момент. Мне только в одной ситуации нужно было проверять состояние IFF2 - в обработчике NMI. Но в этот момент работа команды LD A,R не может быть нарушена, т.к. IFF1=0 и прерывания фактически запрещены.
Вспомнил. У меня ещё 2012-ом году отказалась работать игра Terra Cresta. У других владельцев КАЯ она тоже не заработала. Там от ссылки и далее по топику. Я так и не понял тогда, из-за чего эта проблема: то ли из-за CMOS Z80 (Z84C0020PEC, но на Фениксе работает!), то ли из-за схемы формирования /INT'а в КАЕ на ИР16. В общем, определится бы с причиной и решить эту проблему.
- - - Добавлено - - -
И вот отсюда и далее по топику тоже можно почитать (вроде, всё-таки, из-за процессора).
Последний раз редактировалось SoftFelix; 16.01.2018 в 02:06.
МГТФ - любимый провод!
KAY-1024(4096)/SL-4/TURBO v2010 + Nemo-FDC + Nemo-IDE (CF 4GB) + SMUC2 Rev.B RTC (HDD 1.6GB + DVD-ROM) + PROF-ROM + ZXMC2 + GENERAL SOUND 2MB + ZX-BUS_TEE + FDD 3.5' + FDD 5.25' + VGA&PAL
если у тя вся машина в твоем распоряжении то да
а если тебе выделило какойто время некоторая многозадачная ОС то уже не совсем...
а так функция местами полезная
и че за бред понаписан в http://zxpress.ru/article.php?id=8963
непонятно
чем не устраивает элементарное двойное чтение?
зачем было править проц
много железа бажит или дает ложный результат при первом чтении
- - - Добавлено - - -
а так да
тема внезапно стала еще интересней
опять всплыли всякие кривые клоны
и их кривые глюки
про которые нигде особо и не написано...
Последний раз редактировалось NEO SPECTRUMAN; 20.01.2018 в 01:17.
"Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)