IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Документация на полезные программы для БК
SuperMax
сообщение 15.10.2022, 11:05
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 6 282
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Очень продвинутый аналог Mirage - PARADISE


Код
                                                                                                       ────────────────────────────────────
▓▓▓▓▓▓▓▓▓▓▓▓ Game, Applied & System Programs Inc. ▓▓▓▓▓▓▓▓▓▓▓
▓            ────────────────────────────────────           ▓
▓  ▓▓▓▓      ▓▓  ▓▓▓▓       ▓▓  ▓▓▓    ▓▓▓▓▓   ▓▓▓   ▓▓▓▓▓  ▓
▓  ▓   ▓    ▓ ▓  ▓   ▓     ▓ ▓  ▓  ▓     ▓    ▓   ▓  ▓      ▓
▓  ▓   ▓   ▓  ▓  ▓   ▓    ▓  ▓  ▓   ▓    ▓    ▓      ▓      ▓
▓  ▓   ▓  ▓   ▓  ▓▓▓▓    ▓   ▓  ▓   ▓    ▓     ▓▓▓   ▓▓▓▓   ▓
▓  ▓▓▓▓   ▓   ▓  ▓ ▓     ▓   ▓  ▓   ▓    ▓        ▓  ▓      ▓
▓  ▓      ▓▓▓▓▓  ▓  ▓    ▓▓▓▓▓  ▓   ▓    ▓    ▓   ▓  ▓      ▓
▓  ▓      ▓   ▓  ▓   ▓   ▓   ▓  ▓▓▓▓▓  ▓▓▓▓▓   ▓▓▓   ▓▓▓▓▓  ▓
▓                                                           ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓                                                           ▓
▓                      P A R A D I S E                      ▓
▓                      ───────────────                      ▓
▓                       Version  1.1d                       ▓
▓                                                           ▓
▓                        20-SEP-1992                        ▓
▓                       St.Petersburg                       ▓
▓                                                           ▓
▓                Author: Serge V. Klimenkov                 ▓
▓                                                           ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓

┌─┐
│P│arallel
│A│ssembler-
│R│eassembler,
│A│dvanced
│D│ebugger,
│I│mproved
│S│oftware
│E│ditor.
└─┘

РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
──────────────────────────


ВВЕДЕНИЕ


   За многие годы, прошедшие с тех пор, когда на прилавках по-
явились первые БК0010, создано несколько тысяч различных про-
грамм. А написать хорошую программу - непростое дело. Особен-
но много сложностей возникает при отладке. Программисты хоро-
шо знают, что отладить программу и заставить ее работать так,
как нужно, значительно труднее, чем написать. В какой-то мере
решить эту проблему поможет новая разработка компании "GASP".
Как видно из названия, это и ассемблер, и дизассемблер, и от-
ладчик, и множество очень полезных функций, об отсутствии ко-
торых Вы не раз жалели, работая над своими программами. Автор
очень надеется, что 'PARADISE' (англ. - 'РАЙ') оправдает свое
название.


ИСТОРИЯ СОЗДАНИЯ


   В 1988 году С. Зильберштейн написал программу MIRAGE, кото-
рая по многим параметрам значительно превосходила  предыдущие
отладчики,  но имела некоторые ошибки и недоработки, которые,
однако, не помешали программе стать одной из наиболее распро-
страненных среди программистов.  После нескольких попыток до-
работки, в процессе которых в MIRAGE были внесены исправления
и новые функции,  автор решил написать  собственный отладчик.
Так появилась программа PARADISE 1.0, которая не была предна-
значена для распространения, и представляла собой пробный ва-
риант.  После этого, учитывая многочисленные замечания, кото-
рые часто противоречили друг другу,  автор начал работать над
новой версией программы.  PARADISE 1.1 представляет собой но-
вую  систему программирования и отладки,  по сравнению с про-
граммой MIRAGE более мощную и удобную в работе.

   Автор благодарит:

     С.Зильберштейна - за MIRAGE26,
     В.Коренкова - за MICRO.WS,

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


ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ


   Программа 'PARADISE':

   - занимает в памяти ВСЕГО 5 Кбайт;
   - АБСОЛЮТНО перемещаема;
   - НЕ ИЗМЕНЯЕТ содержимое стека;
   - допускает ПОЛНОЕ экранное редактирование;
   - работает с ДВОИЧНОЙ, ВОСЬМЕРИЧНОЙ, ДЕСЯТИЧНОЙ  и ШЕСТНАД-
     ЦАТИРИЧНОЙ системами счисления,  со СЛОВАМИ и БАЙТАМИ,  а
     также с КОДАМИ ASCII и RADIX50;
   - выводит на экран и на принтер ТЕКСТ ПРОГРАММ в ассемблер-
     ной мнемонике и ДАМП ПАМЯТИ;
   - позволяет СОЗДАВАТЬ и РЕДАКТИРОВАТЬ программы;
   - работает непосредственно  с ЯЧЕЙКАМИ ПАМЯТИ  и РЕГИСТРАМИ
     ПРОЦЕССОРА;
   - поддерживает команды РАСШИРЕННОЙ АРИФМЕТИКИ;
   - в процессе отладки  позволяет выполнять программу в ОБЫЧ-
     НОМ и ПОКОМАНДНОМ режимах с возможностью контролировать и
     изменять содержимое памяти и регистров общего назначения;
   - имеет КАЛЬКУЛЯТОР, выполняющий четыре арифметических дей-
     ствия;
   - дает возможность включать в систему НОВЫЕ КОМАНДЫ.


ЗАГРУЗКА И ЗАПУСК СИСТЕМЫ


   'PARADISE' загружается в любое место ОЗУ монитором БК с по-
мощью иоманды:
     M адрес <ВВОД>
   Если адрес не указан, то загрузка осуществляется по адресу,
указанному в заголовке файла (26000).
   Запуск производится командой:
     S <ВВОД>
   При запуске системы, загруженной в экранную область, систе-
ма при возможности переходит в режим расширенной памяти; если
это не удается, то на экране появится сообщение:
     ВВОД ДОГРУЗКИ
     ЖДУ ИМЯ?
   Вы должны ввести имя догрузки, позволяющей системе работать
в экранной области. (В стандартном пакете - WINDOW.PAR).
   После запуска в командной строке появляется:
     PARADISE 1.1d (C) GASP Inc.
   В левом верхнем углу экрана выводится адрес вершины стека и
его содержимое. То же самое происходит при нажатии на клавишу
'СТОП', а также при возникновении прерывания по вектору 4.
   Содержимое вершины стека  позволяет в некоторых случаях оп-
ределить место возникновения прерывания.
   Строкой ниже выводится приглашение, которое показывает, что
система готова к приему команд. Приглашение имеет вид:
     N> ,где N - одна из букв: A,B,D,H,P,R,T,W,  которая обоз-
начает установленную в данный момент  систему счисления.  При
первом запуске системы установлен формат слова в восьмеричной
системе счисления (W).


ОПИСАНИЕ ЭКРАННОГО РЕДАКТОРА


    Система PARADISE, как уже отмечалось,  допускает полное эк-
ранное редактирование.  Вы можете перемещать курсор  по всему
экрану;  при этом работают  все клавиши управления  курсором.
При удерживании клавиши в нажатом положении срабатывает авто-
повтор.
   При нажатии на клавишу  'ВВОД' система считывает с экрана в
буфер строку, в которой была нажата клавиша 'ВВОД', проверяет
ее на наличие приглашения во второй позиции, и начинает обра-
ботку команды.  Таким образом, для повторения команд, которые
еще находятся на экране, достаточно перевести курсор в строку
с командой (неважно,  в какой позиции строки будет находиться
курсор) и нажать 'ВВОД'.
   При вводе команд значимыми являются два первых символа. Ос-
тальные символы до пробела или другого разделителя могут быть
любыми или отсутствовать.
   При отсутствии имени команды в списке выводится сообщение:
     ОШИБКА КМ
   Не рекомендуется делать инверсию экрана и символов, перехо-
дить в режим  32 символа в строке - в этих случаях система не
сможет определить символ на экране.

   УПРАВЛЯЮЩИЕ КЛАВИШИ:

СБР - очистка экрана;
ШАГ - переход в режим 'SS' (Special Symbols), в котором можно
       вводить символы с кодами 000-037 и 200-237  (см. описа-
       ние команды DUMP);
АР2/СБР (или, что более удобно ШАГ/СБР) - переход в режим РП.
       Все, что находилось на экране, можно посмотреть, нажав:
СУ/Ф - включение режима "записной книжки". В нижней части по-
       является отображение области памяти 40000-67777,  т.е.,
       все,  что находилось на экране  до перехода в режим РП.
       Этот режим можно использовать для сохранения нужной ин-
       формации (вдруг срочно понадобилось что-то записать, и,
       как назло, под рукой нет ручки или бумаги), а также для
       визуального контроля за чтением файла с магнитофона при
       загрузке в экранную область.
СУ/А -  включение/выключение режима PR - параллельного вывода
       информации на экран и принтер.
КТ -  После нажатия  этой клавиши при нажатии на клавишу СТОП
       инициализации экрана  не происходит.  Режим сохраняется
       до нажатия любой другой клавиши.

