Из газеты 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) для вторых половин каких-либо элементов управления,назначе- ние которых можно понять и по одной поместившейся на экран поло- вине. Например, если ваша программа будет иметь ряд иконок по верхнему краю экрана, смело выводите их на знакоместо выше, чем видно согласно рекомендации.