Pentagon-4096

This is new ZX-Spectrum clone

Новый "Pentagon-4096", это новый клон ZX-Spectrum, собранный на классической мелкой логике, но с применением ARV микроконтроллеров. Новый ZX-Spectrum совместимый компьютер вобрал в себя всё лучшее, что было в оригинальном Pentagon-128, но в него добавлены ряд исправлений и дополнений, реализованы ряд функциональных возможностей:

  1. Полная совместимость, в том числе и по положению сигнала прерывания INT, с оригинальным "Pentagon-128". Но с возможностью переключения положения сигнала INT в положение "Фирменный ZX-Spectrum" (на 16 телевизионных строк вниз + на 13.71 мкс вправо), с целью исключения мерцания спрайтов в ряде фирменных играх.

  2. Формирование в видео полностью стандартных синхро-импульсов и импульсов гашения, которые гарантируют нормальную работу с любым телевизором, а так же корректную работу PAL/NTSC кодера.

  3. Наличие PAL/NTSC кодера на микросхеме CXA1645 или CXA2075.

  4. Объём оперативной памяти 4 Мб с помощью 1 модуля SIMM 30 pin. Имеется возможность установки 1 модуля SIMM на 1 Мб, на плате имеется соответствующий джампер для переключения объёма установленного модуля памяти.

Вначале я хотел сделать ещё вариант установки двух модулей SIMM 30 pin по 1 Мб, но был вынужден отказаться от идеи, т.к. она не подружилась с турбированием ОЗУ на 7 МГц. Переключение модулей я делал стандартным способом - коммутацией сигнала CAS, но минимальной задержки этого сигнала оказалось достаточно, чтобы компьютер не заработал вообще. Хотя ещё оставалось конечно пару вариантов - коммутацию CAS я тогда сделал на К1531КП11, а нужно было попробовать на 1531ЛА3, но уже не буду возвращаться к этому варианту.

Расширении объёма памяти >128 КБ будет многостандартным:

4.0) Расширенную верхнюю память вообще можно отключить, оставив всеобщие стандартные 128 КБ.

4.1) По стандарту "Пентагон-1024": За счёт дополнительных двух D6 и D7 битов порта 0x7FFD, а так же за счёт бита D5 (вместо блокировки), получаем доступный объём ОЗУ 1024 КБ. Для совместимости с некоторыми программами, осбенно с фирменными, бит блокировки D5 этого порта можно будет переназначать на своё первоначальное назначение - на блокировку всей верхней памяти (48 КБ). В этом случае доступный объём ОЗУ будет составлять 512 КБ.

0x7FFD бит 7 - 256 КБ 0x7FFD бит 6 - 512 КБ 0x7FFD бит 5 - 1024 КБ

4.2) По стандарту "Профи-1024": За счёт порта 0xDFFD, битов D0, D1 и D2, ОЗУ будет доступно в объёме 1024 КБ:

0xDFFD бит 0 - 256 КБ 0xDFFD бит 1 - 512 КБ 0xDFFD бит 2 - 1024 КБ

4.3) По стандарту "Kay-512" и "Scorpion-256": За счёт порта 0x1FFD, битов D4 и D7, ОЗУ будет доступно в объёме 512 КБ:

0x1FFD бит 4 - 256 КБ 0x1FFD бит 7 - 512 КБ

Стандарты расширения памяти можно комбинировать:

4.4) По стандарту "Пентагон + Kay": За счёт двух портов - 0x7FFD, битов D6, D7 и бита блокировки D5, а так же 0x1FFD, битов D4 и D7, ОЗУ будет доступно в объёме 4096 МБ. В случае переназначения бита блокировки D5 порта 0x7FFD на блокировку верхней памяти, доступный объём ОЗУ уменьшится до 2048 КБ:

0x7FFD бит 6 - 256 КБ 0x7FFD бит 7 - 512 КБ 0x1FFD бит 4 - 1024 КБ 0x1FFD бит 7 - 2048 КБ 0x7FFD бит 5 - 4096 КБ.

4.5) По стандарту "Пентагон + Профи": За счёт двух портов - 0x7FFD, битов D6 и D7, а так же 0xDFFD, бмтов D0, D1 и D2, ОЗУ будет доступно в объёме 4096 МБ:

