
                         ОС БК
                      версия 1.2

             Краткое руководство пользователя

 А> - приглашение системы (готовность работы с диском "А")
 А>В:
 В> - приглашение системы (готовность работы с диском "В")

               Редактор командной строки

 Работают клавиши : ВЛЕВО,ВПРАВО,ЗАБОЙ,СДВИЖКА,РАЗДВИЖКА-
                    - клавиши редактирования.
 Клавиши          : ВВЕРХ и ВНИЗ-
                    - извлечь предыдущую команду из буфера.

            Разметка диска (форматирование)

 Перед началом работы с НОВЫМ диском его необходимо разметить-
записать служебную информацию (отформатировать).
 Формат разметки в ОС БК , полностью совпадает с форматом MY.
 Форматирование диска выполняется командой:

А>FRM A:
10-+  плохой блок в 10 дорожке сверху \
23--  плохо отформатир. 23 дорожка    - повторить формат диска

 При удачном форматировании утилита INI вызывается автомати-
чески (создание пустого каталога) и диск к работе готов.

                  Каталог файлов

 Каталог (список) файлов можно вызвать утилитой :

А>DIR  (DIR A:  или  DIR B:  и т.д.) 
A>DIR/n -вывод каталога на печать (n-число колононок на листе)
  по умолчанию работа ведется с текущим устройством ( А> ).


                Копирование файлов

 A>CPY :FILNAME FILNAM.BIN   \
 A>CPY :FILNAME A:FILNAM.BIN  > - копирование с ленты на диск 
 A>CPY :FILNAME B:FILNAM.BIN /
 
А>CPY FILNAM.BIN :FILENAME  \
А>CPY A:FILNAM.BIN :FILENAME > - крпирование с диска на ленту
А>CPY B:FILNAM.BIN :FILENAME/

А>CPY A:FILNAM.BIN B:
А>CPY B:FILNAM.BIN A:FILENAM > - крпирование с диска на диск

А>CPY/W FILNAM.BIN FILENAM > - крпирование на одном приводе

 Имя файла на диске может иметь длинну имени до 6 символов ,
а расширение имени - до 3-х символов.


                Копирование дисков

А>CPY A: B:   - групповое копирование

 Возможно применение ключей : /Q и /N

/Q- будет требоваться подтверждение копирования каждого файла
    (отказ от копир. файла- N, любая другая клавиша-как "да")
/N- запрет копирования файлов, кот. уже имеются на диске.

 P.S. : диски лучше копировать в расширенной памяти.


                 Другие команды
 
А>REN FILNAM.OLD FILNAM.NEW    -переименование файлов
А>DEL FILE                     -удаление файла
A>INI B:                       -инициализация каталога
A>B: \ 
B>A: /                         - смена рабочего диска
А>ТYP FILE.TXT                 - вывод текст. файла на экр.
А>PRI TEST.M                   - вывод содерж. файла на печать
А>MON                          - выиод в монитор БК
? В ←─┘                        - возврат в OС БК




                Пультовой режим


А>1000                        -выдача на экран 32 слов памяти

А>1000 12700 101 104341 137 1004 - запись кодов с адр. 1000

А>;1000                          - запуск программы с адр. 1000
          если адрес не указан то старт будет с адреса, который
          храниться по адресу 264.

А>;2000 ARG1 ARG2 ARG3 ...      -запуск программы с передачей
                                 ей аргументов

А>PUT FILE [NA LEN]             -запись уч-ка памяти на диск,
         по умолчанию нач. адр. и длина - из ячеек: 264 и 266.

А>GET FILNAM [2000]             -загрузка программы [по прину-
                                 дит. адр.]


             Руководство системного програмиста

                  Программные запросы

 Форматы программных запросов полностью совпадают с форматом
одноименных запровов из ОС ДВК , и следовательно можно исполь-
зовать станд. трансляторы с макроассемблера и системные макро-
библиотеки.
 Все запросы возвращают состояние ошибки в бите "С" еденицей.
 В отличие от ДВК , ОС БК нет возврата кода ошибки в байте 52,
