Commodore DOS - Commodore DOS

Commodore DOS / CBM DOS
Список каталогов Commodore64 16.png
Вывод каталога диска в формате 1541
Разработчик Commodore International
Последний релиз 10.0
Доступно в английский
Платформы Семейство MOS 6502
Лицензия проприетарный

Commodore DOS , также известная как CBM DOS , - это дисковая операционная система, используемая на 8-битных компьютерах Commodore . В отличие от большинства других DOS , которые загружаются с диска в собственное ОЗУ компьютера и выполняются там, CBM DOS выполняется внутри накопителя: DOS находится в микросхемах ПЗУ внутри накопителя и запускается там одним или несколькими выделенными семейством MOS 6502. ЦП . Таким образом, передача данных между 8-битными компьютерами Commodore и их дисковыми накопителями больше напоминает подключение к локальной сети, чем обычная передача данных между дисками и хостами.

CBM версии DOS

Известно, что существует по крайней мере семь четко пронумерованных версий Commodore DOS; в следующем списке указаны номера версий и соответствующие дисководы. Если не указано иное, диски имеют формат 5¼ дюйма. Код «lp» обозначает «низкопрофильные» накопители. Диски, номер модели которых начинается с 15, подключаются через уникальную последовательную шину IEEE-488 (шина IEC) Commodore, последовательные протоколы (TALK / LISTEN); все остальные используют параллельный IEEE-488 .

  •   1.0 - встречается в дисководах 2040 и 3040
  •   2.0 - встречается в дисководах 4040 и 3040
  •   2.5 - встречается в дисководах 8050
  •   2.6 - встречается в 1540 , 1541, включая встроенный в SX-64 , 1551 , 2031 (+ "lp") и 4031 дисководы гибких дисков.
  •   2.7 - встречается в дисководах 8050 , 8250 (+ "lp") и SFD-1001
  •   3.0 - встречается в 1570 , внешних 1571 и 8280 дисководах гибких дисков (8280: 8 дюймов), а также в жестких дисках 9060 и 9090
  •   3.1 - находится во встроенном накопителе 1571 компьютеров C128DCR
  • 10.0 - находится в дисководе гибких дисков 1581 (3½ дюйма)

Версия 2.6 была наиболее часто используемой и широко известной версией DOS из-за ее использования в 1541 как часть систем C64 .

Примечание. Пересмотренная прошивка для 1571, в которой исправлена ​​ошибка относительного файла, также была обозначена как V3.0. Таким образом, невозможно различить две версии, используя только номер версии.

Технический обзор

1541 каталог и типы файлов

Дискета 1541 Commodore может содержать до 144 файлов в плоском пространстве имен (без подкаталогов ); каталог хранится на зарезервированной дорожке 18, которая расположена на полпути от концентратора к краю одностороннего диска с 35 дорожками. Имя файла может иметь длину до 16 байт и теоретически уникально; Используя методы прямого доступа к структуре каталогов, можно переименовать файл в другой, хотя доступ к таким файлам может быть трудным или невозможным. Файлы с одинаковыми именами обычно служат только для информирования или визуального управления файлами. Один из популярных приемов, который использовался, например, в The Final Cartridge III , заключался в добавлении файлов с именами "----------------" определенного типа DEL< в каталог, после чего файлы можно было перегруппировать вокруг этих строк для формирования групп. Многие разработчики игр, участники группы варез и хакеры демосцены также использовали несколько более умных пользовательских записей в каталогах.

Имена файлов могут содержать сдвинутый пробел ( $A0 ), и если список каталогов просматривается из BASIC, то часть имени файла за $A0 символом будет казаться отделенной от первой части имени файла кавычками, заставляя BASIC не рассматривать его как часть полного имени файла. Эту функцию можно использовать для создания записей каталога, таких как , которые затем появятся в списке каталогов как, например, SAVE "PROGRAM⇧ Shiftspace CommodoreDUDE",8,1 32 «ПРОГРАММА», 8,1 ПРГ . Когда пользователь перемещает курсор в начало строки, набирает слово LOAD по размеру файла и нажимает RETURN , BASIC интерпретирует это как , вызывая загрузку программы в память. Все, что находится после двоеточия или вторичного адреса, не будет выполнено, поскольку компьютер игнорирует любую команду после ЗАГРУЗКИ. Кроме того , пользователь может нажать - чтобы и программа автоматически. LOAD "PROGRAM",8,1 ...⇧ ShiftRUN/STOPLOADRUN

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

