Ессесьтвенно. В соседнем топике фото с предполагаемой ПЗУ :)
Вид для печати
Вроде привел прошивку в порядок. Замечены "типа случайные" порчи данных на CF. Может, потому и попытки записи напрочь убивали партиции? :(
Придется повнимательней поковырять моменты работы с ВВшкой F600.
Да, новая. И прошивка новая.
Статистика показывает, что косяки главным образом в тот момент, когда Интером подтверждаю, что время и дата мне по барабану и должна продолжиться загрузка ДОС. Тут всё может зависнуть, или вывалиться промт ОС, или наконец пройти далее нормально с загрузкой Нортона. После десятка загрузок приходится заново заливать образ винта на флешку.
Полазил по функциям (hardware) работы с ВВ55. Ничего предосудительного не нашел, всё в принципе такое же, как и при работе с памятью. А с памятью проблем с записью/считыванием нет.
Error404, не помню, ты вроде говорил что с F600 драйвера работают только как с ячейками памяти, т.е. IN/OUT (F6) не применяется?
В этот самый момент портом 0FBh аппаратно производится включение прерываний (т.е. импульсы начинают подаваться на ножку ЦПУ), до этого они всю дорогу аппаратно выключены. Вне зависимости от этого в коде ДОС (как до так и после) при обращении к IDE делается программное выключение прерываний: DI/EI. Сейчас еще раз убедился - проверил исходник. Не знаю в чем может быть дело, попробую воспроизвести на эмуляторе (реал сдох).
Да, только операции с памятью - STA\LDA (LD в нотации Z80)
Сравнивая работу с эмулятором, обнаружил что порт FB у тебя рулится только командой OUT (FB). Так и должно быть?
Обнаружил ошибку в коде. У меня не блокировалась запись в порты F8 - FB при включенной фулраме по LD (xxxx),x.
Заработали все прочие игрушки, включая любимых Диззей :)
С винчестером всё по старому.
Error404, а если использовать вместо ВВ55 обычные АП6?
Порты F6 как работают (в смысле, какие на ввод, какие на вывод данных)?
АП6 не получится, надо ставить три 8-разрядных регистра (т.е. с памятью записанного значения) и Z-состоянием. Для порта где еще висит ЛН1 регистр однонаправленный (данные идут от компа в IDE), на два остальных порта - двунаправленные регистры (данные идут в обе стороны).
-
Вообще все ОЧЕНЬ странно. У меня реал сейчас работает в среднем 1-2 минуты (пока там что-то не прогреется), затем виснет и надо ждать пару часов (чинить пока не начинал, но явно виснет не из-за IDE). Так вот мне ни разу не удалось "встрять" после ввода (или неввода) времени. Всегда все загружается нормально, иногда даже игруху успеваю загрузить (опять же прочитать с IDE) и запустить. Тут везде только чтение, запись если принудительно не запускалась (например, в NC), нигде не вызывается.
-
Вот еще что подумалось: что у тебя происходит в прошивке, если идут обращения по LD в область F700..F7FF? Драйвер консоли (а это именно он при старте запрашивает время и включает прерывания) в том числе и работает с 512ВИ1 (не важно есть она или нет - в эти порты он при старте ломится), а она висит на адресах F760,F761.
---------- Post added at 16:12 ---------- Previous post was at 15:54 ----------
-
А с быстродейсвием клавиатуры в FPGA решилось что-нибудь? Теперь срабатывает пропуск теста памяти при старте ДОС (п.п. Монитора KeyStatus)? Игруха Crazy Cars работает (crcars#.com)? Там тоже порт опрашивается не более чем за за 10 тактов CPU - конструкцией
LD (F400),A
LD A,(F401)
Ясно, думаем дальше...
Да, работает нормально.
Работает. Чем было вызвано несрабатывание - осталось загадкой.
Тут такое дело. Клавиатура работает, даже вроде как нормально. Даже несмотря на низкий клок (20 вместо 40Мгц). Я поначалу изменял константы для таймеров чтения клавиатуры, но потом вернул всё на место, ибо и так тоже работает. Заодно получилась поддержка ооочень старых клавиатур с доисторическими скоростями :)
Но во многих игрушках приходится изрядно "потыкаться" чтобы проскочить начальное меню. Вероятно, это связано с попытками программ определить что за клава подключена? К примеру - Диззи, Крези Кар, Эксолон, Кибер2...
---------- Post added at 18:17 ---------- Previous post was at 18:14 ----------
Это попадает в облась "portsel", но драйвера для области F7 нет. Это значит, что на шину данных идут данные (при WR='0'), адрес тоже выводится наружу, сигналы WR и RD также снаружи. Но все "селекты" не активны. Т.е. ОЗУ, ПЗУ, порт винта не получают сигнала выборки.
---------- Post added at 18:23 ---------- Previous post was at 18:17 ----------
Error404, у тебя инет быстрый? Просто я мог бы выложить видео с работой компа при запуске ДОС.