т.к. он используется монитором БК-10.
 В ОС БК использ-ся три формата программных запросов:
1. Прогр. запросы с кодом 374 помещают в младший байт R0 номер
  канала , а в старший - функциональный код.
           ┌───────────┬──────────┐
      R0 = │15..CODE..8│7..CHAN..0│
           └───────────┴──────────┘
2. Прогр. запросы второго формата используют команду ЕМТ 375:
                 ┌───────────┬──────────┐
      R0 > AREA: │   CODE    │   CHAN   │
                 └───────────┴──────────┘
                           ARG1
                           ....
                           ARGn
3. Остальные прогр. запросы передают арг. и получают результаты
  в регистрах общего назначения или в стеке.

 Обозначения: AREA - адрес блока аргументов EMT.
              CHAN - номер канала. Это лог. идентификатор файла
                     кот. исп-ся монитором при выполнен. запра-
                     шиваемых операций. Номер канала может быть
                     0-15. Каждый файл логич. связан с опр. ка-
                     налом и при обращ. к файлу достаточно ука-
                     зать номер соотв. канала.
              DBLK - массив информ. в кодах RADIX (имя устр-ва,
                     имя файла и его расшир. - 4 слова).
              WCNT - кол. слов для передачи в/из буфер при вы-
                     полнен. операции ввода/вывода.


                    Клавиатура

 EМТ 340   - ожидает нажат. клав., ее код в R0.
 EMT 345   - подсказка на экран , ожидан. строки с клавиатуры,
             введенная строка завершается байтом 0 :
MOV #LINE,-(SP)                  ......
MOV #1,-(SP)             LINE:  .BLKW  32   ;адр. вводимой стр.
MOV #PROMT,-(SP)         PROMT: .ASCIZ /str>;подсказка
CLR -(SP)                       .EVEN
EMT 345
....

 Ошибка : введенная пустая строка

                 Вывод на экран

 EMT 341  - символ на экран из R0.
 EMT 351  - вывод на экран строки /через EMT 341/с нач. адр. в
            R0 до байта 0 или 200 , при 0 добавл. коды 12,15.


               Запросы общ. назначения

 EMT 375  - устан. адрес п/п обраб-ки 4 и 10 векторов с :
            С = 0  - прерыв. по вектору 4
            С = 1  - прерыв. по вектору 10
MOV   #AREA,R0                .....
EMT 375               AREA:  .BYTE 0,3
....                         .WORD     ;адрес п/п

 Возврат из п/п : RETURN

EMT 354  - возврат в R0 верхн. гран. памяти /40000 или 70000/
EMT 350  - возвращет упр. монитору ОС БК


              Работа с файлами

 1. EMT 36  - ОС сама переадресуется к драйверу диска.
 2. Способ, позволяющий поблочно обрабатывать файлы любого
    размера. Для доступа к файлу программа должна связать
    этот файл с одним из каналов ввода/вывода с помощью
    .LOOKIP или .ENTER. Допустимо одновременно использовать
    до 16 каналов (0 - 15). После открытия канала программа
    может производить чт./зап. любых блоков файла запросами
    .READW и .WRITW. Для завершения работы с файлом и осво-
    бождения канала необх. запросить .PURGE или .CLOSE.


 .LOOKUP ──→ .READW/.WRITW ──→ .PURGE - Обработка сущ-го файла
               └────────←───────┘

 .ENTER ──→ .WRITW/.READW ──→ .CLOSE - Создание нового файла
               └────────←───────┘

.LOOKUP area,chan,dblk  -  связ. указ. канал с сущ. файлом до
                           вызова запросов .CLOSE или .PURGE.
                           После выполн. в R0 дл. файла в бл.
MOV  #AREA,R0                     .......
EMT  375                AREA:   .BYTE <номар канала>,1
.......                         .WORD <адр. имени в RADIX-50> 

             Ошибка: нет файла с указ. именем, сбой чтен.