В BASIC к каталогу можно получить доступ как к неисполняемой псевдо-BASIC программе, за которой следует (или в случае двойного диска) . В первой строке есть номер строки 0 или 1 (указывающий номер диска), показывающий в обратном видео имя и идентификатор диска, а также сокращенный код версии DOS, с которой он был создан (коды различаются только в зависимости от Версии DOS используют несовместимые форматы дисков: «2A» используется в большинстве 5,25-дюймовых версий DOS, «3D» - в 3,5-дюймовых 1581). Строки после этого имеют размер файла (в дисковых блоках) в качестве псевдо "номера строки", за которым следует имя файла в кавычках и трехбуквенный код типа. Последняя строка показывает количество нераспределенных блоков на диске (опять же как псевдо «номер строки»), за которым следуют слова «BLOCKS FREE». LOAD "$0",8LOAD "$1",8LIST

На Commodore 64 ввод приведет к заполнению экрана мусором вместо загрузки каталога в ОСНОВНОЕ ОЗУ. Это связано с тем, что диск назначает каталогу адрес загрузки $ 0401 (1025), что эквивалентно началу BASIC для Commodore PET , но соответствует экранной памяти по умолчанию в C64 (начиная со второго символа на первом линия экрана). LOAD "$",8,1

Просмотр каталога с помощью команды перезаписывает BASIC-программу в памяти. DOS Клин и различные сторонние картриджи и наполнители , такие как Epyx FastLoad , Replay действий и Последний картридж III позволяют просматривать директории диска с помощью специальных команд , которые загружаются в каталоге в память экрана , не разрушая текущую программу BASIC. Некоторые версии Commodore BASIC включают команду или, которая выполняет ту же функцию. LOAD "$",8DIRECTORYCATALOG

Поддерживаются следующие типы файлов:

SEQ
Последовательный файл представляет собой файл данных , который может быть линейно прочитать от начала до конца. SEQ файлы обычно используются для хранения документов или текстовых файлов, созданных текстовым процессором или другим подобным редактором. Последовательный файл аналогичен плоскому файлу в Linux или UNIX в том смысле , что он не имеет специальной внутренней структуры. Невозможно позиционировать в любое произвольное место в последовательном файле, поскольку не существует аналога lseek вызова ядра в UNIX-подобных операционных системах.
PRG
PRG файлы обычно содержат исполняемый программный код, хотя их также можно использовать для файлов данных. Первые два байта PRG считываются процедурой загрузки файла ядра и используются для определения адреса загрузки (они сохраняются в формате с прямым порядком байтов ).
REL
Относительный файл - это вариант последовательного типа файла, в котором присутствует механизм индексации, называемый боковыми секторами, для обеспечения доступа, ориентированного на записи. Максимальный размер записей может составлять 254 байта, и адресация осуществляется по количественному числу, основанному на единице, что обеспечивает истинный произвольный доступ к любой части файла.
USR
Пользовательский файл имеет внутреннюю структуру, идентичную структуре последовательного файла. Первоначальной целью Commodore для этого типа файлов было содействие разработке DOS, поскольку содержимое файла могло быть скопировано в буфер накопителя для выполнения микропроцессором накопителя. Очень немногие программы когда-либо использовали этот тип файлов. Некоторые приложения, использующие нестандартные низкоуровневые дисковые структуры, сохраняют данные в формате USR, который стал считаться своего рода указанием пользователю «оставь меня в покое, не пытайся копировать или удалять». В частности, файлы "VLIR" GEOS отображаются как USR файлы.
DEL
Недокументированный тип файла внутреннего использования, аналогичный по структуре последовательному файлу. Создание этого типа файла должно выполняться путем прямого управления каталогом на диске.

