Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Тема: Эмулятор УКНЦ - EmuStudio. Укнц эмулятор


UKNC Back to Life! / Хабр

История разработки одного эмулятора
1. Зачем?
Можно сказать, что всю свою программерскую жизнь я был программистом-прикладником. Участвовал в разработке и коробочных продуктов, и под заказ, в небольших компаниях и побольше. Это интересная и разнообразная работа. Но ничего близко связанного с железом я до этого ни разу писал, и по цифровой схемотехнике имел довольно поверхностные знания, если не сказать — никакие. Зато моя программерская юность прошла за освоением C++ под Win32/MFC :) В какой-то степени мне хотелось проверить свои силы — смогу ли.
2. Почему УКНЦ?
Работал на этих машинах в школе (это было году этак в 1992-93), хотя ничего сложнее Бейсика и ползания по дискетам на учительской машине делать не приходилось. Т.е. никаких серьёзных познаний об эмулируемой машине у меня не было. Своей УКНЦ у меня в распоряжении тоже не было, как собственно нет и до сих пор.

Толчком к созданию эмулятора послужил сайт Арсения Гордина, на котором он уже несколько лет собирает всю имеющуюся информацию об УКНЦ и других PDP-11 совместимых машинах. Точнее даже, не столько сам сайт, а то что на нём обнаружился архив «Снятие имиджа ПЗУ и ОЗУ», автор — Александр Стрелец (кстати, спасибо ему огромное!). В архиве была описана процедура получения образов ПЗУ на реальной машине, и (о чудо!) обнаружились снятые образы. Вот тут ручки зачесались уже довольно ощутимо… Это был примерно июнь 2006 года. К слову, на тот момент не было ни одного эмулятора УКНЦ. (Да и сейчас их в общем-то не особенно много...)

3. Первые потуги
После этого я начал искать от чего оттолкнуться — написать всё с нуля было бы для меня (на тот момент) просто неподъёмной задачей. Поиск показал, что эмуляторов процессора ВМ2 в наличии нету, ни одного даже вживую, не говоря уже об исходниках. Зато уже давно есть эмуляторы с реализацией ВМ1 — как нетрудно догадаться, это эмуляторы БК. Выбор пал на эмулятор Юрия Калмыкова — во-первых, он был в исходном коде, а во-вторых, он был для меня ближе, поскольку написан под MFC. От эмулятора Калмыкова был взят код только код процессора и дизассемблер, и сейчас от исходного варианта наверное практически ничего не осталось — код перерабатывался множество раз.

Спустя неделю-полторы будущий эмулятор уже показывал состояния процессоров, памяти, дизассемблированный фрагмент, и в ручном режиме бодро прошагивал первые команды. Дальше предстояла длииинная такая дорога по уточнению процессора, программированию всех устройств УКНЦ… Некоторое время я потихоньку топал в этом направлении, особых результатов при этом не демонстрируя. Где-то в январе 2007 пришёл к выводу, что начал не с того — мне сильно нехватало информации об устройстве машины и детального понимания работы процессора. Поэтому засел за документ, суммирующий и систематизирующий мои знания по предмету.

4. Совместное творчество
А уже в феврале 2007 работа по эмулятору резко ускорилась. На Арсения Гордина вышел Феликс Лазарев, уже имеющий опыт написания эмулятора 3DO, желающий написать эмулятор УКНЦ и ищущий соратников. Развернули SVN для совместной работы, и понеслась.

В понимании работы УКНЦ я был на два порядка слабее, поэтому в основном работал над интерфейсом и отладчиком, пока Феликс перетряхивал процессор и устройства. К концу февраля был сделан отрисовщик экрана. К середине марта мы уже увидели текст об ошибках ОЗУ и ПЗУ, выдаваемый стартовым тестом.

Примерно в это время проекту стал активно помогать Алексей Кислый. У Алексея есть реальная УКНЦ, которую он изучил буквально вдоль и поперёк. Он предоставил нам тексты программы ПЗУ УКНЦ, дизассемблированное вручную — то чего так существенно не хватало в то время для отладки эмулятора. Более того, у Алексея был даже эмулятор УКНЦ (!) написанный им на ассемблере. Его эмулятор работал как «половинка» реальной машины: эмулировал только ЦП и межпроцессорные каналы, наличие ПП имитировалось для ЦП. Последние 2,5 года Алексей консультирует нас по всем деталям работы машины, его вклад в проект просто неоценим.

