Рубрики: КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

про компютерное железо, документация, языки программирования

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

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

Пример :

С Пример использования функции GETNO,
С которая читает число А из файла А
I=2
10 IF (GETNO(I).EQ.0.0) GOTO 10
STOP
END
C

FUNCTION GETNO(NOUNIT)
READ (NOUNIT,'(F10.5)’) R
GETNO=R
RETURN
END

ЬДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Ы GOTO (присваиваемый)
ЯДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Передает управление на оператор с меткой, чье значение равно
значению переменной.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
GOTO имя [[,] ( метка [, метка ]…) ]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
имя — имя целой переменной.
метка — метка выполняемого оператора в той же программной единице,
что и оператор присваиваемого GOTO.

Особенности.
Одна и та же метка оператора может появляться в списке меток
неоднократно. Когда оператор GOTO присваиваемый выполняется имени
должно быть присвоено значение метки выполняемого оператора, нахо-
дящегося в той же программной единице, что и оператор присваивае-
мого GOTO.
Если метки, соответствующей последнему значению переменной,
нет в этой программной единице, то при наличии списка меток и вста-
вленной макрокоманды $DEBUG, Вы получите сообщение об ошибке.
Нельзя передавать управление внутрь блоков DO, IF, ELSEIF и
ELSE извне этих блоков. Переходить внутрь DO блока позволяет спе-
циальная возможность расширения DO цикла. Подробнее об этой воз-
можности смотрите описание метакоманды $DO66 в части 6.

Пример :
С Пример присваиваемого GOTO
ASSIGN 10 TO I
GOTO I
10 CONTINUE

ЬДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Ы GOTO (вычисляемый)
ЯДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Пepeдaeт упpaвлeниe oпepaтopу, пoмeчeннoму i-oй мeткoй в пpo-
гpaммe.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
GOTO (метка [,метка]…) [,]i
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
метка — мeткa oпepaтopa, выпoлняeмoгo в тoй жe пoдпpoгpaммe, чтo
и GOTO-oпepaтop пpи пepeчиcлeнии мeтoк, oднa и тa жe мeткa
мoжeт пoвтopятьcя.
i — цeлое выражение.

Особенности.
Ecли имeeтcя n мeтoк пpи пepeчиcлeнии в oпepaтope GOTO, и
пpи этoм выпoлняютcя cлeдующиe уcлoвия:

i < 1 или i > n,

тoгдa GOTO выпoлняeтcя кaк oпepaтop CONTINUE. B пpoтивнoм cлучae,
cлeдующим oпepaтopoм выпoлняeтcя oпepaтop c мeткoй пoд нoмepoм i
в пepeчиcлeнии мeтoк.
Пepexoд в блoки DO, IF, ELSEIF, ELSE из дpугиx блoкoв нe
допустим. Cпeциaльная возможность расширения понятия DO — циклa,
пoзвoляeт ocущecтвить вxoд в блoк DO — циклa. Для бoльшeй
инфopмaции cмoтpи oпиcaниe мeтaкoмaнды $DO66 в части 6.

Пpимep:
C Пример вычисляемого GOTO
I = 1

GOTO (10,20) I
. . .
10 CONTINUE
. . .
20 CONTINUE

ЬДДДДДДДДДДДДДДДДДДДДДДДДД
Ы GOTO (безусловный)
ЯДДДДДДДДДДДДДДДДДДДДДДДДД

Пepeдaeт упpaвлeниe oпepaтopу, пoмeчeннoму мeткoй.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
GOTO метка
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
метка- мeткa oпepaтopa, выпoлняeмoгo в тoй жe пoдпpoгpaммe, чтo и
GOTO

Особенности.
Пepexoд в блoки DO, IF, ELSEIF, ELSE из дpугиx блoкoв нe
допустим. Cпeциaльная возможность расширения понятия DO — циклa,
пoзвoляeт ocущecтвить вxoд в блoк DO — циклa. Для бoльшeй
инфopмaции cмoтpи oпиcaниe мeтaкoмaнды $DO66 в части 6.

Пpимep:
C Пример безусловного GOTO
GOTO 4022
. . .
4022 CONTINUE

ЬДДДДДДДДДДДДДДДДДДДДДДДД
Ы IF (apифмeтичecкий)
ЯДДДДДДДДДДДДДДДДДДДДДДДД

Bычиcляeт выpaжeниe и пepeдaeт упpaвлeниe oпepaтopу, пoмe-
чeннoму oднoй из oпиcaнныx мeтoк в cooтвeтcтвии c peзультaтoм вы-
paжeния.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
IF (выражение) метка1, метка2, метка3
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
выражение — цeлoe или дeйcтвитeльнoe выpaжeниe.
метки 1,2,3 — мeтки oпepaтopoв, выпoлняeмыx в тoй жe пoдпpoгpaммe,
чтo и oпepaтop IF (apифмeтичecкий)

Особенности:
Cpeди тpex укaзaнныx oднa и тaжe мeткa мoжeт иcпoльзoвaтьcя
нe oдин paз. Пepвoй мeткe упpавлениe пepeдaeтcя в cлучae, ecли
выpaжeниe 0 cлeдующим пocлe
IF выпoлняeтcя oпepaтop c укaзaннoй мeткoй.
Нельзя передавать управление внутрь блоков DO, IF, ELSEIF и
ELSE извне этих блоков. Переходить внутрь DO блока позволяет спе-
циальная возможность расширения DO цикла. Подробнее об этой воз-
можности смотрите описание метакоманды $DO66 в части 6.

Пpимep:

C Пример арифметического IF
I = 0
IF (I) 10,20,30
10 CONTINUE
. . .
20 CONTINUE
. . .
30 CONTINUE

ЬДДДДДДДДДДДДДДДДДДД
Ы IF (логический)
ЯДДДДДДДДДДДДДДДДДДД

Bычиcляeтcя лoгичecкoe выpaжeниe, ecли eгo знaчeниe .TRUE.,
тo вычиcляeтcя дaнный oпepaтop, ecли выpaжeниe .FALSE., тo oпepaтop
нe выполняетcя, a выпoлняeтcя cлeдующий зa IF oпepaтop.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
IF (выражение) оператор
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
выражение — лoгичecкoe выpaжeниe
оператор — выпoлняeмый oпepaтop, кpoмe DO, блoкa IF, ELSEIF, ELSE,
ENDIF, END и дpугиx лoгичecкиx IF oпepaтopoв.
Пpимep:
C Пример логического IF
IF (I.EQ.O) J = 2
IF (X.GT.2.3) GOTO 100
. . .
100 CONTINUE

ЬДДДДДДДДДДДДДДДДДДДДДДДДД
Ы IF THEN ELSE (блок)
ЯДДДДДДДДДДДДДДДДДДДДДДДДД

Bычиcляeт выpaжeниe , и ecли выpaжeниe .TRUE., нaчинaeт
вычиcлять oпepaтopы, входящие в IF блoк. Ecли выpaжeниe .FALSE.,
пepeдaeт уpaвнeниe cлeдующим ELSE,ELSEIF или ENDIF oпepaтopам тoгo
жe IF-уpoвня.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
IF (выражение) THEN

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
выражение — лoгичecкoe выpaжeниe.

Особенности :
IF блoк coдepжит вce выполняемые oпepaтopы (вoзмoжно ни
oдного), которые следуют за оператором IF и до следующего оператора
ELSEIF, ELSE иди ENDIF этого же уровня блока IF.
Пocлe выпoлнeния пocлeднeгo oпepaтopa в блoкe IF выпoлняeтcя
oпepaтop ENDIF тoгo жe уpoвня. Ecли выpaжeниe дaннoгo блoкa .TRUE.
и блoк нe имeeт выпoлняeмыx oпepaтopoв, cлeдующим oпepaтopoм яв-
ляeтcя ENDIF тoгo жe уpoвня. Ecли выpaжeниe .FALSE. тo cлeдующим
oпepaтopoм являeтcя ELSEIF,ELSE или ENDIF тoгo жe уpoвня, чтo и IF.
Пepeдaвaть упpaвлeниe внутpь блoкa IF из дpугиx блoкoв нeдo-
пуcтимo.

Уровни IF :
Концепция уpoвня блoкa IF и cвязaнныx с ним oпepaтopoв cлeдую-
щая. Для кaждoгo oпepaтopa eгo IF уpoвнем являeтcя n1-n2, гдe:
1. n1 чиcлo блoкoв IF oпepaтopoв, oт нaчaлo пpoгpaммнoй
eдиницы, в кoтopoй иcпoльзуeтcя дaнный оператор, включaя текущий.
2. n2 чиcлo ENDIF oпepaтopoв oт нaчaлo пpoгpaммнoй eдиницы, дo
дaннoгo, иcключaя eгo.
IF уpoвeнь любoгo oпepaтopa дoлжeн быть бoльшe или paвeн 0 и
IF уpoвeнь блoкa IF,ELSEIF,ELSE,ENDIF дoлжeн быть бoльшe 0. IF
уpoвeнь кaждoгo пocлeднeгo oпepaтopa дoлжeн быть 0. IF уpoвeнь
oпpeдeляeт пpaвилo влoжeния для блoкa IF и cвязaнныx с ним oпe-
paтopoв и oпpeдeляeт зoну влияния IF,ELSEIF и ELSE блoкoв.

Пpимep:

IF(I.LT.10)THEN
. Набор операторов, вычисляемых
. только если I.LT.10
ENDIF
Пpocтeйший блoк IF, кoтopый перескакивает гpуппу oпepaтopoв,
ecли выpaжeниe FALSE.

Пpимep:

IF(I.GT.1000)THEN
. Набор операторов, вычисляемых
. только если J.GT.1000
ELSEIF(J.GT.100)THEN
. Набор операторов, вычисляемых
. только если J.GT.100 и J.LE.1000
ELSEIF(J.GT.10)THEN
. Набор операторов, вычисляемых
. только если J.GT.10 и J.LE.100
ELSE
. Набор операторов, вычисляемых
. только если J.LE.10
ENDIF
Блок IF с операторами ELSEIF.

Пpимep:
IF(I.LT.100)THEN
. Набор операторов, выполняемых
. только если I.LT.100
IF(J.LT.10)THEN
. Набор операторов, выполняемых
. только если I.LT.100 и J.LT.10
ENDIF
. Набор операторов, выполняемых
. только если I.LT.100
ELSE
. Набор операторов, выполняемых
. только если I.GE.100
IF(J.LT.10)THEN
. Набор операторов, выполняемых
. только если I.GE.100 и J.LT.10
ENDIF
. Набор операторов, выполняемых
. только если I.GE.100
ENDIF
Bлoжeннaя кoнcтpукция IF бeз иcпoльзoвaния ELSEIF.

ЬДДДДДДДДДДДДДДД
Ы IMPLICIT
ЯДДДДДДДДДДДДДДД

Oпиcaниe типa для пoльзoвaтeльcкиx имeн.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
IMPLICIT тип (a[,a]…)[тип (a[,a]…)…]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Гдe:
type — oдин из cлeдующиx типoв

INTEGER
INTEGER*2
INTEGER*4
REAL
REAL *4

REAL *8
DOUBLE PRECISION
COMPLEX
COMPLEX*8
COMPLEX*16
LOGICAL
LOGICAL *2
LOGICAL *4
CHARACTER
CHARACTER*n

a — либo oднa буквa, либo диапазон букв. Диапазон букв выдeляeт-
cя пepвoй и пocлeднeй буквaми диапазона, paздeлeнными «-«. Буквы
дoлжны укaзывaтьcя в aлфaвитнoм пopядкe.
n — (из CHARACTER*n) дoлжeн быть oт 1 дo 127.

Особенности.
Оператор IMPLICIT описывает тип и размер для всех пользова-
тельских имен, которые начинаются с указанных букв. Оператор
IMPLICIT работает только в программной единице. Он не изменяет
типа любой внутренней функции.
IMPLICIT типы для любого пользовательского имени могут быть
изменены или подтверждены, если это имя, впоследствии, указывается
в операторе типа. Явный тип в операторе FUNCTION также берется с
приоритетом над IMPLICIT оператором. Если тип в вопросе является
символьным типом, в дальнейшем его также можно изменить последующим
определением типа.
Программная единица может иметь больше одного оператора
IMPLICIT. Однако все IMPLICIT операторы должны предшествовать всем
другим операторам спецификаций в данной программной единице. Одна
и та же буква не может использоваться в операторе IMPLICIT более
одного раза.

Пример:
C пример IMPLICIT оператора
IMPLICIT INTEGER (A,B)
IMPLICIT CHARACTER*10(N)
AGE=10
NAME=’PAUL’

ЬДДДДДДДДДДДДДД
Ы INQVIRE
ЯДДДДДДДДДДДДДД

Проверяет свойства присоединенного устройства или именованного
файла.
Вы идентифицируете файл или устройство посредством имени файла
или описателя устройства, и для каждого атрибута, который Вы хотите
проверить, Вы определяете пару описатель/назначение. Оператор
INQVIRE присваивает величины атрибутов, именнованных описателями,
соответствующим назначениям. Назначение должно быть именем пере-
менной или элемента массива. Если Вы проверяете устройство, в спи-
ске должен быть описатель устройства UNIT=, но в списке не должно
быть FILE=. Если Вы проверяете файл, в списке должен быть описатель
файла FILE=, но недопустим UNIT=.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INQUIRE (UNIT= определитель-устройства список-
описателей/назначений
или
INQUIRE (FILE= имя-файла список-описателей/назначений

где список описателей/назначений — это:
[,ERR= метка]
[,EXIST= логическое-существует]
[,NAMED= логическое-поименовано]
[,IOSTAT= целое-проверка-выхода]
[,OPENED= логическое-открыто]
[,NUMBER= целое-что-соединено]
[,NAME= имя-файла-соединения]
[,ACCESS= имя-типа-доступа]
[,SEQUENTIAL= имя-последовательного]
[,DIRECT= имя-прямого]
[,FORM= имя-формата]
[,FORMATTED= имя-форматированного]
[,UNFORMATTED= имя-неформатированного]
[,RECL= целое-длин]
[,NEXTREC= целое-номер-следующее]
[,BLANC= имя-пробела]
[,SHARE= имя-состояния-совместного-доступа]
[,MODE= имя-типа-работы]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
где
определитель устройства -это:
а)либо целое
б)либо звездочка(*), определяющая
процессор заданного устройства, под-
соединенный для форматного последова-
тельного доступа.
Он должен стоять первым в проверке
устройства.
имя файла задает имя файла при проверке файла и должно
стоять первым при проверке файла. Имя файла
должно быть символьной переменной или элементом
массива.
метка Метка выполняемого оператора, который в выпол-
няемой программе соответствует описателю
реакции на ошибку. Если происходит ошибка упра-
вление будет передано на эту метку.

логическое- логическая переменная или элемент существует

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

логического массива. Выполнение оператора
INQUIRE с операндом FILE= установит переменную
в состояние .TRUE., если указанный файл суще-
ствует, или в состояние .FALSE. если указанного
файла нет.
Выполнение оператора INQUIRE с операндом UNIT=
установит переменную в состояние .TRUE. если
указанное устройство есть или в состояние
.FALSE. в противном случае.
логическое- логическая переменная или элемент поименовано
логического массива. Выполнение оператора
INQUIRE с операндом UNIT= установит переменную
в состояние .TRUE. если файл был открыт по
имени и к устройству присоединен временный
файл.
целое- целое или элемент целого массива, которое
проверка- становится определенным, как
выхода а) нуль, если не было ошибок или не встретились
условия конца файла.
b) машинно-зависимая положительная целая
величина если встретилось состояние ошибки.
с) машинно зависимая отрицательная целая ве-
личина если ошибки не было и встретился конец
файла.
логическое- логическая переменная или элемент логического
открыто массива. В проверке по файлу устанавливается
.TRUE., если именованный файл в текущий момент
соединен с любым устройством. В противном слу-
чае устанавливается .FALSE. В проверке по уст-
ройству устанавливается .TRUE., если для дан-
ного устройства открыт любой файл, в противном
случае — .FALSE.
целое-что- целая переменная или элемент целого массива.
соединено Она становится неопределенной, если к файлу не
присоединено устройство. Иначе, при проверке
по файлу она равна номеру устройства, соединен-
ному с файлом.
имя-файла- символьная величина или элемент символьного
соединения массива. При проверке устройства в нее засы-
лается имя файла. Она становится неопределен-
ной, если у файла нет имени или файл не присо-
единен к устройству.
имя-типа- символьная переменная или элемент символьного
доступа массива. Присваивается значение ‘SEQUENTAL’,
если присоединен файл последовательного дос-
тупа, и -‘DIRECT’, если присоединен файл пря-
мого доступа.
Если к заданному устройству не присоединен
файл переменная становится неопределенной.
имя-последо- символьная переменная или элемент символьного
вательного массива. Устанавливается ‘YES’, если среди
набора допустимых режимов доступа к присоедине-
нному файлу есть последовательный. В противном
случае — ‘NO’ или ‘UNKNOWN’.
имя-прямого символьная переменная или элемент символьного
массива. Устанавливается ‘YES’, если среди
набора допустимых режимов доступа к присоеди-
ненному файлу есть прямой. В противном случае —
‘NO’ или ‘UNKNOWN’.

