PDA

Просмотр полной версии : Загрузка с iPhone на БК-0010 в 8 раз быстрее



Manwe
22.04.2019, 18:51
Через магнитофонный вход можно загружать игры на БК0010(01) в 8 раз быстрее.
Для этого нужен онлайн конвертер (http://thesands.ru/bk0010/wav-converter/) из bin в wav, качественный источник звука, а также стандартный шнур-переходник (https://zx-pk.ru/threads/30298-zagruzka-s-magnitofona-na-bk-0011(m).html?p=1005671&viewfull=1#post1005671) с 3,5 мм джека на круглый 5-штырьковый разъём DIN 5.

Конвертер создаёт WAV из двух частей:
1. 198-байтный загрузчик с автозапуском. Он записан на максимально возможной скорости для стандартного ПЗУшного драйвера магнитофона. Длится полторы секунды - это примерно в 3.8 раз быстрей стандарта. В этой части записано имя, адрес загрузки и длина файла, стартовый адрес. Подробное описание формата с графиками здесь (https://zx-pk.ru/threads/30298-zagruzka-s-magnitofona-na-bk-0011(m).html?p=1007042&viewfull=1#post1007042).
2. Данные игры в особом турбо-формате на скорости 10000 бод. Заканчиваются двумя байтами контрольной суммы, которые также грузятся в основную память (то есть файл после конвертации становится на 2 байта длиннее). Описание формата ниже.

В отличии от стандартного формата записи, в турбо-формате нет синхроимпульсов. Для синхронизации используются фронты сигналов самих данных. Частота дискретизации wav 40000 Гц. Одной клетке на рисунке соответствует один отсчёт в wav-файле.
http://thesands.ru/bk0010/wav-converter/wavturbo.png

Чтобы сконвертировать bin-файл в такой формат, в конвертере (http://thesands.ru/bk0010/wav-converter/) нужно выбрать "БК0010 3 МГц - ускорение в 8 раз с турбо-загрузчиком"

Помимо очевидного преимущества (скорость загрузки), есть ещё одно: игры с автозапуском проверяются на ошибку контрольной суммы. Обычный драйвер ПЗУ этого не делает для игр с автозапуском.
Данные (уровни, сохранения) в таком формате записывать нельзя. При конвертации данных выбирайте "БК0010 3 МГц - гарантированно прочитается на любой БК".

http://thesands.ru/bk0010/wav-converter/BK0010-audio-loader.jpg

Под "качественным источником звука" подразумевается действительно хороший проигрыватель, так как передача данных идёт на частотах 13.33-20 КГц
Работоспособность проверена на плеере SanDisk Sansa Clip, iPhone 6 Plus, iPhone SE (все три на 100% громкости), Mac mini 2014 (50% громкости).
Проверку не прошли: телефон Huawei P20 Lite, iMac 2009.
Тестировались 3 экземпляра БК0010-01 (ноябрь 1990, декабрь 1990, июль 1991). Везде читается без единой ошибки.

На БК0011(М) метод конвертации "БК0010 3 МГц - ускорение в 8 раз с турбо-загрузчиком" не заработает, потому что в Мониторе БК0011М нет автозапуска. А также потому, что у БК0011 другие тайминги (подправить тайминги в коде загрузчика несложно, но автозапуска-то всё равно нет).


Связаться с авторами можно в Telegram:
@lzakirov - конвертер на JavaScript.
@Manwe_SandS - турбо-формат, ассемблерный код, тестирование.
Особая благодарность speedy, Tarh, Alex Pleninger за их БК0010 и blackmirror за идеи.

Исходники загрузчика: 68847
Называется "Максим" потому, что строчит как пулемёт :)

goodboy
22.04.2019, 20:09
198-байтный загрузчик
а если загружаемые данные накладываются на область где он работает ?

Manwe
22.04.2019, 21:21
а если загружаемые данные накладываются на область где он работает ?Такого не будет, всё предусмотрено. Загрузчик копирует часть себя в адреса 400-556. Если же программа начинается с адреса ниже 556 (а я таких встречал всего пару), конвертер выдаст ошибку. В таком случае можно попытаться снять и заново установить автозапуск какой-нибудь сторонней утилитой (CF50, BKpack).

NEO SPECTRUMAN
22.04.2019, 22:01
Для этого нужен онлайн конвертер
только я было хотел написать что я думаю об аффтаре изза не ОФФЛАЙН конвертер
и...
оказалось сохраненная html-ка прекрасно работает в ОФФЛАЙНЕ как многие другие онлайн калькуляторы
так шито +1

и реквестирую такое же для рк-шек львов-ов и для других отечественных компутеров
пушо писать самому лень и нечем тестировать


Тестировались 3 экземпляра БК0010-01 (ноябрь 1990, декабрь 1990, июль 1991). Везде читается без единой ошибки.
НЕТ это не катит
нужно еще несколько вариантов ускорения помедленнее
на случай если 8х не заработает

нельзя надеться на идеальную точность воспроизведения и на 100% совпадение таймингов
да еще по 3-м машинам оттестенное
никто не будет покупать айфон для загрузки с него

например в otla-е 100500 штук вариантов
+с разными алгоритмами
и не все работают без ошибок

- - - Добавлено - - -


сохраненная html-ка прекрасно работает в ОФФЛАЙНЕ
что надо бы указать в первом посте

- - - Добавлено - - -


а если загружаемые данные накладываются на область где он работает ?
А чего хотим?

Я долго пинал дельту за несовместимость с wolf48
потом оказалось что всему виной турбо загрузчик...

так что тут так
если повезет и загрузчик не помешает своим присутствием в памяти то будет вин
но это не 100%

- - - Добавлено - - -


Такого не будет, всё предусмотрено. Загрузчик копирует часть себя в адреса 400-556. Если же программа начинается с адреса ниже 556 (а я таких встречал всего пару), конвертер выдаст ошибку.
а варианты переместить в таком случае в другое место?
количество загружаемых данных известно
можно ложить немного дальше чем конец загружаемых данных

- - - Добавлено - - -


в Мониторе БК0011М нет автозапуска.
а нельзя чтоб стандартный загрузчик затерел данными какие то системные переменные или стек (не знаю как он в бк-шках)
и чтоб ВНЕЗАПНО по окончанию подпрограммы по ret-у передалось управление турбозагрузчику?

Manwe
22.04.2019, 22:47
оказалось сохраненная html-ка прекрасно работает в ОФФЛАЙНЕВнесём небольшие улучшения в дизайн и приложим конвертер к первому сообщению в виде zip-архива.


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



НЕТ это не катит. нужно еще несколько вариантов ускорения помедленнее. на случай если 8х не заработаетТам есть варианты на выбор.


нельзя надеться на идеальную точность воспроизведения и на 100% совпадение таймингов.Я пробовал менять частоту дискретизации WAV от 36 КГц до 40 КГц (это довольно большой разброс). Работает. Точное совпадение таймингов необязательно.


никто не будет покупать айфон для загрузки с негоУ конвертера есть две опции для менее качественных устройств. В 2-2.5 раза медленней, зато с Huawei прочитается.



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


а нельзя чтоб стандартный загрузчик затерел данными какие то системные переменные или стек (не знаю как он в бк-шках)
и чтоб ВНЕЗАПНО по окончанию подпрограммы по ret-у передалось управление турбозагрузчику?На БК0010 мы так и делаем.
На БК0011 загрузка происходит не в ту страницу, где стек. Я писал в параллельной теме: ПЗУшная программа загрузки с магнитофона переключает страницы после каждого (!) загруженного бита (!!!). Поэтому перетереть системные данные (стек и прочее) не получится. Может быть кто придумает обходной хак – тогда сделаем.

NEO SPECTRUMAN
22.04.2019, 23:13
загрузки с магнитофона переключает страницы после каждого (!) загруженного бита (!!!).
боже ш ты мой

- - - Добавлено - - -


Там есть варианты на выбор.
ну если это все турбо загрузчики тогда хорошо

- - - Добавлено - - -


На БК0010 мы так и делаем.

177777
не прошло и 10 лет как я понел что в бк-шке используют октальную систему счисления
которая взрывает мне моск... :)
никогда не читал руководство программиста для БК
и всегда с квадратными глазами смотрел на эти дикие адреса

- - - Добавлено - - -

Особенно меня радуют всякие правообладатели...
http://emuverse.ru/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D 0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0 %BD%D0%B0_%D0%91%D0%9A-0010-01

Manwe
23.04.2019, 09:11
ну если это все турбо загрузчики тогда хорошоОни не турбо в том смысле, что у них нет своего отдельного загрузчика и собственного метода хранения данных. Но в то же время, они разогнаны почти в 4 раза по сравнению со стандартной скоростью загрузки. Медленней, чем турбо, но зато и требования к качеству звука ниже. Так что все реальные случаи использования покрыты, мне кажется.

NEO SPECTRUMAN
23.04.2019, 11:37
Так что все реальные случаи использования покрыты, мне кажется.
ну если стандартный загрузчик позволяет
то да

Manwe
27.12.2019, 13:13
Программы для передачи данных с PC на БК 0010 и БК 0011 по магнитофонному каналу в ускоренном режиме (в 8 раз быстрей стандартной загрузки с магнитофона).

Update 11.06.2020: новая версия состоит из одного файла, он определяет где запущен - на БК 0010 или на БК 0011м - и корректирует тайминги чтения.
Кроме того, новая версия загружает данные в экран, чтобы был виден прогресс.
После окончания загрузки и проверки контрольной суммы загруженное перемещается в нужные адреса и уже оттуда сохраняется (в случае copier) или сразу запускаются (в случае receiver).
В нижней памяти новый загрузчик занимает меньше места: адреса с 400 по 512 для copier и с 400 по 432 для receiver.
В архиве программы и исходники:
https://manwe.pdp-11.ru/Tools/copier.zip



Старая версия:
71105

Copier10 - программа для БК 0010. Принимает файл с PC и сохраняет его на диск.
Copier11 - то же самое для БК 0011 4 МГц.

Receiver10 - программа для БК 0010. Принимает файл с PC и сразу запускает его.
Receiver11 - то же самое для БК 0011 4 МГц.

Получить файл в формате turbo-WAV можно путём компиляции в кросс-ассемблере PDPy11 с опцией make_turbo_wav. Пример ассемблерного исходника:

.LINK 40000
make_turbo_wav
insert_file "picture.raw"
.END

Компилятор PDPy11 под Windows, MacOS, Linux можно скачать здесь: https://github.com/imachug/PDPy11

В загрузочный диск MKDOS можно добавить текстовый файл STARTS.COM и прописать в нём "receiver10" (или receiver11, в зависимости от модели БК). Тогда при включении БК будет ожидать приёма файла с PC в формате turbo-WAV и затем запустит его. Очень удобно для отладки программ на реальном железе.

Manwe
11.06.2020, 10:41
Видео с работой обновлённого загрузчика:
https://t.me/bk0010_11m/121176
Ссылка на загрузчик в предыдущем сообщении (Update).