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

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

Фортран. В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тcя пepвым oпepaтopoм ELSEIF блoкa.

Ocoбeннocти:
Пpиcoeдиняeмый блoк ELSEIF cocтoит из любыx выпoлняeмыx oпe-
paтopoв (вoзмoжнo бeз eдинoгo), кoтopыe cлeдуeт зa ELSEIF и вплoть
дo ближaйшиx ELSEIF,ELSE или ENDIF oпepaтopoв, кoтopыe pacпoлaгa-
ютcя нa тoм жe уpoвнe oпepaтopa IF, чтo и дaнный oпepaтop ELSEIF.
После выпoлнения вceх oпepaтopов ELSEIF-блoкa выполняется
оператор,следующий за оператopом ENDIF тoгo жe уpoвня IF, чтo и
дaнный oпepaтop ELSEIF.
Ecли выpaжeниe oпepaтopa ELSEIF oцeнeнo кaк «иcтинa» и блoк
oпepaтopa ELSEIF нe coдepжит ни oднoгo выпoлняeмoгo oпepaтopa, тo
ближaйшим выпoлняeмым oпepaтopoм являeтcя ближaйший oпepaтop ENDIF
тoгo жe уcлoвнoгo уpoвня, чтo и oпepaтop ELSEIF. Ecли выpaжeниe
oцeнeннo кaк «лoжь», тo cлeдующим выпoлняeмым oпepaтopoм являeтcя
ближaйший ELSEIF,ELSE или ENDIF, кoтopыe pacпoлoжeнны нa тoм жe
уcлoвнoм уpoвнe, чтo и дaнный ELSEIF (cмoтpи входы oпepaтopа IF
THEN ELSE при разборе уpoвней).

Пepeдaчa упpaвлeния вo внутpь блoкa ELSEIF извнe нe дoпуc-
кaeтcя.

