18. Утилиты и драйверы 17.09.90 В состав ВПО входит набор служебных программ (утилит), работающих под управлением ДОС. Ниже перечисляются все утилиты и драйверы ВПО, а также приводится описание тех из них, которые не описаны в других частях документации. KEY100.SAV─ данная утилита программирует клавиатуру ПЭВМ и пере─ ключает эмулятор текстового дисплея в режим VT─100; KEY52.SAV ─ аналогично предыдущей утилите ─ в режим VT─52; KEY15.SAV ─ аналогично предыдущей утилите ─ в режим 15─ИЭ─0013; VTSET.SAV ─ данная утилита предназначена для изменения режимов работы эмулятора текстового дисплея VT─100. Выбор соответствующих изменений производится в режиме меню. Пункты меню: Underscore/Nounderscore ─ включаетевыключает режим вывода символов с подчеркиванием; Normal chars/Revers chars ─ вывод символов в прямом (инверсном) виде; Revers screen ─ инвертирует весь экран; Line feed/New line ─ символ LF (восьмеричный код 12) обрабатывается либо как одиночный символ LF (Line feed)б либо как совокупность двух символов LF+CR (New line); Wrap ON/OFF ─ при выводе печатного символа в 80 колонку происходит (ON), либо не происходит (OFF) переход на новую строку; Cursor ON/OFF ─ выводит (ON) или не выводит (OFF) изображение курсора в текущую позицию; Reset VT100 ─ производит инициализацию всех режимов работы эмулятора VT─100 и завершает работу программы; Change font ─ после выбора этого пункта меню на экран выводится перечень всех зарегистрированных в оконной системе шрифтов с их номерами. Выбор нужного шрифта производится заданием его номера; E X I T ─ выход из программы. FLOAD.SAV ─ данная утилита выполняет загрузку и регистрацию в оконной системе нового шрифта; FD.SAV ─ данная утилита позволяет редактировать очертания сим─ волов различных шрифтов; утилита запускается следующей командой: .FD FONT где FONT ─ спецификация файла, содержащего шрифт; тип файла по умолчанию ─ .FON; редактирование шрифта выполняется в экранном режиме; FLOP.SAV ─ данная утилита выполняет форматирование ГМД; HARD.SAV ─ данная утилита выполняет форматирование ЖМД; MML.SAV ─ данная утилита выполняет трансляцию мелодий, запи─ санных на языке MML во внутренний формат; CLS.SAV ─ данная утилита выполняет очистку экрана текстового дисплея (VT─100); ее полезно использовать в командных файлах; MEM.SAV ─ выводит на экран текстового дисплея карту использова─ ния оперативной памяти: каждому знакоместу соответ─ ствует блок памяти 4К байт, символом "█" отмечены занятые блоки памяти; KILL.SAV ─ данная утилита "убивает" процесс, идентификатор (по─ рядковый номер) которого указан в командной строке; в одной строке можно через пробелы (или запятые) перечислить идентификаторы нескольких процессов, которые необходимо "убить", например: .kill 12 ─ "убивает" процесс 12; .kill 13,16 ─ "убивает" процессы 13 и 16 PS.SAV ─ выводит на экран текстового дисплея список процессов ВПО и их параметры; для каждого процесса высвечи─ вается следующая информация: ─ порядковый номер процесса (идентификатор); ─ символическое имя процесса; ─ адрес дескриптора процесса (восьмеричный); ─ приоритет; ─ состояние процесса: Run ─ текущий (выполняющийся) процесс; Wait ─ процесс ожидает процессор; I/O ─ процесс ожидает физическое прерывание; Int ─ процесс ожидает прерывание по регистру; Tim ─ процесс ожидает "тайм─аут". ─ размер памяти в К байт, принадлежащей процессу, либо "No memory map" ─ процесс не захватил памяти (возможно используется память другого процесса); В ТОМ ЧИСЛЕ: ─ размер младшей памяти (первые 256К) в К байт; ─ размер остальной памяти; ─ использованное процессом время процессора: часы.минуты:секунды PRUN.SAV ─ данная утилита загружает в память и запускает на выполнение процесс, находящийся в файле; командной строкой является спецификация файла, содержащего процесс; тип файла по умолчанию ─ .SAV; например: .PRUN MDC.PRC ─ запускает процесс из файла MDC.PRC; за спецификацией файла (после "/") может следовать символическое имя процесса; если оно указано, то оно и будет использовано; если в командной строке имя отсутствует, то процессу будет присвоено имя, заданное в файле; в противном случае в качестве имени будет использована командная строка; если в командной строке для PRUN за спецификацией файла следует "//", или сим─ волическое имя процесса отделяется от спецификации файла "//", то после загрузки процессе на экране будет распечатан номер, присвоенный процессу, имя процесса, а также карта выделенной памяти (в формате аналогичном утилите MEM. формат файла, содержащего процесс: Первое слово файла (блок #0) должно содержать два символа (латынь) "P" и "С", например: .ASECT . ═ 0 .ASCII "PC" ; OR .WORD "PC Данное слово файла предназначено для целей контроля: PRUN не будет загружать процесс из файла, в котором отсутствует данный идентификатор. Второе слово содержит номер окна, начиная с которого процесс будет отображаться в оперативной памяти (захваченной для этого процесса). Адресное пространство процесса составляет 64К байт. Оно разбито на 8 окон по 8К байт каждое. Если второе слово содержит ненулевое значение, то предполагается, что процесс размещается в файле не с самого начала. Например, если это слово содержит 1, процесс должен находиться в файле, начиная с блока номер 16, а если слово содержит 4, то ─ с блока 48. Обычно это слово содержит 0: это означает что процесс будет отображаться в память, начиная с окна 0, и размещается в файле с самого начала (с блока 0). Третье слово позволяет задать размер памяти в блоках по 8К байт, которая должна быть выделена процессу, и в которую процесс будет загружен. Если данное слово содержит отрицательное значение, то оно задает размер памяти (который будет выделен процессу) в блоках по 4К. Если данное слово содержит 0, то процессу будет выделено столько памяти (округлено до границы 8К или 4Кбайт), сколько места занимает процесс в файле. Точность округления зависит от того, из какой области будет выделяться память: если из младшей ─ то с точностью до 4К, в противном случае ─ с точностью до 8К (см. следующее слово). Четвертое слово определяет из какой области (младшей или любой) должна выделяться память процессу. Если слово содержит 0, то будет выделяться память из младшей области (из первых 256К байт). В противном случае (слово содержит ненулевое значение) память будет выделяться из старшей области. Начиная с пятого слова может следовать символическое имя процесса. Имя должно быть в формате юфысшя и не должно превышать 16 символов. После успешной загрузки процесса он будет запущен на выполнение на самом высоком приоритете. Адрес, по которому процесс получит управление (первый раз), ─ это стартовый адрес программы плюс два. Стартовый адрес программы формата .SAV хранится в блоке 0 файла по смещению 40 (восьмеричное). Начальное значение указателя стека будет взято по смещению 42 (восьмеричное). Рекомендуется, чтобы в процессе по стартовому адресу находилась либо системная макрокоманда дисковой ОС .EXIT, либо инструкция процессора "CLR PC". Это связано с тем, что неумышленный запуск файла с процессом под управлением дисковой ОС может привести к нарушению ее работоспособности ─ "зависанию". Если же выполнить рекомендацию, то в случае запуска процесса под управлением ОС, процесс сразу же завершится и передаст управление монитору ОС. После получения управления процесс должен выполнить свою инициализацию: захватить необходимые регистры для эмуляции, вектора прерываний и т.д., т.е. все, что ему необходимо для последующей нормальной работы. После этого в процессе необходимо обязательно предусмотреть понижение приоритета. Следует также помнить, что процесс может обращаться к регистрам, эмулируемым другими процессами, если только он имеет приоритет, меньший чем процесс, обслуживающий эти регистры. Дисковая ОС дополнена следующими драйверами: FD.SYS ─ драйвер НГМД для нормальной работы дисковой ОС; HD.SYS ─ драйвер НЖМД для нормальной работы дисковой ОС; MD.SYS ─ драйвер "электронного диска", позволяющий использовать часть оперативной памяти ПЭВМ в качестве накопителя дискового типа; SN.SYS ─ драйвер звукогенератора.