Описание прог Artist, Art Studio, Gens3-Mons3, Gens4, Hisoft C v1.1, Hisoft Pascal v1.4, Tasword2 и TLW 1969 г.

Gens-4 - описание ассемблера Gens-4. Строчный редактор. Приложения.



     Р а з д е л  3 .  С т р о ч н ы й   р е д а к т о р
     ===================================================

     3.1. Введение в редактор
     =======================

     Редактор, поставляемый со всеми  версиями  GENS4,  является  простым
строчным  редактором,  разработанным  для  обслуживания всех операционных
систем,  сделанных для Z80. Редактор прост в использовании и дает возмож-
ность редактировать программы просто и эффективно.

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

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

     Режим редактора  включается  автоматически  при  запуске  GENS4 и за
вспомогательным текстом следует подсказка редактора ">".

     В ответ на подсказку вы можете ввести  командную  строку  следующего
формата:

     С   N1,N2,S1,S2    , где:

"C"   - мнемоника команды, которую необходимо выполнить;

N1    - число в пределах от 1 до 32767 включительно;

N2    - число в пределах от 1 до 32767 включительно;

S1,S2 - строка не более чем из 20 символов.

     Запятая используется  для разделения различных аргументов,  хотя это
можно изменить - см.  команду "S".  Пробелы игнорируются во всех  случаях
кроме тех, когда они находятся внутри строк. Никакой из аргументов не яв-
ляется обязательным,  хотя некоторые команды, например, команда "DELETE",
не будут работать, если опущены аргументы N1 и N2.

     Редактор помнит  ранее введенное число и строки и использует сформи-
рованное значение для применения,  если вы не определили другие  значения
внутри командной строки.


     3.2. Команды редактора
     ======================

     3.2.1 Вставка текста
     ====================

     Текст может быть введен в текстовый файл или указанием номера  стро-
ки,  пробела и требуемого текста,  или посредством команды "I".  Заметим,
что если сразу за номером строки вы введете ,  то эта строка будет
удалена из текста, если, конечно он существует. Где бы не вводился текст,
можно применять клавиши "<--", "-->" и  (возврат к метке команды).

     Клавиша  будет уничтожать предыдущий символ (но не далее на-
чала строки текста).

     Текст вводится  во  внешний  буфер внутри GENS4 и вы должны оградить
его от переполнения использованием клавиш  или "<--" для освобож-
дения свободного пространства.  Если во время ввода текста редактор опре-
делит,  что конец текста перекрывает вершину адресуемой памяти,  то выда-
ется  сообщение  .  Это показывает,  что далее текст вводить
нельзя и что текстовый файл или последняя его часть должна быть сохранена
на кассете для дальнейшего восстановления.


     Команда " I N,М "
     =================

     Использование этой  команды  переводит  ввод в автоматический режим:
вам подсказываются номера строк,  начиная с N с приращением м  на  каждом
шагу.  После высвечивающегося номера вы вводите нужный текст,  по желанию
используя нужные клавиши,  и завершаете строку текста вводом . Для
выхода из этого режима используется .

     Если вы вводите строку с уже существующим номером,  то строка текста
с этим номером удаляется и заменяется на вновь  введенную  после  нажатия
.

     Если автоматическое увеличение номера строки дает значение,  большее
32767, то происходит автоматический выход из режима ввода.

     Если при вводе текста вы добрались до конца строки на экране, но еще
не  ввели  64  символа (размер буфера),  то экран сдвинется вверх на одну
строку и вы можете продолжать ввод со следующей строки - номер строки ав-
томатически будет соответствовать введенному тексту.


     3.2.2 Распечатка текста
     =======================

     Текст может  быть  проверен  с  помощью  команды "L";  номер строки,
постоянно отображаемый при выполнении данной команды, устанавливается за-
ранее, но он может быть изменен с помощью команды "К".


     Команда  " L N,М "
     ==================

     Эта команда  выводит листинг со строки N до строки М включительно на