Наличие звездочки ( * ) перед типом файла в списке каталогов (например, *SEQ ) указывает на то, что файл не был должным образом закрыт после записи. Когда приводу дана команда закрыть файл, который был открыт для записи, связанный буфер сбрасывается на диск, и карта доступности блоков (BAM) обновляется, чтобы точно отразить, какие блоки были использованы. Если сбой программы или другая проблема (например, когда пользователь удаляет диск при открытом файле) приводит к «потерянному файлу», также называемому «ядовитым» или «сплатным» файлом, буферы не сбрасываются и BAM не будет точно отражать использование диска, что подвергает диск риску повреждения. Ядовитый файл обычно недоступен (но может быть открыт в режиме «изменения»), а попытка использовать команду DOS scratch для удаления файла может вызвать повреждение файловой системы, например перекрестные ссылки . Единственный практический метод удаления одного из этих файлов - открыть файл в режиме «изменения» (и исправить его) или проверить диск (см. Команду DOS validate ниже), последняя восстанавливает BAM и удаляет ссылки на подозрительные файлы. из каталога. Печально известная ошибка сохранения с заменой могла привести к созданию файлов splat.

*DEL - это особый тип, записанный в записи каталога на диске для файлов, которые были удалены. Такие файлы не отображаются в обычном списке каталогов, и их блоки данных и записи каталогов будут повторно использоваться файлами, которые создаются впоследствии. Некоторые служебные программы позволяют «отменить удаление» таких файлов, если их блоки данных и записи каталогов еще не были перезаписаны другими файлами. DEL files обычно используются для вставки разделов баннеров или комментариев в список каталогов.

Типы файлов, стоящие < после них (например, PRG< ), «заблокированы» и не могут быть удалены, однако их можно открыть для чтения. Команды Commodore DOS, которая могла бы явно установить или сбросить этот статус, не существует, но было написано много сторонних утилит, позволяющих это сделать. Эти утилиты обычно считывают каталог с помощью команд прямого доступа, вносят необходимые изменения в необработанные данные и затем записывают изменения обратно на диск.

Доступ к файлам

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

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

OPEN 3,8,4,"0:ADDRESSBOOK,S,W"

Параметры, следующие за OPEN глаголом , следующие:

3
Этот параметр, номер файла , логически идентифицирует открытый файл в операционной системе компьютера и аналогичен файловому дескриптору в UNIX-подобных операционных системах. Он никогда не отправляется на накопитель и, следовательно, не известен и не используется собственной операционной системой накопителя. Номер файла может находиться в диапазоне от 1 до 254 включительно, назначается программистом и должен быть уникальным, если одновременно открывается более одного файла. После открытия файла все процедуры ввода и вывода программы используют номер файла. В программах на ассемблере это значение часто называют LA (логический адрес), сокращение происходит от мнемоники , обозначающей место в памяти, где хранится номер файла. Номера файлов больше 127 заставляют систему записывать дополнительный перевод строки после каждого возврата каретки (полезно, например, для двойного интервала в документе).
8
Этот параметр, номер устройства , определяет конкретное периферийное устройство, подключенное к компьютеру. Устройства с 0 по 3 обращаются к клавиатуре, кассете с магнитной лентой, интерфейсу RS-232 и видеодисплею, соответственно, все из которых напрямую управляются ПЗУ ядра. Устройства с номерами 4 и выше адресуют устройства, подключенные к периферийной шине, например принтеры или дисководы. В случае дисковода номер устройства относится к контроллеру устройства, а не к приводному механизму (механизмам) внутри устройства. По соглашению, первый дисковод в системе имеет номер устройства 8, второй дисковод, если он есть, 9 и т. Д., До максимального числа 15 (когда подключено восемь дисководов). Схема нумерации устройств была получена из шины IEEE-488 (или интерфейса GPIB общего назначения ), которая использовалась с моделями Commodore PET / CBM. В программах на ассемблере это значение часто называют FA или PA (физический адрес), опять же из мнемоники того места в памяти, где хранится номер устройства.
4
Этот параметр, вторичный адрес , который может находиться в диапазоне от 0 до 15 включительно, относится к конкретному каналу связи, установленному с контроллером устройства, и передается устройству, когда ему поступает команда «говорить» или «слушать» на периферийной шине. Как и в случае с номером файла, вторичный адрес определяется программистом и должен быть уникальным для рассматриваемого устройства. Диапазон от 0 до 14 включительно используется для передачи данных на устройство или от него, тогда как 15, называемый «командным каналом», используется для выдачи команд контроллеру устройства (например, для переименования файла на диске), если устройство способно поддерживать такую ​​операцию. В дисковых накопителях вторичные адреса от 0 до 14 включительно отображаются на буферы в контроллере, таким образом устанавливая связь с конкретным файлом на определенном диске; поскольку, как упоминалось выше, накопитель не знает номера файла , он может использовать только вторичный адрес, чтобы различать несколько файлов, открытых одновременно. С другой стороны, операционная система хоста не зависит от вторичного адреса; он передается на привод при каждом доступе к файлу, но не используется хостом иным образом. В программах на ассемблере это значение часто называют SA (вторичный адрес).
КОМАНДНАЯ СТРОКА
"0:ADDRESSBOOK,S,W" Параметр официально упоминается в документации коммодора как командная строка и интерпретируется контроллером устройства осуществляется доступ. В случае дискового накопителя структура формальной командной строки состоит из номера механизма привода ( 0: не путать с номером устройства), имени файла ( ADDRESSBOOK ), типа файла ( S в данном примере - последовательного) и режима доступа ( W , открыт для записи в этом примере). На практике некоторые из этих параметров могут быть опущены. Как минимум, требуется только имя файла, если файл должен быть открыт для чтения.
Номер дисковода идентифицирует механизм привода прикреплен к контроллеру диске устройства и аналогичен номер логического устройства в SCSI контроллер , который способен контролировать несколько механизмов (например, ОМТИ SASI контроллеры , которые были разработаны для работы с ST-412 / ST -506 жестких дисков в 1980-е годы). В дискетах первым механизмом является дисковод 0 :, а вторым - 1 :. Довольно распространенной практикой является опускание номера диска при обмене данными с одним дискетным устройством, поскольку 0: по умолчанию для таких устройств, но, поскольку пропуск номера может вызвать несколько неясных ошибок в DOS, это не рекомендуется ( только двоеточие эквивалентно 0: и этого достаточно, чтобы избежать этих ошибок). Исключением из этого соглашения является подсистема жесткого диска лейтенанта Кернала , в которой номер диска относится к «логическим единицам» ( виртуальным дискам, созданным на одном физическом диске), что делает синтаксис типа 4: или 10: необходимым, если файл, который нужно открыть, не находился на нулевом логическом устройстве (эквивалентно нулю приводного механизма в двойном устройстве гибких дисков).

