█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█           АССЕМБЛЕР HC  И  РЕДАКТОР АССЕМБЛЕРА             █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
                       3.09.1992 г.

            ДОКУМЕНТАЦИЯ К РЕДАКТОРУ EDIMS (v.1.0)

  Редактор EDIMS является новейшим текстовым редактором для
БК-0011М, не имеющим аналогов для компьютеров семейства БК.
Редактор применяется и как самостоятельная программа, и как
оболочка к компиляторам языков. EDIMS работает в среде HC DOS,
но возможна поставка редактора в магнитофонном варианте.
  При наборе текста осуществляется его автоматическая упаков-
ка, что позволяет создавать тексты большой длины.
  В настоящей версии редактор подключен к ассемблеру. Данный
вариант является несколько сокращенным по сравнению с базовым
вариантом редактора. В нем отсутствуют некоторые операции,
которые будут введены в версии 2.0 - эта версия станет самос-
тоятельной системой подготовки текстов.

        Основные параметры:

  Максимальный обьем текста - 32 Кбайт.
  Буфер сохранения          - 255 байт.
  Размер корзины            - 16 Кбайт.
  Буфер модели              - 56 символов.
  Максимальная длина строки - 255 символов.  
   Режимы:
  Вставки, замены,
  генерации символов псевдографики,
  разрешения/отмены скроллинга.
   Возможности:
  Свободное передвижение по тексту:
  в начало, в конец текста, то же для
  строки, поэкранное перемещение, пере-
  ход на указанную страницу текста.
  вставка в текст символов управления
  принтером, табуляция в произвольную
  позицию, запись текста на диск с сох-
  ранением всех параметров (табуляция,
  положение курсора), запись/чтение
  содержимого корзины, включение/выклю-
  чение упаковки текста.


                Пользовательский интерфейс

  Файл ED.SAV должен находиться на системной дискете. После
имени ED можно указать имя автоматически подгружаемого файла:

ED PROBA.TXT
ED B:TEXT.TXT

  После загрузки редактора на экране появляется рамка, пред-
ставляющая собой окно для ввда текста. Над ней появляется
служебная информация: имя рабочего файла, установленный при-
вод и индикатор режима: РУС или ЛАТ. В нижней части экрана
отображается номер текущей строки, колонка и страница. Там
же могут быть следующие индикаторы:
  Ins - включен режим вставки (иначе замены);
  Alt - включен режим альтернативной кодировки клавиатуры:
        вместо букв печатаются сисмволы псевдографики;
  Scr - включен режим скроллинга: при перемещении курсора
        экран будет сдвигаться на одну строку;
  Nop - выключено кодирование пробелов.
  Prf - индикатор префикса.
  Подробнее см. ниже.   
  Строкой ниже отображается состояние корзины: начало первой
строки, затем отточие, затем начало последней строки.
  И наконец, в самой нижней части экрана находится индикатор
заполненности буфера текста. Чем ближе штрих к правому краю
экрана, тем меньше остается памяти для текста.
  Некоторые функции "посажены" на управляющие и редактирующие
клавиши. При одновременном нажатии некоторых этих клавиш и
клавиши <АР2> функции могут изменяться. Изменение редактирую-
щих функций может произойти и после нажатия клавиши <ПОВТ>.
Эта клавиша - префикс.
  После нажатия клавиши <КТ> происходит выход в главное меню.
В вeрхней части экрана отображаются следующие команды:

 File Search Repl Block pAram Print

Чтобы выбрать нужный пункт, необходимо нажать соответствующую
буквенную клавишу. Для выхода из меню нужно нажать клавишу
<КТ>. Все пункты имеют внутренние меню; некотрые из команд
продублированны для исполнения в непосредственном режиме при
одновременном нажатии клавиш <СУ> и определенной буквенной.
  Подробнее см. ниже.
  При одновременном нажатии клавиши <АР2> и буквенной проис-
ходит смена регистра: режим СТР заменяется на ЗАГЛ и наобо-
рот. Это значительно облегчает написание текстов: работая в                            
режиме "РУС,стр" легко печатать заглавные буквы с помощью
клавиши <АР2>.
  После нажатия <ПОВТ> также изменяются функции некоторых