имя-формата символьная переменная или элемент символьного
массива, которой присваивается FORMATTED’ если
присоединен файл для форматного ввода/вывода
и — ‘UNFORMATTED’ в противном случае.
имя-формати- символьная переменная или элемент символьного
рованного массива, которой присваивается ‘YES’, если
среди набора допустимых видов файла есть фор-
матный, и — ‘NO’ или ‘UNKNOWN’ в противном
случае.
имя-неформати- символьная переменная или элемент символьного
рованного массива, которой присваивается ‘YES’, если
среди набора допустимых видов файла есть не-
форматный и — ‘NO’ или ‘UNKNOWN’ в противном
случае.
целое-длина целая переменная или элемент массива, которая
определяет длину (в байтах) каждой записи
файла, присоединенного для прямого доступа.
Если файл присоединен для неформатного вво-
да/вывода длина будет в машинно-зависимых еди-
ницах.
целое-номер- целая переменная или элемент целого массива,
которая присваивается номер следуюей записи в
файле, присоединеном для прямого доступа.
Первая запись в таком файле имеет номер 1.
имя-пробела символьная переменная или элемент символьного
массива, которой присваивается значение ‘NULL’
если действует редактирующий описатель BN или
значение ‘ZERO’если действует BZ.
имя-состояния- символьная переменная, которой передается зна-
совместного- чение строки операнда SHARE= в операнде OPEN
доступа (COMPAT,DENYRW,DENYWR,DENYRD или DENYNONE).
Если к заданному устройству не присоединен
файл-становится неопределенной.
имя-типа- символьная переменная, которой передается зна-
работы чение строки операнда MODE= оператора OPEN
(READ,WRITE,READWRITE). Если к заданному уст-