Файлы также могут быть загружены и сохранены с LOAD и SAVE команд. Здесь также можно использовать спецификаторы имени файла, например, сохраняет программу BASIC в (программный) файл и сохраняет программу BASIC в последовательный файл. Если вторичный адрес не указан или указан как 0 (например ), файл сохраняется / загружается из области памяти BASIC (которая на C64 начинается по умолчанию с $ 0801). Если вторичный адрес указан как ненулевое значение (например ), программа загружается, начиная с адреса, указанного самим файлом (заголовок PRG, который является первыми двумя байтами файла) - эта форма команды чаще встречается при загрузке программ машинного кода. SAVE "FILE",8PRGSAVE "0:FILE,SEQ,WRITE",8,1LOAD "FILE",8LOAD "FILE",8,1

Перемещение нагрузки было впервые введено в VIC-20, потому что эта машина могла запускать BASIC RAM в нескольких разных местах, в зависимости от установленного расширения памяти. Старшее Commodore PET серия не поддерживает перемещение, так и будет иметь тот же эффект: файл будет загружен в ту же область памяти , из которой он был сохранен. Перемещение нагрузки происходит в хосте, что является исключением из того, что было сказано выше о том, что вторичный адрес используется только внутри устройства. Поскольку PET не может перемещать файлы, программы BASIC, написанные на более поздних машинах Commodore, должны быть изменены с помощью редактора секторов для изменения байтов заголовка. Также можно использовать встроенный в ПЭТ монитор машинного языка для изменения адреса ссылки для программы BASIC после ее загрузки. LOAD "FILE",8LOAD "FILE",8,1

Команда загрузит первую программу на диск, начиная с указанной в файле области памяти. Это одна из самых популярных команд загрузки платформ, например, метод запуска большинства коммерческих программ. Следует отметить тот факт, что расширение с подстановочными знаками выберет только первое имя каталога, если до этого не было доступа к другому файлу на этом диске; имя последнего использованного файла сохраняется в памяти, и последующие команды будут загружать этот файл, а не первый. (Однако или всегда будет загружать первый файл на диск.) LOAD "*",8,1LOAD "*",8,1LOAD "0:*",8,1LOAD ":*",8,1