19 марта 2007 впервые увидели загрузочное меню. 20 марта 2007 — прошли встроенный тест. Ближе к концу марта Арсению удалось получить дамп единственного известного картриджа ПЗУ для УКНЦ — со специальной «кассетной» версией Бейсика. И 27 марта 2007 он уже загружался в эмуляторе. А 28 марта уже заработала загрузка с дискеты (только чтение, без записи на диск).

И после этого оба разработчика взяли тайм-аут путём глубокого погружения в свою основную работу…

В июне 2007 сделал инсталлятор и скрипты сборки проекта. 21 июня 2007 разослал первый инсталлер бета-тестерам. Целью было — убедиться что делаю нужное дело и собрать фидбек по эмулятору.

В августе 2007 получил от Влада Жигалова рукопись «Ресурсы УКНЦ» — его исследования о том что эта машина предоставляет программисту. Так я и не закончил сканирование этого документа, а надо бы… То что сосканировано — здесь.

28 сентября 2007 выложил первую публичную бету — ту же версию что рассылал ограниченным тиражом. В октябре-ноябре 2007 вышло три релиза. Сделана утилита rt11dsk для работы с образами дисков без запуска эмулятора.

С помощью Алексея начал подробно разбираться в устройстве контроллера НГМД УКНЦ — для того чтобы сделать запись на диск. 27 января 2008 — бета-6. Заработала запись на диск!

5. В открытую
3 марта 2008 — бета-9. Проект переходит в опен-сорс. code.google.com/p/ukncbtl Летом 2008 выходит ещё два релиза, и авторы в очередной раз забивают на проект…

4 апреля 2009 — Феликс выпустил бету-12. Улучшены тайминги процессора, в результате получили реалистичный звук. Дальше опять кладём большой болт…

Наконец, с ноября 2009, последние два месяца работы идут практически каждые выходные, выпущены три релиза. Обнаружились приёмо-сдаточные тесты процессоров ВМ1 и ВМ2, которые досконально проверяют работу во всех режимах. Благодаря коммитам Алексея, эти тесты мы уже проходим.

6. Выводы
  1. Ничего невозможного нет — в общем и целом я доказал себе что «могу».
  2. Но строго говоря, в одиночку я «могу» слишком медленно, а по-настоящему «могу» только в команде со знающими людьми. В деле ретрокомпьютинга кооперация имеет огромное значение.
  3. Работа не окончена, и сложно сказать, когда можно будет поставить точку: уже сейчас работает 99% софта, но эмулятор ещё далеко не идеален и не закончен. Есть куда развиваться как в плане точности и полноты эмуляции (магнитофон, принтер, стык С2, сеть...), так и удобства (полный экран, сохранение состояния...) и в плане переносимости (Qt, SDL...).

Сайт проекта: code.google.com/p/ukncbtlСкриншоты: code.google.com/p/ukncbtl/wiki/Screenshots

P.S. 14 ноября 2009 на основе кода UKNCBTL начат проект BKBTL, уже худо-бедно эмулирующий БК-0010: code.google.com/p/bkbtl

habr.com

Эмулятор УКНЦ - EmuStudio - Страница 17

Я тоже не знаю, разделять Шерифа и Castle на две разные игры, или же как просто разные подверсии одной и той же. Все же больше склоняюсь к двум разным.

Land'ов было очень много на ДВК, версий 5, не меньше. С разными лабиринтами и т.д. Так же был отдельно редактор уровней, который позволял сделать свою игру. Только не помню, редактор был под ДВК или УКНЦ. Так же существует версия Land'а под КЦГД многоцветная, а так же несколько версий переделок под КЦГД простым сжатием по вертикали, т.к. КЦГД имеет меньшее разрешение по высоте, из-за чего графика в игре стала смотреться менее красивой. Все эти версии должны быть в твоем архиве, т.к. я тоже их качал у наших ДВК'шников.

