|
|
Феликс выпустил бету 12 эмулятора UKNCBTL. На этот раз сделаны правильные тайминги команд процессора. В результате, можно играть в Замок Гоблинов -- с музыкой и нормальной скоростью. http://ukncbtl.googlecode.com/files/UKNCBTL-beta12.zipUPD: В ходе реализации звука возникла ошибка в работе эмуляции дисковода -- исправим в следующем выпуске.
Из-за досадной ошибки с аплоадами на Google Code, релиз отложился почти на неделю :( Саппорт гугла молчит, но к счастью, сегодня наконец-то удалось найти workaround... Данный выпуск это чистой воды maintenance release, ничего революционного тут нет. В основном, исправление регрессии и мелкие фиксы. Крайне рекомендуется к использованию вместо beta 10. http://ukncbtl.googlecode.com/files/UKNCBTL-beta11.zip
Поимел первый опыт скринкастинга (вроде бы так называется) — снятия видеопотока с экрана. Установил CamStudio, поставил кодек не дающий искажений, запустил эмулятор, запустил съёмку, несколько пассов руками, остановил съёмку, запустил VirtualDub, вырезал лишнее, уменьшил fps и перекодировал в XviD. То что получилось загрузил сюда: http://vkontakte.ru/video3831786_68780940Сильно не бейте, это действительно первая попытка сильно кривыми трясущимися руками... UPD: Ну и на ютуб заодно закинул для интереса.
Собрал и выложил beta 10. Что нового: * Issue 1: CFloppy: Объединить четыре CFloppy в один класс * Issue 12: beta9: Не загружается кассетный Бейсик * Issue 9: rt11dsk: возможность добавления файлов (реализовано, но с рядом ограничений, см. предыдущий пост) http://ukncbtl.googlecode.com/files/UKNCBTL-beta10.zipUPD: Появился мелкий баг, связанный с выбором диска мышью щелчком на таскбаре. Выбирайте пока через меню...
В общем-то написал для утилиты rt11dsk добавление файла в образ диска. Неожиданно выплыл порядочный объём работы: до этого образ диска по использовался только read-only. Пришлось выделять работу с образом, делать сохранение изменённой дорожки, сделать разбор сегментов каталога обратимым итп. Ограничения: 1. Имя помещаемого файла должно быть в формате 6+3. 2. Если нет непрерывного свободного блока нужной длины, то извините. 3. Если сегмент в котором найдено подходящее пустое место не имеет свободных записей, то извините. 4. Контроль ошибок чтения/записи пока очень слабый. Реализовано, но ещё не выкладывал. Постараюсь потестировать и выложить в ближайшее время. http://code.google.com/p/ukncbtl/issues/detail?id=9
Ну что же, вот и настал момент когда эмулятор УКНЦ становится проектом с открытым исходным кодом. Не то чтобы это был такой уж красивый код, но... http://code.google.com/p/ukncbtl/Одновременно с этим выходит beta-9. Поскольку все исправления этой версии сделаны Alex_K, привожу его комментарий без купюр: Подправлены многие ошибки, но многие еще остались. Устранена потеря VIRQ (из-за этого и зависала клавиатура), сделано прерывание 024 ЦП (разряд 15 порта 177716), устранена ошибка чтения/записи слова по нечетному адресу в ПП и еще кое-чего... Теперь нормально работает Турбо-Бейсик.http://ukncbtl.googlecode.com/files/UKNCBTL-beta9.zip
По просьбам трудящихся — опция уменьшения скорости до (примерно) 25 fps, т.е. до скорости реального УКНЦ. Тут стоить напомнить, что пока у нас каждая команда процессора занимает один такт, поэтому рельно скорость эмулятора всё равно будет выше реальной. http://3do-scene.com/nzeemin/UKNCBTL-beta7-exe.zipUPD 2008-02-03: Обнаружили, что каждая команда процессора сейчас занимает 9 тактов. А запаса по скорости-то и нету 8-(
Выношу из комментов, поскольку часто задаваемый вопрос.  Ставите эмулятор UKNCBTL. Загружаетесь с DISK2.DSK (образ лежит в папке disks). Вводите KINGOM. P.S. На УКНЦ игра попала скорее всего с ДВК. Была также реализация для ZX-Spectrum. P.P.S. Кстати, поиск выдаёт, что в Эйфорию рубились ещё на БЭСМ-6, во как… UPD: Сорри, оказывается в инсталлятор эмулятора DISK2 не попал. Сорри. http://3do-scene.com/nzeemin/disks/disks2.zip
Долгожданный момент — в эмуляторе заработала запись на диск. Ради этого пришлось перетряхнуть буквально всё что связано с дисковой подсистемой. Огромная благодарность Алексею Кислому за написание грамотного описания дискового контроллера, консультации по нюансам его работы, а также тестирование на завершающей стадии работ, в общем — респект. Сколько бы я провозился без этой помощи — даже не представляю. Кроме того, появилась опция Emulator|Autostart — чтобы не жать каждый раз Play для запуска эмулятора. Некоторый регресс: звук пока отключен, ибо толком не работал; Бейсик из картриджа ПЗУ перестал работать — видимо, результат моих боданий с окном памяти. ВНИМАНИЕ: Функция записи на диск только что появилась, вероятно наличие мелких и крупных ошибок. Ценные для вас образы дисков защищайте флагом read-only (в эмуляторе это рассматривается как защищённая от записи дискета), либо делайте резервные копии. http://3do-scene.com/nzeemin/UKNCBTL-beta6.ziphttp://3do-scene.com/nzeemin/UKNCBTL-beta6-exe.zip
Нахожусь в процессе отладки записи на диск. Оказалось всё не так просто, но сильно помог Alex_K, составив грамотное описание поведения интерфейса дисковода. В общем-то вся логика уже описана, остались какие-то мелочи, которые всё портят. То пара байтиков недописывается, то читаются откуда-то лишние байтики. Форматирование диска утилитой TESTMZ отрабатывает, но на диск записываются нули 8-( Зато при загрузке образа sys1002.dsk выбранная дата правильно записывается в файлик DATE.XXX — там всего один сектор изменяется. Оказалась нужна опция Autostart — для запуска эмулятора сразу при открытии программы. Видимо, сделаю в ближайшее время. Ещё есть мысль сделать команду создания «пустой дискеты» — пустого .dsk-файла нужной длины. Да, ещё переделал основной цикл работы эмулятора — теперь у нас более реалистичная скорость работы одних устройств относительно других, исходя из следующих соотношений: Каждый фрейм равен 1/25 секунды = 40 мс = 20000 тиков, 1 тик = 2 мкс. * 20000 тиков системного таймера - на каждый 1-й тик * 2 сигнала EVNT, в 0-й и 10000-й тик фрейма * 320000 тиков ЦП - 16 раз за один тик * 250000 тиков ПП - 12,5 раз за один тик * 625 тиков FDD - каждый 32-й тик
Как и обещал, выкладываю пример инсталлера, написанный на WiX 2.0. http://files.rsdn.ru/10885/ukncbtlwix.zipЕсли чего забыл положить — скажите. Ну и фидбек вообще интересен конечно. UPD: Мдя. Ни фидбека, ни оценок — видимо, «не приггодилось»…
Узучаю сейчас возможность перевода UKNCBTL в open-source. В качестве площадок рассматриваю SourceForge и Google.Code. В качестве лицензии — LGPL. Интересно было бы услышать от людей, имеющих соответствующий опыт, о преимуществах и недостатках указанных площадок и лицензии, а также об альтернативах.
Ср, 5 Дек, 2007, 12:45 UKNCBTL
Ближайшие планы по эмулятору: - изучаю работу контроллера дисковода, пользуясь информацией от Alex_K, в планах сделать запись на диск, разбираюсь с процессом; - в планах сделать виртуальную клавиатуру.
Ср, 14 Ноя, 2007, 01:52 НГМД УКНЦ
Итак, подытожим свои знания по дисководам УКНЦ (итог беседы с Alex_K). На диске УКНЦ (логически, с точки зрения ОС) — 80 дорожек, по 10 секторов на каждой, 512 байт в секторе. Диск вращается со скоростью 5 об/сек, информация идет с плотностью 250 кбит/сек, получаем 250/5 = 50 кбит/сек — это то что называется «двойная плотность». Далее, 50000 бит = 6250 байт — длина дорожки в raw bytes; понятно что реальная длина отличается на плюс/минус несколько десятков байт. Формат дорожки: Структура сектора:
0x4e x nn - sync (nn = 32 перед первым сектором, 36 перед остальными)
0x00 x 12 - sector header gap
0xa1 x 3 - marker
0xfe - section header marker
dd x 4 - section header (см. ниже)
cc x 2 - CRC
0x4e x 24 - sync
0x00 x 12 - data header gap
0xa1 x 3 - marker
0xfb - data zone marker
dd x 512 - data
cc x 2 - CRC
Остальная область после 10-ти секторов: 0x4e x до конца
Структура заголовка сектора:
tt - track
sd - side
sc - sect
0x02 - 512 bytes per sector Размер сектора: (32 или 36) + 12+3+1 + 4 + 2 + 24 + 12+3+1 + 512 + 2 = (604 или 608) байт. UPD: Два документа по теме: http://www.felixl.com/UKNC_FDD_passport — Устройство КМД УК. Паспорт. У13.065.013 ПС http://www.felixl.com/UKNC_FDD_1801vp1-128 — Техническое описание микросхемы 1801ВП1-128 контроллера дисковода UPD: Структура дорожки формата ISO — таблица из документа "Intel 82078 44 PIN CHMOS SINGLE-CHIP FLOPPY DISK CONTROLLER".
Beta 5 поддерживает диски в формате .rtd. Несколько улучшена эмуляция «окна» в памяти ПП, но там еще предстоит работа. http://3do-scene.com/nzeemin/UKNCBTL-beta5.ziphttp://3do-scene.com/nzeemin/UKNCBTL-beta5-exe.ziphttp://3do-scene.com/nzeemin/rt11dsk.zipИнструкция по использованию утилиты rt11dsk совместно с FAR. ; Add the following sections to
; "C:\Program Files\Far\Plugins\MultiArc\Formats\Custom.ini"
[dsk]
TypeName=rt11dsk
Extension=dsk
List=rt11dsk l %%AQ
Start="^--"
End="^--"
Format0="nnnnnnnnnn dd-TTT-yy zzzzz"
ExtractWithoutPath="rt11dsk e %%A %%fQ"
[rtd]
TypeName=rt11dsk
Extension=rtd
List=rt11dsk l %%AQ
Start="^--"
End="^--"
Format0="nnnnnnnnnn dd-TTT-yy zzzzz"
ExtractWithoutPath="rt11dsk e %%A %%fQ"
Пн, 12 Ноя, 2007, 19:51 UKNCBTL
За прошедшие выходные и сегодняшний вечер: - В утилите rt11dsk сделал поддержку образов .rtd (это было просто).
- В эмуляторе сделал поддержку образов .rtd (это было просто).
- Научил rt11dsk извлекать файлы.
- Написал для FAR настройку (Custom.ini для плагина MultiArc) для использования rt11dsk как архиватора. Теперь можно заходить по Enter в .dsk и .rpt, смотреть оглавление, по F3 смотреть файлы, по F5 копировать их из образа себе на диск!
- Добавил rt11dsk в инсталлятор.
Выложу всю эту радость завтра днём.
|