терминал. По умолчанию N присваивается значение 1, М - 32767, т.е. Значе-
ниями по умолчанию не являются ранее введенные аргументы.

     Для листинга  целого  файла просто используйте команду "L" без аргу-
ментов.  Строки на экране форматируются по левой границе экрана,  так что
номер строки отображается ясно.  Строка протабулирована автоматически,  в
результате чего получаем четкое разделение полей в строке.  Номер отобра-
жаемой на экране строки может быть проконтролирован с помощью команды "K"
- после листинга определенного количества строк листинг будет приостанов-
лен (даже если это еще не строка м).  Для возврата в точку входа в редак-
тор нажмите клавишу  или любую другую клавишу для продолжения.


     Команда " K N "
     ===============

     "K" устанавливает количество экранных линий,  которые должны отобра-
жаться на терминале перед паузой, как это было описано выше (см. команду
"L").  Значение N (не более 256) хранится в памяти. Например, если вы хо-
тите  при последующем использовании "L" выдавать на экран по 5 строк,  то
введите команду "К5".


     3.2.3 Редактирование текста
     ===========================

     Однажды созданный текст неизбежно будет нуждаться  в  редактировании
некоторых строк.  В GENS4 имеются команды,  позволяющие исправлять,  сти-
рать, перемещать и перенумеровывать строки.


     Команда " D [N,М] "
     ===================

     Все линии от N до М включительно удаляются из текстового файла. Если
М.


     Команда " М N,М "
     =================

     Эта команда помещает текст строки с номером N в строку М,  уничтожая
текст,  уже существующий там.  Т.е.  эта команда позволяет вам перемещать
строку текста внутри текстового файла. Если строки с номером N не сущест-
вует, то команда игнорируется.


     Команда " N [N,М] "
     ===================

     Команда "N"  перенумеровывает  М строк текстового файла,  начиная со
строки N. N и М должны быть реальными и если номер линии превышает 32767,
то остается первоначальная нумерация.


     Команда "F N,М,F,S "
     ====================

     Текст со  строки  N  до  строки м исследуется на появление строки F.
Если такая строка найдена,  то она отображается на терминале и включается
режим "EDIT" (см. ниже).

     Вы можете  использовать  команды  внутри  режима EDIT для нахождения
последующих появлений строки F в пределах определенной области строк  или
для  замещения  строкой  S текущего появления строки F и затем продолжить
поиск строки F. Отметим, что диапазоны строк F и S могут быть установлены
ранее другой командой,  так что возможно вводить только F для инициализа-
ции поиска (см. пример в разделе 3.3).


     Команда " Е N "
     ===============

     Редактирует строку с номером N.  Если строки N не существует, то ко-
манда игнорируется;  в противном случае строка копируется в буфер и отоб-
ражается на терминале вместе с номером строки. Номер строки вновь отобра-
жается под строкой и включается режим редактирования. Все последующее ре-
дактирование происходит внутри буфера, а не внутри самого текста, так что
первоначальная строка может быть получена в любой момент.

     В этом  режиме  курсор  отображается движущимся по строке (начиная с
первого символа) поддерживая различные подкоманды, позволяющие редактиро-
вать строку. В вашем распоряжении имеются следующие подкоманды:

  - перемещает курсор на одну позицию к следующему символу в стро-
           ке. Вы не можете шагнуть на конец строки.

 - возвращает курсор  на предыдущий символ в строке.  Невозможно
           шагнуть левее первого символа строки.

< --> >  - перемешает курсор на следующую позицию табуляции в каждой  эк-
           ранной строке.

 -  конец редактирования  данной  строки.  Сохраняет все сделанные
           изменения.

      - выход из режима редактирования данной строки,  т.е.  Покидание
           редактируемой  строки  с игнорированием всех сделанных измене-
           ний.  Строка остается такой же как она и была до  редактирова-
           ния.

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

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

