Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
385 savelij 1
 
2
    .TAP-файлы:
3
    -----------
4
 
5
    Эти файлы содержат блоки данных, сохраненных как бы на ленту. Все
6
    блоки начинаются с двух байтов, в которых указано сколько байтов за
7
    ними следует (не считая этих двух байтов). Затем идут сами данные,
8
    включающие флаговый байт и байт контрольной суммы. Байт контрольной
9
    суммы получается в результате последовательной операции XOR для всех
10
    байтов, включая флаговый байт. Например, если вы захотите выгрузить
11
    пару байтов из ПЗУ командой: SAVE "ROM" CODE 0,2, то получите в
12
    результате:
13
 
14
             |-----Данные, генерируемые Спектрумом--|       |---------|
15
 
16
       13 00 00 03 52 4f 4d 7x20 02 00 00 00 00 80 f1 04 00 ff f3 af a3
17
 
18
       ^^^^^...... длина первого блока (19б.=17б.хэдер+флаг+контр.сумма)
19
             ^^... флаговый байт (00 для хэдера, ff для блока данных)
20
                ^^ первый байт хэдера, указывающий на тип данных
21
 
22
       имя файла ..^^^^^^^^^^^^^
23
       информация в хэдере.......^^^^^^^^^^^^^^^^^
24
       к.с. хэдера.................................^^
25
       длина второго блока............................^^^^^
26
       флаговый байт 2-го блока..............................^^
27
       первые два байта ПЗУ....................................^^^^^
28
       контрольная сумма первых двух байтов и флагового байта........^^
29
 
30
 
31
    Эмулятор всегда считывает байты с начала блока. Если загружается
32
    меньше байтов, чем есть в наличии, то лишние байты пропускаются и
33
    последний загруженный байт рассматривается как контрольная сумма. Если
34
    запрашивается на загрузку больше байтов, чем есть в наличии, то
35
    загружающая процедура прерывается с включением флага,
36
    свидетельствующего об ошибке ввода с ленты. Обработку ошибки
37
    производит вызываемая Z80 процедура.
38
 
39
    Обратите внимание на то, что можно объединять .ТАР-файлы простым
40
    "пристегиванием" их друг к другу, например так:
41
 
42
                COPY /B FILE1.TAP + FILE2.TAP ALL.TAP
43
 
44
    Для полноты картины я включу сюда же и структуру хэдера. Он всегда
45
    состоит из 17 байтов:
46
 
47
        Байт    Длина   Описание
48
 
49
        1       10      Имя файла (если меньше 10 символов, вставляются
50
                                   пробелы )
51
        11      2       Длина блока данных
52
        13      2       Параметр 1
53
        15      2       Параметр 2
54
 
55
    Тип файла 0,1,2,3 соответствует: программе, числовому массиву,
56
    символьному массиву, блоку кодов. Экранные файлы SCREEN$
57
    рассматриваются как файлы кодов, начинающиеся в 16384 и имеющие длину
58
    6912 байтов. Если файл является программой, то параметр-1 содержит
59
    номер строки автостарта или число, большее, чем 32768, если номер
60
    строки автостарта не указан. параметр-2 содержит смещение адреса
61
    программных переменных относительно адреса начала программы. Для блока
62
    кодов параметр-1 содержит адрес, из которого этот блок выгружался, а
63
    параметр 2 содержит число 32768. Для файлов данных (массивов) байт,
64
    расположенный в позиции 14 содержит имя переменной.
65
 
66
    Вcегда Ваш, RomanRom2