Blame | Last modification | View Log | Download | RSS feed
.TAP-файлы:-----------Эти файлы содержат блоки данных, сохраненных как бы на ленту. Всеблоки начинаются с двух байтов, в которых указано сколько байтов заними следует (не считая этих двух байтов). Затем идут сами данные,включающие флаговый байт и байт контрольной суммы. Байт контрольнойсуммы получается в результате последовательной операции XOR для всехбайтов, включая флаговый байт. Например, если вы захотите выгрузитьпару байтов из ПЗУ командой: SAVE "ROM" CODE 0,2, то получите врезультате:|-----Данные, генерируемые Спектрумом--| |---------|13 00 00 03 52 4f 4d 7x20 02 00 00 00 00 80 f1 04 00 ff f3 af a3^^^^^...... длина первого блока (19б.=17б.хэдер+флаг+контр.сумма)^^... флаговый байт (00 для хэдера, ff для блока данных)^^ первый байт хэдера, указывающий на тип данныхимя файла ..^^^^^^^^^^^^^информация в хэдере.......^^^^^^^^^^^^^^^^^к.с. хэдера.................................^^длина второго блока............................^^^^^флаговый байт 2-го блока..............................^^первые два байта ПЗУ....................................^^^^^контрольная сумма первых двух байтов и флагового байта........^^Эмулятор всегда считывает байты с начала блока. Если загружаетсяменьше байтов, чем есть в наличии, то лишние байты пропускаются ипоследний загруженный байт рассматривается как контрольная сумма. Еслизапрашивается на загрузку больше байтов, чем есть в наличии, тозагружающая процедура прерывается с включением флага,свидетельствующего об ошибке ввода с ленты. Обработку ошибкипроизводит вызываемая Z80 процедура.Обратите внимание на то, что можно объединять .ТАР-файлы простым"пристегиванием" их друг к другу, например так:COPY /B FILE1.TAP + FILE2.TAP ALL.TAPДля полноты картины я включу сюда же и структуру хэдера. Он всегдасостоит из 17 байтов:Байт Длина Описание0 1 Тип файла (0,1,2 или 3)1 10 Имя файла (если меньше 10 символов, вставляютсяпробелы )11 2 Длина блока данных13 2 Параметр 115 2 Параметр 2Тип файла 0,1,2,3 соответствует: программе, числовому массиву,символьному массиву, блоку кодов. Экранные файлы SCREEN$рассматриваются как файлы кодов, начинающиеся в 16384 и имеющие длину6912 байтов. Если файл является программой, то параметр-1 содержитномер строки автостарта или число, большее, чем 32768, если номерстроки автостарта не указан. параметр-2 содержит смещение адресапрограммных переменных относительно адреса начала программы. Для блокакодов параметр-1 содержит адрес, из которого этот блок выгружался, апараметр 2 содержит число 32768. Для файлов данных (массивов) байт,расположенный в позиции 14 содержит имя переменной.Вcегда Ваш, RomanRom2