
                       C S I D O S - 3.2

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



 Распределение адресного пространства в системе "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...каталог правой панели

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

  -если вы хотите быстро вернуться в оболочку, то для
   программы доступны адреса 120000-137777
  -если вы используете адреса 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.


