Специфікація BTRON3 (Український переклад) | Специфікація ОС Sakamura BTRON / BTRON3
Повернутися до змісту цього розділу
Попередня сторінка: Розділ 2. Система кодування TRON Code (Повернутися)
Наступна сторінка: Розділ 3.5. Сегменти текстових вкладок (Text Fusen) (Перейти)

Розділ 3. Детальна специфікація формату документів TAD (TRON Application Databox)


3.1 Вступ

Ця специфікація описує деталізовану структуру даних TAD (TRON Application Databus). Пояснення базових концепцій специфікації BTRON, таких як «Реальний об'єкт» (Real Object), «Віртуальний об'єкт» (Virtual Object), «Наліпка / Вкладка» (Fusen), а також мети та призначення TAD, у цьому документі опущено.

Крім того, передбачається, що читач має базові знання про системи на базі специфікації BTRON (зокрема про файлову систему та графічні примітиви Display Primitives), а також про систему кодування TRON Code.

3.2 Структура Реального об'єкта TAD (Real Object Layout)

3.2.1 Загальні відомості

Формат TAD (TRON Application Databus) розміщується всередині Реального об'єкта (Real Object). У специфікації BTRON Реальний об'єкт (файл) може містити й інші структури даних, окрім TAD.

Реальний об'єкт (файл) у специфікації BTRON має такі основні характеристики:

3.2.2 Структура записів Реального об'єкта

У специфікації BTRON кожен Реальний об'єкт (файл) складається з послідовності записів, для кожного з яких вказується тип запису (Record Type) та відповідна специфікація його внутрішніх даних. Коди типів записів дозволяють ОС та прикладним програмам правильно інтерпретувати та обробляти кожен блок даних.

Перелік типів записів Реального об'єкта наведено у таблиці нижче:

Тип запису (Record Type)Правила структури даних
0Запис посилання (Link Record)Стандартні типи даних C
1TAD Головний запис (Main Record)Формат та структура TAD
2TAD Запис коментаря (Annotation Record)Формат та структура TAD
3TAD Допоміжний запис (Auxiliary Record)Формат та структура TAD
4Зарезервований запис
5Запис налаштувальної вкладки (Setting Fusen)Формат та структура TAD
6Запис специфічної вкладки (Specified Fusen)Формат та структура TAD
7Запис функціональної вкладки (Functional Fusen)Формат та структура TAD
8Запис функціональної вкладки розширенняФормат та структура TAD
9Запис виконуваної програми (Executable Record)Стандартний формат об'єктного коду
10Контейнер даних (Data Box Record)Формат Менеджера даних (Data Manager)
11Запис шрифтових даних (Font Data Record)Стандартний формат шрифтів
12Запис словникових даних (Dictionary Record)Стандартний формат словника
13Зарезервований запис
14Зарезервований запис
15Запис системних даних (System Data Record)Визначення системного додатка
16〜31Запис прикладного додатка (Application Record)Приватне визначення додатка

Примітка: Записи типів 1–3, 5–8 містять структури даних формату TAD. Записи 9–15 призначені для системних ресурсів, виконуваного коду та шрифтів.

TAD Головний запис (Main Record / Type 1):

Основними даними Реального об'єкта є Головний запис TAD, у якому зберігається основний текстовий та графічний вміст документа.

TAD Запис коментаря (Annotation Record / Type 2):

Містить додаткові довідкові дані документа (Help, Copyright, інформація про автора), які зберігаються у форматі TAD, але не відображаються у вікні основними редакторами.

TAD Допоміжний запис (Auxiliary Record / Type 3):

Містить допоміжні дані додатків у форматі TAD, які використовуються для розширеної обробки прикладними програмами.

Запис виконуваної програми (Executable Record / Type 9):

Містить об'єктний виконуваний код програми. Тип архітектури процесора (CPU) вказується у заголовку запису:

0x100〜0x13FСімейство TRONCHIP0x00TRONCHIP32
0x140〜0x14FСімейство 680000x4068000 / 68020
0x150〜0x15FСімейство NS320000x5032032
0x160〜0x16FСімейство x860x608086 / 80286 / 80386
Контейнер даних (Data Box Record / Type 10):

Містить структури Менеджера даних (Data Manager) для швидкого обміну та буферизації.

Запис системних даних (System Data Record / Type 15):

Зберігає системні налаштування та конфігураційні параметри середовища BTRON.

3.3 Огляд структури даних TAD

3.3.1 Формат сегментів TAD

Структура даних TAD є універсальним форматом представлення інформації у специфікації BTRON. Вона використовується не лише у файлах Реальних об'єктів, а й при міжпроцесному обміні даними через буфер обміну (Tray / Clip) та між додатками.