0x7FFD бит 6 - 256 КБ 0x7FFD бит 7 - 512 КБ 0xDFFD бит 0 - 1024 КБ 0xDFFD бит 1 - 2048 КБ 0xDFFD бит 2 - 4096 КБ.

4.6) По стандарту "Профи + Kay/Scoprion": За счёт двух портов - 0xDFFD, битов D0, D1 и D2, а так же 0x1FFD, битов D4 и D7, ОЗУ будет доступно в объёме 4096 МБ:

0xDFFD бит 0 - 256 КБ 0xDFFD бит 1 - 512 КБ 0xDFFD бит 2 - 1024 КБ 0x1FFD бит 4 - 2048 КБ 0x1FFD бит 7 - 4096 КБ.

Таким образом, для существующего ПО получается одновременная поддержка сразу множества стандартов расширения:

4.7) Pentagon-1024:

0x7FFD бит 7 - 256 Кб 0x7FFD бит 6 - 512 Кб 0x7FFD бит 5 - 1024 Кб

4.8) KAY-1024:

0x1FFD бит 4 - 256 Кб 0x1FFD бит 7 - 512 Кб 0x7FFD бит 7 - 1024 Кб

4.9) Scorpion ZS-1024:

0x1FFD бит 4 - 256 Кб 0x7FFD бит 7 - 512 Кб 0x7FFD бит 6 - 1024 Кб

4.10) Phoenix-2048:

0x1FFD бит 4 - 256 Кб 0x1FFD бит 7 - 512 Кб 0x7FFD бит 6 - 1024 Кб 0x7FFD бит 7 - 2048 Кб

  1. Наличие режима "Plus-3". Используются дополнительные 4 страницы ПЗУ, конфигурация ОЗУ становится такой же, как в фирменном "ZX-Spectrum+3" с поддержкой "стандартного" и "специального" режимов.

  2. В схеме имеется узел, который отлавливает команды короткой адресации к портам IN A,(xx), OUT (xx),A, благодаря которому, как только процессор попытается из ОЗУ извлечь код такой команды, моментально будет заблокирована вся верхняя память > 128 КБ, а порт 0x7FFD, с помощью которого доступно ОЗУ объёмом 128 КБ, будет переведён на мягкую дешифрацию. Как только процессор попытается из ОЗУ извлечь код любой другой команды, всё возвращается обратно с доступом всей имеющейся памяти. Это уже давно собрано у меня, и я уже давно забыл, что такое несовместимость таких программ, как INSULT, STS 3.3 и т.д. Для работы этих программ не нужно ничего вручную переключать, не нужно ограничивать объём верхней памяти, STS 3.3 можно грузить с RAM-диска.

  3. Оперативная память турбирована на 7 МГц. Это позволило: а) турбировать процессор Z80 на 7 МГц без WAIT-а, получив 200% производительности; б) турбировать процессор Z80 на 14 МГц с WAIT-ом, получив 290% производительности; в) реализовать дополнительные видеорежимы, требующие в 2 раза больше циклов доступа к ОЗУ видеоконтроллером, не останавливая процессор, например, 16 colors;

Из недостатков:

Компьютер будет работать не со всеми типами процессоров Z80. Отлично работает Z84C0020PEC, и их не сложно достать, поэтому в данном проекте нужно использовать только этот процессор.

Возможно, придётся подбирать модули памяти SIMM. Обычно проблем не возникает с 3-чиповыми. В частности, отлично работают Motorolla, Samsung и др. Из всех не захотели работать только Panasonic. А вот 9-чиповые глючат, одни больше, другие меньше. из 7 или 8 разных модулей мне удалось подобрать только 2, которые более-менее нормально заработали, но всё равно хуже чем 3-чиповые.

Сложность в поиске быстрых микросхем логики серии К1531. К счастью, не весь компьютер нужно собирать на этой серии, а только критичные к задержкам сигналов узлы. А то что достать не удалось, можно заменить на импортые аналоги серии 74Fxxx.

Из дополнительных недостатков Турбо-14 МГц:

В этом режиме почему-то не хочет работать ОС iS-DOS, который зависает почти сразу после запуска, иногда портится при этом диск C: на HDD. В то же время, все остальные проверенные мной программы, прекрасно раотают в режиме Турбо-14 МГц.

  1. Шина Nemo-Bus v1.0 содержит 3 слота.

  2. Будет 1 слот ZX-Bus Plus-3. Конструктивно он будет реализован с помощью двух линеек по 28 штырьков, к которым нужно припаять гребёнку контактов. Спасибо Djoni за подсказку с примером.

  3. Плюс 1 слот ISA специально для модема, включенного по схеме Кондратьева, полный вариант с прерыванием от модема IRQ4. Использовать можно, к примеру, в iS-DOSе, можно будет с ПЦ и обратно перекачивать файлы размером больше дискеты, не придётся дёргать винчестер и подключать его к ПЦ. Испытал на себе, это удобно. Сигнал IORQG для модема будет последним в приоритете после 4-го слота ZX-Bus.

  4. Наличие мышки PS/2, контроллер на Attiny2313, с буфером, без WAITа.

  5. Возможность подключения как классической механической клавиатуры, так и PS/2 без WAIT, контроллер на ATMega48PA-PU.

  6. Наличие порта RS-232 с использованием музыкального сопроцессора AY и микросхемы MAX3232.

  7. Турбирование контроллера дисковода КР1818ВГ93 по правильной схеме, с учётом всех исправлений описанных журнале "Спектрофон" № 12 и 14.

  8. NemoIDE контроллер.

  9. Доступ к 0-й странице ПЗУ с прошивкой Gluk Reset Service.

  10. Наличие порта атрибутов, с использованием полной дешифрации порта 0xFF.

  11. Теневое ОЗУ ёмкостью 64 Кб. Будет выполнять 2 функции - в качестве стандартного теневого ОЗУ, включающееся и выключающееся через чтение из портов 0xFB, 0x7B, ёмкостью 16 или 32 Кб, и для подмены всех 4х основных страниц ПЗУ:

Страница 0 - стандартное теневое ОЗУ через IN A,(#FB)/IN A,(#7B), либо эмуляция 0-й страницы ПЗУ Gluk Reset Service; Страница 1 - только эмуляция 1-й страницы ПЗУ TR-DOS; Страница 2 - расширение стандартного теневого ОЗУ до 32Кб, либо эмуляция 2-й страницы ПЗУ Menu-128; Страница 3 - только эмуляция 3-й страницы ПЗУ Basic-48.

  1. Микросхема CMOS-часиков по схеме MrGluk. Можно устанавливать как Dallas, так и МС146818 или её аналог 512ВИ1. Тактирование последних двух происходит от экономичной микросхемы MC14069. Внешняя батарейка - CR2032, которая будет использоваться для любого варианта CMOS, в том числе и для Dallas (в случае, если используется старый чип Dallas с давно разряженной внутренней батарейкой). Порты для управления CMOS - 0xBFF7, 0xDFF7 и 0xEFF7.

  2. 9 расширенных видеорежимов (в скобках кол-во циклов доступа к ОЗУ видеоконтроллером за 1 адрес):

20.0) Стандартный видеорежим. 256х192, атрибут на знакоместо 8х8. Область пикселей - 0x4000 - 0x57FF, область атрибутов - 0x5800 - 0x5AFF (2 цикла чтения из ОЗУ);

20.1) Аппаратный мультиколор. Атрибут цвета на байт 8х1. Область пикселей - 0x4000 - 0x57FF, область атрибутов - 0x6000 - 0x77FF (2 цикла чтения из ОЗУ);

20.2) 512х192 пикселей монохромный, можно включить любой цвет текста. Область пикселей нечётного знакоместа - 0x4000 - 0x57FF, область пикселей чётного знакоместа - 0x6000 - 0x77FF (4 цикла чтения из ОЗУ, для совместимости с цветным вариантом);

20.3) 512х192 пикселей, цветной. Атрибут на узкое знакоместо 8х8. Область пикселей нечётного знакоместа - 0x4000 - 0x57FF, область атрибутов нечётного знакоместа - 0x5800 - 0x5AFF, область пикселей чётного знакоместа - 0x6000 - 0x77FF, область атрибутов чётного знакоместа - 0x7800 - 0x7AFF (4 цикла чтения из ОЗУ);