Land точно был портирован на УКНЦ, БК, Специалист. Причем на УКНЦ тоже ходит много версий, с разными уровнями, разными глюками, и даже разной компоновкой экрана. Cat точно был портирован на УКНЦ, БК. PifPaf на УКНЦ и БК. Wert - портирован на УКНЦ двумя разными версиями как минимум. Шерифы, Кастле и Гарден тоже портированы. Причем в архивах есть Гарден с битыми уровнями, и шериф с битыми уровнями.

Еще под КГД есть такие графические игры, как Moto - гонки на мотоцикле по псевдо-3D дороге; Chess - графические шахматы, причем используют и текстовый экран КСМ тоже; Digger; Кот-рыболов - не менее двух версий; Графический питон. Больше пока не припомню.

---------- Post added at 03:34 ---------- Previous post was at 03:29 ----------

Цитата Сообщение от hobot Посмотреть сообщение

Авторы вот этих строк утверждают, что всего их было пять

Хорошо бы послушать самого легендарного ASP Corp'а, ведь именно в его игры мы заигрывались в школе, т.к. они были почти единственные на УКНЦ)

zx-pk.ru

Эмулятор УКНЦ - EmuStudio

Все вокруг выкладывают свои наработки в плане эмуляции, даже недоделанные. Хочу и я поделиться неким наброском эмулятора УКНЦ, который написан, правда, еще в 2006 году. Никакого сервиса в нем нет, и дописывать его не собираюсь, т.к. он писался чисто под меня, поиграть. По сравнению с UKNCBTL, совместимости с реальной УКНЦ в нем меньше, т.к. многое недописно. Но тоже имеет место быть. Некоторые особенности:

GUI: Работает только в оконном режиме. При запуске окно масштабируется под размер рабочего поля классического экрана УКНЦ. Экран внутри окна всегда центрируется так, чтобы центр экрана эмулятора был в центре окна, как бы окно не растягивали. Если есть желание наблюдать иконки дисководов, а так же работать в дополнительных графических режимах (КГД, КЦГД, УКНЦ-oversvan), то окно следует растянуть по размеру эмулируемого экрана, либо же просто максимизировать до размера рабочего стола. В верхней части рамки окна расположен слайдметер, отображающий загрузку процессора. Желтым цветом отображается время, затраченное на эмуляцию и рендеренье экрана. Оранжевым цветом отображается время, затраченное на общение с системой, в основном это отрисовка экрана в окне средствами DirectDraw. На иконках дисков можно наблюдать перемещение головок дисководов. Цвет головки означает текущее действие. Белый - бездействие, голубой - чтение, красный - запись.

Консольное окно: Открывается за окном эмулятора исключительно для отладочных целей. Можно не обращать внимания

Командная строка: Все параметры, а их только два - имя образа диска-A, и образа диска-B, прописываются друг за другом в командной строке эмулятора. Пример: EmuStudio C:\Disk1.dsk C:\Disk2.dsk

Поддерживаемые форматы образов: Только стандартные двухсторонние 80-дорожечные диски по 800кб. Образ только читается, обратно не записывается.

Режим совместимости с КГД ДВК: При обращении программы к регистрам КГД (Контроллера Графического Дисплея - 400x286 точек, Ч/Б), происходит переключение в режим графики КГД. При выходе из приложения, работающего в режиме КГД, режим КГД выключается. Клавишей 'F6' можно принудительно выключить режим КГД (допустим, при зависании приложения, использующего КГД), однако, если программа продолжает работать с регистрами КГД, этот режим будет немедленно включен обратно.