Послідовність даних TAD складається з ланцюжка кодових елементів двох категорій:

<Сегменти фіксованої довжини>

Включають звичайні символи TRON Code та однобайтові/двобайтові керуючі коди:

Звичайні символи1 або 2 байти TRON Code
Керуючі коди1 байт (0x000x20)
Коди зміни мови / скриптуКод префікса (0xFE)
Спеціальні коди символівКод префікса (0xFF) + (0x210x7E)

Стандартні керуючі коди у форматі TAD:

Нікчемний код (TNULL)0x00
Табуляція (TAB)0x09
Новий абзац (NL)0x0A
Нова колонка0x0B
Нова сторінка (FF)0x0C
Новий рядок / Повернення каретки (CR)0x0D
Пробіл / Розділювач (SP)0x20

<Сегменти змінної довжини>

Починаються з коду ескейп-префікса 0xFF, за яким слідує ідентифікатор ID сегмента (0x800xFE) та двобайтне поле довжини LEN (16-бітний розмір даних сегмента).

Формат сегмента змінної довжини
Мал. 3 : Формат сегмента змінної довжини
Категорія сегментаID сегмента (Segment ID)
(Зарезервовано)------(0x80〜0x9F)
Текстові вкладки (Text Fusen)TS_Txxxx(0xA0〜0xAF)
Графічні сегменти (Figure Fusen)TS_Fxxxx(0xB0〜0xBF)
(Зарезервовано)------(0xC0〜0xDF)
Керуюча інформаціяTS_INFO(0xE0)
Початок текстового блокуTS_TEXT(0xE1)
Завершення текстового блокуTS_TEXTEND(0xE2)
Початок графічного блокуTS_FIG(0xE3)
Завершення графічного блокуTS_FIGEND(0xE4)
Растрове зображення (Bitmap)TS_IMAGE(0xE5)
Віртуальний об'єкт (Virtual Object)TS_VOBJ(0xE6)
Вбудований об'єкт / ДаніTS_DFUSEN(0xE7)
Реальний об'єкт / ПосиланняTS_FFUSEN(0xE8)
Системні наліпкиTS_SFUSEN(0xE9)

3.3.2 Текстові та графічні дані (Text & Graphic Data)

Дані у форматі TAD поділяються на дві основні модальності: Текстові дані (Text Data) та Графічні дані (Graphic Data).

Текстові дані обмежуються парними сегментами TS_TEXT (початок тексту) та TS_TEXTEND (кінець тексту). Усередині текстового блоку розміщуються звичайні символи, текстові вкладки форматування, а також вкладені графічні блоки або віртуальні об'єкти.

Структура текстових даних
Мал. 4 : Структура текстових даних

Графічні дані обмежуються парними сегментами TS_FIG (початок графіки) та TS_FIGEND (кінець графіки). Усередині графічного блоку розміщуються графічні примітиви, макроси, трансформації координат та вкладені текстові блоки.

Структура графічних даних
Мал. 5 : Структура графічних даних

Текстові та графічні блоки можуть рекурсивно вкладатися один в одного (Nesting). Наприклад, графічний блок може містити текстовий підблок, який у свою чергу містить графічний примітив або віртуальний об'єкт.

Вкладення областей видимості (Scope Nesting):

  [Графічний блок A]
      [Графічний блок B]   -- Вкладений у A
      [Текстовий блок C]    -- Вкладений у A
          [Графічний блок D] -- Вкладений у C та A

Кожен текстовий або графічний блок задає дві області системи координат:

Область малювання та Область відображення
Мал. 6 : Область малювання (Draw Region) та Область відображення (View Region)
Вкладення графічних даних
Мал. 7 : Вкладення графічних даних
Вкладення текстових даних
Мал. 8 : Вкладення текстових даних

3.3.3 Растрові зображення (Image Data)

Растрові зображення представлені сегментом растрового масиву TS_IMAGE. Вони можуть розміщуватися як усередині графічних блоків, так і безпосередньо у текстовому потоці між символами.

Сегмент TS_IMAGE містить параметри колірної моделі (RGB, CMY, Палітра), глибину кольору, коефіцієнт стиснення та 1-бітову маску прозорості. Для відображення растрових зображень застосовуються виклики графічної підсистеми BTRON Display Primitives.

3.3.4 Граматика синтаксису TAD (BNF Grammar)

Синтаксична граматика документа TAD описується у нотації Бкуса-Наура (BNF):

