Важная информация

User Tag List

Страница 1 из 13 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 124

Тема: Загрузка с магнитофона на БК-0011(М)

  1. #1
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    335
    Поблагодарили
    216 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Загрузка с магнитофона на БК-0011(М)

    Если у вас есть БК0011 или БК0011М, но нет дисковода или винчестера, эта программа для вас. Она позволяет загружать с любого источника звука (магнитофона, мобильного телефона) старые игры, написанные для БК0010. Для этого программа помещает в память БК0011(М) копию ПЗУ БК0010 и запускает её надлежащим образом.

    Для подключения мобильного телефона к БК вам понадобится стандартный шнур-переходник с 3,5 мм джека на круглый 5-штырьковый разъём DIN 5. Достаточно всего двух контактов: №2 - земля, №3 - левый канал.

    Нажмите на изображение для увеличения. 

Название:	DOC003069063.jpg 
Просмотров:	153 
Размер:	36.1 Кб 
ID:	68645 Нажмите на изображение для увеличения. 

Название:	DIN-5-cable.jpg 
Просмотров:	244 
Размер:	16.7 Кб 
ID:	68653 Нажмите на изображение для увеличения. 

Название:	DIN-5.jpg 
Просмотров:	200 
Размер:	12.8 Кб 
ID:	68654

    Если после включения БК0011(М) запустился Бейсик, наберите "MO" и нажмите клавишу Ввод. Вы попадёте в режим, называемый Монитором. Об этом свидетельствует значок-приглашение "@" на экране.

    В Мониторе нажмите "L" (Load - загрузка программы с магнитофона). На вопрос об имени наберите "BK0010" (для компьютера БК0011М) или "B:BK0010" (для компьютера БК0011) и нажмите клавишу Ввод. Можно даже не набирать «BK0010» – тогда загрузится первый встреченный файл. После этого включите на воспроизведение с вашего источника звука BK0010.wav. Загрузка длится 19 секунд. После окончания снова появится приглашение "@". Нажмите «G» (Go - запуск).

    Нажмите на изображение для увеличения. 

Название:	monitor11.jpg 
Просмотров:	230 
Размер:	5.8 Кб 
ID:	68646

    Теперь ваша БК0011(М) работает в режиме БК-0010. Символ приглашения здесь "?". Наберите "M" и нажмите клавишу Ввод (M - Magnetic tape, магнитофон). На вопрос об имени наберите название игры (например, "DIVERSANT") и нажмите клавишу Ввод. После этого включите на воспроизведение с вашего источника звука файл с игрой (например, diversant.flac).

    Нажмите на изображение для увеличения. 

Название:	monitor10.jpg 
Просмотров:	189 
Размер:	9.9 Кб 
ID:	68647

    Если игра снабжена автозапуском, после загрузки она сразу запустится. В противном случае вы снова увидите приглашение "?". Наберите "S" и нажмите клавишу Ввод (Start - запуск).

    После выхода в Монитор из корректно написанной игры можно загружать другую игру. При необходимости инициализировать параметры Монитора воспользуйтесь командой "S100274". Если выйти из игры не получается, выключите БК0011(М), подождите несколько секунд, после включения заново загрузите программу "BK0010", а затем уже другую игру.

    Конвертировать файлы из bin в wav можно онлайн конвертером или утилитой из командной строки или инструментом из эмулятора gid.

    Нажмите на изображение для увеличения. 