ОПИСАНИЕ КОМАНД СИСТЕМЫ

   1. Команды установки параметров системы.

   В системе используются следующие системы счисления:

   A - ASCII - код ASCII (1 слово - 2 символа);
   B - BYTE - байт (1 слово - 2 байта);
   D - DECIMAL - десятичная (1 слово - 5-разрядов);
   H - HEXADECIMAL - шестнадцатиричная (1 слово - 4 разряда);
   P - PRIMARY - основная (двоичная) (1 слово - 16 бит);
   R - RADIX - код RADIX50 (1 слово - 3 символа);
   T - TEXT - непрерывный текст;
   W - WORD - слово (восьмеричная)

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

   При выводе кодов в формате  RADIX вместо символа может сто-
ять инверсная буква B (Big). Это значит, что при раскодирова-
нии получился символ, отсутствующий в коде RADIX50.
   При выводе кодов в формате A и T символы с кодами  0-37 вы-
водятся  в виде соответствующих инверсных латинских заглавных
букв, а символы  с кодами 200-237 -  в виде инверсных русских
строчных букв. Символы  с кодами 200-377 выводятся с точкой в
верхнем правом углу для обеспечения различия между латинскими
и русскими буквами с одинаковым написанием.

IV  - Initialize interrupt Vectors - инициализировать вектора
прерываний: 10,14,20,24,34,100. Они устанавливаются на начало
программы.

BE[=address] - BEgin - установить адрес начала рабочей облас-
ти (при запуске 1000).

EN[=address]  - ENd  - установить адрес конца рабочей области
(при запуске на 1 меньше адреса загрузки).

Команды BE и EN  без параметров выводят на экран значение ад-
реса начала/конца рабочей области.

MD[=code] - MoDe - установить режим трассировки и вывода дам-
па.
   Формат слова code в восьмеричной системе:

       0 0 X X X X

           │ │ │ │1 - в режиме TR после исполнения команды вы-
           │ │ │ │    водится дамп регистров;
           │ │ │ │0 - не выводится дамп регистров;
           │ │ │ └────────────────────────────────
           │ │ │0 - дамп регистров в восьмеричной системе;
           │ │ │1 - в установленной системе счисления;
           │ │ └──────────────────────────────────────
           │ │0 - в режиме TR следующую команду выводить с но-
           │ │    вой строки;
           │ │1 - с начала экрана;
           │ └────────────────────
           │1 - трассировка подпрограмм в покомандном режиме;
           │0 - как одной команды;
           └──────────────────────

    Команда MD без параметров выдает значение текущего режима.
Для задания режима используются только младшие биты из каждой
тройки битов;  остальные 11 бит могут использоваться Вами для
своих целей.

EX - EXit - выход в монитор.


   2. Команды работы с памятью и регистрами процессора.

ME address[,data] - MEmory - чтение/запись данных по заданно-
му адресу.

W>ME 1000,177777 - запись числа 177777 в ячейку 1000.
W>ME 1000 - вывод на экран содержимого ячейки 1000.
177777

{R0,R1,R2,R3,R4,R5,SP,PC,PS}[=data]  - чтение/запись данных в
регистры общего назначения (РОН).

W>R0=1000 - запись 1000 в R0.
W>R0 - вывод на экран содержимого R0.
1000

При работе с регистром PS (PSW - Processor Status Word) необ-
ходимо знать его формат:
┌─────┬────┬─┬─┬─┬─┬─┐
│15..8│7.,5│4│3│2│1│0│
│     │ PR │T│N│Z│V│C│
└─────┴────┴─┴─┴─┴─┴─┘
        │     │ │ │ │ коды условий
        │     └─┴─┴─┴─────────────
        │приоритет процессора
        └────────────────────

В программе работа с  PS  производится в восьмеричной системе
счисления.

W>PS=10 - установить бит N, остальные сбросить.
W>PS=7 - установить биты Z,V,C, бит N сбросить.
W>PS=12 - установить биты N и V, биты C и Z сбросить.
W>PS
000003 - биты V,C установлены, N,Z - сброшены.

CR - Clear Registers - очистить регистры.

При этом:
           R0..R5=0
           SP=770
           PC - не изменяется
           PS=0

DR - Dump of Registers  - дамп регистров. Система счисления -
в соответствии с установленным режимом MD.
   SP и PC всегда выводятся в восьмеричной системе.
   PS выводится на экран в виде NZVC, где буква показывает ус-
тановленный бит, знак минус - сброшенный.

W>DR
R0-R5: 001000 000377 000000 000000 000000 000000
SP-PS: 000770 001000 ----
W>PS=4
W>R5=177777
W>←←H <ВВОД>
H>MD=10
H>DR
R0-R5: 0200 00FF 0000 0000 0000 FFFF
SP-PS: 000770 001000 -Z--

DS [address] - Dump of Stack - дамп стека или памяти.
   На экран выводится  адрес и содержимое шести последователь-
ных ячеек памяти. Если дана команда DS без параметров, то вы-
водится адрес вершины стека и 6 его элементов.

W>DS
000750: 001000 177777 003454 077000 022001 100274

DU [address] - DUmp of memory - дамп памяти.
   На экран выводится таблица,  состоящая из двух полей:  поля
адреса и поля данных.  В поле данных располагается содержимое
ячеек памяти в установленной системе счисления.
   По умолчанию address=BEgin.
   Вы можете  просматривать память  с помощью клавиш  ↑,↓. При
достижении границы экрана будет выведена очередная строка та-
блицы с большим или меньшим адресом. Все находящееся на экра-
не  можно редактировать.  Измененная строка вводится в память
при нажатии в этой строке клавиши 'ВВОД'. Для перехода к дру-
гому адресу переведите курсор в поле адреса,  измените адрес,
и нажмите клавишу 'ВВОД'.  Не рекомендуется редактировать оба
поля одновременно. При этом измененная строка запишется в па-
мять по новому адресу, что может привести к нежелательным по-
следствиям.
   В режимах ввода/вывода кодов ASCII и текста можно использо-
вать режим ввода спецсимволов SS. Включение/выключение режима
производится с помощью клавиши 'ШАГ'. В данном режиме Вы име-
ете возможность ввести символы с кодами  0-37 и 200-237.  Для
ввода символов с кодами 0-37 используются соответствующие ла-
тинские заглавные буквы, а с кодами  200-237 - русские строч-
ные. Введенные спецсимволы отображаются в инверсном режиме.
   Клавиша СБР перемещает курсор в начало поля данных в первой
строке.
   Выход из режима DU по клавише 'КТ'.

MO аddress1,аddress2,аddress3  - MOve  -  побайтная пересылка
области,  ограниченной address1 и address2,  на address3. Об-
ласти могут пересекаться.

PO address1,address2,code[,B]  - POpulate - размножить задан-
данное слово или байт в диапазоне адресов.

W>PO 1000,1776,125252 - заполнить часть памяти 1000-1776 сло-
вом 125252.
W>PO 1000,1777,100,B  - заполнить часть памяти 1000-1777 бай-
том 100.

CO address1,address2,address3 - COmpare - сравнить два масси-
ва одинаковой длины:  один  - с адресa address1  по address2;
другой - с начальным адресом address3. На экран выводятся не-
совпадающие коды и их адреса.

W>MO 1000,1777,2000 - переслать массив 1000-1777 на 2000.
W>ME 2100,177777    - записать 177777 по адресу 2100.
W>CO 1000,1777,2000 - сравнить массивы 1000-1777 и 2000-2777.
001100: 000100   002100: 177777 - несовпадающие слова.

FI address1,address2,code[,R][,mask] - FInd - поиск заданного
кода или смещения полностью или по маске в заданном диапазоне
адресов. R - Relative - указывает на поиск смещения.

W>FI 1000,1776,0 - поиск кода 0 в области 1000-1776.
W>FI 1000,1776,5000,R - поиск в области 1000-1776 смещения на
адрес 5000.
W>FI 1000,1776,104000,777 - поиск в области 1000-1776  кодов,
начинающихся на 104 (EMT, TRAP).
W>FI 1000,1776,4000,R,77 - поиск в области 1000-1776 смещений
на адреса 4000-4077.
На экран выводятся найденные коды и их адреса.

   3. Команды работы с ассемблерной мнемоникой.

AS [address] - ASsemble - переход в режим экранного ассембле-
ра/дизассемблера.
   По умолчанию значение address=BEgin.
   Текст программы нигде не хранится, при вводе команда ассем-
блируется, при выводе - дизассемблируется.
   На экран выводится таблица,  состоящая из трех полей:  поля
адреса, поля команды и поля кодов (при установленной двоичной
системе счисления поле кодов пустое). В поле адреса выводится
адрес команды, в поле команды - мнемоника, в поле кодов - ко-
ды команд в установленной системе счисления.  Так же, как для
команды DU, все, что находится на экране, доступно для редак-
тирования.
   При дизассемблировании коды, не соответствующие ни одной из
команд, выводятся в виде команды WORD.

   Управляющие клавиши:

↑,↓  - перемещение на команду вперед/назад (при выходе курсо-
        ра за пределы экрана, выводится новая команда);
СБР  - перемещение курсора на первую команду экрана;
ВС   - удаление команды (только в рабочей области);
СУ/Т - вставка команды NOP (только в рабочей области);
ВВОД - зафиксировать изменения;
КТ   - выход из режима.

   Мнемоническое обозначение команды состоит из трех букв (для
байтовых команд  -  из четырех),  поэтому написание некоторых
команд изменено.

   Список команд ассемблера:

одноадресные: CLR[B], COM[B], INC[B], DEC[B], NEG[B], TST[B],
ASR[B], ASL[B],  ROR[B], ROL[B],  ADC[B], SBC[B], SWA (SWAB),
SXT, MFP (MFPS), MTP (MTPS);

