КОМАНДЫ РЕДАКТОРА
Команды редактора вводятся нажатием клавиши с соответствующей латинской буквой, которая в
названии команды выделена полужирным шрифтом._Вставка строк
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.