Название:	create_wav.jpg 
Просмотров:	227 
Размер:	19.7 Кб 
ID:	68655

    Архив с программой (wav, bin, исходник): BK0010_Game_Loader.zip
    Последний раз редактировалось Manwe; 11.02.2021 в 10:54.
    manwe.pdp-11.ru

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    335
    Поблагодарили
    216 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В перспективе - написание web-утилиты, которая будет конвертировать .bin в .wav повышенной скорости.

    Посмотрел код ПЗУ, который считывает настроечный сигнал.

    При исполнении программы считывания настроечного тона, запущенной в ОЗУ, считывание нуля - 56 тактов, считывание единицы - 42.6(6) такта. Откуда получается 42.6(6) понятно: инструкции BIT R5,(R3) и BEQ, повторенные 3 раза, выполняются за 128 тактов. Ветвление всегда длится 16 тактов, а инструкция BIT - два раза по 24 такта, а на третий раз - 32 такта (потому что в этот момент шина занята контроллером памяти).

    В статическом ОЗУ считывание нуля - 43 такта, считывание единицы - 35 тактов. В сумме 78 тактов (кстати, на БК0010 такие же значения, только сами такты длятся дольше).

    В ПЗУ измерить невозможно, но должно быть чуть медленней статического ОЗУ. Допустим, 80 тактов. Это раскладывается на 48 тактов для чтения нуля и 32 такта для чтения единицы (выглядит правдоподобно, потому что в первом случае 3 инструкции, во втором 2 инструкции). Генерировать настроечный тон будем в таких же пропорциях (скважность 3:2). Возьмём константу N = 10. Тогда ноль длится 48*10, единица - 32*10. В сумме 800 тактов процессора, что при 4 МГц даёт настроечный тон 5 КГц. Для передачи такого сигнала подойдёт Wav-файл с частотой дискретизации 25 КГц. В нём волна настроечного тона будет иметь форму три нуля, две единицы. Три нуля в Wav-файле длятся столько, что процессор успеет считать их 10 раз, и следующие две единицы - тоже 10 раз.


    Update: Продолжаю разбирать процедуру загрузки. После настройки на тон программа (адрес 156420) слушает 128 периодов волны и считает среднюю длину волны настроечного тона (фрагмент кода длится 48 тактов, то есть считается сколько раз укладываются 48 тактов в длину волны). Затем умножает на 1,5 и сохраняет в ячейку 42676.

    Во время чтения данных происходит следующее:
    1. Пропускается один период волны, обе фазы 1 и 0. Делается это кусочками кода по 32 такта. Значит, период этой волны (назовём её синхроимпульсом) должен быть не меньше 64-х тактов.
    2. Считается длина следующей волны. Кусками кода по 48 тактов. Итого, длина волны должна быть не меньше 96 тактов.
    3. Сравнивается со значением из ячейки 42676 (где хранится длина волны настроечного тона, умноженная на 1,5.
    4. Если результат больше - устанавливается бит C (мы считали единицу). Единица записывается в память (долго).
    5. Если результат меньше или равен - сбрасывается бит C (мы считали ноль). Ноль записывается в память (долго).

    Предварительные выводы:
    - синхроимпульс может быть очень коротким, но не меньше 64 тактов процессора,
    - на самом деле 64 такта - это ультразвук 62,5 КГц. Более реально в Wav'е с частотой дискретизации 25 КГц отвести 2 бита на 1 и два бита на 0, что даст в 10 раз меньшую частоту 6,25 КГц - её уже сможет воспроизвести бытовой источник звука.
    - настроечный тон задаёт период волны, соответствующий коду бита 0, длится не менее 96 тактов,
    - код бита 1 должен быть как минимум в полтора раза длиннее,
    - после кода бита должна быть пауза, чтобы программа успела записать бит в память.
    Последний раз редактировалось Manwe; 10.04.2019 в 16:36.
    manwe.pdp-11.ru

  4. #3
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    335
    Поблагодарили
    216 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Формат записи на магнитофон

    Итак, конвертер в WAV дописан, пришло время поделиться подробностями.

    Ковыряние в ПЗУ позволило понять формат записи на магнитофон.
    Вначале идёт настроечный тон, который ещё называют "пилотным тоном". В уютном Телеграм-чатике его окрестили футуристичным словом "пилотон". Я тоже буду использовать термин Pilotone™

    Про длину волны я расскажу позже, а пока общий вид: оранжевым цветом на графиках отображены служебные сигналы, синим - собственно данные. Звук во времени отображается слева направо.

    Запись на магнитрой ленте или в WAV-файле начинается так: 4096 периодов пилотона, затем один импульс с длиной волны в 4 раза больше, затем один период с длиной волны вдвое больше пилотона и один короткий (на самом деле так кодируется единица).



    Дальше записаны данные: адрес файла, длина файла, 16 байт имени файла. Если имя короче, остаток добивается пробелами.
    Данные кодируются так:



    0 кодируется импульсом такой же длины волны, как настроечный тон.
    1 кодируется импульсом с вдвое большей длиной волны.
    Во время чтения настроечного тона программа в ПЗУ вычисляет длину волны, а затем увеличивает в полтора раза и сохраняет. С этим значением будут сравниваться поступающие на вход сигналы - если сигнал короче, то это 0, если длиннее - 1.

    Как вы заметили, служебные сигналы чуть тише основных. Мы сделали так в своём конвертере для удобства отладки: открываешь WAV-файл и сразу видишь где служебные сигналы, а где кодируемые данные. Для БК громкость этих сигналов выглядит одинаковой.

    Клеточки надо понимать следующим образом: одна клетка - одна запись в WAV-файле. Для формата "8 бит моно" это означает 1 байт. Для формата "16 бит стерео" это два слова (то есть 4 байта). Одну такую запись ещё называют "отсчётом". Если вы видите горизонтальную линию длиной 4 клетки, значит ей соответствует 4 отсчёта в WAV-файле.

    Синхроимпульс должен совпадать с настроечным тоном. Однако, оказалось, что программу в ПЗУ можно обмануть и сократить синхроимпульс. Получилось так:



    Ускорение на 11% по сравнению со стандартным вариантом. Современные источники звука типа смартфона и музыкального плеера дают достаточное качество, чтобы такая оптимизация не помешала устойчивому чтению.

    После записи 20-ти байтного заголовка (адреса, длины и имени) снова следует настроечная последовательность. На этот раз короткая, у пилотона всего 8 периодов:



    Следом за второй настроечной последовательностью идут собственно данные файла. Бит за битом, начиная с младшего.
    Оканчивается всё 16-разрядным словом с контрольной суммой и небольшим хвостиком пилотона.
    Контрольная сумма считается так (R5 - адрес, R4 - длина):
    Код:
    	CLR R0
    1:	CLR R2
    	BISB (R5)+,R2
    	ADD R2,R0
    	ADC R0
    	SOB R4,1
    	RET
    Теперь самое интересное: какая частота дискретизации должна быть у WAV-файла? Экспериментально мы определили максимально возможную частоту 25000 Гц для БК0011 (частота процессора 4 МГц) и 21428 Гц для БК0010 (частота процессора 3 МГц). Причём, БК0011 читает и запись, сделанную для БК0010.

    Откуда взялись такие частоты? В прошлом сообщении я писал, что цикл чтения входных данных кратен 80-ти тактам процессора. Цикл прокручивается целое число раз, прежде чем обнаруживает смену уровня на магнитофонном входе. Для уверенного чтения это число (назовём его N) не должно быть слишком маленьким. Самое неприятное, что после считывания сигнала программа в ПЗУ тратит много времени на дополнительные действия. Например, на БК0011М она переключает страницы памяти после каждого (!) считанного бита (!!!). Из-за таких действий программа пропускает заметную часть следующего синхроимпульса (высокий уровень сигнала).

    Таким образом, частота дискретизации WAV-файла рассчитывалась по формуле (CPU / ( 80 * N ) ) * 4.
    CPU - это 3 или 4 МГц, в зависимости от модели БК.
    80 * N - продолжительность цикла, отслеживающего смену уровня. Измеряется в тактах процессора.
    4 - длина волны настроечного тона. Измеряется в отсчётах WAV-файла.
    Эксперименты показали: для БК0011 максимальное значение N = 8, для БК0010 N = 7.
    Ещё раз подчеркну, что N должно быть целое. Если проиграть WAV с произвольной частотой, получится такое:



    Ну а если частота правильная, то получаем загрузку в 2.6 раза быстрей стандартной. И даже быстрей, чем максимальная скорость копировщика CF50. Вот такая красота: https://www.instagram.com/p/BwAfRFXjKJK/

    Немного об авторах. Нас можно найти в Telegram:
    @lzakirov написал конвертер на JavaScript.
    @Manwe_SandS трассировал ПЗУ БК, разбирал формат и тестировал результат на реальном железе.
    @Lesha_Speedy прислал для тестов БК0010.
    Последний раз редактировалось Manwe; 27.12.2019 в 12:43.
    manwe.pdp-11.ru

  5. #4

  6. #5
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    335
    Поблагодарили
    216 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не знал про такой. Удобно использовать exe прямо в bat-файле при компиляции .mac - на выходе сразу wav, который можно проигрывать с компьютера и слать в БК. Полезно для отладки программ. Жаль что нет версии под современную Mac OS X.

    Но всё же наш конвертер даёт на выходе скорость в 1.9 раз больше, чем этот в турбо-режиме. Для больших файлов это критично.


    P.S. а есть аналогичный конвертер под формат УКНЦ?
    Последний раз редактировалось Manwe; 11.04.2019 в 00:07.
    manwe.pdp-11.ru

  7. #6
    Master Аватар для Raydac
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    998
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    151
    Поблагодарили
    122 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    P.S. а есть аналогичный конвертер под формат УКНЦ?
    не, у меня сделаны только под БК-0010 и спектрум, с укнц никогда дел не имел

  8. #7
    Оператор ДВК Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    363
    Поблагодарили
    307 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    P.S. а есть аналогичный конвертер под формат УКНЦ?
    вопрос к Арсению и @BYTEMAN
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

  9. #8
    Moderator Аватар для BYTEMAN
    Регистрация
    11.01.2006
    Адрес
    Брест/Минск
    Сообщений
    8,351
    Записей в дневнике
    4
    Спасибо Благодарностей отдано 
    127
    Спасибо Благодарностей получено 
    62
    Поблагодарили
    41 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от hobot Посмотреть сообщение
    вопрос к Арсению и @BYTEMAN
    https://github.com/nzeemin/ukncbtl-utils/wiki/sav2wav
    С уважением, Александр.
    Scorpion ZS-256 Turbo+ GMX-2048
    SID-Blaster/ZX
    Музей ретрокомпьютеров в Минске!
    Здесь ничего нет => http://byteman.by
    И здесь тоже --->>> http://bytespace.by

  10. #9
    Veteran Аватар для Manwe
    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,486
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    335
    Поблагодарили
    216 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Найти бы теперь download...
    manwe.pdp-11.ru

  11. #10
    Veteran
    Регистрация
    22.03.2018
    Адрес
    г. Усть-Каменогорск, Казахстан
    Сообщений
    1,332
    Спасибо Благодарностей отдано 
    77
    Спасибо Благодарностей получено 
    139
    Поблагодарили
    122 сообщений
    Mentioned
    20 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    https://yadi.sk/d/nMt1sanLbDjnpA

    Скомпилировал билдером, вроде работает
    БK 0010-01, БК 11М, БК11М+,МС 0511 (УКНЦ)х3, Atari 65XE, Commodore 64, AMIGA 500 (HDD), ZX EVO

Страница 1 из 13 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ремонт БК-0011
    от RTeh в разделе БК-0010/0011
    Ответов: 4
    Последнее: 25.10.2013, 13:24
  2. Документация БК-0011
    от pilgrim в разделе БК-0010/0011
    Ответов: 5
    Последнее: 28.04.2012, 20:09
  3. ленин - 1 загрузка с магнитофона
    от sevol в разделе Ленинград
    Ответов: 15
    Последнее: 10.07.2010, 22:49
  4. Загрузка с магнитофона Spectrum +2A
    от Andrey_Ak в разделе Разный софт
    Ответов: 9
    Последнее: 13.11.2009, 16:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •