
═══════════════════ C S I D O S - 3.2 ═════════════════════════

──────────────── Tехническая документация.─────────────────────



 Распредeление адресного пространства в системе "CSIDOS-3.2":
───────────────────────────────────────────────────────────────
Страницы 0,1,2,3,4 использюутся в различных программах по сво-
ему усмотрению.
Страница 5 является экраном.
Страница 7 :

      40000-44777...системная область монитора БК0011М и
                    "CSIDOS-3.2".Сюда лазить не рекомендуется.
      45000-47777...ядро системы.Сюда лазить нельзя.
      50000-54277...знакогенератор. Сюда вообще-то тоже нельзя.
      53400-62777...TURBO VISION. И здесь копаться нельзя
      63000-63777...главный блок оболочки "Х-SHELL".
                    если его испортить, в оболочку больше не
                    попадешь.
      64000-77777...оболочка.  Если испортить ее,  то прекраща-
                    ется  выполнение  командного файла, дочиты-
                    вается  кусок  оболочки с системного диска,
                    и запускается со старыми данными оболочка.
страница 6 :
    100000-111777...оболочка.Те же положения, что и для
                    64000-77777 в 7-й странице.
    120000-127777...каталог левой панели
    130000-137777...каталог правой панели

Если сказать обобщенно,то:

  -если вы хотите быстро вернуться в оболочку, то можно исполь-
   зовать адреса 112000-137777 в 7-й странице
  -если вы используете адреса 64000-137777, то тоже можете вер-
   нуться в оболочку после ее автодозагрузки с системного диска
  -если вам  не  потребуется  возвращаться в оболочку, то смело
   можете использовать адреса 63000-137777
  -если вам не нужен TURBO VISION, то можно использовать адреса
   50000-137777.
  -ну а если после загрузки программы,вам вообще ничего не пот-
   ребуется, то вам доступна вся память компьютера.

 Естественно, что все сказанное  справедливо только для страниц
 7 и 6. Другие страницы доступны  полностью и по любым адресам,
в  любое  время  не зависимо от  условий и погоды. И не следует
держать  подключенной  страницу  7 или 6, лучше забудте что они
вообще есть. Более того, их не надо подключать и для того, что-
бы выполнить ЕМТ115 или ТRAP.  Система позваляет хранить, запи-
сывать и читать файлы длиной  до  200000 байт, если длина файла
задана в байтах,  и хранить длиной до  32 мегабайт  если  длина
задана  в  блоках  (такие файлы можно читать и писать только по
частям).
  Да и еще: в оболочку можно вернуться примерно так:
                     RET -если стек еще в порядке,

            или так:
                     HALT -если вектор 4 еще цел,

    а можно вот так:
                     JMP @#200 -если там еще что-то есть,

         и даже так:
                     MOV #54400,@#177716
                     JMP @#63000     -если хоть там что-нибудь
                                      осталось.

─────────── КРАТКИЙ СПИСОК КОМАНД ОБОЛОЧКИ "X-SHELL" ──────────

 RUN ADDR [,PG0,PG1]...........старт по адресу.
 READ ADDR,LEN,BLOCK,PG0,PG1...чтение массива с диска.
 WRITE ADDR,LEN,BLOCK,PG0,PG1..запись массива на диск.
 SAVE NAME ADDR,LEN,PAGES......запись файла
 LOAD NAME [ADDR[,PG0,PG1]]....прочитать файл в память.
 CREATE NAME ADDR,NUMB,PG0,PG1.резервирование блоков на диске
 SET NAME PARAM................изменение параметров файла
 CD PATH.......................установить текущую директорию
 DELETE NAME...................удалить файл
 EXE NAME......................запустить файл
 SEARCH NAME...................поиск файла в каталоге.
 MOV NUM,ADDR..................поместить слово в адрес
 MOVB NUM,ADDR.................поместить байт в адрес
 ADD NUM,ADDR..................прибавить число к адресу
 BK10 OTHER_PARAM..............запусить монитор БК0010
 PAUSE NUM.....................зделать паузу длиной NUM
 PAUSE.........................ожидание нажатия на клавишу.
 PALETTE NUM...................включить палитру NUM.
 CLS...........................очистить экран
 ?? STRING.....................вывести строку без ввода
 ? STRING......................вывести строку с вводом
 CUR POSX,POSY.................установка курсора на позицию
 GOTO LABEL....................переход на метку.
 ON ADDR,LABEL1,...,LABELN.....аналог ON GOTO на БЕЙСИКЕ
 RST ADDR......................начальный адрес для DC.B и DC.W
 DC.W NUM,NUM,...,NUM..........список чисел-слов для пересылки
 DC.B NUM,NUM,...,NUM..........список чисел-байт для пересылки
 IF NUM,NUM,COND OTHER_COM.....сравнит два числа
 PATH PATH1;PATH2;PATH3........установка путей поиска файлов

