История - процесс организации записи на бытовые аудиокассеты

Аудиокассета (чаще говорят «компакт-кассета») — это носитель для аналоговой звукозаписи на магнитной ленте. До появления компакт-кассет основным носителем был винил, а для записи использовали катушечные магнитофоны. Но они были громоздкими, а с лентой нужно было аккуратно обращаться. Возникла потребность в чём-то более портативном и удобном.

За создание привычного формата отвечал голландский инженер Лу Оттенс, работавший в Philips. Он придумал, как уменьшить катушки и поместить всю конструкцию в защитный корпус. 28 августа 1963 года на выставке IFA в Берлине Philips представила компакт-кассету вместе с первым портативным магнитофоном EL3300. Сначала формат не вызвал большого ажиотажа, но позже его успех закрепили другие события

  • В 1965 году стали массово выпускать предварительно записанные музыкальные кассеты.
  • В 1979 году появился Sony Walkman (модель TPS-L2) — портативный плеер, который сделал кассету по-настоящему массовым и мобильным форматом.

В 1980-х кассеты переживали пик популярности: молодёжь записывала хиты с радио, составляла микстейпы. В 1990-х их начали вытеснять компакт-диски, а позже — цифровые форматы вроде MP3.

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

Самые ранние примеры

  • HP 9800-серия (1968–1972). Hewlett‑Packard выпускала настольные компьютеры, где для хранения данных применялись кассеты (правда, не бытовые аудиокассеты, а специализированные форматы магнитной ленты). Это были не «домашние» машины, но именно здесь лента как носитель закрепилась в компьютерной практике. 
  • Honeywell H316 (1969), он же Kitchen Computer. Использовал магнитную ленту для загрузки программ.

Домашние компьютеры 1970‑х с аудиокассетами

Именно бытовые аудиокассеты (Compact Cassette) стали массовым решением для домашних компьютеров:

  • Commodore PET (1977). В базовой комплектации не имел дисковода, и основным носителем была аудиокассета через интерфейс Commodore Datasette. Формат записи был цифровым: последовательность импульсов кодировала биты, почти как у Spectrum, но с другой логикой кодирования.
  • TRS‑80 (Model I, 1977, Tandy/RadioShack). Также использовал бытовой магнитофон и кассеты. У него был свой формат записи, и кассеты были очень популярны среди владельцев TRS‑80. 
  • Apple II (с 1977). Хотя дисковая подсистема (Disk II) стала его «визитной карточкой», изначально и долгое время программы распространялись и на кассетах — для этого использовался интерфейс кассетного магнитофона. 
  • Atari 400/800 (1979). Имели специальный порт для кассетного магнитофона (Cassette Interface). Формат записи отличался от Spectrum: там применялась своя схема модуляции и синхронизации.
  • ZX Spectrum (1982) Sinclair Research, которую основал Клайв Синклер. До ZX Spectrum он уже выпустил успешные модели — ZX80 (1980) и ZX81 (1981).

Советские и восточноевропейские аналоги

  • «Микро-80» (прототип, конец 1970‑х), «Радио‑86РК» (1986) и другие любительские конструкции в СССР часто использовали запись на аудиокассету, потому что дисководы были дорогими и труднодоступными. Логика была схожей: цифровой поток превращался в аудиосигнал, который магнитофон записывал на ленту. 
  • MSX‑компьютеры (с 1983). Стандарт MSX предусматривал интерфейс для кассет, и кассеты оставались важным носителем даже после появления дисководов.

Почему это было так популярно

  • Дешевизна. Бытовой магнитофон и аудиокассеты стоили недорого и были в каждом доме. 
  • Доступность. Не требовалось сложной периферии: подключил магнитофон к компьютеру — и можно сохранять и загружать программы.
  • Распространённость. Журналы печатали программы в виде звуковых волн (осциллограмм) или даже распространяли их на приложенных кассетах.