Режим соместимости с КЦГД ДВК: Если программа отсылает терминалу ESC-последовательность ESC-X (обращение к КЦГД), то автоматически активизируется режим отображения КЦГД (Контроллер Цветного Графического Дисплея - 400x240 - 16 цветов, 800x240 - 4 цвета, 400x480 - 16 цветов (чересстрочный), 800x480 - 4 цвета (чересстрочный)). Так же, можно вручную переходить в режим КЦГД по клавише 'F6', и обратно в режим отображения УКНЦ по клавише 'F7'. Причем, перед запуском некоторых программ, использующих КЦГД, желательно перейти в этот режим вручную, иначе программы либо определят чипсет, как КГД, отказавшись работать, либо же может быть выведена не совсем правильная информация в текстовом виде, что не помешает, но смутит доверчивых пользователей. Кроме того, некоторые текстовые игры, написанные для ДВК, лучше выглядят, а иногда и правильней работают, в режиме терминала КЦГД. В отличие от режима КГД, КЦГД - это отдельный компьютер, который стартует одновременно с УКНЦ, и работает в фоне, выводя на свой терминал все, что выводится на экран терминала УКНЦ. При переключении в режим КЦГД, мы просто начинаем видеть этот экран, который до этого всегда работал в фоне. При активном режиме УКНЦ, все, что отправляется на терминал, отправляется одновременно и терминалу ПП УКНЦ, и терминалу КЦГД, однако ведущим является ПП УКНЦ, и он же задает временные характеристики работы. В режиме активного КЦГД, информация отправляется только на терминал КЦГД, чтобы не засорять экран УКНЦ информацией, являющейся для КЦГД графической. В данном режиме задающим временные характеристики уже является терминал КЦГД. Замечу так же, что клавиатура всегда используется УКНЦ, что может вызвать (и даже вызывает) глюки программ, использующих в режиме КЦГД опрос клавиатуры собственный, не стадартный.

Режим УКНЦ-overscan: Некоторые программы, а точнее всего одна - 'LAND' желтого цвета, использует невидимые строчки внизу экрана, которые не отображаются на реальном УКНЦ, однако поддержаны в эмуляторе в режиме overscan, который включен всегда.

Процессоры: В эмуляторе одновременно работают три одинаковых процессора К1801ВМ2. Это CPU - центральный процессор, частота 8МГц, PPU - периферийный процессор, частота 8МГц (на реальной УКНЦ 6.25МГц), GPU - процессор чипсета КЦГД, частота неопределена, но значительно выше реальной. Процессор эмулируется достаточно точно, однако некоторые системные команды, необходимые, например, для работы в отладчике, в нем не реализованы. Так же неправильно реализованы тайминги работы с памятью, ввиду того не было взято в расчет торможение медленной памятью. Да и документация на тот момент имелась далеко не вся. Словом, процессор работает точно, но не полно. И немного быстрее нормы.

Чипсет УКНЦ: Реализованы не все регистры, нет ловушки, нет менеджмента памяти ОЗУ ПП и пр.

Клавиатура: Реализована) Раскладка только ЯВЕРТЫ. При нажатии системных для Windows клавиш, таких, как ScrollLock, Alt и т.д., они будут выполнять свои системные функции, и включать свои светодиоды. Соответствие некоторых клавиш:

Code:

АР2 - ESC K1-K5 - F1-F5 ПОМ - PrintScreen УСТ - Scroll Lock ИСП - Pause СБРОС - F11 СТОП - F12 : - * (дополнительная клавиатура) @ - Home АЛФ - CapsLock НР - Shift УПР - LCtrl ФИКС - LAlt ГРАФ - RAlt ~ - Циклическая смена палитры RGB, GRB, Black/White, Black/White TV - для режима УКНЦ, и Циклическая смена палитры Blue/White, Monochrome, Black/White, Black/White TV - для режима КГД ДВК Скорость работы: Эмулятор написан на чистом Си (не Си++), в Visual Studio 2003. Работает быстро даже на не очень быстрых компьютерах. Скорость эмуляции завышена из-за нескольких факторов: 1) Эмулятор заточен исключительно на синхронность работы с кадровой разверткой. Ввиду этого, например, при 70Гц развертке, скорость будет завышена на 40%. 2) Процессор ВМ2 работает быстрее реала, ввиду отсутствия торможения медленной памятью. 3) Процессор PPU работает на 8МГц вместо 6.25МГц (мало влияет, но все же) 4) Процессор GPU работает на гораздо большей частоте, чем в КЦГД, кроме того, последовательные каналы передачи данных между КЦГД и CPU работают мгновенно, что так же изрядно прибавляет скорости.

Для замедления эмуляции можно воспользоваться клавишами 'PageUp' и 'PageDown', что, соответственно добавит и убавит лишние кадры задержки после каждого показанного кадра.

Звук: Отсутствует.

О прилагаемых программах:

На прилагаемой дискете записанно несколько программ, позволяющих посмотреть работу в разных графических и системных режимах.

Игры: LAND - Игра 'Land' для контроллера КГД ДВК. LANDD - Игра 'Land' для контроллера КЦГД ДВК (желательно перед запуском перейти в режим КЦГД, нажав 'F6', иначе текстовая рекламная информация будет выведена в испорченном виде) LANDR - Игра 'Land' для режима КЦГД, другой вариант, монохромная, на русском. LANDE - Игра 'Land' для режима УКНЦ-overscan. SHERIF - Игра 'Sheriff' для режима КГД ДВК. SHERI2 - Игра 'Try You Luck in the Castle' для режима КГД ДВК. CAT - Игра 'Кот-рыболов' для режима КГД ДВК. AFGAN - Игра 'Milithary Maraphon' для режима КГД ДВК.

Замечание: В играх типа 'Land' следует выбирать скорость работы самую медленную, например, '7'.

Системные программы: @CLCDEM - Демонстрация математической программы 'Калькулятор' для КЦГД ДВК. Обязательно запускать в режиме КЦГД ('F6'), иначе не запустится драйвер дисплея SKEY, и программа зависнет. @FGRDEM - Демонстрационная программа для исследования функций. Запускать так же только в режиме КЦГД. GMAN - Мощный графический редактор 'G-Man' для режима КЦГД.

Для чайников: Запускать эмулятор так: Emustudio Disk_Games.dsk Далее в меню стрелочка 'вниз', затем 'Enter'. Будет загружаться система. Затем она спросит дату. Опять нажать 'Enter'. Затем можно будет набирать имя программы и нажимать 'Enter'. Для выхода из программы 'Ctrl-C'. Если это не помогло, то повторить действия по запуску эмулятора заново. Так же можно запустить эмулятор сам по себе, а диск в него кинуть Drag'n'drop'ом (диск A), или Drag'n'Drop + Ctrl (диск B).

p.s.: Эмулятор точно работает под WinXP. На других системах особо не проверял. p.p.s.: К режиму КЦГД ДВК просьба не относиться серьезно, т.к. он написан чисто для посмотреть, что же это такое.

Скачать EmuStudio 0.12f

vb4.zx-pk.ru

Эмулятор УКНЦ - EmuStudio - Страница 51

На счет видеорежимов. КГД нельзя так легко переключать туда-обратно потому что: 1. В режиме КГД отключаются некоторые регистры УКНЦ, что не принципиально для работы под системой. Т.е. переключиться из режима УКНЦ в КГД можно было бы, если бы не одно но. Отсутствует эмуляция КСМ (не будет видно буковок), а есть эмуляция только КГД. Т.е. в системном режиме переключаться в режим КГД бессмысленно. 2. Принудительно выходить из режима КГД в режим УКНЦ сейчас можно, но сделано исключительно для аварийного выхода, если зависла програма, запущенная под КГД. Почему не желательно этим переходом пользоваться? А потому что при переходе из КГД в УКНЦ отключаются регистры КГД, и программа, работающая под КГД явно заглючит.

Итог: Режим КГД включается автоматически только тогда, когда под ним работает какое-то приложение для КГД ДВК, и выключается автоматически, когда это приложение завершает работу.

Теперь о режиме КЦГД: Пока что существует один режим разветвление потока терминальной информации из УКНЦ -> терминал УКНЦ + терминал КЦГД, с инхронизацией по терминалу УКНЦ. Если же включается режим КЦГД, то терминальная информация идет так УКНЦ -> терминал КЦГД с синхронизацией по терминалу КЦГД. Почему это сделано? Все потому, что графическая информация, отправляемая на терминал КЦГД, для УКНЦ будет выглядеть великим мусором. В принципе, в теории можно фильтровать траффик, но это очень много бухгалтерии.