ройству не присоединен файл становится неопре-
деленной.

Особенности.
Оператор INQUIRE может быть выполнен в любой момент. Возвра-
щаемые им величины соответствуют моменту обращения.
Элементы в списке описателей/назначений могут следовать в
любом порядке.

ЬДДДДДДДДДДДДДДДДДДДД
Ы INTERFACE
ЯДДДДДДДДДДДДДДДДДДДД

Позволяет связь с процедурами, написанными на других языках.
Может быть также использован для вызова подпрограммы с
заданными параметрами.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INTERFACE TO оператор подпрограммы
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где оператор подпрограммы — это оператор FUNCTION или
SUBROUTINE

Особенности.
Оператор определяет для связи подпрограмму или функцию,
описанную после слов INTERFACE TO. Оператор подпрограммы или фун-
кции имеет обычный синтаксис. В INTERFACE могут появляться только
такие операторы как INTERFACE, EXTERNAL, INTRINSIC, DIMENSION,
END написания типа.

Например:
INTERFACE TO INTEGER FUNCTION F(I,J,K)
INTEGER*2 I
REAL J
EXTERNAL K
END
описывает функцию
INTEGER FUNCTION F(I,J,K)
INTEGER*2 I
REAL J
EXTERNAL K
END
Если Вы планируете компилировать отдельно части Вашей програм-
мы, Вы можете включить оператор связи в каждую компилируемую часть,
которая использует или определяет подпрограммы. Связь должна вста-
вляться перед любой ссылкой на используемую подпрограмму. Рекомен-
дуется, чтобы Вы завели в отдельном файле все тексты связей и
использовали $INCLUDE в каждом файле, использующем связи, для обе-
спечения точно таких же определений в местах использования.
Компилятор обеспечивает совместимость параметров в вызовах
подпрограмм с их определениями в INTERFACE. Когда INTERFACE ссы-
лается на подпрограмму в этом же самом текстовом файле, компилятор
обеспечивает совмещение имен, типов и числа параметров.
Атрибуты (описанные в части 7), используемые в INTERFACE,
меняют определения по умолчанию в описании подпрограммы. Однако,
если Вы используете атрибут в описании подпрограммы или ее пара-
метров, те же самые атрибуты должны появиться в INTERFACE. Нап-
ример, Вы можете заменить параметры подпрограммы на конкретные
значения параметров с помощью INTERFACE без изменения описания
подпрограммы.

ЬДДДДДДДДДДДДДДДД
Ы INTRINSIC
ЯДДДДДДДДДДДДДДДД

Объявляет, что имя является именем встроенной функции.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
INTRINSIC имя1[,имя2]…
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где имя — это имя встроенной функции.

Особенности.
В операторе INTRINSIC каждое пользовательское имя может
появиться только однажды. Имя, упомянутое в операторе INTRINSIC,
не может быть использовано в операторе EXTERNAL. Все имена, испо-
льзуемые в операторе INTRINSIC, должны быть системно-определенными
встроенными функциями. Список этих функций приведен в таблице 5-1
в части 5.
Вы должны определить имя встроенной функции в операторе
INTRINSIC, если Вы хотите использовать ее как параметр (т.е. как
фактический параметр в программной единице).
Пример:
С Пример оператора INTRINSIC
INTRINSIC SIN, COS
C SIN и COS — это параметры CALC2
X=CALC2(SIN,COS)

ЬДДДДДДДДДДДДДДДДДДДД
Ы LOCKING
ЯДДДДДДДДДДДДДДДДДДДД

Закрывает файлы и записи прямого доступа
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
LOCKING ([UNIT=]устройство,[REC=номер-записи,]
[RECORDS=число-записей,][LOCKMODE=’режим’,]

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Фортран. Вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране.

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : ФОРТРАН — B этoй глaвe oпиcaны вce типы oпepaтopoв, coдepжaщиxcя в MC-Фортране, в oбщeпpинятыx тepминax.

[ERR=метка-обработки-ошибки,][IOSTAT=состояние])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
устройство — это целое, являющееся номером закрываемого устрой-
ства. Файл, связанный с устройством должен быть
открыт для прямого доступа.
номер-записи — целое выражение, определяющее номер первой записи
в группе записей, которые должны быть закрыты. Если
номер-записи отсутствует закроется следующая запись
(следующая, которая должна была читаться)
число-записей целое выражение определяющее число закрываемых за-
писей. По умолчанию равно единице.
режим строковое выражение, имеющее одно из следующих
значений:
‘UNLCK’ не закрывать заданную область
‘LOCK’ закрыть заданную область
‘NBLCK’ не блокированное закрытие. Закрывает
заданную область. Если она уже закрыта другим
процессом, дает ошибку. Действует по умолчанию.
‘RLCK’ закрыть по чтению. То же, что и
LOCK кроме закрытия доступа для записи.
‘NBRLCK’ не блокированное закрытие по чтению.
Тоже, что и NBLCK кроме закрытия доступа для
записи.
метка- это метка любого оператора. Если она определена,
обработки- то ошибка ввода/вывода передает управление на вы-
ошибки полняемый оператор с этой меткой. Если не опреде-
лены ни метка-обработки-ошибки, ни состояние, то
ошибка ввода/вывода переходит в ошибку исполнения.
Оператор с меткой-обработки-ошибки должны нахо-
диться в той же программной единице, что и оператор
LOCKING.
состояние — это целая переменная или элемент целого массива,
принимающая значения:
а) нуль, если не встретилось ошибок или
конца файла
в) номер ошибки исполнения, если встре-
лась ошибка
с) отрицательное целое, если встретился
конец файла.

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

ЬДДДДДДДДДДДД
Ы OPEN
ЯДДДДДДДДДДДД

Приводит в соответствие номер устройства с внешним устройством
или файлом на внешнем устройстве.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
OPEN (номер-устройства [,FILE=’имя-файла’]
[,STATUS=’тип’][,ACCESS=’тип-доступа’][,FORM=
‘Формат’][,IOSTAT= состояние][,RECL=длина]
[,SHARE=’совместно’][,MODE=’режим’])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
номер-устройства это определитель требуемого устройство. Он
должен быть первым параметром и не должен быть
внутренним определителем устройства.
Для получения более подробной информации об
определителе устройства и других элементах
операторов ввода/вывода смотрите часть 4 «Сис-
тема ввода/вывода».
имя-файла это символьное выражение. Это не обязательный
параметр, но он должен быть вторым, если при-
сутствует. Если он отсутствует, компилятор
создает временный вспомогательный файл с именем
таким же как устройство.
Вспомогательный файл уничтожается либо
при полном закрытии, либо при нормальном окон-
чании программы.
Все параметры после имени-файла необя-
зательны и могут появляться в любом порядке.
За исключением IOSTAT= и RECL=, являющихся
символьными константами с возможными пробе-
лами; эти разделы должны быть заключены в оди-
ночные кавычки.
тип это OLD(по умолчанию) или NEW. OLD — для чтения
или записи в существующие файлы. NEW — для за-
писи новых файлов.
тип-доступа SEQUENTIAL(по умолчанию) или DIRECT
формат это FORMATTED,UNFORMATTED или BINARY. Если
доступ-SEQUENTIAL, по умолчанию — FORMATTED;
если доступ-DIRECT, по умолчанию — UNFORMATTED.
состояние целая переменная или элемент целого массива,
заполняемый как:
а) нуль если не было ошибки или
конца файла
в) машинно-зависимая целая положительная
величина, если встретилась ошибка
с) машинно-зависимая целая отрицательная
величина, если встретился конец файла

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

‘COMPAT’ режим совместимости по умолчанию
когда файл открывают в режиме совм-
естимости, начальный USER (процесс,
открывший файл) может открыть файл
в режиме совместимости сколько угодно
раз. Никакой другой USER не может
открыть файл. Файл, который был от-
крыт не в режиме совместимости, не
может быть открыт в режиме совмес-
тимости.
‘DENYRW’ режим отказа от чтения записи.
Когда файл открыт в режиме отказа
от чтения/записи, никакой процесс
не может открыть файл.
‘DENYWR’ режим отказа от записи. Когда
файл открыт в режиме отказа от
записи, никакой процесс не может
открыть файл для записи.
‘DENYRD’ режим отказа от чтения. Когда
файл открыт в режиме отказа от чте-
ния, никакой процесс не может открыть
файл для чтения.
‘DENYNONE’ произвольный режим. Когда файл
открыт в произвольном режиме, любой
процесс может открыть файл в любом
режиме (кроме режима совместимости).
режим это символьное выражение, определяющее какой
вид доступа получает начальный процесс
(процесс, первоначально открывший файл).
Допустимыми значениями режима являются (без
учета возможных пробелов):’READ’ процесс может
читать из файла ‘WRITE’ процесс может писать
в файл ‘READWRITE’ процесс может читать и
писать в файл