20.4) 512х192 пикселей, мультиколорный. Атрибут на байт 8х1. Область пикселей нечётного знакоместа - 0x4000 - 0x57FF, область пикселей чётного знакоместа - 0x6000 - 0x77FF, область атрибутов нечётного знакоместа - 0xC000 - 0xD7FF 4-й страницы, область атрибутов чётного знакоместа - 0xE000 - 0xF7FF 4-й страницы (4 цикла чтения из ОЗУ);

20.5) 16 colors - каждый пиксель своим цветом. Экран состоит из 4-х экранных областей: 0x4000 - 0x57FF, 0x6000 - 0x77FF, 0xC000 - 0xD7FF 4-й страницы, 0xE000 - 0xF7FF 4-й страницы. Каждый байт данных отображает только 2 пикселя, каждая экранная область отображает только свои 2 пикселя из знакоместа, 4 области составляют целое знакоместо (4 цикла чтения из ОЗУ);

20.6) 384х288 пикселей, полноэкранный режим без бордюра. (2 цикла чтения из ОЗУ);

20.7) FlashColor. Внутри каждого цветного атрибута, в котором активирован 7-й бит флеш, перемешиваются цвета точек и фона и выводятся в качестве цвета точек, цвет фона при этом чёрный. Данный видеорежим можно совмещать с видережимами № 0, 1, 3, 4 и 6.

20.8) Аппаратный GigaScreen, автоматический. Выводит на экран основной и дополнительный экраны с черезстрочным чередованием, плюс от кадра к кадру происходит изменение очерёдности вывода экранов. Включается тогда, когда программа просмотра гигаскрин-картинок начинает переключать по прерываниям основной / дополнительный экран. Как только программное переключение экранов прекратилось, аппаратный гигаскрин автоматически отключается. За счёт черезстрочного переключения экранов, мерцание на гигаскрин картинках становится значительно менее заметно.

Видеорежимы "Аппаратный мультиколор", "512х192", "16 colors" и "384х288" включаются стандартным портом 0xEFF7. Видеорежим "512х192" из монохромного в цветной или обратно переключается дополнительным портом 0xFE37, управляемый из BIOS. Видеорежим "512х192" мультиколорный включается, если через 0xEFF7 включить одновременно режимы "Мультиколор" и "512х192", а так же включить цвет портом 0xFE37.

  1. SoundDrive с поддержкой режима Covox. В качестве микросхем ЦАП использованы TLC7528, что значительно упростило принципиальную схему.

  2. BIOS с тестированием ОЗУ и Setup-ом. Установлена дополнительная микросхема ПЗУ ёмкостью 64 Кбайта.

22.1) В BIOS-Setup можно: 22.1.1. Выставлять текущую дату и время; 22.1.2. Настроить расширенные видеорежимы: а) выбрать цвет текста для монохромного видеорежима 512х192; б) включить или отключить цвет для видеорежима 512х192; в) включить или отключить флешколор; г) включить или отключить автоматический аппаратный гигаскрин. 3. Настроить теневое ОЗУ - включать и отключать эмуляцию ПЗУ для каждой из 4-х страниц; 4. Настроить поведение Спектрума при сбросе: а) Выход в Gluk Reset Service; б) Выход в Menu-128; в) Выход в TR-DOS; г) Выход в TR-DOS без очистки ОЗУ; д) Выход в Basic-48; е) Загрузка с HDD Master; ж) Загрузка с HDD Slave; з) При выборе варианта загрузки с HDD, можно выбирать варианты, что именно загружать: DNA-OS; iS-DOS; пользовательский вариант номера блока LBA.

  1. Конструктивно всё это собрано на двух платах: Материнская плата имеет размер стандартного ATX, что позволит её установить в стандартный корпус ATX, разводка 4-слойная. Вторая плата имеет размеры 170x170 мм и будет крепиться к материнской плате вверху и на ней будут располагаться 5 внешних коннекторов: Сдвоенный PS/2 - мышка + клавиатура, DB15 (female) - механическая клавиатура, DB9 (female) - кэмпстон джойстик, DA-15 (VGA), S-Video и RCA 3 шт - видео и аудио стерео. Остальные коннекторы - 3 шт. мини-джек (аудио-выход, магнитофонные вход и выход), DB9 (male - порт RS-232) и DB25 (принтер) придётся разместить на планках.