Сообщение от
ewgeny7
Сделал порты F900 и FA00.
Что нужно сделать из Z80-Card?
Из карда нужно делать всё! Итак, рекомендую примерно в такой последовательности (по значимости доработки):
0. Порт 0FBh все 8 бит (сразу заложи дешифрацию и выборку всех портов [0F8h..0FFh] как по IN/OUT, так и по STA/LDA 0F8xxh...0FAxxh)
1. начни с прерываний 50Гц - тут напомню, что шина данных на Орионе должна быть терминированной к +5В (с "подвешенной" шины должно читаться 0FFh), т.к. не все программы при работе с перерываниями IM2 готовят полную таблицу векторов IM2, а только одно слово по адресу 0xxFFh.
2. Диспетчер 16к в окне 0...3FFFh адресуется только младшими четырьмя битами (только 256к)
3. Выключение ПЗУ/портов из адресного пространства F400...FFFF (FULL RAM mode)
Защиту ОЗУ под ПЗУ [от порчи при обращении к портам как к памяти командами STA/LDA] можно пока не делать, оно не крайне важно, уже считается расширением карда. Хотя если будет не лень, то...
Еще очень хотел бы видеть в конечном варианте ОЗУ 512к (или более), из которых первые 256к попадают под диспетчер 16к, все вместе (вся память) - под диспетчер страницами 64к (порт 0F9h). Также хочу экран 480 точек (тупо "удлинняется" экранное поле с 12 до 15 килобайт - вместо экрана 0..2FFF становится 0..3BFFh, 4000h..6FFFh -> 0..7BFFh и т.д.). Этот режим включается портом F8 = F800 (D7=1). Необходимо для получения "читабельного" режима 80х25 символов.
Вообще, все доработки типового Орион+Z80 до Z80-CardII можно посмотреть тут:
http://zx.pk.ru/showpost.php?p=180097&postcount=69
Дублирую в архиве во вложении.
Проверять этим тестом:
http://zx.pk.ru/showpost.php?p=177618&postcount=21
Еще процитирую сам себя:
Код:
=============== ОРИОН - 128 + Z80 Card II ====================
Порт F8 (F800) - Управление цветом. Если в порт записывается байт с
битом D2, равным 0, дисплей работает в монохромном
(двуцветном) режиме. Если бит D1=0, устанавливается
16-цветный режим работы дисплея, а если D1=1 -
дисплей переходит в четырехцветный режим.
Последний триггер DD30 меняет палитру цветов в двух-
(монохромный на цветном дисплее) и четырехцветных режимах.
D7=1 - включить экран 480 точек
Порт F9 (F900) - Упр.страницами для режима "Орион-128".
Порт FA (FA00) - Упр.экранами
"1" D0,D1 - номер экрана (0-3)
D2-D5 - резерв
D6 - выкл.регенерации ОЗУ (чтоб ОЗУ сдохло)
D7 - экран 384/512 точек (по горизонтали)
Порт FB - УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ И ДИСПЕТЧЕРОМ:
D7 D6 D5 D4 D3 D2 D1 D0
! ! ! ! ! ! ! !
MZ INT XMEM RZRV BS1 BS0 SS1 SS0
! ! ! ! ! ! ! !
! ! ! ! ! ! !______!____ SEGMENT SELECT
! ! ! ! !______!__________________ BANK SELECT
! ! ! !
! ! ! !________ РЕЗЕРВ ДЛЯ BANK SELECT (ВСЕГДА = 0)
! ! !_______________ FULL RAM MEMORY (ПРИ D5=1 0-FFFF - ОЗУ)
! !______________________ INT ENABLE (ПРИ D5=0 ЗАПРЕЩЕНЫ)
!_____________________________ DISPATCHER OFF (ПРИ D7=1 ОТКЛЮЧЕН !)
БИТЫ BS1,BS0 ОПРЕДЕЛЯЮТ НОМЕР БАНКИ ОЗУ, А БИТЫ SS1,SS0 ОПРЕДЕЛЯЮТ КАКОЙ
16-ТИ КИЛОБАЙТОВЫЙ УЧАСТОК ИЗ ЭТОЙ БАНКИ БУДЕТ ДОСТУПЕН ПО АДРЕСАМ 0-3FFF.
ДАННЫЕ, ЗАПИСАННЫЕ В ПОРТ, МОЖНО СЧИТАТЬ С ПОРТА FB (АЛЬТАИР,SUPER-3)
Порт FC - УПРАВЛЕНИЕ ТЕНЕВЫМ ПЗУ. НА ПЛАТАХ "СУПЕР-3" БИТОМ D7 ВКЛ-СЯ ТЕНЕВОЕ ПЗУ
Порт FD - Резерв адреса для двухбайтовых
адресов портов расширений "ZX".
Порт FE - В ЭМУЛЯТОРЕ "СИНКЛЕРА" ЗВУК И КЛАВИАТУРА (ПРОГРАМНЫЙ ЗВУК ПО БИТУ D4)
Порт FF - "ПРОГРАМНЫЙ КЛЮЧ" ДЛЯ ВЫВОДА ЗВУКА (ПЕРЕКЛЮЧАЕТСЯ ПО КАЖДОМУ ОБРАЩЕНИЮ)
Порты 0F8H...0FAH работают только на запись, в режиме "Orion-128" они доступны
также как ячейки памяти 0F800H, 0F900H, 0FA00H.
АДРЕСАЦИЯ ВНЕШНИХ УСТРОЙСТВ
В ОБЛАСТИ ПАМЯТИ (НЕДОСТУПНЫ В РЕЖИМЕ FULL RAM MEMORY):
F400..F403 - ППА КЛАВИАТУРЫ
F500..F503 - ППА ROM-Disk
F600..F603 - ППА Printer
F700/F720 - КОНТРОЛЛЕР ДИСКОВОДА (F720/D3,D6 - ПЛОТНОСТЬ ЗАПИСИ)
F760 ЧАСЫ 512ВИ1
Часы 512 ВИ1 потом поставим. Схему я тут уже публиковал - 4 ножки CPLD потребуется + собственно 512ВИ1 с обвязкой.
Порт ВВ55 предлагаю ставить только один - 0F600h (для компактности).
ПЗУ нужно планировать 32 ножек - flash 2xС010...2xC040 (128к...512к). На CPLD заводится всё (включая /WR) кроме старшего адресного разряда (адресуем только 256к + перемычка для ручного переключения "половинки" - защита от порчи). Пока делай как и планировал - ROM-disk, потом, если еще останется порох в пороховницах, сделаем 1к диспетчер на 256 страниц в окне 0FC00h..0FFFFh включаемый портом 0FCh.