.READW area,chan,buf,wcnt,blk - передача зад. числа слов по 
                                указ. каналу в память.
MOV  #AREA,R0                     .......
EMT  375                AREA:   .BYTE <номер канала>,10
.......                         .WORD <номер блока>
                                .WORD <адр. буф. в памяти>
                                .WORD <число слов>
             Ошибка: сбой чт.

.PURGE chan - освоб. канал. При открытии канала с пом. .ENTER 
              соответств. временный файл будет удален
MOV  #<3*400>+<номер канала>,R0
EMT  374
             Ошибка: сбой чт./зап.

.ENTER area,chan,dblk,len - резервирует на диске обл. размером
                           "len" и созд. врем. файл, кот. ста-
                            новится пост. после .CLOSE.
  Если арг. "len"=0 то отводиться на диске 1/2 своб. области,
если: -1 то вся наиб. своб. область. В R0: рамер бдлоках.

MOV  #AREA,R0                   .......
EMT  375             AREA:  .BYTE <номер канала>,2
.......                     .WORD <адрес имени в RADIX-50>
                            .WORD <длина файла: 0/-1>
           Ошибка: нет места на диске или сбой вв/выв

.WRITW area,chan,suf,wcnt,blk - зад. число слов из памяти по
                                указ. каналу на диск.
MOV  #AREA,R0                    ......
EMT  375           AREA:   .BYTE <ном. кан.>,1         
.......                    .WORD <ном. блока>
                           .WORD <адр. быфера>
                           .WORD <число слов>
          Ошибка: сбой зап.

.CLOSE chan - заверш. обмен на указ. канале. При .ENTER -
              врем. файл стан. пост. или удал. сущ. файл.
MOV  #>6*400>+<номар кан.>,R0
EMT  374
          Ошибка: сбой чт./зап.

.RENAME area,chan,dblk - изм. имени файла.

MOV  #AREA,R0               .........    
EMT  375           AREA:    .BYTE <ном. кан.>,4
......                      .WORD <адр. блока имен>
       Ош.: сбой чт./зап.

.DELETE area,chan,dblk - удал. файла из каталога.

MOV  #AREA,R0              ........
EMT  375          AREA:    .BYTE <ном. кан.>,6
.......                    .WORD <адр. им. файла в RADIX-50>
      Ош.: сбой чт./зап.

               Внутр. запросы ОС БК

.MAG - обращение к магн. со станд. бл. параметров    / EMT 37 /

.OCT - сод. R0 на экран восмерич. числом в 6 позиций / ЕМТ120 /

.DEC -    -//-          десят. числом в 5 позиций    / ЕМТ121 /

.DEC0-    -//-      -//-    , игнорируя незнач. 0    / ЕМТ122 /

.FNAME - выв. на экр. имени файла. R3 указ. на блок из 
         4-х слов с именем в RADIX-50.               / ЕМТ123 /

.BL - на экран символ пробела                        / ЕМТ124 /

.NL - перевод курсора на нач. след. строки           / ЕМТ125 /

      Пример программы копирование файла любой длинны

COPY:
;открытие вх. файла.
             .LOOKUP  #AREA,#0,#INPUT
             BCS      ERROR
;создание выходного.
             .ENTER   #AREA,#1,#OUTPUT,R0
             BCS      ERROR
             CLR      R1      ;копир. с 0-го блока.
;в цикле копир. один бл. в 256 слов.
LOOP:
;читаем блок в буфер.
             .READW  #AREA,#0,#BUF,#256.,R1
             BCS     ERROR
;запись буфера на диск.
             .WRITW  #AREA,#1,#BUF,#256,R1
             BCS     ERROR
             INC     R1      ;след. блок.
             SOB     R0,LOOP
;вых. файл закрыть.
             .CLOSE  #1
             .PURGE  #0
             .EXIT