<К>      - уничтожает символ в указываемой курсором позиции.

< Z >      - уничтожает все символы,  начиная с указанного  курсором  и  до
           конца строки.

< F >      - ищет следующее  появление  строки "F",ранее определенной в ко-
           мандной строке (см.  команду "F" выше).  Эта подкоманда  будет
           автоматически  выводить систему из режима редактирования теку-
           щей строки (сохраняя все изменения) даже  если  цепь  символов
           "F" в текущей строке не встретилась. Если цепочка "F" встрети-
           лась в последующих строках текста внутри первоначально опреде-
           ленного  диапазона,  то будет включен режим редактирования для
           строки, в которой найдена заданная последовательность символов
           "F".  Отметим, что курсор всегда устанавливается в начало най-
           денной строки.

< S >      - замещает ранее определенной строкой "S" текущее появление цепи
           символов "F" и затем выполняет подкоманду "F",  т.е.  Осущест-
           вляет поиск следующей строки "F". Так, вместе с вышеупомянутой
           командой  "F" она используется для пошаговой замены строк сим-
           волов "F" строками "S". см. Раздел 3.3 для примера.

      - вводит символ в указанную курсором позицию.  Вы  будете  оста-
           ваться в этом режиме до тех пор,  пока не нажмете .  По
           этой клавише вы возвращаетесь в основной режим  редактирования
           с   указывающим   на  последний  введенный  символ.  Используя
            внутри этого режима,  вы уничтожите символ  в  буфере
           слева  от  курсора,  тогда как,  используя < --> > переместите
           курсор в следующую позицию табуляции,  включая пробелы  внутри
           буфера.

<Х>      -
           перемещает курсор  в  конец строки и включает описанный подре-
           жим.

<с>      - изменяет подрежим. Это позволяет перезаписать символ в текущей
           позиции, затем передвигать курсор через одну позицию. Вы оста-
           нетесь в измененном подрежиме до тех пор, пока не нажмете кла-
           вишу ,  нажатие которой возвратит вас в основной  режим
           редактирования с курсором, указывающим на последний измененный
           символ.   просто сдвигает через  одну  позицию  курсор
           влево, а < --> > не имеет эффекта.


     3.2.4 Команды дисковода и магнитной ленты
     =========================================

     Текст может быть сохранен на магнитной ленте/дисководе или  загружен
с них с помощью команд Р,Q и Т. Объектный код может быть сохранен на маг-
нитной ленте с использованием команды О. Имена файлов не должны содержать
более 10 символов.


     Команда  " Р N,М,S "
     ====================

     Строки с  номерами  от  N  до М сохраняются на ленте/диске в файле с
именем,  заданным строкой S. Текст будет записан на диск, если перед име-
нем файла через двоеточие стоит номер дисковода.  Помните,  что эти аргу-
менты могут быть установлены предыдущей командой.

     Примеры:

     Р 10,200,EXAMPLE - записать линии  10...200  на  магнитофон в файл с
                        именем "EXAMPLE".
     Р 500,900,1:TEST - записать линии 500...900 на дисковод 1.

     Перед введением этой команды убедитесь, что ваш магнитофон включен в
режим записи.  Не используйте эту команду, если вы желаете на последующей
стадии ввести текст с ленты.  Вместо этого используйте команду Т. Если вы
намерены вводить текст с дисковода, то используйте команду Р.

     Если вы  заносите  на диск файл с уже имеющимся на диске именем,  то
вас спросят:

     FILE EXIST DELETE (Y/N)?  (существующий файл удалять?)

     отвечайте "Y" для удаления файла и продолжения  записи  или  нажмите
любую другую клавишу для возврата в редактор без записи файла.


     Команда " G,,S "
     ================

     На ленте  или  дискете производится поиск файла с именем "S".  Когда