<Документ TAD>::=<Елемент даних> [ <Документ TAD> ]
<Основний блок>::=<Текстові дані> | <Графічні дані>
<Текстові дані>::=<TS_TEXT> [ <Вміст тексту> ] <TS_TEXTEND>
<Вміст тексту>::=<Символьний код> | <Текстова вкладка> | <Графічні дані> | <TS_IMAGE> | <TS_VOBJ> | <TS_DFUSEN> | <TS_FFUSEN>
<Графічні дані>::=<TS_FIG> [ <Вміст графіки> ] <TS_FIGEND>
<Вміст графіки>::=<Графічний примітив> | <Текстові дані> | <TS_IMAGE> | <TS_VOBJ> | <TS_DFUSEN> | <TS_FFUSEN>

3.4 Формат та структура системних сегментів TAD

3.4.1 Загальний огляд та базові типи даних

Усі системні та графічні сегменти TAD мають наведений нижче стандартний формат заголовка та даних. Дані вирівнюються по 8-бітній (байтовій) межі:

ID  :   Ідентифікатор сегмента (Segment ID / 1 байт після 0xFF)
LEN :   Довжина блоку даних сегмента (16-бітне ціле число)
DATA:   Корисне навантаження / масив структур сегмента

Базові типи даних у специфікації TAD:

B:
8-бітне ціле число зі знаком (8-bit signed integer)
UB:
8-бітне ціле число без знаку (8-bit unsigned integer)
TC:
Символьний код TRON Code (8-бітний або 16-бітний)
H:
16-бітне ціле число зі знаком (16-bit signed integer)
UH:
16-бітне ціле число без знаку (16-bit unsigned integer)
W:
32-бітне ціле число зі знаком (32-bit signed integer)
UW:
32-бітне ціле число без знаку (32-bit unsigned integer)
PNT:
Структура координат точки (2D Point):
typedef struct {
    H   h;  -- Горизонтальна координата (X)
    H   v;  -- Вертикальна координата (Y)
} PNT;
RECT:
Структура прямокутної області (Rectangle):
typedef struct {
    H   left;    -- Ліва межа
    H   top;     -- Верхня межа
    H   right;   -- Права межа
    H   bottom;  -- Нижня межа
} RECT;
COLOR:
32-бітне слово атрибутів кольору (Color structure):
Формат структури кольору
Мал. 9 : Формат структури кольору
UNITS:
16-бітне значення одиниць вимірювання системи координат:
>0: 1 / N см (наприклад, 400 відповідає 1 / 400 см)
<0: 1 / N дюйма (наприклад, -240 відповідає 1 / 240 дюйма)
=0: Відносні екранні одиниці / пікселі (за замовчуванням)
CHSIZE:
16-бітне значення розміру шрифту та іконок:
UUSS SSSS SSSS SSSS
U: Одиниці (0 = пікселі, 1 = 1/20 мм, 2 = 1/20 типографського пункту)
S: Розмір (значення)
SCALE:
16-бітне значення кегованого масштабу відступів (SCALE).
RATIO:
16-бітне дробове значення коефіцієнта масштабування (A / B).

3.4.2 Сегмент керуючої інформації (Control Info Segment TS_INFO / 0xE0)

Сегмент керуючої інформації (TS_INFO) містить глобальні системні налаштування та параметри обробки документа TAD. Якщо Реальний об'єкт містить документ TAD, цей сегмент розміщується на початку документа перед основними текстовими чи графічними даними.

ID  :   TS_INFO                 -- Сегмент керуючої інформації
LEN :   ~                       -- Змінна довжина
DATA:   UH  subid               -- ID підсегмента
        UH  sublen              -- Довжина підсегмента у байтах
        UH  data[]              -- Дані підсегмента (довжиною sublen)
  Визначені підсегменти TS_INFO:
    subid:  0               -- Версія специфікації TAD
    sublen: 2
    data:   UH  ver         -- Версія у 3-значному BCD-коді (наприклад, 0x0120 для версії 1.2)

3.4.3 Сегменти початку та завершення тексту (TS_TBGN / TS_TEND)

Текстові дані у форматі TAD обмежуються сегментами початку тексту (TS_TEXT / 0xE1) та завершення тексту (TS_TEXTEND / 0xE2).

ID  :   TS_TEXT                 -- Сегмент початку тексту (TS_TBGN)
LEN :   24
DATA:   RECT    view            -- Область відображення (View Region)
        RECT    draw            -- Область малювання (Draw Region)
        UNITS   h_unit          -- Одиниці вимірювання по горизонталі
        UNITS   v_unit          -- Одиниці вимірювання по вертикалі
        UH      lang            -- Початкова мова / мовний скрипт
        UH      bgpat           -- ID візерунка фону

ID  :   TS_TEXTEND              -- Сегмент завершення тексту (TS_TEND)
LEN :   0
DATA:   (відсутні)

3.4.4 Сегменти початку та завершення графіки (TS_GBGN / TS_GEND)

