Да, обязательно будет, не обещаю только очень быстро. Извините, почти 3 недели не касался эмулятора - уезжал в отпуск, только что вернулся :) Продолжу по мере возможности с новыми силами ;)
Вид для печати
Да, обязательно будет, не обещаю только очень быстро. Извините, почти 3 недели не касался эмулятора - уезжал в отпуск, только что вернулся :) Продолжу по мере возможности с новыми силами ;)
А исходники от последней ДОС-кой версии (1.81 кажется) можно туда же выложить?
Можно, почему бы и нет? Последняя DOS-версия - 2.86, кстати.
Подготовлю. Если нужны срочно - вышлю на e-mail.
Нет, срочности нет никакой, просто программером по профессии я никогда не был. В конце 90-х учился на инженера-схемотехника и мои познания в асм-е только на уровне программирования 8 и 16 бит. Программирование в 32-битном коде прошло мимо меня. Да по сути там уже больше знания функий всяких API, а не самого кодинга... Сейчас думаю какой-то гибрид собрать (типа РК86 на 8085), но с более интересной периферией, а для отладки весьма такая штучка (эмулятор) понадобилась бы.
:v2_dizzy_rastoman:
Есть несколько замечаний по работе Emu80, связанных с неточностями в эмуляции "Партнёр 01.01". Сравнивала с реальной железкой, обнаружила следующее:
1. Процессор стартует с адреса 0xF800. Должен стартовать с нулевого адреса.
2. Нет первой половины ПЗУ BIOS D32 (отсутствуют редактор и ассемблер).
3. Экран сдвинут влево. У "Партнёра" видимая часть экрана начинается с адреса 77BDh, а не с 77C2h, как в "Радио-86РК".
4. Работа интерпретации атрибутов "подчёркивание" и "инверсия" происходит некорректно по сравнению с реальным компьютером.
5. Нет эмуляции регистра состояния КР580ВГ75. В частности, флага IR (запрос прерывания).
6. Нет эмуляции блочного курсора.
Ну и пруфпик (слева - картинка с реальной железки, справа - с эмулятора):
Всем привет!
Прошу прощения за длительное отсутствие - обстоятельства сложились так, что не было времени сколь-либо серьезно заниматься эмулятором.
Ситуация на данный момент такая: последняя более-менее работающая версия эмулятора - 3.13, то, что сейчас на GitHub'е - компилируется, но в содержит баги, реально пользоваться версией из репозитория не советую. В текущих же исходниках, даже не загруженных на GitHub, уже успел много всего сломать, все очень сырое, требует усилий по доведению до ума...
В общем, такие новости:
1. Появилась пока возможность позаниматься эмулятором. Пока есть и интерес, и немного времени, что будет дальше - сказать сложно.
2. Новых сборок в ближайшее время обещать не могу. Слишком много изменений, быстро до ума не доведу, да и подзабыл уже за полтора года свой же код, приходится вспоминать что и как... За исключением эмуляции видеоконтроллера изменения в основном внутренние, связанные с переходом с ассемблера на с++.
3. Ко мне вернулся железный "Партнер". Включил - работает без проблем, будет на чем тестировать :)
- - - Добавлено - - -
xlat, спасибо за замечания, комментирую:
1. Согласен. Страничная организация памяти на данный момент вообще не реализована. В планах есть, но пока с низким приоритетом...
2. См. п. 1
3. Не совсем понял. На "Партнере" из-за увеличенной до 2 МГц тактовой частоты увеличена длительность строчного синхроимпульса, поэтому отображаемая часть растра 78*30 символов (76D0-7FF3) оказывается смещенной вправо. Чтобы это компенсировать, на уровне Монитора полезная область экрана 64*25 символов сдвигается внутри отображаемой на 5 символов влево, то есть начинается не с адреса 77С2, а с адреса 77BD. Эмуляторы (как мой, так и EMU) показывает всю отображаемую область (76D0-7FF3). Что смущает?
4,6. Как раз в процессе реализации, очевидно, в следующей версии уже будет. Вопрос только, когда ;)
5. А вот с этим не согласен. Частично реализовано, а конкретно как раз и сделан только флаг IR:
Пруф:
http://emu80.org/pics/misc/ir.png[свернуть]
Pyk, спасибо за ответы :) Очень здорово, что не забрасываете эмулятор! ;)
Относительно этих пунктов:
3. Смущает, что картинка на реальном телевизоре/мониторе в случае и с "86РК", и с "Партнёром" отображается посередине, а в эмуляторе у "Партнёра 01.01" - сдвинута влево. Так-то не особо критично - беспокоит больше с эстетической точки зрения :)
5. Я при проверке пользовалась программой, считающей кадры на основе флага IR. В Emu80 в режиме "Радио" насчитывалось больше, чем 50 за секунду. По идее, так, наверное, не должно быть.
Есть вопрос ко всем пользователям эмулятора.
Еще с самых первых версий своеобразной "фишкой" эмулятора является режим отображения текста с использованием символов 8×16. С одной стороны, это дает более красивую, чем на реальном ПК, картинку, а с другой - не позволяет полностью эмулировать все особенности ВГ75. А насколько актуальна вообще дальнейшая поддержка этого режима? Я-то сам привык к нему, а кто-нибудь еще его использует?
хы..
только сейчас обратил внимание, заглянул в настройки эмулятора по клавише F10 а там вроде по умолчанию используется режим 8х16.
мне кажется пусть будет, так будет интересней.
Пусть будет, для текстовых программ самое оно. Но можно, например, сделать её отключение если программа лезет в настройки вг75.
Pyk, а можешь залить на GitHub обновленную версию для линукса?
tnt23, если имеется в виду третья версия эмулятора, то актуальная версия по ссылке в первом сообщении этой темы.
Четвертая версия сейчас в активной разработке, пишется практически "с нуля", поэтому залить пока, собственно, нечего. Надеюсь, в течение лета появятся бета-версии, исходник также опубликую ближе к релизу.
Ну а пока несколько скриншотов будущей версии :)
Pyk, спасибо. Бинарную сборку я не заметил :)
А поддержка РК ДОС планируется?
tnt23, Не вижу препятствий для этого - добавление новых фич после переработки внутренней архитектуры эмулятора уже не представляет особых сложностей. Правда, сам я с РК ДОС не сталкивался, но думаю, что когда до этого дойдет дело, посетители форума при необходимости мне помогут. :)
Pyk, мы готовы :)
tnt23, описание в журнале достаточно полное, вопросов не возникло, поддержка DOS будет:
Вложение 57742
Немного поработал с EMU80 для Spectrum 128K, есть два пожелания:
1. Чтобы окно ОЗУ обновлялось.
http://storage7.static.itmages.ru/i/...08e36a814f.gif
Пишу по C000, а в окне изменений нет. Но на самом деле они есть (если убрать и показать окно или сверху провестись другим окном, они появятся).
2. При включенном отладчике если сделать File -> New, то вылетает по ошибке.
Это не ко мне, это в соседнюю ветку "Пожелания и планы по эмулятору Башкирия-2М"...
Мдя, отсутствие внятного имени у моего эмулятора начинает уже напрягать :)
Попробуй вместо F8 нажимать Shift+F8. Это не шаг, а запуск до следующей команды, при этом окно дампа обновляется.
Погляжу, что можно сделать. Раньше была такая-же проблема при закрытии эмулятора. Я уже по привычке закрываю отладчик, прежде чем куда-либо тыкать мышкой :)
Chaos Constructions 2016 кто-нибудь планирует посетить? Есть мысль съездить...
Имеется вопрос по эмулю:
Нужно чтобы все что я вывожу на мг шло на звуковуху.
в emu80.cfg ставлю
tape=sb-out
запускаю эмуль - байты сыплются в файл ;(. если из эмуля перенаправить (f10->магнитофон-воспроизведение) все работает корректно, но выбор не запоминается. При каждом запуске приходится так делать, что не удобно.
Что посоветуете?
mvg, ошибка в описании опции, в 3-й версии эмулятора нужно так:
tape=out
Спасибо за замечание, после выхода 4-й версии эмулятора сделаю также багфикс-релиз третьей...
Pyk, обновление вашего эмулятора ещё будет ?
ZEman, да, полностью переписанная 4-я версия уже на подходе :)
Уважаемый Pyk, народ уже давно ждёт от Вас версии эмулятора РК86 с эмуляцией РК-КНГМД. Т.е эмуляции доработки железа РК86 в виде установки дешифратора на область адресов E000...FFFF, ППА стоящего в плате РК-КНГМД по адресу F000 и ПЗУ 4 кб по адресам E000...EFFF. И перенос доп.ППА D14 с адреса A000 в адрес F100. А также, что не менее важно, расширение ОЗУ в окне 8400...BFFF, хотя бы на 15 кб (или на 30К двумя страницами по 15 кб). Или реализуйте любой другой вариант расширения ОЗУ, обеспечивающий совместимость.Цитата:
Сообщение от Pyk
Хотелось бы также иметь возможность аппаратно переключать фонт (2 или 4 фонта). Порт и бит управления фонтом не важен (лучше использовать ППA D14, т.к ставить в РК86 TTL регистры мы не можем, нет ресурса по нагрузке шины). В принципе, можно использовать для управления фонтом неиспользованные биты PC1, PC2 из порта клавиатуры 8000. А владельцы клавиатуры MS7007 пусть пропадают без альтернативного фонта. Можно также использовать один из атрибутов ВГ75, как сделано в каком-то клоне РК.
При хранениии образа дискет созданных с РК-КНГМД возникает вопрос о названии файлов. Расширение файлов ODI (сокращение от ОРИОН диск) и KDI (сокращение от КОРВЕТ диск) используется для дискет в формате CP/M и поддерживается программами для работы с образами дисков. Казалось бы логично расширение RDI использовать для дисков CP/M для РК86, а для образов дискет RK-DOS использовать расширение RKD. К сожалению, даже для CP/M-дискет от РК-КНГМД имя RDI не годится.
Использование формата RDI для дискет от РК-КНГМД невозможно по следующей причине. В RK-DOS, в отличие от CP/M используются сектора произвольной длины (1...512 байт), поэтому получить просто "слепок" дискеты последовательным чтением секторов, как в формате ODI, - невозможно. Каждый сектор содержит в своей служебной области длину этого сектора, а также КС сектора и это считывает КР580. Во всех остальных ДОС в мире такого нет, там все сектора одной длины, - это просто не поддерживают БИС для дискетных контроллеров (КС секторов сверяет тоже сама БИС контроллера, а не процессор).
Формат CP/M-дискет для РК-КНГМД имеет такие же сектора, отчего имя ODI даже тут не годится. Для CP/M-дискет от РК-КНГМД можно использовать расширение RCP (от РК CP/M). Хотя формат образов РК-дискет RK-DOS и CP/M будет примерно одинаковым, но разница в расширении удобна для ориентации пользователя. Да и физическая структура дискет RK-DOS и CP/M немного разная, т.к в RK-DOS есть сектора с номером 0, а в CP/M нумерация секторов начинается с 1 и все сектора при форматировании заполняются кодом E5, вместо 0.
Естественно, одновременно с выпуском эмулятора РК86 поддерживающего РК-КНГМД, необходимо выпустить утилиту позволяющую копировать РК86-файлы с расширением GAM на/с образа дискет RK-DOS, CP/M и других ОС для РК86. Тут есть всего 3 варианта, - это сделаете Вы, это сделаю я, или это сделает кто-нибудь другой. Уверен, что автор утилиты SteinBlume вряд-ли согласится поддержать образы дисков RK-DOS, т.к его программа предназначена для CP/M-дискет (кому охота возиться с хитроумным физическим форматом RK-DOS).
Замечу, что создать программу для физического считывания дискет РК-ДОС в IBM PC Вы никак не сможете, т.к контроллер PC не может читать программно формируемый формат. Поэтому в эмуляторе необходимо, чтобы работал форматёр дискет от реального РК86, а о программе для перноса, я уже упомянул. Можно только написать программу, которая на реальном РК86 будет последовательно сканировать дискету и выдавать считанные сектора по проводной линии в IBM PC, где и будет сформирован образ диска.
Есть ещё один вариант обмена файлами (использованный в моих эмуляторах), это когда из эмулятора возможен прямой доступ к файлам на винчестере IBM PC. Это кстати, самый удобный для пользователя вариант. Тогда пользователь сам переносит нужные ему файлы в определённый каталог винчестера, а формирование виртуальной дискеты в эмуляторе происходит при старте эмулятора (в этот же каталог эмулятор записывает файлы предназначенные для хранения на PC, т.е результаты работы в эмуляторе).
RK-DOS использует идеологию из Apple-DOS и ДОС АГАТА, но описатель трека во VTOC не 4-х байтовый, а однобайтовый, что ограничивает число секторов в треке не до 32, как в оригинале, а лишь до 8 (т.к занятость сектора в треке описывается одним битом байта). Тем самым RK-DOS поддерживает максимум 8*512*160, всего 640К на диск.
К сожалению, формат дискет РК-ДОС не имеет ИНФО-блока в BOOT-секторе (и вообще не имеет ИНФО-блока с физическими параметрами диска), отчего RK-DOS такая убогая и в базовом виде поддерживает всего один жёстко фиксированный формат дискет. Хотя, чтобы RK-DOS поддерживала любой другой формат достаточно изменить в её коде всего несколько байт, но опять-таки снова будет поддержан только один жёстко фиксированный формат и нет средства узнать какой это формат.
Одновременную поддержку RK-DOS-ом нескольких форматов с автонастройкой не ввести без изменений архитектуры, в силу того, что в ПЗУ 4К, где хранится ДОС просто нет места, чтобы ввести процедуру автонастройки на формат диска.
Потому в реале приходилось использовать RK-DOS также только в одном жёстко фиксированном формате. Оттого и появилось несколько вариантов RK-DOS, отличающихся лишь несколькими байтами, каждая из которых была предназначена для одного формата дискеты. При использовании RK-DOS в эмуляторе, естественно, удобнее использовать максимальный для РК-ДОС формат дискет 640К, 8 секторов на трек. Скоростей реального РК86 для такого формата хватает только при замене кварца ГФ24 с 16 МГЦ на 20 МГЦ (схема ТУРБО по журналу РАДИО).
Странслировать RK-DOS версии 3.0, т.е версию с поддержкой любых форматов дискет очень просто. Но требуется расширение ПЗУ, т.е введение 2-х страниц ПЗУ в области E000...EFFF, что даст 8 кб для кода ДОС. Но при наличии расширения ОЗУ есть лучшее решение. Требуется перезашивка ПЗУ 4К в области E000...EFFF. Совместимости это не нарушит, т.к программами используется только вход E001. Поэтому достаточно прошить в ПЗУ по этому адресу код команды JMP (плюс загрузчик с дискеты), а сам исполняемый код ДОС разместить в ОЗУ 8400, что и выгоднее, т.к тогда можно менять ДОС. А в ПЗУ E000 удобно иметь п/п-ммы чтения/записи сектора и п/п-мму форматирования трека, как это сделано в большинстве компьютеров.
- - - Добавлено - - -
PS: А нельзя ли также сделать версию эмулятора ОРИОНА с таким же РК-КНГМД, но стоящим по адресу F600. Да, я не ошибся, у меня РК-КНГМД стоит на месте третьего излишнего ППА F600 (незачем впустую нагружать шину, лучше с'экономить нагрузочный ресурс шины для турбирования).
PPS: А нельзя ли также ввести в РК86 поддержку IDE-винчестера (схема с обменом через третий ППА)? РК86 с ОЗУ 1 мб и винчестером на 2 терабайта - это голубая мечта детства многих любителей.
barsik, скоро будет, вроде бы основные Ваши пожелания в нем можно будет реализовать, но не ждите от меня слишком многого: судя по критике давно развиваемого эмулятора от b2m в соседней теме, боюсь, что к моему новоиспеченному претензий будет куда больше ;)
Насчет имен образов дисков: я пока использую .rkdisk Можно сократить и до .rkd, почему бы и нет? Дискет CP/M для РК-НГМД в природе не видел, вообще, если есть какие-то образы кроме того RK86DOS29.rkdisk, с удовольствием бы на них посмотрел. Утилиту для копирования файлов GAM и т. п. на/с образа дискет RK-DOS я писать пока не собираюсь, можете заняться этим вопросом. Я бы предложил оформить ее в виде плагина для FAR Manager, но можете поступить как Вам удобнее.
Выложил тестовую сборку 4-й версии и завел новую тему:
http://zx-pk.ru/threads/27488-emu80-v-4.html