КОМАНДЫ РЕДАКТОРА
Команды редактора вводятся нажатием клавиши с соответствующей латинской буквой, которая в
названии команды выделена полужирным шрифтом.
_Вставка строк
Insert [N][,M]*
Автоматически генерировать строки, начиная со строки N и шагом М. После ввода команды
Вы можете производить последовательный набор текста программы. Отказаться от генерации
строк можно, нажав клавишу Edit (Caps Shift/1). Если в процессе ввода программы номер
строки превысит 327 67, то генерация строк прекратится._
*)Аргументы в квадратных скобках являются необязательными, при их пропуске, как правило, используется Значе-
ние параметра по умолчанию.
Строку также можно вставить в программу, введя на подсказку > ее номер и через пробел —
текст.
_Вывод листинга программы
List [N][,M]
Вывести на экран листинг программы со строки N по строку М включительно. По умолчанию N
равно 1, М — 32767. Листинг выводится по страницам. Переход к следующей странице проис-
ходит по нажатию любой клавиши, кроме Edit, нажатие которой прервет выдачу листинга и
вернет управление редактору.
Konfigure list N
Установить количество строк в странице листинга.
Write text [N][,M]
Распечатать на принтере текст программы со строки N по М включительно.
Если N и М не указаны, то будет распечатана вся программа.
_Редактирование текста ассемблерной программы
reNumber [N][,M]
Перенумеровать строки программы, начиная с первой строки, которой присваивается номер N, с
шагом М. Если в результате выполнения команды номер какой-либо строки может превысить 32767,
то команда не выполняется.
Delete N,M
Удалить строки от N до М включительно. Если М меньше N, или определено менее двух аргумен-
тов, то команда игнорируется. Отдельная строка может быть удалена просто введением ее номе-
ра.
Move [N][,M]
Копировать строку с номером N в строку с номером М. Если строки с номером N не существует,
то команда игнорируется. Если строка с номером М существует, ее содержимое заменяется содер-
жимым строки N. Аккуратно используйте эту команду — старайтесь не вызывать ее без аргумен-
тов.
Find [N][,M][,Fs][,Ss]
Найти стринг (строку текста) Fs в программе, начиная со строки N и до строки М. Если такая
строка найдена, то она отображается на экране и GENS4 переходит в режим редактирования стро-
ки, причем курсор устанавливается на начало найденного стринга. В режиме редактирования мож-
но заменить стринг Fs на стринг Ss (см. команду редактора Е).
Edit N
Редактировать строку с номером N. Вызванная на редакцию строка копируется в буфер и ото-
бражается на экране вместе с номером. Редактирование происходит в буфере, поэтому исходная
строка не изменяется и в любой момент может быть восстановлена. При отсутствии строки с но-
мером N команда игнорируется. Редактирование осуществляется с помощью следующих подкоманд
(клавиш):
SPACE — переместить курсор на одну позицию вправо;
CAPS SHIFT/0 — переместить курсор на одну позицию влево;
CAPS SHIFT/8 — переместить курсор на следующую позицию табуляции;
List - отобразить на экране текущее состояние строки;
Kill — удалить символ в указанной курсором позиции;
Zap — удалить все символы, начиная с указанного курсором и до конца строки;
Find — найти следующее появление в тексте программы стринга, ранее определенного коман-
дой редактора F;
Swap — заменить найденный стринг Fs на стринг Ss, ранее определенный командой редактора
F, и искать следующее появление стринга Fs;
Insert — перейти в режим «вставка». Выход из режима осуществляется нажатием Enter;
eXpand — переместить курсор в конец строки и включить режим «вставка»;
Change — перейти в режим «замена». Выход из режима осуществляется нажатием Enter;
Quit — прервать редактирование строки: вызванную на редактирование строку записать в
программу в исходном виде, все изменения игнорировать;
Reload — перезагрузить буфер редактирования: вызванную на редактирование строку переза-
писать в буфер в исходном виде, все изменения игнорировать;
ENTER — завершить редактирование строки: поместить отредактированную строку из буфера в
текст программы.
_Работа с дисководом и магнитофоном
Текст программы и объектный код можно сохранить как на магнитной ленте, так и на дискете.
Тип накопителя задается форматом имени файла. При работе с дисководом вторым символом в име-
ни должен стоять знак двоеточия (:). Если знак двоеточия отсутствует в имени файла, то в ка-
честве носителя будет использоваться магнитная лента. Формат имени файла для дисковых уст-
ройств:
X: filename,
где X — номер устройства (1...4, что соответствует дисководам "A"..."D").
Напомним, что имена файлов для магнитофона должны содержать не более 10 символов, для дис-
ковода — не более 8.
Get text [,,S]
Загрузить с магнитного носителя программу из файла с именем S. Если стринг S пустой, с магни-
тофона будет считываться первый встреченный файл. Если в памяти уже находится программа, то за-
гружаемый файл будет присоединен к ней. Строки полученной программы будут перенумерованы, начи-
ная с номера 1 и с шагом 1.
Put text [N][,M][,S]
Записать на магнитный носитель программу со строки N до М включительно в файл с именем,
заданным стрингом S. По умолчанию используются аргументы, установленные предыдущей командой.
Примеры.
Записать строки с номерами от 2 0 до 4 00 включительно на магнитофон в файл с именем
MAINPROG:
P20,400,MAINPROG
Записать всю программу на дисковод "В" в файл с именем MIRACLE:
P1,32767,2:MIRACLE
Если при записи на диск файл с указанным именем уже существует, то (в зависимости от вер-
сии GENS4) будет выведен запрос:
Overwrite (Y/N)? (Переписать (Да/Нет)?)
или
File exists Delete (Y/N)? (Файл найден Удалить (Да/Нет)?)
Для удаления существующего файла и записи нового нажмите Y; для отмены операции — любую
другую клавишу.
Таре for include [N][,M][,S]
Записать программу в специальном формате. Записать на магнитную ленту в файл с именем S
фрагмент программы со строки N по М в специальном формате для последующего включения в про-
цесс трансляции по команде ассемблера *F . Файл разбивается на блоки, длина которых равна
размеру входного буфера (см. команду редактора С).
Object save [,,S]
Записать на магнитный носитель объектный код в файл с именем S (записывается код. создан-
ный после последней директивы ORG). Если объектный код не создан, команда будет проигнориро-
вана.
Другие команды
Run program
Запустить оттранслированную программу с адреса, определенного директивой ENT. Программа
выполняется как подпрограмма относительно GENS4, возврат в редактор происходит по команде
процессора RET.
Bye
Возвратить управление интерпретатору Бейсика. Для перезапуска GENS4 из Бейсика используйте
оператор: RANDOMIZE USR ХХХХХ.
Change buffers
Изменить размер буферов (входного и макроопределений). По команде выводятся запросы
Include buffer? (Размер входного буфера?)
Macro buffer? (Размер буфера макроопределений?)
Размер входного буфера определяет скорость трансляции программы, записанной на магнитной
ленте — чем больше буфер, тем больший фрагмент текста может быть считан и, следовательно,
тем быстрее будет происходить трансляция. Необходимо учитывать, что при записи файла коман-
дой редактора Т и при последующем чтении его командой ассемблера *F размер входного буфера
должен быть одинаковым. В дисковой версии размер буфера установлен равным 25 6 байт и не
влияет на скорость ассемблирования.
Размер буферов рекомендуется задавать перед сеансом работы — сразу после загрузки GENS4.
Separator [,,D]
Изменить символ разделителя аргументов в командной строке на первый символ стринга D. По-
сле загрузки GENS4 разделителем является запятая. Изменение разделителя обычно используется
для поиска фрагментов текста, содержащих запятую.
use RAM Until [H]
Установить верхнюю границу используемой памяти равной Н. Если аргумент не указан, то на
экран выводится текущая верхняя граница памяти: GENS4 не может размещать текст программ или
объектный код в области памяти выше указанной границы. При ее достижении выдается сообщение
об ошибке:
Out of memory!
current Values
Выдать на экран служебную информацию: значение параметров N1, N2, S1, S2 по умолчанию,
символ разделителя, адреса начала и конца текста.
X catalogue [N]
Вывести на экран каталог диска, номер которого определен аргументом N. По умолчанию выво-
дится каталог диска "А".
Zap text
Удалить текст программы, находящейся в памяти. Выводится запрос: Delete text (Y/N)
(Удалить текст (Да/Нет))
Для уничтожения текста нажмите Y, для отмены операции — любую другую клавишу.
Help
Вывести на экран перечень команд редактора.
Assemble [O][,T][,F]
Ассемблировать программу.
Этой команде посвящен следующий раздел описания GENS4.
АССЕМБЛИРОВАНИЕ ПРОГРАММЫ
Ассемблирование (оно же — транслирование, оно же — генерация объектного кода) — это про-
цесс перевода программы, написанной на ассемблере, на единственно понятный для процессора
язык — язык кодов команд.
Как уже упоминалось, ассемблирование программы запускается командой строчного редактора А.
Приведем еще раз ее формат:
Assemble [O][,T][,F]
где
0 — ключи ассемблирования (описаны ниже).
Т — размер таблицы символов в байтах. По умолчанию размер таблицы устанавливается пропорционально
размеру исходного текста программы. Как правило, этого достаточно, но в случае использования большого
количества меток в короткой программе возникает необходимость увеличить размер таблицы символов. Если
размер таблицы мал, выдается сообщение:
No Symbol Table space!
F — имя файла на диске, в который будет записан объектный код. Во время трансляции объектный код
предварительно помещается в буфер, расположенный либо сразу за таблицей символов (ключ 16, см. ниже),
либо начиная с адреса, заданного первой встреченной в программе директивой ORG. Конец буфера определяет-
ся верхней границей доступ- ной памяти, установленной командой редактора U. При заполнении буфера его
содержимое переписывается на диск, и ассемблирование продолжается в буфер.
Если имя файла не указано, объектный код будет помещен в память по адресам, заданным ди-
рективами ORG либо ключами ассемблирования.
Режим записи объектного кода на кассету в процессе ассемблирования не поддерживается.
Ключи ассемблирования:
1 — выдать таблицу символов в конце листинга ассемблирования;
2 — отменить генерацию объектного кода (фактически, в процессе ассемблирования производить
только проверку синтаксиса программы); 4 — выводить листинг ассемблирования; 8 — переопреде-
лить вывод на принтер;
16 — размещать объектный код непосредственно после таблицы символов; адрес, определенный
директивой ENT, игнорировать.
32 — не производить проверку расположения объектного кода в памяти. Приводит к незначи-
тельному ускорению процесса ассемблирования.
Для того, чтобы одновременно задать несколько условий трансляции, нужно сложить значения
соответствующих ключей. Например, трансляция текста программы с выдачей листинга ассемблиро-
вания (ключ 4) на принтер (ключ 8) без генерации объектного кода (ключ 2) будет выполнена по
команде редактора А14.
При записи объектного кода на диск полезно пользоваться ключом 16, так как в этом случае
под буфер ассемблера отводится максимальный размер памяти. Кроме того, ключ 16 незаменим,
если необходимо разместить программу в области, недоступной GENS4 при обычном режиме ассемб-
лирования (например, в видеопамяти). Полученный таким образом код может быть записан на маг-
нитный носитель с помощью команды редактора О. Начальный адрес в заголовке файла указывает
на реальное местоположение файла в памяти после трансляции.
Ассемблирование происходит в два прохода: на первом проходе проверяется синтаксис и форми-
руется таблица символов, в которую заносятся имена и значения встреченных в программе меток;
на втором — создается объектный код.
Если обнаружена ошибка на первом проходе, трансляция приостанавливается, и на экран выда-
ется сообщение об ошибке. В этой ситуации можно либо перейти в режим редактирования, нажав
клавишу Е, либо продолжить трансляцию, нажав любую другую клавишу. В конце первого прохода
выдается сообщение:
Pass 1 errors: NN
где NN — количество ошибок, Найденных во время первого прохода. При обнаружении ошибок
второй проход выполняться не будет. Во время второго прохода параллельно с генерацией объ-
ектного кода на экран выводится листинг ассемблирования (если, конечно, это разрешено соот-
ветствующими командами ассемблера). В строке листинга содержится информация как об исходном
тексте программы, так и о результатах трансляции — последовательно выводятся значение счет-
чика адресов, объектные коды, номер транслируемой строки и ее текст. Не пугайтесь, если Вы
обнаружите «пропажу» части объектных кодов — в строке листинга ассемблирования выводятся
только первые четыре байта оттранслированной программы. Выдачу листинга ассемблирования, а
вместе с ним и процесс трансляции, можно приостановить клавишей Space. После чего, нажав Е,
Вы вернетесь в редактор, а нажатие любой другой клавиши продолжит процесс трансляции.
При втором проходе могут быть обнаружены лишь две ошибки: *ERROR* 10 и Bad ORG!. Ошибка
*ERROR* 10 не фатальная, поэтому после выдачи сообщения о ней ассемблирование можно продол-
жить нажатием на любую клавишу кроме Е (клавиша Е вернет Вас в редактор). При обнаружении
ошибки Bad ORG! управление сразу передается в редактор.
Если в процессе трансляции не была обнаружена необходимая метка, последует предупреждение:
*WARNING* LabeLName absent
где LabeLName — имя необнаруженной метки.
В конце второго прохода на дисплей выводятся сообщения:
Pass 2 errors NN
Table used: AAAAA from BBBBB
где NN — общее количество ошибок после второго прохода;
ААААА — размер таблицы символов;
ВВВВВ — максимальный размер таблицы символов.
Если в тексте программы была встречена директива ENT, то выдается сообщение:
Executes: CCCCC
указывающее адрес запуска программы командой редактора R.