
Сообщение от
Error404
За неработающие игры надо сказать спасибо авторам ПРО, т.к. это они уперлись как бараны и не сделали совместимость по диспетчеру 16к с портом FB, хотя цена вопроса там - одна КП11.
А вот кстати. Кто возьмется сделать такую доработку? Думаю, проще - по второму варианту, без КП11.
Вот смотрите: программам от Z80CardII (я думаю никто не будет спорить что они -самое интересное на Орионе) порой нужен диспетчер по 16к в окне 0000...3FFF. Он включается портом 0FBh: Бит D7=0 диспетчер включен, бит D7=1 диспетчер выключен (т.е. инверсно). Кстати, этот бит уже запоминается на ПРО в D111 (TM8). Биты D0..D3 содержат номер сегмента, включаемого в окне 0000...3FFF если бит D7=0. Т.е. нам либо нужен доп. регистр на 4 разряда, например еще одна ТМ8, либо их можно запоминать в аналогичном порту ПРО (это порт 04 биты D0..D3, в остальные нужно писать 0)
Номера сегментов совпадают с номерами сегментов на ПРО, только их всего в отличие от ПРО всего 16 (на про их 32), цитирую для ПРО:
Код:
Распределение сегментов по страницам основного ОЗУ:
Стр.0 Стр.1 Стр.2 Стр.3 Стр.4 Стр.5 Стр.6 Стр.7
FFFFH -------T------T------T------T------T------T------T------¬
¦ 3 ¦ 7 ¦ 11 ¦ 15 ¦ 19 ¦ 23 ¦ 27 ¦ 31 ¦
C000H +------+------+------+------+------+------+------+------+
¦ 2 ¦ 6 ¦ 10 ¦ 14 ¦ 18 ¦ 22 ¦ 26 ¦ 30 ¦
8000H +------+------+------+------+------+------+------+------+
¦ 1 ¦ 5 ¦ 9 ¦ 13 ¦ 17 ¦ 21 ¦ 25 ¦ 29 ¦
4000H +------+------+------+------+------+------+------+------+
¦ 0 ¦ 4 ¦ 8 ¦ 12 ¦ 16 ¦ 20 ¦ 24 ¦ 28 ¦
0000H L------¦------¦------¦------¦------¦------¦------¦-------
Доступ к сегментам ОЗУ осуществляется через три независимых окна, которые можно "открыть" в адресном пространстве процессора в пределах рабочей страницы ОЗУ:
Окно ОЗУ "RAM2" - 8000-BFFFH
Окно ОЗУ "RAM1" - 4000-7FFFH
Окно ОЗУ "RAM0" - 0000-3FFFH
Назначение разрядов порта 0AH следующее:
D0 - 1 = включить окно ОЗУ "RAM0"
D1 - 1 = включить окно ОЗУ "RAM1"
D2 - 1 = включить окно ОЗУ "RAM2"
порт 04H - регистр сегментов для окна "RAM0";
порт 05H - регистр сегментов для окна "RAM1";
порт 06H - регистр сегментов для окна "RAM2";
Т.е. чтобы получить аналог диспетчера от Z80CardII нужно в порт RAM0 (это порт A мсх D55) одновременно (т.е. доп. обработать выв.6 /CS D55) писать то, что пишется в 0FBh биты D0..D3 (при этом выводы D55 A0,A1,D4,D5 должны переводиться в 0, т.е. нужно на эти входы поставить МСХ 2И (ЛИ1), нечетные ножки которой завести на сигнал "FB" выв.9 D111 - сигнал инверсный), и разрешать работать диспетчеру "RAM0" не только разрешаюшим сигналом c вывода 14 D80 (бит D0 порта 0Ah), но и по элементу ИЛИ и с вывода 6 D111 (инверсный бит D7 порта 0FBh).