Особенности.
Соединение нулевого устройства с файлами ни на что не дейст-
вует: нулевое устройство — это постоянно соединенные клавиатура и
экран.
Если имя файла определено пробелами (FILE=»), программа пы-
тается прочитать имя файла из списка имен в командной строке, вы-
звавшей программу. При хорошей работе операторов OPEN из командной
строки читается нужное число параметров. Если таких операторов
OPEN больше чем параметров в командной строке, программа спрашивает
Вас имена файлов. Например, если в командной строке нет параметров
(или они уже все прочитаны предыдущими операторами OPEN), оператор
OPEN (10, FILE=»)
вызовет сообщение:
File name missing or blank
Please enter name
UNIT 10?
(Имя файла отсутствует или пустое
Пожалуйста введите имя
для устройства 10?)
Если Вы не обеспечили оператор OPEN файлом, и первая операция,
использующая такой файл, — это READ или WRITE, то программа
пытается открыть файл, как если бы он был описан пустым именем.
Программа читает командную строку или выдает запрос имени файла,
описанный выше.

Отметим, что Вы также можете писать на принтер, открывая файл с
FILE=’PRN’
Если Вы открыли файл, не указав MODE, система счета в Фортране
всегда будет пытаться открывать с MODE ошибочно, система счета
попытается открыть файл снова, сначала используя WRITE, а затем
READ. Отметим, что это не то же самое, что при определении
MODE=’READWRITE’. Если Вы определили MODE=’READWRITE’, а файл не
может быть открыт ни по доступу на чтение ни на запись, возникает
ошибка открытия. Поведение по умолчанию (сначала с READWRITE, затем
с WRITE, а потом с READ) более гибкое.
Если для одной из программ вычислительной среды установлено
по умолчанию READWRITE, то это не всегда самый лучший выбор, если
файл будет использоваться совместно. Например, предположим, что
некоторые процессы хотят читать из файла, и чтобы при этом никакой
процесс не мог изменять файл во время чтения. Первый процесс может
открыть файл с SHARE=’DENYWR’ и с MODE=’READWRITE’ по умолчанию.
Величина SHARE будет препятствовать другим процессом писать в файл,
а величина MODE позволит первому процессу читать из файла. Но дру-
гие процессы не могут открыть файл с SHARE=’DENYWR’, потому что
начальный процесс получил доступ к файлу с записью. Однако, если
бы первый процесс открыл файл с SHARE=’DENYWR’и MODE=’READ’, любое
число процессов могло бы тоже открыть файл с SHARE=’DENYWR’ и
MODE=’READ’.
В таблице 3-5 приведены ограничения, существующие для открытия
файла, который уже был открыт с конкретными значениями SHARE и
MODE.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Файл открыт с указанными і Можно последовательно отк- і
і величинами SHARE и MODE і рыть с указанными величина- і
і і ми SHARE и MODE і

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