Хотя принцип везде был один — цифровая запись на аналоговую ленту, детали отличались:

  • Кодирование битов. У Spectrum это длительность импульсов (короткие/длинные пачки). У Commodore PET и TRS‑80 использовались другие схемы (например, частотная или иная импульсная модуляция).
  • Синхронизация и заголовки. Каждый компьютер имел свой формат блока данных: свои синхро-последовательности, заголовки, контрольные суммы. Из‑за этого кассеты от одного компьютера не читались на другом. 
  • Скорость и надёжность. Например, TRS‑80 славился относительно медленной и капризной загрузкой, а Spectrum — более продуманной схемой, хотя и не без проблем.

История ZX Spectrum — это действительно захватывающая история о том, как простой и недорогой компьютер стал настоящим культурным феноменом.

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

ZX Spectrum стал логичным развитием этой идеи. Его выпустили в 1982 году. Аппаратную часть (для версий 16K/48K) разработал инженер Ричард Альтвассер, корпус создал дизайнер Рик Дикинсон, а программное обеспечение (включая Sinclair BASIC) — Стив Викерс.

Изначально были две версии: с 16 КБ и 48 КБ оперативной памяти. Позже владельцы модели на 16 КБ могли обновить её до 32 КБ — для этого нужно было отправить компьютер в Sinclair Research по почте. Стартовые цены составляли 125 фунтов за 16 КБ и 175 фунтов за 48 КБ, позже их снизили.

Что в нём было особенного

  • Процессор: Zilog Z80 с тактовой частотой 3,5 МГц. 
  • Графика: разрешение 256×192 пикселей. Цвета задавались не для каждого пикселя отдельно, а для блоков 8×8 пикселей. Из-за этого возникал характерный артефакт — «attribute clash» (конфликт атрибутов), когда два цвета в одном блоке смешивались.  
  • Звук: в базовой версии (48K) был простой однобитный бипер (через чип ULA). В более поздней версии ZX Spectrum 128 добавили полноценный звуковой чип AY-3-8912 (трёхканальный), который мог работать одновременно с бипером, давая в сумме пять каналов.  
  • Хранение данных: как и предшественники, Spectrum использовал обычные аудиокассеты. Данные кодировались методом FSK (частотная манипуляция): логический «0» — примерно 2400 Гц, «1» — примерно 1200 Гц.

Культурный феномен

ZX Spectrum быстро стал очень популярным. Вокруг него сформировалось активное сообщество: выходили специализированные журналы (Sinclair User, Your Sinclair, Crash). Компьютер оценили не только как инструмент для обучения и работы, но и как платформу для игр — именно геймеры стали его главной аудиторией.

Для ZX Spectrum существует огромное количество программ — по разным оценкам, библиотека насчитывает более 23 000 наименований. Подавляющее большинство из них — игры, но софт для этой платформы очень разнообразен.

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

  • Операционные системы и оболочки: TR-DOS, iS-DOS, CP/M. 
  • Утилиты: копировщики (Copy 86M, TFCOPY), упаковщики, командеры для работы с дисками. 
  • Инструменты для работы с графикой и звуком: графические редакторы (OCP Art Studio, The Artist), конвертеры изображений (BMP to SCR, PCX TO ZX).

Языки программирования и инструменты разработки - для создания собственных программ существовали:

  • Компиляторы и интерпретаторы: Sinclair BASIC и его расширения (Beta BASIC, MegaBASIC, Laser BASIC), компиляторы Паскаля и Си (например, Hisoft Pascal, Hisoft C).
  • Ассемблеры: SjASM (для разработки под Spectrum), SjASMPlus (более современный кроссплатформенный вариант с поддержкой современных форматов).  
  • Инструменты для создания игр: IF Creator (для интерактивных книг), 3D Construction Kit (для трёхмерных квестов).  
  • Отладчики и среды разработки.