Итог: Переключаться между УКНЦ и КЦГД вручную можно и почти корректно, за исключением того, что при работе КЦГД на экран УКНЦ ничего не выводится. Кроме того, если пререключение было в момент вывода информации на терминал, часть информации может пойти на один терминал, а часть на другой, таким образом даже привести к небольшому подвисанию терминала УКНЦ. Так же, в режиме КЦГД отключается регистр адреса планов 1 и 2 ЦП, что так же приведет к неработоспособности игр и системных программ УКНЦ, обращающихся к этому регистру. Сделано для того, чтобы программы для КЦГД могли корректно определять, КЦГД это или КГД. Плюс, пока что не реализована клавиатура КЦГД, и в режиме КЦГД продолжает работать клавиатура УКНЦ, что тоже приводит к некоторым глюкам.

На счет клавиш ':' и т.д. - предложи свой вариант размещения на основной клавиатуре.

zx-pk.ru

Эмулятор УКНЦ - EmuStudio - Страница 6

Цитата Сообщение от Titus Посмотреть сообщение

А подробнее?

Объяснять долго. Но как-нибудь постараюсь. У устройств с битами готовности (ГТ) и разрешения прерывания (РП), запрос на прерывание возникает тогда, когда предыдущее состояние (БГ .AND. РП = 0), а новое (БГ .AND. РП = 1), т.е. такое возможно когда установлен бит РП и устройство готово к приему/передаче информации, или устройство уже готово, а программа установила бит РП. Соответственно запрос на прерывание можно снять тремя способами: 1. Снять бит готовности, т.е. прочесть/записать регистр данных, после этого бит ГТ станет равен нулю. 2. Очистить бит РП. Думаю без вопросов. Эти два предыдущих способа обычно делаются при запрещенных прерываниях. 3. Ну и третий способ - удовлетворить запрос на прерывание, в этом случае устройство должно передать вектор.

А вот с третьим способом тонкости и начинаются. Представим себе, что запрос удовлетворили, прерывание произошло, начала исполняться п/п обработки прерывания. Пока биты ГТ и РП стоят в состоянии один, даже если разрешить прерывание, то устройство его требовать не будет, т.к. не был зафиксирован переход (БГ .AND. РП = 0). А вот теперь самое интересное - не будем читать/писать регистр данных, тем самым не трогаем бит ГТ, просто разрешим прерывания и перебросим бит РП (сначала в 0, затем в 1). Если это канал 0 со стороны ЦП или стык2 (1801ВП1-065), то будет зафиксировано изменение с (БГ .AND. РП = 0) на (БГ .AND. РП = 1), и будет снова затребовано прерывание. Если же это канал 0 со стороны ПП или каналы 1 или 2, то запроса увы не затребуется, несмотря на переход с (БГ .AND. РП = 0) на (БГ .AND. РП = 1). В этом случае правило перехода с (БГ .AND. РП = 0) на (БГ .AND. РП = 1) будет выполнено, если был прочитан/записан регистр данных (и соответственно сброшен бит ГТ).

Может слишком мудрено объяснил, но вот такие пироги...

Я еще столкнулся с этим, когда писал свой драйвер LP, пришлось поступить не очень честно, если в результате обработки очереди не было данных для вывода в п/п обработки прерываний, то в этом случае выводился байт ноль, а то иначе прерываний после этого не возникало.

Второй раз я столкнулся с этих, когда причесывал каналы 0, 1, 2 в UKNCBTL. Не грузилась дискета с редактором JEK от группы KUARKO. У них там в ОЗУ ПП грузился резидент KUARKO.SAV, который заменял почти все вызовы в системном ПЗУ своими. Во тоже пришлось помучиться.

---------- Post added at 17:30 ---------- Previous post was at 17:27 ----------

Цитата Сообщение от hobot Посмотреть сообщение

... монстра UKNCBTL для этого - расточительство )))

Вот исправит Titus все ошибки в своем эмуляторе, понавешает эмуляцию всяких устройств и превратиться EmuStudio во второй UKNCBTL.

zx-pk.ru

Эмулятор УКНЦ - EmuStudio - Страница 4

Цитата Сообщение от Titus Посмотреть сообщение

Вопрос к знатокам УКНЦ на счет регистра октета точки.В некоторых программах с заливкой, она заливается у меня на эмуляторе мимо. Стал выяснять почему, вырисовывается такая картина. Программа пишет байты в регистр октета точки в цикле записи. Тогда как в инструкции написано, что для того, чтобы было рисование по маске, в этот регистр надо производить чтение-модификацию-запись. Т.е. при чтении загружается регистр цвета фона, а при записи уже на этот фон накладывается новое изображение. Почему же тогда программы, просто записывающие байт в регистр октета точки преспокойно рисуют по старому фону?