двухадресные: MOV[B],  CMP[B],  BIT[B], BIC[B], BIS[B],  XOR,
ADD, SUB;

управления программой: BR, BNE, BEQ, BPL, BMI, BVC, BVS, BGE,
BLE, BGT, BLT, BCC=BHS (BHIS), BCS=BLO, BHI, BLS (BLOS), JMP,
JSR, CAL (CALL=JSR PC), RTS, RET=RTS PC, MAR (MARK), SOB;

прерывания: EMT, TRA (TRAP), IOT, BPT, RTI, RTT;

управления машиной: HAL (HALT), WAI (WAIT), RES (RESET);

изменения признаков:  CLN, CLZ, CLV, CLC, CCC, SEN, SEZ, SEV,
SEC, SCC;

расширенной арифметики (ассемблером поддерживаются, а при вы-
полнении возникает прерывание по вектору 10):  MUL, DIV, ASH,
ASC (ASHC), FAD (FADD), FSU (FSUB), FMU (FMUL), FDI (FDIV);

прочие: NOP, WOR (WORD).

─────────────────────────────────────────────────────────────
ЗАМЕЧАНИЕ:  С целью упрощения ассемблера в данной системе не-
сколько некорректно производится обработка команды MARK.  При
вводе команды MARK с аргументом больше 100 (такая команда яв-
ляется некорректной), транслятор обрабатывает ее. В результа-
те получается код несуществующей команды,  которая при дизас-
семблировании выводится на экран в виде команды MARK.
   Но, учитывая то,  что команда MARK очень редко встречается,
с этой особенностью системы Вы, вероятнее всего,  не столкне-
тесь.
─────────────────────────────────────────────────────────────

   При вводе команды WORD с параметром, который является кодом
какой-либо команды, WORD преобразуется в эту команду.
   Например, если ввести WOR 10001, то после нажатия на клави-
шу ВВОД, эта команда преобразуется в MOV R0,R1.

   Редактирование  возможно в любом поле,  но не рекомендуется
вносить изменения одновременно в несколько полей.  При ошибке
в мнемоническом обозначении команды выводится инверсная буква
E, а курсор указывает место возможной ошибки. После исправле-
ния ошибки буква E (Error) пропадает.

   Можно вводить команды типа:  MOV #'S,R0, где S - любой сим-
вол КОИ-8.

IM command - IMmediatly - немедленное исполнение ассемблерной
команды.

W>IM MOV #10,R0
W>R0
000010
W>IM MOV #30,R1
W>R1
000030
W>IM ADD R1,R0
W>R0
000040

   4. Команды отладки.

TR [address]  - TRace - трассировка программы с заданного ад-
реса. По умолчанию значение адреса берется из регистра PC.
   Установленный режим TR индицируется в служебной строке. При
включении трассировки происходит вывод на экран очередной ко-
манды в таком же формате, как и для ассемблера (т.е. поле ад-
реса, поле мнемоники, поле кодов). Строкой ниже система выво-
дит приглашение, поэтому можно выполнять все остальные коман-
ды системы  (производить чтение/запись в память, изменять со-
держимое регистров процессора и т.д.). Команда, выведенная на
экран, выполняется при нажатии на клавишу ВВОД в пустой стро-
ке с приглашением. Команда . (точка) <ВВОД> - пропустить оче-
редную команду и перейти к следующей.  Продолжить трассировку
с другого адреса можно, отдав команду TR с новым адресом, или
изменив содержимое PC.

   Режимы трассировки устанавливаются командой MD  (см. описа-
ние).

MD XXXXX1 - после вывода очередной команды в следующей строке
выводится содержимое  регистров  процессора  после выполнения
предыдущей команды.

MD XXX1XX - после исполнения  или пропуска очередной команды,
следующая выводится с начала экрана (если этот режим не уста-
новлен, то следующая команда выводится с новой строки).

MD XX1XXX - трассировка команд JSR и CAL не отличается от ос-
тальных команд. Если режим сброшен, то вся подпрограмма будет
выполняться как одна команда,  т.е. следующей будет считаться
команда, расположенная за JSR или CALL.

TO - Trace Off - выключить трассировку.

RU [address][,J]  - RUn - запустить программу с заданного ад-
адреса. По умолчанию значение адреса берется из регистра PC.
   Запускаемой программе  передаются значения РОН процессора и
признаков условий.  Возврат в систему происходит, если в про-
грамме выполнилась инструкция RET,  либо произошло прерывание
по вектору 4. При возврате принимаются значения РОН и призна-
ков условий.
   Символ  'J' определяет порядок передачи управления вызывае-
мой программе.  Если указан символ J, то управление программе
передается инструкцией JMP, если J отсутствует, то инструкци-
ей CAL.  При передаче управления с помощью JMP возврат в сис-
тему возможен только по прерыванию по вектору 4. При выходе в
систему по команде RET в регистре  PC находится адрес запуска
программы;  при выходе по прерыванию по вектору 4 - адрес ко-
манды, следующей за командой, при выполнении которой произош-
ло прерывание.


   5. Команды работы с внешними устройствами.

LO [address,]'name'  - LOad - загрузить файл с магнитофона по
адресу address. Если адрес не указан, то загрузка производит-
ся по адресу, расположенному в заголовке файла.
   Для фиктивного чтения  можно применять команду LO без пара-
метров.  Вместо символа  ' можно  использовать  любой символ,
кроме цифр 0..7, не использующийся в имени файла.

SA address,length,'name'  - SAve - сохранить массив с началь-
ным адресом address и длиной length  на магнитной ленте в ви-
де файла с именем name.

LP [address1][,address2] - output Listing on Printer - вывод
ассемблерного текста на принтер. По умолчанию значения адре-
сов address1=BEgin,address2=ENd. В системах счисления ASCII,
TEXT и RADIX инверсные символы на принтер выводятся подчерк-
нутыми.

LP={code,symbol} - вывод кодов на принтер. Операнд считается
восьмеричным кодом, если он состоит из цифр 0..7,  в против-
ном случае  он передается на принтер, как символ КОИ-8.  Эту
команду можно использовать для установки режимов печати.

W>LP=33,17,33,60,33,M,1,A,B,C,D,E,F,G

   Информацию на принтер можно выводить также с помощью режи-
ма дублирования PR (включается/выключается клавишей СУ/А).
   В этом режиме  параллельно с выводом  на экран  происходит
передача информации на принтер.  Режим PR можно использовать
для печати дампа памяти и последовательности выполняемых при
трассировке команд.


   6. Команды расширения системы.

IN [address,]'name' - INstall  - загрузить с ленты догрузку и
включить ее команды в состав системы. Команды должны быть на-
писаны в соответствии с принятым форматом (см. PARSYS.DOC).
При несоответствии команды  требуемому формату выдается сооб-
щение ОШИБКА КП.

IN address,length - включить в состав системы команду, распо-
ложенную в памяти.
   address - начальный адрес команды;
   length - длина для поиска признака конца команды (57537).
   Если модуль содержит одну команду,  должна быть не менее 4;
если более одной команды, рекомендуется задавать длину доста-
точно большой. Если в заданном диапазоне признак конца не об-
наружен, то выдается сообщение ОШИБКА КП.


   7. Команды калькулятора.

AD code1,code2 - ADd - сложить code1 и code2;
SU code1,code2 - SUbtract - вычесть code2 из code1;
MU code1,code2 - MUltiply - перемножить code1 и code2;
DI code1,code2 - DIvide - разделить нацело code1 на code2.

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

───────────────────────



РЕКОМЕНДАЦИИ АВТОРА И ПОЛЕЗНЫЕ СОВЕТЫ

      NOTA BENE !  NOTA BENE !  NOTA BENE !  NOTA BENE !
┌───────────────────────────────────────────────────────────┐
│ АВТОР НАСТОЯТЕЛЬНО СОВЕТУЕТ ВАМ САМОСТОЯТЕЛЬНО НЕ ВНОСИТЬ │
│ ИЗМЕНЕНИЯ В СИСТЕМУ. ЭТО МОЖЕТ ПРИВЕСТИ К НЕПРЕДСКАЗУЕМЫМ │
│ ПОСЛЕДСТВИЯМ. ТЕМ БОЛЕЕ, НЕ СЛЕДУЕТ ПРОСМАТРИВАТЬ СИСТЕМУ │
│ В САМОЙ СЕБЕ С ПОМОЩЬЮ КОМАНД DU И AS.  СЛУЧАЙНОЕ НАЖАТИЕ │
│ КЛАВИШИ  <ВВОД> В НЕКОТОРЫХ СЛУЧАЯХ МОЖЕТ ВЫВЕСТИ СИСТЕМУ │
│ ИЗ СТРОЯ. ПРИ ЗАПИСИ СИСТЕМЫ КОМАНДОЙ SA, ОНА ЗАПИШЕТСЯ С │
│ ОШИБОЧНОЙ КОНТРОЛЬНОЙ СУММОЙ. О ВСЕХ ОШИБКАХ И НЕДОРАБОТ- │
│ КАХ СООБЩАЙТЕ АВТОРУ,  А ТАКЖЕ ВНОСИТЕ ПРЕДЛОЖЕНИЯ О ВНЕ- │
│ СЕНИИ НОВЫХ КОМАНД И ОБ УЛУЧШЕНИИ РАБОТЫ УЖЕ СУЩЕСТВУЮЩИХ │
└───────────────────────────────────────────────────────────┘
       NOTA BENE !  NOTA BENE !  NOTA BENE !  NOTA BENE !