файл найден,  он загружается в конец текущего  текста.  Если  строка  "S"
пустая,  то загружается первый файл с кассеты.  Для дисковода обязательно
надо указать имя файла и номер дисковода.

     При работе с кассетой, после того как вы ввели команду "G", появится
сообщение:

     START TAPE

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

     USING FILENAME

     В противном случае высветится сообщение:

     FOUND FILENAME

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

     Заметим, что если в памяти уже находится текстовый  файл,  то  файл,
загружаемый с ленты,  будет добавлен к существующему и строки всего сово-
купного файла будут перенумерованы, начиная с первого с шагом 1.


     Команда " Т N,М,С "
     ===================

     Выводит блок текста между строками N и М  включительно  на  ленту  в
формате,  подходящем  для  дальнейшей  работы  под  управлением директивы
ассемблера *F - см.  Раздел 2.9.  Обрабатывается файл с именем "S". Вывод
начинается  сразу  после нажатия клавиши ,  так что вы должны убе-
диться, что ваш магнитофон готов к записи перед вводом этой командной ли-
нии. Если вы намерены осуществлять ввод с дисковода, то используйте лучше
команду "P",  а не "T".  Отметим,  что эта команда должна  использоваться
только в том случае, если вы хотите позднее ассемблировать текст с ленты.
Это неприменимо для диска - только в версиях DEVPAC 4.

     Команда  " О,S "
     ================

     Выводит ваш  объектный код на кассету или дисковод.  Имя файла может
иметь длину более 8 символов и должно начинаться с номера привода (1...8)
и двоеточия, если вы хотите сохранить объектный код на дискете.

     Только последний  блок кода,  произведенный ассемблером,  может быть
сохранен этим способом,  т.е.  если у вас более одной директивы  "ORG"  в
исходной программе, то сохранится только код, произведенный после послед-
ней директивы "ORG".

     Код должен быть получен в памяти перед тем, как он может быть сохра-
нен с   помощью   команды   "O".   Часто   удобнее  использовать  команду
"А,,FILENAME" для автоматического получения файла.  Эта команда  работает
быстрее "O" - см. ниже.


     3.2.5 Ассемблирование и запуск из редактора
     ===========================================

     Команда  " А О,S,F "
     ====================

     Эта команда ассемблирует текст с первой строки текстового файла. Ко-
манда  "O"  позволяет вам задать ключи,  которые должны использоваться во
время этой трансляции.  Обычно достаточно использовать значения ключей по
умолчанию, просто употребляя запятые.

S -  дает  возможность изменить размер таблицы символов для этой трансля-
    ции. Размер таблицы по умолчанию обычно бывает достаточным, за исклю-
    чением режима ввода (INCLUDING).

F - имя файла, имеющегося на дискете. Имя файла должно начинаться с ,
    где D - номер дисковода, на котором размещен файл. Имя файла не долж-
    но содержать более 10 символов.  Присутствие имени файла здесь побуж-
    дает ассемблер производить трансляцию иным способом.

     Вместо простого ассемблирования объектного кода в память и остановки
по  достижении вершины памяти,  ассемблер не будет транслировать в память
до тех пор, пока не достигнет ее вершины (верхнюю границу памяти вы може-
те установить командой "U") и затем полученный объектный код будет сохра-
нен на диске в указанном вами файле.  Затем ассемблирование  будет  вновь
продолжено  с  нижних адресов памяти и этот процесс будет продолжаться до
тех пор,  пока вся программа не будет проассемблирована  и  сохранена  на
дискете.

     Не существует  ограничений  на  размер программы,  которую вы хотите
проассемблировать (кроме  размера  существующего  пространства  на  вашей
дискете (кассете)).

     Пара важных замечаний относительно использования директивы "ORG" для
данных средств:

1 - директива "ORG" будет помещать объектный код по адресам,  указанным в
     данной  директиве первоначально и каждый раз после помещения объект-
     ного кода в объектный файл (если не был указан ключ  16,  чтобы  по-
     местить объектный код сразу после таблицы символов).  Следовательно,
     ключ 16 более разумно использовать будет в том случае, когда ассемб-
     лирование  происходит прямо на дискету,  т.к.  это дает максимальный
     размер для вашего буфера объектного кода; рабочие адреса вашего кода
     не будут поражены.

2 -  вы должны избегать использования более одной директивы "ORG" в вашей
     программе, если только вы не введете нули в память между двумя этими
     директивами с помощью "DЕF".

     Например:

     ORG 50000
     ; некоторые коды
     RET
     ORG 60000
     ; еще коды

     Этот фрагмент не будет сохранен на ленте правильно,  т.к. вторая ди-
ректива "ORG" переопределяет начало буфера объектного кода. Но:

     ORG 50000
     ; некоторые коды
     RET
     ; добиваем нулями до 60000
     DEFS 60000-$
     ; еще коды

     Фрагмент будет сохранен правильно,  т.к. DEF- произведет достаточное
количество нулей, чтобы последующий код начинался с адреса 60000.

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

     Примеры использования команды "A":

     а20,,1:TEST 

ассемблирует с листингом, помещает объектный код сразу после таблицы сим-
волов (это увеличивает размер буфера объектного кода в памяти), использу-
ет размер таблицы символов по умолчанию  и  сохраняет  объектный  код  на
дисководе 1 под именем "TEST".

     А,3000 

ассемблирует программу,  используя ключи по умолчанию, с размером таблицы
символов 3000 байт. см. Раздел 2 для дальнейшей детализации того, что мо-
жет случиться при ассемблировании.


     Команда "R"
     ===========

     Если исходная  программа была проассемблирована без ошибок и рабочие
адреса были определены с помощью директивы "ENT", то может быть использо-
вана  команда  R для выполнения объектной программы.  Объектная программа
может использовать инструкцию RET (С9) для возврата  в  редактор  сколько
угодно  раз если стек в конце выполнения программы будет таким же,  каким
он был в ее начале.

     Заметим, что директива "ENT" не будет действовать,  если для ассемб-
лирования использовался ключ 16.

     Прерывания перед  вводом кода разрешены и регистр IY загружен значе-
ниями 5С3А, важным для подпрограммы обслуживания прерываний SPECTRUM ROM.


     3.2.6 Другие команды
     ====================

     Команда "В"
     ===========

     Просто возвращает  управление операционной системе.  Для перезапуска
ассемблера используйте

     RANDOMIZE USR XXXXX ,

где: XXXXX - адрес, с которого был загружен GENS4.

     Команда "C"
     ===========

     Позволяет вам  изменить размер входного буфера и буфера макроопреде-
лений (только для версий DEVPAC на магнитной ленте).

     Входной буфер - это буфер,  в котором содержится текст,  когда  про-
исходит  трансляция  непосредственно  с  кассеты или дискеты - чем больше
этот буфер,  тем больший текст может быть считан с кассеты или дискеты и,
следовательно,  тем  быстрее будет происходить трансляция.  Но,  с другой
стороны,  используется большая память.  Однако возможен компромисс  между
скоростью трансляции и используемой памятью, команда "C" позволит вам уп-
равлять этим процессом,  предоставляя вам возможность  установки  размера
входного буфера.

     Буфер макроопределений используется для хранения текста макроопреде-
лений, которые вы могли использовать.

    Команда "C" печатает подсказку на ввод размера входного буфера, а за-
тем  -  на ввод размера буфера макроопределений.  В обоих случаях вводить
надо просто число десятичное байтов,  которое вы желаете зарезервировать,
и .  Если вы нажали  без ввода числа, то операция игнориру-
ется.  Определяемый вами размер входного буфера не должен быть менее  256
байт. Вы можете прервать команду с помощью  1.

     Отметим, что  для дисковых версий DEVPAC 4,  вы можете менять только