Прикладные программы

  • Текстовые процессоры: Tasword, Tasword II, The Last Word. 
  • Электронные таблицы: VU-Calc. Базы данных: VU-File. 
  • Специализированные утилиты: например, Elite Servise (для работы с файлами игры Elite).

Как преобразовывались данные для записи на аудиокассету в ZX Spectrum

Данные для записи на аудиокассету в ZX Spectrum не сохранялись как «звук» в привычном смысле — это была цифровая модуляция, где биты превращались в последовательность электрических импульсов, а магнитофон фиксировал их как переменное намагничивание ленты.

Базовая схема преобразования

Процесс шёл по цепочке: байты программы → битовые последовательности → временные интервалы (импульсы) → аналоговый аудиосигнал → намагниченность ленты.

Как именно кодировались биты

В стандартном протоколе ZX Spectrum (его часто называют «стандартной загрузкой») использовали частотно-импульсную кодировку на основе длительности импульсов:

Бит «0» кодировался короткой последовательностью: два импульса общей длительностью примерно 855 тактов процессора Z80 (это около 217 микросекунд при частоте 3,5 МГц). Бит «1» кодировался длинной последовательностью: те же два импульса, но общей длительностью примерно 1710 тактов (примерно 434 микросекунды). На практике это выглядело как чередование «коротких» и «длинных» пачек прямоугольных импульсов. Магнитофон превращал эти импульсы в переменное напряжение, а головка намагничивала ленту в соответствии с этим сигналом.

Структура блока данных на ленте

Данные не шли сплошным потоком: они разбивались на блоки с чёткой структурой:

Синхро-тон (Pilot tone) — длинная последовательность импульсов (обычно 1963 импульса), которая позволяла магнитофону и Spectrum «поймать» скорость ленты и синхронизировать тактовый генератор.
Заголовок (Header) — блок с информацией о типе и имени файла (например, программа, массив, блок кода), его длине и контрольной суммой.
Данные (Data block) — собственно тело программы или данных.
Контрольная сумма (Checksum) — байт, который вычислялся как XOR всех байтов в блоке. Если при чтении контрольная сумма не совпадала, Spectrum выдавал ошибку R Tape loading error. 

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

Физическая запись и чтение

На ленте данные хранились как переменная намагниченность вдоль дорожки. Короткие и длинные импульсы создавали участки с разной частотой чередования полюсов. При чтении головка наводила в катушке слабый переменный ток, который усиливался и превращался в прямоугольные импульсы. Электроника Spectrum измеряла длительность импульсов и сопоставляла их с шаблонами для «0» и «1», восстанавливая исходный поток битов.

Нюансы и усложнения

  • Нестандартные скорости. Многие игры использовали ускоренную загрузку: длительность импульсов уменьшали, чтобы сократить время загрузки (иногда в 2–3 раза). Это усложняло копирование и требовало точной настройки скорости магнитофона. 
  • Защиты от копирования. Разработчики применяли нестандартные форматы: меняли длительность синхро-тона, чередовали блоки с разной скоростью, добавляли «мусорные» импульсы. Для эмуляторов это привело к появлению формата TZX, который хранит не просто аудио, а точную временную последовательность импульсов.  
  • Форматы образов. Сегодня эти данные хранят в файлах: .TAP — хранит поток импульсов как последовательность длительностей, подходит для «обычных» записей. .TZX — более точный формат, который сохраняет все нюансы временных интервалов, нестандартные скорости и защиты.

Пример простой логики кодирования

Допустим, у нас есть байт 0b10110001 (в шестнадцатеричном виде — B1). Он превратится в последовательность импульсов:

1 → длинный импульс (1710 тактов) 0 → короткий импульс (855 тактов) 1 → длинный 1 → длинный 0 → короткий 0 → короткий 0 → короткий 1 → длинный Spectrum считывает эти длительности, восстанавливает биты, собирает их в байты и проверяет контрольную сумму.

Как распространялись программы