* При работе с  Вашей программой установите адрес начала ра-
   бочей области на начало программы (BE=адрес начала). Тогда
   можно будет вводить команды DU и AS без операнда.

* В режимах DU и AS можно реализовать листание по страницам.
   Для этого поставьте курсор в зону адреса в нижней строке и
   нажимайте на клавишу <ВВОД>.

* В связи с тем, что система при запуске устанавливает прио-
   ритет процессора 200, не работает клавиша СУ/@ (приостано-
   вить вывод на экран).  Для обеспечения ее работы (если это
   необходимо) замените в ячейке со смещением  1660 от начала
   системы (при загрузке на 26000 это будет ячейка 27660) код
   200 на код 0 (например, командой ME 27660,0 <ВВОД>).

* После чтения файла с магнитофона на экран выводится строка
   с параметрами файла.  Если во второй позиции строки поста-
   вить символ >, после него SA и немного отредактировать эту
   строку, то ей же можно воспользоваться для записи файла.

* Для записи нескольких копий после записи нажмите клавиши ↑
   и <ВВОД>.

* Те, кто при работе с программой MIRAGE привык пользоваться
   разделителем /, могут использовать его - он тоже работает.
   Также в качестве разделителей могут использоваться символы
   с кодами 41-57.

* В режиме TR при выполнении команд  EMT с кодами  от 104110
    система может сотворить все, что угодно, даже испортиться.
   Это связано  с особенностями написания системного EMT-дис-
   петчера. Поэтому при трассировке эти команды лучше пропус-
   тить,а еще лучше вообще не трассировать систему.


╬*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*╬
* *
║   На этом фирма 'Game, Applied & System Programs, Inc.'   ║
*    завершает описание системы 'PARADISE' и желает Вам     *
║    приятной и плодотворной работы с нашей программой.     ║
* *
║               Good luck ! Buon fortunato !║
* *
║        Feci quod potui, faciant meliora potentes.    ║
* *
╬*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*╬

PS.  В дальнейшем автор собирается написать новую версию сис-
темы PARADISE для БК0010,  а также начать работу  над версией
для БК0011.

═════════════════════════════════════════════════════════════
26 сентября 1992 года
Санкт-Петербург
Software (C) GASP Inc.

           Author of this text: Anthony V. Gavrilov
══════════════════════════════════════════════════════════════

             ────────────────────────────────────
▓▓▓▓▓▓▓▓▓▓▓ Game, Applied & System Programs Inc. ▓▓▓▓▓▓▓▓▓▓▓
▓           ────────────────────────────────────           ▓
▓  ▓▓▓▓      ▓▓  ▓▓▓▓      ▓▓  ▓▓▓    ▓▓▓▓▓   ▓▓▓▓  ▓▓▓▓▓  ▓
▓  ▓   ▓    ▓ ▓  ▓   ▓    ▓ ▓  ▓  ▓     ▓    ▓      ▓      ▓
▓  ▓   ▓   ▓  ▓  ▓   ▓   ▓  ▓  ▓   ▓    ▓    ▓      ▓      ▓
▓  ▓   ▓  ▓   ▓  ▓▓▓▓   ▓   ▓  ▓   ▓    ▓     ▓▓▓   ▓▓▓▓   ▓
▓  ▓▓▓▓   ▓▓▓▓▓  ▓ ▓    ▓▓▓▓▓  ▓   ▓    ▓        ▓  ▓      ▓
▓  ▓      ▓   ▓  ▓  ▓   ▓   ▓  ▓   ▓    ▓        ▓  ▓      ▓
▓  ▓      ▓   ▓  ▓   ▓  ▓   ▓  ▓▓▓▓   ▓▓▓▓▓  ▓▓▓▓   ▓▓▓▓▓  ▓
▓                                                          ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓                                                          ▓
▓                     SYSTEM EXTENTION                     ▓
▓                    ──────────────────                    ▓
▓                    ADDITIONAL MODULES                    ▓
▓                                                          ▓
▓                      St.Petersburg                       ▓
▓                                                          ▓
▓               Authors: Serge V. Klimenkov                ▓
▓                   Anthony V. Gavrilov                    ▓
▓                                                          ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓





РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
════════════════════════


WINDOW.PAR
──────────

   WINDOW.PAR - догрузка к системе PARADISE, которая позволяет
системе работать в экранной области памяти, а также дает воз-
можность пользователю работать в двух окнах и выделять на эк-
ране рабочую область для размещения программ, данных, и т.п.

   Загрузить WINDOW.PAR можно двумя способами.

   1. При запуске системы PARADISE,  загруженной в экран, сис-
тема пытается перейти  в режим расширенной памяти (РП).  Если
сделать это не удалось, система выводит на экран сообщение:
   ВВОД ДОГРУЗКИ
   ЖДУ ИМЯ?
   Вы должны ввести имя догрузки (WINDOW.PAR) и нажать <ВВОД>.
После этого система загружает и запускает догрузку.

   2. Если Вы хотите использовать WINDOW.PAR при работе в пол-
ном экране,  то загрузка производится из работающей системы с
помощью команды LO адрес,'WINDOW.PAR' (см. PAR.DOC).
   Адрес загрузки определяется  путем вычитания  из начального
адреса системы длины догрузки 2400.  Это можно сделать коман-
дой SU адрес,2400  (см. PAR.DOC).  После загрузки произведите
запуск WINDOW.PAR командой RU адрес (см. PAR.DOC).

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

   Догрузка в своем составе имеет две команды:

LN [number] - LiNes - установка заданного количества строк на
экране, в пределах которых возможно перемещение курсора.
   При попытке установить количество строк меньше 2 или больше
максимально возможного (в полном экране 30; при работе систе-
мы в экране с адреса 66000 - 17) система выдает сообщение:
     ОШИБКА КС
   Команда LN без параметров  восстанавливает на экране макси-
мально возможное число строк.
   Команда LN блокируется при работе с двумя окнами.

   Команда LN используется для выделения на экране области для
размещения программ, данных, подпрограмм, и т.д.
   Например:  система загружена с адреса 66000, основная часть
WINDOW.PAR располагается с адреса 64600. При этом максимально
возможное число строк - 17(8). После выполнения команды LN 15
две строки на экране  будут недоступны для курсора, и область
памяти 61000-64577 Вы можете использовать как угодно.
   Начальный адрес  выделенной области памяти можно рассчитать
с помощью команд MU и AD (см. PAR.DOC) следующим образом:
     MU 1200,n    где n - количество строк;
затем полученное число сложить с 42000 (адрес первой строки).

WI [number]  -  WIndow - установить второе окно с количеством
строк number.
   Если при заданном количестве строк в верхнем или нижнем ок-
не оказывается меньше двух строк, то выдается сообщение:
   ОШИБКА КС
   Команда WI без параметров отключает нижнее окно.
   Переход из одного окна в другое осуществляется  при нажатии
клавиши СУ/Ф.  При этом курсор возвращается на то место,  где
он находился до перехода в другое окно.  В окнах можно произ-
водить любые действия, в том числе нажимать клавишу СТОП - на
другое окно они не влияют. Можно установить в окнах различные
системы счисления,  но режим, установленный командой MD, оди-
наков в обоих окнах.
   При включенном нижнем окне команда WI с параметром блокиру-
ется.

   До включения второго окна можно выделить на экране  рабочую
область командой LN.  После отключения окна можно снова уста-
новить на экране максимальное количество строк.

НЕ РЕКОМЕНДУЕТСЯ ВЫХОД В МОНИТОР ПРИ ВКЛЮЧЕННОМ НИЖНЕМ ОКНЕ !


SEARCH.PAR
──────────

   SEARCH.PAR - догрузка к системе PARADISE, позволяющая рабо-
тать с массивами информации и осуществлять поиск ассемблерных
команд в заданном диапазоне. Содержит следующие команды:
   FM - поиск массива;
   FC - поиск ассемблерной команды;
   CH - подсчет контрольной суммы.

FM address1,address2,address3,address4 - Find Massive - поиск
массива по байтам.
   address1,address2  - начальный и конечный адреса  диапазона
поиска;
   address1,address2  - начальный и конечный адреса эталонного
массива;

   На экран выводятся начальные адреса массивов, совпадающих с
эталонным.

   Например:

W>FM 1000,3777,30000,30277 -  поиск массива, расположенного с
адреса 30000 по адрес 30277 в диапазоне адресов 1000-3777.

FC address1,address2,[$]command - Find Command - поиск коман-
ды в заданном диапазоне адресов.
   Символ $ указывает на поиск "скрытых" команд.
   Например, в программе по адресу 1000 расположена команда:

   MOV #5302,R1

Она занимает в памяти 2 слова, в которых расположены коды:

   012701 005302

Но второе слово, расположенное по адресу 1002, также является
командой: DEC R2. При указании символа $ будет осуществляться
поиск таких "скрытых" команд.

   Ассемблерная команда задается в виде:
     мнемоника <ПРОБЕЛ> операнды
   При задании мнемоники и операндов можно использовать симво-
лы % (процент) и * (звездочка):

   % - заменяет любой один символ;
   * - заменяет любые несколько символов.

   Примеры:

W>FC 1000,1776,MOV #1000,R0 - поиск команды MOV #1000,R0
W>FC 1000,1776,MOV #1000,R% - поиск команд  MOV #1000,R(0..5)

