Введение
Операционная система для компьютеров Tandy TRS 80
TRSDOS (аббревиатура от Tandy Radio Shack Disk Operating System) — операционная система для серии восьмибитных микрокомпьютеров Zilog Z80 Tandy TRS 80, которые продавались через Radio Shack с 1977 по 1991 год. В руководствах Tandy рекомендовалось произносить это как "трисс-досс". TRSDOS не следует путать с Tandy DOS, версией MS DOS, лицензированной у Microsoft для линейки персональных компьютеров (ПК) Tandy x86. В оригинальном TRS 80 Model I 1977 года TRSDOS в первую очередь служила для расширения MBASIC (BASIC в ПЗУ) дополнительными командами ввода/вывода, которые работали с дисковыми файлами, а не с кассетными лентами, используемыми в системах Model I без дисковода. Позднее компьютеры Model III, оснащенные дисководом, использовали совершенно другую версию TRSDOS от Radio Shack, которая достигла своего пика в 1981 году с TRSDOS версии 1.3. Начиная с 1983 года, компьютеры TRS 80 Model 4 с дисководом использовали TRSDOS версии 6, разработанную компанией Logical Systems, Inc. Эта версия была обновлена в 1987 году и выпущена как LS DOS 6.3. Совершенно отдельной версией была TRSDOS от Radio Shack для профессионального компьютера TRS 80 Model II 1979 года, также основанная на Z80 и оснащенная 8-дюймовыми дисководами. Более поздние модели этой линейки — 12, 16 и 6000 — использовали Z80 в качестве альтернативного процессора для основного чипа Motorola 68000 и могли запускать эту версию TRSDOS для обратной совместимости со старым программным обеспечением для Z80.
История
Микрокомпьютер TRS-80 корпорации Tandy не поставлялся с дисководом или дисковой операционной системой на момент выпуска. Первая версия TRSDOS, разработанная Рэнди Куком, была настолько нестабильной, что другие создали альтернативные варианты, такие как NewDOS и LDOS. После разногласий с Куком по поводу прав на исходный код, Tandy наняла Logical Systems, разработчика LDOS, для продолжения разработки TRSDOS. TRSDOS 6, поставлявшаяся с TRS-80 Model 4 в 1983 году, полностью идентична LDOS 6.00.
Даты
Октябрь 1979 года – Radio Shack выпускает TRSDOS 2.3.
1 мая 1981 года – Radio Shack выпускает Model III TRSDOS 1.3.
26 апреля 1983 года – Radio Shack представляет TRSDOS версии 6.0 вместе с новыми Model 4.
1984 год – Radio Shack выпускает версию 6.2, финальную версию для Model 4.
1984 год – Logical Systems публикует The Source – комментированный исходный код ассемблера TRSDOS 6.2.
Конец 1986 года – Logical Systems выпускает LS DOS 6.3, функционально эквивалентное обновление TRSDOS 6.2. С этого момента Tandy/Radio Shack начала поставлять его с Model 4D.
May 1, 1981 – Radio Shack releases Model III TRSDOS 1.3
April 26, 1983 – Radio Shack introduces TRSDOS Version 6.0 with the new Model 4s
1984 – Radio Shack releases Version 6.2, the definitive version for the Model 4
1984 – Logical Systems publishes The Source, the commented assembler source code to TRSDOS 6.2
Late 1986 – Logical Systems releases LS DOS 6.3, the functionally equivalent update to TRSDOS 6.2. From this date, Tandy/Radio Shack ships it with the Model 4D.
Особенности и возможности
Компьютеры RadioShack на основе Z80 TRS-80 (модели I/III и Model 4) поддерживают до четырех физических дисководов (мини-дискет), которые (в продаже) используют 5¼-дюймовые дискеты. Оригинальный TRSDOS для модели I поддерживал только односторонние диски с 35 треками, отформатированные с одинарной плотностью (секторы кодируются с использованием метода частотной модуляции). TRSDOS для модели III (вплоть до версии 1.3) поддерживал диски с 40 треками, отформатированные с двойной плотностью (с использованием модифицированной частотной модуляции). Модели I, модернизированные контроллерами двойной плотности, и модели I/III, оснащенные 80-трековыми или двусторонними дисководами, не могли использовать TRSDOS; RadioShack продавала операционную систему LDOS от Logical System, которая могла управлять этими типами дисководов. TRSDOS 6 для модели 4 является развитием LDOS и обладает теми же возможностями. Жесткие диски (тогда также известные как диски Winchester) требовали специального программного обеспечения драйверов, поставляемого их производителями. Эти драйверы позволяли любой установке TRSDOS получить к ним доступ с использованием до восьми возможных разделов, каждому из которых присваивался номер диска от нуля до семи. Фактически, большой жесткий диск можно было отформатировать с количеством разделов, превышающим восемь, но TRSDOS может получить доступ только к восьми в течение одной сессии. На жестком диске могли быть разделы, отформатированные под TRSDOS, и разделы, отформатированные под CP/M OS. Каждый дисковод в системе также занимал один номер диска. Модель 4, с возможностью создания RAM-диска (Memdisk), также требовала присвоения номера диска и для него. Все версии TRSDOS используют наложения для обработки большинства системных запросов, а каталоги дисков не хранятся в памяти. Это имеет два важных последствия для производительности системы. Во-первых, при первом обращении к файлу DOS всегда обращается к каталогу диска, чтобы получить информацию о физическом расположении дискового пространства, выделенного файлу (включая его расширения, если они есть). После первого обращения эта информация сохраняется в блоке управления файлом, для которого память выделяется вызывающей программой. Последующие обращения не требуют чтения каталога диска (если только файл не был изменен и не требуется дополнительное дисковое пространство). Поэтому производительность системы во многом зависит от того, насколько близко расположены выделенные области диска файла к цилиндру каталога, и насколько фрагментирован файл (расширения, расположенные в несмежных областях). Чем дальше цилиндр каталога, тем больше головка чтения/записи диска должна перемещаться, что замедляет доступ к диску и увеличивает механический износ. TRSDOS имеет команды, позволяющие пользователю оптимизировать размещение определенных файлов на физическом пространстве диска, а также команду для отображения карты физического размещения файла на диске. Второе следствие архитектуры на основе наложений заключается в том, что диск, содержащий системные файлы TRSDOS (с расширением /SYS), всегда должен присутствовать в дисководе, назначенном логическим номером диска ноль. (На модели 4 это может быть Memdisk, что освобождает физический дисковод ноль для использования с несистемным диском данных). LDOS и TRSDOS 6 имеют команду SYSRES, которая загружает выбранные системные файлы в оперативную память Z80, освобождая тем самым место на системном диске для несистемных данных. Все версии имеют варианты команды SYSTEM, которые могут переназначать логические номера дисков физическим дисководам. Можно назначить номера дисков таким образом, чтобы физическому дисководу не был присвоен логический номер диска; это иногда полезно для гарантии того, что к дисководу не будет доступа в целях безопасности или защиты (защиты от записи). Также дисководы могут быть защищены от записи операционной системой DOS.
Управление дисками
Основная функция любой дисковой операционной системы — предоставление пользователю возможности управления и доступа к файлам, хранящимся на дисковых устройствах хранения. Поскольку пользователя не следует обременять физическими деталями самих устройств хранения, ответственность за преобразование запросов доступа к файловым записям в конкретные параметры привода, дорожки, сектора и головки, точно определяющие место хранения каждой записи, лежит на операционной системе. Система также поддерживает в памяти Z80 в TRSDOS таблицу управления дисками, которая хранит параметры, связанные с каждым из восьми логических дисков. Параметры дискового привода определяют, как общее пространство хранения на диске разделено на адресуемые единицы. Слои магнитных частиц на поверхности дискового носителя намагничиваются (в процессе форматирования) в концентрические круги областей хранения, называемые ТРЕКАМИ. Каждый трек разделен на 256-байтные под-области, называемые СЕКТОРАМИ. Каждый сектор однозначно идентифицируется шаблоном информации, предшествующим каждому сектору, называемым ID-ПОЛЕМ. Хотя количество секторов на дорожку может варьироваться в зависимости от типа носителя, количество секторов в каждой дорожке одного и того же носителя (и в каждой грануле) всегда должно быть постоянным. Диски организованы следующим образом: каждый трек форматируется в определенное количество 256-байтных секторов с максимальной емкостью 32 сектора на трек. Секторы группируются в блоки, называемые ГРАНУЛАМИ, которые различаются по размеру в зависимости от общей емкости дискового носителя, хотя размер гранулы для каждого формата диска является постоянным. Для 40-цилиндровых дисков, отформатированных с двойной плотностью, стандартных для дисководов, установленных в TRS-80 моделей III и 4, размер гранулы составляет шесть 256-байтных секторов, или 1,5 КБ. Каждая дорожка содержит три гранулы, что обеспечивает 4,5 КБ памяти. Каждая сторона (поверхность) диска обычно форматируется с 40 дорожками, что дает 180 КБ на сторону. Модель 4D с двусторонними дисководами обеспечивает 360 КБ памяти. Всякий раз, когда для файла требуется дополнительное дисковое пространство (например, для расширения файла во время записи), выделяется дополнительная гранула. Таким образом, гранула становится минимальной единицей хранения. TRSDOS присваивает номера каждому сектору, каждой дорожке и каждой поверхности. Поверхности нумеруются последовательно, начиная с нуля. Дорожки нумеруются последовательно, начиная с нуля от внешнего края диска, при этом самая внутренняя дорожка получает наибольший номер. При использовании многоголовочных дисководов номера дорожек на поверхности дублируются на каждой поверхности, при этом все дорожки с одинаковыми номерами образуют цилиндр. Для двухсторонней дискеты, отформатированной на модели 4D, нулевая дорожка поверхности 0 и нулевая дорожка поверхности 1 группируются вместе в цилиндр 0. Емкость цилиндров также имеет верхний предел в 256 секторов на цилиндр или восемь гранул на цилиндр, в то время как система поддерживает (для жестких дисков с несколькими пластинами носителя) максимум восемь головок на диск. Цилиндр каталога диска размещается в процессе форматирования на цилиндр с средним номером; таким образом, стандартный 40-цилиндровый диск имеет свой каталог, установленный на цилиндре 20. Это уменьшает среднее расстояние (и время доступа), которое головке чтения/записи диска необходимо пройти для доступа к каталогу. Первый сектор каталога диска содержит таблицу распределения гранул (GAT). GAT отображается побитово на каждую гранулу пространства на диске. Другие поля в GAT содержат ИМЯ ПАКЕТА, ДАТУ создания (когда диск был отформатирован), ПАРОЛЬ ПАКЕТА и данные, относящиеся к конфигурации диска. Когда файл должен быть открыт для доступа, системе необходимо выполнить поиск в каталоге для его записи в каталоге. Время поиска минимизируется за счет использования метода хеширования для сокращения 11-символьной строки, образованной из имени файла и расширения, до однобайтового значения. Хеш-код для каждого файла хранится в таблице индексов хеша (HIT), которая является вторым сектором каталога. Каждая позиция в этой таблице соответствует определенной записи в каталоге. Хеш-таблица, имеющая длину одного сектора, может индексировать максимум 256 записей каталога или файлов. Сам каталог имеет размер, соответствующий емкости диска, и может содержать максимум один цилиндр (до 34 секторов). Таким образом, чем больше емкость дискового хранилища, тем больше его каталог и тем большее количество имен файлов можно хранить на диске. Запись каталога содержит информацию, такую как дата последнего изменения файла, его коды обновления и доступа, уровень доступа и другие атрибуты, такие как является ли он SYStem или PDS (Partitioned Data Set) файлом, и если была сделана резервная копия, относительный номер последнего сектора в файле и последний байт в последнем секторе (или конец файла). Запись также содержит физические области, используемые файлом, указывая на цилиндр, относительную начальную гранулу и количество смежных гранул для каждого экстента, составляющего файл. Если файл имеет более четырех экстентов, используются дополнительные записи каталога по мере необходимости, с прямыми и обратными указателями, связывающими каждую запись каждого файла. Таким образом, теоретический максимум в 256 файлов, возможных на дискете, реализуем только в том случае, если нет фрагментации файлов. При форматировании диска TRSDOS все параметры, связанные с дискетой, определяются заранее. Таким образом, количество секторов на дорожку, количество секторов на гранулу и, следовательно, количество гранул на дорожку, количество сторон (поверхностей) и количество цилиндров определяются, а также плотность носителя. Некоторые из этих цифр (плотность, стороны, гранулы на дорожку) записываются в поля в таблице распределения гранул, которая является частью каталога диска. Другие (сектора на дорожку, секторы на гранулу, в дополнение к вышеуказанным величинам) являются частью полей таблицы управления дисками. Когда система пытается открыть файл на диске, она использует SVC @CKDRV для определения доступности диска, а затем регистрирует диск, когда находит его доступным. Эта функция "регистрации" обновит поле DIRCYL, а затем обновит поля DBLBIT и MAXCYL на основе информации, хранящейся в GAT. Эта процедура избавляет пользователя от необходимости вручную регистрировать вновь вставленный диск; он имеет право менять диски с разным форматированием в любом дисководе, не опасаясь, что система будет обращаться к нему неправильно. Примитивы диска SVC направляются через общие системные процедуры, содержащиеся в программном обеспечении драйвера, установленном для каждого типа дискового устройства хранения. Драйвер для дисководов моделей III или 4 называется и находится в области низкой памяти TRSDOS. Жесткие диски поставляются со своим собственным программным обеспечением драйвера и обычно устанавливаются в высокую память (основную Z80 RAM 64 КБ) выше указателя системы, поскольку места в области низкой памяти обычно недостаточно (особенно на модели 4, поскольку программное обеспечение, необходимое для доступа к ее внешним банкам памяти, не может находиться в высокой Z80 RAM памяти, поскольку этот регион существует в области обмена зарезервированной RAM). Эти процедуры драйвера устанавливают протокол связи между приложением, запрашивающим доступ к диску, и аппаратным контроллером дисковода компьютера. TRS-80 используют контроллеры серии Western Digital: WD1791 в версии модели 4 без матричной схемы и WD1773 в версии модели 4 с матричной схемой. Когда запрос ввода/вывода вызывается SVC более высокого уровня, например, запрос на ЧТЕНИЕ записи файла, запрос преобразуется в этот дисковый примитив (команда или отчет о состоянии FDC), необходимый для выполнения запроса функции. Протокол связи унифицирован для всех дисковых устройств, подключенных к системе. Это делает доступ к файлам прозрачным для размера или типа дискового устройства в рамках параметров, хранящихся в DCT для этого диска.
Управление файлами
Дисковые файлы поддерживаются с двумя типами доступа: ввод-вывод записей и ввод-вывод символов. Логические записи длиной от одного до 256 байт могут быть прочитаны или записаны с помощью запросов SVC @READ или @WRITE. Ввод-вывод записей может быть произвольным (по позиции, определяемой запросами SVC перед READ/WRITE) или последовательным, с использованием повторяющихся READ или WRITE. Ввод-вывод символов (или байтов) осуществляется запросами @GET и @PUT SVC и по сути идентичен вводу-выводу записей с логической длиной записи (LRL), равной одному. (Физический доступ к устройству хранения на диске всегда осуществляется в единицах 256-байтных секторов. Это задано аппаратным обеспечением дискового контроллера TRS 80). Однако, если GET или PUT используются для реализации последовательного доступа, файл может рассматриваться как устройство ввода-вывода символов, такое как принтер, последовательный порт или устройство отображения. Следовательно, запрос ввода-вывода байтов не зависит от физического устройства, "подключенного" к блоку управления, запрашивающему ввод-вывод. Это делает систему "независимой от устройств". Имена файлов ограничены восемью буквенно-цифровыми символами (первый символ должен быть буквой), которые не чувствительны к регистру (используются только прописные буквы; любые строчные буквы преобразуются в прописные). Расширения файлов могут содержать до трех символов и подчиняются тем же правилам. Пароли файлов могут состоять до восьми символов, подчиняющихся тем же правилам (версии TRSDOS 6 до 6.2 поддерживают пароли владельца и пользователя). К целым дискетам также могут быть назначены мастер-пароли, которые могут ограничить доступ пользователя через команды BACKUP и PURGE. В TRSDOS и LDOS система никогда не "авторизуется" на каком-либо текущем диске, как в CP/M, PC DOS и MS DOS. Все запросы доступа к файлам (выдаваемые пользователем на консоли или программой) удовлетворяются путем поиска в каталоге первого указанного диска (принимаемого за диск 0, если номер диска не указан) и, если запрошенный файл не найден, путем поиска на следующем (с более высоким номером) диске в системе. Это продолжается до тех пор, пока файл не будет найден или не будут просмотрены все диски в системе (но см. ниже варианты этого правила). Номера дисков указываются двоеточием, за которым сразу следует номер диска. Двоеточие необязательно, если спецификация диска используется в качестве суффикса имени файла. Например, команда directory: отображает все файлы, начиная с логического диска 0, затем диска 1 и так далее. или выполняет поиск на логическом диске 4 (для всех файлов, как всегда, когда имя файла не указано). или выполняет поиск на логических дисках 4, 5 и 6. или выполняет поиск на логических дисках 4, 5, 6 и 7. Ищет FILENAME на логическом диске 2. выполняет поиск FILENAME на всех логических дисках, начиная с диска 2. Как видно, дефис используется для указания диапазона номеров дисков. Команды и (catalog) отображают все спецификации файлов (filespecs), соответствующие запросу на всех дисках. Другие команды/утилиты, такие как , и , а также поиск дисков, инициированный выполняемыми программами, прекращают поиск на первом диске, соответствующем условиям. Если одна и та же спецификация файла существует на нескольких дисках, то файлы на дисках с более высоким номером будут исключены. Поддерживается доступ к файлам по частичным именам файлов (partspecs), расширениям файлов и датам файлов. Например: выберет файлы SAMPLE, SAMPLE1, SAMPLE23 и SAMPLEIT. выберет файлы SAMPLE/BAS, TEST/BAS, EXAMPLE/BAS и т.д. Как и в предыдущем примере, спецификации дисков (drivespecs) могут быть добавлены к спецификациям файлов. В этих примерах предполагается, что выбранные файлы не скрыты в каталоге диска. Запросы доступа к файлам, выдаваемые приложениями, работающими под TRSDOS, работают аналогичным образом.
displays all files starting with logical drive zero, then drive one, and so on. or searches logical drive four (for all files, as always when no filename is given). or searches logical drives four, five, and six. or searches logical drives four, five, six and seven. searches for FILENAME on logical drive two. searches for FILENAME on all logical drives starting from drive two. As seen, the dash character is used to specify a range of drive numbers. The and (catalog) commands display all file specifications (filespecs) matching the query on all drives. Other commands/utilities such as , and , and drive searches initiated by programs being executed, stop searching at the first drive found to match. If the same filespec exists on multiple drives, then those files on higher numbered drives will be excluded. File access by partial filenames (partspecs), file extensions, and file dates are supported. For example:
will select files SAMPLE, SAMPLE1, SAMPLE23 and SAMPLEIT. will select files SAMPLE/BAS, TEST/BAS, EXAMPLE/BAS, etc. As with the example earlier, drive specifications (drivespecs) may be appended to filespecs. These examples assume the selected files have not be made invisible in the disk directory. File access requests issued by applications programs running under TRSDOS work the same way.
Интерфейс командной строки
В TRSDOS/LS DOS 6.x стандартный системный интерпретатор команд (SYS1/SYS) может быть функционально заменен пользовательским интерпретатором путем копирования нового интерпретатора в системный файл SYS13/SYS (который в неизмененной установке является пустым файлом). Это может быть любой файл машинного кода /CMD. В документации это называется "расширенным командным интерпретатором" или ECI. TRSDOS/LS DOS 6.x поддерживает подстановочные знаки в именах файлов, как одиночный символ ? и многосимвольный *. TRSDOS (версия II) была примечательна включением "слов-паразитов", аналогичных спецификации COBOL 1959 года. Это делало команды более похожими на английский язык. Например, следующие команды функционировали идентично:
Поскольку TRSDOS не имеет механизма перенаправления для дисковых файлов, как в UNIX/Linux и MS DOS, команда APPEND отличается по концепции от добавления данных через перенаправление вывода в UNIX или MS DOS. TRSDOS/LS DOS 6.x обеспечивает перенаправление ввода/вывода для системных устройств (клавиатура *KI, дисплей *DO, принтер *PR, последовательный порт *CL), а также между устройствами и дисковыми файлами. Команда DEVICE отображает карту связей и маршрутов ввода/вывода. В DOS и UNIX печать файла может быть выполнена с помощью перенаправления; в UNIX это обычно делается путем отправки файла на "линейный принтер" (с помощью команды lpr), поскольку UNIX традиционно является многопользовательской системой. Задания на печать в TRSDOS/LS DOS 6.x могут быть перенаправлены (например, в файл на диске) путем применения команд LINK или ROUTE к системному устройству *PR. TRSDOS/LS DOS 6.x не поддерживают подкаталоги или пользовательские области. Однако команды DIR и CAT (Catalog) для отображения информации о файлах поддерживают обычные частичные имена файлов, расширения и даты файлов. В TRSDOS/LS DOS 6.x файлы могут быть скрыты от команд DIR и CAT и могут быть отображены с параметром INV (если файлы не защищены паролем и не указан правильный пароль). TRSDOS/LS DOS 6.3 может сделать дамп видеоэкрана на линейный принтер, нажав на кнопку. Многие версии поддерживают простую парольную защиту файлов и программ, с раздельными возможностями чтения/исполнения и полным доступом. Пример: имя_файла/расш. пароль:диск#. TRSDOS 6.x поддерживает как пароли владельца, так и пароли пользователя (максимум 8 символов) для дисковых файлов. LS DOS 6.3 использует поле для пароля пользователя для своей расширенной схемы датирования (после 31 декабря 1987 года). Обе операционные системы Model 4 могут устанавливать различные уровни доступа к файлам и разрешать программную защиту от записи для дисковых файлов и целых дисков.
Many versions support a simple password security for files and programs, with separate Read/Execute and full access capabilities. ex: filename/ext. password:drive#. TRSDOS 6. x supports both Owner and User passwords (8 characters max) for disk files. LS DOS 6.3 uses the space for the User password for its extended dating scheme (past December 31, 1987). Both Model 4 OSes can set various file access levels and permit software write protection for disk files and entire disks.