Часть документации на ПЭВМ "Микроша" с описанием работы текстового редактора и транслятора ассемблера. Данный комплект программ занимал 4Кб: 2Кб уходило на редактор, и 2Кб на транслятор.
Аутентичный текст документации был написан моноширинным шрифтом с засечками, но к сожалению сейчас в браузерах нет стандартных шрифтов с такими характеристиками. Поэтому придется довольствоваться просто моноширинным шрифтом.
* * *
Редактор и Ассемблер
Программа составлена в кодах процессора и загружается в память ПЭВМ по директиве "I" СИСТЕМНОГО МОНИТОРА. Стартовый адрес - 0000.
Предлагаемый пакет программ состоит из Редактора и Ассемблера.
Редактор предназначен для набора и редактирования любого текста непосредственно на экране дисплея: исправления ошибок, удаления и ввода символов и целых фрагментов. Все исходные тексты с помощью Редактора могут быть сохранены на магнитной ленте.
Ассемблер - программа-транслятор для разработки программ на языке ассемблера микропроцессора КР580ВМ80А. Текст программы под управлением Редактора с клавиатуры или магнитофона заносят в область текстового буфера ОЗУ, а затем с помощью Ассемблера транслируют. Результат трансляции - машинные коды разрабатываемой программы - располагаются в другой области ОЗУ, называемой областью трансляции.
Работа с пакетом программ начинается с запуска Редактора директивой "G" "СИСТЕМНОГО МОНИТОРА", в результате чего на экране появляется надпись "ED*МИКРОН*" (при первом запуске выводится сообщение об ошибке, однако Редактор самостоятельно восстанавливает нормальный режим работы).
Директива Редактора "АР2"+"N" очищает экран и выводит вопрос "NEW?". При ответе "Y" происходит очистка текстового буфера и Редактор переходит в режим набора строки (в начале первой строки появится псевдографический символ "стрелка вправо").
Режим набора используют для ввода текста с клавиатуры компьютера, причем строка может содержать не более 64 символов. За 8 позиций до конца строки генерируется звуковой сигнал, предупреждающий о том, что для продолжения набора необходимо перейти на новую строку. Набор строки завершается нажатием клавиши "ВК", в результате чего она заносится в текстовый буфер. Допущенную ошибку легко исправить, сместив курсор клавишей "<-" до нужного места и набрав нужный символ. Далее можно возвратиться к любому месту набираемой строки. Для перехода к редактированию нужно нажать клавишу "СТР".
Режим редактирования позволяет оперативно просматривать введенный текст построчно, либо фрагментами по 24 строки. Очередной фрагмент выводится последовательным нажатием клавиш "АР2" и "↓" или "АР2" и "↑". Вернуться к началу или концу текста можно с помощью директив "АР2"+"B" или "АР2"+E" соответственно. Для редактирования внутри отображаемого фрагмента нужно пользоваться клавишами перемещения курсора. Переход из режима редактирования в режим ввода строки происходит при попытке смещения курсора за пределы нижней границы текста клавишей "↓". Для полного стирания ранее набранного текста необходимо с помощью директивы "АР2"+"E" или "АР2"+"↓" перевести курсор в последнюю строку, а затем набрать "АР2"+"N" и "Y".
В Редакторе предусмотрена возможность автоматического поиска группы символов. Для этого после задания директивы "AP2"+"L" вводят искомую группу и нажимают "ВК" - на экране появится фрагмент текста, в первой строке которого содержатся нужные символы. Воспользовавшись директивой "АР2" + "R", можно найти последующие Фрагменты с искомой группой символов.
Отдельные символы удаляют из строки установкой курсора под соответствующим знакоместом и нажатием на клавишу "F2", а освобождают место для пропущенного символа клавишей "F4".
В режиме редактирования в текст можно вставлять отдельные псевдографические символы, нажав предварительно клавиши "АР2" + "\".
Чтобы вставить в текст одну или несколько строк, к началу следующей за ними строки подводят курсор и выполняют директиву "АР2"+"A". Если надо вставить строки перед первой строкой текста, то необходимо перевести курсор в левый верхний угол экрана с помощью директивы "АР2" + "⬉", а затем выполнить "AP2"+"A". В результате весь текст, следующий за помеченной строкой, удаляется с экрана и Редактор переходит в режим ввода строк. Выйти из этого режима можно нажав клавишу "СТР".
Для удаления фрагмента текста курсор перемещают в начало его первой строки и выполняют директиву "AP2"+"D". Затем перемещают курсор до строки, перед которой заканчивается удаляемый фрагмент, и вновь нажимают "AP2"+"D". Если данный Фрагмент решено оставить, то нажимают клавишу "СТР".
Имеющийся в памяти компьютера текст можно записать на магнитную ленту по директиве "АР2"+"O". В ответ на нее Редактор запрашивает имя текста, под которым он будет сохранен на ленте. Указав имя (что не является обязательным) и, включив магнитофон на запись, нажимают "ВК".
Для приема текста с магнитной ленты вводят директиву "АР2"+"I", а затем, в ответ на запрос редактора - имя вводимого текста. После этого включают магнитофон на воспроизведение и нажимают "ВК". Если имя не указано, то произойдет загрузка первого встреченного Редактором текста. По окончании ввода на экране появится начальный фрагмент введенного текста.
Редактор может самостоятельно сравнить записанный на ленту текст с текстом в памяти компьютера. Для этого надо нажать клавиши "AP2"+"V" и ввести текст с магнитофона. Если тексты не идентичны, на экран выводится сообщение "ОШИБКА", а если совпадают - их начальный фрагмент. Редактор позволяет компоновать текст из нескольких фрагментов, вводимых в этом случае директивой "АР2"+"M". Любую директиву работы с магнитофоном можно отменить нажатием клавиши "СТР".
* * *
Введенную программу можно сразу же оттранслировать, передав управление Ассемблеру директивой "СТР", в ответ на которую на экране появится надпись "ASSM*MИKPOH". При необходимости из Редактора можно выйти в "СИСТЕМНЫЙ МОНИТОР" нажав "УС"+"E".
Необходимо учесть, что программы на языке ассемблера, предназначенные для трансляции, должны иметь определенный формат записи. В состав строки программы входят поля метки, оператора, операнда и комментария. В поле метки содержатся символические имена данных или команд. Этим символическим именам при трансляции программы в машинные коды присваиваются значения, равные адресу ячейки, в которой располагаются отмеченные данные или команды. Поле метки всегда отделяется от поля оператора символом ":". Для удобства чтения программ между полями допускается вводить пробелы клавишей "ГТ". В поле оператора содержится команда микропроцессора (см. 7.2) или один из псевдооператоров "ORG", "END", "EQU", "DB", "DW", "DS". Псевдооператор "ORG" помещает значение выражения, используемого в качестве операнда, в счетчик адреса. Псевдооператор "END" информирует Ассемблер о достижении Физического конца команды. Этот псевдооператор содержит последняя строка программы. Псевдооператор "EQU" присваивает метке значение, указанное в Поле операнда. Псевдооператор "DB" служит для размещения в последовательных ячейках памяти элементов списка байтовой длины, указанных в поле операнда. Псевдооператор "DW" аналогичен "DB", но оперирует с элементами списка двухбайтовой длины. Псевдооператор "DS" резервирует в памяти ячейки памяти в количестве, определяемом значением выражения, указанного в поле операнда.
Пример:
|
ORG
|
OOOOH
|
Ml :
|
EQU
|
QF89DH
|
М2 :
|
EQU
|
0F818H
|
|
LXI
|
H, BUF
|
|
CALL
|
M2
|
|
CALL
|
Ml
|
BUF:
|
DB
|
1FH,'МИКРОША',00H
|
|
END
|
|
Используемые в программе метки должны состоять из последовательностей латинских или русских букв или цифр и обязательно начинаться с буквы или символа "@" или "?".
Длина метки не более 6 символов. В качестве метки нельзя использовать имена регистров процессора: А, В, С, D, Е, Н. L, SP, PSW. Имена меток с оператором присвоения "EQU" должны быть определены перед использованием.
Псевдооператор "ORG" должен быть описан только один раз.
В качестве операндов можно использовать имена регистров микропроцессора, имена меток, константы, выражения, десятичные и шестнадцатеричные числа. После шестнадцатеричного числа ставится буква H, а если он начинается с буквы, то перед ним ставится 0.
Операндами могут быть выражения с арифметическими знаками "+" и "-". В них можно использовать константы, метки, а также текущий адрес трансляции, обозначаемый "$".
Трансляция программы в машинные коды начинается после нажатия одной из клавиш:
"1"-программа транслируется с одновременным выводом на экран протокола трансляции, представляющего собой строки исходного текста программы, перед которыми выводятся шестнадцатеричные коды ошибок, адреса размещения команд и данных в ОЗУ компьютера и машинные коды транслируемой программы;
"2"-после трансляции программы на дисплее отображается перечень встретившихся в ней имен меток в алфавитном порядке и их шестнадцатеричные адреса;
"3"-исходный текст программы транслируется в машинные коды, и выводится результат трансляции: количество ошибок и два шестнадцатеричных числа.
Первое из них - адрес конца оттранслированной программы в той области, где она должна работать. Второе, ограниченное символами "/", - в области трансляции. Это связано с тем, что в результате трансляции машинные коды программы всегда располагаются в области оттранслированных программ независимо от адресов, в которых она должна работать. Поэтому, если начальный адрес транслируемой программы отличен от адреса начала области трансляции (1100H-18FFH), то перед отладкой или запуском ее необходимо переместить в рабочую область, определенную псевдооператором "ORG" в начале программы. Для перемещения можно воспользоваться директивой "Т" "СИСТЕМНОГО МОНИТОРА".
Трансляцию программы можно прервать нажатием клавиш УС и "C". Выйти из Ассемблера в "СИСТЕМНЫЙ МОНИТОР" можно, нажав клавиши "ус"+"E" или любую другую клавишу с кодом, меньшим 31Н. При нажатии "СТР" управление передается Редактору.
Если при трансляции объем ОЗУ компьютера окажется недостаточным, она прекратится и на экране появится сообщение "МАЛО ОЗУ".
Во время трансляции Ассемблер анализирует синтаксис исходного текста и при обнаружении ошибок, выводит следующее сообщение на экран;
01 - двойное определение метки;
02 - метка не была определена ранее;
04 - использована несуществующая мнемоника команды;
08 - неправильно определен операнд;
10 - в имени метки применен недопустимый символ.
Если в одной строке обнаружено несколько ошибок, то на экран выводится результирующий код, равный сумме кодов отдельных ошибок.