;при ошибке вых файл не закрывать.
ERROR:       .PURGE  #1
             .PURGE  #0
             .EXIT

INPUT:  .RAD50  /A INPUT DAT/ ;имя вх. файла.
OUTPUT  .RAD50  /A OUTPUTDAT/ ;имя вых. файла.
AREA:   .BLKW   6
BUFF    .BLKW   256.          ;буфер для одного блока.
        .END    COPY


             Функции преобраз. имен файлов

.FNRAD - перекодир. имени из ASCII в RAD-50        / EMT 130 /
         R2 - адр. имени в ASCII
         R3 -   -//-       RAD-50 (будет помещено в 4 слова)
         R4 - имя диска в RAD-50  (подст. по умолч.)
         R5 - расш. имени         (подст. по умолчан.)
.FNBIN - перекодир. имени из ASCII в RAD-50 по 
         умолч. имени диска и расширения .BIN      / EMT 131 /
         R2 - адр. имени в ASCII
         R3 -   -//-       RAD-50 (будет помещено в 4 слова)
.FNCOD - перекод. имени из ASCII в RAD-50по умолч. 
         имени диска.                              / EMT 132 /
         R2 - адр. имени в ASCII
         R3 -   -//-       RAD-50 (будет помещено в 4 слова)
.FNDEC - декод. имени файла из RAD-50 в ASCII.     / ЕМТ 133 /
         R2 - адр. имени в ASCII  (будет помещено в стр. с 0)
         R3 - адр. блока из 4-х слов с именем в RAD-50

                   Преобраз. типов

.ITOC8 - преобр числа в 8-ую строку.               / ЕМТ 140 /
         R0 - число
         R1 - адр. строки разультата
.ITOC10 - преобр числа в 10-ую строку.             / ЕМТ 141 /
         R0 - число
         R1 - адр. строки разультата
.C8TOI - преобраз. 8-й строки в чило.              / ЕМТ 142 /
         R0 - адр. вх. строки, заверш-ся кодом 0
         R1 - чило.
.C10TOI - преобраз. 10-й строки в чило.            / ЕМТ 143 /
         R0 - адр. вх. строки, заверш-ся кодом 0
         R1 - чило.

                   Преобраз. ASCII и RAD-50

.ASCRAD - преобр. 3-х симв. ASCII в 1 слово RAD-50 / EMT 144 /
          R2 - адр. 1-го симв. в ASCII
          R3 - адр. слова результата.
     /R2 увел. на 3 но не далее кода 0, R3 увел. на 2/
.RADASC - преобр. 1 слова RAD-50 в 3 симв. ASCII   / EMT 145 /
          R2 - адр. вых. масс. из 3-х байт
          R3 - адр. слова в RAD-50.

                     Другие операции 

.MUL - 16-битное умножение R1 на R0, рез. в R0     / EMT 150 /
.DIV -  -//-  делен. R1/R1, рез. в R1, ост. в R0   / EMT 151 /
.LPRINT  - выв. байта R0 на печать /ИРПР/          / ЕМТ 160 /
.ТТ      - направление ЕМТ 341 на экран            / ЕМТ 161 /
.LP      - то же на печать                         / ЕМТ 162 /
.DLOOKUP - возвр. в R0 размер диска в блок.
  MOV  #AREA,R0              .......   
  IOT                AREA:   .BYTE <номер привода>,0
  .....

.DREAD   - чтен. зад. чила слов с диска
  MOV  #AREA,R0              ......
  IOT                AREA:   .BYTE <номер пивода>,1
  ....                       .WORD <ном. блока>
                             .WORD <адр. буф. в памяти>
                             .WORD <число слов>
.DWRITE  - запись зад. числа слов на диск
  MOV  #AREA,R0              ......
  IOT                AREA:   .BYTE <номер пивода>,1
  ....                       .WORD <ном. блока>
                             .WORD <адр. буф. в памяти>
                             .WORD <число слов>
  