W>FC 1000,1776,MOV *,*      - поиск всех команд MOV
W>FC 1000,1776,MOV R0,@#*00 - поиск команд MOV R0 в приемник-
ячейку с адресом, оканчивающим-
ся на 00.
W>FC 1000,1776,BR 1%%%      - поиск команд  BR 1000 - BR 1776
W>FC 1000,1776,B* 10*       - поиск команд  перехода на адре-
са, начинающиеся на 10
W>FC 1000,1776,*B *,*       - поиск всех команд,  заканчиваю-
щихся на B с 2 операндами
W>FC 1000,1776,* *
- поиск однооперандных команд
W>FC 1000,1776,$BR 1000     - поиск "скрытых" команд BR 1000.

   На экран выводятся  найденные команды, адреса  и порядковые
номера команд.

CH address1,address2[,B]  -  CHeck code - подсчет контрольной
суммы массива, расположенного в заданном диапазоне адресов по
словам или по байтам (при указании символа B).

   Например:

W>CH 1000,37777,B - подсчет контрольной суммы по байтам.


TRACER.PAR
──────────

   TRACER.PAR  -  догрузка к системе PARADISE,  обеспечивающая
дополнительные возможности при трассировке программ.
   Имеет в своем составе следующие команды:

   GO - запуск программы с условием останова;
   PT - работа с точками останова;
   CP - стереть все точки.

GO address[,B],'halt condition' - программа запускается с за-
данного адреса и выполняется до тех пор, пока не будет выпол-
нено условие останова, которое задается в следующем виде:
halt condition = operand1.operation.operand2
operand1,operand2 - любые операнды, допустимые в ассемблерных
командах;
operation={NE,EQ,GE,GT,LE,LT,PL,MI,VC,VS,CC,CS,HI,HS,LO,LS}.
   Допустимые в команде GO условия получаются из мнемонических
обозначений команд перехода (BNE, BEQ, BGE и т.д.) отбрасыва-
нием начальной буквы B. Так же, как и для ассемблера, команды
BHIS и BLOS заменяются на BHS и BLS соответственно.
   При выполнении программы,  запущенной командой GO, происхо-
дит постоянное сравнение операндов командой CMP или CMPB (при
указании символа B). Если условие сравнения выполнилось, про-
грамма останавливается, и на экран выдается адрес останова.

   Примеры:

W>GO 1000,'R1.EQ.#100'  - выполнение программы с адреса 1000,
пока R1 не станет равным 100;

W>GO 1000,'(R0).LT.320' - ..., пока  содержимое ячейки, адрес
которой в R0, не станет меньше, чем
содержимое ячейки 320;

W>GO 1000,B,'R1.CS.R2'  - .., пока при вычитании  из младшего
байта R1 младшего байта R2 не будет
установлен бит переноса C.

  В УСЛОВИИ ОСТАНОВА НЕЛЬЗЯ ЗАДАВАТЬ РЕГИСТР PC В ЯВНОМ ВИДЕ !

PT [N[,address]] - PoinT - поставить/удалить точку останова с
номером N (0-7).

   Команда PT N,address устанавливает точку останова с номером
N на заданный адрес программы.
   Команда PT N (без указания адреса) стирает точку останова с
номером N.
   Команда PT без параметров  выдает список всех установленных
точек.

   При запуске программы командой RU происходит останов по од-
ному из заданных адресов и выдается сообщение:

   Точка.PC=address

CP - Clear Points - стереть все точки останова.

   При установке точки происходит замена  вектора прерывания с
адресом 14. Если сброшены все точки, то вектор востанавливает
свое прежнее значение. Если Вы выходили из системы с установ-
ленными точками, то после возврата для предупреждения возмож-
ных ошибок отдайте команду PT.


ARITHM.PAR
──────────

   ARITHM.PAR - модуль команд расширенной арифметики, позволя-
ющий выполнять программы, содержащие следующие команды:
MUL,DIV,FADD,FSUB,FMUL,FDIV,ASH,ASHC.
   Содержит одну команду AR (ARithmetic extentions).

AR ON - включить команды расширенной арифметики.

AR OFF - выключить команды расширенной арифметики.

   При включении команд расширенной арифметики устанавливается
вектор прерывания по резервной машинной команде 10,  и запре-
щается его инициализация командой IV.


ARBK11.PAR
──────────

   ARBK11.PAR - модуль включения команд расширенной арифметики
для БК0011(М), использующий то обстоятельство,  что на БК0011
в ПЗУ имеется подпрограмма обработки вектора 10. Работа с мо-
дулем не отличается от ARITHM.PAR.


STRACE.PAR
──────────

   STRACE.PAR - модуль сохранения системных ячеек монитора при
трассировке программ. Содержит команду DT (Data for Trace).

DT ON - включить режим сохранения.  При этом после выполнения
очередной команды текущие значения системных переменных мони-
тора, расположенные в ячейках 40-276, запоминаются и восста-
навливаются перед исполнением следующей команды.

DT OFF - выключить режим сохранения.

   Команда DT может применяться  для трассировки тех программ,
в которых используются режимы ГРАФ, ИНВ, и т.д.


DISKWR.PAR
──────────

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

   DK - назначить устройство;
   BL - установить параметры блока;
   LD - прочитать блок;
   SD - записать блок.

DK N - DisK - назначить для обмена накопитель с номером N.
В начале работы установлено устройство 0 (A:).
По команде DK происходит инициализация рабочей области.

BL address,length - BLock - установка параметров логического
блока.
address - aдрес расположения блока в памяти (чтения/записи);
length  - длина блока.

По умолчанию: address=40000
               length=400

LD number[,address] -  Load from Disk - чтение блока с диска,
начиная с физического номера number по заданному адресу или в
область памяти, заданную командой BL.

SD number[,address] -  Save to Disk - запись блока из области
памяти, заданной командой BL, или с заданного адреса на диск,
начиная с физического номера number.

   Данный модуль работает  с контроллером накопителя на гибких
магнитных дисках КНГМД 3.059.014 завода "ЭКСИТОН".


SPRITE.PAR
──────────

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

   1 слово - WIDTH # (ширина в байтах);
   1 слово - HEIGHT # (высота в строках);
   (WIDTH*HEIGHT) байт  - последовательно расположенные строки
спрайта.
# - параметр может отсутствовать.

   Содержит одну команду SE (Sprite Editor).

SE address[,width,height] - вход в спрайтовый редактор.

address - предполагаемый адрес спрайта.
width - ширина спрайта в байтах. (1..100)
height - высота спрайта в строках.

   При входе происходит проверка рулонного сдвига, и, если эк-
ран был сдвинут, то выполняется команда EMT 14.

   Если параметры width и height не указаны, то они берутся из
заголовка спрайта (в случае корректных значений).

   На экран выводится спрайт,  ограниченный прямоугольной рам-
кой, и его параметры.
   Редактор имеет 2 режима: ПОИСК и РЕДАКТИРОВАНИЕ.
   При входе в редактор устанавливается режим ПОИСК.
   В режиме РЕДАКТИРОВАНИЕ вместо параметров спрайта выводится
линза, в которой расположено увеличенное изображение.

УПРАВЛЕНИЕ:

1. Режим ПОИСК.

→ ← - перемещение рамки по памяти на 1 байт вперед/назад. При
       этом изображение сдвигается по горизонтали.
↓ ↑ - перемещение рамки по памяти на width байт вперед/назад.
       Изображение сдвигается по вертикали.
АР2 стрелка - увеличение/уменьшение размера спрайта.
ВВОД - вход в режим РЕДАКТИРОВАНИЕ.
КТ - выход в систему.

   При перемещении рамки по памяти работает автоускорение. Из-
менение размеров спрайта ограничено размерами экрана. При ши-
рине спрайта более 66 байт на экран будут выведены только 66;
остальные можно просмотреть, переместив рамку немного вперед.
Редактировать такие спрайты нужно в два этапа.

2. Режим РЕДАКТИРОВАНИЕ.

← → ↑ ↓ - перемещение курсора внутри линзы. При выходе курсо-
           ра за пределы линзы, линза смещается.
АР2 стрелка - перемещение линзы по спрайту.
; (точка с запятой) 1 2 3 - поставить точку: черного, красно-
го, зеленого или синего цвета со-
ответственно.
сдвижка - сдвинуть изображение, расположенное в строке с кур-
           сором правее курсора, на 1 точку влево.
раздвижка - раздвинуть изображение,  расположенное в строке с
             курсором правее курсора, на 1 точку вправо.
ВВОД - включение/отключение изображения линзы на спрайте.
АР2 ВВОД - переключение цветного/монохромного режимов.
ПРОБЕЛ - включение/отключение режима трассировки (при переме-

щении курсора остается след  цвета последней введен-

ной точки).
СБР - стереть изображение в линзе.
KT - выход в режим ПОИСК с записью отредактированного спрайта
      на место его расположения.
АР2 ВС - выход в режим ПОИСК без записи спрайта.

ПРИ ПОПЫТКЕ  ЗАПИСИ СПРАЙТА В ПЗУ,  ИЛИ ПРИ ВЫХОДЕ ЗА ПРЕДЕЛЫ
ПАМЯТИ ПРОИСХОДИТ ПРЕРЫВАНИЕ ПО ВЕКТОРУ 4 И ВОЗВРАТ В СИСТЕМУ

   Редактор не работает, если рабочая область на экране меньше
четырех строк.