размер буфера макроопределений.

     Команда "C" не уничтожает ваш текст, она просто сдвигает его вверх и
вниз в памяти в зависимости от размера буфера.  Лучше зарезервировать бу-
феры такого размера, который будет нужен в начале сеанса.


     Команда  " S,,D "
     =================

     Эта команда позволяет вам изменить символ-разделитель  аргументов  в
командной строке. На входе редактора таким разделителем является запятая,
это может быть изменено с помощью команды "S" на первый символ определяю-
щей строки "D".

     Помните, что  однажды  определив  новый  разделитель,  вы должны его
использовать до тех пор,  пока не определите новый - даже внутри  команды
"S". Заметьте, что разделителем не может быть пробел.


     Команда  " U N "
     ================

     Позволяет установить верхнюю границу памяти равной N. Если N не ука-
зать (т.е.  ввести только U и ),  то отображается текущая  верхняя
граница памяти.

     GENS4 не позволяет вашему текстовому файлу или объектному коду расп-
ространяться выше верхней границы памяти и будет  выдавать  сообщение  об
ошибке при приближении к этой границе.

     По умолчанию верхняя граница памяти принимается равной вершине стека
памяти системы SPECTRUM.


     Команда  " V "
     ==============

     Выдает на дисплей полезную информацию:  значение параметров  команды
N1 и N2 по умолчанию; символ-разделитель команды по умолчанию; десятичное
значение начала и конца текста и значение первой командной строки S1.


     Команда  " W N,М "
     ==================

     Выводит строки текста с N по М включительно на принтер.  Если ни  N,
ни М не указаны, то будет напечатан весь файл. Печать будет приостановле-
на после вывода некоторого числа линий, определенного командой "K" - наж-
мите любую клавишу для продолжения печати.


     Команда  " Х N "
     ================

     Выдает каталог диска. В версии с 51-м символом перед выдачей катало-
га происходит очистка экрана.  Каталог всегда распечатывается в строку из
32-х позиций.


     Команда  " Z "
     ==============

     Эффективно уничтожает весь ваш текст,  но перед этим она спрашивает,
уверены ли вы  в  необходимости  этого.  Отвечайте  "Y"  для  уничтожения
текста.

     Кроме быстрого  уничтожения  командой D1,32767 команда "Z" позволяет
вам очистить ваш текстовый файл, если он каким-либо образом был испорчен.

     Команда "Z" устраняет необходимость для стартовой точки входа GENS4.


     Команда  " Н "
     ==============

     Выдает подсказку на экран:  список возможных команд в  2  столбца  с
заглавной  буквой,  обозначающий  команду и отображающий текущее значение
определенных важных параметров.


     3.3 Пример использования редактора.
     ===================================

     Предположим, что вы ввели следующую программу (используя I10,10):

     10  *Н    16 BIT  RANDOM  NUMBERS
     20
     30  ;INPUT: HL CONTAINS PREVIOUS RANDOM NUMBER
     40  ;OUTPUT: HL CONTAINS NEW RANDON OR SEED NUMBER
     60  RANDOM PUSH AF ; SAVE REGISTERS
     70  PUSH BC
     80         PUSH HL
     90         ADD  HL,HL ; *2
     100        ADD  HL,HL ; *4
                ................
                ................
                ................
     140        ADD  HL,HL ; *64
     150        PIP  BC    ; OLD RANDOM NUMBER
     160        ADD  HL,DE
     170        LD   DE,L1
     180        ADD  HL,DE
     190        POP  BC    ; RESTORE REGISTERS
     200        POP  AF
     210        REY

     эта программа содержит несколько ошибок:

строка 40:  вместо "RANDOM" набрано "RANDON";
строка 70:  PUSH BC начинается с поля метки;
строка 150: PIP вместо POP;
строка 160: требуется комментарий (это не ошибка, а недостаток);
строка 210: вместо REY должно быть RET.

     Также должны быть добавлены две команды ADD HL,HL между строками 140