клавиш.
  При удерживании клавиши нажатой в течении 0.8 с. включается 
автоповтор.

                Управляющие и редактирующие
                        клавиши

       →,←      - перемещение курсора враво и влево.
 АР2 + →,←      - перемещение курсора в конец и начало строки.
       ↑,↓      - перемещение курсора вверх и вниз на строку.
 АР2 + ↑,↓      - переход на 19 строк вверх и вниз. 
 ПОВТ  ↑,↓      - переход на начало и конец текста.
       ←|       - переход на начало следующей строки. В режи-
                ме вставки строка будет раздвоена.
 АР2 + ←|       - переход на начало следующей строки. В режи-
                ме вставки строку не раздваивает.
       ВС       - курсор в первую позицию. Т.к. экран может
                быть сдвинут, эта команда в отличие от пере-
                хода на начало строки может вызвать неэквива-
                лентное действие.
 АР2 + ВС       - сдвиг экрана влево до текущей позиции.
       ←|       - удаление символа слева от курсора. В начале
                строки вызывает сцепление строк.
 АР2 + ←|       - переслать текущую строку в буфер строки.
       |←       - удаление символа на месте курсора.
 АР2 + |←       - удаление строки. Строка заносится в буфер.
       |→       - вставка пробела.
 АР2 + |→       - вставка строки.
 ПОВТ  ИНД СУ   - вставить строку из буфера. В паре командой
                удаления строки может служить для переноса
                строк, в паре с командой копирования в буфер-
                для копирования отдельных строк.
       -|→      - удаление части строки справа от курсора.
 ПОВТ  -|→      - дублирование строки.
       ПОВТ     - префикс.
       ИНД СУ   - вкл/выкл режима вставки.
       БЛОК РЕД - вкл/выкл режима генерации спецсимволов.                
       ШАГ      - вкл/выкл скроллинга.   
       КТ       - выход в меню.
 АР2 + КТ       - выход из редактора. Текст надо сохранить.
       СБР      - установка/сброс табулируемой позиции.          
 АР2 + СБР      - сброс всех табулируемых позиций.
 ПОВТ  СБР      - установка табуляции для ассемблерных текс-
                тов.
       ТАБ      - табуляция.   
 ПОВТ  ТАБ      - табуляция пробелами.
 ПОВТ  <число> <ВК> - переход на указанную страницу. Например,
                нажатие клвиш <ПОВТ>,<1>,<0>,<ВК> вызовет
                переход на 10-ю страницу текста. По умолчанию
                в странице 56 строк. Это число используется
                для печати на принтер. Его можно изменить с
                помощью команд меню.

                Работа в меню.

  Раздел "Files".
  Name          - установка имени текстового файла.
  Save          - запись файла с расширением ".TXT".
  saveInt       - запись файла без блока параметров, в кото-
                ром указаны позиция курсора, установленная
                длина страницы, режимы и др. Используется
                вместе с режимом некодирования пробелов для
                создания текстов, которые можно простмотреть
                из системы.
  Load          - загрузка файла с диска.
                ВНИМАНИЕ! При чтении-записи содержимое корзины
                теряется.
  Putscrap      - запись содержимого корзины с расширением
                ".SCR" и под текущим именем.
  Getscrap      - чтение в корзину.         
  Unit          - установка привода.

  Раздел "Search".

  Model         - ввод модели для поиска.
  Up            - поиск вниз.
  Down          - поиск вверх.

  Раздел "Repl".

  Down          - замена вниз.
  Newline       - замена только с начала строки.
  Block         - замена только внутри блока.

  Раздел "Block".

  Begin         - установить начало блока.
  End           - установить конец блока.
  Copy          - переслать блок в корзину.
  Delete        - удаление блока с занесением в корзину.
  Insert        - вставить содержимое корзины.

  Раздел "pAram".

  Lenpage       - установит длину станицы.
  Packing       - включение упаковки пробелов.
  Nopacking     - выключение упаковки.

  Раздел "Print".

  Print         - печать текста на принтер.
  printQuestion - здесь не реализовано.
  printBlock    - печать блока (не путать с корзиной!).
  typeEsc       - вставить в текст символ Еsc для управления
                принтером.

                Пример создания COM - файла.

  Для создания командного файла необходимо набрать текст в
