Ахманов С., Рой Н., Скурихин А.

Пользователям о "Корвете"

Введение

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

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

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

В настоящее время наша страна находится на пороге решения этих проблем. И здесь представляется важным привлечь как можно больше творческих людей к участию в деле полной компьютеризации страны. Для этого мало знать основы цифровой техники. Требуются специалисты, которые не только умеют собирать и налаживать различные устройства, но и использовать современное программное обеспечение, составлять свои программы для управления этими устройствами. Другими словами, необходимо обучить людей профессиональной работе с вычислительной техникой, c компьютерами.

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

Однако дело начинает сдвигаться с "мертвой точки". Разработан ряд отечественных персональных компьютеров и начат их серийный выпуск. Удачным по совокупности своих характеристик является компьютер, разработанный в Институте ядерной физики Московского государственного университета. Под названием "Корвет" он выпускается сегодня на предприятиях министерства радиопромышленности, правда, с серьезными трудностями (см. "Корвет" на мели. Кто виноват?" "Радио", 12-1988 и "Радио", 07-1988, "Кто и когда снимет "Корвет" с мели?"). Согласно планам, его выпуск будет достигать сотен тысяч штук в год.

Хотя этот компьютер предназначен прежде всего для школьной компьютеризации и выпускается как комплект учебной вычислительной техники (КУВТ), в который входит рабочее место преподавателя (ПК8020) и до 15 рабочих мест учащихся (ПК8010), это - микро-ЭВМ широкого профиля. Поэтому мне представляется важным и своевременным ознакомить всех потенциальных пользователей "Корвета" с его устройством и основами его программирования.

Поскольку цена "Корвета" сравнительно невелика, то можно надеяться, что в недалеком будущем эта машина поступит в розничную торговлю и таким образом сможет войти в каждый дом. Я уверен, что богатые возможности "Корвета" никого не оставят равнодушными, и число его пользователей будет постоянно увеличиваться. Надеюсь, что "Корвет" вызовет большой интерес у радиолюбителей.

Необходимо отметить, что "Корвет", несмотря на кажущуюся простоту, является довольно сложным устройством. Поэтому вряд ли целесообразно пытаться повторить его своими силами в домашних условиях. Правильнее было бы сосредоточить внимание на разработке устройств и соответствующих программ, применимых в различных областях человеческой жизни. И здесь вклад радиолюбителей может быть значительным.

Публикуемый в журнале "Радио" цикл статей, написанный разработчиками "Корвета" - научными сотрудниками Института ядерной физики МГУ Сергеем Ахмановым, Николаем Рой и Александром Скурихиным, предназначен для первого ознакомления читателей с устройством компьютера. Основное внимание уделено описанию различных устройств, входящих в состав этой машины, даны сведения, как ими пользоваться.

Авторы намеренно не приводят принципиальную схему "Корвета", не дают и рекомендаций по его изготовлению и наладке. Поместить в журнале всю необходимую для этого техническую документацию просто невозможно. Однако, как показывает практика, для продуктивной работы с машиной вовсе необязательно знать тонкости ее принципиальной схемы. Это, в частности, связано с тем, что в современных компьютерах все чаще используются заказные и полузаказные БИС. Как они устроены внутри, знает только изготовитель. Остальные имеют информацию лишь о командах, которые управляют работой микросхем. И этого совершенно достаточно.

Исходя из этих соображений, авторы предлагаемого вниманию читателей цикла статей основной своей целью видят обучение пользователей "Корвета" именно программированию входящих в него контроллеров, адаптеров и интерфейсов. Поскольку все они являются стандартными для персональных компьютеров, то, зная, как до них добраться, не составляет труда подключить через них к "Корвету" самые разнообразные устройства.

Итак, вам предлагается осуществить первое знакомство с "Корветом". Я надеюсь, что публикуемый материал поможет читателям журнала "Радио" успешно освоить эту машину и по мере появления компьютера в продаже активно использовать его в своей деятельности.

Академик Е. ВЕЛИХОВ, вице-президент АН СССР

Первое знакомство

Знакомство с "Корветом" начнем с истории его создания. Тогда будут понятнее идеологические аспекты выбора параметров нашего компьютера и его возможности.

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

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

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

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

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

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

Особое внимание уделили схемотехнике. Если машина собрана правильно, из годных деталей, то отпадает необходимость в ее наладке.

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

Заботой о пользователе обусловлен и выбор процессора, на котором построена машина. Это очень важный вопрос. В настоящее время наибольшую часть стоимости вычислительной системы составляет ее программное обеспечение, и правильный выбор процессора может помочь избежать этих затрат путем использования программного продукта, наработанного в мире. Это однозначно определило выбор 8-разрядного массового отечественного процессора КР580ВМ80А, аналогичного широко известному процессору I8080А фирмы "INTEL", на базе которого построено большое количество зарубежных персональных компьютеров и для которого существует огромное количество программ.

Перейдем к описанию систем, входящих в состав машины.

Системы "Корвета"

Сердцем любой ПЭВМ является центральный процессор. В "Корвете", как уже было сказано, использован широко известный микропроцессор КР580ВМ80А, который работает с максимальной разрешенной для него тактовой частотой, равной 2,5 МГц. Это обеспечивает быстродействие 625 тыс. коротких операций в секунду. (Хотя, конечно, правильнее было бы измерять быстродействие в каких-либо осмысленных единицах. Однако такова сложившаяся практика). При этом генератор тактовых импульсов собран по нестандартной схеме, что позволило при использовании одного кварцевого задающего генератора осуществить синхронизацию всех систем машины, существенно повысив тем самым ее быстродействие.

Полный объем памяти, входящей в состав машины, достигает 361 килобайт. При этом, ввиду того что процессор способен адресоваться одновременно только к 64 килобайтам, становится необходимым специальный механизм, который называется диспетчером памяти и обычно не встречается в машинах такого класса. В нашей ЭВМ он присутствует, но реализован несколько нетрадиционно.

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

У нас память состоит из принципиально разных банков памяти, каждый из которых входит в состав определенной системы и аппаратно построен таким образом, чтобы обеспечить максимальное быстродействие той системы, в состав которой он входит. Диспетчер памяти позволяет предусмотреть 32 комбинации из этих банков, любую из которых можно мгновенно выбрать программным образом.

Одним из таких банков является ПЗУ, объем которого может достигать 96 килобайт. Предназначен банк для хранения резидентных средств программного обеспечения (резидентными называют программы в защищенной от прикладных программ области оперативной памяти). Такими средствами являются тест-мониторная система и интерпретатор языка программирования Бейсик. Бейсик - это язык, который обязательно должен быть в любом персональном компьютере. Простота, достаточная эффективность и распространенность делают его необходимым атрибутом массовой ЭВМ. Для нашей машины был специально написан интерпретатор языка Бейсик, который, с точки зрения пользователя, не отличается от стандартных языков фирмы "Microsoft". Он написан для операционной системы СР/М-80 самых распространенных ныне персональных компьютеров серии IBM PC фирмы "IBM" и составляет также основу стандарта MSX.

Наш Бейсик является одним из этого клана и существует в двух версиях объемом 16 и 24 килобайт, что оставляет еще большой запас в пределах 96 килобайт для дальнейшего расширения. Язык находится в машине резидентно, не требуя никаких устройств внешней памяти, и пользователь получает его в свое распоряжение путем простого включения машины в сеть.

Система оперативной памяти представляет собой банк ОЗУ, не используемый ни для каких нужд, кроме хранения программ и данных пользователя. Все другие системы, как мы уже говорили, имеют свои собственные банки памяти. Этот банк ОЗУ может быть выполнен как на дешевых микросхемах емкостью 16 килобит, так и на более дорогих и дефицитных, емкостью 64 килобита, что позволяет иметь оперативную память объемом 16 или 64 килобайта. Эта память может быть увеличена за счет возможностей системы графики высокого разрешения до 256 килобайт.

Очень важной системой является блок контроллера накопителей на гибких магнитных дисках, Система позволяет подключить к машине до четырех накопителей любого из существующих стандартов: односторонние или двусторонние диски, с одинарной или двойной плотностью записи, с любой плотностью треков, восьми-, пяти- или трехдюймовые в любых комбинациях. Суммарная емкость четырех накопителей составляет 4 мегабайта. Для управления дисководами на машину поставлена дисковая операционная система, полностью аналогичная самой распространенной в мире для этого класса машин операционной системе СР/М-80. Это дает возможность использовать чрезвычайно большое количество системных и прикладных программ, созданных для работы под управлением этой операционной системы.

Система внешней памяти "Корвета" может быть реализована и на базе любого бытового магнитофона. С помощью этой системы можно сохранить результат работы за день или воспользоваться чужими программами или данными. Лучшие результаты получаются на магнитофонах среднего класса. Это объясняется тем, что сигнал нашего компьютера узкополосный (порядка единиц килогерц), а высококачественные широкополосные магнитофоны вcе производят дополнительные шумы.

Скорость записи информации в нашей системе составляет 2400 бод, что позволяет записать на одну кассету МК-60 до одного мегабайта информации или порядка одной тысячи страниц текста. Помимо чтения или записи, система имеет встроенное реле, с помощью которого можно управлять мотором магнитофона через вход "Кратковременный СТОП". Это позволяет программе хотя бы в минимальных пределах управлять процессами чтения или записи, "подгружать" дополнительные программы или данные.

Следующим устройством, необходимым для работы машины, помимо процессора и памяти, является клавиатура. Это, по-видимому, самое распространенное устройство ввода, с помощью которого мы можем управлять работой персонального компьютера. В нашем случае нет необходимости в отдельной клавиатуре, стоимость которой сравнима со стоимостью персонального компьютера, так как вся машина объединена с ней и собрана в одном корпусе.

Клавиатура представляет собой печатную плату, на которой установлены клавиши, в качестве которых могут быть использованы любые замыкатели, вплоть до кнопок от дверных звонков. Дело в том, что с проблемами типа "дребезга контактов" борется сама ЭВМ. Таким образом, единственным критерием к подбору клавишей стала их дешевизна.

В "Корвете" может работать до 128 клавиш. В настоящее время используется 80, в число которых входят поле стандартной русскоязычной пишущей машинки, поле программируемых клавиш, поле специальных клавиш и отдельное цифровое поле, переключаемое в поле управления курсором.

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

Отличием нашей машины от общепринятых является аппаратная реализация знакогенератора. Это означает, что для того, чтобы нарисовать какой-либо символ, достаточно "положить" его код в нужное место экрана дисплея, и аппаратные средства мгновенно реализуют его образ. При этом символ будет достаточно красивым, так как он синтезируется в матрице размерами 8Х16 точек, а в общепринятых лишь 5Х7 или 7Х9 точек. Так, все вертикальные линии состоят из пар точек, что позволило сделать шрифт с так называемым "нажимом", как это сделано в специализированном текстовом адаптере персонального компьютера фирмы "IBM".

Знакогенератор содержит два набора символов по 256 штук в каждом. Первый набор состоит из 128 символов, соответствующих стандартному набору ASCII, и 128 - прописных и строчных букв русского алфавита, расположенных в соответствии со стандартом КОИ-8. Во второй набор входят специальные символы, с помощью которых можно реализовать псевдографику с разрешением 128 на 48 точек.

Этот графический режим далек от возможностей специализированной графической системы, также имеющейся в "Корвете", но имеет и свои преимущества.

Во-первых, ввиду аппаратной реализации знакогенератора картинка может быть нарисована очень быстро, При программировании на "С" или Ассемблере весь экран может быть заполнен за время порядка 10 миллисекунд, что в два раза быстрее, чем нужно для того, чтобы показывать мультфильм, так как время заполнения телевизионного кадра равно 20 миллисекундам.

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

Второй набор символов аппаратного знакогенератора отличается тем, что русский шрифт в нем упорядочен по алфавиту. Дело в том, что в стандарте КОИ-8 буквы русского алфавита расположены в звуковом соответствии с латинским шрифтом, образуя последовательность Ю А Б Ц Д Е Ф Г Х и т. д., что было удобно при использовании англоязычных клавиатур, но затрудняет работу с архивами и базами данных. Так, если Вы будете сортировать вашу записную книжку в коде КОИ-8, не принимая специальных мер, то получите на первом месте всех Юрьевых, затем Андреевых, Борисовых, Цаплиных и т. д. Второй набор знакогенератора позволяет избежать этих проблем. В этом наборе имеются также другие графические символы, аналогичные набору машины IBM PC, с помощью которых удобно создавать различные рамки, таблицы и тому подобное. Каждый символ из любого знакогенератора может быть отображен светлым на темном фоне или темным на светлом фоне, возможно проинвертировать все изображение целиком или его часть, что позволяет реализовать различные курсоры, меню, выделение блоков. На выходе системы отображения алфавитно-цифровой и псевдографической информации мы имеем обычный композитный видеосигнал, который может быть подан на видеовход любого телевизора или монитора.

Одна из систем "Корвета" обеспечивает работу с двумя двухкоординатными манипуляторами типа "joystick" для управления объектами на экране.

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

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

В "Корвете" реализованы оба существующие в настоящее время стандарта на последовательный интерфейс. Это как "токовая петля", где сигналы передаются подачей тока величиной 20 мА, так и "RS-232C", где сигналы передаются напряжением +/-12 Вольт. Оба эти набора сигналов подаются на один разъем. Скорость обмена по последовательному интерфейсу задается программным образом и может достигать максимально разрешенной по стандарту и равной 19 200 бод.

В отдельную систему можно выделить манипулятор типа "мышь", который подключается к разъему последовательного интерфейса. "Мышь" представляет собой небольшую коробочку, перемещение которой по столу или любой другой поверхности однозначно задает перемещение какого-либо объекта на экране. Это особенно удобно для всех задач автоматизированного проектирования. К "Корвету" без каких-нибудь переделок может быть подключен и поддержан соответствующим программным обеспечением один из наиболее распространенных в мире манипуляторов "мышь" фирмы "Microsoft".

Оперативная память и графический дисплей

Как мы уже отмечали в предыдущей статье, объем памяти "Корвета" может достигать 353 Кбайт; 96 Кбайт отводится под ПЗУ, 257 Кбайт занимает ОЗУ. При этом оперативная память делится следующим образом: 64 Кбайт - собственно ОЗУ микропроцессора, 192 Кбайт - ОЗУ графического дисплея (ГЗУ) и 1 Кбайт - память алфавитно-цифрового дисплея. Кроме того, все регистры контроллеров и адаптеров, установленных на плате "Корвета" (далее будем именовать их устройствами вода - вывода - УВВ), так же адресуются, как ячейки памяти. Итак, мы видим, что объем памяти ЭВМ существенно превышает 64 Кбайта, к которым процессор КР580ВМ80А может обращаться непосредственно.

Для того чтобы иметь возможность работать с такой памятью, имея всего 16 адресных линий, в "Корвете" предусмотрено специальное устройство - диспетчер памяти. Его задача формировать сигналы, разрешающие обращаться к тем или иным областям ОЗУ. Такой режим работы называется страничным.

Минимальный объем страницы памяти составляет 256 байт, она может быть и большего размера, максимальные параметры которого строго не регламентируются. Обычно устройства УВВ и ОЗУ алфавитно-цифрового дисплея сводятся на одну страницу объемом 2 Кбайт, а обращение к ГЗУ производится через окошко объемом 16 Кбайт.

Какие преимущества дает страничный режим работы ОЗУ в нашей ЭВМ?

Во-первых, вы можете легко изменять карту памяти, перемещая страницы в адресном пространстве. Это бывает необходимо при использовании на ПЭВМ различных операционных систем.

Во-вторых, вы можете отключать одни и подключать другие области памяти в ходе выполнения программы. Таким образом, например, создают электронный диск. В "Корвете" под электронный диск используется часть ГЗУ объемом 144 Кбайт.

В-третьих, бывают случаи, когда ваша программа настолько велика, что не умещается в 64 Кбайтах памяти. В этом случае удается размещать отдельные функции в других страницах ОЗУ и подключать их к основной программе по мере надобности.

Рассмотрим наиболее часто используемые конфигурации адресного пространства в "Корвете". Первая из них это конфигурация, необходимая для нормальной работы операционной системы СР/М-80. В этом случае карта памяти составляется так, чтобы в нее входили ресурсы УВВ и часть ОЗУ. Под УВВ отводится область адресного пространства емкостью 2 Кбайт от адреса F800H до адреса FFFFH (буква Н в конце числа означает, что это число шестнадцатеричное). Остальное адресное пространство емкостью 62 Кбайта отводится под ОЗУ, т.е. оно занимает адрес от 0 до F7FFH.

Другая часто используемая конфигурация относится к языку Бейсик. Поскольку Бейсик в основном располагается в ПЗУ, то нам необходимо включить его в карту памяти, которая будет иметь следующий вид: ПЗУ займет в ней объем 24 Кбайт с адреса 0 по 5FFFH; ОЗУ - от 6000Н по F7FFH, а УВВ - с F800H по FFFFH.

Если мы хотим использовать Бейсик, включающий в себя графические функции, то нам необходимо подключить к адресному пространству ГЗУ. В этом случае используется следующая карта памяти: ПЗУ с объемом 24 Кбайт от 0 по 5FFFH; ОЗУ-от 6000Н по BEFFH; УВВ - от BF00H по BFFFH и ГЗУ - от С000Н по FFFFH.

Обратите внимание, что в последнем случае в область УВВ не включена страница ОЗУ алфавитно-цифрового дисплея.

Теперь займемся вопросом: каким образом в "Корвете" происходит переключение карты памяти? В нем имеется довольно большое число устройств, подключенных к одним и тем же адресным линиям. Чтобы они не вступали в "конфликт" при обращении к ним процессора, в машине предусмотрен дешифратор старшего байта адреса, который и выбирает то или иное устройство, причем только одно.

Этот дешифратор программируемый. Это означает, что мы можем программно изменять те сочетания битов в старшем байте адреса, которые приводят к выбору того или иного устройства. Другими словами, в этом дешифраторе имеется несколько наборов ключей, которые обеспечивают доступ к устройствам "Корвета". Их может быть 32. Какой набор нам нужен в данном случае, определяет так называемый системный регистр.

Итак, чтобы изменить карту памяти, следует записать в системный регистр соответствующий номер. А где располагается этот регистр? Ведь мы говорили, что регистры "Корвета" также являются частью памяти машины и, следовательно, их адреса меняются при изменении карты памяти.

Так, например, системный регистр для конфигураций СР/М-80 и Бейсика, о которых мы вели речь выше, расположен по адресу FA7FH, для графического Бейсика - по адресу BF7FH.

Как мы видим, младший байт адреса системного регистра одинаков для всех конфигураций. Отличается только старший байт, который определяет адрес страницы.

Таким образом, в "Корвете" адресуются различные области памяти. Перейдем теперь к организации графического дисплея.

Прежде всего вспомним информационную емкость экранов. Для алфавитно-цифрового дисплея она составляет 64Х16 символов. Емкость графического дисплея 512Х256 точек. Для того чтобы иметь возможность совмещать изображение с графикой на одном экране, размер матрицы для изображения символов принят 8Х16 точек. Таким образом, мы видим, что количество точек на обоих дисплеях совпадает.

Раз мы изображаем на экране* дисплея 64Х16 символов, то для этого нам потребуется 1 Кбайт памяти. ОЗУ А/Ц дисплея, в зависимости от конфигурации памяти, лежит на разных страницах, для наших примеров с СР/М и Бейсика - с адресом FC00H. В некоторых конфигурациях ОЗУ дисплея может быть вообще отключено. Для формирования изображения символа используется знакогенератор объемом 8 Кбайт, в котором хранятся два набора из 256 символов,

При отображении символов на экране иногда возникает необходимость видоизменять изображение. Для этой цели обычно в алфавитно-цифровой дисплей передают вместе с кодом символа код его атрибута*. В "Корвете" атрибут служит для инвертирования изображения символа. Поэтому А/Ц ОЗУ имеет емкость не 1 Кбайт, а 1К девятиразрядных слов. Девятый бит и является атрибутом.

Атрибут переписывается автоматически при записи кода символа А/Ц ОЗУ из специального триггера инверсии. Для работы с атрибутом и контроля выводимой на экран информации служат два регистра: регистр управления отображением (его адрес на странице периферийных регистров ЗАН) и регистр состояния атрибута видео-инверсии (адрес 381-1 на той же странице).

Периферийные регистры размещены на странице с адресом FB00H для СР/М и Бейсика BF00H для графического Бейсика.

Регистр управления отображением (3AH)
Рисунок 1. Регистр управления отображением (3AH)

Назначение отдельных битов регистра управления отображением приведено на рис. 1.

Перейдем теперь к работе графического дисплея. Это устройство намного сложнее. Достаточно сказать, что объем памяти у него составляет 192 Кбайт. Сначала разберемся с памятью. ГЗУ содержит три банка памяти по 64 Кбайт в каждом. Они образуют три плоскости изображения. Реальная точка на экране дисплея получается из комбинации трех бит из этих плоскостей. Такое построение позволяет получать изображение восьми различных цветов. Поскольку число точек, одновременно изображенных на экране, равно 512Х256=16 Кбайт и, следовательно, три плоскости занимают 48 Кбайт, то в ГЗУ могут разместиться четыре страницы, т. е. четыре независимых экрана. Их можно практически мгновенно переключать, изменяя два младших бита в регистре управления изображением.

Графическая память включается в адресное пространство "Корвета", как страница объемом 16 Кбайт. Ее начальный адрес может быть в зависимости от конфигурации 4000Н или С000Н. Эта память доступна как для чтения, так и для записи.

Рассмотрим процесс обращения к видеопамяти. Допустим, что мы хотим зажечь точку на экране, не повредив ничего остального. Как это сделать, если просто работать с видеопамятью? Для этого необходимо проделать следующие операции:

  1. Переключить карту памяти и подключить к адресному пространству требуемую плоскость ГЗУ.
  2. Считать байт, в котором находится бит, отвечающий за требуемую точку.
  3. Изменить с помощью логических операций содержимое этого бита так, чтобы получилась точка нужного цвета.
  4. Записать байт обратно в ГЗУ.
  5. Опять переключить карту памяти.

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

Какие же имеются механизмы ускорения работы с графикой? Мы располагаем двумя режимами: цветовым и послойным. В цветовом режиме обращение происходит ко всем трем плоскостям одновременно, а в послойном - отдельно к каждой плоскости.

Регистр цвета - цветной режим
Рисунок 2. Регистр цвета - цветной режим

Рассмотрим цветовой режим как основной при работе с графическим дисплеем. Каким образом можно работать одновременно с тремя плоскостями? Для этого служит специальный регистр цвета, структура которого приведена на рис. 2. Этот регистр расположен на той же странице, что и системный регистр. Его адрес на странице - BFH. Назначение разрядов регистра цвета в цветовом режиме следующее: бит 0-не используется; биты 1-3 - задают маску логического цвета при записи в ГЗУ; биты 4-6-при чтении; бит 7-определяет цветовой режим.

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

Познакомимся с процессом записи в ГЗУ. Предположим, что предстоит зажечь точку логического цвета номер 5. Это значит, что нам необходимо записать в регистр цвета двоичное число 1000101ХB. Здесь младший бит не имеет значения и обозначен как X, а буква В после числа означает, что оно двоичное. Биты 1-3 содержат двоичное представление числа 5 (5=101 В). Через маску логического цвета контроллеру графического дисплея передается, что в плоскость 0 будет записываться единица, в плоскость 1 - ноль, а в плоскость 2 - опять единица. Теперь мы выдаем байт от микропроцессора, в котором установлены биты единичного состояния, соответствующие тем точкам, которые нужно зажечь. При этом происходит следующее. Биты в ГЗУ, которые соответствуют зажигаемым точкам, изменят свое состояние. Остальные биты не изменят своего состояния. Таким образом, мы экономим по сравнению с процедурой непосредственного обращения к ГЗУ, описанной выше, сразу несколько операций микропроцессора. Таким образом, процесс рисования существенно убыстряется.

Кроме рисования, существует еще процедура закраски площади, ограниченной некоторой кривой заданного цвета. Здесь без чтения из ГЗУ не обойтись. Нам необходимо знать, дошли мы до границы или нет. Чтобы ускорить процедуру чтения из ГЗУ в "Корвете", также применен ряд аппаратных средств.

При процессе чтения из ГЗУ считывается одновременно по байту из каждой плоскости. Вслед за этим происходит аппаратное сравнение цвета каждой из восьми точек с цветовой маской, заданной в регистре цвета битами 4-6.

В результате формируется байт, содержащий информацию о результатах сравнения. Теперь легко проводить процесс закраски объекта. Мы записываем в регистр цвета маску для чтения, соответствующую цвету закраски. После этого считывается байт, определяющий цвет внутренней области. Если он равен нулю, то, значит граница не достигнута и можно продолжать закраску. Применение такого способа приводит к тому, что скорость закраски достигает трех миллионов точек в секунду.

Регистр цвета - послойный режим
Рисунок 3. Регистр цвета - послойный режим

Рассмотрим теперь послойный режим обращения к ГЗУ. Назначение битов регистра цвета приведены на рис. 3.

В данном случае бит 0-это маска значения бите, записываемого в ГЗУ; биты 1-3-выбор плоскостей при записи; биты 4-6 - для чтения; бит 7 - послойный режим (должен быть записан 0).

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

Если для записи выбрано несколько плоскостей, то информация будет записана во все выбранные плоскости. При одновременном считывании из нескольких плоскостей информация объединяется.

В послойном режиме данные, поступающие из микропроцессора, также как и в цветовом, играют роль маски. Отличие заключается лишь в том, что маска в данном случае состоит из одного бита. Это младший бит регистра цвета. Допустим, что мы хотим в ГЗУ записать двоичное число 10011011В. При этом в соответствующем байте в ГЗУ биты 7, 4, 3, 1, 0 примут значения младшего бите в регистре цвета, а биты 6, 5, 2 не изменят своего состояния.

Блок-схема алфавитно-цифрового и графического дисплеев
Рисунок 4. Блок-схема алфавитно-цифрового и графического дисплеев

Как видно из блок-схемы, приведенной на рис. 4, несмотря на то, что системы отображения алфавитно-цифровой и графической информации у "Корвета" независимы, мы можем информацию выводить на один экран. Это достигается благодаря наличию специального устройства, называемого просмотровой таблицей. На нее подается последовательность битов из знакогенератора А/Ц дисплея и биты из трех плоскостей ГЗУ. При этом формируются четыре стандартных телевизионных сигнала R, G, В, I, которые подаются на видео-усилители монитора. Первые три сигнала (R - красный, G - зеленый, В - синий) определяют цвет точки. Интенсивность I позволяет накладывать поверх цветной точки изображение точек, формирующих символ. Таким образом, реально мы можем наблюдать на экране не 8, а 16 цветов. Отметим интересную особенность цветного дисплея "Корвета". При работе с ГЗУ мы имеем дело только с логическими цветами от 0 до 7. Присваивание физического цвета логическому происходит в просмотровой таблице.

Просмотровая таблица представляет собой скоростное ОЗУ, имеющее емкость 16 ячеек по четыре бита каждая. Для нормальной работы просмотровой таблицы в нее нужно занести 16 четырехразрядных слов, определяющих 16 физических цветов. Заполнение просмотровой таблицы происходит через специальный регистр. Расположен он на той же странице, что и системный регистр. Его относительный адрес на странице - FBH. Назначение битов этого регистра следующее: биты 0-3 - номера ячеек просмотровой таблицы; биты 4-7 - содержание ячейки.

При этом бит 0 соответствует плоскости 0 в ГЗУ, бит 1 - плоскости 1, бит 2 - плоскости 2, в бит 3 соответствует АЦЗУ.

Последнее, что нам осталось рассмотреть, это, какие источники видеосигнала имеются в "Корвете". Их три. К каждому можно, в принципе, подключить телевизор.

Первый источник - это выход черно-белого алфавитно-цифрового дисплея. На этом выходе мы имеем стандартный видеосигнал, который можно подать на видеовход любого черно-белого телевизора. Второй источник - это выход на цветной графический дисплей. Сюда поступают четыре сигнала с просмотровой таблицы и синхроимпульсы. К этому выходу подключается цветной монитор. Третий источник имеет на выходе, также как и первый, стандартный видеосигнал с той лишь разницей, что синхроимпульсы здесь смешаны с сигналом, поступающим с выхода четырехразрядного цифроаналогового преобразователя, на вход которого поступают сигналы RGBI с просмотровой таблицы. Если подключить к этому источнику черно-белый телевизор, то можно будет выводить на него черно-белую графическую информацию в градациях яркости.

Контроллер дисковода

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

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

Гибкий магнитный диск
Рисунок 1. Гибкий магнитный диск

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

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

Обычно на дисках бывает 40 или 80 дорожек. Поскольку на одну дорожку умещается значительное количество информации, то ее целесообразно разбить на секторы. Количество и объем секторов могут быть различными. Обычно они имеют объем 128, 256, 512 или 1024 байт. Их количество в основном определяется скоростью вращения диска и объемом сектора. Принятыми являются 5, 8, 9 и 15 секторов на одной дорожке. В "Корвете" на одну дорожку записывают пять секторов емкостью 1024 байта.

У диска, как известно, две стороны - верхняя и нижняя. Поэтому естественно предположить наличие в дисководе двух головок, обслуживающих соответствующую сторону, Так оно и есть - существуют одно- и двусторонние дисководы. Сторонам диска присваиваются номера 0 и 1.

Что же должен делать контроллер гибких дисков? Прежде всего принять необходимые команды от микропроцессора, затем разобраться в разметке диска. Как это делается мы узнаем несколько позже. После того как контроллер нашел на диске требуемую область, он должен считать или записать информацию. И наконец, необходимо опять выйти на связь с микропроцессором и доложить о результатах.

Теперь давайте разберемся, как контроллер устроен и как он выполняет эти операции.

Блок-схема контроллера гибких дисков
Рисунок 2. Блок-схема контроллера гибких дисков

Контроллеры гибких дисков бывают различных конструкций. Здесь мы рассмотрим один из них - КР1818ВГ93, применяемый в "Корвете". Блок-схема контроллера изображена на рис. 2.

Видно, что в состав контроллера входят шесть регистров.

  1. Регистр данных. В этом 8-разрядном регистре хранятся данные, используемые при чтении и записи. При перемещении головки дисковода на заданную дорожку в этот регистр заносится ее номер.
  2. Регистр статуса. В нем хранится сообщение для процессора об итогах выполненной или невыполненной операции.
  3. Регистр команд. Здесь хранится код команды, который необходимо выполнить контроллеру.
  4. Регистр сектора. В этом 8-разрядном регистре хранится номер требуемого сектора.
  5. Регистр дорожки. Этот 8-разрядный регистр хранит номер текущей дорожки. При перемещении головки дисковода к центру диска содержимое этого регистра увеличивается на единицу с каждым шагом. При перемещении головки от центра содержимое регистра уменьшается.
  6. Сдвиговый регистр данных. Он принимает последовательность битов, идущих с диска при чтении и преобразует их в байты, которые передает интерфейсу с процессором. При записи этот процесс происходит в обратном направлении.

Кроме названных регистров в состав контроллера входят: устройство подсчета контрольной суммы; арифметически-логическое устройство (АЛУ), выполняющее необходимые математические действия (увеличение, уменьшение, сравнение) и детектор адресной метки, который позволяет отличить области на диске, где записана служебная информация, касающаяся разметки диска, и собственно данные, записанные на диск.

Теперь разберемся с командами, выполняемыми контроллером. Как мы уже знаем, первая задача - это найти требуемую дорожку. Для этой цели служат пять команд:

  1. RESTORE - перемещение головки дисковода на нулевую дорожку диска.
  2. SEEK - перемещение головки дисковода на дорожку с номером, указанным в регистре данных.
  3. STEP - смещение головки на одну дорожку в направлении, заданном предшествующей командой.
  4. STEP IN - смещение головки на одну дорожку к центру диска.
  5. STEP OUT - смещение головки на одну дорожку от центра диска.

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

Таблица 1
Команда Содержимое командного регистра
RESTORE 00000000B
SEEK 00010000B
STEP 00100000B
STEP IN 01000000B
STEP OUT 01100000B

Код команды может заноситься в командный регистр совместно с модификаторами (параметр, используемый для изменения значений). Для команд первого типа могут использоваться следующие модификаторы:

Таблица 2
Модификатор Код Комментарий
UPDATE 00010000В Отслеживание перемещения головки в регистре дорожки
HLD 00001000В Прижим головки при движении
VERIFY 00000100В Проверка установки головки после перемещения
RATE 000000аbB Задание времени позиционирования головки

ab=00-06 мс
аb=01-12 мс
аb=10-20 мс
аb=11-30 мс

Модификаторы используются совместно с кодом команды. Так, если мы хотим переместить головку на одну дорожку к центру диска, отслеживая перемещение и проверяя установку, с временем позиционирования 20 мс, то мы должны занести в командный регистр 01010110В.

Если в процессе выполнения команд первого типа что-то не получилось, то в регистре статуса появляется код ошибки. Назначение битов этого регистра для команд первого типа приведен в таблице 3. При этом признаком наличия ошибки является установка в единичное состояние соответствующего бита.

Таблица 3
Бит Назначение
7 Не готов дисковод
6 Запрещена запись
5 Головка прижата
4 Ошибка позиционирования
3 Ошибка в контрольной сумме
2 Достижение нулевой дорожки
1 Бит, отвечающий индексному маркеру
0 Контроллер не готов принять команду

Итак, мы теперь умеем выводить головку дисковода на нужную дорожку. Чтение или запись теперь можно осуществить так.

Для этой цели существуют команды второго типа: чтения и записи сектора.

Коды этих команд соответственно 10000000В и 10100000В. Кроме этого, существуют два модификатора этих команд:

  1. Многосекторные операции - 00010000В.
  2. Задержка выполнения команды на время подвода головки - 00000100В (15 мс).

Каким же образом строится полная команда, скажем, чтения заданного сектора на заданной дорожке?

Сначала, поместив в регистре данных номер требуемой дорожки, мы выполняем команду SEEK. Если позиционирование прошло успешно (об этом свидетельствуют соответствующие биты регистра статуса), то можно приступать к чтению. Для этого помещаем номер нужного нам сектора в регистр сектора и выдаем контроллеру команду читать. Однако регистр данных у контроллера содержит всего один байт. Сектор же может иметь объем до 1024 байт. При этом диск крутится непрерывно. Это противоречие решается путем организации диалога между контроллером и процессором. Диалог ведется через регистр статуса. Назначение его битов для команд второго типа приведено в таблице 4.

Таблица 4
Бит Назначение
7 Дисковод не готов
6 Запрещена запись
5 При чтении: 1 - стерта метка данных, 0 - метка данных. При записи 1 - ошибка записи
4 Не найдены требуемые дорожка, сектор или сторона диска
3 Ошибка контрольной суммы
2 Потеря данные. Означает, что процессор не считал подготовленные данные
1 Готовность данных. Означает, что регистр данных содержит считанный байт при чтении или пуст при записи
0 Контроллер занят

Разберемся подробнее в процессе организации диалога. Когда контроллер принял команду и начал ее выполнять, он устанавливает бит 0 в регистре статуса в 1. После этого процессор должен следить за битом 1. Когда он будет установлен в 1, то необходимо или считать байт из регистра данных, или записать его туда, в зависимости от того, что мы делаем - читаем или пишем. Появление единиц в других битах регистра статуса свидетельствует об ошибке. После того как будет закончено выполнение команды бит 0 регистра статуса будет сброшен.

Структура сектора дорожки гибкого диска
Рисунок 3. Структура сектора дорожки гибкого диска

Займемся отложенным до поры вопросом о структуре дорожки. Как все-таки контроллер разбирается туда ли, куда надо, попала головка дисковода? Рассмотрим структуру дорожки. Как мы знаем, она поделена на секторы. Структура сектора изображена на рис. 3, Сектор состоит из двух частей: поля идентификатора и поля данных.

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

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

Существуют, однако, специальные команды, позволяющие узнавать или изменять содержимое любой части дорожки. Это команды третьего типа:

  1. RDADR - чтение номера дорожек, стороны, сектора, а также длины сектора и контрольной суммы. Код команды 11000000В.
  2. RDTRK - чтение дорожки целиком. Оно начинается с первого появившегося сигнала индексного маркера и продолжается до следующего. При этом все байты на дорожке передаются через регистр данных процессору аналогично процессору передачи данных при чтении сектора. Код команды 11100000В.
  3. WRTRK - команда записи дорожки. По этой команде происходит запись дорожки, причем контроллер автоматически вычисляет значение контрольных сумм и размещает их в соответствующих местах. Код команды 11110000В.

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

Для оперативного вмешательства в работу процессора контроллер может генерировать запрос прерывания. Но для этого необходимо задать условие возникновения прерывания. Это условие задается путем выполнения команды четвертого типа. Ее код 11010000В. Эта команда может использовать четыре модификатора.

  1. 00000001В - прерывание по готовности дисковода.
  2. 00000010B - прерывание по неготовности дисковода.
  3. 00000100В - прерывание по индексному маркеру.
  4. 00001000В - немедленное прерывание.

Если команда четвертого типа не использует модификатор, то никакого прерывания вообще не происходит.

Регистр выбора и управления
Рисунок 4. Регистр выбора и управления

На этом исчерпывается набор команд, выполняемых контроллером. Остается еще один вопрос. До сих пор мы нигде не говорили о том, каким образом запускается мотор у дисковода, как выбирается тот или иной дисковод, как выбирается сторона диска? Сам контроллер, как мы видели, этим не занимается. Следовательно, необходим еще один регистр, куда мы могли бы занести необходимые сведения. Этот регистр называется регистром выбора и управления. Назначение его битов приведено на рис. 4.

И в заключение приведем адреса перечисленных регистров контроллера и регистра выбора и управления для конфигурации памяти, необходимой для нормальной работы ОС СР/М:

  1. Регистр выбора и управления - FB39H.
  2. Командный регистр - FB18H.
  3. Регистр статуса - FB18H.
  4. Регистр дорожки - FB19H.
  5. Регистр сектора - FB1АН.
  6. Регистр данных - FB1BH.

Интерфейсы

В этой статье мы займемся наиболее интересной для большинства радиолюбителей проблемой. Каким образом к "Корвету" можно подключать различные, в том числе и самодельные устройства. Для этой цели в машине предусмотрено пять интерфейсов:

  1. Параллельный интерфейс принтера в стандарте "Centronics".
  2. Последовательный интерфейс в стандартах RS232 и "токовая петля".
  3. Последовательный интерфейс локальной сети.
  4. Интерфейс расширения системы.
  5. Интерфейс бытового кассетного магнитофона.

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

Таймер

Выполнен на микросхеме КР580ВИ53. Он имеет три независимых канала. Канал 0 используется для создания различных звуковых эффектов. На его вход подается сигнал с частотой 2 МГц. Канал 1 используется для управления скоростью передачи данных через последовательный интерфейс. На вход канала подается сигнал также с частотой 2 МГц. Канал 2 служит для генерации системных прерываний. Он формирует запросы прерывания однократно или многократно через заданные интервалы времени. На вход канала поступают сигналы синхронизации строчной развертки дисплея с периодом 64 мкс.

Контроллер прерываний

Реализован на основе микросхемы КР580ВН59. Он обслуживает 8 уровней прерываний. Здесь мы не будем описывать, каким образом производят его программирование. В настоящее время по этому вопросу издано достаточное количество справочной литературы. Отметим, что обычно каждому из уровней прерывания определяется свой приоритет. Это происходит программно. Таким образом, одно прерывание происходит раньше другого в случае одновременного поступления запросов.

Остановимся на использовании контроллера прерываний при работе с ОС СР/М. В этом случае при загрузке системы он уже оказывается неким образом запрограммирован. Теперь пользователю достаточно знать, по каким адресам расположены процедуры обработки прерываний и какие устройства могут вызывать их.

Уровней прерывания, как мы говорили, восемь. Их источниками являются:

Приведенные выше уровни прерывания расположены по убыванию их приоритета. Другими словами, уровень 0 обслуживается в первую очередь, а уровень 7 в последнюю.

Контроллер прерываний содержит, как известно, два регистра. Их адреса на странице устройств ввода - вывода 28Н и 29Н.

При появлении запроса прерывания какого-либо уровня контроллер прерываний генерирует код команды CALL с адресом, соответствующим обрабатываемому запросу. В результате управление работой процессора передается программе, которая начинается с этого адреса. Адреса всех восьми процедур обработки прерывания сведены в одну таблицу. Контроллер запрограммирован таким образом, что разность между стартовыми адресами подпрограмм обработки прерываний составляет 4 байта. При использовании карты памяти, соответствующей ОС СР/М, таблица адресов прерываний имеет вид, представленный в табл. 1. Три байта из четырех, отведенных каждому прерыванию, занимает команда JMP, вызывающая передачу управления соответствующей процедуре. Четвертый байт равен 0.

Таблица 1
 
          ORG 0F7E0H
F7EOH:    JMP INT0
          DB  0
F7E4H:    JMP INT1
          DB  0
F7E8H:    JMP INT2
          DB  0
F7ECH:    JMP INT3
          DB  0
F7E0H:    JMP INT4
          DB  0
F7F4H:    JMP INT5
          DB  0
F7F8H:    JMP INT6
          DB  0
F7FCH:    JMP INT7
          DB 0

Разъем расширения системы
Рисунок 1. Разъем
расширения системы

Тут необходимо сделать небольшое отступление. Вы помните, что у "Корвета" может переключаться карта памяти. Поэтому необходимо при ее переключении запрещать прерывания, используя команду процессора DI. Разрешать прерывания командой ЕI можно только после того, как карта памяти будет нормализована. Это значит, что она будет приведена в соответствие с картой памяти ОС СР/М (в системный регистр заносится 1СН) или пользователь сам примет меры, чтобы каждому прерыванию соответствовала бы процедура его обработки.

Для облегчения поиска таблицы прерываний при манипуляциях с картой памяти, прерывания в "Корвете" организованы по типу векторов. Это значит, что в BIOS (это часть ОС СР/М, занимающаяся обменом с периферийными устройствами) вводится специальная таблица векторов прерываний. Каждый вектор указывает адрес начальной ячейки памяти процедуры обработки прерываний. Начальный адрес таблицы фиксирован - 0F7C8H.

Если мы хотим найти адрес процедуры, обслуживающей i-тое прерывание, то мы должны прибавить к 0F7C8H величину i*2 (адреса занимают два байта) и считать из ячеек (0F7C8H+i*2) и (0F7C8H+i*2+1) адрес ячейки памяти, где хранится первый байт программы обработки прерываний.

При желании пользователь может изменить адрес в таблице прерываний и настроить таким образом прерывания на свою собственную подпрограмму.

Теперь займемся периферийными устройствами. Для общения с ними в нашем распоряжении имеется ряд интерфейсов.

Для организации обмена информацией с внешним миром в "Корвете" установлены три программируемых параллельных адаптера (ППА) КР580ВВ55А. Их регистры имеют следующие адреса на странице УВВ:

ППА-3 предоставлен в полное распоряжение пользователя. Все его выходные сигналы выведены на боковой разъем расширения системы. Кроме них, на этот разъем поданы все питающие напряжения, сигнал частоты 2 МГц (2 м), сигнал канала 0 таймера (TIMER), запрос прерывания уровня 0 (IRQO), сигнал синхронизации кадровой частоты (SVBL) и бит 7 порта С второго адаптера (CONTROL). Цоколевка разъема расширения системы на рис. 1.

ППА-1 и ППА-2 используются в режиме 0. В этом случае возможно побитное управление портом С. Порты этих адаптеров распределены между упомянутыми в начале статьи интерфейсами. Рассмотрим теперь эти интерфейсы по порядку.

Таблица 2
ППА-1 ППА-2 ППА-3
Порт А 38Н З0Н 08Н
Порт В 30Н 31Н 09Н
Порт С ЗАН 32Н 0АН
Порт управляющего слова ЗВН ЗЗН 0ВН

Интерфейс принтера

Разъем принтера
Рисунок 2.
Разъем принтера

В состав этого интерфейса входит регистр данных (порт А, ППА-2), регистр состояния (бит 2 (BUSYP) порта А, ППА-1), регистр управления (биты 4, 5 (АСК, SE) порта С, ППА-2). Рассмотрим, как происходит передача информации через этот интерфейс.

Для начала в регистр данных заносится передаваемый байт. После этого мы должны установить сигнал АСК в 1. Для этого в пятый разряд регистра управления нужно занести 1. Как мы уже говорили, порты С ППА-1 и ППА-2 программируются побитно. Для установки нужного бита в порте С в состояние 0 или 1 мы должны в порт управляющего слова адаптера записать байт, в котором биты 1-3 содержат номер устанавливаемого бита, а бит 0 - то значение, которое нужно записать. Это значит, что для установки бита 5 порта С ППА-2 в единичное состояние мы должны записать порт управляющего слова ППА-2 0ВН. После установки сигнала АСК в единичное состояние принтер считывает байт данных и устанавливает сигнал BUSYP в 1. Этот сигнал через инвертор подается на вход регистра состояния, откуда его считывает процессор.

После этого процессор должен сбросить сигнал АСК. Для этого в порт управляющего слова ППА-2 записывается 0АН.

Сигнал BUSYP подается также на вход запроса прерывания 6-го уровня контроллера прерываний. С помощью прерываний можно организовать процесс "фоновой" печати. Это делается для того, чтобы уменьшить потери времени процессора, затрачиваемые на ожидание, пока принтер установит сигнал BUSYP в 0. Теперь, когда принтер готов принимать информацию, он прерывает основную программу, выполняемую процессором, получает байт данных и оставляет процессор в покое, на время пока сам разбирается с полученным байтом. Сигнал SE может использоваться для инициализации принтера или других целей. Сигналы АСК и SE подаются на разъем принтера через инверторы. Цоколевка разъема представлена на рис. 2.

Последовательный интерфейс

В этом интерфейсе реализованы два стандарта:

RS232, когда данные передаются путем подачи напряжения ±12 В, и токовая петля, в которой сигналы передаются подачей тока ±20 мА.

Последовательный интерфейс реализован на микросхеме КР580ВВ51А. Здесь мы не будем рассматривать правила программирования этой микросхемы. Укажем лишь, что в ее состав входят три регистра: регистр данных (10H), регистр управления (11Н) и регистр состояния (11Н).

Выходные цепи интерфейса устроены так, что ему безразлично, через какое устройство идет передача информации: формирователи сигналов напряжения −12 В (RS232) или оптроны (токовая петля).

Скорость передачи информации по последовательному интерфейсу задается путем программирования канала 1 таймера. В регистр этого канала заносится 13 для скорости 9600 бод, 26 - 4800 бод, 52 - 2400 бод, 104-1200 бод.

Разъем последовательного интерфейса
Рисунок 3. Разъем
последовательного
интерфейса

На разъем интерфейса выведены следующие сигналы:

RTS - запрос на передачу, DSR - подтверждение готовности принять информацию, TXD - принимаемые данные (RS232), ±V24RD - принимаемые данные через токовую петлю, ±V24TD - передаваемые данные через токовую петлю.

Первые два сигнала предназначены для организации диалога между компьютером и периферийным устройством. Когда компьютер собирается что-либо передавать, он устанавливает RTS в состояние "запрос", определяемое протоколом обмена (что это - 0 или 1 - решает пользователь). После этого он ждет подтверждения готовности периферийного устройства принимать данные. Когда сигнал DSR примет соответствующее состояние (какое именно - это опять-таки определяет пользователь), в регистр данных помещается байт, который автоматически выталкивается интерфейсом наружу. Прием информации осуществляется аналогично, только в этом случае запрос поступает с периферийного устройства на вход DSR, а компьютер должен подтвердить свою готовность подачей сигнала RTS (рис. 3).

Интерфейс локальной сети

Разъем локальной сети
Рисунок 4. Разъем
локальной сети

Этот интерфейс фактически не отличается от последовательного интерфейса. Он также реализован на микросхеме КР580ВВ51А. Адреса ее регистров соответственно 20Н и 21Н. Единственное отличие состоит в том, что к этому интерфейсу подводятся четыре сигнала А0РС, А1РС, А2РС, АЗРС, которые определяют номер устройства, подключенного к локальной сети. Для присваивания компьютеру определенного номера в разъем нужно вставить перемычку, соединяющую один из контактов с шиной +5 В.

Обмен происходит посредством двух сигналов OUTNL и INNL в TTL уровнях. Сигналы АОРС-АЗРС подключены к битам 4-7 порта А ППА-1 (рис. 4).

Интерфейс кассетного магнитофона

Интерфейс позволяет осуществлять обмен данными с кассетным магнитофоном со скоростью 2400 бод. Превращение параллельного кода в последовательный происходит программно, то есть процессор делает это сам. Для выдачи кода в магнитофон служит сигнал CASOUT. Он формируется посредством проводного "или" из двух младших разрядов порта с ППА-2. Код 00 соответствует сигналу низкого уровня, 01 - сигналу среднего уровня и 11 - сигналу высокого уровня. Входной сигнал CASIN через специальное устройство, преобразующее его в TTL уровни, подается на вход разряда 0 порта А ППА-1.

Разъем кассетного магнитофона
Рисунок 5. Разъем
кассетного магнитофона

В состав интерфейса входит еще одно устройство, позволяющее производить останов мотора магнитофона. Благодаря этому оказывается возможным в минимальных пределах управлять процессом загрузки с ленты. Это устройство представляет собой реле, управляемое проинвертированным сигналом, поступающим со 2-го разряда порта С ППА-2 (STOP-1, STOP-2). Таким образом, изменяя значение этого бита, мы можем управлять работой мотора магнитофона (рис. 5).

На этом мы заканчиваем описание основных систем ПЭВМ "Корвет".

Операционная система и программное обеспечение

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

Здесь мы рассмотрим операционную систему СР/М-80 (от англ. control program for microprocessors - управляющая программа для микропроцессоров), которая применена в "Корвете".

Почему мы остановили свой выбор именно на этой ОС? CP/M-80 была разработана для ПЭВМ на микропроцессоре i8080 (отсюда число 80 в названии этой ОС) в 1975 г. Гэри Килдаллом. С этого времени СР/М (далее для краткости будем называть ее так) стала одной из наиболее популярных в восьмиразрядных ЭВМ и признается "промышленным стандартом", поскольку она используется многими изготовителями ПЭВМ.

Эта ОС обеспечивает работу буквально сотен различных программ, созданных разработчиками программного обеспечения для персональных компьютеров.

Работа с ПЭВМ начинается с загрузки ОС - с перенесения ее с системного диска в оперативную память машины. Существуют два типа загрузки: начальная и реинициализация системы.

В каждой ПЭВМ, работающей с ОС СР/М, имеется программа начальной загрузки, хранящаяся в ПЗУ. ОС размещается на первых двух дорожках системного диска, поэтому программа в ПЗУ должна обеспечить считывание информации с этих дорожек и размещение ее в памяти. При включении ПЭВМ в сеть или при нажатии на кнопку "СБРОС" можно услышать звуковой сигнал, свидетельствующий о том, что информация с системных дорожек загружается. Какая именно информация записана на них?

Как мы уже знаем, ОС служит для управления различными устройствами, входящими в состав ПЭВМ. За это отвечает часть операционной системы, называемая BIOS (от англ. basic input-output system - базовая система ввода-вывода). BIOS содержит подпрограммы управления периферийными устройствами. Поскольку организация периферийных устройств отличается на различных ПЭВМ, то и BIOS различен для разных ПЭВМ. Обычно BIOS пишется непосредственно разработчиками машины.

Оставшаяся часть ОС - общая для всех машин, которые могут с ней работать. Она не зависит от машины и ее периферийных устройств и работает с ними только через BIOS. Называется эта часть BDOS (от англ. basic disk operating system - базовая дисковая операционная система).

В ОС СР/ М входит также программа ССР (от англ. console command processor - процессор команд консоли). В задачу ССР входят проверка состояния клавиатуры консоли на соответствие вводимых символов командам ОС СР/М и интерпретация команд.

Все три части ОС загружаются с системного диска. Процесс начальной загрузки называется "холодным стартом" системы. В результате "холодного старта" на экране дисплея появляется сообщение:

   СР/М-80 v. 2.2
    ОФП НИИЯФ МГУ BIOS  
    Ver. 1.2 (с) III 1988 
    A>

Это информация для пользователя о номере версий загруженной системы, BIOS и ее авторах (в данном случае отдел физики плазмы НИИ ядерной физики МГУ). Последняя строка является стандартным сообщением о том, что ОС работает в данный момент с диском А и ждет команды пользователя (это сообщение называется промптом). Следует запомнить, что для нормальной работы машины необходимо, чтобы в дисководе А всегда находился диск, первые две дорожки которого содержат копию ОС СР/М.

В результате реинициализации системы (эту процедуру называют "теплым стартом") с системного диска копируется в память ПЭВМ только часть ОС. Остальная остается нетронутой. Обычно "теплый старт" используется при выходе из выполнявшейся программы. Процедура выполняется автоматически. Можно, однако, вручную вызвать "теплый старт", нажав на клавишу CTRL и, не отпуская ее, на С (клавиша CTRL находится слева на клавиатуре и на ней написано "УПР/CTRL"). Это бывает необходимо в тех случаях, когда ОС не может ре-инициализировать себя сама, например, при смене диска или при ошибках определенного типа. Если реинициализация системы не удалась, то необходимо выполнить полную перезагрузку системы, нажав на кнопку "СБРОС".

После загрузки операционной системы диск А автоматически становится текущим диском или диском по умолчанию, к которому подразумевается обращение во всех командах, если явно не дано другое указание.

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

   А>В:             
    В>

Может оказаться, что и после помещения диска в дисковод попытка изменить текущий диск не даст результата. Это, как правило, является следствием несоответствия формата вновь вставленного диска формату, принятому в СР/М. Поэтому старайтесь пользоваться для форматирования дисков программой, имеющейся на вашем системном диске.

Если необходимо обратиться к файлу на другом диске, то вовсе не обязательно изменять текущий диск, достаточно перед именем файла указать имя диска, на котором он записан, отделив имя диска от имени файла двоеточием. Например, если необходимо просмотреть содержимое файла PROGRAM1.BAS, находящегося на диске в дисководе В, можно выполнить команду:

   А>TYPE В:PROGRAM 1.BAS

Какие же основные команды входят в операционную систему СР/М? К ним относят команды управляющих символов, а также встроенные и транзитные. Рассмотрим вначале значение и действие команд управляющих символов.

Для их ввода достаточно нажать одновременно клавиши, УПР/CTRL и с требуемым символом.

С одним из них мы уже познакомились, это CTRL-C - команда реинициализации системы.

Отметим, что вместо клавиши ВК для завершения ввода можно использовать следующие управляющие символы:

Теперь познакомимся с встроенными командами, которые входят в операционную систему СР/М. Они называются также резидентными, являются частью ОС и хранятся вместе с ней в одной и той же области оперативной памяти.

Начнем с наиболее часто используемой команды DIR для вывода на экран или принтер данных о файлах, содержащихся на указанном диске.

Команда иллюстрирует способ ввода сообщений с клавиатуры в операционную систему СР/М. Сообщение состоит из команды и отделенных от нее пробелом одного или нескольких операндов. Операндами являются дополнительные сообщения системе о том, что конкретно от нее требуется. Если применена команда DIR (без операндов), то отображается полное оглавление текущего диска:

   A>DIR 
    A: STAT    СОМ : PIP  СОМ : MOVCPM  СОМ : SYSGEN  СОМ 
    A: FORMAT  СОМ : LOAD        СОМ : DDT     СОМ : ASM      СОМ  
    A: SUBMIT  СОМ : XSUB        СОМ : ED      СОМ 
    А>

Как видим, при завершении выполнения команды снова появляется промпт А>.

Если же DIR желают использовать для вывода оглавления других дисков, то в этом случае в качестве операнда нужно указать имя диска и поставить двоеточие, например:

   A>DIR В: 
    В: PIP     СОМ : TEXT  ТХТ : BASIC   СОМ : PROG    BAS 
    B: SUBMIT  СОМ 
    А>

Команда DIR позволяет выводить на экран все оглавление. а также имена отдельных файлов или группы с общими признаками. Для этого в качестве операнда указывается имя файла или общий признак группы. Оно содержит и глобальные символы * и ?, например:

   A>DIR В:*.СОМ 
    В:PIP      СОМ : BASIC   СОМ : SUBMIT   СОМ

Следующая команда, с которой мы познакомимся, называется REN (от англ. rename - переименовать). Это команда изменения имени (переименования) файлов, содержащихся в каталоге диска. Синтаксис команды имеет вид:

   A>REN B:PROGRAM1.BAS

При попытке переименовать несуществующий в оглавлении файл выдается сообщение N0 FILE.

В операционных системах обычно устанавливается различный уровень доступа к файлам. Это делается для их защиты, чтобы предотвратить случайное стирание нужных файлов. Уровень доступа R/O (от англ. read only) уже содержит элемент защиты, так как разрешает только чтение, a R/W (от англ. read/write) - чтение и запись или свободный доступ. При попытке переименовать файл с уровнем R/0 выдается сообщение:

FILE IS SET R/O (файл имеет такой уровень доступа, что он может быть только прочитан). Для появления промпта в этом случае необходимо нажать клавишу ВК.

Отметим, что использование в операндах команды REN глобальных символов ? и * не допускается.

При необходимости удаления хранящихся на диске файлов используют команду ERA (от англ. erase - стирать). Она очень опасна тем, что неправильное ее применение вызовет стирание полезных программ. Правда, по команде ERA реально ничего не уничтожается. Просто удаляется из каталога имя файла, а сам файл остается нетронутым. Однако после этого прочесть его стандартными средствами ОС СР/М невозможно. В случае, если вы случайно стерли что-нибудь необыкновенно ценное, советуем обратиться за помощью к более опытным системным программистам, и они помогут вам восстановить утраченный файл.

Пользоваться командой ERA очень просто. Достаточно после имени команды указать имя стираемого файла. Проиллюстрируем сказанное примером:

   A>ERA TEXT.TXT
    А>

Любителям стирать файлы дадим несколько рекомендаций по технике безопасности. Не жалейте дисков. Храните резервные копии важных и ценных программ в недоступном для других и, в особенности, для себя месте. Прежде чем набрать команду ERA, трижды подумайте.

Перейдем теперь к наиболее опасному по последствиям использованию команды ERA. Сейчас мы научимся уничтожать целые группы файлов, вплоть до стирания всей информации, записанной на диске. Для этой цели применяют глобальные символы в имени файла.

Предположим, что вы хотите удалить все файлы, имеющие расширение ТХТ. Для этого вы должны набрать команду:

   A>ERA *.ТХТ

В результате все файлы с расширением ТХТ будут удалены. А как быть, если вам нужно удалить не все файлы с расширением ТХТ? В этом случае нужно либо удалять их по одному, не используя глобальных символов, либо переименовать те, которые вы удалять не собираетесь.

Рассмотрим, наконец, использование команды ERA для "леденящей душу" процедуры уничтожения всего, что есть на диске. Команда в этом случае имеет вид:

   A>ERA *.*

Когда вы нажмете клавишу ВК после ввода команды, то машина в испуге попробует вас остановить и на экране появится вопрос: ALL (Y/N)? Если вы ответите Y (Yes), то машина, скрепя сердце, сотрет все содержимое диска. Если вы ответите N (No), то машина с облегчением выведет на экран промпт и не будет ничего стирать.

При попытке стереть несуществующий файл выводится сообщение NO FILE. Если стираемый файл имеет уровень защиты R/O, появляется сообщение FILE IS SET R/O, после чего необходимо нажать клавишу ВК.

Еще раз хочется напомнить: защищайте файлы и диски от случайного стирания и не доверяйте своих дисков случайным пользователям. Помните, что восстановление утраченных программ требует больших затрат времени, а в ряде случаев оказывается невозможным.

Перейдем к следующей встроенной команде - TYPE. Она нужна для просмотра текстовых файлов и вывода на дисплей его содержимого.

Предположим, что вы написали большую и очень полезную программу или текст вашего выступления на всемирном конгрессе пользователей "Корвета". Мысль о большой проделанной работе согревает вашу душу. Но время от времени закрадывается сомнение: а цело ли ваше творение? Не стерли ли его злоумышленники? Просмотр оглавления диска немного успокаивает. Да, вот оно, на месте, и имя тоже. А вдруг с самим текстом что-нибудь приключилось? Для того чтобы убедиться в его сохранности, а также для просмотра других текстовых файлов, и служит команда TYPE. Заметим, что попытка просмотра с помощью команды TYPE файлов, не предназначенных для вывода на экран, например командных, приводит к непредсказуемым последствиям. Формат команды TYPE имеет вид:

   A>TYPE PROGRAM. BAS

Использование глобальных символов в команде TYPE не допускается. Поэтому единовременно можно вывести на экран только один файл. Если вы просите вывести содержимое несуществующего файла, то появится сообщение об ошибке в виде имени файла, сопровождаемого вопросительным знаком. То же самое будет выдано на экран при использовании глобальных символов.

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

Введем в наш обиход еще одну команду USER - это команда обращения различных пользователей к своим файлам, хранящимся на одном и том же диске, разделенном на области. USER используется при пользовании одним компьютером. Если бы у каждого программиста был на столе персональный компьютер и множество дисков, надобность в ней полностью отпала бы. Но это пока представляется лишь в мечтах. Обычно, хотя компьютер называют и персональный, с ним работают разные пользователи. У каждого есть свои программы, но не у каждого есть собственные диски. Во избежание путаницы, где чьи файлы, была придумана команда USER. В многопользовательском режиме работы каждый диск разбивается на области с номерами от 0 до 15 (16 областей). Каждый пользователь имеет свою собственную область, в которой он хранит программы. Не следует думать, что такая организация дисков позволяет нескольким людям работать на машине одновременно. Операционная система СР/М - однопользовательская. Все, что будет сейчас излагаться, относится только к созданию архива.

После загрузки ОС СР/М текущей активной областью становится область с номером 0. При просмотре директории вы увидите только файлы, размещенные в текущей области. Для того чтобы добраться до файлов, расположенных в других областях, нужно сделать соответствующую область активной. При этом выбранная область делается текущей на всех дисках, вставленных в дисководы, независимо от того, с каким из них вы работаете в данный момент.

Попробуем создать новую активную область на всех дисках, вставленных в дисководы вашей машины. Для этого необходимо набрать команду USER и через пробел ввести номер области в пределах от 0 до 15, например:

   A>USER 1 
    А>

После ввода этой команды на экран не выводится никаких сообщений, кроме основного промпта. Однако кое-что все-таки произошло. При вводе команды DIR вы получите сообщение NO FILE. При этом вам окажутся недоступными все транзитные команды ОС СР/М и пользоваться можно будет только резидентными командами.

Мы уже рассмотрели команды управляющих символов, а также встроенные команды, входящие в операционную систему СР/М. На очереди - транзитные.

Транзитных команд может быть очень много. Они хранятся постоянно на диске в виде командных файлов. По существу, любая программа в машинных кодах может являться транзитной, а все файлы, содержащие их, имеют расширение своего имени СОМ. Приведем примеры таких стандартных программ:

Перечислим функции команды STAT.

  1. Прежде всего, она может выводить на экран объем свободного пространства на всех используемых в настоящее время дисках и режим доступа к дискам. Напомним, что режим доступа бывает двух типов: R/O (от англ. read only - только чтение) и R/W (от англ. read write - чтение и запись). На диск с доступом R/O нельзя ничего записывать. Это значит, что вы не можете ни дополнить содержимое этого диска, ни удалить какие-либо файлы. С такого диска информацию можно только читать. Доступ R/W означает, что с диска можно читать и можно записывать на него информацию.
  2. STAT может выводить на экран характеристики как отдельных файлов, так и их групп. Для этого в качестве операнда нужно использовать соответствующее имя или, применяя глобальные символы, обозначить группу файлов.
  3. Эта команда используется для защиты отдельных файлов и целых их каталогов (присваивая им статус R/O).
  4. Она позволяет создавать скрытые файлы. С помощью команды STAT им присваивается специальный атрибут, и имя файла не будет выводиться на экран по команде DIR из соображений секретности.
  5. Команда STAT позволяет посмотреть номер активной области, определенный командой USER.
  6. Обычно стандартным периферийным устройствам присвоены некоторые логические имена. Например, консоль - CON: принтер (цифропечать) - LPT: или PRT: и т. д. По команде STAT вы можете узнать, какие логические имена присвоены, а также изменить их, если есть желание, или завести новые из списка разрешенных имен, который также выводится по команде STAT.

Разберем эти функции по порядку. Файл STAT.СОМ должен находиться в директории вашей активной области. Попробуем набрать команду STAT без операндов. На экране тут же появятся следующие строки:

   A>STAT
    A:R/W SPACE: 140K
    А>

Программа STAT вывела на экран сообщение о статусе диска R/W (или R/O) и размере свободного пространства. Если во все дисководы вставлены диски, то подобная информация появится обо всех дисках. Отметим, что по команде STAT будут просмотрены остальные диски, только если к ним уже обращались с какой-либо командой или был выполнен "теплый" старт системы. Другими словами, ОС должна знать, что мы вставили диски в дисководы.

Если в качестве операнда у команды STAT используется имя какого-либо файла, то мы можем получить информацию о его размерах и статусе. Например, если вы интересуетесь размером файла ТЕХТ.ТХТ, то по команде STAT TEXT.TXT вы получите следующую информацию:

   A>STAT ТЕХТ.ТХТ 
     RECS   BYTES  ЕХТ  АСС 
     110    14К    1    R/W А:ТЕХТ.ТХТ 
     BYTES REMAINING ON A:476K 
     A>

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

Разберемся в том, какой смысл имеют выводимые на экран характеристики.

Запись является единицей объема информации, хранимой на диске. В СР/М длина записи равна 128 байтам. Число, указанное в графе RECS, равно количеству 128-байтных записей в файле, а указанное в графе BYTES представляет собой округленный размер файла в килобайтах.

Еще одной единицей измерения объема файлов в СР/М является экстент. Он равен 16К. Графа ЕХТ содержит размер файла в экстентах. Приращение в этой графе может быть только целым. Как правило, эту цифру можно не принимать во внимание.

Код, напечатанный в столбце АСС, представляет собой статус защиты файла: R/W или R/O.

В команде STAT можно использовать глобальные символы * и ?.

Мы многократно упоминали, что файлы можно защищать. Но пока непонятно, как это сделать. Сейчас пришло время овладеть этой премудростью. Для установки статуса защиты необходимо в качестве второго операнда команды STAT использовать $ R/W или $ R/O.

В качестве примера сделаем какой-либо файл защищенным от записи. Пусть этот файл называется ТЕХТ.ТХТ. Тогда ваши действия должны быть следующими:

   A>STAT ТЕХТ.ТХТ $ R/O 
    ТЕХТ.ТХТ SET TO R/O
    А>

Разумеется, все эти операции нужно произвести с файлом, имеющимся на диске. В противном случае появится сообщение об ошибке.

Команда STAT позволяет временно защитить от записи весь диск. Эта защита сохраняется только пока диск вставлен в дисковод, например:

   A>STAT A:-R/O
    А>

Для снятия защиты необходимо провести "теплый" или "холодный" старт системы.

Разберемся еще с одной интересной функцией команды STAT. Предположим, что вы не хотите, чтобы кто-либо видел некоторые ваши файлы в директории. Команда STAT поможет вам спрятать их и сделать невидимыми. Это также бывает полезно, чтобы не выводить каждый раз в оглавлении имена системных файлов. Для того чтобы это сделать, используют операнд $ SYS.

   A>STAT STAT. СОМ $ SYS
    STAT.COM SET TO SYS
    А>

Теперь по команде DIR вы не увидите в оглавлении файл STAT.COM. Атрибут $ SYS может быть назначен произвольному числу файлов при использовании глобальных символов * и ?. Для отмены статуса "скрытый" используется атрибут $ DIR, например:

   A>STAT STAT.COM $ DIR 
    STAT.COM SET TO DIR 
    A>

Команда STAT может выдавать информацию о характеристиках дисков. Например, сообщение о двустороннем диске с двойной плотностью записи при емкости 1024К на сектор имеет вид:

   A>STAT DSK:
       A: DRIVE CHARACTERISTICS 
    9600: 128BYTE RECORD CAPACITY 
    1200: KYLOBYTE RECORD CAPACITY 
     256: 32BYTE DIRECTORY ENTRIES 
     256: CHECKED DIRECTORY ENTRIES 
     128: RECORDS/EXTENT 
      16: RECORDS/BLOCK 
       4: SECTORS/TRACK 
       4: RESERVED TRACKS 
    A>

Поясним смысл каждого сообщения.

128 BYTE RECORD CAPACITY указывает число 128-байтных записей, которое может храниться на диске. Запись является единицей измерения объема данных. Сделано это для повышения эффективности обработки файлов.

KILOBYTE RECORD CAPACITY указывает максимальную емкость диска в килобайтах.

32 BYTE DIRECTORY ENTRIES показывает максимальное количество файлов, которые можно хранить на диске. Информация об одном файле, хранящемся на диске, занимает в каталоге пространство, равное 32 байтам.

CHECKED DIRECTORY ENTRIES - это значение, как правило, совпадает с предыдущим. Его назначение - отслеживание системой смены дисков.

RECORDS/EXTENT определяет максимальное число записей на один экстент, которому соответствует один вход в каталог. Один экстент, как вы помните, занимает 16 К, то есть 128 записей. Отдельные файлы могут занимать несколько экстентов.

RECORDS/BLOCK указывает минимальный объем дисковой памяти, который можно предоставить для одного файла. Для определения размера блока нужно умножить этот параметр на длину записи, то есть на 128 байт. В нашем примере легко получить, что блок имеет длину 128 байт Х 16 = 2048 байт = 2К.

SECTORS/TRACK показывает количество секторов на одной дорожке.

RESERVED TRACKS обозначает количество дорожек, зарезервированных для системных нужд. Обычно их две - нулевая и первая. На них хранятся BIOS, BDOS и ССР.

Теперь подробней рассмотрим команду PIP, предназначенную для обмена информацией с периферийными устройствами.

Для того чтобы пользоваться командой PIP, необходимо иметь на вашем диске в активной области файл PIP.COM. Мы исходим из того, что файл PIP.COM на вашем диске имеется.

Перечислим функции команды PIP: создание копии файла на текущем диске; копирование одного файла или группы файлов на другие диски; объединение нескольких файлов в один файл; обмен данными между дисками и другими устройствами.

Команда PIP имеет еще много дополнительных возможностей, но здесь мы не будем их рассматривать. Интересующихся отошлем к книге "Операционная система СР/М", написанной М. Уэйтом и Дж. Ангермейером. Перевод ее вышел в издательстве "Радио и связь" в 1986 г.

Попробуем работать с командой PIP. Сначала наберите PIP и нажмите клавишу ВК, после чего на экране появится:

   А>РIР
    *

Вы видите, что вместо системного промпта А> появился новый промпт *. Это так называемый промпт команды PIP. Его появление означает, что команда загружена и готова к работе. Вспомним теперь, как копировать файлы. Сначала мы должны указать имя копии "приемника" (от англ. destination), затем имя "источника" (от англ. source). Если мы объединяем много файлов в один, их имена перечисляются одно за другим через запятую. В этом случае на экране должна быть набрана следующая строка:

   * D:FILENAME=S:FILENAME1, FILENAME2, ...

Здесь D: - выходное устройство - может быть не только диском, но и логическим устройством. То же можно сказать и про входное устройство S:. Имена файлов могут быть опущены, однако если идет работа с дисками, хотя бы одно имя файла должно присутствовать. Эту малопонятную фразу не следует рассматривать как нечто непостижимое для понимания. Обычно, следуя простой логике, нетрудно сообразить, когда имя файла необходимо указывать, а когда нет.

Исследуем теперь по порядку упомянутые функции команды PIP.

Начнем с копирования файлов на одном и том же диске и с диска на диск. Для этого нужно сообщить программе имя копируемого файла. Допустим, что у вас имеется файл PROG.TXT. Если вы хотите создать его копию под именем PROG1.TXT, то в этом случае в ответ на промпт команды PIP вы можете ответить:

   * A:PROG1.TXT=A:PROG.TXT

В этом случае необходимо указать имена двух файлов источника (A:PROG.TXT) и копии (A:PROG1.TXT). Если диск А - текущий, его имя можно не указывать.

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

   * B:PROG.TXT=PROG.TXT

Для изменения имени файла равноправными командами являются:

   * B:PROG.TXT=PROG.TXT
    * В:=PROG.TXT
    * B:PROG.TXT=A:

Вас, наверное, волнует вопрос, как выйти из команды PIP и вернуть на экран промпт СР/М? Очень просто. Нажмите клавишу ВК.

Для копирования нескольких файлов можно использовать глобальные символы ? и *.

Возможно, у вас возник вопрос: что будет, если файл, который вы указали как выходной, уже существует на диске? PIP просто запишет на то же место новую информацию. А как быть с защитой? Если файл имел статус R/W, то он просто перепишется. Если же статус был R/O, в этом случае PIP сообщит, что файл уже существует и предназначен только для чтения. После этого вам нужно будет ответить на вопрос, стирать его или нет. Если вы ответите N, то копирования не произойдет и все останется, как было. Ответив Y, вы сотрете старый файл и запишите на его место новый. Вообще, полезно внимательно читать то, что сообщается вам на экране дисплея.

Отметим еще одну важную особенность команды PIP. Она копирует только те файлы, которые можно увидеть в каталоге при помощи команды DIR. Поэтому, если вы присвоили файлу статус SYS, своевременно измените его на DIR при помощи команды STAT.

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

   A>PIP B:PROG.TXT=A:PROG1.TXT,PROG2.TXT,PROG3.TXT
    А>

Обратите внимание, что в этом случае сразу появляется промпт СР/М, а не PIP.

Команда PIP позволяет также выводить содержимое файлов на стандартные устройства. Например, если вы хотите ввести какие-либо данные с консоли в файл TEST.TXT, необходимо ввести команду:

   A>PIP TEST.TXT=CON:

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

Мы не рассматривали здесь такие программы, как DDT, ASM, LOAD, SAVE и т. д. Эти программы обычно нужны системным программистам, работающим на языке Ассемблер.

Перейдем теперь к другим программам. Начнем с Бейсика.

Бейсик - это язык, который должен обязательно входить в состав программного обеспечения любого персонального компьютера. Для нашего компьютера был специально написан интерпретатор языка Бейсик, который с точки зрения пользователя не отличается от языков Бейсик фирмы "Microsoft", являющихся стандартными. Бейсик, написанный для ПК "Корвет", является подмножеством языков Бейсик фирмы "Microsoft" и существует в двух версиях объемами 16 и 24 Кбайт, что оставляет еще большой запас в пределах возможных 96 Кбайт для дальнейшего расширения. Интерпретатор языка находится в машине резидентно, не требуя никаких устройств внешней памяти, и пользователь получает его в свое распоряжение при включении компьютера в сеть.

Теперь остановимся на программных средствах, имеющихся в распоряжении пользователя "Корвета", на возможностях, предоставляемых операционной системой СР/М-80. Если начать с программ, необходимых массовому пользователю, то можно выделить три типа. Это редактор текста, а также и средство для обработки архивов и табличной информации. В качестве редактора текста в "Корвете" используется отечественный редактор "Супертекст", являющийся аналогом одного из наиболее мощных редакторов "Final Word". Настоящая статья была подготовлена с помощью редактора "Супертекст" на "Корвете".

Для обработки архивов можно использовать широко известную базу данных dBase II, а для работы с таблицами также очень популярную программу Multiplan фирмы "Microsoft". Что касается системных программных средств, выбор их чрезвычайно широк. Существуют различные ассемблеры, перемещающие загрузчики, отладчики, пакеты утилит. Имеются компиляторы с таких языков высокого уровня, как фортран, Паскаль, Си, Ада, форт, Лисп, ПЛ/М и других. Основным языком для разработки прикладных программ для "Корвета" является "Си". В настоящее время разработана библиотека графических процедур для языка "Си", которая делает в полной мере доступными программисту преимущества аппаратных средств "Корвета". Например, одна из функций библиотеки реализует так называемые спрайты (это маленькие объекты типа стрелок или игровых персонажей), получение которых без специальных заказных БИС считается невозможным. В нашем компьютере реализованы спрайты со скоростью перемещения до 1-2 мс на один шаг.

В заключение скажем несколько слов о том, кто занимается производством нашего компьютера. Основным производителем является Бакинское производственное объединение "Радиостроение". В Москве производством "Корвета" заняты опытно-экспериментальное производство Московского экспериментально-вычислительного центра ГКВТИ "ЭЛЕКС" и кооператив "ЭЛИН".