Каталоги дисков в двухприводных устройствах доступны как и . и не обращаются к каталогу, а к реальным файлам на том или ином диске, которые случайно были названы . Частичные каталоги могут быть загружены путем добавления двоеточия и шаблона: например, будет загружен частичный каталог, который показывает только файлы, имя которых начинается с буквы K и которые относятся к типу PRG; все такие неполные каталоги по-прежнему содержат строку с начальным именем диска и последнюю строку «BLOCKS FREE». LOAD "$0", 8LOAD "$1", 8"0:$""1:$""$"LOAD "$0:K*=P",8

Ошибка сохранения с заменой

Commodore DOS также предлагает команду «Сохранить с заменой», которая позволяет сохранить файл поверх существующего файла без необходимости сначала создавать SCRATCH существующий файл. Это было сделано, предваряя собой @ символ в имя файла во время OPEN или SAVE операций - например, . В течение многих лет, начиная с диска 4040, распространялись слухи об ошибке в реализации команды. Сначала это отрицали некоторые комментаторы. Были предложены призы, подтверждающие наличие ошибки. К началу 1985 года Compute! Журнал посоветовал читателям избегать использования команды. В том же году различные авторы независимо друг от друга опубликовали статьи, доказывающие, что ошибка «Сохранить с заменой» была реальной, и включая методы, с помощью которых она могла быть вызвана. SAVE "@MY PROGRAM",8

Затронутые устройства включали однодисковый 1541 и двухдисковый 4040; 8050 и 8250 не выявили проблемы. Некоторые комментаторы предположили, что ошибки можно избежать, всегда явно указывая 0: номер диска при сохранении, хотя позже было показано, что любые операции с диском без номера диска были достаточны, чтобы привести к ошибке. Ошибка возникла из-за того, что затронутые реализации DOS были модифицированными версиями DOS, содержащимися в более ранних двойных дисках Commodore PET, таких как 8050. Это создавало «фантомный диск 1: » в однодисковых системах, что приводило к выделению ненужного буфера. при некоторых условиях. Поскольку команда «Сохранить с заменой» использовала все пять буферов диска, и поскольку метод, с помощью которого был выделен «фантомный» буфер, не соответствовал спецификациям, в некоторых случаях это приводило к записи на диск зашифрованных данных.

В сентябре 1986 года Филип А. Слеймейкер опубликовал статью, в которой очень подробно описывалась причина ошибки и предоставлялись исправления для ПЗУ дисковода 1541; ридеры с записывающим устройством EPROM могут создавать свои собственные исправленные ПЗУ, которые могут быть заменены на привод. Commodore была проинформирована о находках Slaymaker, и хотя они никогда не выпускали официального обновления для оригинальных ПЗУ 1541, они исправили ошибку в 5-й редакции ПЗУ 1571, а также в ПЗУ для приводов 1541-c и 1541-II. . Хотя не поддерживается Commodore, известно, что микропрограммное обеспечение 1541-II (но не микропрограммное обеспечение 1541-c) также можно использовать в исходном приводе 1541 с использованием EPROM, что также исправит ошибку для этого привода.

Командный канал

Как отмечалось ранее, доступ к самой Commodore DOS осуществляется через «командный канал» с использованием синтаксиса, подобного синтаксису, используемому для доступа к файлам. Выдача команд в DOS и получение сообщений о состоянии и ошибках, сгенерированных в ответ на команды, осуществляется путем открытия файла на устройстве с использованием 15 в качестве вторичного адреса, например:

OPEN 1,8,15

Чтобы получить и отобразить статус устройства, можно написать код:

OPEN 1,8,15:INPUT#1,E,E$,T,S:PRINT E,E$,T,S:CLOSE 1

В приведенном выше примере E будет содержать номер ошибки (если есть, он будет равен нулю, если ошибки не существует), E$ будет кратким текстовым описанием ошибки, T будет представлять дорожку диска, на которой произошла ошибка, и S будет сектором на трек, T к которому относится ошибка. Если ошибки нет, эквивалент 00, ОК, 00,00 будет возвращен в четырех переменных. Обратите внимание, что INPUT# это глагол только для режима выполнения. Кроме того, в программах, которые выдают много дисковых команд, принято открывать файл в командном канале устройства в начале программы и не закрывать его, пока программа не завершится.

