GNU MIX Development Kit (mdk): mixvm
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6. mixvm
, эмулятор компьютера MIX
В этой главе описывается mixvm
, эмулятор компьютера MIX.
mixvm
-- программа с интерфейсом командной строки, эмулирующая
компьютер MIX (see section 2.1 Компьютер MIX). Она может выполнять программы
на MIXAL (see section 2.2 MIXAL), предварительно скомпилированные ассемблером
MIX (see section 5. mixasm
, ассемблер MIXAL). Эмулятор позволяет просматривать компоненты
компьютера MIX (регистры, ячейки памяти, флаг сравнения и триггер
переполнения), выполнять программы MIX по шагам и устанавливать точки
останова чтобы облегчить отладку кода. Учебное описание использования
mixvm
см. в 3.3 Запуск программы.
6.1 Вызов mixvm
6.2 Интерактивные команды 6.3 Блочные устройства MIX
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.1 Вызов mixvm
mixvm
может вызываться со следующими параметрами командной
строки (заметьте, что в соответствии с соглашениями GNU, у каждого
однобуквенного параметра есть соответствующее длинное имя):
mixvm [-vhurdtq] [--version] [--help] [--usage] [--run] [--dump] [--time] [--noinit] [ФАЙЛ[.mix]] |
Значение этих параметров таково:
- User Option: -v
- User Option: --version
- Вывести версию и информацию об авторских левах и завершить работу.
- User Option: -h
- User Option: --help
- User Option: -u
- User Option: --usage
- Вывести краткий перечень доступных параметров и завершить работу.
- User Option: -r
- User Option: --run
- Загрузить указанный ФАЙЛ и выполнить его. После выполнения
программы
mixvm
завершит работу. ФАЙЛ должен быть именем двоичной программы `.mix', скомпилированнойmixasm
. Если ваша программа ничего не выводит, используйте флаг-d
(см. ниже) чтобы просмотреть состояние виртуальной машины после завершения работы программы.
- User Option: -d
- User Option: --dump
- Этот параметр должен использоваться в сочетании с
-r
. Он указываетmixvm
вывести значение регистров виртуальной машины, флага сравнения и триггера переполнения после выполнения программы ФАЙЛ. См. пример использования в 3.3.1 Неинтерактивный режим.
- User Option: -t
- User Option: --time
- Этот параметр должен использоваться в сочетании с
-r
и указываетmixvm
вывести статистику виртуального времени выполнения программы.
При запуске без флага -r
mixvm
входит в интерактивный
режим, выводя приглашение:
MIX > |
и ожидая команд (see section 6.2 Интерактивные команды). Если задан необязательный аргумент ФАЙЛ, перед переходом в интерактивный режим файл `ФАЙЛ.mix' будет загружен в память виртуальной машины.
При первом запуске mixvm
в вашем домашнем каталоге создаётся
каталог `.mdk'. Она содержит файл конфигурации mixvm
, файл
истории команд и (по умолчанию) файл блочных устройств (see section 6.3 Блочные устройства MIX).
Перед тем, как вывести командное приглашение, mixvm
проверяет
наличие в каталоге `~/.mdk' файла mixguile.scm
, и если он
существует, передаёт для чтения и выполнения встроенному интерпретатору
Guile (see section 3.4.3 Определение новых функций). Чтобы пропустить загрузку
этого файла, вы можете использовать параметр командной строки -q
:
- User Option: -q
- User Option: --noinit
- Не загружать при запуске файл инициализации Guile
~/.mdk/mixguile.scm
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2 Интерактивные команды
Вы можете войти в интерактивный режим виртуальной машины MIX, просто
вызвав mixvm
без аргументов. Тогда вы окажетесь в приглашении
оболочки(17)
MIX > |
которое показывает, что новая виртуальная машина была проинициализирована
и готова выполнять команды. Как мы уже упоминали, это командное
приглашение даёт вам все возможности редактирования командной строки,
описанные в руководстве пользователя Readline (скорее всего, вы уже
хорошо знакомы с этими возможностями, поскольку они присутствуют во
многих утилитах GNU, например, оболочке bash
)(18). В двух словах, readline
даёт возможности дополнения команд клавишей TAB и работы с историей
команд клавишами курсора. Файл истории команд, содержащий последние команды,
введённые в предыдущих сеансах, находится в каталоге конфигурации MDK
(`~/.mdk').
Пока вы новичок, вашим лучшим помощником будет команда help
,
выводящая обзор всех доступных команд MIX и способов их использования.
Её синтаксис таков:
- команда
mixvm
: help [команда] - Вывести краткое описание заданной команды и её использования. Если
команда не указана,
help
выведет краткое описание всех доступных команд.
6.2.1 Файловые команды 6.2.2 Команды отладки 6.2.3 Команды состояния 6.2.4 Команды конфигурирования Изменение и сохранение настроек mixvm. 6.2.5 Команды Scheme
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2.1 Файловые команды
В вашем распоряжении находится набор команд, позволяющий загружать и выполнять исполняемые файлы MIX, а также работать с исходными файлами на MIXAL:
- файловая команда: load file[.mix]
- Эта команда загружает двоичный файл file.mix в память виртуальной
машины, и устанавливает счётчик программы на начало загруженной
программы. Этот адрес задаётся операндом псевдоинструкции
END
в исходном файле на MIXAL. Так, если исходный файл `sample.mixal' содержит строку:END 3000
и вы, скомпилировав её
mixasm
получили двоичный файл `sample.mix', загрузка его в виртуальную машину будет выглядеть так:MIX > load sample Program loaded. Start address: 3000 MIX >
- файловая команда: run [file[.mix]]
- При выполнении без аргумента эта команда начинает или возобновляет
выполнение инструкций начиная с адреса, соответствующего текущему значению
счётчика программы. Поэтому применение этой команды после успешного
выполнения
load
выполнит загруженную программу до обнаружения инструкцииHLT
или до точки останова. Если вы зададите в качестве аргумента имя файла MIX, этот файл будет загружен (как в случаеload
file
) и выполнен. Еслиrun
вызывается вновь после завершения выполнения программы (т.е., после того, как при прошлом запуске обнаружена инструкцияHLT
), счётчик программы переустанавливается и выполнение начинается с начала (собственно говоря, командаload
перед продолжением выполнения программы сохраняет текущий набор установленных точек останова).
- файловая команда: edit [file[.mixal]]
- Вызывается определённый в переменной среды MDK_EDITOR редактор
для редактирования исходного файла file.mixal. Если значение этой
переменной не установлено, проверяются другие в следующем порядке:
X_EDITOR, EDITOR и VISUAL. При вызове без аргумента
редактирует исходный файл загруженного в данный момент файла MIX. Команда,
используемая для редактирования исходных файлов, может также быть определена
командой
sedit
(see section 6.2.4 Команды конфигурирования).
- файловая команда: compile file[.mixal]
- Исходный файл file.mixal компилируется (с отладочной информацией)
mixasm
. При вызове без аргументов перекомпилируется исходный файл загруженного в данный момент файла MIX. Команда компиляции может быть определена командойsasm
(see section 6.2.4 Команды конфигурирования).
- файловая команда: pprog
- файловая команда: psrc
- Вывести путь к загруженной в данный момент программе MIX и её исходному
файлу:
MIX > load ../samples/primes Program loaded. Start address: 3000 MIX > pprog ../samples/primes.mix MIX > psrc /home/jao/projects/mdk/gnu/samples/primes.mixal MIx>
Наконец, для выхода их mixvm
можно использовать команду quit
:
- файловая команда: quit
- Выход из
mixvm
, текущие параметры конфигурации сохраняются в `~/.mdk/mixvm.config'.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2.2 Команды отладки
Последовательное выполнение загруженных программ может быть нарушено следующими командами отладки:
- команда отладки: next [ins_number]
- Эта команда указывает виртуальной машине разобрать и выполнить до
ins_number инструкций, начиная с текущего положения счётчика
программы. Выполнение прерывается либо при разборе указанного числа
инструкций, либо при обнаружении точки останова. При запуске без
аргументов выполняется одна инструкция. Если
next
вызывается после завершения выполнения программы (т.е. после обнаружения инструкцииHLT
при предыдущем запуске), счётчик программы переустанавливается и выполнение начинается с начала (собственно говоря, командаload
перед продолжением выполнения программы сохраняет текущий набор установленных точек останова).
- команда отладки: sbp line_number
- команда отладки: cbp line_no
- Установить точку останова на указанной строке исходного файла. Если
заданная строка соответсвует команде или псевдоинструкции MIXAL,
не создающей инструкции MIX в двоичном файле (такие как
ORIG
илиEQU
), точка останова устанавливается на первой строке исходного файла, создающей инструкцию MIX, после заданной. Так, для нашего примера `hello.mixal':* (1) * hello.mixal: сказать 'hello world' на MIXAL (2) * (3) * label ins operand comment (4) TERM EQU 19 номер устройства консоли MIX (5) ORIG 1000 начальный адрес (6) START OUT MSG(TERM) вывести данные с адреса MSG (7) ...
попытка установить точку останова на строке 5 даст следующий результат:
MIX > sbp 5 Breakpoint set at line 7 MIX >
поскольку строка 7 -- первая, компилируемая в инструкцию MIX (по адресу 3000). Для того, чтобы команда
sbp
работала, исходный файл должен быть скомпилирован с флагом-g
, указывающимmixasm
включить отладочную информацию в двоичный файл `.mix'.Команда
cbp
снимает ранее установленную точку останова на указанной строке исходного файла.
- команда отладки: spba address
- команда отладки: cbpa address
- Устанавливает точку останова по адресу address. Аргумент должен
быть правильным адресом памяти MIX, т.е. находиться в диапазоне
[0-3999]. Имейте в виду, что не проверяется, доступен ли указанный
адрес во время выполнения программы. Для установки точки останова по
адресу командой
sbpa
отладочная информация не нужна. Командаcbpa
снимает ранее установленную точку останова по указанному адресу.
- команда отладки: sbpr A | X | J | Ii
- команда отладки: cbpr A | X | J | Ii
- Устанавливает условную точку останова на изменение указанного
регистра. Например,
sbpr I1
вызовет прерывание выполнения программы при изменении содержимого регистра
I1
. Ранее установленная точка останова снимается командойcbpr
.
- команда отладки: sbpm address
- команда отладки: cbpm address
- Устанавливает условную точку останова на изменение содержимого
указанной ячейки памяти. Аргумент должен быть правильным адресом MIX,
т.е. находиться в диапазоне [0-3999]. Например,
sbpm 1000
вызовет прерывание выполнения программы при изменении содержимого ячейки памяти 1000. Ранее установленная точка останова снимается командой
cbpm
.
- команда отладки: sbpo
- команда отладки: cbpo
- Устанавливает/снимает условную точку останова на изменение значения триггера переполнения.
- команда отладки: sbpc
- команда отладки: cbpc
- Устанавливает/снимает условную точку останова на изменение значения флага сравнений.
- команда отладки: cabp
- Снять все установленные точки останова.
- команда отладки: psym [symbol_name]
- Программы на MIXAL могут определять символические константы, либо
псевдоинструкцией
EQU
, либо как метку в начале строки. Так, в отрывке программы:VAR EQU 2168 ORIG 4000 START LDA VAR
символ
VAR
соответствует значению 2168, аSTART
-- 4000. При компиляции программ на MIXAL с флагом-g
(указывающийmixasm
включить отладочную информацию в двоичный файл `.mix') из командной строкиmixvm
можно просматривать таблицу символов командойpsym
, за которой следует имя искомого символа. При запуске без аргументовpsym
выводит все определённые символы и их значения.
Виртуальная машина может также показывать вам выполняемые инструкции при помощи следующих команд:
- команда отладки: strace [on|off]
strace on
включает отслеживание инструкций. Если отслеживание включено, при выполнении виртуальной машиной каждой инструкции (после применения командrun
иnext
), она выводится в её канонической форме (т.е. все выражение вычисляются и выводятся их числовые значения) и, если программы скомпилирована с отладочной информацией, также в виде, в котором они присутствовали в исходном файле на MIXAL. Отслеживание инструкцию отключается командойstrace off
. Типичный сеанс отслеживания выглядит так:
После адреса памяти в квадратных скобках показывается выполненная инструкция так, как она оттранслирована, а за ней вы можете увидеть реальный код MIXAL, который скомпилирован в эту инструкцию. Поведение в части отслеживания сохраняется как параметр конфигурации в `~/.mdk'.MIX > strace on MIX > next 3000: [OUT 3002,0(2:3)] START OUT MSG(TERM) MIXAL HELLO WORLD Elapsed time: 1 /Total program time: 1 (Total uptime: 1) MIX > next 3001: [HLT 0,0] HLT End of program reached at address 3002 Elapsed time: 10 /Total program time: 11 (Total uptime: 11) MIX > strace off MIX >
- команда отладки: pline [LINE_NUMBER]
- Выводит запрошенную строку исходного текста (или текущую, если
line_number опущен):
MIX > load ../samples/hello Program loaded. Start address: 3000 MIX > pline Line 5: START OUT MSG(TERM) MIX > pline 6 Line 6: HLT MIX >
- команда отладки: pbt [INS_NUMBER]
- Эта команда выводит след выполненных инструкций. Необязательный аргумент
ins_number -- количество выводимых инструкций. Если он опущен или
равен нулю, выводятся все выполненные инструкции. Например, если вы
скомпилировали и загрузили следующую программу (`bt.mixal'):
ORIG 0 BEG JMP *+1 JMP *+1 FOO JMP BAR BAR HLT END BEG
вы получите такие следы:
MIX > load bt Program loaded. Start address: 0 MIX > next MIX > pbt #0 BEG in bt.mixal:2 MIX > next MIX > pbt #0 1 in bt.mixal:3 #1 BEG in bt.mixal:2 MIX > run Running ... ... done MIX > pbt 3 #0 BAR in bt.mixal:5 #1 FOO in bt.mixal:4 #2 1 in bt.mixal:3 MIX > pbt #0 BAR in bt.mixal:5 #1 FOO in bt.mixal:4 #2 1 in bt.mixal:3 #3 BEG in bt.mixal:2 MIX >
Заметьте, что след выполненных инструкций даёт вам метку выполненной строки, или, если у неё нет метки, её адрес.
Как вы, вероятно, заметили, mixvm
выводит при выполнении программы
статистику времени. Это поведение может управляться командой stime
(see section 6.2.4 Команды конфигурирования).
mixvm
может также вычислять w-выражения (see section 2.2.4 W-выражения)
с помощью следующей команды:
- команда отладки: weval WEXP
- Вычисляет заданное w-выражение WEXP. W-выражение может содержать
любые определённые в данный момент символы. Например,
MIX > psym START + 00 00 00 46 56 (0000003000) MIX > weval START(0:1),START(3:4) + 56 00 46 56 00 (0939716096) MIX >
Новые символы можно определять командой ssym
:
- команда отладки: ssym SYM WEXP
- Определяет символ SYM, значение которого получается вычислением
w-выражения WEXP. Вновь определённый символ может использоваться
в последующих командах
weval
в вычисляемых выражениях. Например,MIX > ssym S 2+23*START + 00 00 18 19 56 (0000075000) MIX > psym S + 00 00 18 19 56 (0000075000) MIX > weval S(3:4) + 00 00 19 56 00 (0000081408) MIX >
Наконец, если вы хотите узнать, каково десятичное значение выраженного пятью байтами и знаком слова MIX, вы можете использовать:
- команда отладки: w2d WORD
- Вычисляет десятичное значение заданного слова. WORD должно быть
задано в виде: знак (+/-), затем пять разделённых пробелами двузначных
десятичных значений, представляющих пять байтов, составляющих слово.
Обратная операция (представление десятичного значения словом) может
быть выполнена командой
weval
. Например,MIX > w2d - 01 00 00 02 02 -16777346 MIX > weval -16777346 - 01 00 00 02 02 (0016777346) MIX >
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2.3 Команды состояния
Просмотр и изменение состояния виртуальной машины (содержимое памяти, регистров, триггера переполнения и флага сравнения) осуществляются следующими командами:
- команда состояния: pstat
- Эта команда выводит текущее состояние машины, одно из следующих:
- No program loaded
- Program successfully loaded
-
Execution stopped (
next
executed) - Execution stopped: breakpoint encountered
- Execution stopped: conditional breakpoint encountered
- Program successfully terminated
- команда состояния: pc
- Выводит текущее значение счётчика программы, который в программе, не завершившей работу, хранит адрес следующей выполняемой инструкции.
- команда состояния: sreg A | X | J | I[1-6] value
- команда состояния: preg [A | X | J | I[1-6]]
- команда состояния: pall
preg
выводит содержимое указанного регистра MIX. Например,preg
A выведет содержимое регистра A. При вызове без аргументов будут выведены все регистры:MIX > preg rA: - 00 00 00 00 35 (0000000035) rX: + 00 00 00 15 40 (0000001000) rJ: + 00 00 (0000) rI1: + 00 00 (0000) rI2: + 00 00 (0000) rI3: + 00 00 (0000) rI4: + 00 00 (0000) rI5: + 00 00 (0000) rI6: + 00 00 (0000) MIX >
Как можно видеть из этого примера, содержимое регистра выводится в виде: знак, значения байтов регистра и, в скобках, десятичное представление его абсолютной величины.
pall
выводит содержимое всех регистров, флага сравнения и триггера переполнения.Наконец,
sreg
устанавливает содержимое указанного регистра равным value, заданному десятичной константой. Если value больше максимального хранимаого в заданном регистре значения, туда помещаетсяVALUE mod MAXIMUM_VALUE
:MIX > sreg I1 1000 MIX > preg I1 rI1: + 15 40 (1000) MIX > sreg I1 1000000 MIX > preg I1 rI1: + 09 00 (0576) MIX >
- команда состояния: pflags
- команда состояния: scmp E | G | L
- команда состояния: sover F | T
pflags
выводит значение флага сравнения и триггера переполнения виртуальной машины:MIX > pflags Overflow: F Cmp: E MIX >
Значение триггера переполнения составляет или F n(false/ложь) или T (true/истина), а флага сравнения E, G или L (equal/равно, greater/больше, lesser/меньше).
scmp
иsover
устанавливают значения флага сравнения и триггера переполнения.
- команда состояния: pmem from[-to]
- команда состояния: smem address value
pmem
выводит содержимое ячеек памяти в диапазоне [FROM-TO]. Если верхняя граница to опущена, выводится только содержимое ячейки с адресом FROM:MIX > pmem 3000 3000: + 46 58 00 19 37 (0786957541) MIX >
Содержимое памяти выводится и как пять байтов MIX со знаком, составляющие слово MIX, и, в скобках, как десятичное значение абсолютной величины хранимого числа.
smem
устанавливает содержимое ячейки памяти с адресом address равным value, выраженному десятичной константой.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2.4 Команды конфигурирования
Этот раздел описывает команды, позволяющие изменять поведение виртуальной машины. Эта конфигурация хранится в каталоге MDK `~/.mdk'.
Как можно видеть из описания, некоторые команды в качестве побочного
эффекта выводят на стандартный вывод информационные сообщения
(например, load
выводит сообщение, информирующее о начальном
адресе загруженной программы). Эти сообщения могут быть включены и
отключены командой slog
:
- команда конфигурирования: slog on|off
- Включает/выключает ведение лога информационных сообщений. Имейте в виду,
что сообщения об ошибках, а также сообщения о состоянии, требующие
использования команд, предварённых
p
(preg
,pmem
и т.п.) выводятся всегда.
- команда конфигурирования: stime on|off
- команда конфигурирования: ptime
- Команда
stime
включает/выключает вывод статистики времени выполнения, аptime
выводит текущую статистику:MIX > ptime Elapsed time: 10 /Total program time: 11 (Total uptime: 11) MIX >
- команда конфигурирования: sedit TEMPLATE
- команда конфигурирования: pedit
sedit
указывает команду, используемую для редактирования исходных файлов на MIXAL командойedit
. TEMPLATE должен содержать управляющие литеры%s
, отмечающие место, куда вставляется имя исходного файла. Например, если вы введёте:MIX > sedit emacsclient %s MIX >
при выполнении в
mixvm
командыedit foo.mixal
будет вызываться команда операционной системыemacsclient foo.mixal
.pedit
выводит текущее значение шаблона команды редактирования.
- команда конфигурирования: sasm TEMPLATE
- команда конфигурирования: pasm
sasm
указывает команду, используемую для компиляции исходных файлов на MIXAL командойcompile
. template должен содержать управляющие литеры%s
, отмечающие место, куда вставляется имя исходного файла. Например, если вы введёте:MIX > sasm mixasm -g -l %s MIX >
при выполнении в
mixvm
командыcompile foo.mixal
будет вызываться команда операционной системыmixasm -g -l foo.mixal
.pasm
выводит текущее значение шаблона команды компиляции.
- команда конфигурирования: sddir DIRNAME
- команда конфигурирования: pddir
- Устройства MIX (see section 6.3 Блочные устройства MIX) реализованы в виде обычных файлов,
находящися по умолчанию в каталоге `~/.mdk'. Команда
sddir
позволяет указать иное расположение этих файлов, аpddir
выводит текущий каталог устройств.
Наконец, вы можете изменить командное приглашение по умолчанию
(`MIX > ') командой prompt
:
- команда конфигурирования: prompt PROMPT
- Изменяет командное приглашение на prompt. Если вы хотите поместить
в конце приглашения пробел(ы), заключите prompt в двойные кавычки
(например,
prompt ">> "
).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.2.5 Команды Scheme
Если вы скомпилировали MDK с поддержкой libguile
(see section 1.5 Специальные флаги конфигурации), mixvm
при вызове
запустит и проинициализирует встроенный интерпретатор Scheme Guile.
Это означает, что в вашем распоряжении (в командной строке mixvm
)
имеются все примитивы Scheme, описанные в 3.4 Использование mixguile
и 8. mixguile
, виртуальная машина на основе Scheme, а равно все остальные функции или ловушки, которые
вы определили в файле инициализации `~/.mdk/mixguile.scm'. Чтобы
вычислить функцию Scheme, просто введите её в командном приглашении
mixvm
(см. примеры в 3.5 Использование Scheme в mixvm
и gmixvm
).
По сравнению с программой mixguile
есть только одно ограничение:
вычисляемые в mixvm
выражения не могут занимать более одной
строки. Вы можете преодолеть это неудобство, записав многострочное
выражение Scheme в файл и загружая его командой scmf
:
- команда scheme: scmf FILE_NAME
- Загружает указанный файл Scheme и выполняет его, используя встроенный интерпретатор Guile.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.3 Блочные устройства MIX
Компьютер MIX оборудован набором блочных устройств для операций
ввода/вывода (see section 2.1.2.8 Команды ввода/вывода). mixvm
реализует
эти блочные устройства как дисковые файлы, за исключением блочного
устройства 19 (текстовый терминал), которое перенаправлено на
стандартный вывод. При выполнении операции вывода на любом другом
устройстве (устройстве вывода), создаётся файл, название которого
соответствует нижеприведённой таблице, и в него записываются указанные
слова MIX в двоичном (для двоичных устройств) или ASCII (для символьных
устройств) виде. Файлы, соответствующие устройствам ввода, должны быть
созданы и заполнены до запуска виртуальной машины MIX (для устройств
ввода/вывода файлы могут быть созданы при записи программой на MIXAL
требуемых данных на это устройство, или же, если вам так больше нравится,
записаны вашим любимым текстовым редактором). Файлы устройств по
умолчанию находятся в каталоге `~/.mdk', это расположение может
быть изменено командой mixvm
devdir
(see section 6.2.4 Команды конфигурирования).
Устройство | номер | имя_файла | тип |
Лента | 0-7 | `tape[0-7].dev' | bin i/o |
Диски | 8-15 | `disk[0-7].dev' | bin i/o |
Чтение перфокарт | 16 | `cardrd.dev' | char in |
Запись перфокарт | 17 | `cardwr.dev' | char out |
Строчный принтер | 18 | `printer.dev' | char out |
Терминал | 19 | stdout | char out |
Перфолента | 20 | `paper.dev' | char out |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June, 9 2003 using texi2html