В эпоху реального Spectrum софт распространялся разными способами: 

  • Аудиокассеты: основной носитель. Запись представляла собой звук, который интерпретировался как последовательность байтов. Время загрузки игры — 3–5 минут.
  • Картриджи: для ZX Microdrive и Interface 2. Стоили дороже лент, а картриджи иногда были ненадёжными.
  • Дискеты: появились после выхода ZX Spectrum. В период с 1987 по 1997 год вышло более 1000 таких дисков.
  • Журналы и книги: небольшие программы на Sinclair BASIC часто печатали в них в виде исходного кода — читатель набирал его вручную и сохранял на кассету.

Были зафиксированы случаи передачи программ с помощью радиолюбительских станций. (прообраз wi-fi).

Запись - Чтение на  Atari 400/800

Запись программ и данных на аудиокассету в Atari 400/800 — это не просто «звук», а строго регламентированный цифровой протокол, заточенный под архитектуру этих компьютеров.

Аппаратная часть: как всё подключалось
Для работы с кассетами использовали Atari Program Recorder (например, модели C80 или CX-100) — это был не обычный бытовой магнитофон, а устройство, специально адаптированное под компьютер. Его подключали к SIO‑порту (Serial Input/Output) — фирменному последовательным интерфейсом Atari.

Ключевые особенности подключения:

  • Двунаправленная передача: компьютер не только считывал данные с ленты, но и управлял магнитофоном (команды Play, Rewind, Stop и т. д.) через тот же кабель. 
  • Синхронизация: SIO-контроллер точно знал, когда лента движется, и мог подстраивать тайминги чтения под реальную скорость. 
  • Калибровка: перед загрузкой компьютер посылал тестовые импульсы, чтобы определить точную скорость ленты и компенсировать «плавание» оборотов двигателя.

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

В отличие от ZX Spectrum, где бит кодировался длительностью импульса, Atari использовала частотную манипуляцию (FSK) — то есть разные биты представляли собой сигналы разной частоты.

«0» кодировался частотой примерно 5600 Гц. «1» кодировался частотой примерно 3900 Гц. Эти тона генерировались чипом POKEY (это фирменный звуковой чип Atari, который отвечал и за звук, и за таймеры, и за ввод/вывод). На выходе получалась последовательность чистых тонов, которые магнитофон записывал как переменную намагниченность ленты. Для пользователя это звучало как характерный «писк» при загрузке — именно эти тона и были программой.

Структура данных на ленте

Данные на кассете делились на чёткие блоки, каждый из которых имел свой заголовок и контрольную сумму:

Синхро-блок (Sync) — длинная последовательность одного тона (обычно «0»), которая позволяла магнитофону выйти на стабильную скорость и подготовить электронику к приёму данных.
Заголовок файла (Header) — содержал тип файла (программа, данные, массив), имя файла (до 16 символов), длину файла и адрес загрузки в памяти.
Тело данных (Data) — сами байты программы или данных.
Контрольная сумма (Checksum) — байт, вычисленный как XOR всех байтов в блоке. Если контрольная сумма не совпадала, Atari выдавал ошибку LOAD ERROR.

Процесс загрузки и сохранения

  • Загрузка: Пользователь нажимал CLOAD "ИМЯ" в BASIC. Компьютер отправлял команду магнитофону на запуск воспроизведения. POKEY слушал входной сигнал и измерял частоты: если слышал 5600 Гц — это «0», если 3900 Гц — «1». Биты собирались в байты, проверялась контрольная сумма. Если всё совпадало, программа загружалась в память и была готова к запуску. 
  • Сохранение: Команда CSAVE "ИМЯ" инициировала процесс. Компьютер через POKEY генерировал нужные тона и отправлял их на магнитофон. Одновременно он управлял лентой: включал запись, контролировал скорость, останавливал запись после завершения блока. На ленте оставался тот самый «писк», который позже можно было прочитать обратно.