Commodore BASIC версий 4.0 и более поздних предоставляет псевдопеременную, DS$ которая может использоваться для получения статуса диска вместо приведенного выше кода. Эта зарезервированная переменная недоступна в более ранних версиях BASIC, поэтому командный канал необходимо читать вручную, как показано выше. Обратите внимание, что сразу после включения или сброса будет возвращена версия DOS. Например, 1541 вернет 73, CBM DOS V2.6 1541,00,00 . Код ошибки 73 является общим для всех моделей приводов и может использоваться для определения того, был ли привод сброшен в состояние включения питания.

Команды DOS

Командование Описание Внедрение BASIC 1.x и 2.x Реализация DOS Wedge BASIC 3.0+ Реализация
Новый Отформатируйте диск, подготовьте его к использованию и удалите все данные, содержащиеся на нем. Отсутствие параметра двухсимвольного идентификатора приведет к быстрому удалению всех файлов на уже отформатированном диске. OPEN 15,8,15,"N0:disk name,identifier":CLOSE 15 @N0:disk name,identifier HEADER "disk name",identifier
Царапать Удалить файл с диска (или несколько файлов, используя подстановочные знаки) OPEN 15,8,15,"S0:file name":CLOSE 15 @S0:file name SCRATCH "file name"
Переименовать Переименуйте файл на диске. Обратите внимание, что новое имя идет первым (кроме кода BASIC 3.0+)! OPEN 15,8,15,"R0:new name=old name":CLOSE 15 @R0:new name=old name RENAME "old name" TO "new name"
Инициализировать Перезагрузите привод и прочтите диск BAM во внутреннюю память. Редко требуется, поскольку диск обычно делает это самостоятельно, за исключением случаев, когда диск заменяется другим с тем же идентификатором. OPEN 15,8,15,"I0:":CLOSE 15 @I0: DCLEAR (Только BASIC 7.0+)
Подтвердить Согласуйте BAM с каталогом диска, выделите все используемые блоки и освободите все блоки, которые не используются файлами, и удалите все незакрытые файлы из каталога. Сравним с инструментами CHKDSK / ScanDisk операционных систем Microsoft. OPEN 15,8,15,"V0:":CLOSE 15 @V0: COLLECT
Копировать Дублируйте файл на том же диске (или другом диске в том же двухдисковом устройстве) под другим именем файла. Обратите внимание, что новое имя идет первым (кроме кода BASIC 3.0+)! Дублирование на другой диск без двухдискового устройства требует использования служебной программы. OPEN 15,8,15,"C0:new name=0:existing name":CLOSE 15 @C0:new name=0:existing name COPY"existing name"TO"new name"
Дубликат Сделайте копию всего диска. Доступно только в устройствах с двумя приводами, в противном случае необходимо использовать служебную программу. Сначала идет номер целевого (!) Диска, затем номер исходного диска (кроме кода BASIC 3.0+). OPEN 15,8,15,"D1=0":CLOSE 15 @D1=0 BACKUP D0 TO D1

Есть также команда для поиска в файлах Относительных типа ( RECORD# ), команды несколько блоков уровня прямого доступа ( BLOCK-READ , BLOCK-WRITE , BUFFER-POINTER ), управление блоком ( BLOCK-ALLOCATE , BLOCK-FREE ), манипуляция памяти диска и выполнение программного кода на процессоре привода ( MEMORY-WRITE , MEMORY-READ , MEMORY-EXECUTE , BLOCK-EXECUTE ) и определяемые пользователем функции ( USER и & команды). Некоторые из теоретически определяемых пользователем функций были повторно выделены для доступа к новым функциям в версиях DOS после 1.0.

Рекомендации

Заметки
  • Погружения, Ричард; Нойфельд, Джеральд Г. (1984). Внутри Commodore DOS. Полное руководство по дисковой операционной системе 1541. DATAMOST, Inc и Reston Publishing Company, Inc. (Прентис-Холл). ISBN   0-8359-3091-2 .
  • Englisch, Lothar; Щепановски, Норберт (1984). Анатомия дисковода 1541. Гранд-Рапидс, Мичиган: Abacus Software (перевод с оригинального немецкого издания 1983 г., Дюссельдорф: Data Becker GmbH). ISBN   0-916439-01-1 .
  • (на финском языке) Lundahl, Reijo (1986). 1541-Левясема . Amersoft. ISBN   951-35-3206-2