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

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 34

Тема: Формат файла tap zx spectrum

  1. #11
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,158
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот я писал модуль для работы с форматом tap, в нём реализован базис, включая подсчёт контрольной суммы.


    Интерфейс:



    P.S. Сорри за Оберон. Любителей его поругать просьба идти...

  2. #12
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Благодарю за поддержку, буду реализовывать для STM32 в среде ARM Keil. Там язык C.

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

    Пока разбираюсь с таймерами и прерываниями.

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

    Нужно реализовать пилот тон и синхо.

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



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

    http://www.zx-info.ru/?rc=12&id=9
    Последний раз редактировалось san010101; 17.09.2017 в 09:58.

  3. #13

  4. #14
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всем добра.
    Подскажите правильно я делаю или нет.
    Алгоритм чтения tap файла

    1. Сначала пилот для заголовка длительность 5 сек. частота 807 Гц

    2. Синхроимпульс ~ 171,4 мксек

    3. Синхроимпульс 200 мксек

    4. Читаем 17 байт заголовка
    где
    00...01 это длина заголовка (обычно 0х13)
    02 флаг 00 для заголовка FF для блока данных
    04...0D имя файла
    15..16 длина блока данных
    17 флаг FF

    5. Пилот тон данных 2 сек. 807Гц

    6. Синхроимпульс ~ 171,4 мксек

    7. Синхроимпульс 200 мксек

    8. Чтение блока данных

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

    Ссылка на код обработчика прерываний, где происходит чтение файла
    http://zx-pk.ru/threads/28153-proigr...l=1#post929795

  5. #15
    Veteran
    Регистрация
    07.10.2006
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    241
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    155 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, не правильно. Заголовок это флаговый байт 00 + 17 байт заголовка + байт контрольной суммы, итого 19 байт. (Но при загрузке заголовка мы задаем загрузчику длину 17, потому что флаговый байт и байт контрольной суммы служебные, и не учитываются.)

    Длина заголовка в заголовке не хранится, потому что она фиксирована. Она хранится только в TAP файле, потому что он ничего не знает о содержимом блоков, он хранит только их длины+содержимое.

    Так что:
    пилот
    синхро1
    синхро2
    флаговый байт 00
    байт типа даннных (03 - для кодового блока)
    10 байт имени
    2 байта длины блока кодов
    2 байта ещё один параметр (стартовый адрес для кодового блока)
    2 байта ещё один параметр (незначим для кодового блока)
    1 байт контрольной суммы
    пауза

    пилот
    синхро1
    синхро2
    флаговый байт FF
    содержимое блока кодов длиной, указанной в заголовке
    байт контрольной суммы
    пауза

  6. #16
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    длина паузы?

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

  8. #17
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так как я делаю плеер на STM32 файлов tap то сколько байт мне нужно считать????

    с
    00..0х12
    или
    00..0х17

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

    Если я считаю до 0х12 байта то следующая очередь пойдет чтение блока данных
    это 0х13 и далее...
    но блок данных начнется с 0х18 байта/

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

    что бы не было путаницы можно написать какие байты мне после первого пилот тона прочитать и какие после второго пилота

  9. #18
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Все нашел. Пауза 1 секунда.
    Читаем заголовок до 0х14 байта
    с 0х18 идет блок кода
    где 0х17 флаг
    и последний байт контрольная сумма
    Получается:

    Пилот заголовок
    синхро 1,2
    Данные заголовоек
    0х00...0х14
    пауза 1 сек

    Пилот блок кода
    синхро 1,2
    Блок кода с 0х15......
    где
    0х15, 0х16 длина кода с флагом + контр сумма
    0х17 флаг
    0х18...........контр сумма
    пауза 1 сек

  10. #19
    Veteran
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    1,041
    Спасибо Благодарностей отдано 
    931
    Спасибо Благодарностей получено 
    224
    Поблагодарили
    121 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    san010101, Не нужно тебе различать заголовки и данные. Просто нужно пропищать все блоки из TAP по порядку. В них уже есть и тип блока и контрольная сумма.

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

    Двух секунд по началу хватит на все пилоты.
    Потом, для аутентичности, можно сделать длинный пилот для блоков-заголовков, для работы это не важно, это-же не лента, у которой самое начало наивероятно поджована/загрязнена/осыпана.
    Алгоритм примерно такой:
    1. Открываем нужный TAP и ставим позицию чтения на нулевой байт.
    2. Если файл уже кончился, то передача завершена.
    3. Читаем двухбайтовую длину блока.
    4. Пищим пилот, синхро.
    5. Читаем нужное число байт и пищим их.
    6. Завершаем с паузой.
    7. Идём выполнять пункт 2.
    Последний раз редактировалось Reobne; 01.10.2017 в 11:05.

  11. #20
    Activist Аватар для san010101
    Регистрация
    18.11.2015
    Адрес
    г. Красноярск
    Сообщений
    271
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всем спасибо за помощь в разборе формата tap.
    Мне удалось воплотить эту информацию в устройстве проигрыватель tap файлов на STM32. Информация на форуме в соседей ветке.
    Сейчас для дальнейшего творчества интересен формат tzx.
    Прежде всего описание формата и его программная реализация чтения файлов.

    Отправлено с моего A0001 через Tapatalk

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Тесты для ZX-Spectrum в tap формате
    от Ovvnex в разделе Софт
    Ответов: 30
    Последнее: 20.11.2017, 01:32
  2. THX - формат файла
    от breeze в разделе Amiga
    Ответов: 2
    Последнее: 04.06.2013, 20:06
  3. AY:воспроизведение WAV-файла
    от goblinish в разделе Программирование
    Ответов: 35
    Последнее: 10.10.2012, 20:32

Ваши права

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