Из газеты AlCo News #32, Рязань, 11.07.2004
KSA-7G разработал до дикости простой вариант схемы 384x304 (см.
ZX-Guide #2 ) с программным переключением.
Contact v2.06
(.04 у KSA-7G на компе, а в .05 был лишний транзистор, который
KSA-7G выкинул, когда схема уже была оформлена в виде экрана :):
Первая цепь
(как и в схеме с рубильником):
сигнал стандарных строк экрана 14-й(с нуля) видеоадрес
D8(555ЛЕ1):13 ----+------------------------+---> D17(555КП11):14
или D9(1533ЛИ1):5 | отрезать +5v <--x---+
|
+------------------------+---> D14(555КП11):14
отрезать +5v <--x---+ (для атрибутов)
Вторая цепь
(вместо рубильника):
Расположение полей 2-го экрана
(для 1-го вместо pg6,7 читайте pg4,5),
адреса атрибутов - в фигурных скобках:
{#d0xx} #c01f?#e000 ^ {#f0xx} #e01f?#c008 {#d0xx}
pg6 ... | ... 8chr pg6 ... | ... pg6
#c7ff|#e7e0 v #e7ff|#c7e8
-------------+------------------------------------+-------------
{#d8xx} #c01f|#e000 ^ {#f8xx} #e01f|#c008 {#d8xx}
... ... | ... | ... ... | ... ...
pg7 | 24chr pg7 | pg7
... ... | ... | ... ... | ... ...
{#daxx} #d7ff|#f7e0 v {#faxx} #f7ff|#d7e8 {#daxx}
-------------+------------------------------------+-------------
{#d3xx} #d81f|#f800 ^ {#f3xx} #f81f|#d808 {#d3xx}
pg6 ... | ... 6chr pg6 ... | ... pg6
<---8chr---> |#ffa0 v #ffbf| <---8chr--->
Поскольку логика схемы проста и понятна, то рекомендуется
включать её в состав вновь разрабатываемых плат ZX Spectrum, да
и эмуляторов тоже (пока есть только в Unreal ).
Софт за мной.
Процедура переброски строки пикселов на экран 384x304:
;HL указывает на адрес строки в памяти (384 точки = 48 байтам)
;BC указывает порядковый номер строки (от 0 до 303)
LDIR384 LD A,C
AND 7
LD D,A
XOR C
ADD A,A,A,A
LD E,A
DJNZ L384NLO
LD A,D
ADD A,#18
LD D,A
L384HI LD A,D
ADD A,#C0
LD D,A
LD A,22
JR L384OK
L384NLO LD A,C
AND #C0
JR Z,L384HI
RRCA
RRCA
RRCA
ADD A,#B8,A,D
LD D,A
LD A,23
L384OK CALL OUTME
PUSH DE,DE
SET 3,E,4,E
LD BC,8
LDIR
POP DE
SET 5,D
LD C,32
LDIR
POP DE
SET 3,E
LD C,8
LDIR
RET
В Unreal Speccy режим 384x304 сейчас подержан не в лучшем виде:
при разрешении 320x240 (оно же 640x480 ) на пцшном экране не по-
местилась основная часть экрана. Почему? Потому что SMT решил,
что верхние 8 знакомест важнее... Возможно, в этом был виноват и
я,так и не переместивший в ANSI viewer'е начало печати для 80x38
на 5-ю (видимую на всех дисплеях) строку вместо 0-й. А больше
240 строк Unreal не обсчитывает ни в каком режиме...
Во избежание подобных недоразумений впредь НАСТОЯТЕЛЬНО рекомен-
дую считать видимыми везде только следующие поля экрана 384x304:
1) основной экран;
2) по 4 знакоместа с боков;
3) по 3 знакоместа сверху и снизу;
4) соответствующие уголки между 2) и 3).
Последнее, впрочем, не всегда достижимо на телевизорах; верхняя
часть экрана тоже не видна при некоторых подключениях из-за то-
го, что в развертке Pentagon по ошибке разработчиков отсутствует
один строчный синхроимпульс (точнее, он слит с кадровым и не мо-
жет быть опознан схемой телеприёмника). Это реально исправить,мы
с KSA-7G работаем над этим вопросом. Поэтому РАЗРЕШАЕТСЯ приме-
нять рекомендованную область сверху.
Как может быть использована оставшаяся часть экрана?
1) для показа картинок с не очень важной периферией (например,
фото- и кинокадры);
2) для рамочек,ограничивающих экран на реальном ZX (для эмуля-
тора это не столь важно: геометрия пцшных мониторов,как правило,
идеальна);
3) для вторых половин каких-либо элементов управления,назначе-
ние которых можно понять и по одной поместившейся на экран поло-
вине. Например, если ваша программа будет иметь ряд иконок по
верхнему краю экрана, смело выводите их на знакоместо выше, чем
видно согласно рекомендации.