Эта не пойдёт?
Вид для печати
Эта не пойдёт?
Было бы не плохо приложить оно в комплект к эмулятору.
Умя дето были и для РК и для Львова...
но я их дето потерял и названия не помню...
но в wav по моему они не переводили
а просто пищали...
Хорошо, постараюсь сделать в одной из следующих версий.
Для спектрумиста может быть и ничего удивительного, но не для РКшника ;)
Чем вот эта не устраивает?
http://zx-pk.ru/threads/6505-radio-8...age17.html#168
Точно так же работает, если ассоциировать так, как я описал выше. Даже лучше - файл еще и автоматически запускается.
- - - Добавлено - - -
"Пищащую" утилиту wrkwin32 можно взять из архива Emu80 v.2:
http://emu80.org/files/emurk286.zip
Будет работать в любой версии windows несмотря на свой "возраст".
А "пищащую" утилиту можно адаптировать для генерации пищания не в динамик, а в wav-файл? :) Когда в музее резко надо загрузить РК не с ленты, приходится искать ноутбук и грузить из пищания :)
а как wav в rk переводить ?
нигде такой утилиты не нашёл.
Очередная тестовая сборка:
http://emu80.org/v4beta/Emu80_40250.zip
Желательно распаковывать в новую папку, не переписывать "поверх" старой!
Изменения в версии 4.0.250:
Легенда:
+ Нововведение
* Изменение / улучшение
- Исправлен баг
! Известная проблема
Изменения в версии 4.0.250:
+ Проигрывание wav-файлов по Alt-W. Загрузка возможно при отключенном перехвате обращений
к магнитофону. (Отмена проигрывания - повторное нажатие Alt-W)
* Убран суффикс "h" у шестнадцатеричных констант в дизассемблере отладчика
* Реализовано отключение перехвата обращений к магнитофону на Микроше
- Устранено периодическое "падение" эмулятора (чаще всего при переключении типа компьютера)
- Восстановлена загрузка cpu-файлов из командной строки
- Заменен исправленной версией файл RK-DOS для Z80 (спасибо barsik)
- Исправлено отображение заголовка окна при переключении режимов
В папку _stuff добавил набор игр "Hit parade" для Микроши в формате wav.
Информацию в шапке также актуализировал.
Pyk, не убегайте, сейчас будет отчёт об ошибке найденой мной.
- - - Добавлено - - -
что-то явно не так со сбросом в эмуляторе (alt+F11).
такое впечатление будто что-то остаётся в памяти после сброса и в конце концов после нескольких открытий файлов вылазиет баг.
смотрите видео: https://youtu.be/6jOqbKRayR0
файлы из этого видео можно взять здесь http://zx-pk.ru/threads/17872-neizve...l=1#post911000
так-же после нескольких открытий файлов бывает такое что открываешь один файл, а запускается почему-то предыдущий.
ну и есть пожелание ещё, чтоб эмулятор запоминал последний запущенный тип компьютера.
раздражает постоянно менять партнёра на что-то другое.
В ̶п̶о̶с̶л̶е̶д̶н̶е̶й̶ крайней
Нужно как то отображать что эмуль стоит на паузе
- - - Добавлено - - -
ага
вот только попробуй это проделать в 100500 эмуляторах
из многих дебагеров управление недоступно
кстате пожелания по дабагеру
нужна виртуальная клавиатура (на которой жмешь клавишу(их комбинации) и она(они) подсвечивается и висят пока на них не нажмешь еще раз)
сделать вход магнитофона (чтоб выставить что от туда считываитсо)
тк подменять содержание регистров ручками это...
ZEman, все нормально. Просто программы со стартовым адресом 0100 и запускать нужно с помощью директивы G100. При выборе типа компьютера память очищается, а вот при сбросе - нет, поэтому остается мусор по адресам 0-FF от предыдущей программы. Запоминание типа компьютера со временем будет, а пока можно вручную поправить emu80.conf.
zebest, паузу по Alt-F11 оставлял для удобства отладки Монитора. Даже не знаю, как лучше - оставить или убрать... Скорее всего доработаю реакцию на Alt-F11 с запущенным отладчиком, а при сбросе уберу.
- - - Добавлено - - -
Это о чем? О какой деме речь?
- - - Добавлено - - -
P.S. Отображение паузы тоже в планах. Пока вообще в эмуляторе никакого окна статуса или даже статусной строки нет :(
Pyk, я что-то не понял, при ресете память не очищается только в эмуляторе или-же на реальной машине так-же ?
смысл тогда вообще какой в сбросе ?
И да, в любом случае, спасибо за этот отличный эмулятор.
некоторые отображают PAUSE в заголовке окна (не помню как называется на синей полоске с emu80)
- - - Добавлено - - -
чота у нас не любят давать ссылки
наверное это
http://www.pouet.net/prod.php?which=69811
типун...
Не работает ВГ75 код F0 "конец строки"/"End of row".
- - - Добавлено - - -
Да. Забирайте скорее, больше не будет (zebest так сказал :v2_lol: )
- - - Добавлено - - -
На реальной машине при ресете память не отчищается.
Более того, аппаратно сделан короткий импульс сброса сколько бы не удерживалась кнопка "сброс", что бы процессор быстро сбросился, запустил "монитор" и проинициализировал DMA+CRT, т.е. как можно быстрее запустилась регенерация динамического ОЗУ.
понятно.
в таком случае нужна так-же эмуляция кнопки "power on/off" включение/выключение - при которой память очищается.
Действительно, не работает, хотя когда-то работало. Видимо, сломалось в ходе реализации новых фич.
Спасибо за багрепорт, поправлю. А демка понравилась :)
В моем эмуляторе для этого можно использовать повторный выбор типа компьютера по Alt-F9. Хотя, как уже говорили, в реале память не совсем очищается.
а кто-то может объяснить чем отличаются файлы *.rkr, *.rk, *.gam друг от друга ?
сконвертил и проверил несколько wav из rkr файлов для радио86пк - отлично работает.
а rk и gam файлы утилита возьмёт без проблем ?
rk и rkr переведённые в wav загружаются в эмуляторе.
а вот перевёл gam файл (например SKACHKI.GAM) - не запускается.
Новая сборка:
http://emu80.org/v4beta/Emu80_40251.zip
Изменения в версии 4.0.251:
- Исправлена работа кодов F0/F2 (конец строки/экрана) на ВГ75
класс !
а насчёт расширений файлов ответьте кто-нидь.
нет gam это переименованый другой формат
старая пищалка .gam-ов по идеи есть тут
ftp://ftp.radio.ru/pub/Emurk/
но чот спецификацию не нахожу...Цитата:
RK - общий формат файла без синхробайта (без уточнения)
RKR - файл Монитора "Радио-86РК" без с/байта
RKP - файл Монитора "Партнера" без с/байта
RKM - файл Монитора "Микроши" без с/байта
RKA - файл Монитора "Апогея" без с/байта
RKS - файл Монитора "Специалиста" без имени без с/байта
PKI - файл Монитора "Радио-86РК" с с/байтом
BSM - файл BASIC "MICRON" (с заголовком) с с/байтом
BSS - файл BASIC (без заголовка) с с/байтом
EDM - файл редактора MICRON с с/байтом
GAM - файл игровой программы для "Радио-86РК"
а как-нидь их можно перевести
gam в rk или rkr ?
rk, rkr, rka, rkp - это, по сути, один и тот же формат, последняя буква просто детализирует, для какого компьютера предназначается файл. Если просто rk, то либо для РК-86, либо может работать на разных.
rkm - файл Микроши, очень похож на предыдущие, но форматы не полностью совместимы - загружаться будут, но выдавая при этом ошибку.
gam - файл для RK-86, отличается от rkrотсутствиемприсутствием первого байта 0xE6. Почему rk2wav формирует незагружаемый wav из gam, не разбирался, возможно,не пишет как раз отсутствующийвторой раз пишет E6... Надеюсь, автор пояснит.
- - - Добавлено - - -
2 способа:
1. В любом hex-редакторе в начало файла добавить байт E6 и пересохранить с расширением rkr
2. Загрузить в эмуляторе gam с помощью директивы I и пересохранить в rkr с помощью директивы O.
по идеи аффтар описывает pki\gam
но описание какоето противоречивое выше сказаному
.Цитата:
E6 <- синхробайт (в файлах эмулятора EMU80 этот байт отсутствует)
XX XX <- начальный адрес файла
XX XX <- конечный адрес файла
..... <- данные файла
00 00 <- junk (может и отсутствовать)
E6 <- синхробайт
XX XX <- контрольная сумма
В принципе, два нуля перед контрольной суммой роли не играют, так как
при вводе они пропускаются при вводе первого байта контрольной суммы в
режиме "с поиском синхробайта".
да и в своих rka я не ставил синхробайта
может его на оборот нужно выкидывать из gam?
пересохранил с помощью команды "О".
результат - эмулятор стал сворачиваться в трубочку
:biggrin:
как раз в gam e6 и есть
ZEman, выкинь его и попробуй
вот короче
Вложение 60843
NEO SPECTRUMAN, а в чём редактировали ?
https://mh-nexus.de/en/hxd/
еще норм winhex
Просто все эмуляторы учитывают, что E6 в начале файла может присутствовать, а может не присутствовать и не смотрят на расширение. Поэтому и встречаются неправильно сформированные файлы: gam-файлы с E6 и, наоборот, rk - без E6...
Но изначально было так: rk - с синробайтом (формат моего эмулятора), gam - без синхробайта (формат эмулятора Демина).
GAM - с синхробайтом
RK - без синхробайта
Чтобы получить RK из GAM, действительнро нужно выкинуть из него первый байт E6
Вообще-то мне казалось, что всё наоборот. Во всех GAM-файлах из дистрибутивов 1998-99 годов все GAM-файлы с байтом E6. И до сих пор это так. Мне не попадались GAM-файлы без Е6 в начале. А RKR-наоборот все лишены байта E6, отчего ими опасно пользоваться в эмуляторах. Поэтому я все файлы храню или в ORD-формате, что предпочтительнее, или в GAM.Цитата:
Сообщение от Pyk
Но вот эти сведения ввели меня в замешательство. Если есть такое безобразие, то получается, что вообще нет стандарта. Раз стандарта нет, то лучше использовать единый стандарт ORD. В нём есть свободный байт, куда можно писать тип компьютера (младший ниббл, и особенности модификации или доработки, можно истратить бит на тип Z80/КР580). Важно, что сохраняется уникальное имя даже при хранении на дискетах.Цитата:
Сообщение от Pyk
Эмуляторы должны во всех процедурах чтения признавать ORD-формат и, в зависимости от того какой формат они ждут, сами конвертировать ORD в магнитофонный формат с нужными синхробайтами, пилотонами, паузами и т.п и выдавать эту смесь байтов на п/п-мму LDBYTE. Тогда и не будет "моря форматов", в которых сами их авторы уже запутались. Если не использовать ORD, как быть с форматом ИРИШИ, которая принимает файл в виде блоков, причём разной длины (и это не только в играх со своим загрузчиком, но и просто формат монитора имитирует посекторный обмен).
barsik, спасибо, это меня переклинило ;) Действительно, GAM - с синхробайтом, rk - без. Прошу прощения за то, что ввел в заблуждение, предыдущие сообщения поправил. А неправильные файлы (переименованные gam в rk) мне все же попадались...
а 0 перед последним синхробайтом и контрольной суммой?
их может не быть вообще?
или нужен хотя бы 1
максимальное количество не ограничено так понимаю
а если туда произвольные данные а не (но не е6)
они будут просто пропускаться?
как сделано в настоящем загрузчике?
- - - Добавлено - - -
получается что да
так как файл который захочет грузится с e600 (хотя как стартовый адрес это....)
будет не правильно трактоватся
и загрузится с 00**
да еще и...
а из за отсутствия ограничения на количество 00 перед последним синхробайтом и контрольной суммой
нельзя никак проверить по размеру первый e6 синхробайт или старший байт адреса....
В стандартных входах РК есть п/п-мма ввод массива, которая полностью реализует директиву I. Не знаю как в клонах, а в самом РК это работает так. Сначала вызывается подпрограмма ввода двух байтов с поиском синхробайта (в роли которого E6 или его побитовая инверсия). Она пропускает любое число байтов, любых кроме E6 (или его инверсии). Любые байты передавать можно, если только из двух соседних байтов при их сдвигах в аккумуляторе не возникнет Е6.Цитата:
Сообщение от NEO SPECTRUMAN
Как только синхробайт найден, он тоже откидывается и дальше всё работает синхронно, - вводятся заказанные два байта. Затем вызывается подпрограмма ввода 2-х байтов уже без поиска синхробайта. Это будут 4 байта адресов загрузки. Далее зыпускается цикл ввода байтов до тех пор, пока текущий адрес ввода не станет равен конечному.
И вот тогда наступает момент, который Вас интересует. РК86 снова вызывает подпрограмму ввода 2-х байтов с поиском синхробайта. Таким образом, число байтов между концом блока и синхробайтом Е6 может быть любым, при условии, что среди этого потока битов нет байта Е6. Мне кажется, что байт 0 перед Е6 тоже не обязателен. Происходит сдвиг принятых битов, пока не возникнет Е6. Так что, если идут 2 байта 60 и 0Е, то по ним тоже произойдёт синхронизация. Это из-за того, что в этом формате нет побайтовой синхронизации (а в формате MSX есть). Именно поэтому перед синхробайтом выдают длинный пилотон, т.е блок из 256 (а иногда и более) нулей, чтобы человек услышав звук, мог нажать на <ВК>. Если пилотон не выдавать, а сразу начинать передачу с Е6, то шумы с выхода МГ могут сформировать ложный синхробайт.
Так, т.е с любым числом нулей до СБ контрольной суммы и любой паузой, сделано в РК86. Но в ОРИОНЕ претендующем на МГ-совместимость - не так. Там паузу вообще нельзя ввести, сразу возникает ТАЙМ-АУТ и уход на подпрограмму ERR_MG (ошибки чтения с МГ). И ОРИОН ожидает ровно 3 байта, причём в данном случае, точно не обязательно 2 нулевых и третий синхробайт Е6. Эти 3 байта могут быть любыми, т.к ОРИОН не сихронизируется по синхробайту, чтобы считать КС, он просто пропускает 3 байта и считывает 2 следующих, которые и оказываются контрольной суммой.
В СПЕЦИАЛИСТЕ контрольная сумма примыкает прямо к блоку данных. И никакой новой синхронизации по Е6 не делается. КС является как-бы частью блока, в смысле, что вводится с той же синхронизацией, отчего пауза перед КС недопустима.
Кстати, блок с КС может вводиться с инверсией. То есть вторым синхробайтом может служить байт являющийся побитовой инверсией E6 (это 19) и КС тогда надо тоже передавать в инверсии. Такой трюк сработает на РК86, т.к при второй синхронизации будет правильно поставлен флаг инверсии сигнала с МГ. А вот в ОРИОНЕ такой трюк не пройдёт. Т.о, это способ иметь формат РК86 несовместимый с ОРИОНОМ. Впрочем, для этого даже не надо исхитряться, достаточно добавить на один ноль больше или меньше перед КС.
Думаю, что в РК86 введётся и без (двух или иного числа) нулевых байтов между блоком и Е6, но пусть кто-нибудь проверит. Я могу сделать такую запись, если есть эмулятор, умеющий делать запись.
Я тут недавно узнал, что можно вводить МГ-записи в РК86 без гашения изображения на экране. Так что никто не хочет сделать для РК86 новый "монитор", где экран не будет гаснуть? Это теперь можно сделать, т.к пару месяцев назад в теме "РК86 на Z80" я освободил в ПЗУ РК86 КР580, если верно помню, ~80 ячеек. Этого должно Вам хватить на модернизацию подпрограммы чтения байта с МГ. Чтобы это сделать, надо сначала "кракнуть" коммерческую защиту от копирования и извлечь из неё подпрограмму чтения.
NEO SPECTRUMAN, в принципе, barsik все правильно уже написал.
Дополню лишь, что в Партнере (rkp) используются два нулевых байта перед КС, в РК и остальных - один. Но, как и следовало ожидать, все файлы считываются на всех машинах. Допускаю, что так будет и без нулевых байтов - можно проверить при желании.
А файл с E600 ни на одной из этих машин располагаться не может, так как ни на одной из машин в этом месте нет пользовательского ОЗУ. В Апогее видео-ОЗУ разве что, но и в этом случае что-то грузить туда как минимум странно. Так что реально проблем с этим не возникает.
Реальный РК86 читает инверсный блок, т.е когда синхробайт не Е6, а 19. А эмуляторы читают такие записи? Ведь один магнитофон не инвертирует сигнал, а другой инвертирует. А адрес 19XX для загрузки блока вполне может быть и для РК86. Синхробайты нужны.
Если заставить всех пользователей иметь магнитофоны без инверсии, то в ПЗУ можно с'экономить более 20-ти байт! Если эмуляторы не читают инверсные записи, то так и надо сделать. Никто не хочет проверить эмуляторы на соответствие реалу? Надо проинвертировать все биты записи и даже пилотон тогда станет не цепочкой нулевых байтов, а байтов FF.