Графічні дані у форматі TAD обмежуються сегментами початку графіки (TS_FIG / 0xE3) та завершення графіки (TS_FIGEND / 0xE4).

ID  :   TS_FIG                  -- Сегмент початку графіки (TS_GBGN)
LEN :   24
DATA:   RECT    view            -- Область відображення (View Region)
        RECT    draw            -- Область малювання (Draw Region)
        UNITS   h_unit          -- Одиниці вимірювання по горизонталі
        UNITS   v_unit          -- Одиниці вимірювання по вертикалі
        W       ratio           -- Масштабний коефіцієнт

ID  :   TS_FIGEND               -- Сегмент завершення графіки (TS_GEND)
LEN :   0
DATA:   (відсутні)

3.4.5 Сегмент растрового зображення (TS_IMAGE / 0xE5)

Сегмент растру (TS_IMAGE) задає растрову бітову матрицю (Bitmap) та параметри її відображення.

ID  :   TS_IMAGE                -- Сегмент растрового зображення
LEN :   Змінна
DATA:   RECT    view            -- Область відображення (View Region)
        RECT    draw            -- Область малювання (Draw Region)
        UNITS   h_unit          -- Одиниці вимірювання по горизонталі
        UNITS   v_unit          -- Одиниці вимірювання по вертикалі
        H       slope           -- Кут нахилу зображення
        UH      color           -- Слово атрибутів кольору
        UH      cinfo[4]        -- Масив розкладки компонент кольору
        UH      extlen          -- Довжина даних розширення
       [UB      extend[]]       -- Блок даних розширення
        BITMAP  bmap            -- Растрова матриця (Bitmap struct)
Сегмент растру TS_IMAGE
Мал. 10 : Сегмент растру TS_IMAGE
Структура палітри кольорів
Мал. 11 : Структура палітри кольорів
Структура растрового сегмента
Мал. 12 : Структура растрового сегмента

3.4.6 Сегмент Віртуального об'єкта (Virtual Object Segment TS_VOBJ / 0xE6)

Сегмент Віртуального об'єкта (TS_VOBJ) вбудовує посилання на інші Реальні об'єкти (файли) BTRON, утворюючи гіпертекстові зв'язки.

ID  :   TS_VOBJ                 -- Сегмент Віртуального об'єкта
LEN :   Змінна
DATA:   RECT    view            -- Область відображення (View Region)
        H       height          -- Висота рамки об'єкта
        CHSIZE  chsz            -- Розмір шрифту/іконки
        COLOR   frcol           -- Колір рамки
        COLOR   chcol           -- Колір назви
        COLOR   tbcol           -- Колір смуги заголовка
        COLOR   bgcol           -- Колір фону
        UH      dlen            -- Довжина додаткових даних
        UB      data[dlen]      -- Додаткові дані розширення

3.4.7 Сегменти функціональних вкладок (TS_FFUSEN / 0xE8)

Сегмент функціональної вкладки (TS_FFUSEN) зберігає зв'язані параметри розширень додатка для об'єкта або файла.

ID  :   TS_FFUSEN               -- Функціональна вкладка
LEN :   Змінна
DATA:   RECT    view            -- Область відображення
        CHSIZE  chsz            -- Розмір шрифту/іконки
        COLOR   frcol           -- Колір рамки
        COLOR   chcol           -- Колір назви
        COLOR   tbcol           -- Колір смуги
        UH      pict            -- ID піктограми
        UH      appl[3]         -- ID додатка
        UB      name[32]        -- Назва вкладки
        UB      type[32]        -- Тип даних
        UH      dlen            -- Довжина внутрішніх даних
        UB      data[dlen]      -- Дані розширення

3.4.8 Сегмент вкладки специфікації / вбудованого об'єкта (TS_DFUSEN / 0xE7)

Сегмент TS_DFUSEN містить безпосередньо вбудовані бінарні дані об'єкта всередині документа TAD.

ID  :   TS_DFUSEN               -- Вбудований об'єкт / Дані
LEN :   Змінна
DATA:   RECT    view            -- Область відображення
        CHSIZE  chsz            -- Розмір іконки
        COLOR   frcol           -- Колір рамки
        COLOR   chcol           -- Колір назви
        COLOR   tbcol           -- Колір смуги
        UH      pict            -- ID піктограми
        UH      appl[3]         -- ID додатка
        UB      name[32]        -- Назва об'єкта
        UW      dlen            -- 32-бітна довжина даних
        UB      dat[dlen]       -- Масив вбудованих даних

Повернутися до змісту цього розділу
Попередня сторінка: Розділ 2. Система кодування TRON Code (Повернутися)
Наступна сторінка: Розділ 3.5. Сегменти текстових вкладок (Text Fusen) (Перейти)