─────────────────── ЗАПРОСЫ К СИСТЕМЕ ─────────────────────────

 Обращение к  системе происходит через магнитофонный блок пара-
метров,  состоящий  из  54 байт.  Адрес блока помещается в R0 и
подается команда EMT 115.  В нулевом байте блока помещается ко-
манда системе.При записи и переименовании файла система смотрит
первый байт: если он содержит  0 или 1,  то если находится файл
с таким же именем на диске, то он  удаляется,  если первый байт
содержит код 2, то при обнаружении файла  с таким же именем вы-
дается ошибка (код 20).  Перед  работой с диском, если нет уве-
ренности что система проинициализирована,  то нужно сделать это
в программе (если это не покажется трудным):

                MOV #54400,@#177716 ;инициализация с сохране-
                CALL @#45010        ;нием ранее установленного
                                    ;привода.
                       или

                MOV #54400,@#177716 ;инициализация с установкой
                MOV #DRIVE,R0       ;нового привода DRIVE
                CALL @#45000        ;


                     КОМАНДЫ СИСТЕМЫ:

  0...запись файла на диск (или спасти его, как у англичан)
200...резервирование блоков. Если 52(R0)=0, то запись о файле
      в каталог не заносится. Выход: R3-номер первого блока,
      следующего за прочитаным.
  1...чтение файла
201...чтение метки файла из каталога в 30(R0).
  2...поиск файла. В адресе 41524 наход. адрес записи о файле
  3...RENAME. 6(R0)- новое имя, 34(R0)- имя из каталога
  4...чтение файла.Выход: R3-номер блока следующего за прочит.
  5...выключение двигателя (если еще не выкрутился)
  6...удаление файла (не печальтесь его еще может быть и можно
      востановить в программе "cds2.exe")
  7...запись файла:
      2(R0)...адрес файла в памяти
      4(R0)...длина файла в байтах
      26(R0)..окна
      30(R0)..адрес для каталога
      32(R0)..окна для каталога
207...то же что и команда 7 но длина в блоках
 10...не используется (выключение двигателя, для настырных)
 11...чтение файла без номера директории. Выход: R3-номер блока
211...то же что и 201 но без номера директории
 12...удаление директории (вот ее вы уже не востановите)
 13...создание директории (если такой нет) и вход в нее
 14...операции с установкой пути: 54(R0)- начало описания пути
      (106 байт максимум) далее байт 0 и код любой и перечис-
      ленных команд.После выполнения команды возвращается ста-
      рый драйвер и директория (возвращение блудного сына)
      Если код команды 177,то после поиска пути устанавлива-
      ется новая директория и драйвер, описанные в пути.
 15...трансформация имени файла. Вход: 6(R0)- имя для транс-
      формации.Выход: 34(R0)- странсформированное (уф-ф!) имя.
 16...чтение по номеру блока
       2(R0)- адрес для массива
       4(R0)- длина массива
       6(R0)- номер блока на диске
 17...запись по номеру блока (см. ком. 16)
 20...установка привода. 2(R0)- номер привода.
 21...чтение файла. ответ в блок параметров не передается.
      (для наиболее привередливых программ)

  В командах,если файл вылезает за пределы страницы, подключен-
ной  в верхнее окно, адрес файла должен быть кратен 1000, тогда
система  подключает две страницы, следующие по порядку от стра-
ницы в  верхнем  окне,  и продолжает операцию. Следует заметить
что система подключит новые  страницы  лишь в том случае, когда
номера страниц заданы явно.
     напримеры:  1,2 - страницы заданы явно:
                       1 страница в нижнее окно,
                       2 страница в верхнее окно,
                 0,0 - заданы неявно: страницы берутся из ката-
                       лога. (справедливо только при чтении)
               177,2 - одна из страниц задана не явно:
                       177- это код страницы 7
               377,3 - одна из страниц задана не явно:
                       377- это означает, что в данном окне
                       остается ранее подключенная страница.

В байтах 26 и 27 магнитофонного блока пареметров хранятся стра-
ницы для работы с диском. Если они равны  0,0 при чтени, берут-
ся номера страниц из каталога,  при другой операции это страни-
цы 0,0.
    Tак  как  страницы  подключаются  через монитор БК0011М, то