Практические нюансы и проблемы

  • Скорость ленты не была постоянной.
    Двигатели бытовых магнитофонов имели разброс оборотов, а лента могла растягиваться. Поэтому Atari делал упор на калибровку и проверку контрольных сумм — если данные не совпадали, загрузка прерывалась. 
  • Качество записи
    Сильно зависело от оборудования. Некачественные кассеты, старые головки магнитофона или неправильная настройка уровня записи могли приводить к ошибкам загрузки. 
  • Формат был проприетарным.
    Кассеты от Atari не читались на ZX Spectrum или Commodore — из‑за разных схем кодирования и структуры блоков.

Эмуляция и современные форматы

Сегодня данные с кассет Atari хранят в форматах:

  • .CAS — простой дамп аудиосигнала (как WAV, но часто с пониженной дискретизацией).
  • .ATC — более продвинутый формат, который хранит не просто звук, а последовательность событий (частот и длительностей), что позволяет эмуляторам точно воспроизводить поведение ленты.
    В эмуляторах (например, Altirra) можно не только загружать такие файлы, но и имитировать «плохую ленту» — добавлять шум, джиттер скорости и другие артефакты, чтобы почувствовать, как это было на практике.

Как было организовано аудио процесс записи чтения программ в Commodore

В компьютерах Commodore (PET, VIC‑20, C64 и др.) запись и чтение программ на аудиокассету были организованы через специализированное устройство — Commodore Datassette (модели 1530, C2N, 1531). Это не просто бытовой магнитофон, а периферия, «заточенная» под компьютер: с точным управлением мотором и цифровой схемой кодирования.

Аппаратная организация:

  • Интерфейс: подключение к компьютеру через 6‑ или 7‑контактный DIN‑разъём. По этому кабелю шли: сигнал данных на запись (Data Out), сигнал данных с ленты (Data In), управление мотором (Motor Control), питание. 
  • Управление лентой: компьютер сам включал/выключал мотор, поэтому пользователю не нужно было вручную нажимать Play/Record. Команда в BASIC (LOAD или SAVE) запускала весь процесс. 
  • Калибровка: перед загрузкой компьютер отправлял тестовые импульсы и подстраивал чувствительность входа под уровень сигнала с конкретной кассеты и магнитофона.

Кодирование данных: 

FSK на фиксированных частотах Commodore использовала частотную манипуляцию (FSK): разные биты — разные тона.

  • «0» кодировался примерно 2400 Гц. 
  • «1» кодировался примерно 1200 Гц. 

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

Скорость передачи зависела от модели:

PET: около 600 бод. VIC‑20 и C64: около 300 бод (примерно 37,5 байт/с). Поэтому загрузка программы на 16–20 КБ могла занимать 7–10 минут.

Структура блока на ленте

Данные разбивались на блоки с чёткой служебной информацией:

Синхро‑последовательность — длинный тон (обычно 2400 Гц), чтобы лента успела выйти на стабильную скорость и электроника «поймала» сигнал. Заголовок (Header) — содержал тип файла (программа/данные), имя файла (до 16 символов), адрес загрузки в памяти и длину данных.
Тело данных (Data) — сами байты.
Контрольная сумма (Checksum) — байт, вычисленный как XOR всех байт в блоке. Если при чтении контрольная сумма не совпадала, компьютер выдавал ошибку (например, DATA ERROR). 

На одной кассете могло быть много программ: они шли блоками друг за другом, а компьютер при команде LOAD "ИМЯ" последовательно считывал заголовки, пока не находил нужный.

Процесс записи (SAVE)
Пользователь вводил SAVE "ИМЯ" в BASIC. Компьютер отправлял команду на включение мотора записи. Процессор генерировал последовательность тонов (FSK) согласно структуре блока: сначала синхро‑тон, затем заголовок, данные, checksum. Datassette писал эти тона на ленту. После завершения компьютер выключал мотор.