*  *  *


    ВСЕ МОДУЛИ,КРОМЕ WINDOW.PAR., ПОДКЛЮЧАЮТСЯ КОМАНДОЙ IN.
    ВСЕ МОДУЛИ АБСОЛЮТНО ПЕРЕМЕЩАЕМЫ И МОГУТ БЫТЬ СОВМЕЩЕНЫ
    С СИСТЕМОЙ 'PARADISE' ПРОГРАММОЙ-КОМПОНОВЩИКОМ PARLINK,
    КРОМЕ МОДУЛЯ WINDOW.PAR, КОТОРЫЙ НЕ ИМЕЕТ СТРУКТУРЫ КО-
    МАНДНОГО МОДУЛЯ И ЗАГРУЖАЕТСЯ ОТДЕЛЬНО.





═════════════════════════════════════════════════════════════

Software (C) GASP Inc.
St.Petersburg
31-OCT-92

═════════════════════════════════════════════════════════════

                      EMIDIS.PAR


     Даная догрузка используется для коректной работы с дис-
ководом на БК010 в среде ANDOS. Она влючает в себя единствен-
ную команду ED. Параметров у не нет. Для  использования  этой
догрузки необходимо предварительно подгрузить е PARADISE  1.1
(а еще лучше подлинковать с помощью PARLINK)  и  перед  первым
обращением к дисководу выполнить эту команду.


Клименков С. В. (C) 1993

              ────────────────────────────────────
▓▓▓▓▓▓▓▓▓▓▓▓ Game, Applied & System Programs Inc. ▓▓▓▓▓▓▓▓▓▓▓
▓            ────────────────────────────────────           ▓
▓  ▓▓▓▓      ▓▓  ▓▓▓▓       ▓▓  ▓▓▓    ▓▓▓▓▓   ▓▓▓   ▓▓▓▓▓  ▓
▓  ▓   ▓    ▓ ▓  ▓   ▓     ▓ ▓  ▓  ▓     ▓    ▓   ▓  ▓      ▓
▓  ▓   ▓   ▓  ▓  ▓   ▓    ▓  ▓  ▓   ▓    ▓    ▓      ▓      ▓
▓  ▓   ▓  ▓   ▓  ▓▓▓▓    ▓   ▓  ▓   ▓    ▓     ▓▓▓   ▓▓▓▓   ▓
▓  ▓▓▓▓   ▓   ▓  ▓ ▓     ▓   ▓  ▓   ▓    ▓        ▓  ▓      ▓
▓  ▓      ▓▓▓▓▓  ▓  ▓    ▓▓▓▓▓  ▓   ▓    ▓    ▓   ▓  ▓      ▓
▓  ▓      ▓   ▓  ▓   ▓   ▓   ▓  ▓▓▓▓▓  ▓▓▓▓▓   ▓▓▓   ▓▓▓▓▓  ▓
▓                                                           ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓                                                           ▓
▓                      P A R A D I S E                      ▓
▓                     ─────────────────                     ▓
▓                   INFO ABOUT THE SYSTEM                   ▓
▓                                                           ▓
▓                        01-OCT-1992                        ▓
▓                       St.Petersburg                       ▓
▓                                                           ▓
▓                 Author: Serge V. Klimenkov                ▓
▓                                                           ▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓


              РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА
              ═══════════════════════════════════


                           ВВЕДЕНИЕ
                           ────────

    Это описание предназначено для программистов, которые хотят
расширить возможности системы PARADISE 1.1 (в  дальнейшем  P11)
путем введения новых команд. Оно раскрывает подход  автора  при
написании системы, оговаривает некоторые неточности  и  особен-
ности написания системы.
    В некоторых случаях был выбран не лучший алгоритм,  но  это
обусловлено лишь острым недостатком памяти на БК0010.
    Как Вы уже поняли из документации, P11 имеет функцию  вклю-
чения команд пользователя. Это очень мощное подспорье  в  рабо-
те программиста. Каждый сможет написать  команду,  которая  по-
требовалась для работы и многократно  использовать  ее.  Данная
инструкция поможет Вам освоить это.
    В систему входит интерпретатор командных строк, который оп-
ределяет наличие команды в системе, а также  выполняет  функции
передачи параметров.
    Команда имеет особенный формат и, чтобы написать КОРРЕКТНУЮ
команду, необходимо собюдать следующие условия:
   - команда должна быть АБСОЛЮТНО перемещаемой;
   - обращения к системным переменным и подпрограммам P11  дол-
     жны осуществляться ТОЛЬКО с помощью инструкций EMT.
    При несоблюдении этих требований P11 теряет главное преиму-
щество - перемещаемость, а также совместимость версий.

    Напомню, что включение команды пользователя в P11  произво-
дится либо командой IN, либо компоновщиком PARLINK.

    Данное описание также содержит инструкцию по  использованию
и описание системных вызовов EMT, которые используются в P11, и
могут оказаться полезными для Вас при написании собственных ко-
манд.


       ГЛАВА 1, в которой дается oбщее описание системы.
       ─────────────────────────────────────────────────

    Система P11 структурно состоит из восьми частей, которые  в
памяти последовательно располагаются друг за другом:

   1) МОДУЛЬ ОПЕРАЦИОННОГО ИНТЕРФЕЙСА. Предназначен  для  обес-
      печения диалогового режима взаимодействия  с  пользовате-
      лем.
   2) МОДУЛЬ КОМАНД. В нем находятся подпрограммы,  реализующие
      различные команды, входящие в базовый состав P11.
   3) МОДУЛЬ АССЕМБЛЕРА И ДИЗАССЕМБЛЕРА, который содержит  под-
      программы, обрабатывающие мнемонику машинных команд  про-
      цессора К1801ВМ1.
   4) МОДУЛЬ ВВОДА-ВЫВОДА. В нем расположены подпрограммы,  уп-
      равляющие режимами ввода-вывода на терминал и  драйверные
      подпрограммы.
   5) ОБЛАСТЬ СИСТЕМНЫХ ПЕРЕМЕННЫХ. Здесь располагаются  адреса
      рабочих областей, хранится содержимое регистров процессо-
      ра, и т.п.
   6) ОБЛАСТЬ СИСТЕМНЫХ ПРИЗНАКОВ.
   7) БУФЕР ВВОДА-ВЫВОДА. Необходим для работы с терминалом,  а
      также с ассемблером-дизассемблером.
   8) СТЕК.


         ГЛАВА 2, которая посвящена системным ячейкам.
         ─────────────────────────────────────────────

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

   ПРИЗНАКИ. Доступ к ним возможен через EMT 151. После него  в
   регистре R5 остается адрес начала буфера.  Адреса  признаков
   определяются через смещение относительно начала буфера.

   ┌──────────────────────────────── смещение
   │        ┌─────────────────────── символическое имя
   │        │     ┌───────────────── описание
┌─┴─────┬──┴────┬┴──────────────────────────────────────────┐
│ - 6   │ SSREG │ 377 - включен режим SS (клавиша <ШАГ>)    │
│ - 5   │ PRTON │ 377 - включено дублирование на принтер    │
│ - 4   │ TRON  │ 377 - включена трассировка                │
│ - 3   │ TABOFF│ 377 - табуляция (см. описание EMT 140,142)│
│ - 2   │ OUBUF │ 377 - выдача EMT 114 в буфер по R5        │
│ - 1   │ ERROR │   0 - отсутствие системной ошибки         │
│       ├───────┼───────────────────────────────────────────┤
│  0    │ BUFFER│  БУФЕР РАЗМЕРОМ 100 байт.                 │
└─.....─┴─.....─┴─.........................................─┘

NB: В системе P11 отрицательные числа должны задаваться в  до-
полнительном коде, например, -5 = 177773.

   Пример обращения:

        EMT    151        ; в R5 адрес признаков;
        TSTB   -5(R5)     ; включен ли принтер?;
        BEQ    M1         ; если нет, то перейти на M1;
        МОV    #60,(R5)+  ; записать в буфер число 60;

   ПЕРЕМЕННЫЕ. Доступ к ним осуществляется через EMT  267,  по-
   добно доступу к признакам.

┌─.....─┬─.....─┬─.........................................─┐
│   0   │ ABEGIN│ адрес начала рабочей области              │
│   4   │ AEND  │ адрес конца  рабочей области              │
│  10   │ R0    │ ┐                                         │
│  14   │ R1    │ │                                         │
│  20   │ R2    │ │ содержимое регистров процессора, переда-│
│  24   │ R3    │ ├ ваемое программе при запуске по команде │
│  30   │ R4    │ │ RUN, или РОН при трассировке            │
│  34   │ R5    │ │                                         │
│  40   │ SP    │ │                                         │
│  44   │ PC    │ │                                         │
│  50   │ PS    │ ┘                                         │
│  54   │ TRMODE│ переменная, используемая в команде MD     │
│  66   │ BASEPR│ текущая система счисления:                │
│       │       │ 2-ASCII 4-TEXT 6-RADIX 10-BYTE 12-WORD    │
│       │       │ 14-HEXADECIMAL 16-DECIMAL 20-PRIMARY(BIN) │
└───────┴───────┴───────────────────────────────────────────┘

   Пример обращения:

        EMT    267       ; в R5 адрес блока переменных;
        MOV    66(R5),-(SP); сохранить текущее BASEPR в стеке;
        MOV    #14,66(R5); установить 16-ричную С.СЧИСЛ.;
        MOV    (R5),R0   ; адрес начала рабочей области в R0;
        EMT    114       ; вывести R0 на зкран в С.СЧИСЛ.;
        MOV    (SP)+,66(R5); востановить значение BASEPR;


          ГЛАВА 3, рассказывающая о некоторых EMTах.
          ──────────────────────────────────────────

    В процессе 'лепки' своих команд часто  нужны  подпрограммы,
