С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Проблем почти не было у эмулятора А. Савельева. Но автора, увы, уже нет, а эмуль ориентирован был под DOS. Emulator 3000 имеет неплохую поддержку БК-11 (пожалуй наиболее адекватную среди Виндозных эмуляторов, по слухам, там были использованы далеко не последние исходники эмулятора Савельева), но эмуль уже лет 200 не обновлялся. А остальные современные эмуляторы, если погонять на них демки, сильно уступают двум предыдущим... Ну и ни один из них не приблизился к реалу настолько, как, например, эмуляторы Спектрума, Атари 8-бит и проч...
Как говаривал старик Палсекамыч (которого некоторые историки ошибочно называют Пепсиколычем или даже, прости Господи, Бублегумычем): "Не клади все яйца в одну... мошонку!"
даже этот ?
http://spc-emu.uphero.com/development.html
Там вроде есть прошивки для УМК и УМПК-80, можно сделать эмуляторы
http://radiokot.ru/forum/viewtopic.php?f=34&t=94426
Собираю в коллекцию советские калькуляторы и компьютеры.
Мой сайт: http://www.leningrad.su/museum/
Помещаю это сообщение здесь, т.к оно не в формате темы "F.A.Q. по эмулятору B2M".
У меня нет устройств с CP/M с блоками более 2К. А возникло желание посмотреть на CP/M с блоками в 16К. Как это сделать?
Простой выход, - воспользоваться эмулятором с эмуляцией НГМД и CP/M такой, где можно изменить формат диска. Для обычного СПЕЦИАЛИСТА эмулятор не поддерживает НГМД, для РК86 с РК-НГМД - вообще нет эмулятора. Остаётся только ОРИОН.
Для начала хочу выразить панегирик B2M, за его эмулятор. Эмуляция дисковода действительно удобна при использовании старого ПО. Хотя в моём случае меня больше устроило бы наличие в эмуляторе двух функций - запись и чтение сектора, доступных из программ КР580/Z80.
Увы, в дистрибутив эмулятора не включён конфиг для ОРИОНА с голым Z80.
Мне пришлось потратить 2 дня, чтобы разобраться почему в эмуляторе B2M с поддержкой НГМД антикварные CP/M грузятся и работают, а мои DOS не работают. Мой загрузчик для Z80 вообще не грузит, но загрузчик MBOOT$ (по цифре 4) грузит. Но... только антикварные ДОС.
После долгого электро-траха понял, что грузятся только ДОС, что написаны для КР580. Тогда стало ясно, где "собака зарыта", что дело в Z80.
Причина оказалась в конфиг-файле. Оказывается для перевода ОРИОНА на Z80 недостаточно заменить слово К580ВМ80А на слово Z80, как это делается в конфиге для РК86. После долгих мучений удалось выяснить, что чтобы Z80 работал на ОРИОНЕ надо в секцию CPU включить строки:
port.maptomem=0
port[F8]=vid.mode
port[F9]=mm.page
port[FA]=vid.page
Частично помогло, но не целиком. Попытки загрузиться моим Z80 загрузчиком НГМД не удались. Удачно, что для всех своих ДОС я всегда делал не только версии загружаемые с НГМД, но и ДОС стартующие, как файлы ORDOS из ROM-диска. И вот ДОС стартующие $-файлами заработали с таким конфигом без проблем. Загрузчик MBOOT$ (п.4) после исправления конфига тоже стал наконец грузить версии DOS на Z80.
Дело в загрузчике, - догадался Штирлиц... Стало ясно что проблема в моём Z80-загрузчике, - он не грузит те CP/M, что грузятся загрузчиком MBOOT$ от error404. Загрузчик 1990 года для КР580 тоже заработал. А загрузчик на Z80, которым я пользовался с 1992, так и не заработал. Что предположительно свидельствует не о 100% эмуляции архитектуры.
Всё-же наконец стало можно странслировать CP/M для НГМД с блоками в 16К и проверить их в эмуляторе. Это не проблема (замена 3 цифр).
Для начала я решил инсталлировать на дискеты десяток версий ДОС, чтобы получить загрузочные диски. Это получилось. Но снова с глюками. Не могу об этом писать, пока не разобрался в сути... В итоге до CP/M с блоками в 16К ещё даже не добрался.
Возник вопрос. В каком объёме эмулятор B2M поддерживает КНГМД на ВГ93? Я было собрался понаделать ODI-образов дискет разного формата, воспользовавшись форматёром UNIFOR.COM. В частности HD-формата 1640 кб и 1800 кб, для которых у меня есть DOS и реальные дискеты (но не TD0). Но, облом. При запуске форматёра (причём любого) происходит тупой завис. Не знаю также как получать ODI-файлы из реальных дискет.
С другой стороны, я не могу перевести и TD0 файлы реальных дискет в ODI-формат (SteinBlume не помогает, не берёт мои TD0).
Никто не знает, где можно взять программу для конверсии TD0 в любой другой формат с доступом к файлам?
Таким образом остаётся только создавать ODI-файлы формата отличного от 800К вручную, набивая коды с клавиатуры байт за байтом. Но тут возникает ряд вопросов.
Непонятно чему служит строка.
vdpb="2800040F0084017F00C00020000400"
Из интереса закомметировал эту строку. И вдруг...
Ничего не изменилось! По крайней мере, на первый взгляд. Система грузится, файлы копируются. Это значит, что в эмуляторе B2M можно использовать и другие ДОС (у которых ИНФО-блок в BOOT-секторе другой).
Нетрудно догадаться, что эта строка отображает БПД, часть ИНФО-блока считываемого в подпрограмме NASTR, что вызывается из SELDSK CP/M-BIOS и в грамотных CP/M из BDOS-функции RESET.
Вопрос: Сколько максимум секторов в треке и треков поддерживает эмулятор B2M, эмулируя БИС ВГ93?
Т.к регистр сектора однобайтовый, то д.быть - не менее 256. Аналогично, относительно числа треков. Без всякой связи с реальным дисководом.
В таком случае можно иметь 256 кб в треке на 256 треках, что даёт размер диска в 64 мб. Т.е, если ограничений в эмуляторе B2M нет (реальные ограничения в реальном ВГ93 не волнуют, речь только об эмуляторе B2M), то в этом эмуляторе можно реально проверить быстродействие CP/M с реальным винчестером и дисками большого объёма.
Вопрос: Поддерживает ли эмулятор B2M дискеты любого формата? Или не стоит тратить своё время пытаясь это использовать. В частности, хочу сделать диск размером в 32 мб и посмотреть на скорость CP/M.
Кстати, быстродействие эмулятора при работе с "дискетами" (даже при Clock 2.5 МГЦ) примерно в 4-8 раз больше, чем скорость обмена реального КНГМД на ВГ93. Кроме того, скорость Z80 можно поставить 10 МГЦ (тут ограничение только в скорости IBM PC, т.к эмулятор ресурсоёмкий и на медленной PC может не "выжать" 10 МГЦ).
Совет пользователям. Не пытайтесь запустить сразу две копии эмулятора в дисководном варианте. Т.к тогда на втором эмуляторе будет ошибка, т.к первый эмулятор захватывает ODI-файл образа диска в монопольное пользование.
Стоит помнить, что только HD-версии ДОС могут работать в формате более 5 секторов в треке и более 80 треков, т.е более 800К. В версиях CP/M ОРИОНА из 1991 года размер Alloc Table резервирован только для дискет размером до 800К.
Спойлер только для B2M (другим не читать). Это не критика, а заметки о том, что хотелось бы иметь исправленным в будущих версиях и вопросы.
Скрытый текст
Никакой диагностики, не выдаётся, если не найден файл загружаемый при обработке файла конфигурации (ПЗУ, ROM-диск, карта клавиатуры и образы дисков), а вместо этого происходит тупой завис.
Очень неудобно не знать какой диск вставлен. Невозможно узнать какой диск уже стоит в данном приводе. В чужих эмуляторах имя "вставленного" сейчас диска, по крайней мере в меню смены диска, отображается..
При открытии файла окно просмотра слишком маленькое и не раздвигается как окно, что неудобно при большом числе файлов. Удобнее иметь большое вертикальное окно прокрутки.
Что делает строка vdpb.boot="Orion\DISK_001.ODI"
По логике с этого диска д.быть загрузка, но загрузка происходит с диска указанного image[0].file. И даже когда image[?] нет, все-равно.
Как "шариться" по всем банкам в отладчике? Можно вручную записать что-то в упр.регистр F900, чтобы переключить банку. Но при попытке нажать F5 в другой банке произойдёт улёт.
И также, как в эмуляции ИРИШИ, раздражает раскладка клавиатуры. Такое впечатление, что до меня никто эмулятором B2M для эмуляции ОРИОНА не пользовался (или мучился, но стеснялся пожаловаться). Клавиши '^~' и ':*' поменяны местами. Это ни как на PC, ни как в РК86-клавиатуре. Очевидно, для исправления достаточно где-то поменять 2 цифры, чтобы всё стало как в РК86. Но где и что?
Как устроена и используется LAYOUT.KBD. Если её загрузку в конфиге закомментировать, то эмулятор перестаёт реагировать на клавиатуру, отчего использовать vk.xlat[0/1][hh]="HH" для исправления раскладки, ни с ней, ни без неё не получается.
Что делает строка RST(7) в конфиге ОРИОНА?
Насчёт строки 'port.maptomem=0'. В ОРИОНЕ используется и OUT XY и STA XYXY, т.е к системным регистрам одни программы обращаются по STA, другие по OUT. Причём при Z80 с одними адресами OUT должен попадать в память, с другими игнорироваться. Какая строка maptomem должна быть?
Почему в файлах из дистрибутива
Orion-128 Z80-Card-II.cfg
Orion-128 Z80 HDD.cfg
такой странный блок 'mm'?
Получается, что во всех 4-х банках разные способы доступа к памяти, а ведь в реальном ОРИОНЕ все банки одинаковые. Можно предположить, что это какая-то отладочная версия конфига. Или же тут какая-то другая непонятная конструкция и map[x] не означает выбор текущей банки портом F9, а что-то иное настроенное на конкретную программуКод:mm : MemMap { map[0][0000-3FFF]=mem1.frame[1] map[0][4000-EFFF]=mem1.frame[0][4000] map[0][F000-F3FF]=mem1[F000] map[0][F400-F4FF]=sys.data map[0][F500-F5FF]=app1.data map[0][F700-F7FF]=extmap map[0][F800-F8FF].wo=vid.mode map[0][F900-F9FF].wo=mem1.frame[0].page map[0][FA00-FAFF].wo=vid.page map[0][F800-FFFF].ro=bios[0000] map[1][0000-3FFF]=mem1.frame[1] map[1][4000-FFFF]=mem1.frame[0][4000] map[2][0000-EFFF]=mem1.frame[0] map[2][F000-F3FF]=mem1[F000] map[2][F400-F4FF]=sys.data map[2][F500-F5FF]=app1.data map[2][F700-F7FF]=extmap map[2][F800-F8FF].wo=vid.mode map[2][F900-F9FF].wo=mem1.frame[0].page map[2][FA00-FAFF].wo=vid.page map[2][F800-FFFF].ro=bios[0000] map[3][0000-FFFF]=mem1.frame[0] }[свернуть]
Последний раз редактировалось barsik; 16.03.2017 в 04:11.
Я пользовался такой программой для преобразования TD0 в ODI (во вложении. она работает только на 32-битных Виндовс, 64-битные не пойдут). Пример:
WTELEDSK.EXE TURBO128.TD0 -oTURBO128.ODI
Как она будет работать на форматах отличных от 800к не проверял. В основном я конвертировал чужие TD0-шки (все они были от 800к), сам я этот формат недолюбливаю еще с прошлого века за привязнанность Теледиска к работе "по железу" (из-за чего оно было весьма капризно к окружению) и ничего своего (что могло быть более 800к) в этом формате не хранил.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Отправьте мне, если можно, сюда [email protected] пару td0 образов на пробу.
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Вот тут есть какие-то исходники для работы с TD0:
https://github.com/jfdelnero/libhxcf...eledisk_loader
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
И тут, например: http://www.emuverse.ru/wiki/Teledisk
Диски завтра гляну, скажу.
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Все команды ВГ93, кроме команд форматирования (т.е. чтение/запись дорожки целиком). Причина проста и очевидна - эмуляция ВГ93 реализована только для работы с образами, являющимися посекторной копией. Так проще, так легче...
Вот я сейчас расскажу, а в ответ опять получу тонну критики, что так неправильно, неудобно и т.п.
Это DPB виртуального CP/M диска. Чтобы им воспользоваться, нужно при открытии образа выбрать тип файлов *.* и любой файл из каталога. Тогда этот каталог станет виртуальным диском, и все файлы размером не более, чем размер логического диска, описываемого этим DPB, будут доступны через этот виртуальный образ, причём как на чтение, так и на запись.
256 треков, 2 стороны, 255 секторов. Но! По умолчанию геометрия диска задана 80 треков 2 стороны 5 секторов 1024 байт. Т.е. в терминах эмулятора 80C2H5S1024. Эту геометрию можно указать в секции ВГ93:
image[0].geometry=80C2H5S
Если количество байт не указано, будет 1024. Геометрия задаётся не только для того, чтобы описать образ диска, но и для того, чтобы ВГ93 правильно выдавал ошибку позиционирования.
Максимальным будет 256C2H255S1024, но я не проверял работу с такими образами.
Забота о пользователе Работа с дисками и так не быстрая, а если ещё и специально притормаживать...
Правильно. Ни к чему двум эмуляторам писать на один диск. Данные попортятся.
Обычно конфиги делаю я, для себя я не стал делать всяких раздражающих сообщений. А если пользователь удалил файл из эмулятора - сам виноват.
Согласен. Где отображать имя файла?
Это при открытии файла образа диска, или речь об окне выбора конфига?
Задаёт данные нулевых треков виртуального диска. Если вместо реального образа воспользоваться виртуальным диском, а CP/M располагается на диске, то надо же откуда-то её грузить. Иначе при выходе из программы или нажатии ^C в командной строке будет зависон.
Через Ctrl+M можно выбрать, что отображать в окне дампа. Но там физический адрес, так что соответствие "банке" придётся высчитывать самому. Там-же можно и порты выбрать, их тоже можно менять. Но нужно иметь ввиду, что в некоторых случаях чтение из порта может привести к изменению состояния устройства.
Просто матрица клавиатуры 8х16, младший бит слева. Наименование клавиш лучше подсмотреть в имеющихся файлах. Должно соответствовать английской клавиатуре, т.е. имя клавиши (имеются ввиду спец-символы), такое, какой символ выдаёт английская клава при нажатии на клавишу.
Часто вместо контроллера прерываний используется код FF, в мнемониках i8080 это команда RST 7. То есть эта строка задаёт источник прерываний в системе с подобным образом формирования прерываний.
Вроде я кроме port.maptomem=1 других строк не использовал. Если не задавать эту строку, отображения портов на память не будет. Но это настройка только для ВМ80.
Данная конструкция призвана менять конфигурацию памяти при задании соответствующих битов порта FB.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)