Ошибка вышла :v2_dizzy_facepalm:
всего 768 байт
Вид для печати
Работает !!! :)
У меня реала нет, на реале тестировал Solegstar. У него все работало. И да загрузка с винта запускается из меню старта загрузки цпм. Единственный вариант. На Профике нет никаких вариантов доступа к винту из пзу, как и возможности возврата в сервис ром из озу. Потому загрузчик пашет из озу и при проблемах только сбросом можно вернуть пзу.
---------- Post added at 22:49 ---------- Previous post was at 22:47 ----------
Загрузчик интегрирован с прилагаемой дискеты, как с чем то другим будет не имею понятия.
ах! моя ошибка что я не попробовал нажать "загрузка системы", действительно все работает! :biggrin:
А это официальная прошивка 2.1 или просто любительский мод?
Кстати есть небольшой баг - после загрузки системы с моего загурзочного винта, профидос пытается читать дискету в дисководе, а в дисководе пусто - вываливается ошибка. Это проблема в моем образе винта или в загрузчике из пзу?
Гы, последняя официальная была версии 2.0. А это новая типо профессианальный мод ;)
Я на винт копировал с приложенного образа. Не замечал такого эффекта.
---------- Post added at 23:43 ---------- Previous post was at 23:41 ----------
Загрузчик это кусочек кода загружающий код системы и отдающий ему управление. Никак не может заглюкивать на дисковод тем более после запуска системы.
это по всей видимости так система у меня на винте настроена, посмотри плиз мой загрузочный винт (я выше образ выкладывал), что там нужно настроить чтобы он к A диску не обращался во время загрузки?
Вот такая ошибка при загрузке:
http://savepic.org/3519062.png
И еще - как можно редактор WRITE установить? После копирования на винт он почему-то отказывается запускаться... а чем текстовые файлы смотреть непонятно...
Вот рабочий образ винта с кучкой файлов, и write там рабочий. По крайне мере под анрылом пашет как часы и выше описанных глюков нет. В меню запущенной системы не пашет пункт 2. Остальное пашет. Параметры винта из анрыла:
Image0=profihdd.img
CHS0=100/16/63
LBA0=100800
В системе JAZZ, драйвер DIAMONDа для kempston mouse работает.
А как сохранить изменённый образ диска в ZXMAK2 :v2_conf2:
А с Drive B: ...
Спасибо,сохранение в формате .pro работает
с drive B только в udi.
ZXMAK, раз Байт уже отлажен, быть может самое время добавить эмуляцию Байта-01? ;)
---------- Post added at 21:30 ---------- Previous post was at 21:30 ----------
там есть весьма интресные фишки :)
Александр, а можешь еще один дисковый сериализатор добавить, qdi? Это формат кворумских дисков, поддерживаемый "ATM CP/M Explorer"-ом.
Исходник в аттаче. Там, правда, сплошной копипаст из ProSerializer - он от него отличается 4 строчками :)
Пример qdi диска вот - http://dl.dropboxusercontent.com/u/20289147/M80.QDI
Обновил до версии 2749:
- добавлена эмуляция загрузки шрифтов для пентевы
- добавлен формат дисков QDI
http://savepic.org/3548646.png
я бы с удовольствием, но у меня появились грандиозные планы насчет дебаггера, так что байт-01 как-нибудь потом. А может кто-то возьмется помочь ;)
Попробовал загрузить древнею систему 91г CP/M под монохромный Profi
не могу понять такое ощущение что система пишет в другую экранную область , на экране нечего невидно :confused:
в unreal speccy работает.
ошибка дешфирации порта DFFD, исправил - обновил до версии 2750:
- исправлена дешифрация порта DFFD для PROFI
- добавлен ромсет PROFI-HDDBOOT
http://savepic.org/3565881.png
Мелкий баг - в VMZ-модели Кворума не хватает девайса кемпстон-джойстика. Из-за этого в оболочке RUNIC мельтешит курсор - http://dl.dropboxusercontent.com/u/20289147/RUNIC03.QDI
И еще баг в эмуляции "Кворума" в обработке NMI:
1. Стартуем без дискеты. В начальном меню (на черном фоне) выбираем Basic 48
2. В меню бейсика-48 выбираем Restart
3. Жмем NMI
...и ничего не происходит.
На реале происходит возврат в меню бейсика-48.
В MemoryQuorum256.cs есть такой код
если его закомментировать, то меню по NMI появляется. Однако вернутся назад в бейсик из него не выходит - всё виснет.Код:protected virtual void BusNmiRq(BusCancelArgs e)
{
e.Cancel = (m_cpu.regs.PC&0xC000) == 0;
}
MagOS почему то не видит мыши. В других программах в скорпионе таких проблем нет.
http://i.imgur.com/tQtynyf.png
информации как обрабатывается NMI на кворуме у меня нет. Указанная проверка разрешает NMI только при выполнении кода в озу. С ней все вроде корректно работает. Если точно на риале в 48 бейсике NMI срабатывает, то нужно узнать что в нем происходит одновременно с подачей сигнала NMI на процессор
---------- Post added at 01:58 ---------- Previous post was at 01:24 ----------
перед загрузкой MagOS мышку захвати (двойной клик по окну) и покрути, чтобы у мыши не нулевые значения получились. Просто дефолтные нули магос воспринимает как отсутствие мыши :)
Наличие мыши он проверяет в момент перед появлением надписи "system istalled press any key"
Точно срабатывает.
Вот тут лежит самый первый эмулятор Кворума, он правильно работает. В современном Unreal по NMI лишь зависание, меню не появляется.
Там глубже, там идет хитрая проверка (с #02FD в сервисной странице ПЗУ): пишется число в #0000, а потом читается из #C000, если не совпало - идет переход еще на какую-то логику. Подразумевается, что в этот момент в качестве теневого ОЗУ подключена 0-я страница, и она же впечатана в окно с #C000.
Я добился такого же поведения (грубо - MapWrite0000 = RamPages[ramPage0000]; безо всяких условий), но оно все равно виснет, хотя теперь выходит из обработчика NMI с верными регистрами и страницами.
тут проблема в том что при выполнении меню Restart между двумя точками pc=#02F8 и pc=#004e в унриале в порту 7ffd оказывается #17, а в ZXMAK #10. Вначале подумал блокировка не дает записать значение в #7FFD, проверил - в ZXMAK2 в этот промежуток вообще нет обращений к порту #7FFD...
Кстати если поставить брейкпоинт на #0000, после выполнения меню Restart вывалившись на точке останова прописать в CMR0 значение #17, вместо #10 (окно Memory Map), то в ZXMAK2 NMI работает нормально - возвращается без проблем, как и в унрилкворуме. Т.е. проблема с портом #7FFD.
Теперь нужно отловить, где между точками pc=#02F8 и pc=#004e происходит запись значения #17 в порт #7ffd
---------- Post added at 22:40 ---------- Previous post was at 22:25 ----------
не, тут все хитрее - в этот момент подключено обычное пзу, а в окно #C000 замаплена нулевая страница, но в унрилкворуме при записи в нулевую ячейку, запись происходит в 0-ю страницу, а в пзу значение остается страрым...
Странное поведение, почему при записи в пзу происходит запись в нулевую страницу? :v2_conf2:
предположил что запись в 0-ю страницу при выключенном бите blkwr работает всегда, попробовал так:
в этом случае при Restart бейсик запускается с 7 страницей, но при выходе из из NMI зависает...Код:MapWrite0000 = !blkwr ? RamPages[ramPage0000] : m_trashPage;
хм, тогда правильно так:
и действительно - вход в бейсик так получается с правильными страницами, но выход из NMI всеравно не работаетКод:MapWrite0000 = !blkwr ? RamPages[ramPage0000] : m_trashPage;
а описание хардварной части кворума где-то можно найти?
---------- Post added at 23:40 ---------- Previous post was at 23:00 ----------
На данный момент удалось заставить возвращаться из NMI, вот такой доработкой:
плюс вышеупомянутая доработка UpdateMapping, для разрешения записи в кэш при замапленом пзу:Код:protected virtual void BusNmiRq(BusCancelArgs e)
{
e.Cancel = (m_cpu.regs.PC&0xC000) == 0 &&
m_cpu.regs.PC!=0x0038;
}
Код:MapWrite0000 = !blkwr ? RamPages[ramPage0000] : m_trashPage;
правда есть большие сомнения насчет проверки pc на 0x0038 в аппаратной реализации :)
В модели QOURUM оказалось было еще пара ошибок маппинга страниц пзу, исправил.
Проблему с NMI это не решило, как выяснилось после выхода не включаются прерывания. Более того, как выяснилось, выход в унриалкворум работает только если NMI сработал вначале кадра. Т.е. если по шагам нащелкать N-ое число тактов, подальше от 0, а затем нажать альт-ф11, то будет та-же самая проблема - прерывания при выходе запрещены.
Проанализировав как это сейчас работает, я пришел к выводу что работает это только из расчета что NMI будет формироваться когда активны INT и M1, т.е. когда началось выполнение обработчика прерывания - обработчик при выходе разрешит их.
Собственно эту модель NMI и реализовал. Т.е. теперь NMI срабатывает когда активны INT и M1. Теперь выход из NMI в кворуме работает также как в унриалкворум и даже надежнее - NMI можно вызывать на любом такте кадра :)
---------- Post added at 02:59 ---------- Previous post was at 02:57 ----------
Готово
---------- Post added at 03:16 ---------- Previous post was at 02:59 ----------
Обновил эмулятор до версии 2751:
- исправлен менеджер памяти QUORUM
- исправлена логика обработки NMI у QUORUM
- при запуске устанавливается начальное положение мыши отличное от нуля
http://savepic.org/3562669.png
Офигенно! Спасибо!
На реале, правда, к INT привязки нет:
https://dl.dropboxusercontent.com/u/...uorum-nmi1.png
К M1 есть:
https://dl.dropboxusercontent.com/u/...uorum-nmi2.png
Схема получения NMI (K.NMI и K.RES - сигналы с клавиатуры):
https://dl.dropboxusercontent.com/u/...uorum-nmi3.png
PS Возможно, используемое в эмуляторе ПЗУ 4.2 1997го года ставилось на какие-нибудь доработанные версии. Я попробую считать свою прошивку 3.5 94го и сравнить.