А пользователь Black Cat тоже решил приобрести себе комплект плат, чтобы проверить на практике свои теоретические наработки?
Вид для печати
Сомневаюсь, скорей всего нет, чем да. Но часть его советов были действительно полезные.
Но были и другие советы, которые я поставил под сомнение:
1) Порт Кемпстон джойстика сделать адресом #DF вместо #1F, но дешифрацию сделать упрощённую, чтобы откликался и на #DF, и на #1F, а для разделения его с Кемпстон мышью, использовать ловушку обращения к порту по короткой адресации, которая в схеме уже есть: при In A,(#DF) чтобы откликался джойстик, а при In A,(BC) - мышка. Цель - доступность джойстика при открытых портах TR-DOS. (Сомнительно).
2) Отказаться от индивидуальных адресов портов BIOS #xx37 и заменить их на #xxF7 с целью упрощения схемы дешифрации портов. Упрощение в реальности получится аж на 1 логический элемент ИЛИ, но самое главное, я считаю, что порты BIOS должны быть полностью независимыми от всех известных портов ZX-Spectrum, поэтому данный совет я отбросил категорически.
3) Отказаться от слота (папа) шины ZX-BUS +3 , заменив его на краевой слот (тоже папа) NemoBus, запаралелив его с мастер-слотом NemoBus, как на Фениксе. (Сомнительно).
4) Переместить слот ISA - модема вверх таким образом, чтобы в верхний слот NemoBus можно было воткнуть расширитель шины NemoBus. Здесь есть несколько препятствий:
а) материнская плата будет стоять в вертикальном корпусе ATX, и за счёт чего вся эта конструкция должна держаться, он так и не объяснил, хотя я несколько раз повторил этот вопрос;
б) по одну сторону от верхнего слота NemoBus будет верхняя плата, это неизбежно, а по другую сторону - другие карты расширения, воткнутые в остальные слоты NemoBus. Каким образом вся эта ёлка должна разделять общее пространство с другими платами, и как при этом собрать корпус ATX, осталось загадкой. Поэтому тоже сомнительно.
В плату войдёт новый полностью переделанный менеджер памяти 4 МБ. Вот его схема:
https://i.ibb.co/kMR62FZ/Memory-Controller.png
Кардинальное отличие его в том, что в старом нужно было через BIOS переключать стандарты расширения памяти, можно было их комбинировать между собой, было доступно 16 комбинаций для 3-х портов: #1FFD, #7FFD и #DFFD. Мультиплексирование было сделано после регистров портов.
В новой схеме переключение стандартов не нужно делать вообще, при этом доступны те же 3 порта расширения: #1FFD, #7FFD и #DFFD. Мультиплексирование сделано перед триггерами расширения ОЗУ.
Доступные конфигурации:
Pentagon-512: #7FFD, биты 6, 7 (5-й бит выполняет стандартную блокировку всех портов расширения памяти, превращая компьютер в 48-й);
Pentagon-1024: #7FFD, биты 6, 7, 5;
Profi-1024: #DFFD, биты 0, 1, 2;
Kay-1024: #1FFD бит 4, #7FFD бит 7, #1FFD бит 7;
Phoenix-2048: #1FFD бит 4, #7FFD бит 7, #1FFD биты 6, 7;
Pentagon-4096: #1FFD бит 4, #7FFD бит 7, #1FFD биты 6, 7, 5.
Т.к. из BIOS-а ушло управление конфигурацией памяти и осталась опция "включение блокировки #7FFD бит 5", то было целесообразно перенести все опции блокировок на порт BIOS #FC37.
Новое назначение портов BIOS:
#FC37 - Управление блокировками:
бит 0 - включение запрета записи в микросхему CMOS;
бит 1 - включение блокировки шины ZX-Bus+3, если включен стандартный режим;
бит 2 - включение блокировки шины NemoBus, если включен режим +3;
бит 3 - назначение бита 5 #7FFD: 0 = расширение памяти, 1 = блокировка всех портов (48-й режим);
бит 4 - запрет переключения портов BIOS #FC37 и #FD37 (защита конфигурации BIOS от вмешательства);
бит 5 - резерв;
бит 6 - включение режима записи Флеш-ПЗУ;
бит 7 - включение режима +3.
#FD37 - Управление теневым ОЗУ (без изменений)
#FE37 - Расширение видеорежимов (без изменений)
#FF37 - Управление ПЗУ:
бит 0 - 0 = ПЗУ BIOS, 1 = ПЗУ Спектрум;
бит 1 - сброс триггера Gluk Reset Service;
бит 2 - номер страницы ПЗУ BIOS;
бит 3 - резерв;
бит 4 - резерв;
бит 5 - резерв;
бит 6 - резерв;
бит 7 - резерв.
Так же из схемы удалил менеджер памяти +3, который используется только в ОС CP/M+3, которым всё-равно не получилось бы воспользоваться за неимением контроллера дисковода +3. Для DivIDE этот менеджер памяти не нужен.
Полная принципиальная схема после внесённых изменений:
https://i.ibb.co/9gqCT00/Main-Board-v8-0-sch.png
Ты не верно понял. Самые первые 2 варианта в списке описывают 6 и 7 биты порта #7FFD.
Страницы памяти в пределах 1 МБ можно выбирать по любому из трёх стандартов одновременно без никаких дополнительных переключений - Пентагон-512/1024, Профи-1024 и Кай-1024.
Причём, всё это доступно как при установленном модуле памяти 4 МБ, так и 1 МБ.
При установленном модуле памяти 4 МБ доступны два дополнительные бита 6 и 5 порта #1FFD, дополнительно становится доступным конфигурация Scorpion-1024, а так же Phoenix-2048, а так же все 4 МБ.
Но здесь нельзя комбинировать Пентагон-512 + Профи-1024.
Но может лучше вернуть как было - выбор конфигурации памяти через BIOS ? Там можно было делать любые комбинации, но в каждый момент времени доступна только одна из них.
лучше оставить как сейчас - имхо
Northwood, предыдущий менеджер памяти ведь проверен на практике в твоём Пентагоне?
Я за то, чтобы встраивать в новую плату только проверенные на практике доработки.
Предыдущий менеджер памяти в более простом виде работал у меня в предыдущем компьютере - Pentagon-128, расширенном до 1 МБ, и то без возможности комбинирования нескольких портов. В нём можно было через BIOS Setup выбирать только 1 из 3-х доступных портов - #7FFD, #DFFD/#FDFD и #1FFD.
Собирать ещё какие-то доработки в моём Пентагоне-1024 1.4, расширенном до 4МБ и с кучей бутербродов из микросхем и с паутиной МГТФ, уже практически нереально. Данный узел схемы не представляет какой-нибудь сложности, поэтому я знаю, что он заработает.
Кстати, переделал дешифрацию портов #7FFD, #DFFD, #1FFD, #BFFD и #FFFD по замечаниям, высказанным по поводу работоспособности некоторых музыкальных треккеров, использующих программирование AY через OUT (#FD),A:
Дешифрация портов #7FFD, #BFFD и #FFFD в старшем байте отныне сделана не по трём разрядам A13, A14 и A15, а только по двум - A14 и A15. При обращении к порту #7FFD через OUT (#FD),A, дешифрация #7FFD переводится на более мягкую - в старшем байте только по одному разряду A15.
Дешифрация портов #DFFD и #1FFD в старшем байте отныне сделана не по трём разрядам A13, A14 и A15, а по четырём - A12, A13, A14 и A15. При обращении непосредственно к порту #DFFD, порты AY блокируются.
Кроме этого, изменил назначение битов порта #1FFD:
бит 0 - включение ОЗУ в окно CPU0 (#0000-#3FFF) остаётся неизменным;
бит 1 - отныне безусловное включение 0-й страницы ПЗУ, как в Scorpion ZS-256. Раньше это было на 3-м бите, как было сделано КоЕ в Пентагоне-1024 1.4 по его личному хотению;
бит 2 - тоже без изменений - в режиме "+3" переключает страницы ПЗУ, а в стандартном режиме не производит никаких действий;
бит 3 - отныне инвертирует адресный разряд ПЗУ A15 - как в KAY-1024, но при условии, что не включена безусловно 0-я страница ПЗУ. Раньше безусловно включал 0-ю страницу ПЗУ;
бит 4 - расширение ОЗУ до 256 КБ;
бит 5 - расширение ОЗУ до 4 МБ;
бит 6 - расширение ОЗУ до 2 МБ;
бит 7 - расширение ОЗУ до 1 МБ.
https://i.ibb.co/dBqfK51/Main-Board-v8-0-sch-ps.png
Northwood, а какими битами щелкается память пентагон 512?
Я так и не нашел описания
закидывал по стандарту пентагон 1024 с отбрасыванием старшего бита
но в унриалах это не работало
дальше 8-й страницы не включалось
Конечно же битами 6 и 7, это стандарт. Отбрасывать нужно 5-й бит, потому что на всех компьютерах это бит блокировки верхней памяти, после включения которого ты остаёшься с 48 КБ памяти. Unreal Speccy поддерживает этот стандарт, по крайней мере те версии, которые были у меня до смерти жёсткого диска. Только в Unreale в конфиге нужно выставить тип верхней памяти Pentagon 1024.