Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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,132 «ПРОГРАММА», 8,1 ПРГ. [1] Когда пользователь перемещает курсор в начало строки, набирает слово, LOADпревышающее размер файла, и нажимает RETURN, BASIC интерпретирует это как , вызывая загрузку программы в память. Все, что находится после двоеточия или вторичного адреса, не будет выполнено, поскольку компьютер игнорирует любую команду после ЗАГРУЗКИ. [2] В качестве альтернативы, пользователь может нажать - чтобы и программа автоматически. [3]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 не будет точно отражать использование диска, что подвергает диск риску повреждения. Ядовитый файл обычно недоступен (но может быть открыт в режиме "изменения"),и попытка использовать DOSscratchКоманда для удаления файла может вызвать повреждение файловой системы, например перекрестные ссылки . Единственный практический метод удаления одного из этих файлов - открыть файл в режиме «изменения» (и исправить его) или проверить диск (см. Команду 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 серия не поддерживает перемещение, так иLOAD "FILE",8LOAD "FILE",8,1будет иметь тот же эффект: файл будет загружен в ту же область памяти, из которой он был сохранен. Перемещение нагрузки происходит в хосте, что является исключением из того, что было сказано выше о том, что вторичный адрес используется только внутри устройства. Поскольку PET не может перемещать файлы, программы BASIC, написанные на более поздних машинах Commodore, должны быть изменены с помощью редактора секторов для изменения байтов заголовка. Также можно использовать встроенный в ПЭТ монитор машинного языка для изменения адреса ссылки для программы BASIC после ее загрузки.

Команда загрузит первую программу на диск, начиная с указанной в файле области памяти. Это одна из самых популярных команд загрузки платформ, например, метод запуска большинства коммерческих программ. Следует отметить тот факт, что расширение с подстановочными знаками выберет только первое имя каталога, когда ни один другой файл на этом диске ранее не был доступен; имя последнего использованного файла сохраняется в памяти, и последующие команды будут загружать этот файл, а не первый. (Однако или всегда будет загружать первый файл на диск.)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, распространялись слухи об ошибке в реализации команды. Сначала это отрицали некоторые комментаторы. Были предложены призы, подтверждающие наличие ошибки. [4] К началу 1985 года Compute! Журнал посоветовал читателям избегать использования команды. [5] В этом году разные авторы независимо опубликовали статьи [4] [6] [7] [8]SAVE "@MY PROGRAM",8 доказательство того, что ошибка «Сохранить с заменой» была реальной, и включая методы, с помощью которых она могла быть вызвана.

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

В сентябре 1986 года Филип А. Слеймейкер опубликовал статью [10], в которой подробно описывалась причина ошибки и предоставлялись исправления для 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 [ править ]

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

Ссылки [ править ]

  1. ^ Sturdivant, Джерри А. (февраль-март 1985). «Быстрая загрузка» . Коммодор Power / Play . Vol. 4 шт. 1. п. 54 . Проверено 7 октября 2018 .
  2. ^ Brannon, Чарльз (декабрь 1983). «Горизонты: 64» . COMPUTE! S Gazette . № 6. с. 178 . Проверено 7 октября 2018 .
  3. ^ Грейс, Пол (1986). «Странный чувак» . RUN Специальный выпуск 1987 . Питерборо, Нью - Гемпшир: CW Связь / Питерборо, Inc . Проверено 7 октября 2018 .
  4. ^ a b c Уиттерн, Чарльз Х. (июль 1985 г.). "СОХРАНИТЬ с помощью Replace Exposed !!" . Оператор . 6 (1): 20.
  5. ^ "Великие дебаты по сохранению / замене коммодора" . Вычислить! . Февраль 1985. с. 10 . Проверено 6 октября 2013 года .
  6. ^ a b Slaymaker, Пенсильвания (октябрь 1985 г.). «Сохранить с заменой: завершена отладка / часть 1» . Вычислить! . п. 79 . Проверено 16 октября 2013 года .
  7. ^ Slaymaker, PA (ноябрь 1985). «Сохранить с заменой: наконец-то отлажен / Часть 2» . Вычислить! . п. 111 . Проверено 30 октября 2013 года .
  8. ^ Редакторы. "Спасите @: Теория Джерри Нойфилда о старой ошибке". Инфо № 9, декабрь 1985 г. / январь 1986 г.
  9. ^ Выдержки электронной почты от Philip A. Slaymaker также архивируются в Groups.Google
  10. ^ Филип А. Slaymaker. «Устранение SAVE @ и других ошибок 1541». Транзактор Vol. 7 № О2, сентябрь 1986 г., стр. 33–35.
Заметки
  • Погружения, Ричард; Нойфельд, Джеральд Г. (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