ошибку  отловить  невозможно  (при неправильных номерах страниц
операция  прекращается,  устанавливается  бит C- ошибка,  а вот
код ошибки может быть любым("ку" как,говорится в одном из филь-
мов :)  так что за кодами страниц следите сами.
   Если в данной операции страницы безразличны, то можно просто
очищать ячейку 26(R0).

────── ОШИБКИ ВЫДАВАЕМЫЕ СИСТЕМОЙ В АДРЕСЕ 52 (и 53) ──────────

     при oшибке после EMT 115 устанавливается бит C

     1-13.....стандартные ошибки КНГМД
       14.....не используется в данной версии
       15.....нет места на диске или в каталоге
       16.....диск не в формате "CSIDOS"
       17.....файл или директория не найдены
       20.....файл уже есть


─────  СИСТЕМНЫЕ ЯЧЕЙКИ ИСПОЛЬЗУЕМЫЕ ЯДРОМ "CSIDOS-3.2": ──────

   B41521.....=10 статус БК0010, =0 статус БК0011М
              (действителен при записи файла на диск)
   B41522.....номер привода
   B41523.....номер директории
   W41524.....адрес записи о файле в блоке каталога
    42602.....54 байта.Копия магнитофонного блока параметров
   B47774.....номер системного привода
   B47775.....если не равен 0 то после операции двигатель
              дисковода забывает выключаться.
    43552.....массив из 66 байт.Блок пареметров для дисковода

   ВСЕ АДРЕСА ДЕЙСТВИТЕЛЬНЫ ПРИ ПОДКЛЮЧЕННОЙ 7-Й СТРАНИЦЕ В
   НУЛЕВОЕ ОКНО.

─────────── Расположение информации на диске ──────────────────

            0 блок  - загрузчик системы
         2-11 блоки - каталог устройства
        12-.. блоки - блоки,отведенные под файлы

          Расположение записей в каталоге:

первый блок в каталоге:
     W0............физический номер блока
     W2............общее число блоков на диске
     W4,W6.........123123 для CSIDOS-3
     W10(123123)...принадлежность диска системе CSIDOS
     W12...........не используется (=0)
     B14-B777......записи о файлах
остальные блоки каталога:
     W0............физический номер блока
     W2-W12........не используется (=0)
     B14-B777......записи о файлах

Элемент каталога(запись о файле) 24 байта:

     B0...........=1-310.номер директории
                  =311...плохое место (ну очень плохое)
                  =376...дырка (от бублика)
                  =312...запись не содержащая информацию
                         (удаляется после сквизирования)
                  =377...удаленный файл, который можно восста-
                         новить
                  =0.....конец каталога
     B1<0 .........защита от удаления
     B2-B14........имя файла с расширением (без точки)
     B15...........статус файла:
                   7 бит- признак длины в блоках
                   3 бит- признак файла для БК0010
                   остальные биты- копия регистра 177717
                   (страницы если кто-то забыл)
     W16...........начальный блок файла
     W20...........адрес загрузки
     W22...........длина файла

─────────────── СИСТЕМНЫЕ ЯЧЕЙКИ "X-SHELL" ────────────────────

    W63002..номер панели (0 или 2)
  ! W63004..номер версии (3020)
  ?*W63006..тип панели: 0-FULL, 20-BRIEF,
                        177776-TREE, 177777-INFO
  !*W63012..адрес каталога
   *W63016..адрес файла на который указывает файловый курсор
   *B63036..номер привода
   *B63037..номер директории
  !*W63042..емкость устройства в блоках
   *W63046..количество занятых блоков
   *W63062..количество блоков в выделеных файлах
   *W63066..количество выделенных файлов
  !*W63076..адрес курсора на экране
  !*W63102..адрес панели на экране
  !*W63106..адрес поля на экране для каталога
  ! W63074..адрес начала bat-файла в памяти
    W63112..адрес имени файла на который указавает курсор
            (не зависит от номера панели)
  ! B63114..номер системного привода
    W63116..адрес программы для чтения каталога чужих систем
            (используется программой "graber4.exe")
            Если содержимое равно 0 то программа отсутствует.
            Эта программа должна находится в 4-й странице с
            адреса 135000 и иметь первое слово 123123, затем
            коды программы.

  Условные обозначения:
   !....содержимое этой ячейки менять нельзя!
   W,B..размер ячейки: слово или байт.
   *....доступ к этой ячейки имеет примерно такой вид:

         MOV @#63002,R0   ;загрузить номер панели в R0
         MOV 63012(R0),R1 ;загрузить адрес каталога текущей
                          ;панели в R1
 то есть в адресе 63012 лежит адрес каталога  для панели 0 (ле-
 вой),  а  в  адресе  на 2  больше адрес каталога  для панели 2
(правой).

─────────── АДРЕСА СОДЕРЖАЩИЕ НЕКОТОРЫЕ ТОЧКИ ВХОДА ───────────

 JMP @63120 - вход в оболочку без переоткрывания панелей
              (пример: запуск программы "graber4.exe")
              Но надо быть уверенным, что страницы 5,6,7 не бы-
              ли существенно изменены. (поэкспериментируйте)
 JMP @63136 - вход в оболочку с переоткрыванием панелей, но без
              перечитывания каталогов панелей.
              (пример: возврат из "csiview.exe")

             Существуют и другие точки входа, но они мало инте-
ресны для широкого применения и потому здесь не рассматриваются

───────────────────────────────────────────────────────────────
    При запуске файла из оболочки устанавливаются текущими те
директория и привод, которые:
   -были на текущей панели (на которой стоял файловый курсор)
   -были установлены последней командой CD, если файл запус-
    кался из командного файла
───────────────────────────────────────────────────────────────


   Я думаю вы простите мои дурацкие вставки-шутки, но поверьте,
что писать документацию такая скукотища.

                                           Алексей Мельников
═══════════════════════════════════════════════════════════════
  (C) 1995 A.V.M. Caroline Sofware Inc. Samara-city, Russia.
═══════════════════════════════════════════════════════════════




          ░░░░░░┐ ░░┐  ░░┐ ░░░░░░┐  ░░░░░░┐   ░░░░░┐
          └─░░┌─┘ ░░│  ░░│ ░░┌──░░┐ ░░┌──░░┐ ░░┌──░░┐
            ░░│   ░░│  ░░│ ░░│  ░░│ ░░░░░░┌┘ ░░│  ░░│
            ░░│   ░░│  ░░│ ░░░░░░┌┘ ░░┌──░░┐ ░░│  ░░│
            ░░│   └░░░░░┌┘ ░░┌─┐░░┐ ░░░░░░┌┘  ░░░░░┌┘
            └─┘    └────┘  └─┘ └──┘ └─────┘   └────┘
          ░░┐  ░░┐ ░░┐  ░░░░░░┐ ░░┐  ░░░░░┐  ░░┐  ░░┐
          ░░│  ░░│ ░░│ ░░┌────┘ ░░│ ░░┌──░░┐ ░░░┐ ░░│
          ░░│  ░░│ ░░│ └░░░░░┐  ░░│ ░░│  ░░│ ░░┌░┐░░│
          └░░┐░░┌┘ ░░│  └───░░┐ ░░│ ░░│  ░░│ ░░│└░░░│
           └░░░┌┘  ░░│ ░░░░░░┌┘ ░░│ └░░░░░┌┘ ░░│ └░░│
            └──┘   └─┘ └─────┘  └─┘  └────┘  └─┘  └─┘



   ПОСЛЕДНЕЕ ВРЕМЯ ПОЯВИЛОСЬ МНОГО СИСТЕМ ИСПОЛЬЗУЮЩИХ ОКНА,
НО,КАК  ПРАВИЛО,  ВСЕ  ОНИ  ИСКЛЮЧАЮТ  РАБОТУ В ЦВЕТНОМ РЕЖИМЕ,
ПРИЧЕМ,ЕСЛИ Ч/Б ОКОННЫЕ СИСТЕМЫ  НЕВОЗМОЖНО СМОТРЕТЬ НА ЦВЕТНОМ
МОНИТОРЕ, ТО  ЦВЕТНАЯ  СИСТЕМА СМОТРИТСЯ ХОРОШО, КАК НА ЦВЕТНОМ
ТАК  И НА Ч/Б МОНИТОРЕ, К ТОМУ ЖЕ В "TURBO VISION" ИСПОЛЬЗУЕТСЯ
ШРИФТ   СПЕЦИАЛЬНО  НАРИСОВАННЫЙ  ДЛЯ  ЦВЕТНОГО  МОНИТОРА,  ЧТО
НАМНОГО ЧИТАБЕЛЬНЕЕ ОЦВЕТНЕННОГО ЧЕРНО-БЕЛОГО.

───────────────────────────────────────────────────────────────

         ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ "TURBO VISION" :

  -СИСТЕМА ПОЛНОСТЬЮ САМОСТОЯТЕЛЬНА. К НЕЙ МОЖНО ОБРАЩАТЬСЯ
   ИЗ ЛЮБОЙ ПРОГРАММЫ,НАХОДЯЩЕЙСЯ В ЛЮБОЙ СТРАНИЦЕ ПО ЛЮБЫМ
   АДРЕСАМ.
  -ОНА НЕ ЗАНИМАЕТ РАБОЧЕЙ ПАМЯТИ.
  -ДОСТУПНЫ ВСЕ 128 КБАИТ
  -РАБОТАЕТ В РЕЖИМЕ 64 СИМВОЛА В СТРОКЕ ( В ЦВЕТНОМ РЕЖИМЕ )
  -ТЕКСТ НЕПЛОХО ЧИТАБЕЛЕН НА ЦТВ И ЧБ МОНИТОРАХ
  -МНОГОУРОВНЕВЫЙ РЕЖИМ ВЫВОДА ОКОН
  -ПОДДЕРЖИВАЕТ МЫШЬ (БЕЗ КОНТРОЛЛЕРА),ЧТО ДАЕТ ВОЗМОЖНОСТЬ
   СОЗДАВАТЬ ПРОГРАММЫ НЕ ТРЕБУЮЩИЕ КЛАВИАТУРНОГО ВМЕШАТЕЛЬСТВА

     СИСТЕМА НАХОДИТСЯ В 7 СТРАНИЦЕ ПО АДРЕСАМ 54300-62777

           ┌─────────────────────────────────────┐
───────────┤ ОПИСАНИЕ КОМАНД "TURBO VISION v3.0" ├─────────────
           └─────────────────────────────────────┘

  ДАННАЯ СИСТЕМА ЯВЛЯЕТСЯ МОНИТОРОМ ДЛЯ CSIDOS'a-3. ВСЕ ОБРАЩЕ-
НИЯ К ДАННОЙ СИСТЕМЕ ОСУЩЕСТВЛЯЮТСЯ ЧЕРЕЗ TRAP. ОБРАЩАТЬСЯ МОЖ-
НО  И ЧЕРЕЗ ЕМТ, ДЛЯ ЭТОГО К НОМЕРУ TRAP'a НУЖНО ПРИБАВИТЬ ЧИС-
ЛО 300, НАПРИМЕР, ТRAP 6 И EMT 306,  A TRAP  МОЖНО ИСПОЛЬЗОВАТЬ
ДЛЯ ДРУГИХ ЦЕЛЕЙ. СИСТЕМНУЮ СТРАНИЦУ ПОДКЛЮЧАТЬ НЕ ОБЯЗАТЕЛЬНО.
ДЛЯ ВЫЗОВА НЕОБХОДИМА КОПИЯ РЕГИСТРА 177716 В ЯЧЕЙКЕ 114 .

      В КАЧЕСТВЕ ЭКРАНА СИСТЕМА ИСПОЛЬЗУЕТ 5 СТРАНИЦУ.
     ПРИМЕРЫ ПРИВЕДЕНЫ В МНЕМОНИКЕ АССЕМБЛЕРА MICRO11D.
   СТЕК ПОЛЬЗОВАТЕЛЯ ДОЛЖЕН НАХОДИТЬСЯ НИЖЕ АДРЕСА 40000.

***************************************************************
                          ВНИМАНИЕ!!!
С ЦЕЛЬЮ УМЕНЬШЕНИЯ ПРОГРАММЫ TURBO VISION,ОШИБКИ НЕ ПРОВЕРЯЮТСЯ
ПОЭТОМУ, ВОИЗБЕЖАНИИ ЗАВИСАНИЯ И ДРУГИХ ПОСЛЕДСТВИЙ, НЕ СЛЕДУЕТ
ДАВАТЬ ДАННЫЕ,ВЫХОДЯЩИЕ ЗА ДИАПАЗОН ДОПУСТИМЫХ В ДАННОЙ КОМАНДЕ
***************************************************************

---------------------------------------------------------------
                 ИНИЦИАЛИЗАЦИЯ СИСТЕМЫ:

                    MOV #54400,@#177716
                    CALL @#45010
                    CALL @#54300

                        ИЛИ
                    МOV #54400,@#177716
                    MOV #DRIVE,R0  ; НОМЕР ПРИВОДА ДЛЯ CSIDOS
                    CALL @#45000
                    CALL @#54300

   ПОСЛЕ ЭТОГО ВСЕ ОБРАЩЕНИЯ ЧЕРЕЗ TRAP БУДУТ ПЕРЕХВАТЫВАТЬСЯ
    "TURBO VISION", А ЕМТ 115 БУДЕТ РАБОТАТЬ С ДИСКОМ DRIVE

ВНИМАНИЕ: ТОЛЬКО ДЛЯ ИНИЦИАЛИЗАЦИИ НЕОБХОДИМО ПОДКЛЮЧИТЬ
          7 СТРАНИЦУ С АДРЕСА 40000

───────────────────────────────────────────────────────────────
                        TRAP 0
         ПЕРЕДАЕТ УПРАВЛЕНИЕ ПРОГРАММЕ НАХОДЯЩЕЙСЯ ПО
    АДРЕСУ 63000 В СИСТЕМНОЙ СТРАНИЦЕ ( ОБОЛОЧКА CSIDOS'а)
───────────────────────────────────────────────────────────────
                        TRAP 2,3
          УСТАНАВЛИВАЕТ СТРАНИЦУ И АДРЕС БУФЕРА ПОД
         СОХРАНЕНИЕ МЕСТ, НА КОТОРЫЕ ВЫВОДЯТСЯ ОКНА.

              МОV #ADDRES,R0 ;АДРЕС БУФЕРА (100000 И ВЫШЕ)
              TRAP 2
              .#PAGE         ;СТРАНИЦА ПОД БУФЕР (0,1,2,3,4,6)

                      ИЛИ
              TRAP 3
              .#ADDRES
              .#PAGE
───────────────────────────────────────────────────────────────
                        TRAP 4,5
  ОПРОС КЛАВИАТУРЫ .В R0 ВОЗВРАЩАЕТСЯ КОД СИМВОЛА ИЛИ АДРЕС
  МЫШИ, А ТАКЖЕ УСТАНАВЛИВАЕСТСЯ СЛОВО СОСТОЯНИЯ ПРОЦЕССОРА.

           МОV #SUBR,R0    ИЛИ    ТRАP 5
           TRAP 4                 .@SUBR

  SUBR - АДРЕС ПОДПРОГРАММЫ,КОТОРАЯ ВЫПОЛНЯЕТСЯ ЕСЛИ НЕ НАЖАТА
  КЛАЖИША. ЕСЛИ АДРЕС МЕНЬШЕ 2 ТО ПОДПРОГРАММА НЕ ВЫПОЛНЯЕТСЯ.
  ЕСЛИ АДРЕС ЧЕТНЫЙ,ТО КУРСОР НЕ ВЫВОДИТСЯ ЕСЛИ НЕЧЕТНЫЙ ТО
              ВЫВОДИТСЯ МОРГАЮЩИЙ КУРСОР.

          БИТЫ ССП УСТАНАВЛЕВЫМЫЕ ПРИ ВЫХОДЕ:

     Z-НАЖАТА КЛАВИША "КТ" (В R0 KOД 3)
     N-НАЖАТА КЛАВИША В РЕГИСТРЕ "АР2"  (В R0 КОД КЛАВИШИ)
     V-НАЖАТА ПРАВАЯ КНОПКА МЫШИ (В R0 АДРЕС МЫШИ)
     C-НАЖАТА ЛЕВАЯ КНОПКА МЫШИ (В R0 АДРЕС МЫШИ)

───────────────────────────────────────────────────────────────
                        ТRAP 6,7
          ВЫВОД СИМВОЛА В ТЕКУЩЕЕ ОКНО. УПРАВЛЯЮЩИЕ КОДЫ:
    12- ПС+ВК, 10-КУРСОР ВЛЕВО, 31-КУРСОР ВПРАВО, 32-ВВЕРХ,
    33- ВНИЗ, 2-ОЧИСТКА ОКНА НАЧИНАЯ С ТЕКУЩЕЙ СТРОКИ И ДО
    КОНЦА, 14-ОЧИСТКА ВСЕГО ОКНА.40 И ВЫШЕ ПЕЧАТАЕМЕЫЕ СИМВОЛЫ

           МОV #SYMBOL,R0   ИЛИ    TRAP 7
           TRAP 6                  .#SYMBOL
───────────────────────────────────────────────────────────────
                        TRAP 10,11
    ВВОД ИЛИ РЕДАКТИРОВАНИЕ СТРОКИ.ВЫВОДИТСЯ ИНВЕРСНАЯ СТРОКА
  ДЛЯ РЕДАКТИРОВАНИЯ. ВЫХОДНЫЕ ДАННЫЕ КАК И У TRAP 4,5 .

          MOV #STROKA,R0  ИЛИ       TRAP 11
          TRAP 10                   .@STROKA
          HALT                      HALT
  STROKA: .B:34 .A:ПРИВЕТ
          .+27

    ПЕРВЫЙ БАЙТ СТРОКИ НЕ ВЫВОДИТСЯ И ПОКАЗЫВАЕТ МАКСИМАЛЬНО
ВОЗМОЖНОЕ КОЛИЧЕСТВО СИМВОЛОВ-1.ПОСЛЕ РЕДАКТИРОВАНИЯ ПРОБЕЛЫ В
             КОНЦЕ СТРОКИ ЗАПОЛНЯЮТСЯ НУЛЯМИ.
───────────────────────────────────────────────────────────────
                        TRAP 12,13
    ВЫВОД СТРОКИ СИМВОЛОВ.     УПРАВЛЯЮЩИЕ КОМАНДЫ:
.B:1  .A:ВЫВОД СТРОКИ ПО СЕРЕДИНЕ СТРОКИ ОКНА .B:0
.B:3  .A:ВЫВОД ЗАГОЛОВКА В ОТКРЫТОЕ ОКНО      .B:0
.В:16 .В:20 .В:10 .В:201 .В:210 ... .В:0 ;РАЗМЕТКА ОКНА ЛИНИЯМИ
.В:17 .В:ХCUR .B:YCUR ;УСТАНОВКА НОВЫХ КООРДИНАТ КУРСОРА В ОКНЕ
.В:20+COL ;УСТАНОВКА ЦВЕТА ФОНА (0,1,2,3)
.В:24+COL ;УСТАНОВКА ЦВЕТА СИМВОЛОВ (0,1,2,3)

          MOV #STROKA,R0  ИЛИ       TRAP 13
          TRAP 12                   .@STROKA
          HALT                      HALT
  STROKA: .B:23 .B:25 .B:1 .A:ПРИМЕР
          .B:0 .B:12 .A:СТРОКИ
          .В:0

───────────────────────────────────────────────────────────────
                        ТRAP 14,15
          УСТАНОВКА КООРДИНАТ КУРСОРА В ТЕКУЩЕМ ОКНЕ.

            MOV (PC)+,R0     ИЛИ      TRAP 15
            .B:XCUR .B:YCUR           .B:XCUR .B:YCUR
            TRAP 14

───────────────────────────────────────────────────────────────
                        TRAP 16,17
           УСТАНОВКА АТТРИБУТОВ У СИМВОЛОВ.

        MOV #SYMB*4+FON,R0   ИЛИ     TRAP 13
        TRAP 12                      .#SYMB*4+FON

         ГДЕ SYMB= 0,1,2,3  И   FON= 0,1,2,3
───────────────────────────────────────────────────────────────
                        TRAP 20
 ЗАКРЫТИЕ ПОСЛЕДНЕГО ОТРЫТОГО ОКНА И ВОССТАНОВЛЕНИЕ СОСТОЯНИЯ
      ПРЕДЫДУЩЕГО ОКНА (КООРДИНАТЫ КУРСОРА,ЦВЕТ И Т.Д)

                        TRAP 20
───────────────────────────────────────────────────────────────

                        TRAP 22,23
                  ОТКРЫТИЕ НОВОГО ОКНА.
          MOV #ADRSCR,R0  ИЛИ       TRAP 23
          TRAP 22                   .#ADRSCR
          .@WINDOW                  .@WINDOW
          HALT                      HALT
  WINDOW: .#REGIM .B:XLEN .B:YLEN

ADRSCR- АДРЕС ВЫВОДА ОКНА (100000 И ВЫШЕ).ОН ДОЖЕН БЫТЬ ЧЕТНЫМ.
        ТАК ЖЕ ЧЕТНЫМ ДОЛЖЕН БЫТЬ И XLEN.

  XLEN- ШИРИНА ОКНА В БАЙТАХ
  YLEN- ВЫСОТА ОКНА В СИМВОЛЬНЫХ СТРОКАХ

 REGIM-  ЯЧЕЙКА РЕЖИМОВ:
   БИТ 17 =1 -ЗАПОМНИТЬ МЕСТО ПОД ОКНОМ(ЭТО ОКНО МОЖНО ЗАКРЫТЬ)
          =0 -НЕ ЗАПОМИНАТЬ ---//---- (ЭТО ОКНО НЕЛЬЗЯ ЗАКРЫТЬ)
   БИТ 16 =1 -ОКНО С ТЕНЬЮ
          =0 -ОКНО БЕЗ ТЕНИ
   БИТ 15 =1 -ВЫВЕСТИ ТЕКСТ В ОКНЕ
          =0 -НЕТ --//--
   БИТ 14 =1 -ВЫВЕСТИ БАРЫ
          =0 -НЕТ --//--
   БИТ 5  =1 -ТЕНЬ ЧЕРНАЯ
          =0 -ТЕНЬ ПРОЗРАЧНАЯ
 БИТЫ 2,3 - ЦВЕТ СИМВОЛОВ
 БИТЫ 0,1 - ЦВЕТ ФОНА

    ЕСЛИ УСТАНОВЛЕН 13 БИТ ТО ПОСЛЕ YLEN СТАВИТСЯ .@ADRTEXT
  ЕСЛИ УСТАНОВЛЕН БИТ 12 ТО ДОПИСЫВАЕТСЯ БАЗА ДАННЫХ ДЛЯ БАРОВ
          (ФОРМАТ ТАКОЙ ЖЕ,КАК И У TRAP 34,35).
ПОСЛЕ ОТКРЫТИЯ ОКНА,ВСЯ ИНФОРМАЦИЯ ВЫВОДИТСЯ ТОЛЬКО В ЭТО ОКНО,
  ВСЕ СКРОЛЛИНГИ БУДУТ ЗАТРАГИВАТЬ ТОЛЬКО ЭТО ОКНО,КООРДИНАТЫ
КУРСОРА БУДУТ ОТСЧИТЫВАТЬСЯ ОТ ЛЕВОГО ВЕРХНЕГО УГЛА ЭТОГО ОКНА
───────────────────────────────────────────────────────────────

                        TRAP 24,25
 ПЕРЕНАЗНАЧЕНИЕ РАБОЧЕГО ПРОСТРАНСТВА НА ЭКРАНЕ,МИНУЯ ЗАКРЫТИЕ
                     И ОТКРЫТИЕ ОКОН.
          MOV #ADRSCR,R0  ИЛИ       TRAP 25
          TRAP 24                   .#ADRSCR
          .B:XLEN .B:YLEN           .B:XLEN .B:YLEN

ADRSCR- AДРЕС НА ЭКРАНЕ (100000 И ВЫШЕ) ОН ДОЛЖЕН БЫТЬ НЕЧЕТНЫМ
  XLEN- ШИРИНА ПРОСТРАНСТВА В БАЙТАХ .ДОЛЖЕН БЫТЬ ЧЕТНЫМ
  YLEN- ВЫСОТА ПРОСТРАНСТВА В СИМВОЛЬНЫХ СТРОКАХ

───────────────────────────────────────────────────────────────
                    ТRAP 26 И ТRAP 30

  ЧТЕНИЕ АДРЕСА КУРСОРА И КООРДИНАТ КУРСОРА СООТВЕТСТВЕННО,
              КОТОРЫЕ ПОМЕЩАЮТСЯ В R0

───────────────────────────────────────────────────────────────
                       TRAP 34,35

                      ВЫВОД БАРОВ.

          MOV #ADRBAR,R0  ИЛИ       TRAP 35
          TRAP 34                   .@ADRBAR
          HALT                      HALT
ADRBAR:   .B:B1X .B:B1Y .B:B2X .B:B2Y ... .B:ATTR .B:377
          .@SUBR1 .@SUBR2 ...
          .A:BAR1
          .B:0 .A:BAR2
          .
          .
          .
          .B:0 .B:0

B1X,B1Y,B2X,B2Y,... - ОПИСАНИЕ ПОЗИЦИЙ (КООРДИНАТ) БАРОВ В ОКНЕ
           ATTR- ФОН И ЦВЕТ БАРА КОГДА ОН ВЫБРАН.
                 ЕСЛИ УСТАНОВЛЕН БИТ 7 ТО ПРИ ВЫБОРЕ БАРОВ
                 БЛОКИРУЮТСЯ КЛАВИШИ "СТРЕЛКА ВЛЕВО",
                 "СТРЕЛКА ВПРАВО"(ОРГАНИЗУЕТСЯ РЕЖИМ-PULLDOWN)

SUBR1,SUBR2,...- ПОДПРОГРАММЫ КОТОРЫЕ ВЫПОЛНЕНЯЮТСЯ В ЗАВИСИ-
                 МОСТИ ОТ ВЫБРАННОГО БАРА.ЕСЛИ ПРИ ЗАВЕРШЕНИИ
                 ПОДПРОГРАММЫ УСТАНОВЛЕН БИТ "С",ТО ПРОИСХОДИТ
                 ОТКАЗ ОТ ДАЛЬНЕЙШЕГО ВЫБОРА БАРОВ.

  BAR1,BAR2,...- НАДПИСИ БАРОВ.

 БАР ВЫБИРАЕТСЯ СТРЕЛКАМИ И МЫШЬЮ, АКТИВИЗИРУЕТСЯ КЛАВИШЕЙ ВВОД
  ИЛИ ЛЕВОЙ КНОПКОЙ МЫШИ, ОТКАЗ ОТ БАРОВ ПРОИЗВОДИТСЯ КЛАВИШЕЙ
               "КТ" ИЛИ ПРАВОЙ КНОПКОЙ МЫШИ.

───────────────────────────────────────────────────────────────
                      ТРАP 36,37
        ВЫВОД СТРОКИ СИМВОЛОВ НА ЭКРАН ПО АДРЕСУ.

  MOV #ADRSCR,R0    ИЛИ     TRAP 37
  TRAP 36                   .#ADRSCR  АДРЕС ЭКРАНА ОТ 100000.
  .@STRING                  .@STRING

   В СТРОКЕ МОЖНО УСТАНОВИТЬ ЦВЕТ ФОНА И СИМВОЛОВ ТАКЖЕ,КАК
                     В ТRAP 12,13.

───────────────────────────────────────────────────────────────

                        TRAP 40,41
 АНАЛОГИЧНО ТRAP 4,5 НО ЗАДЕРЖКИ ПРИ АВТОПОВТОРЕ НЕ ПРОИСХОДИТ.

═══════════════════════════════════════════════════════════════
    (С) 1994 А.МЕЛЬНИКОВ CAROLINE SOFTWARE INC. г.САМАРА
═══════════════════════════════════════════════════════════════

