Читаем Код. Тайный язык информатики полностью

Первый байт элемента каталога применяется только в том случае, когда с файловой системой работают два человека и более. В операционной системе CP/M этот байт обычно равен 0, как и байты тринадцатый и четырнадцатый.

В CP/M каждому файлу присваивается имя, состоящее из двух частей. Первая часть — имя файла — может содержать до восьми символов, хранящихся в байтах с первого по восьмой элемент каталога; вторая часть — тип файла — может содержать до трех символов, хранящихся в байтах с девятого по одиннадцатый. Существует несколько стандартных типов файлов. Например, TXT говорит о том, что файл является текстовым (содержит только коды ASCII), а COM (от command — «команда») указывает, что файл содержит машинные инструкции для процессора 8080, то есть программу. При указании конкретного файла эти две части разделяются точкой.

MYLETTER.TXT

CALC.COM

Этот метод наименования файлов известен как формат 8.3 («восемь точка три»), допускающий максимум восемь букв до точки и три буквы после.

Карта диска в элементе каталога указывает блоки выделения памяти, где хранится файл. Предположим, что значениями первых четырех байтов карты диска являются 14h, 15h, 07h и 23h, а значениями остальных — нули. Значит, файл занимает четыре блока, или четыре килобайта дискового пространства. Объем файла может быть немного меньше. Пятнадцатый байт в элементе каталога указывает, сколько 128-байтовых секторов фактически занято в последнем блоке.

Длина карты диска — 16 байт, и их достаточно для указания местоположения файла объемом до 16 384 байт. Для файла объемом более 16 килобайт необходимо использовать несколько элементов каталога, которые называются экстентами. В этом случае двенадцатый байт будет равен 0 в первом элементе каталога, 1 — во втором и т. д.

Ранее я упомянул текстовые файлы, которые также называются ASCII-файлами и содержат коды ASCII (включая коды возврата каретки и перевода строки), которые соответствуют понятным людям текстовым символам. Файл, который не является текстовым, называется двоичным. Файл СP/M типа COM — двоичный, поскольку содержит машинный код для процессора 8080.

Предположим, нам нужно сохранить в файле (очень маленького объема) три 16-битных числа, например 5A48h, 78BFh и F510h. Двоичный файл с этими тремя числами имеет длину всего шесть байт.

48 5A BF 78 10 F5

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

5A 48 78 BF F5 10

В текстовом файле ASCII эти же четыре 16-битных значения были бы записаны, как показано ниже.

35 41 34 38 68 0D0A 37 38 42 46 68 0D0A 46 35 31 30 68 0D0A

Эти байты — коды ASCII для цифр и букв, а сами числа разделяются кодами возврата каретки (0Dh) и перевода строки (0A). Текстовый файл удобнее отображать не в виде строки кодов ASCII, а в виде соответствующих им символов.

5A48h

78BFh

F510h

Текстовый файл ASCII, в котором хранятся эти три числа, также может содержать следующие байты.

32 33 31 31 32 0D0A 33 30 39 31 31 0D0A 36 32 37 33 36 0D0A

Коды ASCII для десятичных эквивалентов трех чисел следующие.

23112

30911

62736

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

Как я уже упоминал, сама CP/M записана на первых двух дорожках диска. Для запуска системы ее необходимо загрузить с диска в память. Объем ПЗУ в компьютере, использующем CP/M, не обязательно будет большим. В ПЗУ должен содержаться небольшой фрагмент кода, известный как загрузчик программы. Этот загрузчик считывает самый первый 128-байтовый сектор с дискеты в память и запускает его. Этот сектор содержит код для загрузки в память остальной части CP/M. Весь процесс называется загрузкой операционной системы.

В результате система CP/M размещается в оперативной памяти с самыми старшими адресами. После загрузки CP/M память будет организована так.

Эта схема не отражает реального масштаба. Три компонента CP/M: базовая система ввода/вывода (Basic Input/Output System, BIOS), базовая дисковая операционная система (Basic Disk Operating System, BDOS) и консольный командный процессор (Command and Control Processor, CCP) — занимают в общей сложности около шести килобайт памяти. Область нерезидентных программ — около 58 килобайт памяти на компьютере с оперативной памятью 64 килобайта — изначально не содержит ничего.

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

A>

Перейти на страницу:

Похожие книги