https://emuverse.ru/w/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%9D%D0%BE%D0%B2%D1%8B%D0%B5_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B&feed=atom&hideredirs=1&limit=50&offset=&namespace=0&username=&tagfilter=
Emuverse - Новые страницы [ru]
2024-03-29T08:23:43Z
Материал из Emuverse
MediaWiki 1.40.0
https://emuverse.ru/wiki/GRAFOR_DVK
GRAFOR DVK
2024-03-26T22:50:57Z
<p>Nzeemin: Новая страница: «{{ДИ|Источник=https://www.tis.kz/forum/topic.php?forum=28&topic=7#}} <pre> РУКОВОДСТВО ПО ПРИМЕНЕНИЮ СИСТЕМЫ ГРАФОР ДВК. Вторая редакция Белоножкин А.Н. ГГУ сл.тел. 65-75-23...»</p>
<hr />
<div>{{ДИ|Источник=https://www.tis.kz/forum/topic.php?forum=28&topic=7#}}<br />
<pre><br />
<br />
РУКОВОДСТВО ПО ПРИМЕНЕНИЮ СИСТЕМЫ<br />
ГРАФОР ДВК.<br />
<br />
<br />
Вторая редакция<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Белоножкин А.Н.<br />
<br />
ГГУ<br />
<br />
сл.тел. 65-75-23<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Нижний Новгород<br />
<br />
1990 год<br />
<br />
<br />
<br />
<br />
<br />
А Н Н О Т А Ц И Я<br />
<br />
Описана реализация пакета ГРАФОР для ЭВМ типа ДВК под<br />
управлeнием операционной системы RT11. Разобран порядок работы<br />
в системе, даны примеры и справочный материал по использованию<br />
конкретной версии пакета.<br />
<br />
<br />
<br />
<br />
<br />
<br />
С О Д Е Р Ж А Н И Е<br />
<br />
стр.<br />
От автора ................................................ 3<br />
<br />
1. Для чего это нужно? ...................................... 4<br />
<br />
2. Как этим пользоваться? ................................... 5<br />
2.1 Настройка системы (инициализация) ................... 5<br />
2.2 Написание и запуск программы ........................ 5<br />
2.3 Получение рисунка ................................... 6<br />
<br />
3. Подробности для любознательных ........................... 8<br />
3.1 Три интерфейса в ГРАФОРе ............................ 8<br />
3.2 Форматы представления данных ........................ 8<br />
3.3 Роль и назначение системных компонент ГРАФОРа ....... 9<br />
3.4 Экранно-ориентированный вывод информации ............ 9<br />
<br />
4. Возможные причины неработоспособности пакета ............. 11<br />
<br />
Литература ............................................... 12<br />
<br />
Приложения:<br />
I Изменения в ГРАФОРе ................................. 13<br />
II Драйверы и их возможности ........................... 14<br />
III Особенности графики для печати ...................... 17<br />
IV Дистрибутивы: их имена и место в системе ............ 18<br />
V Перечень подпрограмм ГРАФОРа ........................ 19<br />
VI КЦГД: дозагружаемый графический интерпретатор ....... 27<br />
VII КЦГД: дозагружаемые коды клавиатуры ................. 28<br />
<br />
<br />
- 3 -<br />
<br />
<br />
От автора.<br />
<br />
Данное описание не претендует на полное описание пакета<br />
ГРАФОР, операционной системы, графических устройств и т.п.<br />
Здесь Вы найдете лишь описание того, что является "особенным"<br />
в реализации ГРАФОРа на ДВК.<br />
<br />
Первый раздел рекомендуется тем, кто интересуется<br />
возможностями ГРАФОРа ДВК. Второй предназначен для тех, кто уже<br />
приобрел пакет и собирается получить первые рисунки (здесь<br />
могут буть полезны приложения I, V). Третий раздел содержит<br />
наиболее подробную информацию о функционировании пакета. В<br />
приложениях Вы найдете справочную информацию, снабженную<br />
комментариями.<br />
<br />
Автор будет рад получить Ваши замечания, предложения,<br />
дополнения по работе пакета. Обращайтесь либо напрямую, либо<br />
через "Диалог"; все Ваши проблемы будут рассмотрены и по<br />
возможности устранены в кратчайшие сроки.<br />
<br />
<br />
- 4 -<br />
<br />
<br />
1. Для чего это нужно?<br />
<br />
Система ГРАФОР предназначена для графического представления<br />
результатов инженерных вычислений и, согласно своему назначению,<br />
позволяет строить графики, гистограммы, карты изолиний, проекции<br />
поверхностей, применять методы сплайн-интерполяции, сглаживать<br />
экспериментальные данные, производить афинные преобразования и<br />
экранирование, выполнять геометрические вычисления и т.д.<br />
Подробнее обо всем этом изложено в [1]. Целью же этого<br />
руководства являлось более подробное описание конкретной<br />
реализации ГРАФОРа на машинах типа ДВК.<br />
<br />
ГРАФОР - это достаточно громоздкая система, что до<br />
некоторого времени сдерживало его распространение на микро-ЭВМ.<br />
Первым прорывом в этой области можно считать появление ГРАФОРа<br />
на персональных ЭВМ типа IBM PC, что опиралось на возросшую<br />
вычислительную мощность, об'ем памяти и появление винчестеров.<br />
Аналогичная тенденция наблюдается и в семействе микро-ЭВМ типа<br />
ДВК.<br />
<br />
ГРАФОР адаптирован на ДВК под управлением операционной<br />
системы RT11(SJ) (не младше версии 05.00), что позволило<br />
реализовать высокий уровень удобства работы с пакетом. Это<br />
обеспечивается поддержкой следующих воможностей:<br />
<br />
- создание промежуточного текстового файла рисунка;<br />
- вывод рисунка на экран монитора;<br />
- Print_Screen (печать кадра "точка в точку" с возможностью<br />
выбора типа печатающего устройства и плотности печати);<br />
- графическая печать рисунка с сохранением его линейных<br />
размеров;<br />
- вывод рисунка на графопостроитель.<br />
<br />
На данный момент в систему включена поддержка следующих<br />
устройств вывода графической информации:<br />
<br />
- контроллеры КГД и КЦГД;<br />
- принтеры EPSON FX-800, ROBOTRON 6362, D100M, CM6337 и<br />
другие EPSON-совместимые печати;<br />
- графопостроители НЕЙРОН ИС.61, POLTIK.<br />
<br />
Данная версия ГРАФОРа эксплуатируется около года и<br />
зарекомендовала себя как надежная, удобная и простая в<br />
обращении система.<br />
<br />
В перспективе ведутся работы по переносу ГРАФОРа на ЭВМ<br />
ЭЛЕКТРОНИКА-85 и расширение номенклатуры графической периферии<br />
ДВК.<br />
<br />
<br />
- 5 -<br />
<br />
<br />
2. Как этим пользоваться?<br />
<br />
2.1 Настройка системы (инициализация)<br />
<br />
Для нормальной работы с ГРАФОРом, после загрузки операционной<br />
системы Вы должны подготовить системные компоненты ГРАФОРа к<br />
работе. Для этого необходимо выполнить следующие команды:<br />
<br />
R GS.SYS - загрузка графического интерпретатора в<br />
КЦГД,<br />
<br />
LOAD TT - необходимо для реализации Print_Screen.<br />
<br />
Их можно отдать с клавиатуры или поместить в любой командный<br />
файл, в частности, в STARTS.COM. В последнем случае, системные<br />
компоненты ГРАФОРа включатся во время загрузки операционной<br />
системы.<br />
<br />
2.2 Написание и запуск программы.<br />
<br />
Для того, чтобы получить рисунок, Вы должны написать<br />
программу на ФОРТРАНе. Программа обязательно должна содержать<br />
следующие строки:<br />
<br />
.<br />
.<br />
CALL GRINIT<br />
CALL PAGE(XL,YL,NAME,NNAME,J)<br />
.<br />
.<br />
.<br />
CALL ENDPG(NAME,NNAME)<br />
.<br />
.<br />
<br />
Ее можно набрать в любом текстовом редакторе. Например,<br />
Вы создали файл TEST.FOR, содержащий:<br />
<br />
PROGRAM TEST<br />
DIMENSION X(100),Y(100),Z(100)<br />
<br />
C Заполнение массивов X,Y,Z<br />
<br />
X(1)=-1.9<br />
Y(1)=SIN(-1.9)<br />
Z(1)=COS(-1.9)*1.5<br />
DO 5 I=2,90<br />
X(I)=X(I-1)+.1<br />
Y(I)=SIN(X(I))<br />
5 Z(I)=COS(X(I))*1.5<br />
XMN=-2.0<br />
AMN=-2.0<br />
XMX=7.0<br />
AMX=2.0<br />
UX=1.0<br />
<br />
<br />
- 6 -<br />
<br />
<br />
UY=0.8<br />
KX=0<br />
KY=0<br />
M=0<br />
CALL GRINIT !Инициализация GRAFOR<br />
CALL PAGE(19.,10.,' ',-1,0) !Открытие страницы PAGE<br />
<br />
CALL REGION(0.,0.,19.,10.,,0,1)<br />
CALL LIMITS(XMN,XMX,AMN,AMX)<br />
CALL AXES(6HAXIS X,6,UX,KX,6HAXIS Y,6,UY,KY,M)<br />
CALL LINEMO(X,Y,85,2,10)<br />
CALL LINEMO(X,Z,85,14,15)<br />
<br />
CALL ENDPG(,0) !Закрытие страницы PAGE<br />
<br />
END<br />
<br />
После этого, Вы должны его оттранслировать командой<br />
<br />
FORTRAN TEST<br />
<br />
и получить загрузочный модуль командой<br />
<br />
LINK TEST,GR01/BOT:2000,<br />
<br />
где GR01.OBJ - базовый файл ГРАФОРа, а ключ /BOT необходим для<br />
отведения места программе под стек.<br />
Далее программу можно запустить на счет командой<br />
<br />
RUN TEST<br />
<br />
На экране появится запрос:<br />
<br />
Device or file_name?<br />
<br />
на что Вы можете ответить:<br />
а) <ВК> или GS: - вывод рисунка на экран<br />
б) FILNAM - вызовет создание файла FILNAM.PIC на DK:<br />
в) GP: - вывод рисунка на графопостроитель<br />
<br />
2.3 Получение рисунка.<br />
Пользуясь описываемой системой, Вы имеете возможность<br />
получить в любой момент времени твердую копию экрана на<br />
принтере. Для этого Вам необходимо нажать на клавиатуре<br />
клавишу <ПЕЧАТЬ КАДРА>, или комбинацию <СУ> А. Это наиболее<br />
быстрый способ, но он не сохраняет масштаб изображения. При<br />
необходимости, можно получить масштабное изображение на печати<br />
командой<br />
<br />
RUN PS FILNAM ,где<br />
<br />
FILNAM.PIC - результат работы Вашей программы.<br />
<br />
<br />
- 7 -<br />
<br />
<br />
Получить рисунок на графопостроителе можно двумя способами:<br />
либо указав имя драйвера GP: в ответ на запрос Вашей программы<br />
<br />
Device or file_name?<br />
<br />
либо командой<br />
<br />
COPY FILNAM.PIC GP:<br />
<br />
<br />
- 8 -<br />
<br />
<br />
3. Подробности для любознательных.<br />
<br />
3.1 Три интерфейса в ГРАФОРе.<br />
<br />
При внимательном рассмотрении, в ГРАФОРе можно обнаружить<br />
четыре логически завершенных уровня и три интерфейса между<br />
ними. Схематично это можно изобразить следующим образом:<br />
<br />
1) Самым верхним является уровень программы пользователя.<br />
Интерфейсом между ней и подпрограммами ГРАФОРа является<br />
механизм вызова подпрограмм на ФОРТРАНе.<br />
<br />
2) Подпрограммы ГРАФОРа преобразуют всю поступающую к ним<br />
информацию в команды виртуального графического устройства, что<br />
и является интерфейсом между ГРАФОРом и драйверами графических<br />
устройств.<br />
<br />
3) Третьим и последним интерфейсом является интерфейс между<br />
драйвером и внешним устройством. По сути, он совпадает или<br />
является подмножеством интерфейса внешнего устройства.<br />
<br />
Преобразование информации в ГРАФОРе осуществляется в<br />
несколько этапов. Сначала Вы должны из программы на ФОРТРАНе<br />
обратиться к подпрограммам ГРАФОРа, ГРАФОР преобразует эти<br />
вызовы в команды виртуальному графическому устройству. На этом<br />
этапе их можно получить в виде обычного текстового файла с<br />
расширением / .PIC /. Далее драйвер преобразует этот файл к<br />
интерфейсу внешнего устройства (ВУ). Здесь уже учитываются<br />
конкретные технические характеристики ВУ, такие как размер поля<br />
вывода, разрешающая способность, число цветов и т.п. На выходе<br />
Вы получаете готовый рисунок.<br />
<br />
3.2 Форматы представления данных.<br />
<br />
На уровне вызова подпрограмм ГРАФОРа, форматы данных<br />
совпадают, с точностью до приложения I, с описанием, данным<br />
в [1].<br />
<br />
Между ГРАФОРом и драйверами в передаче данных приняты<br />
следующие соглашения:<br />
а) виртуальное графическое устройство является векторным;<br />
б) виртуальное графическое устройство обладает способностью<br />
генерировать прямую линию;<br />
в) информация о перемещении пера передается к устройству в<br />
виде целого числа шагов. Исходно принято, что устройство<br />
имеет разрешение 200 шагов на сантиметр;<br />
г) устройство может отрабатывать следующие команды:<br />
H -Home- начальная установка устройства,<br />
B X,Y -Base- выбор точки (X,Y) в качестве начала<br />
отсчета,<br />
M X,Y -Move- перемещение пера в точку (X,Y),<br />
D X,Y -Draw- перемещение пера в точку (X,Y)<br />
с рисованием,<br />
J N -Pen - выбор пера (цвета).<br />
<br />
<br />
- 9 -<br />
<br />
<br />
На внешнее устройство данные поступают в его "родном"<br />
формате, и лучшее, что в данном случае можно сделать, это<br />
отослать Вас к его техническому описанию.<br />
<br />
3.3 Роль и назначение системных компонент ГРАФОРа.<br />
<br />
С самого начала, ГРАФОР ДВК задумывался как система,<br />
ориентированная на пользователя. Это повлекло за собой<br />
некоторые изменения как в самом ГРАФОРе, так и создание<br />
определенного сервиса на уровне драйверов операционной<br />
системы. Отправной точкой развития ГРАФОРа для ДВК явились<br />
контроллеры КГД и КЦГД. Под них и были созданы две версии<br />
экранной графики и функции Print_Screen (копия экрана на<br />
печать).<br />
<br />
На машинах с КГД драйвер GS.SYS необходим для получения<br />
рисунка, а TT.SYS, кроме его обычных функций, еще и для<br />
получения твердой копии экрана на печати.<br />
<br />
На машинах с КЦГД драйвер GS.SYS, как и в системах с КГД,<br />
соответствует графическому выводу на экран, кроме того, в нем<br />
есть программа загрузки в КЦГД интерпретатора графических<br />
команд (R GS.SYS). TT.SYS необходим для функционирования<br />
Print_Screen. Причем, он во время загрузки операционной системы<br />
дозагружает в КЦГД ряд кодов клавиш, которые используются<br />
редакторами текстов и клавишу <ПЕЧАТЬ КАДРА> кодом ^A.<br />
<br />
На обеих системах, Print_Screen работает только если TT.SYS<br />
загружен в память командой<br />
<br />
LOAD TT<br />
<br />
При этом он перехватывает код ^A, интерпретируя его как команду<br />
печати экрана, если же его выгрузить из памяти (сделать<br />
нерезидентным), то он ничем не будет отличаться от обычного<br />
драйвера терминала.<br />
<br />
3.4 Экранно-ориентированный вывод информации.<br />
<br />
В случае, если весь графический вывод осуществляется на<br />
экран и разработчику прикладной программы не желательно<br />
передавать пользователю системные компоненты ГРАФОРа, он может<br />
вопользоваться библиотекой базовых примитивов с именем<br />
<br />
GR01TT.OBJ<br />
<br />
в которой не содержится обращений к драйверам. Эта библиотека<br />
по вызовам подпрограмм целиком совпадает с GR01.OBJ, за<br />
исключением того, что в ней есть подпрограмма печати экрана.<br />
Этой подпрограммой можно воспользоваться из программы на<br />
фортране написав вызов<br />
<br />
CALL GRAPRI(MODE)<br />
<br />
<br />
<br />
- 10 -<br />
<br />
<br />
MODE определяет тип печатающего устройства и плотность печати:<br />
<br />
код плотность тип принтера<br />
<br />
MODE = -1 - D100<br />
0 60 EPSON<br />
1 120 EPSON<br />
2 120 EPSON<br />
3 240 EPSON<br />
4 80 EPSON<br />
5 72 EPSON<br />
6 90 EPSON<br />
7 144 EPSON<br />
<br />
<br />
- 11 -<br />
<br />
<br />
4. Возможные причины неработоспособности пакета.<br />
<br />
Проверяйте количество и тип параметров в вызовах<br />
подпрограмм.<br />
<br />
На стадии сборки задачи программой LINK не забывайте:<br />
<br />
а) Имена графических библиотек в командной строке должны<br />
следовать в порядке их вызова (самая низовая - в конце);<br />
б) ГРАФОР имеет большую вложенность подпрограмм; используйте<br />
ключ /BOT для увеличения области, резервируемой под<br />
стек;<br />
в) Размер графических библиотек большой, пользуйтесь ключем<br />
/SLOWLY.<br />
<br />
<br />
- 12 -<br />
<br />
<br />
Л И Т Е Р А Т У Р А<br />
<br />
1. Ю.М.Баяковский, В.А.Галактионов, Т.Н.Михайлова "Графор.<br />
Графическое расширение фортрана", М.,"Наука", 1985 г.<br />
2. Контроллер КГД. Техническое описание.<br />
3. Контроллер КЦГД. Техническое описание.<br />
4. Описание операционной системы RT-11. Программирование<br />
драйверов внешних устройств.<br />
5. EPSON FX-800. Техническое описание.<br />
6. НЕЙРОН ИС.61. Техническое описание.<br />
7. POLTIK. Техническое описание.<br />
<br />
<br />
- 13 -<br />
<br />
<br />
Приложение I<br />
<br />
Изменения в ГРАФОРе.<br />
<br />
В связи с адаптацией ГРАФОРа на ДВК были изменены<br />
следующие подпрограммы пакета:<br />
<br />
GRINIT производит инициализацию пакета.<br />
<br />
PAGE (XL,YL,NAME,N,J) открывает страницу<br />
XL,YL - размеры страницы<br />
NAME - название страницы<br />
N - число литер названия страницы<br />
N>0 страница подписывается и будет выведена<br />
в файл с именем NAME<br />
N=0 страница не подписывается,<br />
автоматически генерируются имена на DK:<br />
GR1.PIC, GR2.PIC, ...<br />
N<0 страница подписывается, имя файла<br />
запрашивается с терминала<br />
<ВК> направляет вывод на экран<br />
<br />
Если имя файла содержит только имя устройства, то на нем<br />
автоматически генерируются имена GR1.PIC, GR2.PIC, GR3.PIC ...,<br />
при условии, что не было перезагрузки программы в ОЗУ.<br />
<br />
J - признак очерчивания рамки<br />
J>0 рамка очерчивается, выводится дата создания<br />
J=0 рамка не очерчивается, дата не выводится<br />
J<0 рамка очерчивается, дата не выводится<br />
<br />
ENDPG(NAME,N) закрывает страницу<br />
NAME - подпись по линии отрыва<br />
N - число литер подписи<br />
N>0 подписывается и перо уводится к началу<br />
следующей страницы<br />
N=0 не подписывается, перо возвращается к<br />
началу текущей страницы<br />
N<0 подписывается, перо возвращается к<br />
началу текущей страницы<br />
<br />
PEN(J) производит смену пера (цвета)<br />
<br />
SET(J) устанавливает набор литер для подпрограммы SYMBOL:<br />
SET(0) набор больших русских и латинских букв<br />
SET(1) набор маленьких русских и латинских букв<br />
SET(2) набор греческих больших букв<br />
SET(3) набор греческих маленьких букв<br />
дополнительно введены:<br />
SET(4) набор латинских больших и маленьких букв<br />
SET(5) набор русских больших и маленьких букв<br />
<br />
<br />
- 14 -<br />
<br />
<br />
Приложение II<br />
<br />
Драйверы и их возможности.<br />
<br />
Назначение драйвера заключается в преобразовании интерфейса<br />
виртуального графического устройства (информации из пакета<br />
ГРАФОР) в команды конкретному устройству. В данном приложении<br />
описаны SET параметры драйверов и их назначение.<br />
<br />
Во время работы программы, ГРАФОР "не знает" для какого<br />
графического устройства подготавливаются данные. Поэтому,<br />
возникла необходимость в промежуточном интерфейсе виртуального<br />
графического устройства. Подробно он описан в 3.2, здесь же<br />
только напомним, что цифровая информация из ГРАФОРа передается<br />
целым числом шагов виртуального устройства. Ввиду того, что<br />
разрешающая способность реального графопостроителя редко выше<br />
100 шагов на сантиметр, было принято, при передаче данных,<br />
разрешение в 200 шагов на сантиметр. При необходимости, эта<br />
характеристика может быть изменена.<br />
<br />
Со стороны ФОРТРАНа она хранится в<br />
<br />
COMMON /GFTAB/ IRDB(5),RDB(17)<br />
в элементе<br />
RDB(17)<br />
(см. также RDB(1); табл.1 стр.12 [1])<br />
<br />
Со стороны драйвера ее можно изменить пользуясь командой<br />
<br />
SET <имя драйвера> NV=<число><br />
<br />
Изначально в драйвере, как и в библиотеке, принято разрешение<br />
200 шагов на сантиметр, что обеспечивает масштабную передачу<br />
изображений. При необходимости, механизмом SET параметров<br />
можно воспользоваться для изменения размеров рисунка,<br />
например:<br />
<br />
SET <имя драйвера> NV=400<br />
<br />
вызовет уменьшение всех линейных размеров в два раза.<br />
<br />
Драйвер <GS:> производит пересчет координат линий рисунка<br />
в координаты точек на экране. При этом может оказаться, что<br />
рисунок получился больше размеров электронно лучевой трубки(ЭЛТ)<br />
т.е. некоторые координаты точек вышли за рамки допустимых<br />
значений (например, размер экрана КЦГД 240х800 точек). Такие<br />
точки в процессе рисования отсекаются. Если Вам необходимо<br />
посмотреть часть рисунка, находящуюся вне поля зрения, Вы<br />
можете "переместить" Ваш экран (поле зрения), а точнее точку<br />
его левого нижнего угла, в любое место сгенерированной картинки.<br />
Если, например, у вас получилась картинка в два раза выше<br />
размера экрана, т.е. имеет размер 480х800 точек, то Вы увидите<br />
на экране лишь нижнюю ее часть. Чтобы посмотреть верхнюю часть,<br />
необходимо командами<br />
<br />
<br />
- 15 -<br />
<br />
<br />
SET GS: X0=0 < не обязательно ><br />
SET GS: Y0=240<br />
<br />
установить поле зрения "повыше" и заново скопировать рисунок на<br />
<GS:>.<br />
<br />
В настоящее время, в наличии имеются следующие драйверы:<br />
<br />
1) GSKCGD.SYS - драйвер для КЦГД, имеет следующие SET параметры:<br />
<br />
SET GS NV=decimal_value<br />
задает число шагов виртуального устройства на сантиметр<br />
SET GS X0=decimal_value<br />
SET GS Y0=decimal_value<br />
задает начало отсчета в точках на экране ЭЛТ (графика КЦГД<br />
работает с разрешением 240х800 точек)<br />
SET GS [NO]HOME<br />
[запрещает]разрешает очистку экрана перед началом вывода<br />
рисунка;<br />
<NO HOME> реализует режим наложения рисунков.<br />
SET GS INIT<br />
производит инициализацию драйвера<br />
SET GS PRINT<br />
производит настройку на тип печати для Print_Screen.<br />
<br />
2) GSKGD.SYS - драйвер для КГД, имеет следующие SET параметры:<br />
<br />
SET GS INIT<br />
производит инициализацию драйвера<br />
SET GS NV=decimal_value<br />
задает число шагов виртуального устройства на сантиметр<br />
SET GS X0=decimal_value<br />
SET GS Y0=decimal_value<br />
задает начало отсчета в точках на экране ЭЛТ (графика КГД<br />
работает с разрешением 286х400 точек)<br />
SET GS INFORM<br />
выводит на экран справочное сообщение<br />
<br />
3) GPN.SYS - драйвер для графопостроителя НЕЙРОН ИС.61<br />
<br />
SET GP NV=decimal_value<br />
задает число шагов виртуального устройства на сантиметр<br />
SET GP [NO]PEN<br />
[запрещает]разрешает смену пера на графопостроителе<br />
SET GP [NO]QUIET<br />
[запрещает]разрешает выдачу запроса на экран перед каждой<br />
отработкой команды смены пера<br />
<br />
4) GPP.SYS - драйвер для графопостроителя POLTIK<br />
<br />
SET GP [NO]PEN<br />
[запрещает]разрешает смену пера на графопостроителе<br />
SET GP [NO]QUIET<br />
[запрещает]разрешает выдачу запроса на экран перед каждой<br />
отработкой команды смены пера<br />
<br />
<br />
- 16 -<br />
<br />
SET GP NV=decimal_value<br />
задает число шагов виртуального устройства на сантиметр<br />
SET GP [NO]SWAXY<br />
[запрещает]разрешает поворот рисунка на 90 градусов<br />
<br />
<br />
- 17 -<br />
<br />
<br />
Приложение III<br />
<br />
Особенности графики для печати.<br />
<br />
Точную копию рисунка на печати Вы можете получить<br />
воспользовавшись программой PS.SAV. Последовательность действий<br />
может выглядеть следующим образом:<br />
<br />
.RUN PS<br />
*FILNAM<br />
<br />
где FILNAM - файл рисунка, с полным именем FILNAM.PIC. По<br />
истечении 3-15 секунд принтер должен начать печатать Ваш<br />
рисунок. Эта программа ориентирована на EPSON-совместимые<br />
принтеры.<br />
<br />
Еще один способ получения напечатанного рисунка - это<br />
использование функции Print_Screen. Эта функция реализована на<br />
системном уровне. Для ее нормальной работы, необходимо<br />
выполнение следующих условий:<br />
1) драйвер TT.SYS должен быть загружен в память<br />
2) должна быть произведена настройка на тип Вашего принтера.<br />
В системе с КЦГД это достигается командой<br />
<br />
SET GS PRINT<br />
<br />
после чего Вы нажатием соответсвующих цифр должны выбрать<br />
тип принтера<br />
<br />
В системе с КГД настройка осуществляется командой<br />
<br />
R TT.SYS<br />
<br />
В обоих случаях загруженный драйвер TT.SYS перехватывает код ^A,<br />
интерпретируя его как команду печати экранного ОЗУ.<br />
<br />
Каждый из этих двух способов печати рисунка обладает своими<br />
преимуществами и недостатками. Программа PS.SAV требует файл<br />
рисунка, EPSON-совместимый принтер, работает как независимое<br />
задание, но с ее помощью можно получить неискаженные рисунки.<br />
Преимуществами Print_Screen является оперативность, возможность<br />
настроить его на конкретный принтер, он не требует файла<br />
рисунка, но при этом не соблюдается масштаб.<br />
<br />
Образно говоря, Print_Screen рекомендуется для получения<br />
"черновых" рисунков, а PS.SAV - для "чистовых".<br />
<br />
<br />
- 18 -<br />
<br />
<br />
Приложение IV<br />
<br />
Дистрибутивы: их имена и место в системе.<br />
<br />
На поставляемых Вам дискетах Вы обнаружите все или некоторые<br />
из следующих файлов:<br />
<br />
TT .SYS рабочие драйверы<br />
GS .SYS<br />
<br />
TTKGD .SYS комплект драйверов для КГД; перед использованием<br />
GSKGD .SYS Вы должны их переименовать в TT.SYS и GS.SYS<br />
соответственно<br />
<br />
TTKCGD.SYS тоже для контроллера КЦГД<br />
GSKCGD.SYS<br />
<br />
GPN .SYS драйвер графопостроителя НЕЙРОН ИС.61, перед<br />
использованием должен быть переименован в<br />
GP.SYS, использует параллельный порт ЭВМ.<br />
<br />
GPP .SYS тоже для графопостроителя POLTIK, использует<br />
плату параллельного интерфейса<br />
VECTOR=074, CSR=177554<br />
<br />
TEST .FOR тестовый пример на фортране<br />
<br />
GR01 .OBJ основная библиотека ГРАФОРа, должна быть<br />
пристыкована к любой графической задаче<br />
<br />
GR01TT.OBJ тоже, без обращения к драйверам (вывод жестко<br />
закреплен за экраном)<br />
<br />
GR2 .OBJ имена библиотек ГРАФОРа<br />
GR3 .OBJ<br />
GR4 .OBJ<br />
GR6 .OBJ<br />
GR61 .OBJ<br />
GR7 .OBJ<br />
GR8 .OBJ<br />
GR9 .OBJ<br />
GR10 .OBJ<br />
GR11 .OBJ<br />
GR12 .OBJ<br />
GR13 .OBJ<br />
GR14 .OBJ<br />
GR16 .OBJ<br />
<br />
<br />
- 19 -<br />
<br />
<br />
Приложение V<br />
<br />
Перечень подпрограмм ГРАФОРа.<br />
<br />
----------------------------------------------------------------<br />
Имя подпрограммы I Имя библиотеки<br />
----------------------------------------------------------------<br />
<br />
ADDLEV(C,NCN,IS,CAD,NAD) GR8<br />
ANGLER(DELX,DELY) GR6<br />
ANGRID(X0,Y0,XS,YS,M1,N1,SLOPE) GR13<br />
APPOLY (X,Y,RO,N,CFIT,K1,COF1) GR3<br />
ARC(X1,Y1,X2,Y2,X3,Y3,J) GR3<br />
ARC1(XS1,YS1,XF1,YF1,XC1,YC1,NCW) GR13<br />
ARCANG(R,DELX,DELY,J,TH0A,THFA) GR61<br />
ARCC1(XM,YM,XF,YF,J,R,JB) GR61<br />
ARCELA(A,B,ALPHA,TH0,THF) GR61<br />
ARCELB(A,B,ALPHA,XF,YF) GR6<br />
ARCIA(R,TH0,THF) GR13<br />
ARCIB(R,XF,YF,J) GR6<br />
ARCIC(XM,YM,XF,YF,J) GR6<br />
ARCID(XC,YC,PHI) GR6<br />
ARCOCC(R,XT1,YT1,XT2,YT2,J) GR61<br />
ARCOLC(R,XT1,YT1,XT2,YT2,J) GR61<br />
ARCOLL(R,XT1,YT1,XT2,YT2,J) GR61<br />
AREB1(TH0,THF,G,TH02,THF2) GR6<br />
ARRINL(X,Y,A,IX,IY,IXB,IXE,IYB,IYE,DX,DY,DZ,NL,NLBEG) GR11<br />
ARROW(J) GR6<br />
ASTEP(AN,AX,BS,MK,KD) GR1<br />
ATDX(Z,X,Y) GR14<br />
ATDX1(Z,X,Y) GR14<br />
ATDX2(Z,X,Y) GR14<br />
ATDX3(Z,X,Y) GR14<br />
ATDY(Z,X,Y) GR14<br />
ATDY1(Z,X,Y) GR14<br />
ATDY2(Z,X,Y) GR14<br />
ATDY3(Z,X,Y) GR14<br />
ATRAN2(A1,B1,C1,A2,B2,C2) GR2<br />
ATRST GR2<br />
AXES (NAMEX,NX,UX,KX,NAMEY,NY,UY,KY,M) GR1<br />
AXISC(NAME,NC,MMIN,MS,NM) GR3<br />
AXONOM(X,Y,Z) GR4<br />
BAR(X,Y,H,W,SH,IHAT,NP1) GR3<br />
BARS(Y,YP,N,W,IHAT,NP1) GR3<br />
BCD(A,IB,N) GR1<br />
BEGLEV GR2<br />
BITA(ITAGB,IXBD,IYBD,N1,N2,N5) GR8<br />
BLAN GR2<br />
BLANC(X,Y,N,IN) GR2<br />
BLANCH GR2<br />
BOUND(Z,M,N,X,Y,NX,NY,KX,KY,NF,XMI,XMA,YMI,YMA) GR14<br />
BOX (X,Y,XL,YL) GR1<br />
BRLINE(X,Y,N) GR8<br />
BROKEN (AN1,AN2,AN3,AN4) GR8<br />
BUFL(IXF,YFI,IBX,BYI,RMAX,RMIN) GR7<br />
<br />
<br />
- 20 -<br />
<br />
<br />
BYPASS(I) GR1<br />
CABIN(I) GR4<br />
CCNTL(CN,L,C) GR13<br />
CCNTRP(CN,P,C) GR13<br />
CELL(PHI,N1,N2) GR8<br />
CHENSP(YM,N,YH,K,C,M) GR3<br />
CILIND(R,HMN,HMX,NH,NFI,DX,DY,DZ,NLINES,NBEG) GR11<br />
CIRC(R) GR6<br />
CIRCLE (XA,YA,TH0,THF,R0,RF,L) GR2<br />
CIRTAC(R,XT,YT,J) GR61<br />
CIRTAL(R,XT,YT,J) GR61<br />
CMGRID(X,Y,N1,N2,MX,MY,SZ,KP,M,N,IKOP) GR8<br />
CMLC(LM,C1,C2) GR13<br />
CMS GR1<br />
CNCTCC(C1,C2,R,N) GR12<br />
CNCTCL(C,L,R,N) GR12<br />
CNCTLL(L1,L2,R,N) GR12<br />
CONDEK(LX,LY,X,Y,Z,STEP,K0,N,C) GR9<br />
COORD (CO,J) GR2<br />
COORDT(DX,DY,DZ,NLINES,N1,N2,NCLUST,NLNDR,ITYP) GR11<br />
COPCHR(C,A) GR0<br />
CORNL (LXI1,LX1,LYJ1,LY1,K1,M1,K2,M2,X,Y,A,LXX,<br />
LYY,XF1,YF1,RMAX,RMIN) GR7<br />
COSIN1(X1,Y1,X2,Y2) GR10<br />
COSIN2(X1,Y1,X2,Y2) GR10<br />
CPPP(P1,P2,P3,C) GR13<br />
CROSS(X,Y,J) GR61<br />
CROSSP(X,Y,RC,T) GR11<br />
CTCCP(C1,C2,P,N) GR12<br />
CTCPP(P1,P2,C,N) GR13<br />
CTLLL(L1,L2,L3,M) GR12<br />
CTLLP(L1,L2,P,N) GR12<br />
CTLPP(P1,P2,L1,N) GR12<br />
CUBPOL (X1,X2,Y1,Y2,DY1,DY2,B) GR3<br />
CXYR(X,Y,R,C) GR12<br />
DASHP(X,Y,DL) GR2<br />
DDIST(X,Y) GR61<br />
DERIV5 (DX,Y,N,I) GR3<br />
DIMDRO(D,J) GR6<br />
DIMET GR4<br />
DIST(J) GR6<br />
DRACON(LX,LY,X,Y,Z,STEP,K,N,C,FUNX,FUNY) GR9<br />
DRALIM(LX,LY,X,Y,FUNX,FUNY,S) GR9<br />
DRAWEL(T,I) GR11<br />
DRAWTE GR11<br />
DRFRAM(LX,LY,X,Y,FUNX,FUNY) GR9<br />
DRW(DX,DY,DZ,NLINES,NL1,NL2) GR11<br />
DRWHL(DX,DY,DZ,NLINES,NL1,NL2) GR11<br />
ELIPS (X0,Y0,A,B,ALPHA,THETO,THETF) GR1<br />
ELPS(A,B,ALPHA) GR6<br />
ENDLEV GR2<br />
ENDPG(NUMB,LENN) GR0<br />
EXMIMA (Z,M,N,ZMI,ZMA) GR14<br />
EXTLN(X,Y,Z,G) GR11<br />
EXTREM(R,T,N1,N2,XMN,XMX,YMN,YMX,IKOP) GR8<br />
<br />
<br />
- 21 -<br />
<br />
<br />
EXUDE(Z,M,N,X,Y,NX,NY,KX,KY,NF,MRKA,MRKI,KD,H,TH) GR14<br />
FATARC(R,XF,YF,J,D) GR6<br />
FATLIN(XF,YF,D) GR6<br />
FINAL GR0<br />
FNROOT(LX,LY,X,Y,Z,NROOTS,ROOT) GR9<br />
FORFIT (M,A,B,XBEG,XEND,MPTS) GR3<br />
FORIF (FUN,N,M,A,B,IER) GR3<br />
FORIT (FNT,N,M,A,B,IER) GR3<br />
FULL GR8<br />
GFFALS(N) GR2<br />
GRAFER(IT) GR9<br />
GRID (X,Y,XS,YS,M,N) GR1<br />
GRINIT GR0<br />
HALLNE(DX,DY,DZ,NLINES,N1,N2,NCLUST,NLNDR,G,TOL,ITYP) GR11<br />
HALOED(DX,DY,DZ,NLINES,NDRAW1,NDRAW2,NC1,NC2,<br />
NCLUST,NLNDR,G1,TOL1,ITYP) GR11<br />
HCIND(X,IST,IFN,EL) GR4<br />
HCINIT(A) GR11<br />
HCINV(X,Y,Z,XP,YP,ZP) GR4<br />
HCLINE(X,Y,NP) GR4<br />
HCMULT(A,B) GR4<br />
HCNCOR(X,Y,Z,T) GR11<br />
HCNCRD(X,Y,Z) GR4<br />
HCPRSP(H) GR4<br />
HCROT1(X,Y,Z) GR4<br />
HCSURF(X,Y,Z,NROW,NCOL,ISTA,IFN,JSTA,JFN,LNT,MOVX,<br />
MOVY,AMXMN,AR) GR4<br />
HCUNIT(A) GR4<br />
HISTGM(X0,DX,Y0,YV,N,NP1) GR3<br />
HLDLN(DX,DY,DZ,NLINES,I,NC1,NC2,NCLUST,NLNDR,ITYP) GR11<br />
IBCD(IRI,IB) GR1<br />
IDENT(MD,ND) GR0<br />
ILIMTN(L,IR,IBOUND,NB) GR10<br />
INCHES GR1<br />
INCLIN (XBEG,DXEX,JX,Y,N,NM,JS) GR3<br />
INIT GR4<br />
INSDEK(LX,LY,X,Y,Z) GR9<br />
INSIDE(LX,LY,X,Y,Z,FUNX,FUNY) GR9<br />
INTRSC(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X0,Y0) GR7<br />
ISOLIN(N1,N2,X,Y,PHI,ITAGB,NA,IXBD,IYBD,KC,CONT,IKOP) GR8<br />
ISOMET GR4<br />
ITALIC(J) GR1<br />
ITPLBV(LX,LY,X,Y,Z,N,U,V,W) GR9<br />
IVEST (A,B,EPS) GR6<br />
IZFLIN(Z,M,N,X,Y,ZIZ,L,NX,NY,KX,KY,NF,XI,YI,NL) GR14<br />
IZLIN(Z,M,N,X,Y,ZMI,ZIZ,NIZ,NX,NY,KX,KY,XI,YI,NL) GR14<br />
IZOLIN(Z,M,N,X,Y,ZIZ,L,XI,YI,NL) GR14<br />
KEYPO (PHI,X,Y,N1,N2,IS1,IS2,NM,SZ,KP,IKOP) GR8<br />
LCROSS(X1,Y1,X2,Y2,X3,Y3,X4,Y4,C,D) GR10<br />
LESQ (X,Y,RO,M,B,N) GR3<br />
LETIZO(XI,YI,ILM,ZIZ,NIZ,KIND) GR14<br />
LETSPL(XI,YI,ILM,ZIZ,NIZ,KIND) GR14<br />
LEVFUN(PHI,N1,N2,C,NCN) GR8<br />
LEVMAP(C,NC,F0,SP,SM,NP) GR8<br />
LGLINE(X,Y,N,LG,NM,JS,L) GR2<br />
<br />
<br />
- 22 -<br />
<br />
<br />
LICON(XT1,YT1,XT2,YT2,J) GR6<br />
LIMITS (XMIN,XMAX,YMIN,YMAX) GR1<br />
LINEC(X,Y,N) GR1<br />
LINEMC(X,Y,N,NM,JS) GR1<br />
LINEMO(X,Y,N,NM,JS) GR1<br />
LINEO(X,Y,N) GR1<br />
LINFIL(A,B,N,M) GR3<br />
LININT(IBX,BYI,IXF,YFI,RMAX,RMIN) GR7<br />
LINNUM(X,Y,KT) GR8<br />
LINT(X,Y,XX,YY,N1,N2,KT,IKOP) GR8<br />
LITAN(XT,YT,J) GR6<br />
LOCEXT(PHI,X,Y,N1,N2,IKOP) GR8<br />
LOOK(N1,N2,X,Y,PHI,ITAGB,XX,YY,KT,IKOP) GR8<br />
LOWER (Z,M,N,ZMI) GR14<br />
LPAL(P,A,L1,L) GR12<br />
LPARLD(L1,D,L2) GR12<br />
LPARLP(L1,P,L2) GR12<br />
LPARX(D,L) GR12<br />
LPARY(D,L) GR12<br />
LPERLP(L1,P,L2) GR12<br />
LPP(P1,P2,L) GR12<br />
LSCALE(X1,Y1,X2,Y2,R) GR2<br />
LSFIT (X,Y,RO,M,N,MPTS) GR3<br />
MAP (X,Y,Z) GR7<br />
MARKBE (XI,YI,IL) GR14<br />
MARKER(NMARK) GR1<br />
MATEVL(XV,YV,ZV,XPL,YPL,ZPL,VX,VY,VZ) GR10<br />
MINMAX(A,N,RMN,RMX) GR1<br />
MMS GR1<br />
MNMX(VX,VY,VZ,X,Y,A,LLX,LLY,LXINI,LXE,LYIN,LYE,S) GR7<br />
MODGF(J) GR10<br />
MOVA(DL,TH,J) GR61<br />
MOVB(DX,DY,J) GR6<br />
MOVC(XM,YM,DL,J) GR6<br />
MOVE(X,Y,J) GR1<br />
MOVE(X,Y,J) GR6<br />
MOVE1(X,Y,J) GR2<br />
MOVE2(X,Y,J) GR2<br />
MOVE3(X,Y,J) GR2<br />
MTMPL(AL1,BL1,CL1,AL2,BL2,CL2,<br />
AT1,BT1,CT1,AT2,BT2,CT2,AE1,BE1,CE1,AE2,BE2,CE2) GR2<br />
MXMULT(A,B) GR11<br />
NEWFRM GR10<br />
NEXTRG(IBOUND,X,Y,NET,NODES,NB,XV,YV) GR10<br />
NOTCH(X,Y,N,NSIZE,STEP,J,ITR) GR2<br />
NOTCH1 GR2<br />
NUMBER(X,Y,Z,FNUM,N,TH) GR2<br />
NUMLIN(SIZE,N) GR8<br />
OPER(LRP1,I,X,RZ) GR9<br />
PAC(C,A,P) GR13<br />
PAGE (XL,YL,NAME,N0,J) GR0<br />
PATA(C,A1,A2,N,I,P) GR13<br />
PATC(C,A,N,I,J,P) GR13<br />
PATCH(XF1,YF1,RMAX,RMIN) GR7<br />
PATL(PH,PK,N,I,P) GR13<br />
<br />
<br />
- 23 -<br />
<br />
<br />
PCNAP(PC,P1,ALPHA,P) GR13<br />
PCNTRC(C,P) GR13<br />
PEN(J) GR0<br />
PICTUR(ISCR,SCRN,IDIM1,IDIM2,X1,Y1,X2,Y2) GR10<br />
PIEPP(P1,P2,A,B,K,P) GR13<br />
PILC(L,C,N) GR12<br />
PILL(L1,L2,P,N) GR13<br />
PISS(P1,P2,P3,P4,P,N) GR13<br />
PLOT(IXI,IYI,J) GR0<br />
PMIDPP(P1,P2,P) GR13<br />
PMLP(L,P1,P2) GR13<br />
PMP(P1,P2,J) GR13<br />
PMPP(P1,P,P2) GR13<br />
PNORDR(X,Y,NET,L,IB,IE) GR10<br />
POLG(R,M,PHI) GR6<br />
POLINE(R,TH,N,KS,NM,JS,L) GR2<br />
POLREG(XOFC,YOFC,RIN,RFN,THETA1,THETA2,JTEXT,M,H,J) GR2<br />
POLYG (X,Y,SL,M,TH) GR1<br />
PRAP(P1,R,A,P2) GR13<br />
PREP(X,Y,Z,N0,XV,YV,ZV,XPL,YPL,ZPL,VX,VY,VZ,<br />
ISCR,IDIM1,RLYTOX) GR10<br />
PRJ(IT,X,Y,Z) GR11<br />
PRJHL(IT,X,Y,Z) GR11<br />
PRJT(VX,VY,VZ,X,Y,A,LX,LY,LXIN,LXE,LYIN,LYE,XF1,YF1) GR7<br />
PROJCT(XP,YP,ZP,XPJ,YPJ) GR10<br />
PRSP(VX,VY,VZ,X,Y,A,LLX,LLY,LXINIT,LXEND,LYINIT,LYEND,<br />
XF1,YF1,RMAX,RMIN,NN) GR7<br />
PSCALE(X,Y,R) GR2<br />
PTLPC(C,P,N) GR12<br />
PVAL(RES,ARG,B,N) GR3<br />
PXY(X,Y,P) GR13<br />
QUADRA(ITAGB,IXBD,IYBD,N1,N2,N5) GR8<br />
RAISE (Z,M,N,ZMI) GR14<br />
RAND(RMIN,RMAX,K) GR3<br />
RAXES(NAME,N,H,UR,KR,M,T) GR2<br />
RCCNTC(CN,C,R1,R2) GR13<br />
RDACA(X0,Y0,R,TH0,THF) GR61<br />
RDACB(X0,Y0,R,XF,YF,J) GR61<br />
RDACC(X0,Y0,XM,YM,XF,YF,J) GR61<br />
RDACD(X0,Y0,XC,YC,PHI) GR61<br />
RDAEA(X0,Y0,A,B,ALPHA,TH0,THF) GR61<br />
RDAEB(X0,Y0,A,B,ALPHA,XF,YF) GR61<br />
RDCRC(XC,YC,R) GR61<br />
RDELP(XC,YC,A,B,ALPHA) GR61<br />
RDMVA(X0,Y0,DL,TH) GR61<br />
RDMVB(X0,Y0,DELTAX,DELTAY) GR61<br />
RDMVC(X0,Y0,XM,YM,DL) GR61<br />
RDMVE(X0,Y0,X,Y) GR61<br />
RDSTR(STORE) GR6<br />
REBLAN GR2<br />
RECT (X,Y,H,W,TH) GR1<br />
RECUR (Z,M,N,NX,NY,KX,KY) GR14<br />
REGION(X,Y,XL,YL,NAME,N,J) GR1<br />
RENTCH GR2<br />
RENUM GR8<br />
<br />
<br />
- 24 -<br />
<br />
<br />
RESET GR2<br />
ROTATE(X,Y,PSI) GR2<br />
ROTH(NAXES,FI,DX,DY,DZ,NLINES,NBEG,NEND) GR11<br />
SAVETR(A) GR4<br />
SCREN1(ISCR,SCRN,IDIM1,IDIM2,Y,N,IND) GR10<br />
SCREN2(ISCR,SCRN,IDIM1,IDIM2,X,Y,NL,STEP,XBEG,A1,<br />
B1,A2,B2,IND) GR10<br />
SCRMOD(ISCR,SCRN,IDIM1,IDIM2,XL,YL,XIR,YIR,XK,YK) GR10<br />
SDPG(STEP,EPS,BETA) GR2<br />
SEARCH(IXF,YFI,IBX,BYI,XF1,YF1,RMAX,RMIN) GR7<br />
SECANT(SL,ALPHA,X,Y) GR61<br />
SEE(L,IR,IBOUND,X,Y,NB,IND,IDRWN,XV,YV) GR10<br />
SEE1(I1,I2,I3,I4,X,Y,XV,YV,IND) GR10<br />
SEGANG(X1,Y1,X2,Y2,A,STEP,IND) GR10<br />
SET(J) GR1<br />
SETBE (LSTEP,SIZEB) GR14<br />
SETTR(A) GR4<br />
SFCFIT(LX,LY,X,Y,Z,MX,MY,NU,NV,U,V,W) GR8<br />
SHADE(X,Y,N,STEP,EPS,BETA) GR2<br />
SHDOWN(I) GR11<br />
SHEAR(N1,N2,F) GR4<br />
SHIFT(DX,DY) GR2<br />
SHUP(I) GR11<br />
SIGNA(NAME,N,H,XO,YO,RFN,UTR,KTR,A,B,BS,MK,<br />
KD,Q,S,K,R6,AR,C) GR2<br />
SINCL(XB,STEP,Y,N) GR3<br />
SIZLIN(SIZE,N,M) GR8<br />
SIZNUM(SIZE,FNUM,N,M) GR8<br />
SLINST(J) GR14<br />
SMINV(A,V,N) GR3<br />
SMTBVF(LP,LX,LY,X,Y,Z,N,U,V,W) GR9<br />
SMTONE(LX,LY,X,Y,Z,MX,MY,NU,NV,U,V,W) GR9<br />
SMTSIM(LX,LY,X,Y,Z,N,U,V,W) GR9<br />
SORT3(PA,PB,K) GR12<br />
SORTC(J,C) GR13<br />
SORTCN(M,J,C) GR12<br />
SORTL(L,J,C) GR13<br />
SORTP(J,P) GR12<br />
SORTPT(J,PT1,PT2) GR13<br />
SORTY(DX,DY,DZ,NLINES,N1,N2) GR11<br />
SPHERG(R,NFI,NTETA,DX,DY,DZ,NLINES,NBEG) GR11<br />
SPHERV(R,NFI,NTETA,DX,DY,DZ,NLINES,NBEG) GR11<br />
SPIRAL(TH0,THF,R0,RF) GR6<br />
SPLINE (X,Y,U,N,A,B,C,D,KODE,IER) GR3<br />
SPLINT (X,N,A,B,C,D,Y,M) GR3<br />
SPLITP(X,Y,Z) GR11<br />
SPLOT(IXI,IYI,J) GR0<br />
STAR(R,M,ALPHA,PHI) GR61<br />
STORIN(AL,AU) GR11<br />
STRMOD(J) GR6<br />
STROT3(NAXES,CS,SN,R) GR11<br />
SUPLIN(X,Y,N,NM,JS,L,IKOP) GR8<br />
SVLSEG(AL,AU,I) GR11<br />
SYMBOL(X,Y,SIZE,JBCD,LIMIT,THETA) GR1<br />
SYMTAB(JB,I,NPLOT,KK,IS1) GR1<br />
<br />
<br />
- 25 -<br />
<br />
<br />
TCALC (X,Y,T,N) GR3<br />
TDAXES(X,Y,REG,L) GR4<br />
TDLIM(X,Y,Z,NROW,NCOL,ISTA,IFN,JST,JFN,S) GR4<br />
TDLIML(X,Y,Z,N,S) GR4<br />
TDLINE(X,Y,Z,N) GR4<br />
TDMP(X,Y,N,A,B,C,D,KODE) GR3<br />
TDROT(NAXES,ALPHA) GR4<br />
TDSCAL(NAXES,SCALE) GR4<br />
TDSECT(Z,X,Y,IX,IY,M,N,AMXMN,AR) GR4<br />
TDTRAN(DX,DY,DZ) GR4<br />
TESTVS GR11<br />
TFM(XF,YF,XM,YM) GR2<br />
THAXES(NAME,N,H,UT,KT,MT,R) GR2<br />
THREED(X,Y,Z,NROW,NCOL,ISTA,IFN,JSTA,JFN,<br />
LNTP,NGRD,AMXMN,AR) GR4<br />
TMF(XM,YM,XF,YF) GR1<br />
TMLGF (X,Y,LG,N,XF,YF) GR2<br />
TOKEN(X,Y,MRK,FZ,N,H,TH) GR14<br />
TPF(RM,TM,KN,RF,P,X,Y) GR2<br />
TRANH(DELX,DELY,DELZ,DX,DY,DZ,NLINES,NBEG,NEND) GR11<br />
TRANSF(ZIZ,XI,YI,ILM) GR14<br />
TRANSL(DX,DY) GR2<br />
TRDRAW(ISCR,SCRN,IDIM1,IDIM2,X,Y,Z) GR10<br />
TRG(L,IR,K,KL,KR,NET,NODES,IBOUND,NB,X,Y,XV,YV,IND) GR10<br />
TRGRID(X,Y,N0,NET,IBOUND,NODES,NET0,NT1) GR10<br />
TRIDIG (U,N,A,B,C,D,KODE,IER) GR3<br />
TRIG(X,Y,N0,NODES,NET0,IBOUND,NET,NT1) GR10<br />
TRINGL(X,Y,N0,IBOUND,IDOM,NODES,NET,NT1) GR10<br />
TRSURF(X,Y,Z,N0,XV,YV,NODES,NET0, GR10<br />
VIEW(X,Y,Z) GR4<br />
VPLIM(DX,DY,DZ,NLINES,NL11,NL2,S) GR11<br />
WHERE(X,Y,F) GR1<br />
WHERP(X,Y,F) GR61<br />
WRACA(R,TH0,THF) GR61<br />
WRACB(R,XF,YF,J) GR6<br />
WRACC(XM,YM,XF,YF,J) GR6<br />
WRACD(XC,YC,PHI) GR6<br />
WRAEA(A,B,ALPHA,TH0,THF) GR6<br />
WRAEB(A,B,ALPHA,XF,YF) GR6<br />
WRCRC(R) GR6<br />
WRELP(A,B,ALPHA) GR6<br />
WRMVA(DL,TH) GR6<br />
WRMVB(DELTAX,DELTAY) GR6<br />
WRMVC(XM,YM,DL) GR6<br />
WRMVE(X,Y) GR61<br />
WRSTR(STORE) GR6<br />
XAXIS(Y0,NAMEX,NX,UX,KX,M,J) GR2<br />
XILIY (Z1,Z2,ARG1,ARG2,ZIZOL,I,J,IUS,JUS) GR14<br />
XILIY1 (Z1,Z2,ARG1,ARG2,ZIZOL,I,J,IUS,JUS) GR14<br />
XLGAX (YO,NAME,N,J,K,M) GR2<br />
XPOL(X,Y) GR8<br />
XYSORT (X,Y,N) GR3<br />
YAXIS(X0,NAMEY,NY,UY,KY,M,J) GR2<br />
YLGAX (XO,NAME,N,J,K,M) GR2<br />
YPOL(X,Y) GR8<br />
<br />
<br />
- 26 -<br />
<br />
<br />
ZAPIT(ITAGB,N1,N2) GR8<br />
ZINT(X1,Z1,X2,Z2,X) GR4<br />
<br />
<br />
- 27 -<br />
<br />
<br />
Приложение VI<br />
<br />
КЦГД: дозагружаемый графический интерпретатор.<br />
<br />
По сути, данное приложение является инструкцией по<br />
эксплуатации графического интерпретатора КЦГД. Данный<br />
интерпретатор был написан автором для работы с ГРАФОРом,<br />
хотя его использование может быть и автономным. Загружается он<br />
в ОЗУ КЦГД командой<br />
<br />
R GS.SYS<br />
<br />
Чтобы интерпретатор начал действовать, необходимо передать<br />
в КЦГД следующие управляющие последовательности:<br />
(здесь и далее последовательность <ESC > означает восьмеричный<br />
код 033, или десятичный 27; на клавиатуре это клавиша <АР2> или<br />
комбинация <СУ>[ )<br />
<br />
ESC < переводит КЦГД в расширенную систему<br />
команд;<br />
ESC P переводит КЦГД в графический режим.<br />
<br />
В обычный текстовый режим работы КЦГД возвращается<br />
следующими командами:<br />
<br />
ESC ~ (тильда; ^ в нижнем регистре)<br />
выводит КЦГД из графического режима<br />
в расширенную систему команд;<br />
<br />
ESC [?2l переводит КЦГД в обычный режим.<br />
<br />
В графическом режиме КЦГД может выполнять следующие<br />
команды:<br />
<br />
D X,Y; рисование линии из текущего состояния в<br />
точку X,Y;<br />
M X,Y; перевести перо в точку X,Y;<br />
J N; установить цвет <N=0..3>;<br />
H; начальная установка интерпретатора;<br />
C; после получения этой команды КЦГД выдает в<br />
ЭВМ полную последовательность байт для<br />
функции Print_Screen;<br />
<br />
Все эти команды, за исключением <C;>, можно отдать с<br />
клавиатуры в автономном режиме.<br />
При обращении к драйверу <GS:>, последний автоматически<br />
передает в КЦГД все управляющие коды.<br />
<br />
<br />
- 28 -<br />
<br />
<br />
Приложение VII<br />
<br />
КЦГД: дозагружаемые коды клавиатуры.<br />
<br />
КЦГД дозагружается новыми кодами клавиатуры в процессе<br />
загрузки операционной системы. Программа загрузки находится в<br />
файле TT.SYS. Ниже приведены изменяемые коды клавиш.<br />
<br />
--------------------------------------------------------<br />
Название клавиши КОИ7 Восьмеричный код Примечания<br />
--------------------------------------------------------<br />
ПЕЧАТЬ КАДРА ^A 001<br />
ПАУЗА NULL 000<br />
ф5 ^^ 036<br />
ПРЕРЫВ ^S 023<br />
ПРОДОЛЖ ^T 024<br />
ОТМЕН ^U 025<br />
ОСНОВН КАДР ^V 026<br />
ВЫХОД ^C 003<br />
АР2 ESC 033<br />
ВШ ^H 010<br />
ПС ^J 012<br />
ДОП ВАРИАНТ NULL 000<br />
ПМ ESC a 033,141<br />
ВЫБР ESC f 033,146<br />
Ф17 ESC H 033,110<br />
Ф18 ESC J 033,112<br />
ф19 ESC K 033,113<br />
ф20 ESC L 033,114<br />
НТ ESC c 033,143<br />
ВСТ ESC d 033,144<br />
УДАЛ ESC e 033,145<br />
ИСП ESC b 033,142<br />
ПРЕД КАДР ESC g 033,147<br />
СЛЕД КАДР ESC h 033,150<br />
~ ^J 012<br />
РУС ЛАТ ^N 016<br />
КМП ^O 017<br />
{ { 173<br />
} } 175<br />
ТБ ^X 030<br />
ЗБ DEL 177<br />
ПФ1 ESC P 033,120<br />
ПФ2 ESC Q 033,121<br />
ПФ3 ESC R 033,122<br />
ПФ4 ESC S 033,123<br />
7 7 067 *<br />
8 8 070 *<br />
9 9 071 *<br />
. . 056 *<br />
4 4 064 *<br />
5 5 065 *<br />
6 6 066 *<br />
- - 055 *<br />
1 1 061 *<br />
<br />
<br />
- 29 -<br />
<br />
<br />
2 2 062 *<br />
3 3 063 *<br />
, , 054 *<br />
0 0 060 *<br />
ВВОД ^M 015 *<br />
-------------------------------------------------<br />
<br />
* - Выдает ESC-последовательности в режиме дополнительной<br />
клавиатуры.<br />
</pre></div>
Nzeemin
https://emuverse.ru/wiki/%D0%9C%D0%BD%D0%B5%D0%BC%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%BE%D0%B2_Intel_8080_%D0%B8_Z80
Мнемоника команд микропроцессоров Intel 8080 и Z80
2024-03-23T14:47:37Z
<p>Alecv: Категория</p>
<hr />
<div>{{ДИ|Источник=https://sysadminmosaic.ru/msx/basic_dialogue_programming_language/111?rev=1662925243}}<br />
<pre><br />
┌──────────┬─────────────┬─────────────────────┬──────┬───┬───┬──────────────────────┬──────────────┐<br />
│ INTEL 80 │Мнемоника Z80│ Д е й с т в и е │CZPSNH│Дл.│Вр.│ К о м м е н т а р и и│ Примечания │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ ADC r │ ADC A,r │ A:=A+r+CY │**V*0*│ 1 │ 4│ r ≡ A,B,C,D,E,H,L │Add with Carry│<br />
│ ADC M │ ADC A,(HL) │ A:=A+(HL)+CY │ │ 1 │ 7│ │ to Acc │<br />
│ ACI,n │ ADC A,n │ A:=A+n+CY │ │ 2 │ 7│ n - byte (0..FF) │ │<br />
│ - │ ADC A,(ii+n)│ A:=A+(ii+n)+CY │ │ 3 │ 19│ ii=IX,IY │Add register +│<br />
│ - │ ADC HL,rr │ HL:=HL+rr+CY │**V*0x│ 2 │ 15│ rr ≡ BC,DE,HL,SP │Carry to[HL] │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ ADD r │ ADD A,r │ A:=A+r │**V*0*│ 1 │ 4│ │ │<br />
│ ADD M │ ADD A,(HL) │ A:=A+(HL) │ │ 1 │ 7│ │ Add │<br />
│ ADI n │ ADD A,n │ A:=A+n │ │ 2 │ 7│ │ │<br />
│ - │ ADD A,(ii+n)│ A:=A+(ii+n) │ │ 3 │ 19│ │ │<br />
│ DAD rr │ ADD HL,rr │ HL:=HL+rr │*...0x│ 1 │ 11│ │ │<br />
│ - │ ADD IX,ry │ IX:=IX+px │ │ 2 │ 15│ ry ≡ BC,DE,SP,IY │ IY \ 16 │<br />
│ - │ ADD IY,rx │ IY:=IY+py │ │ 2 │ 15│ rx ≡ BC,DE,SP,IX │ IX / bits │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ ANA r │ AND r │ A:=A and r │0*P*01│ 1 │ 4│ │ │<br />
│ ANA m │ AND (HL) │ A:=A and (HL) │ │ 1 │ 7│ │ Logical AND │<br />
│ ANI n │ AND n │ A:=A and n │ │ 2 │ 7│ │ │<br />
│ - │ AND (ii+n) │ A:=A and (ii+n) │ │ 3 │ 19│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ BIT b,r │ Z:=not rб │.*xx01│ 2 │ 8│ b - номер бита (0÷7) │ │<br />
│ - │ BIT b,(HL) │ Z:=not (HL)б │ │ 2 │ 12│xб - bit b of │ Test BIT │<br />
│ - │ BIT b,(ii+n)│ Z:=not (ii+n)б │ │ 4 │ 20│ location x │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ CALL nn │ CALL nn │ PUSH PC;PC:=nn │......│ 3 │ 17│nn - word (0..FFFF) │Call subroutin│<br />
│ - │ CALL cc,nn │ Если cc, то CALL nn │ │ 3 │ 17│cc ≡ C,NC,Z,NZ,M,P,PE,│Call │<br />
│ CC nn │ CALL C,nn │ иначе продолжить │ │ │ 10│ PO │conditional │<br />
│ CM nn │ CALL M,nn │ │ │ │ │ │ │<br />
│ CNC nn │ CALL NC,nn │ │ │ │ │ │ │<br />
│ CNZ nn │ CALL NZ,nn │ │ │ │ │ │ │<br />
│ CP nn │ CALL P,nn │ │ │ │ │ │ │<br />
│ CPE nn │ CALL PE,nn │ │ │ │ │ │ │<br />
│ CPO nn │ CALL PO,nn │ │ │ │ │ │ │<br />
│ CZ nn │ CALL Z,nn │ │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ CMC │ CCF │ CY:=not CY │*...0x│ 1 │ 4│ CoMplement Carry Flag │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ CPM r │ CP r │ A-r │**V*1*│ 1 │ 4│ │ │<br />
│ CPM m │ CP (HL) │ A-(HL) │ │ 1 │ 7│ │ Compare │<br />
│ CPI n │ CP n │ A-n │ │ 2 │ 7│ │ │<br />
│ - │ CP (ii+n) │ A-(ii+n) │ │ 3 │ 19│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ CPD │ A-(HL);dec HL;dec BC│.***1*│ 2 │ 16│PV=0еслиBC=0иначе PV=1│Compare,decrem│<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ CPDR │ Повторять CPD , │.***1*│ 2 │ 21│ │Compare,decre-│<br />
│ │ │ пока Z=1 or BC=0 │ │ │ 16│ │ment,repeat │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ CPI │ A-(HL);inc HL;dec BC│.***1*│ 2 │ 16│PV=0 еслиBC=0иначеPV=1│Compare,decrem│<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ CPIR │ Повторять CPI , │.***1*│ 2 │ 21│ │Compare,decre-│<br />
│ │ │ пока Z=1 or BC=0 │ │ │ 16│ │ment,repeat │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ CMA │ CPL │ A:=A xor 255 │....11│ 1 │ 4│ │Complement Acc│<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ DAA │ DAA │ │**P*.*│ 1 │ 4│ │Dec. Adj. Acc.│<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ DCR r │ DEC r │ r:=r-1 │.*V*1*│ 1 │ 4│ │ │<br />
│ DCM M │ DEC (HL) │ (HL):=(HL)-1 │ │ 1 │ 11│ │ Decrement │<br />
│ - │ DEC (ii+n) │ (ii+n):=(ii+n)-1 │ │ 3 │ 23│ │ │<br />
│ DCX rr │ DEC rr │ rr:=rr-1 │......│ 1 │ 6│ │ │<br />
│ - │ DEC ii │ ii:=ii-1 │ │ 2 │ 10│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ DI │ DI │ IFF:=0 │......│ 1 │ 4│ Disable interrupts │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ - │ DJNZ e │ dec B;если B≠0 JR e │......│ 2 │ 13│ e - относительный │ Decrement & │<br />
│ │ │ если B=0 продолжать│ │ │ 8│ адрес │jump if Not 0 │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ EI │ EI │ IFF:=1 │......│ 1 │ 4│ Enable interrupts │<br />
└──────────┴─────────────┴─────────────────────┴──────┴───┴───┴─────────────────────────────────────┘<br />
<br />
┌──────────┬─────────────┬─────────────────────┬──────┬───┬───┬──────────────────────┬──────────────┐<br />
│ Intel 80 │Мнемоника Z80│ Д е й с т в и е │CZPSNH│Дл.│Вр.│ К о м м е н т а р и и│ Примечания │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ EX AF,AF' │ AF <─> AF' │......│ 1 │ 4 │ │ │<br />
│ XCHG │ EX DE,HL │ DE <─> HL │ │ 1 │ 4 │ │ EXchange │<br />
│ XTHL │ EX (SP),HL │ (SP) <─> HL │ │ 1 │ 4 │ │ │<br />
│ - │ EX (SP),ii │ (SP) <─> ii │ │ 2 │23 │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ - │ EXX │ BC<─>BC';DE<─>DE'; │......│ 1 │ 4 │ Exchange Register pair & │<br />
│ │ │ HL<─>HL' │ │ │ │ Arternatives │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ HLT │ HALT │ Останов центр.проц. │......│ 1 │ 4 │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ IM 1 │ Режим прерываний 1 │......│ 2 │ 8 │ │ │<br />
│ - │ IM 2 │ Режим прерываний 2 │ │ │ │ │ │<br />
│ - │ IM 3 │ Режим прерываний 3 │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ IN n │ IN A,(n) │ A:=port(n) │......│ 2 │11 │ │ │<br />
│ - │ IN r,(C) │ r:=port(C) │.*P*0*│ 2 │12 │ │ │<br />
│ - │ IN ?,(C) │ Только устанавливает│.*P*0*│ 2 │12 │ Не является командой │ INput │<br />
│ │ │ флаги как IN r,(C) │ │ │ │ (код ED 70) │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ INR r │ INC r │ r:=r+1 │.*V*0*│ 1 │ 4 │ │ │<br />
│ INR M │ INC (HL) │ (HL):=(HL)+1 │ │ 1 │11 │ │ │<br />
│ - │ INC (ii+n) │ (ii+n):=(ii+n)+1 │ │ 3 │23 │ │ INCrement │<br />
│ INX rr │ INC rr │ rr:=rr+1 │......│ 1 │ 6 │ │ │<br />
│ - │ INC ii │ ii:=ii+1 │ │ 2 │10 │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ IND │ (HL):=port(C); │x*xx1x│ 2 │16 │Z=1 если B=0,иначе Z=0│ INput,Decre- │<br />
│ │ │ dec HL;dec B │ │ │ │ │ ment │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ INDR │ Повторять IND , │x1xx1x│ 2 │21 │ │ INput,Decre- │<br />
│ │ │ пока B=0 │ │ │16 │ │ ment,Repeat │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ INI │ (HL):=port(C); │x*xx1x│ 2 │16 │Z=1 if B=0,else Z=0 │ INput,Incre- │<br />
│ │ │ inc HL;dec B │ │ │ │ │ ment │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ INIR │ Повторять INI , │x1xx1x│ 2 │21 │ │ INput,Incre- │<br />
│ │ │ пока B=0 │ │ │16 │ │ ment,Repeat │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ JNP nn │ JP nn │ PC:=nn │......│ 3 │10 │ │ │<br />
│ JC nn │ JP C,nn │ │ │ │ │ │ │<br />
│ JM nn │ JP M,nn │ │ │ │ │ │ │<br />
│ JNC nn │ JP NC,nn │ │ │ │ │ │ │<br />
│ JP nn │ JP P,nn │ │ │ │ │ │ │<br />
│ JNZ nn │ JP NZ,nn │ │ │ │ │ │ J u m p │<br />
│ JPE nn │ JP PE,nn │ │ │ │ │ │ │<br />
│ JPO nn │ JP PO,nn │ │ │ │ │ │ │<br />
│ JZ nn │ JP Z,nn │ │ │ │ │ │ │<br />
│ - │ JP cc,nn │ Если cc, то JP nn │......│ 3 │10 │ │ │<br />
│ PCHL │ JP (HL) │ PC:=HL │ │ 1 │ 4 │ │ │<br />
│ - │ JP (ii) │ PC:=ii │ │ 2 │ 8 │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ - │ JR e │ PC:=PC+e │......│ 2 │12 │ │ Relative jump│<br />
│ - │ JR cond,e │ Если cond, то JR e │ │ 2 │12 │cond ≡ C,NC,Z,NZ │ │<br />
│ │ │ иначе NOP │ │ │ 7 │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ MOV r,r │ LD r,r │ r:=r │......│ 1 │ 4 │ │ │<br />
│ MOV r,M │ LD r,(HL) │ r:=(HL) │ │ 1 │ 7 │ │ │<br />
│ MVI r,n │ LD r,n │ r:=n │ │ 2 │ 7 │ │ │<br />
│ - │ LD r,(ii+n) │ r:=(ii+n) │ │ 3 │19 │ │ │<br />
│ MOV M,r │ LD (HL),r │ (HL):=r │ │ 1 │ 7 │ │ │<br />
│ - │ LD (ii+n),r │ (ii+n):=r │ │ 3 │19 │ │ │<br />
│ MVI M,n │ LD (HL),n │ (HL):=n │ │ 2 │10 │ │ │<br />
│ - │ LD (ii+n),n │ (ii+n):=n │ │ 4 │19 │ │ │<br />
│ LDAX B │ LD A,(BC) │ A:=(BC) │ │ 1 │ 7 │ │ L o a d │<br />
│ LDAX D │ LD A,(DE) │ A:=(DE) │ │ 1 │ 7 │ │ │<br />
│ LDA nn │ LD A,(nn) │ A:=(nn) │ │ 3 │13 │ │ │<br />
│ STAX B │ LD (BC),A │ (BC):=A │ │ 1 │ 7 │ │ │<br />
│ STAX D │ LD (DE),A │ (DE):=A │ │ 1 │ 7 │ │ │<br />
│ STA nn │ LD (nn),A │ (nn):=A │ │ 3 │13 │ │ │<br />
│ - │ LD A,I │ A:=I │.***00│ 2 │ 9 │PV=IFF │ │<br />
│ - │ LD A,R │ A:=R │ │ 2 │ 9 │PV=IFF │ │<br />
│ - │ LD I,A │ I:=A │......│ 2 │ 9 │ │ │<br />
│ - │ LD R,A │ R:=A │ │ 2 │ 9 │ │ │<br />
└──────────┴─────────────┴─────────────────────┴──────┴───┴───┴──────────────────────┴──────────────┘<br />
<br />
┌──────────┬─────────────┬─────────────────────┬──────┬───┬───┬──────────────────────┬──────────────┐<br />
│ INTEL 80 │Мнемоника Z80│ Д е й с т в и е │CZPSNH│Дл.│Вр.│ К о м м е н т а р и и│ Примечания │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ LXIrr,nn│ LD rr,nn │ rr:=nn │ │ 3 │ 10│ │ │<br />
│ --- │ LD ii,nn │ ii:=nn │ │ 4 │ 14│ │ │<br />
│ LHLD nn │ LD HL,(nn) │ HL:=(nn) │ │ 3 │ 16│ │ │<br />
│ --- │ LD rr,(nn) │ rr:=(nn) │ │ 4 │ 20│ │ │<br />
│ --- │ LD ii,(nn) │ ii:=(nn) │ │ 4 │ 20│ │ │<br />
│ SHLD nn │ LD (nn),HL │ (nn):=HL │ │ 3 │ 16│ │ │<br />
│ --- │ LD (nn),rr │ (nn):=rr │ │ 4 │ 20│ │ │<br />
│ --- │ LD (nn),ii │ (nn):=ii │ │ 4 │ 20│ │ │<br />
│ SPHL │ LD SP,HL │ SP:=HL │ │ 1 │ 6│ │ │<br />
│ --- │ LD SP,ii │ SP:=ii │ │ 1 │ 10│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ LDD │ (DE):=(HL); │..*.00│ 2 │ 16│PV=0 if BC=0,else PV=1│load,decrement│<br />
│ │ │ dec DE,HL,BC │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ LDDR │ Повторять LDD │..0.00│ 2 │ 21│ │load,decrement│<br />
│ │ │ до Z=1 or BC=0 │ │ │ 16│ │repead │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ LDI │ (DE):=(HL); │..*.00│ 2 │ 16│PV=0 if BC=0,else PV=1│load,increment│<br />
│ │ │ inc DE,HL;dec BC │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ LDIR │ Повторять LDI │..0.00│ 2 │ 21│ │load,increment│<br />
│ │ │ до Z=1 or BC=0 │ │ │ 16│ │repead │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ NEG │ A:=0-A │**V*1*│ 2 │ 8│ │Negate Acc │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ NOP │ NOP │ Отсутствие операции │......│ 1 │ 4│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ ORA r │ OR r │ A:=A or r │0*P*00│ 1 │ 4│ │ Logical OR │<br />
│ ORA M │ OR (HL) │ A:=A or (HL) │ │ 1 │ 7│ │ │<br />
│ ORI n │ OR n │ A:=A or n │ │ 2 │ 7│ │ │<br />
│ --- │ OR (ii+n) │ A:=A or (ii+n) │ │ 3 │ 19│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ OTDR │ Повторять OUTD │x1xx1x│ 2 │ 21│ │ Output,decre-│<br />
│ │ │ до B=0 │ │ │ 16│ │ ment,repeat │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ OTIR │ Повторять OUTI │x1xx1x│ 2 │ 21│ │ Output,incre-│<br />
│ │ │ до B=0 │ │ │ 16│ │ ment,repeat │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ OUT n │ OUT (n),A │ port(n):=A │......│ 2 │ 11│ │ Output │<br />
│ --- │ OUT (C),r │ port(C):=r │ │ 2 │ 12│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ OUTD │ port(C):=(HL); │x*xx1x│ 2 │ 16│Z=1 if B=0,else Z=0 │ Output,decre-│<br />
│ │ │ dec HL;dec B │ │ │ │ │ ment │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ OUTI │ port(C):=(HL); │x*xx1x│ 2 │ 16│Z=1 if B=0,else Z=0 │out,increment │<br />
│ │ │ inc HL;dec B │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ POP gg │ POP qq │ qq:=(SP);SP:=SP+2 │......│ 1 │ 10│qq ≡ AF,BC,DE,HL │Pop from stack│<br />
│ --- │ POP ii │ ii:=(SP);SP:=SP+2 │ │ 2 │ 14│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ PUSH gg │ PUSH qq │ SP:=SP-2;(SP):=qq │......│ 1 │ 11│ │Push to stack │<br />
│ --- │ PUSH ii │ SP:=SP-2;(SP):=ii │ │ 2 │ 15│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ RES b,r │ rб:=0 │......│ 2 │ 8│ │ │<br />
│ --- │ RES b,(HL) │ (HL)б:=0 │ │ 2 │ 15│ │ Reset Bit │<br />
│ --- │ RES b,(ii+n)│ (ii+n)б:=0 │ │ 4 │ 23│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ RET │ RET │ POP PC │......│ 1 │ 10│ │ Return from │<br />
│ ├─────────────┤ │ │ │ │ │ subroutine │<br />
│ │ RET cc │ Если cc то RET │ │ │ │ │ │<br />
│ ├─────────────┤ иначе NOP │......│ 1 │ 11│ ├──────────────┤<br />
│ RC │ RET c │ │ │ │ 5│ │ │<br />
│ RM │ RET M │ │ │ │ │ │ Return │<br />
│ RNC │ RET NC │ │ │ │ │ │ conditional │<br />
│ RNZ │ RET NZ │ │ │ │ │ │ │<br />
│ RP │ RET P │ │ │ │ │ │ │<br />
│ RPE │ RET PE │ │ │ │ │ │ │<br />
│ RPO │ RET PO │ │ │ │ │ │ │<br />
│ RZ │ RET Z │ │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ --- │ RETI │ Возврат из прерыван.│......│ 2 │ 14│ Return from interrupt │<br />
└──────────┴─────────────┴─────────────────────┴──────┴───┴───┴─────────────────────────────────────┘<br />
<br />
┌──────────┬─────────────┬─────────────────────┬──────┬───┬───┬──────────────────────┬──────────────┐<br />
│ INTEL 80 │Мнемоника Z80│ Д е й с т в и е │CZPSNH│Дл.│Вр.│ К о м м е н т а р и и│ Примечания │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ --- │ RETN │Возвр.из немаск.прер.│......│ 2 │ 14│ Return from Non-mascable │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ --- │ RL r │ ┌───────>──────┐ │**P*00│ 2 │ 8│ │ Rotate left │<br />
│ --- │ RL (HL) │ │┌──┐ ┌───────┐│ │ │ 2 │ 15│ │ through Carry│<br />
│ --- │ RL (ii+n) │ └┤CY├<┤7 <── 0├┘ │ │ 4 │ 23│ │ │<br />
├──────────┼─────────────┤ └──┘ └───────┘ ├──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ RAL │ RLA │ │*...00│ 1 │ 4│ Rotate Acc. left throgh Carry │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ --- │ RLC r │ ┌────>────┐ │**P*00│ 2 │ 8│ │ Rotate left │<br />
│ --- │ RLC (HL) │ ┌──┐ │┌───────┐│ │ │ 2 │ 15│ │ circular │<br />
│ --- │ RLC (ii+n) │ │CY├<┴┤7 <── 0├┘ │ │ 4 │ 23│ │ │<br />
├──────────┼─────────────┤ └──┘ └───────┘ ├──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ RLC │ RLCA │ │*...00│ 1 │ 4│ Rotate Acc. left circular │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ --- │ RLD │ A ┌────>───┐(HL)│.*P*00│ 2 │ 18│ │ Rotate Acc & │<br />
│ │ │ ┌───┬─┴─┐┌───┬─┴─┐ │ │ │ │ │ Memore left │<br />
│ │ │ │7 4│3 0││7 4│3 0│ │ │ │ │ │ decimal │<br />
│ │ │ └───┴─┬─┘└┬┬─┴─┬─┘ │ │ │ │ │ │<br />
│ │ │ └─<─┘└─<─┘ │ │ │ │ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ RR r │ ┌──────<───────┐ │**P*00│ 2 │ 8│ │ Rotate right│<br />
│ --- │ RR (HL) │ │┌───────┐ ┌──┐│ │ │ 2 │ 15│ │ through │<br />
│ --- │ RR (ii+n) │ └┤7 ──> 0├>┤CY├┘ │ │ 4 │ 23│ │ Carry │<br />
├──────────┼─────────────┤ └───────┘ └──┘ ├──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ RAR │ RRA │ │*...00│ 1 │ 4│ Rotate Acc. right through Carry │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ --- │ RRC r │ ┌───<─────┐ │**P*00│ 2 │ 8│ │ Rotate │<br />
│ --- │ RRC (HL) │ │┌───────┐│ ┌──┐ │ │ 2 │ 15│ │ right │<br />
│ --- │ RRC (ii+n) │ └┤7 ──> 0├┴>┤CY│ │ │ 4 │ 23│ │ circular │<br />
├──────────┼─────────────┤ └───────┘ └──┘ ├──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ RRC │ RRCA │ │*...00│ 1 │ 4│ Rotate Acc & Memory right Decimal│<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ --- │ RRD │ A ┌───<────┐(HL)│.*P*00│ 2 │ 18│ │ Rotate Acc &│<br />
│ │ │ ┌───┬─┴─┐┌───┬─┴─┐ │ │ │ │ │ memory │<br />
│ │ │ │7 4│3 0││7 4│3 0│ │ │ │ │ │ Right │<br />
│ │ │ └───┴─┬─┘└┬┬─┴─┬─┘ │ │ │ │ │ │<br />
│ │ │ └─>─┘└─>─┘ │ │ │ │ │ Decimal │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ RST adr │ RST adr │ CALL adr │......│ 1 │ 11│adr - byte (000xxx00b)│ Restart │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ SBB r │ SBC A,r │ A:=A-r-CY │**V*1*│ 1 │ 4│ │ Subtract │<br />
│ SBB M │ SBC A,(HL) │ A:=A-(HL)-CY │ │ 1 │ 7│ │ with │<br />
│ SBI n │ SBC A,n │ A:=A-n-CY │ │ 2 │ 7│ │ Carry │<br />
│ --- │ SBC A,(ii+n)│ A:=A-(ii+n)-CY │ │ 3 │ 19│ │ (borrow) │<br />
│ --- │ SBC HL,rr │ HL:=HL-rr-CY │**V*1x│ 2 │ 15│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ STC │ SCF │ CY:=1 │1...00│ 1 │ 4│ │Set Carry Flag│<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ --- │ SET b,r │ rб:=1 │......│ 2 │ 8│ │ │<br />
│ --- │ SET b,(HL) │ (HL)б:=1 │ │ 2 │ 15│ │ Set bit │<br />
│ --- │ SET b,(ii+n)│ (ii+n)б:=1 │ │ 4 │ 23│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┴──────────────┤<br />
│ --- │ SLA r │ ┌──┐ ┌───────┐ │**P*00│ 2 │ 8│ │<br />
│ --- │ SLA (HL) │ │CY├<┤7 <── 0├<0 │ │ 2 │ 15│ Shift left Arithmetic │<br />
│ --- │ SLA (ii+n) │ └──┘ └───────┘ │ │ 4 │ 23│ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼─────────────────────────────────────┤<br />
│ --- │ SRA r │ ┌───────┐ ┌──┐ │**P*00│ 2 │ 8│ │<br />
│ --- │ SRA (HL) │ ┌>┤7 ──> 0├>┤CY│ │ │ 2 │ 15│ Shift right Arithmetic │<br />
│ --- │ SRA (ii+n) │ └─┴───────┘ └──┘ │ │ 4 │ 23│ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┬──────────────┤<br />
│ --- │ SRL r │ ┌───────┐ ┌──┐ │**P*00│ 2 │ 8│ │ Shift right │<br />
│ --- │ SRL (HL) │ 0>┤7 ──> 0├>┤CY│ │ │ 2 │ 15│ │ Logical │<br />
│ --- │ SRL (ii+n) │ └───────┘ └──┘ │ │ 4 │ 23│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ SUB r │ SUB r │ A:=A-r │**V*0*│ 1 │ 4│ │ │<br />
│ SUB M │ SUB (HL) │ A:=A-(HL) │ │ 1 │ 7│ │ Subtract │<br />
│ SVI n │ SUB n │ A:=A-n │ │ 2 │ 7│ │ │<br />
│ --- │ SUB (ii+n) │ A:=A-(ii+n) │ │ 3 │ 19│ │ │<br />
├──────────┼─────────────┼─────────────────────┼──────┼───┼───┼──────────────────────┼──────────────┤<br />
│ XRA r │ XOR r │ A:=A xor r │0*P*00│ 1 │ 4│ │ │<br />
│ XRA M │ XOR (HL) │ A:=A xor (HL) │ │ 1 │ 7│ │ Logical XOR │<br />
│ XRI n │ XOR n │ A:=A xor n │ │ 2 │ 7│ │ │<br />
│ --- │ XOR (ii+n) │ A:=A xor (ii+n) │ │ 3 │ 19│ │ │<br />
└──────────┴─────────────┴─────────────────────┴──────┴───┴───┴──────────────────────┴──────────────┘<br />
</pre><br />
<br />
[[Категория:Zilog Z80]]</div>
Nzeemin
https://emuverse.ru/wiki/%D0%90%D0%B3%D0%B0%D1%82/%D0%A2%D0%B5%D1%85%D0%BD%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%86%D0%B8%D1%8F
Агат/Техническая информация
2024-01-18T09:56:03Z
<p>Panther: /* Агат-9 */</p>
<hr />
<div>{{Emuverse}}<br />
<br />
== Контроллер и дисковод 140к ==<br />
* Физические параметры: сторон: 1 (0), дорожек: 35 (0-34), секторов: 16 (0-15). Нумерация секторов от 0!<br />
* Используется свой алгоритм кодирования [https://en.wikipedia.org/wiki/Group_coded_recording GCR 6.2], отличающийся от Apple Disk ][?<br />
** Пока замечено, что два «лишних» байта при кодировании первого блока «заворачиваются» на начало буфера, а в найденных эмуляторах Apple берутся нулевыми, что не влияет на раскодированные данные, но меняет контрольную сумму.<br />
* Порядок секторов 0x0,0xD,0xB,0x9,0x7,0x5,0x3,0x1,0xE,0xC,0xA,0x8,0x6,0x4,0x2,0xF — при этом в файле DSK они находятся именно в таком порядке, и при генерации NIB-трека их переставлять не нужно.<br />
* Как и в Apple Disk ][, число физических дорожек равно 70, но стандартно используется только каждая вторая, следовательно, номер дорожки в образе равен половине номера физической дорожки.<br />
<br />
Документация по nib-формату:<br />
* https://github.com/fadden/CiderPress2/blob/main/DiskArc/Disk/Nibble-notes.md<br />
* https://github.com/fadden/CiderPress2/blob/main/DiskArc/Disk/Unadorned-notes.md<br />
<br />
== Агат-9 ==<br />
=== Распределение портов ===<br />
* C000-C00F ― регистр данных клавиатуры.<br />
* C010-C01F ― очистка регистра данных клавиатуры.<br />
* C020-C02F ― магнитофон?<br />
* C030-C03F ― звук? <br />
* C040-C04F ― ?<br />
* C050-C057 ― чт/зп ― видеорежим Apple, переключение ДК в режим Apple (ПА <= 0).<br />
* C058-C05B ― переключение палитры.<br />
* C060-C06F ― клавиатура, пульты.<br />
* C070-C07F ― ? <br />
* C080-C08F ― режим пзу, псевдо-пзу, сегмента D000-DFFF.<br />
* C0F0-C0FF ― запись ― переключение ПМ <= 1, чтение ― ?.<br />
* C100-C1FF ― запись ― переключение страниц памяти, чтение ― возврат номера подключенного банка.<br />
* C200-C2FF ― разъём 2.<br />
* C300-C3FF ― разъём 3.<br />
* C400-C4FF ― разъём 4.<br />
* C500-C5FF ― разъём 5.<br />
* C700-C7FF ― Видеорежим Агат, переключение ДК а режим Агат/Apple (ПА)<br />
<br />
=== ПА и ПМ ===<br />
* '''ПМ''' ― «Признак Машины»<br />
** 0 ― ОЗУ в режиме Агат, только сброс.<br />
** 1 ― ОЗУ в режиме Apple, запись по адресу C0F0-C0FF<br />
* '''ПА''' ― «Признак Apple»<br />
** 0 ― ДК в режиме Apple, обращение (ч/з) по адресам C050-C057 <br/>или C700-C7FF (при ПМ==1)<br />
** 1 ― ДК в режиме Агат, сброс или обращение по адресам C700-C7FF при ПМ==0<br />
<br />
'''Внимание! В отдельных изданиях официальной документации названия сигналов перепутаны!'''<br />
<br />
=== Управление памятью ===<br />
Назначение банков физической памяти на логические сегменты происходит записью произвольного значения по адресам C100-C1FF. Формат адреса: C1mn, где m ― номер логического сегмента (0-7), n ― номер банка (0-F). Чтение возвращает записанное значение. Запись разрешена только в режиме Агат (ПМ==0).<br />
<br />
При этом m = 0-7 обозначают номера сегментов в режиме Агат, а E и F указывают на подключенные банки к сегментам 6 и 7 в режиме Apple.<br />
<br />
=== Порт клавиатуры ===<br />
Для работы с клавиатурой используются следующие порты ввода-вывода:<br />
* C000&mdash;C00F &ndash; код нажатой клавиши (младшие 7 битов). Старший бит, равный 1, означает, что код готов к чтению.<br />
* C063 &ndash; линия Р/Л, старший бит кода нажатой клавиши (бит 7).<br />
* C010&mdash;C01F &ndash; обращение по этим адресам сбрасывает буфер для приема следующей клавиши.<br />
<br />
[[Категория:Агат]]</div>
Panther