Господа, в Кондратьевской схеме подключения ISA модема при записи в порты 8250 как понимаю происходит блокировка IRQ4 записью А11=1 в триггер. Разрешение IRQ4 происходит либо по сбросу, либо по А4=0, А11=0.
Вопрос: какой адрес этого порта?
Господа, в Кондратьевской схеме подключения ISA модема при записи в порты 8250 как понимаю происходит блокировка IRQ4 записью А11=1 в триггер. Разрешение IRQ4 происходит либо по сбросу, либо по А4=0, А11=0.
Вопрос: какой адрес этого порта?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Судя по схеме, для работы с разрешенным прерыванием используются порты с адресами #F0EF...#F7FF (A11=0).
Работа в режиме программного опроса, тоесть без прерывания, обеспечивается при портах #F8EF...#FFEF (A11=1).
Тоесть выбором базового адреса порта задается режим работы модема - с разрешенными прерываниями или без них.
а ты не знаешь, в самом софте это равнозначные самодостаточные режимы? Типа один с опросом, другой с прерываниями, или при работе программы она переключает их туда-сюда, используя оба? Расточительно как-то целую адресную линию ради отключалки прерывания использовать..
Я думаю при разработке схемы заложили возможность работы с прерываниями из перспективных соображений.
Тот софт, с которым я имел дело (в частности Melon) расчитан на работу только в режиме программного опроса.
Думаю это связано с необходимостью модификации стандартной прошивки Спектрума, в которой ошибочно по NMI идет переход на 0 адрес.
Правда одна программа, расчитанная на работу по прерываниям мне попадалась это S-Terminal v.1.1 Евгения Милуна.
Код:Программа расчитана на работу с компь- ютером, имеющем памяти не меньше 128Кб и внутренним hayes-совместимым модемом, подключенным по схеме Михаила Кондратьева, с использованием механизма немаскируемых прерываний от модема. Все остальные схемы пока не поддерживаются. ..... (С) Евгений Милун (Paul Atrides) "STARS OF KELADAN" Россия, Самара, 10 ноября 1999 г.
Невнимательность разработчиков:
Кусок кода из ROM:
LD HL,(NMIADD)
LD A,H
OR L
JR NZ,0070 -- должно быть jr z,0070
JP (HL)
070:
Не слышал, откуда информация?Сообщение от Black_Cat
В некоторых модифицированных прошивках эта ошибка исправлена, но не во всех.Сообщение от Black_Cat
А в базовой прошивке BASIC 48 это выглядит так:Здесь есть ошибка, которая заключается в том, что переход по адресу, записанномуКод:0066 .NMI 0066 F5 PUSH AF 0067 E5 PUSH HL 0068 2A B0 5C LD HL,(NMIADD) 006B 7C LD A,H 006C B5 OR L 006D 20 01 JR NZ,#0070 ; Return if non zero 006F E9 JP (HL) 0070 E1 POP HL 0071 F1 POP AF 0072 ED 45 RETN
в переменную (NMIADD) происходит только при его нулевом значении,
тоесть всегда приводит к перезапуску BASICа.
В адресе 006D должен стоять код 28, что означает команду JR Z,#0070
Вот тогда, записав в NMIADD адрес процедуры обработки NMI,
можно писать программы использующие этот вектор для аппаратного
перехвата событий.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)