User Tag List

Показано с 1 по 10 из 34

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #2

    Регистрация
    07.10.2006
    Сообщений
    1,731
    Спасибо Благодарностей отдано 
    257
    Спасибо Благодарностей получено 
    275
    Поблагодарили
    167 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На самом деле, формат файла .TAP очень простой. Формат предназначен для хранения данных, записанных на кассете магнитофона на стандартной скорости записи, без информации о паузах и т.п.

    Каждый блок данных предваряется двумя байтами его длины, и дальше идут собственно данные. Это всё.

    2 байта длины (младший вначале), затем данные блока последовательно, начиная с первого флагового байта, заканчивая последним байтом контрольной суммы.
    Собственно, формат о них ничего не знает, и первый и последний байт могут быть произвольными, но для корректной загрузки стандартными загрузчиками обычно первый байт - флаговый, последний - байт контрольной суммы (XOR всех предыдущих байтов блока).



    Формат стандартного заголовочного блока Бейсика такой:
    1 байт - флаговый, для блока заголовка всегда равен 0 (для блока данных за ним равен 255)
    1 байт - тип Бейсик блока, 0 - бейсик программа, 1 - числовой массив, 2 - символьный массив, 3 - кодовый блок
    10 байт - имя блока
    2 байта - длина блока данных, следующего за заголовком (без флагового байта и байта контрольной суммы)
    2 байта - Параметр 1, для Бейсик-программы - номер стартовой строки Бейсик-программы, заданный параметром LINE (или число >=32768, если стартовая строка не была задана. Для кодового блока - начальный адрес блока в памяти. Для массивов данных - 14й-байт хранит односимвольное имя массива
    2 байта - Параметр 2. Для Бейсик-программы - хранит размер собственно Бейсик-програмы, без инициализированных переменных, хранящихся в памяти на момент записи Бейсик-программы. Для остальных блоков содержимое этого параметра не значимо, и я почти уверен, что это не два байта ПЗУ. Скорее всего, они просто не инициализируются при записи.
    1 байт - контрольная сумма заголовочного блока.

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

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

    Понял, откуда 2 байта ПЗУ. В примере описано содержимое файла .TAP, для сохраненного из Бейсика командой <SAVE "ROM" CODE 0,2>
    блока кодов ПЗУ длиной 2 байта. Это актуально только для данного примера:

    13 00 - длина TAP-блока заголовка (19 байт - #13 в шестнадцатеричной системе)
    00 - флаговый байт заголовка
    03 - байт типа данных (3 - кодовый блок)
    52 4f 4d - имя блока ("ROM")
    7x20 - ещё семь пробелов имени блока
    02 00 - длина блока кодов без флагового байта и байта контрольной суммы
    00 00 - начальный адрес блока кодов
    00 80 - параметр, не имеющий смысла для блока кодов
    f1 - контрольная сумма заголовка
    04 00 - длина TAP-блока данных за заголовком (2 байта данных, плюс флаговый байт и байт контрольной суммы)
    ff - флаговый байт блока данных (255)
    f3 af - два первых байта ПЗУ
    a3 - байт контрольной суммы блока данных
    Последний раз редактировалось Spectramine; 13.09.2017 в 13:42.

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

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

Эту тему просматривают: 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

Ваши права

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