Господа, в Кондратьевской схеме подключения 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 г.
Не слышал, откуда информация?Сообщение от 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,
можно писать программы использующие этот вектор для аппаратного
перехвата событий.
Невнимательность разработчиков:
Кусок кода из ROM:
LD HL,(NMIADD)
LD A,H
OR L
JR NZ,0070 -- должно быть jr z,0070
JP (HL)
070:
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)