режиме неупаковки пробелов, записать на диск и переименовать:
расширение ".TXT" изменить на ".COM". Запись на диск необходи-
мо производить командой saveInt.
  Для создания документации, которую без помех можно распеча-
тать из системы, нужно также пользоваться этим режимом и этой 
командой записи.
 
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

       О П И С А Н И Е   А С С Е М Б Л Е Р - С И С Т Е М Ы
                A S S E M B L E R   H C D


  Компиляция набранного текста осуществляется нажатием клавиш
<СУ>+<Т>. После успешного ее завершения можно записать модуль
командой "Save", запустить его(без возврата в редактор) коман-
дой "Run", а также распечатать таблицу меток.
  При запуске модуля длиной более 16 Кбайт "лишняя" часть
будет затерта; поэтому такие программы лучше запускать из сис-
темы. Расширение при записи модуля - ".MIC".
  Данный ассемблер содержит элементы макро-ассемблера:
возможность написания сложных выражений со скобками, подключение
эмулятора некоторых команд процессора К1801ВМ2 : MUL, DIV, ASH.
  Система располагается по адресам 1000-37000. Текст - в страни-
це #1, с адреса #40000, а также странице #2 (100000-140000).
При компиляции модуль размещается в странице #3, с адреса 
40000, а таблица меток - в странице #6, с адреса 110000. Так
как корзина редактора располагается также в этой странице, то
ее содержимое при компиляции теряется.
  Максимальная длина транслируемого модуля - 20 Кбайт.
  В случае возникновения ошибки печатается ее содержание и
после нажатия любой клавиши происходит выход в редактор.

            ФОРМАТ ЗАПИСЕЙ И ПСЕВДООПЕРАТОРЫ

  Строка программы может иметь вид, не отличающийся от обычного
формата ассемблера. Первое отличие состоит в том, что после
имени метки и двоеточия не обязательно ставить пробелы, но нель-
в одной строке ставить две обычные метки:

МЕТКА1:МЕТКА2: ...

  Если это необходимо, то можно написать следующим образом:

МЕТКА1:
МЕТКА2: ...

  Однако разрешается после имени обычной метки ставить имена
локальных:

МЕТКА:1:2:3: ...

  Примечание: обращение к локальным меткам возможно вперед,
через обычную.
  В данной системе длина метки не должна превышать 16 символов.
  Комментарии после оператора отделять точкой с запятой не
обязательно, но в начале строки - необходимо.
  Данная система содержит нестандартную функцию: возможность
написания в одной строке нескольких операторов.
  Пример:

A1: MOV  'A',R0 / EMT  63  ;печать символа 'A'

  Как показывает практика, эта возможность во многих случаях
облегчает чтение программ и экономит память. После наклонной
черты не должно быть имени метки, пробелы ни до, ни после не
обязательны.
  Строки программы могут быть отделены друг от друга пустыми
строками. 
  В конце программы можно (но необязательно) поставить оператор
END.
  Если группу строк ограничить символами "$", то эта группа не
бутет компилироваться:

$  MOV #33,R0
   EMT  63
   MOV #121,R0
$  EMT 63

  Знак "$" должен стоять в начале строки и быть обязательно
парным.

        3.1. Псевдооператоры.
  
1. Занесение в память чисел и адресов меток:

  .#МЕТКА1,МЕТКА2,ЧИСЛО1,ЧИСЛО2 .....

2. Занесение байтов:

  .B:БАЙТ1,БАЙТ2 ....
  
  Двоеточие после "B" необязательно.
 
3. Текст:

  .A: текст
   
  После символа "A" двоеточие необязательно.
  Признак конца текста - код конца строки 12.
  Введен нестандартный псевдооператор:
  
  .' текст '

  Ограничителем текста может быть или апостроф,или конец строки.

4. Занесение в регистр абсолютного адреса метки.

  .@R,МЕТКА
  
  Применяется вместо стандартного ".@", но в отличие от него
сразу заносит в память последовательность кодов занесения в
регистр адреса метки. Например:

  .@1,MET