Пpимep:
CНARACTER C
.
.
READ (*,'(A)’) C
IF (C.EQ.’A’) THEN
CALL ASUB
ELSEIF (C.EQ.’X’) THEN
CALL XSUB
ELSE
CALL OTHER
ENDIF

ЬДДДДДДДДДДДДДДД
Ы END
ЯДДДДДДДДДДДДДД

B пoдпpoгpaммe oблaдaeт тeм жe дeйcтвиeм, чтo и oпepaтop
RETURN. B глaвнoй пpoгpaммe oкaнчивaeт выпoлнeниe пpoгpaммы:
ДДДДДДДДДДДДДДДДДДДДДДДДДДДД
END
ДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Ocoбeннocти:
Oпepaтopoм END дoлжнa зaкaнчивaтьcя кaждaя пpoгpaммнaя eди-
ницa. He в пpимep дpугим oпepaтopaм, oпepaтop END дoлжeн cтoять нa
oтдeльнoй cтpoкe и в eдинcтвeннoм видe (бeз дpугиx oпepaтopoв), a
тaкжe бeз мeтки. He дoпуcкaeтcя пpoдoлжeниe cтpoки, нa кoтopoй
нaxoдитcя END. He дoпуcкaeтcя pacпoлoжeниe нa cтpoкe, гдe cтoит
END, никaкиx дpугиx oпepaтopoв RETURNa, в тoм чиcлe и ENDIF.

Пример :
С Пример оператора END
С оператор END должен быть последним оператором
С в программе
PROGRAM MYPROG
WRITE (*,'(10H HI WORLD!)’)

ЬДДДДДДДДДДДДДД
Ы ENDFILE
ЯДДДДДДДДДДДДДД

Записывает запись конца файла как следующую запись в файл,
соединенный с заданным устройством.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ENDFILE логический-номер-устройства
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где :
логический номер-устройства — это определитель заданного внешнего
устройства. Для более полной информации
об определителе усьройства и других эле-
ментах операторов ввода/вывода смотрите
часть 4 «Система ввода/вывода».

Особенности.
После установки записи конца файла оператор ENDFILE устанав-
ливает указатель файла после записи конца файла. Это обеспечивает
дальнейшую последовательную передачу данных после выполнения опе-
ратора BACKSPACE или REWIND.
Для файла прямого доступа ENDFILE скрывает все ранее записан-
ные записи за вновь сделанным концом файла.

Пример :
WRITE (6,*) X
ENDFILE 6
REWIND 6
READ (6,*) Y

ЬДДДДДДДДДДДДДДДДД
Ы ENDIF
ЯДДДДДДДДДДДДДДДДД

Оканчивает оператор блока IF.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
ENDIF
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

Особенности.
Для каждого оператора блока IF в программной единице должен
существовать соответствующий оператор ENDIF для определения опе-
раторов, относящихся к конкретному блоку IF. Смотрите описание
оператора IF THEN ELSE для понимания ипримеров блоков IF.

Пример :
IF (I.LT.0) THEN
X=-1
Y=-1
ENDIF

ЬДДДДДДДДДДДДДДДДДДДДДДД
Ы EQUIVALENCE
ЯДДДДДДДДДДДДДДДДДДДДДДД
Определяет, что две или более переменных или массива распо-
лагаются на одной памяти.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
EQUIVALENCE (список) [,(список)]…
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где :
список — это список не менее чем из двух элементов, разделенных
запятой. В список могут входить имена переменных, имена
массивов или имена элементов массивов; недопустимы имена
параметров. Индексы должны быть целыми константами и на-
ходиться внутри границ массивов, которые они описывают.
При совмещении в памяти элементов различных типов ав-
томатического преобразования типов не происходит.

Особенности.
Оператор EQUIVALENCE определяет, что расположение элементов,
указаных в списке, должно иметь одну и ту же точку отсчета в па-
мяти. Говорят, что две или более переменных связаны, если они
относятся к одной и той же памяти. Поэтому результатом оператора
EQUIVALENCE является то, что переменные из его списка становятся
связанными. Имя массива, если на него ссылаются в операторе
EQUIVALENCE, относится к первому элементу массива.

Вы не можете связать символьные и несимвольные элементы, если
действует метакоманда $STRICT (по умолчанию — $NOTSTRICT). Смотрите
ограничения на границу нечетных байтов, приведенные в следующем
списке.
Ограничения :

1. Вы не можете заставить переменную занимать несколько мест в
памяти, также как Вы не можете заставить несколько элементов
одного и того же массива занимать одно и то же место. Напри-
мер, следующий оператор хотел бы поместить R в два различных
места памяти или S(1) и S(2) — в одно и то же место памяти :
С Это — ошибка
REAL R,S(10)
EQUIVALENCE (R,S(1)),(R,S(2))
2. Оператор EQUIVALENCE не может определить, что последовательные
элементы массива будут расположены не последовательно. Сле-
дующее, например, недопустимо :
С Это — другая ошибка
REAL R(10),S(10)
EQUIVALENCE (R(1),S(1)),(R(5),S(6))
3. Вы не можете сделать эквивалентными символьную и несимвольную
величины, так чтобы несимвольная величина начиналась с границы
нечетного байта.
Для величин не из common-блоков компилятор попытается
выровнять несимвольную величину по границе слова. Ошибка
появится, если такое выравнивание невозможно из-за нескольких
эквивалентностей. Например, следующее приведет к ошибке, так
как нельзя обе переменные А и В выровнять по слову :
CHARACTER*1 C1(10)
REAL A,B
EQUIVALENCE (A,C1(1)),(B,C1(2))
Для величин в common-блоках, чье положение фиксировано, Вы
отвечаете за обеспечение выравнивания по границе слов для
несимвольных величин. Ошибка возникнет для любой величины не
выровненной по границе слова.
4. Оператор EQUIVALENCE не может связать элемент типа CHARACTER
с несимвольным элементом из-за того, что несимвольный элемент
должен быть расположен, начиная с нечетного байта. Однако,
нет ограничений для эквивалентности символьных величин.
5. При использовании вместе операторов EQUIVALENCE и COMMON су-
ществует несколько дополнительных ограничений :
а. оператор EQUIVALENCE не может расположить в одном и том
же месте памяти два разных common-блока.
б. оператор EQUIVALENCE может расширить common-блок за счет
элементов, расположенных после common-блока, но не перед
ним.
в. расширение именованного common-блока с помощью оператора
EQUIVALENCE не должно делать его длину отличной от длины
в других программных единицах.
Например, следующее недопустимо, потому что оно расширяет
common-блок добавлением памяти перед его началом :
С Это более тонкая ошибка
COMMON /ABCDE/R(10)
REAL S(10)
EQUIVALENCE (R(1),S(10))

Страницы: 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.

Примеры :
С Правильное использование оператора EQUIVALENCE
CHARACTER NAME,FIRST,MIDDLE,LAST
DIMENSION NAME(60),FIRST(20),MIDDLE(20),LAST(20)
EQUIVALENCE (NAME(1),FIRST(1)),(NAME(21),MIDDLE(1)),
1 (NAME(41),LAST(1))
Связанные символьные величины могут пересекаться, как в следующем
примере :
CHARACTER A*4,B*4,C(2)*3
EQUIVALENCE (A,C(1)),(B,C(2))
Этот пример можно графически иллюстрировать следующим образом :
ЪДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДДї
і 1 і 2 і 3 і 4 і 5 і 6 і 7 і
АДДДДДБДДДДДБДДДДДБДДДДДБДДДДДБДДДДДБДДДДДЩ

ГДДДДДДДДДД А ДДДДДДДДДДґ

ГДДДДДДДДДД В ДДДДДДДДДДґ

ГДДДДДДД С(1) ДДДДЕДДДДДД С(2) ДДДДДґ

ЬДДДДДДДДДДДДДДДДДДД
Ы EXTERNAL
ЯДДДДДДДДДДДДДДДДДДД

Определяет пользовательское имя, как внешнюю процедуру или
функцию.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
EXTERNAL имя [,имя ] …
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где :
имя — это имя внешней подпрограммы или функции.

Особенности.
Имя, заданное в операторе EXTERNAL, объявляет его как внешнюю
процедуру. В операторе EXTERNAL не могут появляться имена функций-
операторов. Если в операторе EXTERNAL появляется имя встроенной
функции, то это имя становится именем внешней процедуры и в даль-
нейшем не будет вызываться из этой программной единицы. Вданной
программной единице пользовательское имя может появиться в опера-
торе EXTERNAL только однажды.
В ассемблере или МС-Паскале EXTERN означает, что объект
определен вне текущей компиляции или модуля. Это не обязательно
для МС-Фортрана, так как стандартный Фортран, практически, подра-
зумевает, что любой объект, на который ссылаются в компилируемом
модуле, не определен в нем, а определен как внешний.
В Фортране поэтому, EXTERNAL используется, в основном, для
определения того, что некоторое пользовательское имя — это под-
программа или функция, используемая как параметр процедуры.
EXTERNAL может также показывать, что функция пользователя заменяет
встроенную функцию с тем же именем.
Примеры :
С Пример оператора EXTERNAL
EXTERNAL MYFUNC,MYSUB
С MYFUNC и MYSUB — параметры для CALC
CALL CALC(MYFUNC,MYSUB)

C Пример функции пользователя, заменяющей встроенную
EXTERNAL SIN
X = SIN(A,4.2,37)

ЬДДДДДДДДДДДДДДДДД
Ы FORMAT
ЯДДДДДДДДДДДДДДДДД

Используется вместе с операторами форматного ввода/вывода
для задания информации, управляющей редактированием данных.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
FORMAT описатель-формата
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где :
описатель-формата — это список спецификаций формата, обеспечивающих
точное редактирование информации. Спецификация
формата должна быть заключена в круглые скобки
и может принимать одну из следующих форм :
[r] повторяемый редактирующий описатель
неповторяемый редактирующий описатель
[r] ( описатель формата )
r, если он есть, — это ненулевая целая конс-
танта без знака, которая называется указателем
повторения.

Особенности.
Внутри внешних скобок допускается до трех уровней вложенности
скобок.
Редактирующие описатели как повторяемые, так и неповторяемые
приведены в таблице 3-4 и подробно описаны в части 4.
Вы можете опускать запятую между двумя разделами списка, если
спецификация формата в результате этого не будет двусмысленной;
например, редактирующий описатель Р до или после символа /.
Операторы FORMAT должны быть с метками, но как для всех не-
исполняемых операторов эти метки нельзя употреблять при ветвлении.

ЪДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Повторяемые і Неповторяемые і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і Iw[.m] і ‘xxx’ (символьная константа) і
і Gw.d і nHxxx (символьная константа) і
і Gw.dEw і nX (пробелы) і
і Fw.d і / (конец записи) і
і Ew.d і \ (не конец записи) і
і Ew.dEe і kP (масштабный коэффициент) і
і Dw.d і BN (пробелы как пробелы в числах) і
і Lw і BZ (пробелы как нули в числах) і
і A[w] і Tc (позиция символа) і
і і TRc (сдвиг позиции сивола вправо) і
і і TLC (сдвиг позиции символа влево) і
АДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

ЪДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Повторяемые і Неповторяемые і
ГДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і і : (конец развертки формата) і
і і SP (обязательный знак плюс) і
і і SS (убирание знака плюс) і
і і S (восстановление использования плюса і
і і по умолчанию) і
АДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Таблица 3-4. Редактирующие описатели.

Примечания к таблице 3-4 :
1. Для повторяемых редактирующих описателей :
A, D, E, F, G, I и L задают вид редактирования.
w, m и е — ненулевые целые константы без знака.
d — целая константа без знака.
2. Для неповторяемых редактирующих описателей :
‘, H, X, /, \, P, BN, BZ, T, TL, TR, S, SS, SP и : задают
вид редактирования.
х — любой символ ASCII.
n — ненулевая целая константа без знака.
k — необязательная целая константа со знаком.
с — целая константа без знака.
Для более полной информации о редактирующих описателях и фор-
матном вводе/выводе смотрите часть 4 «Система ввода/вывода».

ЬДДДДДДДДДДДДДДДДДДД
Ы FUNCTION
ЯДДДДДДДДДДДДДДДДДДД

Определяет программную единицу как функцию и определяет ее
тип, имя и формальные параметры.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
[тип] FUNCTION имя-функции ([ параметр [,параметр]…])
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Где
тип — один из следующих :
INTEGER
INTEGER*2
INTEGER*4
REAL
REAL*4
REAL*8
DOUBLE PRECISION
LOGICAL
LOGICAL*2
LOGICAL*4
CHARACTER
CHARACTER*n
COMPLEX
COMPLEX*8
COMPLEX*16
имя-функции — это имя функции, задаваемое пользователем.
параметр — это имя формального параметра.

Особенности.
Имя функции глобально, но для самой функции оно и локально.
Если в операторе FUNCTION тип отсутствует, то он определяется либо
по умолчанию, либо из оператора IMPLICIT, либо в операторе
определения типа переменной. Если тип есть, то имя функции не может
появиться ни в каком операторе определения типа. Ни в каком случае
внешняя функция не может быть типа CHARACTER.
Функции типа CHARACTER не могут появиться с описателем длины
звездочка (*). Например, недопустим такой оператор FUNCTION :
CHARACTER*(*)FUNCTION F(X)
Если функция типа CHARACTER, n должно быть в диапазоне от 1
до 127.
Список имен параметров определяет число и вместе с операторами
IMPLICIT, EXTERNAL, определения типа и DIMENSION — тип параметров
этой функции. Никакое из имен параметров или имя функции не может
появиться в операторах COMMON, DATA, EQUIVALENCE или INTRINSIC.
Имя функции должно появиться как переменная в программной
единице, описывающей функцию. Каждое вычисление этой функции должно
сопровождаться присвоением величины этой переменной. Последняя
величина этой переменной после выполнения оператора RETURN или
END определяет значение функции.
Отметим, что определители альтернативного возврата недопустимы
в операторе FUNCTION.
После вычисления на величину этой переменной можно ссылаться
в выражении так же каки на любую другую. Внешняя функция может
возвращать значения не только через саму функцию, но и присвоением

Страницы: 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.

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

Пример :

С Пример использования функции 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

П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

на 348 точек по вертикали, поэтому один графический экран
требует 32К видеопамяти. MGA имеет две графические страницы:
страница 0 размещается в адресах B0000h — B7FFFh, страница 1 — в
адресах B8000h — BFFFFh. Смещение от начала страницы до байта,
содержащего точку с координатами (X,Y), равно

2000h * (Y % 4) + 90 * int(Y/4) + int(X/8),

а номер соответствующего бита в этом байте равен 7 — (X % 8).
Здесь X — горизонтальная позиция точки (0 — 719), Y — ее верти-
кальная позиция (0 — 347).

В качестве примера приведем программу инициализации MGA в
текстовом или графическом режиме.

; Таблицы значений регистров ЭЛТ для двух режимов
Graph_Tbl db 35h,2Dh,2Eh,07h,5Bh,02h,57h,57h,02h,03h,00h,00h
Text_Tbl db 61h,50h,52h,0Fh,19h,06h,19h,19h,02h,0Dh,0Bh,0Ch

; Установка графического режима:
Gr_Mode:
mov al,2
lea si,Graph_Tbl
mov bx,0
mov cx,4000h
call Set_Mode
. . .

; Установка текстового режима:
Txt_Mode:
mov al,20h
lea si,Text_Tbl
mov bx,0720h
mov cx,2000h
call Set_Mode
. . .

; Подпрограмма инициализации MGA.
; Вход: AL — режим
; SI — адрес таблицы регистров ЭЛТ
; CX — размер экрана в словах
; BX — значение для очистки экрана
Set_mode proc near

— 56 —

push ax ; сохранить регистры
push bx
push cx
mov dx,3B8h ; регистр режимов
out dx,al ; изменить режим адаптера, отключив экран
mov ax,cs
mov ds,ax ; DS:SI = адрес таблицы
mov dx,3B4h ; регистр индекса
mov cx,12 ; 12 регистров ЭЛТ
xor ah,ah
cld
Set_CRT:
mov al,ah
out dx,al ; номер регистра ЭЛТ
inc dx
lodsb
out dx,al ; содержимое регистра ЭЛТ
dec dx
loop Set_CRT
pop cx
mov ax,0B000h
mov es,ax
pop ax
xor di,di ; ES:DI => видеопамять
rep stosw ; очистка экрана
mov dx,3B8h ; регистр режимов
pop ax
add al,8
out dx,al ; активизировать экран
ret
Set_Mode endp

— 57 —

E7.5. Цветной графический адаптер CGAF

Цветной графический адаптер (CGA — Color Graphics Adapter)
— это графический видеоконтроллер среднего разрешения. Для него
зарезервированы порты ввода-вывода 3D0h — 3DFh, имеющие
следующее назначение.

Порт Операция Описание
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
3D4h Запись Регистр индекса ЭЛТ. Используется для выбора
регистра ЭЛТ. Для записи регистра ЭЛТ Rn нужно
выполнить команды:

out 3D4h,n и out 3D5h,данные.

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

3D8h Запись Регистр режимов дисплея:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і і і і і і Бит:
АДБДБВДБВДБВДБВДБВДБВДЩ ДДДД
і і і і і АДД>0: кол-во столбцов в текстовых режимах:
і і і і і 0=40 столбцов, 1=80 столбцов
і і і і АДДДДД>1: 0=текстовый режим, 1=графический режим
і і і АДДДДДДДД>2: 1=запрет цвета на композитном дисплее
і і АДДДДДДДДДДД>3: 0=очистить экран, 1=активизировать
і і экран
і АДДДДДДДДДДДДДД>4: разрешение по горизонтали:
і 0=320 точек, 1=640 точек
АДДДДДДДДДДДДДДДДД>5: 1=бит 7 атрибутов — мерцание
0=бит 7 атрибутов — яркость фона

3D9h Запись Регистр выбора цветов:

7 6 5 4 3 2 1 0
ЪДВДВДДВДДВДДВДДВДДВДДї
іXіXі і іI R G B і Биты:
АДБДБВДБВДБДДБДДЕДДБДДЩ ДДДДД
і і АДДДДДД>0-3: цвет (см. 7.3): для текста — цвет
і і рамки, для графики — цвет фона
і АДДДДДДДДДДДДДД>4: яркость: для текста — яркость фона,
і для графики — яркость пикселей
АДДДДДДДДДДДДДДДДД>5: номер графической палитры (0 или 1)

Примечание: Выбор палитры задает набор основных цветов в
графическом режиме. Палитра 0 — зеленый/красный/коричневый,
палитра 1 — бирюзовый/сиреневый/светло-серый (т. е. отличается
добавлением синего цвета).

— 58 —

3DAh Чтение Регистр состояния дисплея:

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

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

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

Видеопамять CGA располагается в адесах ОЗУ B8000h — BFFFFh.
CGA имеет два типа текстовых режимов: 25 строк по 40 символов в
строке и по 80 символов в строке. В режимах 25 х 40 одна
страница занимает 800h байтов, поэтому видеопамять состоит из 8
страниц; в режимах 25 х 80 страница занимает 1000h байтов и
видеопамять состоит из 4 страниц.

Адрес кода символа в текстовых режимах равен B800h :
n*P+m*L+2*C, адрес атрибута на единицу больше. Здесь L — номер
строки (0 — 24), C — номер столбца (0 — 79 или 0 — 39), m = 2 *
количество столбцов режима, n = 800h при m=80 и 1000h при m=160.

CGA имеет два типа графических режимов: цветной режим,
имеющий разрешение 320 точек по горизонтали на 200 точек по
вертикали, и черно-белый режим с разрешением 640 точек на 200
точек. В режиме 320 х 200 каждый пиксель задается двумя битами,
кодирующими его цвет; в режиме 640 х 200 цвет пикселя задается
одним битом (белый/черный). В графических режимах один экран
требует 16К видеопамяти, поэтому имеется одна страница
видеопамяти, которая размещается в адресах B8000h — BFFFFh. Эта
страница расслоена на две области: область с адреса B8000h
содержит пиксели, имеющие четные номера строк; область с адреса
BA000h содержит пиксели из нечетных строк. Поэтому адрес байта,
содержащего точку с координатами (X,Y), равен в цветном режиме

B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4),

а номера соответствующих битов в этом байте равны 7 — 2 * (X %
4) и 6 — 2 * (X % 4). Здесь X — горизонтальная позиция точки (0
— 319), Y — ее вертикальная позиция (0 — 199).

Адрес байта, содержащего точку с координатами (X,Y), равен
в черно-белом режиме

— 59 —

Страницы: 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

ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Проверка секторов (класс 0, опкод 5).

Команда проверяет возможность считывания заданных секторов
с диска без передачи их содержимого в ОЗУ ПЭВМ.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 0 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П ПС 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Форматирование дорожки (класс 0, опкод 6).

Команда форматирует одну заданную дорожку. В остальном ее
действие аналогично команде «форматирование накопителя».

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 1 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Форматирование дефектной дорожки (класс 0, опкод 7).

Команда форматирует одну заданную дорожку, устанавливая

— 99 —

флаги «дефектная дорожка» в заготовках секторов. Никакая
информация в поля данных не записывается.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 0 1 1 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ 0 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Чтение секторов (класс 0, опкод 8).

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

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П ПС 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Запись секторов (класс 0, опкод 0Ah).(*)

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

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 0 1 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П ПС 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

— 100 —

—> Поиск цилиндра по номеру (класс 0, опкод 0Ch).(*)

Команда осуществляет позиционирование головок накопителя на
заданный цилиндр.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 1 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 У і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і ЦСБ Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 іі
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і П 0 0 0 0 Ш Ш Ш і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Чтение внутреннего ОЗУ контроллера (класс 0, опкод 0Eh).(*)

Команда считывает содержимое внутреннего ОЗУ контроллера
(512 байт). Данное ОЗУ используется контроллером при
чтении/записи и содержит информацию, считанную/записанную при
выполнении последней команды чтения/записи секторов.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 1 1 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і Х Х Х Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Запись внутреннего ОЗУ контроллера (класс 0, опкод 0Fh).(*)

Команда обновляет содержимое внутреннего ОЗУ контроллера.

— 101 —

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 0 0 0 0 1 1 1 1 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і Х Х Х Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—>Диагностика внутреннего ОЗУ контроллера (класс 7,опкод 0).(*)

Команда проверяет правильность работы внутреннего ОЗУ
контроллера. В случае ошибки генерируется ошибка с типом 3 и
кодом 0.

ЪДДДВДДДВДДДВДДДВДДДВДДДВДДДВДДДї
0 і 1 1 1 0 0 0 0 0 і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
1 і 0 0 Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
2 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
3 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
4 і Х Х Х Х Х Х Х Х і
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
5 і Х Х Х Х Х Х Х Х і
АДДДБДДДБДДДБДДДБДДДБДДДБДДДБДДДЩ

—> Тест устройства (класс 7, опкод 3).

Страницы: 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

выводится младший байт 16-разрядного значения и затем старший

— 17 —

байт следующей команды вывода в тот же порт.

Вывод в порт 8h позволяет занести значение в регистр команд
ПДП. Описание битов регистра команд приведено в п.2.3.

Чтение из порта 8h считывает регистр состояния ПДП.
Описание битов регистра состояния приведено в п.2.3.

Запись в порт 9h позволяет установить или сбросить бит
запроса в регистр запросов для одного из каналов. Формат команды
следующий:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і Биты:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
не используются і АДДБДД> 0-1: выбор канала 00 — 0
і 01 — 1
і 10 — 2
і 11 — 3
АДДДДДДДД> 2: 1=установить бит запроса на ПДП
0=сбросить бит запроса на ПДП

Запись в порт 0Ah позволяет установить или сбросить бит
маски в регистре масок для одного из каналов. Формат команды:

7 6 5 4 3 2 1 0
ЪДДВДДВДДВДДВДДВДДВДДВДДї
іX X X X X і і і Биты:
АДДБДДБДДБДДБДДБВДБВДБВДЩ ДДДДД
не используются і АДДБДД> 0-1: выбор канала 00 — 0
і 01 — 1
і 10 — 2
і 11 — 3
АДДДДДДДД> 2: 1=установить бит маски
0=сбросить бит маски

Запись в порт 0Bh устанавливает значение в регистре режимов
одного из 4-х каналов ПДП. Биты 0 и 1 задают номер канала (00 —
0, 01 — 1, 10 — 2, 11 — 3). В биты 2 — 7 заносятся значения,
передаваемые соответственно в биты 0 — 6 регистра режимов.
Описание битов регистра режимов приведено в п. 2.3.

Запись в порт 0Dh задает программный сброс контроллера
(Master Clear). Вывод любого байта в этот порт имеет тот же
эффект, что и аппаратный сброс контроллера. При программном
сбросе очищаются регистры команд, состояния, запросов и рабочий
регистр. Так же сбрасывается триггер-защелка и устанавливается
все биты масок в регистре масок. После программного сброса
контроллер переходит в цикл ожидания.

Вывод любого байта в порт 0Eh очищает регистр масок —
сбрасывает биты масок всех 4-х каналов ПДП и таким образом
разрешает прием запросов на ПДП по всем каналам.

— 18 —

Через порт 0Fh можно задать произвольное значение регистра
масок ПДП. Для этого необходимо в битах 0 — 3 регистра AL
установить требуемое значение масок каналов 0 — 3 соответственно
и вывести это значение в порт.

Страничные регистры ПДП предназначены для задания параметра
страницы памяти, с которой будет производится обмен. Под номером
страницы понимаются старшие 4 бита полного 20-битового адреса
ОЗУ, т.е. начальные сегментные адреса страниц будут кратны 1000h
(0, 1000h, 2000h, …, 9000h). Напомним, что архитектура ПДП
позволяет работать только со страницей памяти размером 64К, а
логика, обеспечивающая переключение страниц устроена так, что
страницы имеют жесткие границы, описанные выше. Из-за этой
особенности невозможно с помощью ПДП осуществить обмен с блоками
памяти, пересекающими границу между двумя такими страницами.

E2.4.2. Организация и управление ПДП на AT-подобных ПЭВМF

IBM PC AT и AT-подобные ПЭВМ имеют два контроллера ПДП
8237А, работающиe в каскадном режиме.

Назначение каналов следующие:

0 — свободен;
1 — адаптер SDLC;
2 — контроллер накопителей на гибких дисках;
3 — контроллер накопителей на жестких дисках;
4 — каскад с первым контроллером ПДП;
5, 6, 7 — свободны.

Управление каналами 0 — 3 осуществляется аналогично PC/ХТ.

Каналы 4 — 7 предназначены для обмена 16-разрядными словами. В
связи с этим возникает ряд отличий в работе с этими каналами:

— бит 0 в данных, заносимых в регистры начального и
текущего адреса, всегда подразумевается равным 0, поэтому через
эти регистры передаются биты 1 — 16 полного 23-разрядного адреса
(а не биты 0 — 15 полного 20-разрядного адреса, как это
реализовано на ХТ-подобных ПЭВМ), по этой же причине в
страничные регистры каналов 4 — 7 заносятся биты 17 — 23 полного
адреса, а не биты 16 — 23, как это надо сделать при работе с
каналами 0 — 3;

— поскольку передача осуществляется 16-разрядными словами,
в регистры текущего и начального счетчика циклов заносится не
число байт, а число слов, уменьшенное на единицу;

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

В таблице приведено описание портов ввода-вывода,
предназначенных для управления вторым контроллером ПДП.

— 19 —

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Порт і Режим і Назначение і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
і 0C0h і запись і Запись начального адреса в регистр начально-і
і і і го адреса и регистр текущего адреса канала 4і
і і і і
і 0C4h і запись і то же для канала 5 і
і і і і
і 0C8h і запись і то же для канала 6 і
і і і і
і 0CCh і запись і то же для канала 7 і
і і і і
і 0C0h і чтение і Чтение начального адреса из регистра началь-і
і і і ного адреса канала 4 і
і і і і
і 0C4h і чтение і то же для канала 5 і
і і і і
і 0C8h і чтение і то же для канала 6 і
і і і і
і 0CCh і чтение і то же для канала 7 і
і і і і
і 0C2h і запись і Запись в регистр начального счетчика циклов і
і і іи в регистр текущего счетчика циклов канала 4і
і і і і
і 0C6h і запись і то же для канала 5 і
і і і і
і 0CAh і запись і то же для канала 6 і
і і і і
і 0CEh і запись і то же для канала 7 і
і і і і
і 0C2h і чтение і Чтение текущего значения из регистра теку- і
і і і щего счетчика циклов канала 4 і
і і і і
і 0C6h і чтение і то же для канала 5 і
і і і і
і 0Cah і чтение і то же для канала 6 і
і і і і
і 0CCh і чтение і то же для канала 7 і
і і і і
і 89h і запись і Задание номера страницы для канала 6 і
і і і і
і 8Bh і запись і то же для канала 5 і
і і і і
і 8Ah і запись і то же для канала 7 і
і і і і
і 8Fh і запись і то же для канала 4 і
АДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ

В следующей таблице приведено описание назначения портов
второго контроллера ПДП с указанием аналогичных портов первого
контроллера. Форматы данных, вводимых/выводимых через эти порты
совпадают с форматами данных аналогичных портов первого
контроллера. При работе с этими портами следует только
учитывать, что нумерация каналов начинается не с 0, как у
первого контроллера, а с 4 (канал 4 — это канал 0 второго

— 20 —

контроллера, канал 5 — это его канал 1 и т. д.).

ЪДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДї
і Порт і і і Аналог. і
і і Режим і Назначение і порт і
і ПДП-2і і і ПДП-1 і
ГДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДґ
і 0D0h і запись і Запись регистра команд ПДП і 8h і
і і і і і
і 0D0h і чтение і Чтение регистра состояния ПДП і 8h і
і і і і і
і 0D2h і запись і Запись в регистр запросов ПДП і 9h і
і і і і і
і 0D4h і запись і Запись бита маски для одного из каі 0Ah і
і і і каналов ПДП і і
і і і і і

Страницы: 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