Заметили таки! Да, я тоже помучился, когда писал редактор шрифтов FNT. А все довольно просто. В инструкции все правильно сказано насчет чтения-модификации-записи. А вот в описании на процессор 1801ВМ2 очень существенный момент упустили (его нет и в техописании, которое выкладывали Вы). А этот тонкий момент состоит в том, что по записи в источник словные и байтовые команды отличаются. Команд этих всего три - MOV(B), CLR(B) и MFPS. В байтовом варианте при записи приемника DST, он сначала прочитывается из памяти (фиктивное чтение), а затем записывается. В словном варианте производится безусловная запись приемника без его предварительного чтения. Такие тонкости относятся к MOV и CLR. Команда MFPS имеет только байтовый вариант, поэтому здесь всегда производится чтение-модификация-запись для приемника.Поэтому, если надо наложить по старому фону, то можно сделать так:

Код:

TST @#177024 MOV R0,@#177024 или более быстро и просто:Особенности работы этих команд проверены и на других регистрах, в частности на регистре данных приемника канала 0 177562. Если в регистре 177560 устанавливался бит готовности 7, то после этого производилась запись в регистр 177562. Сама по себе запись в этот регистр бесполезна. При словной записи бит готовности в 177560 не сбрасывался, а при байтовой записи сбрасывался, что подтверждает то, что к регистру 177562 применялась операция чтения. Сразу оговорюсь, что 1801ВП1-120, где находятся эти регистры, сигнал записи байта WTBT не обрабатывает.

Команды MOVB по отношению к регистру 177024 применяется и в системном ПЗУ УКНЦ при обработке графических функций (это где-то в адресах 140000-152000).

В эмуляторе UKNCBTL это уже учтено, исходники свободны, смотрите.

P.S. Сразу отмечу, что EmuStudio некорректно работает с регистрами контроллера дисковода. При чтении зараз большого объема данных он не читается, выдает ошибку. Из-за этого при исполнении команды DIR/BAD/FIL выдается ошибка "Too many bad blocks", нельзя загрузить большие исполнимые файлы (не смог GOBLIN, не грузилась дискета с JEK-ом, не загрузить TurboBasic, не работает Writer).

zx-pk.ru

Эмулятор УКНЦ - EmuStudio - Страница 8

Цитата Сообщение от Alex_K Посмотреть сообщение

Правила уже описаны в UKNCBTL. Вроде работает. Есть правда один тест графики TESTGR из Турбо-Бейсика, так там при выводе главного меню один символ пропадает, из-за чего, пока не выяснял, хотя переполнения буфера вроде нет (есть такая проблемка в УКНЦ).

У меня буквы там не пропадают)

---------- Post added at 22:54 ---------- Previous post was at 22:53 ----------

Цитата Сообщение от Alex_K Посмотреть сообщение

Судя по номеру теста, не работает прерывание по T-разряду

Этот вроде никаким софтом не используется.

---------- Post added at 22:56 ---------- Previous post was at 22:54 ----------

Цитата Сообщение от hobot Посмотреть сообщение

И главное для меня (!) как для пользователя, что-бы как можно скорее в обоих эмуляторах НОРМАЛЬНО заработали флоппики и клавиатура )))

Где это клавиатура ненормально в EmuStudio работает?

---------- Post added at 22:58 ---------- Previous post was at 22:56 ----------

Цитата Сообщение от BYTEMAN Посмотреть сообщение Не, УКНЦ должна оставаться такой, как она есть. А вот перевести КГД и КЦГД в плиску и сделать как расширялку - получилась бы просто мегамашина ДВК нынче редкость, а УКНЦ есть у многих. И не надо будет в итоге искать ДВК, т.к. все её возможности будет делать УКНЦ Сделать эти режимы 'втыкаемыми' в реальную УКНЦ сложновато, я думаю. КГД при работе отключает часть регистров УКНЦ, подставляя свои. КЦГД попроще, просто сидит на канале терминала.

zx-pk.ru


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..