2000/010701
2002/062701
2004/000776

  Такая форма экономит память текста и облегчает написание прог-
рамм, независимых от адреса в памяти.

5. Занесение в память спрайтов.

  .<ЗН1ЗН2ЗН3...>

  Между скобками должно быть число знаков, кратное 4: каждые 4
знака означают байт для пересылки в экранную область ОЗУ. Про-
бел заносит два нуля, цифры 1-3 - цвета от синего до красного
соответственно.
  Пример:

  .< 33 >
  .<3223>
  .<3223>
  .< 33 >

6. Занесение N пустых байт.

  .+N

7. Подключение эмулятора.

  .AR

  Этот псевдооператор должен быть в исполняемой части программы,
предпочтительнее в самом начале. В загрузочный модуль запи-
сывается последовательность кодов, устанавливающих вектор 10
и сам эмулятор. Он обрабатывает команды: MUL, DIV, ASH. Коды
условий после выполнения этих команд  н е  у с т а н а в л и -
в а ю т с я. Компилятор обрабатывает также другие команды:
ASHC, FMUL,FDIV и др, реализованные в процессорах ВМ2 и ВМ3.

8. В системе реализован оператор прямого присваивания и специ-
альный нестандартный оператор "=":

  =МЕТКА:АДРЕС

  В отличие от оператора прямого присваивания метка, опреде-
ленная таким образом, является обычной меткой и обращение к ней
бутет производится тем же способом адресации, как к другим
меткам. Этот способ применяется для объединения программ.

  Помимо этих псевдооператоров, реализованны нестандартные
операторы для работы со стеком: PUT и GET.
  Пример:
  
  PUT  R0
  ...
  GET  R0

  Можно также использовать операторы CALL и RET - обращение
к попрограмме через R7 и возврат из нее.

             Использование арифметических выражений.

  В  л ю б о м  месте программы вместо имени метки (кроме оп-
ределения ее через двоеточие) или числа можно поставить вы-
ражение с угловыми скобками "<" и ">". Если выражение стоит
на месте метки, то скобки, в общем, не обязательны, а там,
где по контексту должно быть число, необходимо их поставить.
  Разрешено использовать следующие операции: +,-,*,\.
Последняя операция означает деление целых чисел.
  Операции не имеют приоритета друг над другом.
  Примеры:

  MOV  #<144*144>-5,R0
  MOV  #<<15+ALFA>*3+<3*B>>*6+11,R1
  MOV  #ADDR+2,R1
  MOVB TXS+5,R5
  
  Число вложений - до 16.

             Имена регистров.

  Кроме обычных имен регистров (R0,R1...R6,R7,SP,PC) можно
использовать специальные %1...%7, а если имя стоит в скобках,
то можно указывать только номер регистра. Примеры:

  MOV %1,%2
  MOV 6(S),R0
  MOV (5)+,R0

             Установка адреса компиляции.

  Установка производится специальным оператором DSPL (DS), пос-
ле которого ставиться адрес, с которого будет размещаться мо-
дуль при работе.
  Этот оператор должен быть единственным и стоять в начале текс
та. По умолчанию принимается адрес 1000.

           Подгрузка модулей

  Чтобы при компиляции включить некий файл в загрузочный мо-
дуль, необходимо поставить в нужное место псевдооператор
LOAD. Примеры:

LOAD A:TEXT.TXT 
LOAD FILE.MIC

  Как видно, загружен может быть любой файл с любого привода.
Общая длина модуля после загрузки не должна превышать 20 Кбайт
Если загрузка происходила не с текущего привода, то после нее
текущим станет указанный в команде LOAD.

           Компиляция и сообщения об ошибках.

  Компиляция начинается при нажатии клавиш <СУ>+Т.После ее за-
вершения печатается длина модуля и адрес первого свободного
байта. Для выхода в редактор нужно нажать любую клавишу. В
случае ошибки печатается ее содержание и после нажатия клавиши -
выход в редактор на место ошибки.
  Время компиляции текста длиной 32 Кбайт составляет около
2 минут.


▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀

                                        Борисенко М.А.
                                        Ростов-на-Дону,
                                        03.09.1992 г.