Процесс чтения (LOAD)
Ввод команды LOAD "ИМЯ" (или LOAD без имени для первой программы). Компьютер включал мотор воспроизведения и начинал слушать входной сигнал. Детектор частот определял, какой тон пришёл (1200 или 2400 Гц) и превращал его в биты. Биты собирались в байты; после каждого блока проверялась контрольная сумма. Если всё совпадало, данные загружались в память по указанному адресу. На экране появлялись сообщения: SEARCHING → LOADING → READY.

Практические особенности и проблемы

  • Чувствительность к уровню записи.
    Если уровень был слишком низким — ошибки чтения; слишком высоким — перегрузка и искажение частот. Пользователям нередко приходилось подбирать уровень вручную. 
  • Скорость ленты.
    Нестабильные моторы бытовых магнитофонов и растяжение ленты приводили к «джиттеру» (плаванию частоты), из‑за чего детектор начинал ошибаться. 
  • Совместимость.
    Кассеты, записанные на Datassette, не всегда читались на обычных бытовых магнитофонах, и наоборот: бытовые ленты часто не подходили из‑за неправильной настройки уровней и отсутствия точного управления мотором. 
  • Защита и ускорение.
    Некоторые программы использовали нестандартные скорости или изменённые форматы блоков, чтобы усложнить копирование.

Современные форматы и эмуляция

Сегодня данные с кассет Commodore хранят в форматах:

  • .TAP — последовательность длительностей импульсов (наиболее распространён для эмуляции).
  • .T64 — более сложный формат, включающий метаданные и иногда эмуляцию «шума» ленты. В эмуляторах (VICE и др.) можно загружать такие файлы, а также имитировать «плохую ленту» — добавлять шум, джиттер, пропуски — чтобы почувствовать, как это выглядело в реальности.

Как был организован процесс чтения записи в компьютерах HP 9800-серия (1968–1972)

Серия HP 9800 — это интересно тем, что в ней использовались два совершенно разных подхода к записи на магнитную ленту. Ранние модели (9821A, 9830A) работали с обычными компакт-кассетами, но записывали данные не как звук, а напрямую в цифровом виде. Позже HP совместно с 3M разработала собственный формат мини-картриджей DC-100/DC-200, который стал стандартом для старших моделей серии.

Ранние модели: HP 9821A и 9830A — цифровая запись на обычные кассеты HP 9821A (1972) и HP 9830A (1972) использовали кассеты того же форм-фактора, что и стандартные бытовые аудиокассеты — но это единственное, что их роднило. Запись была полностью цифровой, без частотной манипуляции (FSK) или другого звукового кодирования.

Аппаратная организация

  • Механизм без капстана. В отличие от бытовых магнитофонов, лента двигалась не прижимным роликом, а каждым сердечником катушки отдельно. Скорость ленты менялась по мере намотки: обороты ведущей катушки были постоянны, а линейная скорость зависела от диаметра намотки.  
  • Три скорости: быстрая (перемотка и поиск), нормальная (чтение/запись) и медленная (старт в зоне лидера).  
  • Двухдорожечная односторонняя запись. Каждая дорожка занимала половину ширины ленты, так что стандартные стерео- или моно-головки бытовых магнитофонов были несовместимы. 
  • Прозрачные лидеры на концах ленты для оптического определения начала и конца, что исключало разматывание.  
  • Полностью программное управление. Компьютер сам запускал и останавливал ленту, искал файлы по номеру — пользователь не нажимал Play или Record вручную.  Кассеты, записанные на HP 9821A, могли читаться на HP 9830A.  

Как это отличалось от домашних ПК

ZX Spectrum, Commodore, Atari записывали на кассету звуковые тона (FSK или импульсная модуляция), которые обычный магнитофон воспроизводил как писк. HP 9821A/9830A записывали цифровой сигнал напрямую — магнитные переходы на ленте соответствовали битам, а не звуковым частотам. Поэтому такую кассету нельзя было прочитать на обычном аудиомагнитофоне.