и 150.  Кроме того,  BCE ссылки на пару регистров DE в строках  160...180
должны  быть ссылками на BC.  Для внесения этих исправлений мы должны вы-
полнить следующее:

F40,40,RANDON,RADOM 
     затем подкоманду "S"

е70  затем I (режим вставки),один пробел и
    

I142,2 142 ADD HL,HL ; *128
              144 ADD HL,HL ; *256
              
F150,150,PIP,POP 
     затем подкоманду "S"

е160  затем Х,2 пробела;*257 +L1 

е160,180,DE,BC 
     затем повторное использование подкоманды "S"

е210   затем 2 пробела,С,Т 

N10,10 , чтобы перенумеровать TEKCT.

     Рекомендуем вам   хорошенько   проработать  вышеприведенный  пример,
используя редактор.


     п р и л о ж е н и е  1.
     =======================

     Коды ошибок и их значение.
     ==========================

*ERROR*1  - ошибка в константе этой строки;
*ERROR*2  - мнемоника не распознана;
*ERROR*3  - утверждение плохо сформировано;
*ERROR*4  - символ определен более 1 раза;
*ERROR*5 -  строка  содержит  неверный символ (т.е.  ничего не значащий в
            данном случае);
*ERROR*6  - один из операндов в строке - незаконный;
*ERROR*7  - символ в строке является резервной инструкцией;
*ERROR*8  - ошибочная пара регистров;
*ERROR*9  - слишком много регистров в строке;
*ERROR*10 - выражение,  которое должно занимать не более 8 бит,  занимает
            больше;
*ERROR*11 - неверные инструкции JP(IX+N) и JP(IY+N);
*ERROR*12 - ошибка в директиве ассемблера;
*ERROR*13 - незаконная ссылка вперед, т.е. EQU ссылается на символ, кото-
            рый еще не был определен;
*ERROR*14 - деление на ноль;
*ERROR*15 - переполнение в операции умножения;
*ERROR*16 - вложенное макроопределение;
*ERROR*17 - этот идентификатор - не макро;
*ERROR*18 - вложенный макровызов;
*ERROR*19 - вложенный условный оператор;

BAD ORG!  - директива ORG работает с  адресом,  который  может  испортить
            GENS4,  текстовый файл или таблицу символов. Управление возв-
            ращается в редактор.

OUT OF TABLE SPACE - появляется во время первого прохода, если на таблицу
            символов выделено  недостаточно памяти.  Управление возвраща-
            ется редактору.

BAD MEMORY!  - нет места для ввода текста,т.е. Конец текста близок к вер-
            шине ОЗУ памяти.  Вы должны спасти текущий текстовый файл или
            его часть.



     П р и л о ж е н и е  2.
     =======================

     Резервирование слов, мнемоника и т.д.
     =====================================

     Список резервных инструкций  внутри  GENS4.  Эти  символы  не  могут
использоваться как метки, хотя они могут быть частью меток. Все резервные
инструкции состоят из заглавных букв:

А    В    С    D    Е    Н    L    I    R    S

AF        AF'       BC        DE        HL   IX

IY        SP        NC        Z         NZ   М

Р         PE        PO

     Ниже приводится список мнемоники Z80,  директив ассемблера и его ко-
манд. Они также должны состоять из заглавных букв.

ADC     ADD     AND     BIT     CALL

CCF     CP      CPD     CPDR    SPI

CPIR    CPL     DAA     DEC     DI

DJNZ    EI      EX      EXX     HALT

IM      IN      INC     IND     INDR

INI     INIR    JP      JR      LD

LDD     LDDR    LDI     LDIR    NEG

NOP     OR      OUTDR   OTIR    OUT

OUTD    OUTI    POP     PUSH    RES

RET     RETI    RETN    PL      RRA

RLC     RLCA    RLD     RR      RLA

RRC     RRCA    RRD     RST     SBC

SCF     SET     SLA     SRA     SRL