позволяющие сделать процесс програмирования  немного  проще.  И
поэтому у автора в процессе работы появились  некоторые  полез-
ные инструкции EMT. Ниже приведено их описание:

122 - сохранение регистров R0-R5 в стеке;
124 - востановление R0-R5 из стека;
126 - востановление R1-R5 из стека. R0  остается  прежним,  но
       его значение, сохраненное с помощью EMT  122,  из  стека
       убирается;

     ПРИМЕР:

FLUSH: EMT    122 ; сохранить РОН;
           . . .   ; команды п/п FLUSH;
        TST    R0  ; проверить R0;
        BEQ    1   ; если R0=0, то идти на метку 1;
        EMT    126 ; востановить РОН без R0;
        BR     2   ; и возврат из п/п;
1:     EMT    124 ; востановить РОН (включая R0);
2:     RET        ; возврат;

135 - умножение двух 16-разрядных чисел (R1 не сохраняется);
       вход:  R0 - множимое;
              R2 - множитель;
       выход: R0 - младшие 16 разрядов результата;

113 - деление двух 16-разрядных чисел;
       вход:  R1 - делимое;
              R2 - делитель;
       выход: R0 - целая часть результата;
              R1 - остаток;

127 - очистка старшего байта R0 (то же, что BIC #177400,R0);

201 - умножение R0 на 100;
203 -     -//-     на 20;
205 -     -//-     на 10;
207 -     -//-     на 4;

211 - деление R0 на 100 нацело (в R0 целая часть результата);
213 -     -//-   на 20;
215 -     -//-   на 10;
217 -     -//-   на 4;

120 - ввод в R5 адреса, заданного смещением;

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

┌───────────────┬──────────────────────┬────────────────────┐
│ ФИКСИРОВАННЫЙ │ ПЕРЕМЕЩАЕМЫЙ БЕЗ EMT │ ПЕРЕМЕЩАЕМЫЙ С ЕМТ │
├───────────────┼──────────────────────┼────────────────────┤
│ MOV  #STOP,R5 │ MOV    PC,R5         │ EMT    120         │
│               │ ADD    (PC)+,R5      │ .WORD  @STOP       │
│               │ .WORD  @STOP+2       │                    │
├───────────────┼──────────────────────┼────────────────────┤
│ два слова     │ три слова            │ два слова          │
└───────────────┴──────────────────────┴────────────────────┘

123 - гашение курсора;
125 - зажигание курсора;


              ГЛАВА 4. затрагивающая ввод-вывод.
              ──────────────────────────────────

    Продолжение описаний EMT:

116 - вывод на экран символа, код которого находится в R0.
       При этом непечатаемые символы с кодами 0-37 выводятся на
       экран в виде инверсных латинских заглавных букв, а с ко-
       дами 200-237 - в виде русских строчных;
114 - то же, что и 116, но при выводе, если установлен  OUBUF,
       то происходит вывод в буфер (адрес которого в R5),  если
       установлн PRTON, то код дублируется на принтере;
117 - вывод кода из R0 на принтер независимо от его  готовнос-
       ти;
115 - на терминал вывести ПРОБЕЛ;
121 - на терминал и принтер вывести символ <ВК> (код 12);
131 - на терминал вывести символ '║';
251 - сбросить все правее курсора;
165 - очистка экрана ниже позиции курсора;

163 - ввод сканированием в R0 символа, находящегося  по  теку-
       щим координатам курсора. Символ берется из  видеопамяти,
       производится его поиск в знакогенераторе, и в  R0  зано-
       сится его код (если символ не обнаружен, то R0=277 (▓).
         Символ на экране должен быть напечатан в 'худом'  кур-
       соре (64 символа в строке).
112 - ввод в системный буфер строки из 64  символов,  сканиро-
       ванных с экрана по текущей координате Y курсора;
136 - ввод сканированием восьмеричного числа с экрана в R0;

146 - ввод символа в R0 с клавиатуры. Oбеспечивает ввод и  ин-
       дикацию системных клавиш, автоповтор клавиатуры;

144 - обработка кодов нажатых клавиш;
       вход:  R0 - код клавиши;
              R5 - адрес таблицы кодов;
              PC - адрес таблицы BR;
       выход: переход на адрес, заданный командой BR;

1:     EMT    146   ; ждать нажатия клавиши;
        EMT    120   ; ┐ поместить в R5 адрес таблицы кодов;
        .WORD  @TABKEY; ┘
        EMT    144   ; обработать код в R0;
        BR     LEFT  ; если R0=10 то идти на метку LEFT
        BR     RIGHT ;      R0=31      -//-        RIGHT
        BR     DOWN  ;      R0=33      -//-        DOWN
        BR     UP    ;      R0=32      -//-        UP
        BR     1     ; если кнопка не найдена, то повторить;
LEFT:               ; обработка кнопки 'ВЛЕВО';
RIGHT:
UP:
DOWN:
          . . .
TABKEY: .BYTE 10,31,33,32,0;таблица кодов (должна иметь бай-
         .EVEN             ;товый формат и заканчиваться ко-
                           ;дом 0).

153 - установка курсора по координатам, заданным байтами  пос-
       ле команды.

        EMT    153; установить курсор по координатам X,Y;
        .BYTE  X,Y; если X или Y отрицательны, то соответст-
                  ; вующая коодината не изменяется;

        EMT    153  ; курсор по X поставить в позицию 10;
        .BYTE  10,200; координату Y не изменять;

130 - вывод на экран R0 в восьмеричном виде;
132 - вывод на экран младшего байта R0 в восмеричном виде;
134 - вывод на экран R0 в формате RADIX50;
140 - вывод на экран R0 по BASEPR. Eсли TABOFF=377,  то  после
       вывода числа печатается 1 пробел, если 0, то  количество
       выведенных символов дополняется пробелами до 8;

       23456___  - TABOFF=0
       23456_    - TABOFF=377;

142 - ввод из буфера (адрес в R5) числа в R0 по BASEPR;
       Если TABOFF=377, то R5 увеличивается на 1 после  вывода,
       если 0, то дополняется до 8;

171 - вывод R0 в буфер по R5 в восьмеричном виде с подавлением
       ведущих нулей. R2,R3 не сохраняются.

       MOV    @#160,R0;адрес текущего положения курсора в R0;
       EMT    151    ;адрес системного буфера в R5;
       MOV    R5,R1  ;R1=R5;
       EMT    171    ;преобразовать число в буфер;
       CLRB   (R5)+  ;добавить ограничитель - код 0;
       EMT    151    ;адрес системного буфера в R5;
       CLR    R2     ;будем выводить до кода 0;
       EMT    20     ;вывести строку;

221 - ввод в R0 восьмеричного числа из буфера (адрес  которого
       в R5);


        ГЛАВА 5, где открываются таинства подключения.
        ──────────────────────────────────────────────

    Наконец, после всех вступительных слов, можно дать структу-
ру команд, расположение их в памяти, принципы  их  обработки  и
подключения. В памяти команды расположены в виде  СПИСКА  (тер-
мин взят из PASCAL), но вместо адреса следующего  элемента  ис-
пользуется относительное смещение на адрес (.WORD @ADR).

  ФОРМАТ КОМАНДЫ:
  ┌─┬───────────────────────────────┬────────────┐
  │N│ НАЗНАЧЕНИЕ ПОЛЯ               │ ДЛИНА      │
  ├─┼───────────────────────────────┼────────────┤
  │1│ Имя инструкции                │ два  байта │
  ├─┼───────────────────────────────┼────────────┤
  │2│ Смещение на следующую команду │ одно слово │
  ├─┼───────────────────────────────┼────────────┤
  │3│ Машинные инструкции команды   │ много слов │
  ├─┼───────────────────────────────┼────────────┤
  │4│ команда RET (RTS PC)          │ одно слово │
  └─┴───────────────────────────────┴────────────┘
Если на месте смещения (п.2) находится код  "__"  (057537),  то
это означает, что данная команда последняя (список  команд  за-
вершен). Если необходимо подключить одну команду,  нужно,  что-
бы в этой команде в п.2 находился код "__".  Если  подключается
модуль, содержащий несколько команд, то в последней  по  списку
команде должен быть код "__", а все  остальные  команды  должны
содержать в п.2 смещение на следующую команду. Поясню :

     ┌─────┐    ┌─────┐           ┌─────┐    ┌─────┐
     │ MO  │ ┌─→│ LP  │      ─ ──→│ AS  │ ┌─→│ DU  │
     │XXXXX├─┘  │XXXXX├─── ─      │XXXXX├─┘  │ __  │
     │. . .│    │. . .│           │. . .│    │. . .│
     │ RET │    │ RET │           │ RET │    │ RET │
     └─────┘    └─────┘           └─────┘    └─────┘

    На этой картинке показан общий принцип расположения  команд
в памяти БК, и, после подключения новой команды,  картинка  бу-
дет иметь вид:

   ┌─────┐    ┌─────┐           ┌─────┐    ┌─────┐    ┌─────┐
   │ MO  │ ┌─→│ LP  │      ─ ──→│ AS  │ ┌─→│ DU  │ ┌─→│ SE  │
   │XXXXX├─┘  │XXXXX├─── ─      │XXXXX├─┘  │XXXXX├─┘  │ __  │
   │. . .│    │. . .│           │. . .│    │. . .│    │. . .│
   │ RET │    │ RET │           │ RET │    │ RET │    │ RET │
   └─────┘    └─────┘           └─────┘    └─────┘    └─────┘

    Причем не обязательно, чтобы команды располагались в памяти
последовательно, т.к. смещение определяет полный  диапазон  ад-
ресов, возможных для К1801ВМ1.
    Мало только подключить команду - необходимо в нее  передать
параметры. В P11 это реализовано не  лучшим  способом,  но  для
поставленных задач это более-менее нормально.
    Интерпретатор P11 может определить три аргумента и записать
их в РОН. Тогда, при передаче  управления  команде,  РОН  имеют
следующие значения:
  R0 - значение третьего аргумента (по умолчанию 0);
  R1 - количество интерпретированных операндов (если 15-ый  бит
       установлен в 1, то после имени команды был символ '=');
  R2 - значение второго аргумента (по умолчанию AEND);
  R3 - адрес, куда передано управление;
  R4 - значение первого аргумента (по умолчанию ABEGIN);
  R5 - значение системного буфера после последнего  интерпрети-
       рованного фрагмента входной строки;

    После того, как  на  клавиатуре  набрана  командная  строка
(допустим, такая:  SAVE  1000,2000,'PROG'),  и  нажата  клавиша
<ВК>, интерпретатор начинает ее обработку:
  а) проверяет, имеется ли в списке имя SA; если нет, то выдает
     сообщение об ошибке.
  б) находит операнды (ставит указатель буфера на число 1000);
  в) проверяет, на число ли указывает R5; если да, то  интепре-
     татор записывает это число в R4. (1000 в R4).
  г) (в) выполняется для второго и для третьего  операнда,  ко-
     торые записываются в R2 и R0 соответственно. (2000 в R2).
    Интерпретатор обрабатывает только числовые операнды, (но не
более трех). Если встретился нечисловой  операнд  ('PROG'),  то
интерпретатор установит указатель буфера (R5)  на  его  начало;
если количество операндов больше трех, то указатель буфера  бу-
дет установлен после третьего обработанного операнда.
  д) управление передается команде.

    Примеры интерпретации командных строк:

┌──────────────────┬─────┬──────┬──────┬──────┬──────┬──────┐
│     СТРОКА       │ R0  │  R1  │  R2  │  R3  │  R4  │  R5* │
├──────────────────┼─────┼──────┼──────┼──────┼──────┼──────┤
│ IV               │    0│     0│  AEND│XXXXXX│ABEGIN│IV  **│
│ ME 1000          │    0│     1│  AEND│XXXXXX│  1000│1000■ │
│ ME 2000,234      │    0│     2│   234│XXXXXX│  2000│0,234■│
│ MO 1000,1777,4000│ 4000│     3│  1777│XXXXXX│  1000│4000■ │
│ SA 1000,2000,'PR'│    0│     2│  2000│XXXXXX│  1000│00,■PR│
│ LP=33            │    0│100001│  AEND│XXXXXX│    33│=33■  │
│ LP=200,1,'SAV'   │    0│100002│     1│XXXXXX│   200│1,■SAV│
│ FI 100,2000,10,73│   10│     3│  2000│XXXXXX│  1000│10,■3 │
└──────────────────┴─────┴──────┴──────┴──────┴──────┴──────┘

    Примечания:

  * Значение R5 дается в виде указателя на символ,  вместо  ко-
    торого в таблице стоит '■'. То есть, для  последней  строки
    таблицы, в R5 будет находится адрес символа '7'.
** Первая строка ( безоперандная команда ) - исключение. В  R5
    будет находится адрес, приблизительно на 40 больше, чем ад-
    рес символа 'V'. Это объясняется тем, что в этом диапа- зо-
    не интерпретатор ведет поиск операндов.

    Теперь для примера рассмотрим написание команд на языке ас-
семблера:

         .WORD   "PR,@LPR-4; заголовок команды PR CODE;
PRINT:  CMPB    R1,#1     ; количество операндов=1 ?
         BEQ     1         ; если да, то идти на 1;
         EMT     177       ; иначе сообщение: ОШИБКА ОП;
         .WORD   "ОП       ;
1:      MOV     (R4)+,R0  ; содержимое ячейки,  адрес кото-
                           ; рой задан в команде PR - в R0;
         EMT     121       ; <ВК>;
         EMT     130       ; напечатать число из R0;
         RET               ; возврат;
         .WORD   "PT,"__   ; команда PT=CODE или PT='TEXT'
LPR:    TST     R1        ; если  команда отделена  от опе-
                           ; рандов символом '='
         BMI     1         ; то - идти на 1;
         TSTB    R1        ; если нет числовых операндов
         BEQ     2         ; то - идти на 2;
5:      EMT     177       ; иначе
         .WORD   "OП       ; выдать сообщение об ошибке;
2:      MOVB    (R5)+,R3  ; символ-ограничитель в R3;
4:      MOVB    (R5)+,R0  ; следующий символ в R0;
         CMPB    R0,R3     ; если символ - не ограничитель
         BNE     3         ; то - идти на 3;
         RET               ; иначе возврат;
3:      EMT     117       ; напечатать R0 на принтере;
         BR      4         ; перейти к следущему символу;
1:      TSTB    R1        ; если нет числовых операндов
         BNE     5         ; то - идти на 5;
         MOVB    (R5)+,R0  ; символ из буфера в R0;
         EMT     117       ; напечатать на принтере;
         RET               ; возврат;

    Как действует EMT 177, из примера понятно, но в  добавление
можно заметить, что стек при этом может иметь  любое  значение;
при вызове EMT 177 востанавливается значение, бывшее  до  пере-
дачи управления команде.

133 - если содержимое R1 меньше трех, то выдается сообщение:
       ОШИБКА ОП.


    ГЛАВА ПОСЛЕДНЯЯ, из которой Вы узнаете о планах автора.
    ───────────────────────────────────────────────────────

    В данной инструкции описаны лишь только наиболее  необходи-
мые EMTы, а многие ценные остались за ее  рамками:  такие,  как
передача в запускаемую программу  РОНов,  трассировка  машинной
инструкции, и т.д. С ними Вы разберетесь сами,  если  возникнет
необходимость.
    Но помните, что не допускается выполнять в командах трасси-
ровки EMTы самой системы RARADISE. Это объясняется особенностью
написания мною системного EMT-диспетчера  и  может  привести  к
страшным последствиям. Вообще, сразу замечу, что  в  результате
выбранных алгоритмов работают некорректно:
- команда IM с инструкциями типа RET, JMP, BR,..,  а  также  в
   некоторых случаях JSR RN,.. ( при MD=XX0XXX ). Это  происхо-
   дит потому, что исполняемая команда помещается в буфер,  где
   она должна исполняться. При этом старое значение  PC  сохра-
   няется, а новое значение принимает адрес буфера.  После  вы-
   полнения инструкции старое значение PC  востанавливается  из
   стека, где оно могло быть испорчено исполняемой командой;
- команды трассировки при нестандартном  использовании  стека,
   т.е. при обращении к его элементам через отрицательное  сме-
   щение. Это происходит из-за того,  что  выполнение  машинной
   инструкции производится на стеке пользователя с  использова-
   нием прерывания по T-разряду.

    В настоящий момент автор собирается приступить к  написанию
новой версии: PARADISE V2.0. Я планирую  коренным  образом  из-
менить структуру системы:

   - отказатся от использования EMT;
   - ввести оверлейную структуру;
   - ввести работу с метками в файле типа .OBJ;
   - постараться сделать экранное редактирование как в  тексто-
     вом редакторе (пересчет BR и JMP при вставке и удалении);
   - упорядочить работу с представлением чисел в форматах;
   - сделать систему самонастраиваемой на пользователя;
   - ввести возможность работы в среде RT-11 и ОСБК11;
   - для БК11 работа системы в теневой странице;
   - организовать многооконный интерфейс;
   - значительно расширить возможности трассировки;
   - и еще многое другое...

    Перспективы развития системы зависят от Вашего спроса и Ва-
шей в ней необходимости.



          Вам желает удачи КЛИМЕНКОВ СЕРГЕЙ -

                   197198,  г.Санкт-Петербург
                  ул. Введенская д. 19 кв. 34.

*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*
║ КОММЕРЧЕСКОЕ РАСПРОСТРАНЕНИЕ ПАКЕТА БЕЗ РАЗРЕШЕНИЯ АВТОРА ║
*                 В О С П Р Е Щ Е Н О  ! ! !                *
║ ТЕ,  КТО ПОЛУЧИЛ ПАКЕТ У СВОЕГО ДРУГА,  ПОСТАВЬТЕ СЕБЯ НА ║
* МЕСТО АВТОРА, ПОЙМИТЕ, СКОЛЬКО СИЛ БЫЛО ОТДАНО ПРОГРАММЕ, *
║ НЕ ПОЛЕНИТЕСЬ  -  СХОДИТЕ НА ПОЧТУ  И ОТПРАВЬТЕ АВТОРУ ТУ ║
* СУММУ, В КОТОРУЮ ВЫ  С А М И  ОЦЕНИВАЕТЕ ЕГО ТРУДЫ, И ЖЕ- *
║ ЛАНИЕ ПОМОЧЬ ВАМ.                                         ║
*                                                           *
║                       Привет !                            ║
*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*═*




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 29.3.2024, 4:58