Поздние модели: DC-100/DC-200
Модели 9815 (1975), 9825 (1976), 9835 и 9845 перешли на мини-картриджи DC-100, которые HP разработала совместно с 3M. Это был совсем другой формат — маленький пластиковый картридж размером 63 × 83 × 13 мм с лентой шириной 0,15 дюйма.

Физическая организация картриджа

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

Кодирование данных: фазовая модуляция

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

Ключевые параметры записи: 

  • Плотность: 800 бит на дюйм (800 bpi) 
  • Скорость чтения/записи: 10 дюймов в секунду 
  • Скорость передачи данных: 1000 байт в секунду (125 микросекунд на бит) 
  • Скорость перемотки: 60 дюймов в секунду 
  • Две дорожки на ленте, читаемые поочерёдно

Фазовая модуляция была выбрана потому, что она самосинхронизирующаяся — декодер может восстановить тактовую частоту из самих данных, что критично при нестабильной скорости ленты (flutter) в ременном приводе.

Структура данных на ленте

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

ПолеРазмерНазначение
Preamble4 байта3 байта нулей + 1 байт octal 200 — для синхронизации фазовой автоподстройки декодера
Header2 байтаКоличество байтов данных в теле записи
Body1–256 байтСами данные (ASCII-символы или бинарные)
Checksum1 байтБинарная сумма всех байтов данных для проверки целостности
Postamble4 байтаЗеркальное отражение preamble — для синхронизации при чтении в обратном направлении

Между записями находились межзаписные промежутки (gaps) — участки стёртой ленты. Файлы дополнительно маркировались специальными файловыми метками (file marks).

Процесс записи

  1. Программа (например, STORE "TEMP:T15") инициировала запись. 
  2. Компьютер проверял, что защита от записи снята. 
  3. Контроллер ленты (в 9845 — специализированный чип TACO, 14 000 транзисторов NMOS) кодировал данные в фазовую модуляцию и управлял двигателем.  
  4. Двигатель вращал приводной ролик картриджа, ремень передавал движение на катушки. 
  5. Головка записи намагничивала ленту в соответствии с потоком данных. 
  6. После каждой записи автоматически выполнялась верификация — компьютер перечитывал записанное и проверял контрольную сумму.  
  7. При ошибке — повторная попытка чтения записи.

Процесс чтения

  1. Команда LOAD, GET или CAT запускала мотор. 
  2. Декодер отслеживал переходы магнитного потока на ленте, восстанавливая тактовую частоту через систему фазовой автоподстройки (phase-lock loop).  
  3. Preamble каждой записи синхронизировал декодер. 
  4. Биты собирались в байты, проверялась контрольная сумма. 
  5. При необходимости компьютер мог искать файлы по имени или номеру, перематывая ленту вперёд или назад.

Управление: чип TACO

В модели 9845 контроллер ленты был реализован в виде чипа TACO (Tape Controller) — заказной NMOS-микросхеме с 14 000 транзисторов. Он заменил 48 корпусов TTL MSI и 80 дискретных компонентов. TACO брал на себя: 

  • цифровое сервоуправление двигателем (поддержание постоянной скорости),
  • обнаружение межзаписных промежутков (gap detector),
  • кодирование/декодирование фазовой модуляции,
  • интерфейс с шиной ввода-вывода компьютера. 

Интересно, что TACO имел специальный режим для чтения кассет в формате HP 9825 (старая модель) на HP 9845 — HP заложила его в чип, но сама никогда не использовала. Этот режим был обнаружен и задействован лишь энтузиастами в наше время для архивирования старых лент.

Главная идея, которая отличала HP 9800 от домашних ПК — лента была полноценным массовым накопителем, а не «последним средством сохранить программу». Компьютер управлял ей сам, данные были организованы в файлы с именами, а контроль целостности и верификация были встроены в аппаратуру. Это была технология, которую HP перенесла из мира миникомпьютеров в настольные системы — и она существенно опережала то, что позже делали Commodore, Atari или Sinclair.

01:20
47