DEFB    DEFM    DEFS    DEFW    ELSE

END     ENT     EQU     IF      ORG

MAC     ENDM

*D      *Е      *Н      *L      *S

*С      *F      *М



     П р и л о ж е н и е  3.
     =======================

     Р а б о ч и й  п р и м е р.
     ===========================

     Ниже приводится  пример  типичного  сеанса  работы  с использованием
GENS4.  Если вы новичок по части использования ассемблерных программ  или
вы  немного не уверены в том,  как использовать ассемблер/редактор GENS4,
то мы настоятельно советуем вам тщательно проработать этот пример. Лишний
раз заметим,  что  означает,  что вы должны нажать клавишу "ENTER"
на клавиатуре.

     Цель примера:

     Написать и проверить программу целочисленного умножения, текст кото-
рой должен быть сохранен на магнитной ленте,  используя команду редактора
"T" так, чтобы легко было включать ее в состав будущих программ с магнит-
ной ленты.

     Последовательность работы:

1 - напишите программу умножения как подпрограмму и запишите ее на ленту,
     используя команду редактора "P", чтобы ее можно было легко восстано-
     вить во время сеанса при наличии ошибок.

2 - отладьте подпрограмму умножения, редактируя ее, если это необходимо.

3 -  запишите  отлаженную программу на ленту,  используя команду "T" так,
     чтобы эта подпрограмма могла быть помещена с ленты в другие програм-
     мы.

     Перед стартом мы должны загрузить GENS4 в компьютер - делайте так:

     LOAD " " CODE 26000 

чтобы загрузить ассемблер с адреса 26000. Затем введите:

     RANDOMIZE USR 26000 

сейчас вы  находитесь в режиме редактирования,  т.е.  компьютер готов для
создания программ на ассемблере.

     1-я стадия: запись программы целочисленного умножения.

     Мы используем команду редактора I,  чтобы ввести текст,  используя <
--> > (символ табуляции) для получения табулированного листинга.

     Ниже мы не указываем, где используется табуляция. Но вы можете пред-
положить,  что табуляция используется между мнемоникой  команды  и  между
мнемоникой и операндом.  Заметим,  что адреса,  показанные в ассемблерном
листинге примера,  который следует, могут не соответствовать полученным в
вашем компьютере, они служат только для иллюстрации:

     >I10,10 
     10 ;а FAST INTEGER MULTIPLY 
     20 ;ROUTINE>MULTIPLIES HL 
     30 ;BY DE.RETURN THE RESULT 
     40 ;IN HL.С FLAG SET ON AN 
     50 ;OVERFLOW. 
     60 ;
     70        ORG #7F00 
     80  
     90  MULT  OR а 
     100       SBC HL,DE;HL>DE? 
     110       ADD HL,DE 
     120       JR  NC,MU1;YES 
     130       EX  DE,HL 
     140 MU1   OR  D 
     150       SCF;OVERFLOW IT 
     160       RET NZ;DE>255 
     170       OR  е;TIMES 0? 
     180       LD  е,D 
     190       JR  NZ,MV4;NO 
     200       EX  DE,HL;0 
     210       RET 
     220 
     230 ;MAIN ROUTINE 
     240 
     250 MU2   EX  DE,HL 
     260       ADD HL,DE 
     270       EX  DE,HL 
     280 MDDO



СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Рассказ - Ну, юзер, погоди!
Мир звуков Спектрума - глава 7: Обзор программного обеспечения ZX-Spectrum для создания звуков и музыки.
Reviews - История развития игровой индустрии на постсоветском пространстве: 1999-2004 года.
Tutorials - под прессом прессы: "Когда тебя учат писать, рассказывая о литературных тонкостях и приемах, это отлично, это здорово! Когда у тебя кроме этих познаний нет ничего, нет базовых понятий, это куда хуже"
Реклама - реклама и объявления.

В этот день...   27 апреля