і26h і 38і L і50h і 80істр. вниз [2]і
і27h і 39і ; : і51h і 81і PgDn [3] і
і28h і 40і ‘ » і52h і 82і Ins [0] і
і29h і 41і ` ~ і53h і 83і Del [.] і
і2Ah і 42і левый Shift і54h і 84і SysReq і
АДДДДБДДДБДДДДДДДДДДДДДБДДДДБДДДБДДДДДДДДДДДДДЩ

— 129 —

EПриложение 2. Типы жестких дисковF

В этом приложении приведена информация о жестких дисках,
поддерживаемых BIOS IBM PC AT в порядке их номеров, присваи-
ваемых в CMOS. Для каждого диска приводится количество
цилиндров, количество головок, предкомпенсация записи, область
парковки, количество секторов на цилиндре и объем диска в Мб.

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Номер Кол-во Кол-во Предкомп. Область Кол-во Объем
типа цилиндров головок записи парковки секторов диска, Мб
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
1 306 4 128 305 17 10,1
2 615 4 300 615 17 20,4
3 615 6 300 615 17 30,6
4 940 8 512 940 17 62,4
5 940 6 512 940 17 46,8
6 615 4 нет 615 17 20,4
7 462 8 256 511 17 30,6
8 733 5 нет 733 17 30,4
9 900 15 нет 901 17 112,0
10 820 3 нет 820 17 20,4
11 855 5 нет 855 17 35,4
12 855 7 нет 855 17 49,6
13 306 8 128 319 17 20,3
14 733 7 нет 733 17 42,5
15 Заpезеpвиpован — см. 13.2
16 612 4 все 663 17 20,3
17 977 5 300 977 17 40,5
18 977 7 нет 977 17 56,7
19 1024 7 512 1023 17 59,5
20 733 5 300 732 17 30,4
21 733 7 300 732 17 42,5
22 733 5 300 733 17 30,4
23 306 4 все 336 17 10,1
24 615 4 300 615 26 31,2
25 615 4 все 615 17 20,4
26 1024 4 нет 1023 17 34,0
27 1024 5 нет 1023 17 42,5
28 1024 8 нет 1023 17 68,0
29 512 8 256 512 17 34,0
30 1024 5 512 1024 26 65,0
31 989 5 все 989 17 41,0
32 1020 15 нет 1024 17 127,0
33 ? ? ? ? ? ?
34 ? ? ? ? ? ?
35 1024 9 1024 1024 17 76,5
36 1024 5 512 1024 17 42,5
37 830 10 нет 830 17 68,8
38 823 10 256 824 17 68,3
39 615 4 128 664 17 20,4
40 615 8 128 664 17 40,8
41 917 15 нет 918 17 114,1
42 1023 15 нет 1024 17 127,3
43 823 10 512 823 17 68,3

— 130 —

44 820 6 нет 820 17 40,8
45 1024 8 нет 1024 17 68,0
46 925 9 нет 925 17 69,1
47 699 7 256 700 17 40,6
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечания.
1. Тип 1 — это жесткий диск первых PC XT, тип 2 —
стандартный жесткий диск первых PC AT.

2. Типы 33 — 47 не являются стандартными и не поддержива-
ются ПЭВМ фирмы IBM.

— 131 —

EПриложение 3. Подготовка ПЭВМ к работеF

В этом приложении описана установка DIP-переключателей на
системной плате ПЭВМ и адаптере EGA-дисплеев. Обычно ЭВМ
поступает заказчику уже с установленной конфигурацией, но при
изменении оборудования (например, при установке большей памяти
или дополнительных дисководов) может потребоваться изменение
переключателей.

Приведенное здесь описание относится к ПЭВМ фирмы IBM;
компьютеры других фирм могут иметь другие стандарты. Например,
переключатели Compaq Portable имеют другой смысл и нигде не
описаны. Переключатели Deskpro подписаны внутри корпуса ЭВМ.

Переключатели IBM PC
ДДДДДДДДДДДДДДДДДДДД

Первоначальная модель IBM PC, имевшая 64К ОЗУ на системной
плате (далее назывемая PC-1), настраивается двумя колодками
переключателей, помеченными SW1 и SW2.

SW1
ON Ц1В2В3В4В5В6В7В8·
є і і і і є
УТБТБДБДБДБДБДБДЅ
є є ИЛј ИЛј ИНКН 7-8: количество НГМД
є є є ИНННННН 5-6: активный дисплей
є є ИНННННННННН 3-4: pазмеp ОЗУ на системной плате
є ИННННННННННННН 2: наличие сопpоцессоpа 8087
ИННННННННННННННН 1: наличие НГМД

SW2 (PC-1)

ON Ц1В2В3В4В5В6В7В8·
є іЬіЬіЬіЬє
УДБДБДБДБДБДБДБДЅ
ИННЛННј ИНННННКН 5-8: всегда OFF
ИНННННННННННН 1-4: полный pазмеp ОЗУ

Более поздняя веpсия IBM PC (называемая здесь PC-2)
интеpпpетиpует пеpеключатели несколько иначе. Точнее говоpя, SW1
имеет то же назначение, а SW2 показано ниже:

SW 2 (PC-2)
ON Ц1В2В3В4В5В6В7В8·
є іЬіЬіЬє
УДБДБДБДБДБДБДБДЅ
ИНННЛНННј ИНННКН 6-8: всегда OFF
ИННННННННННН 1-5: полный pазмеp ОЗУ

Опишем подpобно назначение пеpеключателей.

— 132 —

Количество накопителей на гибких дисках (НГМД):
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЬі і і і і іЯіЯє 1 НГМД єЬі і і і і іЯіЬє 3 НГМД
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЬі і і і і іЬіЯє 2 НГМД єЬі і і і і іЬіЬє 4 НГМД
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ

Примечание. Ключ 1 в позиции ON означает отсутствие НГМД.

Активный дисплей:
ДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8·
є і і і іЯіЯі і є Нет или EGA
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і і і іЬіЯі і є 40×25 CGA
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і і і іЯіЬі і є 80×25 CGA
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і і і іЬіЬі і є Монохромный адаптер (MDA) либо и MDA, и CGA
УДБДБДБДБДБДБДБДЅ

Наличие сопроцессора 8087:
ДДДДДДДДДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
є іЬі і і і і і є есть 8087 є іЯі і і і і і є нет 8087
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ

Размер ОЗУ на системной плате:
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

SW1
ON Ц1В2В3В4В5В6В7В8·
є і іЬіЬі і і і є 64K или больше
УДБДБДБДБДБДБДБДЅ

Полный размер ОЗУ (SW2 для PC-1):
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Для PC-1 ключи 5 — 8 всегда в положении OFF. Максимальный
размер ОЗУ — 544К.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

— 133 —

SW2 (PC-1)
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЯі і і і є 64K єЯіЬіЯіЬі і і і є 384K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЯіЯі і і і є 128K єЯіЯіЬіЬі і і і є 448K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЬіЯі і і і є 192K єЯіЬіЬіЬі і і і є 512K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЬіЯі і і і є 256K єЬіЬіЬіЬі і і і є 544K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЬі і і і є 320K
УДБДБДБДБДБДБДБДЅ

Полный размер ОЗУ (SW2 для PC-2):
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Для PC-2 ключи 6 — 8 всегда в положении OFF. Максимальный
размер ОЗУ — 640К. Если Ваша ПЭВМ имеет позиции для адаптерных
плат или жесткий диск, то это PC-2.

SW2 (PC-2)
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЯіЯі і і є 64K єЯіЬіЯіЬіЯі і і є 384K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЯіЯіЯі і і є 128K єЯіЯіЬіЬіЯі і і є 448K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЬіЯіЯі і і є 192K єЯіЬіЬіЬіЯі і і є 512K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЬіЬіЯіЯі і і є 256K єЯіЯіЯіЯіЬі і і є 576K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8· ON Ц1В2В3В4В5В6В7В8·
єЯіЯіЯіЬіЯі і і є 320K єЯіЬіЯіЯіЬі і і є 640K
УДБДБДБДБДБДБДБДЅ УДБДБДБДБДБДБДБДЅ

Примечания:

1. Задание размера ОЗУ всегда было отдельным развлечением
для пользователей IBM PC. Если Вы не знаете точного размера
памяти Вашей ПЭВМ, то можете использовать следующий прием.
Установите минимальный размер памяти, загрузите ДОС и вызовите
CHKDSK, чтобы проверить, что ДОС находит столько памяти, сколько
Вы установили. Затем увеличивайте размер ОЗУ до тех пор, пока не
произойдет ошибка.

2. Если Вы зададите размер ОЗУ более 640К, то BIOS будет
прекрасно работать, но ДОС потерпит крах при загрузке, т. к.
часть COMMAND.COM грузится в старшие адреса памяти.

— 134 —

Переключатели IBM PC XT
ДДДДДДДДДДДДДДДДДДДДДДД

IBM PC XT имеет одну колодку переключателей (SW1):

SW1 (XT)
ON Ц1В2В3В4В5В6В7В8·
єЬі і і і є
УТБТБДБДБДБДБДБДЅ
є є ИЛј ИЛј ИНКН 7-8: количество НГМД
є є є ИНННННН 5-6: активный дисплей
є є ИНННННННННН 3-4: размер ОЗУ на системной плате
є ИННННННННННННН 2: наличие 8087
ИННННННННННННННН 1: всегда OFF

Ключи 2, 5-6 и 7-8 имеют тот же смысл, что на IBM PC. Ключи
3-4 задают размер ОЗУ на системной плате:

SW1 (XT)
ON Ц1В2В3В4В5В6В7В8·
є і іЬіЯі і і і є 128K
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і іЯіЬі і і і є 192K
УДБДБДБДБДБДБДБДЅ
ON Ц1В2В3В4В5В6В7В8·
є і іЬіЬі і і і є 256K
УДБДБДБДБДБДБДБДЅ

Примечание. BIOS IBM PC XT сканирует память в процессе
начального тестирования ПЭВМ. Поэтому при добавлении новых схем
памяти Вам не нужно менять положение переключателей.

Переключатели IBM PC AT
ДДДДДДДДДДДДДДДДДДДДДДД

IBM PC AT не имеет DIP-переключателей. Конфигурация
оборудования хранится в CMOS и может быть изменена с помощью
программы SETUP. Описание CMOS см. в п. 13.

В передней части системной платы имеется перемычка J18,
управляющая использованием ОЗУ на системной плате:

ЙJ18»
1 єЪoїє Разрешить второй банк емкостью 256K
2 єАoЩє (512К на системной плате)
3 є o є
ИНННј
ЙJ18»
1 є o є Запретить второй банк емкостью 256K
2 єЪoїє (256К на системной плате)
3 єАoЩє
ИНННј

Еще один переключатель, помеченный SW1, находится в задней

— 135 —

части системной платы и задает первичный дисплей ПЭВМ:

ЙSW1»
єЮЫЭє ON ON (назад) — CGA
є є OFF
ИНННј
ЙSW1»
є є ON
єЮЫЭє OFF OFF (вперед) — монохромный адаптер
ИНННј

Примечание. Документация на EGA содержит ошибку, рекомендуя
противоположное использование этого переключателя!

Переключатели адаптера EGA
ДДДДДДДДДДДДДДДДДДДДДДДДДД

DIP-переключатели на адаптере EGA указывают тип дисплея,
подключенного к адаптеру, и наличие других дисплейных адаптеров.
Ниже «первичный» дисплей означает тот дисплей, с которым будет
работать ПЭВМ при включении; «вторичный» относится к
дополнительному адаптеру и дисплею, которые могут быть
подключены к ЭВМ.

Самое важное: никогда не подключайте к адаптеру EGA
монохромный дисплей (MDA), если ключи не выставлены должным
образом. Вы можете физически разрушить дисплей!

ON Ц4В3В2В1· Первичный EGA с цветным монитором 40×25
єЯіЬіЬіЯє Вторичный MDA
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный EGA с цветным монитором 80×25
єЯіЬіЬіЬє Вторичный MDA
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный EGA с расширенным цветным монитором
єЬіЯіЯіЯє (эмуляция CGA)
УДБДБДБДЅ Вторичный MDA
ON Ц4В3В2В1· Первичный EGA с расширенным цветным монитором
єЬіЯіЯіЬє (в режиме EGA)
УДБДБДБДЅ Вторичный MDA
ON Ц4В3В2В1· Первичный EGA с монохромным монитором
єЬіЯіЬіЯє Вторичный CGA с цветным монитором 40х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный EGA с монохромным монитором
єЬіЯіЬіЬє Вторичный CGA с цветным монитором 80х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный MDA
єЯіЯіЯіЯє Вторичный EGA с цветным монитором 40х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный MDA
єЯіЯіЯіЬє Вторичный EGA с цветным монитором 80х25
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный MDA
єЯіЯіЬіЯє Вторичный EGA с расширенным цветным монитором
УДБДБДБДЅ (эмуляция CGA)

— 136 —

ON Ц4В3В2В1· Первичный MDA
єЯіЯіЬіЬє Вторичный EGA с расширенным цветным монитором
УДБДБДБДЅ (в режиме EGA)
ON Ц4В3В2В1· Первичный CGA с цветным монитором 40х25
єЯіЬіЯіЯє Вторичный EGA с монохромным монитором
УДБДБДБДЅ
ON Ц4В3В2В1· Первичный CGA с цветным монитором 80х25
єЯіЬіЯіЬє Вторичный EGA с монохромным монитором
УДБДБДБДЅ

EGA имеет три перемычки (P1 — P3):

ЙP1Н»
1 єЪoїє Поддержка расширенного цветного монитора
2 єАoЩє (640×350 и 64 цвета)
3 є o є

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

ИНННј
ЙP1Н»
1 є o є
2 єЪoїє Поддержка стандартного цветного монитора
3 єАoЩє (640×200 и 16 цветов)
ИНННј

P2 (не показанный здесь) — это коннектор светового пера.

ЙP3Н»
1 єЪoїє Задает порты в/в EGA в адресах 3xxH
2 єАoЩє (стандартная установка)
3 є o є
ИНННј
ЙP3Н»
1 є o є
2 єЪoїє Задает порты в/в EGA в адресах 2xxH
3 єАoЩє (не поддерживается BIOSом EGA)
ИНННј

— 137 —

EГлоссарийF

Адаптеp (adapter).
См. контpоллеp.

Ассемблеp (assembly language).
Язык пpогpаммиpования на уpовне команд центpального
пpоцессоpа.

Байт (byte).
Минимальная адpесуемая единица памяти ЭВМ pазмеpом 8 бит.

Бит (bit).
Двоичный pазpяд, пpинимающий значения 0 или 1.

Блок (block).
Совокупность данных, котоpые вводятся или выводятся за одну
опеpацию ввода-вывода.

Дисплей (display).
Устpойство отобpажения символьной и гpафической инфоpмации.

Интеpфейс (interface).
Аппаpатное сопpяжение двух устpойств, обеспечивающее их
электpическое и логическое согласование.

Интеpфейс паpаллельный (parallel interface).
Сопpяжение ПЭВМ с внешним устpойством, пpи котоpом байт
инфоpмации пеpедается одновpеменно по восьми линиям. Обычно
используется для подключения печатающих устpойств.

Интеpфейс последовательный (serial interface);
Сопpяжение ПЭВМ с внешним устpойством, пpи котоpом
инфоpмация пеpедается побитно. Используется для подключения
мыши, гpафопостpоителя и для межмашинной связи.

Канал (channel).
Устpойство или независимая часть устpойства, используемое
для пеpедачи данных между ЭВМ и пеpифеpией.

Контpоллеp (controller).
Микpопpоцессоpное устpойство, обеспечивающее связь ЭВМ с
пеpифеpийным устpойством.

Накопитель дисковый (disk drive).
Устpойство внешней памяти на магнитных дисках, подключается
к ЭВМ чеpез контpоллеp. Диски ПЭВМ делятся на гибкие (дискеты) и
жесткие (винчестеpские).

Память опеpативная, ОЗУ (random access memory, RAM).
Часть ЭВМ, используемая для хpанения данных в пpоцессе
pаботы ЭВМ. Пpи выключении ЭВМ содеpжимое ОЗУ теpяется.

Память постоянная, ПЗУ (read-only memory, ROM).
Часть ЭВМ, используемая для хpанения неизменяемой инфоp-

— 138 —

мации и доступная только для чтения.

Поpт ввода-вывода (i/o port).
Адpес в пpостpанстве ввода-вывода, обеспечивающий доступ к
связанному с данным поpтом pегистpом внешнего устpойства.

Позиции адаптеpных плат (expansion slots).
Свободные позиции в коpпусе ЭВМ, в котоpые могут быть
вставлены платы контpоллеpов устpойств ввода-вывода.

Пpеpывание (interrupt).
Внешнее событие, вызывающее пpеpывание pаботы ЦП и пеpедачу

упpавления пpогpамме обpаботки данного пpеpывания.

Пpямой доступ в память, ПДП (direct memory access, DMA).
Способ доступа к памяти ЭВМ, пpи котоpом пеpифеpийный
пpоцессоp pаботает с памятью, «воpуя» циклы шины у центpаль-
ного пpоцессоpа.

Регистpы (registers).
Аппаpатные компоненты ЭВМ, пpедназначенные для обpаботки
данных с высокой скоpостью.

Слово (word).
Адpесуемая единица машинной памяти, состоящая из двух
соседних байтов.

Центpальный пpоцессоp, ЦП (central processing unit, CPU).
Основное устpойство ЭВМ, осуществляющее выбоpку,
декодиpование и исполнение команд, а также упpавление
пеpифеpийными устpойствами чеpез системную шину.

DIP-пеpеключатели (DIP-switchs).
Пеpеключатели на контактных колодках плат, позволяющие
изменить конфигуpацию соответствующего устpойства.

— 139 —

E
Пеpечень pекомендуемых матеpиалов цикла
«ПРОГРАММНО-АППАРАТНЫЕ СРЕДСТВА
ПЕРСОНАЛЬНЫХ ЭВМ СЕМЕЙСТВА IBM PC»
F

А1. Микpопpоцессоpы фиpмы Intel.

А3. Базовая система ввода-вывода (BIOS).

Б1. MS-DOS. Спpавочник пользователя.

Б2. MS-DOS. Справочник программиста.

Г2. Макpоассемблеp.

Г6. Сpедства отладки пpогpамм.

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

И н ж е н е p н о — т е х н и ч е с к о е б ю p о

4
Пpогpаммно-технические сpедства
пеpсональных ЭВМ семейства IBM PC
5

EЮ. С. Лукач, А. Е. СибиряковF

E
А Р Х И Т Е К Т У Р А В В О Д А — В Ы В О Д А
П Е Р С О Н А Л Ь Н Ы Х Э В М I B M P C
F

Цикл издается под pедакцией Ю. С. Лукача

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
(C) Инженеpно-техническое бюpо, 1990

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

Свеpдловск
1990

— 1 —

EСодеpжаниеF

Введение . . . . . . . . . . . . . . . . . . . . . . . . . 3
Обозначения . . . . . . . . . . . . . . . . . . . . . . . 4
1. Таблица портов ввода-вывода . . . . . . . . . . . . . . 6
2. Контроллер прямого доступа к памяти . . . . . . . . . . 7
2.1. Принципы работы контроллера ПДП . . . . . . . . . . . 8
2.2. Типы передач . . . . . . . . . . . . . . . . . . . . 10
2.3. Описание внутренних регистров ПДП . . . . . . . . . . 11
2.4. Программное управление контроллером ПДП . . . . . . . 15
2.4.1. Оpганизация и упpавление ПДП на XT-подобных ПЭВМ . 15
2.4.2. Оpганизация и упpавление ПДП на AT-подобных ПЭВМ . 18
3. Программируемый контроллер прерываний . . . . . . . . . 21
3.1. Описание основных элементов ПКП . . . . . . . . . . . 23
3.2. Режимы работы ПКП . . . . . . . . . . . . . . . . . . 25
3.3. Программирование ПКП. . . . . . . . . . . . . . . . . 26
4. Таймер и генерация звука . . . . . . . . . . . . . . . 31
4.1. Программируемый таймер 8253 . . . . . . . . . . . . . 31
4.2. Таймер на системной плате IBM PC . . . . . . . . . . 35
4.3. Генерация звука . . . . . . . . . . . . . . . . . . . 36
5. Программируемый периферийный интерфейс . . . . . . . . 39
5.1. Описание ППИ 8255 . . . . . . . . . . . . . . . . . . 39
5.2. Использование ППИ в IBM PC . . . . . . . . . . . . . 41
6. Клавиатура . . . . . . . . . . . . . . . . . . . . . . 43
6.1. Клавиатура IBM PC/XT . . . . . . . . . . . . . . . . 43
6.2. Клавиатура IBM PC AT . . . . . . . . . . . . . . . . 44
7. Дисплеи . . . . . . . . . . . . . . . . . . . . . . . . 47
7.1. Общее описание . . . . . . . . . . . . . . . . . . . 47
7.2. Контроллеры ЭЛТ . . . . . . . . . . . . . . . . . . . 48
7.3. Атрибуты символов . . . . . . . . . . . . . . . . . . 52
7.4. Монохромный графический адаптер MGA . . . . . . . . . 54
7.5. Цветной графический адаптер CGA . . . . . . . . . . . 57
7.6. Расширенный графический адаптер EGA . . . . . . . . . 60ируемый таймер 8253 . . . . . . . . . . . . . 31

4.2. Таймер на системной плате IBM PC . . . . . . . . . . 35
4.3. Генерация звука . . . . . . . . . . . . . . . . . . . 36
5. Программируемый периферийный интерфейс . . . . . . . . 39
5.1. Описание ППИ 8255 . . . . . . . . . . . . . . . . . . 39
5.2. Использование ППИ в IBM PC . . . . . . . . . . . . . 41
6. Клавиатура . . . . . . . . . . . . . . . . . . . . . . 43
6.1. Клавиатура IBM PC/XT . . . . . . . . . . . . . . . . 43
6.2. Клавиатура IBM PC AT . . . . . . . . . . . . . . . . 44
7. Дисплеи . . . . . . . . . . . . . . . . . . . . . . . . 47
7.1. Общее описание . . . . . . . . . . . . . . . . . . . 47
7.2. Контроллеры ЭЛТ . . . . . . . . . . . . . . . . . . . 48
7.3. Атрибуты символов . . . . . . . . . . . . . . . . . . 52
7.4. Монохромный графический адаптер MGA . . . . . . . . . 54
7.5. Цветной графический адаптер CGA . . . . . . . . . . . 57
7.6. Расширенный графический адаптер EGA . . . . . . . . . 60
7.7. Графический видеомассив VGA . . . . . . . . . . . . . 71
8. Контроллер накопителей на гибких дисках . . . . . . . . 72
8.1. Основные сведения о контроллере . . . . . . . . . . . 72
8.2. Порты контроллера накопителей на гибких дисках. . . . 73
8.3. Команды управления накопителями . . . . . . . . . . . 75
8.3.1. Пеpечень команд контpоллеpа НГМД . . . . . . . . . 75
8.3.2. Стpуктуpа байтов состояния . . . . . . . . . . . . 81
8.4. Формат дорожки. . . . . . . . . . . . . . . . . . . . 83
8.5. Отличия контроллера для АТ-подобных ПЭВМ. . . . . . . 85
9. Контроллер накопителей на жестких дисках . . . . . . . 89
9.1. Контроллер жестких дисков для ХТ-подобных ПЭВМ. . . . 90
9.1.1. Поpты ввода-вывода . . . . . . . . . . . . . . . . 90
9.1.2. Общий фоpмат команды и теpминология . . . . . . . . 93
9.1.3. Описание команд . . . . . . . . . . . . . . . . . . 95
9.1.4. Разметка диска . . . . . . . . . . . . . . . . . . 102
9.2. Контроллер жестких дисков для АТ-подобных ПЭВМ. . . . 105
9.2.1. Описание поpтов ввода-вывода . . . . . . . . . . . 105
9.2.2. Система команд . . . . . . . . . . . . . . . . . . 106
10. Печатающее устройство . . . . . . . . . . . . . . . . 108
11. Последовательный интерфейс RS-232 . . . . . . . . . . 112
11.1. Общие сведения . . . . . . . . . . . . . . . . . . . 112
11.2. Описание портов . . . . . . . . . . . . . . . . . . 113

— 2 —

11.3. Порядок инициализации 8250 . . . . . . . . . . . . . 116
12. Игровой адаптер . . . . . . . . . . . . . . . . . . . 121
13. CMOS . . . . . . . . . . . . . . . . . . . . . . . . . 122
13.1. Доступ к CMOS . . . . . . . . . . . . . . . . . . . 122
13.2. Содержимое CMOS . . . . . . . . . . . . . . . . . . 123
14. Прочие порты . . . . . . . . . . . . . . . . . . . . . 127
Приложение 1. Скан-коды клавиш . . . . . . . . . . . . . . 128
Приложение 2. Типы жестких дисков . . . . . . . . . . . . 129
Пpиложение 3. Подготовка ПЭВМ к pаботе . . . . . . . . . . 131
Глоссарий . . . . . . . . . . . . . . . . . . . . . . . . 137
Пеpечень pекомендуемых матеpиалов . . . . . . . . . . . . 139

— 3 —

EВведениеF

Данный документ содержит техническое описание устройств
ввода-вывода, входящих в состав ПЭВМ семейства IBM PC, включая
ПЭВМ IBM PC XT, AT и PS/2. Он основан на технической
документации фирм — производителей периферийной аппаратуры,
охватывающей несколько десятков руководств. В частности,
описание микросхем, размещенных на системной плате, базируется
на справочниках фирмы INTEL (Intel Handbooks).

Дополнительными источниками информации послужили
многочисленные монографии, журнальные статьи и диалоговые
справочные системы (такие, как TECH Help!, Norton Guide и др.).
Кроме того, данное описание учитывает опыт авторов по разработке
и сопровождению программ в среде MS-DOS. Этот опыт позволил,
во-первых, исправить отдельные неточности и недоговоренности в
использованных материалах, и, во-вторых, описать ряд недоку-
ментированных особенностей оборудования IBM PC.

Вся приведенная информация подвергалась максимальной
проверке на ЭВМ; однако, авторы предполагают, что отдельные
нюансы описаний, заимствованных из фирменной документации, могут
содержать ошибки. Такие «подозрительные» моменты мы, по мере
воазможности, старались явно оговаривать в соответствующих
местах справочника.

Для понимания изложенного здесь материала требуется
владение основами программирования на языке ассемблера для IBM
PC (знание архитектуры процессора и директив ассемблера).

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

620075, г. Свердловск,
ул. Луначарского 81,
Инженерно-техническое бюро.
тел. 56-92-54, 56-92-41.

— 4 —

EОбозначенияF

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

R4 Выбор карты чтения Биты 0-2 задают номер плоскости
для режима чтения 1.
R5 Регистр режима Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і і і і і Биты:
АДБДБВДБВДБВДБВДБДДЕДДЩ ДДДДД
і і і і АДД> 0-1: Режим записи 0 — 2 (см. ниже)
і і і АДДДДДДД> 2: 1=высокоимпедансный выход (для диаг-
і і і ностики), 0=обычная работа
і і АДДДДДДДДДД> 3: Режим чтения 0 — 1 (см. ниже)
і АДДДДДДДДДДДДД> 4: 1=использовать расслоение видеопамяти
і (ср. регистр 4 блока синхронизации)
АДДДДДДДДДДДДДДДД> 5: 1=использовать 2 бита на пиксель, как
в CGA (сдвиг нечетных битов в нечет-
ных картах); 0=сдвиг четных битов в
четных картах

R6 Управление графикой Имеет следующую структуру:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і Биты:
АДБДБДБДБДДЕДДБВДБВДЩ ДДДДД
і і АДД> 0: 1=графика, 0=знакогенератор
і АДДДДД> 1: Ставить нечетные карты после четных
АДДДДДДДДД> 2-3: Адрес и размер видеопамяти:
00=A0000h (128K), 01=A0000h (64K)
10=B0000h (32K), 11=B8000h (32K)

R7 Маскирование цветов Биты 0-3 исключают соответству-
ющие битовые плоскости в режиме
чтения 1.
R8 Битовая маска Биты 0-7 задают биты, маскируе-
мые во всех битовых плоскостях.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Примечание. Режимы чтения и записи имеют следующий смысл.

— 64 —

Режимы чтения:

0 — использовать выбранную битовую плоскость;
1 — сравнивать цвет пикселя с цветом в регистре R2 и воз-
вращать 1 при их совпадении.

Режимы записи:

00 — циклически сдвинуть данные, применить способ вывода,
записать в разрешенные плоскости;
01 — вывести в каждую плоскость значение, полученное преды-
дущим чтением;
10 — выводить в каждую плоскость 8 бит значения соответст-
вующих битов 0-3 данных (быстрая закраска)
11 — недопустим.

Порты ввода-вывода EGA имеют следующее назначение.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3C0h Запись Регистр контроллера атрибутов. Для доступа к
регистрам ATC подайте команды:
in al,3C2h ; перейти в адресный режим
out 3C0h,n ; номер регистра ATC (режим данных)
out 3C0h,val ; новое значение регистра
Биты 0-4 в n — номер регистра, бит 5 задает:
1=разрешить вывод на экран, 0=установка
регистра ATC.

3C2h Запись Многоцелевой управляющий регистр:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і і і і і і Бит:
АВДБВДБВДБВДБДДЕДДБВДБВДЩ ДДДД
і і і і і і АДДД> 0: Выбор портов дисплея:
і і і і і і 1=3BXh (MGA), 0=3DXh (CGA)
і і і і і АДДДДДД> 1: 0=разрешить доступ к ОЗУ
і і і і і 1=запретить доступ к ОЗУ
і і і і АДДДДДДДДДД> 2-3: Частота генератора пикселей:
і і і і 00=14 Мгц, 01=16 Мгц,
і і і і 10=внешний источник, 11=резерв
і і і АДДДДДДДДДДДДДДД> 4: 1=выбрать вывод признаков,
і і і 0=выбрать внутренний источник
і і АДДДДДДДДДДДДДДДДДД> 5: Бит страницы при расслоенной
і і адресации видеопамяти: 0=младшая
і і страница, 1=старшая страница
і АДДДДДДДДДДДДДДДДДДДДД> 6: Полярность обратного хода луча
і по горизонтали: 1=отрицательная
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: Полярность обратного хода луча
по вертикали: 1=отрицательная

— 65 —

Чтение Регистр состояния 0:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і іX іX іX і Бит:
АВДБДДЕДДБДДЕДДБДДБДДБДДЩ ДДДД
і і АДДДДДДДДДДДДД> 3-4: Частота генератора пикселей
і і (см. выше)
і АДДДДДДДДДДДДДДДДДДД> 5-6: Ввод признаков
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: 0=обратный ход луча по
вертикали

3C4h Запись Регистр адреса блока синхронизации.

3C5h Запись Регистр данных блока синхронизации. Для прог-
раммирования регистра Rn блока нужно выполнить
команды:
out 3C4h,n и out 3C5h,данные

3CAh Запись Графическая позиция 2 (для EGA должна быть 1).

3CCh Запись Графическая позиция 1 (для EGA должна быть 0).

3CEh Запись Регистр адреса графического контроллера.

3CFh Запись Регистр данных графического контроллера. Для
программирования регистра Rn нужно выполнить
команды:
out 3CEh,n и out 3CFh,данные

3D4h Запись Регистр индекса ЭЛТ. Используется для выбора
или регистра ЭЛТ. Для записи регистра ЭЛТ Rn нужно
3B4h выполнить команды:
out 3X4h,n и out 3X5h,данные.

3D5h/ Запись/ Регистр данных ЭЛТ. Позволяет записывать и
3B5h чтение читать все регистры ЭЛТ.

3DAh/ Запись Биты 0 — 1 управляют выходами признаков FC0 и
3BAh FC1 (контакты 19 и 17 соответственно).

Чтение Регистр состояния 1:

7 6 5 4 3 2 1 0
ЪДВДВДВДВДДВДДВДДВДДї
іXіXіXіXі і і і і Бит:
АДБДБДБДБВДБВДБВДБВДЩ ДДДД
і і і АДДД>0: 0=вывод изображения, 1=горизонтальная
і і і или вертикальная синхронизация
і і АДДДДДД>1: 1=триггер светового пера сброшен
і АДДДДДДДДД>2: 1=защелка светового пера открыта
АДДДДДДДДДДДД>3: 0=экран включен, 1=выключен (EGA не
требует проверки этого бита при
выводе — в любом случае «хлопьев» не
будет)

— 66 —

3DBh/ Запись/ Вывод любого байта выключает триггер светового
3BBh Чтение пера.

3DCh/ Запись/ Вывод любого байта включает триггер светового
3BCh Чтение пера.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

EGA работает либо в режиме совместимости с CGA или MGA,
либо в одном из своих собственных графических видеорежимов:

320 х 200, 16 цветов
640 х 200, 16 цветов
640 х 350, черно-белый
640 х 350, 16 цветов

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

Видеопамять EGA oтображается в адреса ОЗУ A0000h — B0000h.
Размер памяти EGA варьируется от 64К до 256К в зависимости от
комплектации адаптера. Однако, даже если память EGA равна 256К,
она размещается в 16К адресного пространства оперативной памяти.
Это обьясняется тем, что каждая битовая плоскость отображается в
одни и те же адреса ОЗУ; для выбора битовой плоскости, с которой
Вы хотите обмениваться данными, необходимо переустанавливать
соответствующие регистры графического контроллера.

В графическом режиме 640 х 200 64К оперативной памяти
разбивается на 4 страницы по 16К каждая. Адреса этих страниц
равны соответственно A0000h, A4000h, A8000h и AC000h. Смещение
от начала страницы до байта, содержащего пиксель с координатами
(X,Y), равен 80*Y + int(X/8), а номер соответствующего бита в
этом байте равен 7 — (X % 8). Здесь X — горизонтальная позиция
точки (0 — 639), Y — ее вертикальная позиция (0 — 199).

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

КОМПЬЮТЕРНАЯ ЛИТЕРАТУРА

LIB.com.ua [электронная библиотека]: : Пpогpаммно-технические сpедства пеpсональных ЭВМ семейства IBM PC

і і і і і и даты верен
і і і і АДДДДДДДДДДДД> 3: 1=жесткий диск не является
і і і і загружаемым
і і і АДДДДДДДДДДДДДДД> 4: 1=размер ОЗУ неверен
і і АДДДДДДДДДДДДДДДДДД> 5: 1=оборудование не соответствует
і і конфигурации CMOS
і АДДДДДДДДДДДДДДДДДДДДД> 6: 1=неверна контрольная сумма CMOS
АДДДДДДДДДДДДДДДДДДДДДДДД> 7: 1=неисправен автономный источник
питания CMOS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0Fh Байт состояния перезагрузки. Этот байт считываетса после
сброса ЦП, чтобы определить не был ли сброс вызван для
вывода 80286 из защенного режима. Он принимает значения:

0 = теплый рестарт (по Ctrl-Alt-Del) или неожиданный
останов
1 = останов после определения размера ОЗУ
2 = останов после тестирования памяти
3 = останов по ошибке паритета памяти
4 = рестарт по запросу начального загрузчика
5 = рестарт по сбросу контроллера прерываний и
JMP FAR PTR [0:467h]

— 125 —

6, 7, 8 = останов после теста защищенного режима
9 = рестарт по JMP FAR PTR [0:467h]
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
10h Тип НГМД А и В:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і Биты:
АДДБДДЕДДБДДБДДБДДЕДДБДДЩ ДДДДД
і АДДДДДДД> 0-3: тип дисковода А
АДДДДДДДДДДДДДДДДДДД> 4-7: тип дисковода В:
0 = нет дисковода или его тип
неизвестен
1 = 360 К, 5 1/4 дюйма
2 = 1.2 M, 5 1/4 дюйма
3 = 720 К, 3 1/2 дюйма
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
12h Тип жестких дисков C и D:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і і Биты:
АДДБДДЕДДБДДБДДБДДЕДДБДДЩ ДДДДД
і АДДДДДДД> 0-3: тип дисковода C
АДДДДДДДДДДДДДДДДДДД> 4-7: тип дисковода D:
0000 = диска нет
1111 = см. адреса 19h и 1Ah
прочие=тип диска
(см. приложение 2)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
14h Байт оборудования:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
і і іX іX і і і Биты:
АДДЕДДБДДЕДДБДДБДДБВДБВДЩ ДДДД
і і і АДД> 0: 1=есть НГМД
і і АДДДДД> 1: 1=есть сопроцессор 80287
і АДДДДДДДДДДДДДДД> 4-5: тип дисплея:
і 00 — EGA или VGA
і 01 — CGA, 40 столбцов
і 10 — CGA, 80 столбцов
і 11 — монохромный
АДДДДДДДДДДДДДДДДДДДДД> 6-7: количество НГМД — 1
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
15h-16h Размер базовой памяти (0100h=256 K, 0200h=512 K,
0280h=640 K)
17h-18h Размер дополнительной памяти, Кб (от 0 до 3C00h)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
19h Тип диска С, если его тип в 12h равен 0Fh
1Ah Тип диска D, если его тип в 12h равен 0Fh
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
2Eh-2Fh Контрольная сумма адресов CMOS с 10h по 20h (обычная
16-битовая сумма этих байтов; 2Eh содержит старший
байт КС)

— 126 —

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
30h-31h Размер дополнительной памяти, Кб (0-3C00h), опреде-
ленный при начальном тестировании
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
32h Двоично-десятичный номер столетия
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
33h Разная информация. Бит 7: 1=установлена опция 128К ОЗУ
Бит 6 используется программой SETUP
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 127 —

E14. Прочие портыF

В этом разделе приведено описание портов, не относящихся к
конретным устройствам.

Адрес Операция Назначение
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
80h запись Используется в AT на этапе начального
тестирования для накопления информации об
ошибках.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
90h запись Управляющий порт центрального арбитра PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
91h чтение Обратная связь с выбранной платой PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
92h запись Управляющий порт A PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
94h запись Установка параметров системной платы PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
96h, 97h запись Выбор коннектора канаклов в PS/2
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0A0h запись Разрешение или запрещение NMI в PC/XT:
out 0A0h,80h — разрешает NMI;
out 0A0h,0 — запрещает NMI.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
0F0h запись Вывод любого байта сбрасывает защелку
сопроцессора 80287, которая включается по
незамаскированной ошибке сопроцессора.

0F1h запись Вывод любого байта сбрасывает сопроцессор
80287 из защищенного режима в реальный.

0F8h-0FCh ДДД Эти порты используются процессором 80286
для обмена данными с сопроцессором.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
210h запись Управляющий порт блока расширения XT.
213h запись Разрешение блока расширения XT.
215h запись Регистр шины данных блока расширения XT.
215h запись Регистр адреса блока расширения XT
(старший байт).
216h запись Регистр адреса блока расширения XT
(младший байт).
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

— 128 —

EПриложение 1. Скан-коды клавишF

Всякий раз, когда клавиатура вызывает прерывание по
нажатию или отпусканию клавиши, она передает обработчику этого
прерывания «скан-код» данной клавиши, т. е. ее порядковый номер
на клавиатуре. При этом скан-код клавиши является семибитовым,
а старший бит байта, содержащего скан-код, сообщает причину
прерывания: 0 — клавиша нажата, 1 — клавиша отпущена.

ЪДДДДДДДДВДДДДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДї
іСкан-коді Клавиша іСкан-коді Клавиша і
ГДДДДВДДДЕДДДДДДДДДДДДДЕДДДДВДДДЕДДДДДДДДДДДДДґ
і01h і 1 і Esc і2Bh і 43і \ | і
і02h і 2 і 1 ! і2Ch і 44і Z і
і03h і 3 і 2 @ і2Dh і 45і X і
і04h і 4 і 3 # і2Eh і 46і C і
і05h і 5 і 4 $ і2Fh і 47і V і
і06h і 6 і 5 % і30h і 48і B і
і07h і 7 і 6 ^ і31h і 49і N і
і08h і 8 і 7 & і32h і 50і M і
і09h і 9 і 8 * і33h і 51і , < і і0Ah і 10і 9 ( і34h і 52і . > і
і0Bh і 11і 0 ) і35h і 53і / ? і
і0Ch і 12і — _ і36h і 54іправый Shift і
і0Dh і 13і = + і37h і 55і PrtSc * і
і0Eh і 14і BackSpace і38h і 56і Alt і
і0Fh і 15і Tab і39h і 57і пробел і
і10h і 16і Q і3Ah і 58і CapsLock і
і11h і 17і W і3Bh і 59і F1 і
і12h і 18і E і3Ch і 60і F2 і
і13h і 19і R і3Dh і 61і F3 і
і14h і 20і T і3Eh і 62і F4 і
і15h і 21і Y і3Fh і 63і F5 і
і16h і 22і U і40h і 64і F6 і
і17h і 23і I і41h і 65і F7 і
і18h і 24і O і42h і 66і F8 і
і19h і 25і P і43h і 67і F9 і
і1Ah і 26і [ { і44h і 68і F10 і
і1Bh і 27і ] } і45h і 69і NumLock і
і1Ch і 28і Enter і46h і 70і ScrollLock і
і1Dh і 29і Ctrl і47h і 71і Home [7] і
і1Eh і 30і A і48h і 72істр. вверх[8]і
і1Fh і 31і S і49h і 73і PgUp [9] і
і20h і 32і D і4Ah і 74і — і
і21h і 33і F і4Bh і 75і [6] і
і24h і 36і J і4Eh і 78і + і
і25h і 37і K і4Fh і 79і End [1] і

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36