![]() |
Ты бомби так так что-бы у этотого Пента не пострадала совместимость!
---------- Post added at 12:48 ---------- Previous post was at 12:43 ---------- Кстати Northwood, было-бы такое щастье если-бы после воплощения в жизнь всех этих доработок, ты развел и пустил в производство "новую" печатную плату под ATX(опять-же на рассыпухе)на борту которой уже были-бы навороты типа 4 метра RAM,GS,SounDrive,IDE,PS2Keyb/Mouse... И обозвать её не "Pentagon", а "Samogon" .... "GMX-2" или просто "Turbina"????? Я-бы наверное самый первый записался!!! :v2_rolley |
Quote:
В глюк выходит программно из модифицированной прошивки BASIC 128, глюк работает не из ПЗУ а из ОЗУ он туда при старте распаковывается. Даже больше эта прошивка знает о том как ограничивать 48к и 128к памяти в пне 1.4. Не стоит все ломать |
Quote:
В крайнем случае в 0-ю странице должно быть несколько байт кода, которые бы выключали 0-ю страницу ПЗУ и обеспечивали нормальный старт в Меню-128, например: DI LD HL,jump LD DE,#4000 LD BC,#0003 LDIR JP #4000 jump: JP #0000 Если нужно чтобы компьютер мог стартовать вообще без какого-либо кода в 0-й странице ПЗУ, но при этом запускал GLUK по нажатию какой-либо клавиши, то без модификации обоих прошивок не обойтись, при этом аппаратная доработка будет не нужна, и управление 0-й страницей ПЗУ будет только через порт #1FFD. Quote:
Предполагаемые функции BIOS: При старте: Обязательная проверка исправности портов ОЗУ в пределах 128Кб с выводом на экран инфы, что именно не исправно. При тестировании будет записано по 1 байту в каждую из 8 страниц, при этом для сохранности данных в ОЗУ, эти 8 байт данных будут временно скопированы в CMOS. Обязательная краткая проверка доступности всех портов расширения ОЗУ - #7FFD (512Кб), #DFFD и #FDFD (1Мб), #1FFD+#7FFD (1Мб, то что реализовано сейчас), при тестировании будут проверяться только по 1-й странице из каждой 128-Кбайтной линейки ОЗУ, т.е. опять будет задействовано не более 8 байт ОЗУ, которые так же будут временно скопированы в CMOS для сохранности данных. Все результаты тестирования будут храниться в регистрах процессора в сжатом виде. Далее будет проверка наличия сохранённой конфигурации BIOS в CMOS путём простейшего подсчёта CRC. Если настроек нету (например вынимали батарейку), то, будет запуск быстрого полного теста ОЗУ с предложением зайти в BIOS-Setup, При запуске быстрого полного теста ОЗУ, будет полное тестирование всех портов расширения ОЗУ (проверяться будут уже все страницы ОЗУ), проверка пересечения областей (#4000 = 5 страница, #8000 = 2 страница), и тестирование исправности самого ОЗУ с его полным обнулением. После полного теста ОЗУ будет выведено предложение зайти в BIOS-Setup либо продолжить работу в базовой конфигурации (доступно будет только 128Кб ОЗУ). Если же в CMOSе оказались настройки конфигурации и CRC данных в CMOS совпало, то будет опрошена клавиша "2" или "D" (на случай, если пользователю нужно принудительно зайти в BIOS-Setup, как с обнулением, так и без обнуления ОЗУ). Если пользователь никаких клавиш не нажал и все настройки BIOS в целости и сохранности, то будет нормальный старт компьютера в соответствии с выбранной конфигурацией. BIOS-Setup: Будет содержать несколько пунктов меню: Установка текущего времени. Конфигурация ОЗУ: 1 - только 128Кб 2 - порт #7FFD - 512Кб 3 - порты #DFFD и #FDFD - 1024Кб 4 - порты #1FFD + #7FFD - 1024Кб (то что реализовано сейчас) Конфигурация эмуляции ПЗУ: 1 - включить эмуляцию страницы ПЗУ "GLUK" 2 - включить эмуляцию страницы ПЗУ "TR-DOS 3 - включить эмуляцию страницы ПЗУ "BASIC-128" 4 - включить эмуляцию страницы ПЗУ "BASIC-48" Однако в этом случае я планирую поддержку именно пентагоновскую версию GLUK, т.е. управление НЕ через порт #1FFD. Конфигурация RESET: (куда выходить по нажатию RESET) 1 - Меню-128 2 - Бейсик-48 3 - TR-DOS 4 - GLUK 5 - загрузка коммандера с HDD. Более тщательный ТЕСТ ОЗУ (с проверкой регенерации). ---------- Post added at 14:16 ---------- Previous post was at 14:12 ---------- Quote:
|
Quote:
|
1 Attachment(s)
Решил попробовать собрать пару доработок(порт #FD и Пентагоновский INT) на отдельной платке!
По закону подлости немогу опустить плату чуть ниже из-за транзисторного флешера. В связи с этим вопрос по включению дополнительной ИЕ10: Quote:
|
Quote:
1-й проводок - сигнал "KSI" (с DD12.2 выв.6) надо подать на выв.2 ИЕ10 (вход флешера). 2-й проводок - выв.11 ИЕ10 надо соединить туда, где был коллектор транзистора VT2, т.е. на вход элемента DD34.3. А можно даже отрезать выход DD34.3, выход флешера в этом случае нужно подать на DD34.4 на выв.12, тогда на плате освободится ещё один лишний элемент И-НЕ. Конденсатор на макетном поле рядом с ИЕ10 можно вообще не ставить, это самый обычный блокировочный конденсатор на 0.1 мкф, его нужно туда поставить чисто из идеологических соображений - помех по питанию микросхем просто не должно быть, но из практических, он там не обязателен, потому что если на этой ИЕ10 и будут помехи по питанию, то на работе компьютера это никак не отразится. |
Quote:
Quote:
|
Хочу вернуться к теме доработки порта #FD.
В этом сообщении я опубликовал схему доработки порта #FD, взятую из журнала Инферно из 9 номера, и привёл модернизацию этой схемы. Но недавно John North подкинул мне ссылку на другую схему доработки портов расширения памяти, тоже из журнала Инферно, но из 2-го номера. http://www.zxpress.ru/article.php?id=10296 Данная идея из Инферно-2 просто потрясающая: При выполнении программы, когда попадается команда 'OUT (#FD),A' или 'IN A,(#FD)', тут же включается блокировка, которая блокирует порт #1FFD и заодно включает мягкую дешифрацию порта #7FFD, превращая его в порт #FD. Как только попадается любая другая команда, блокировка отключается. Это ставит жирную точку в вопросе несовместимости программ, использующих укороченную адресацию к порту #FD с помощью команд 'OUT (#FD),A' и 'IN A,(#FD), и при этом избавляет от необходимости блокировать верхнюю память! Во-вторых, с некоторой адаптацией эта доработка подходит абсолютно к любому компьютеру Спектрум, имеющим больше 128 Кб ОЗУ. Я адаптировал эту схему под Пентагон-1024 1.4i, при этом использовал часть из старой схемы, а именно 2 логических элемента ЛЛ1 и ЛИ1, которые переключают жёсткость дешифрации порта '7FFD/FD'. Триггер ТМ2, который в старой схеме задерживал сигнал блокировки, в этот раз переквалифицируется на другую задачу - на включение режима блокировки на время выполнения команд OUT (nn), A и IN A, (nn). Так же добавляется новая микросхема - 1533ЛА2, два инвертора и 1 элемент ЛЛ1. В принципе новую схему можно применить и совместно с доработкой порта #FD из Инферно-9, но я буду описывать подключение новой схемы совместно с моим вариантом старой доработки порта #FD. http://s017.radikal.ru/i411/1112/fd/a1dd497f8d1bt.jpg 1. На плате Пентагона-1024 необходимо отрезать дорожку идущую на выв. 9 DD11.3 (ЛЕ1), т.е. отрезать от неё сигнал BLKR, завести этот сигнал на новую схему доработки, а на выв.9 DD11.3 подать сигнал BLKR_NEW с новой схемы. Если у вас уже сделана доработка порта #FD по схеме из журнала Инферно-9, то 1-й пункт можно пропустить, а вместе с ним и исключить новый логический элемент ЛЛ1, через который проходит сигнал BLKR. 2. Если вы ещё не делали доработку порта #FD ни по какой из старых схем, то нужно ещё отрезать выв.2 DD25.1 (ЛЕ1) и подать туда сигнал 'FD/7FFD' со схемы доработки. Всё остальное собираем по новой схеме. Теперь не нужно заходить в Basic-128 и набирать команду OUT 8189,32 для того чтобы работали такие программы как Инсульт-мегадемо, и когда дело дойдёт до использования RAM-диска, эта доработка единственная, которая позволит с него запускать подобные программы. Теперь из протестированных программ без отключения верхней памяти, с этой доработкой: Инсульт-мегадемо - идёт на ура без блокировки порта #1FFD ! Test Horror: Обратите внимание на совокупность порта верхней памяти #1FFD и доступности порта #FD: http://s017.radikal.ru/i441/1112/49/4e0cbd8a1613t.jpg Test 4.30 http://s42.radikal.ru/i096/1112/3d/e0a5dbe605f5t.jpg http://s017.radikal.ru/i438/1112/d4/a2199d0387b2t.jpg RamDoctor 2.0 - уже не зависает и не сбрасывается в самом начале работы, но так и не обнаруживает доступность порта #FD и при тестировании 2-экрана на экран выдаёт цветной коврик, однако при нажатии на любую клавишу продолжает дальше нормально работать. Мне пришлось немного поломать RamDoctor (извини, Тятин Сергей, но мне пришлось), и всё дело оказалось в двух ошибках программы: 1 - перед тестированием порта #FD, автор программы забыл в регистровую пару BC записать число #7FFD, при этом в BC содержится #0000, после чего идёт сам тест #FD: LD A,#10 OUT (C),A INC A OUT (#FD),A CP (HL). В результате ошибки число #10 вместо порта #7FFD пытается отправится в порт #0000, но т.к. дешифрация порта #7FFD у нас жёсткая, то порт просто не срабатывает и тест проваливается. Я добавил перед началом тестирования порта #FD одну команду LD BC,#7FFD, и теперь тест #FD проходит - 'порт доступен'. 2. После окончания тестирования памяти, остаётся включенной самая последняя страница ОЗУ, при которой в порту #1FFD записано число #10. Автор программы забыл выключить назад порт #1FFD и при этом пытается скопировать основной экран в дополнительный, и естественно, вместо 7-й страницы всё это попадает в 15-ю, а 7-я страница продолжает содержать 'коврик', оставшийся после тестирования ОЗУ, который мы и видим на экране. Для исправления ошибки, после окончания тестирования ОЗУ нужно снова вызвать подпрограмму переключения страниц ОЗУ для включения 0-й страницы. После исправления этих двух ошибок в RamDoctor-е, получаем следующий результат: http://i025.radikal.ru/1112/b0/730706fb4c74t.jpg 3. STS 3.3. Теперь эта версия монитора-отладчика запускается без блокировки порта #1FFD, однако почему-то зависает при дисковых операциях. Если всё-таки #1FFD заблокировать командой OUT 8189,32, то STS 3.3 работает полностью нормально. С данной программой пока ещё не разбирался. Но пока что ещё не реализованы 2 вещи: Переключение жёсткая / мягкая дешифрация для чтения из порта #FD. Переключение жёсткая / мягкая дешифрация для AY. Пока под вопросом, нужно ли это делать ? |
Northwood, А сигнал D3 не учавствует? http://s017.radikal.ru/i411/1112/fd/a1dd497f8d1b.gif
|
Quote:
код команды OUT (nn),A - #D3 (1101 0011) а код команды IN A,(#FD) - #DB (1101 1011) как видишь, отличаются обе эти команды как раз 3-м битом, поэтому он и не заводится на схему, для того чтобы распознавать сразу обе команды. |
| All times are GMT +4. The time now is 18:34. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.