БАЗИКОД - BASICODE

Заявление BASICODE « Эсперанто для компьютеров» из восточногерманского издания Radio fernsehen elektronik .

BASICODE был компьютерным проектом, предназначенным для создания единого стандарта для языка программирования BASIC . BASIC был доступен на многих популярных домашних компьютерах , но было бесчисленное множество вариантов, которые были в основном несовместимы друг с другом. Проект был инициирован в 1980 году радиопрограммой Hobbyscoop голландской вещательной организации Nederlandse Omroep Stichting (NOS).

Базовой реализацией были служебные приложения для конкретной архитектуры, которые выполняли вызовы подпрограмм для текста, звука и звука, определенных в языковом стандарте BASICODE, в соответствии с возможностями рассматриваемого компьютера. Эти приложения, называемые Bascoders , также позволяли обмениваться данными и программами на разных компьютерных платформах, определяя формат данных для компакт-кассет , которые регулярно использовались в качестве носителей информации в 1980-х годах. Программа BASICODE, хранящаяся на кассете, может быть загружена и запущена на любом компьютере, поддерживающем этот язык. По этой причине BASICODE часто называли « эсперанто для компьютеров».

БАЗИКОД

Ситуация начала 1980-х гг.

Коммодор 64
Atari 800 XL

С конца 1970-х до конца 1980-х домашние компьютеры на базе 8-битных процессоров были очень популярны. Среди наиболее известных моделей были TRS-80 от Tandy , PET 2001 , VIC-20 , C64 , C128 и Plus / 4 от Commodore , Atari 400/800 (XL / XE) , компьютеры Sinclair Research ( ZX80 , ZX81 , ZX Spectrum ) и семейство KC85 популярной в германской Демократической Республике . Все эти компьютеры имели ЦП типа MOS Technology 6502 или Zilog Z80 , от 16 до 64 килобайт ОЗУ , разъемы для кассетного привода или встроенный для хранения данных и, наконец, интерпретатор BASIC, который обычно хранился в ПЗУ . Плоская кривая обучения BASIC, который был разработан с учетом новичков в программировании, и мгновенная доступность языка на всех этих компьютерах привели к тому, что многие пользователи писали и делились своими собственными программами.

Проблема заключалась в том, что совместное использование программ и данных на компьютерах разных производителей было затруднено, потому что различные диалекты BASIC были полностью несовместимы в некоторых областях. Они использовали разные команды BASIC для выполнения одного и того же действия (например, очистку экрана, рисование пикселя или воспроизведение звука), так что программа BASIC, написанная для C64, не работала на Atari XL без изменений, и наоборот. Другая трудность заключалась в том, что, хотя эти компьютеры были похожи, они все же различались по ключевым аппаратным аспектам, таким как разрешение экрана, доступная цветовая палитра или возможности звука. Наконец, форматы данных, используемые для хранения данных на кассете, также были несовместимы.

Первый стандарт

Sinclair ZX Spectrum

Примерно в 1980 году голландская телекомпания NOS начала передавать компьютерные программы по радио. Поскольку программы и данные хранились в виде аудио на компакт-кассетах, такую ​​трансляцию можно было записать на ленту и позже загрузить в компьютер. Однако из-за проблем, упомянутых ранее, программу пришлось адаптировать практически ко всем популярным типам компьютеров, а также многократно транслировать. Поскольку компакт-кассета имеет очень низкую плотность данных по сравнению с сегодняшними носителями, запись программ заняла довольно много времени, и только ограниченное количество программ могло транслироваться за одно шоу. Так что дополнительная трансляция разных версий одних и тех же программ была большим неудобством.

В 1982 году руководство NOS решило разработать единый формат данных. Приложение Bascoder , предназначенное для каждой модели компьютера, управляло вызовом и хранением программ и данных в этом унифицированном формате с ленты. Баскодеры также транслировались NOS, но их также можно было купить у NOS на кассете и поделиться ими между друзьями и знакомыми. Формат, который был очень хорошо защищен от помех, мог быть прочитан и записан всем популярным домашним компьютерным оборудованием. Устойчивость формата также сделала возможным вещание через средневолновое радио, что увеличило диапазон и, в свою очередь, количество потенциальных пользователей. Например, данные, передаваемые голландской радиостанцией Hilversum, можно было принимать на большей части территории Германской Демократической Республики .

БАЗИКОД 2

ZX81
Яблоко II

Стандарт решил одну из вышеупомянутых проблем - несовместимые форматы данных. Однако программы все равно пришлось адаптировать к БЕЙСИК-диалекту каждого компьютера и возможностям оборудования. Ограничение программ только использованием инструкций, общих для всех диалектов, означало большие ограничения с точки зрения функциональности, например, полное воздержание от использования графики и звука и только неудобные методы ввода данных с помощью клавиатуры и управления выводом символов на экран. По этой причине в 1984 году был создан расширенный стандарт BASICODE 2. Bascoders, использующие этот стандарт, не только содержат процедуры для ввода и вывода данных на ленту. В дополнение к набору из примерно 50 команд, функций и операторов BASIC, которые были общими для всех диалектов BASIC, в языковом стандарте BASICODE 2 была определена библиотека подпрограмм, которые имитировали одинаковые возможности на всех поддерживаемых компьютерах.

Для этого все программные строки ниже 1000 были зарезервированы для Bascoder, а программы BASICODE могли запускаться только со строки с номером 1000. Подпрограммы Bascoder в строках ниже 1000 вызывались с помощью команды GOSUB . Необходимые аргументы были переданы Bascoder с использованием специальных предопределенных переменных, которые были зарезервированы для использования Bascoder. Стандарт содержал ряд дополнительных правил, которые были необходимы из-за ограничений некоторых моделей компьютеров. Например, на ZX-81 строка кода могла содержать только одну команду BASIC, поведение, которое почти не разделял ни один другой компьютер. На компьютере серии KC длина строки кода не может превышать 60 символов. Эти ограничения должны были применяться ко всем программам BASICODE, чтобы гарантировать независимость от платформы, потому что Bascoder интерпретировался тем же компьютерным интерпретатором BASIC, что и сама программа BASICODE.

Таким образом, Bascoders загружались на различные компьютеры как обычные программы и впоследствии обеспечивали дополнительные процедуры для общего стандарта и кассетного ввода-вывода. Программы, написанные на BASICODE, можно было использовать только после загрузки и запуска Bascoder. Однако на некоторых компьютерах программы BASICODE могут быть объединены с подпрограммами Bascoders и сохранены в собственном формате данных. Полученная программа больше не была независимой от платформы, но из-за более высокой плотности данных большинства собственных форматов ее можно было загружать намного быстрее, чем ту же программу в формате BASICODE. Кроме того, поскольку для запуска программы не было необходимости загружать весь Bascoder, во время выполнения оставалось доступным больше оперативной памяти.

Существовали BASICODE 2 Bascoders для Exidy Sorcerer , Color Genie , Commodore PET , VIC-20 , C64 , Amiga , Sinclair ZX81 , ZX Spectrum , QL , Acorn Atom , BBC Micro , Electron , Tandy TRS-80 , MSX , Oric Atmos , P2000T , Grundy NewBrain , Amstrad CPC , IBM PC , Apple II , Texas Instruments TI-99 / 4A , Mattel Aquarius и другие. Кроме того, опытные пользователи могли написать свой собственный Bascoder для выбранной ими системы, поскольку языковой стандарт и формат данных были открытыми и хорошо документированными. Стандарт BASICODE 2 сделал возможной разработку платформенно-независимых программ с расширенными (на то время) возможностями. Кроме того, BASICODE использовался для передачи и обмена такой информацией, как новости компьютерной сцены, по радио в форме так называемых «журналов». Таким же образом были переданы учебник по кодированию BASICODE и другая документация.

БАЗИКОД 3 / 3C

В 1986 году был разработан новый стандарт BASICODE 3. Наиболее важными дополнениями были процедуры для простой монохромной графики, чтения и записи данных из программ и вывода звука. BASICODE 3 сделал BASICODE популярным на компьютерной сцене ГДР, и с 1989 года программы BASICODE передавались по радио по всей ГДР. Также была издана книга, в которую вошли виниловые пластинки с баскодерами для всех компьютеров, распространенных в ГДР. Последняя версия BASICODE, в которой использовалась цветная графика, была выпущена как BASICODE 3C в 1991 году.

Конец BASICODE

Примерно с 1990 года популярность BASICODE быстро снизилась из-за появления 16- и 32-разрядных компьютеров, особенно вариантов IBM-PC и совместимых систем. Несмотря на то, что для этих машин были Bascoders, BASICODE был слишком ограничен, чтобы использовать ресурсы, предоставляемые компьютерами того поколения. Кроме того, из-за гораздо меньшие число общих архитектур в 16- и 32-битной эре, основная причина развития и использование BASICODE стала спорной. По мере того, как аппаратное и программное обеспечение новых систем становилось все более и более сложным, большинство пользователей становилось неспособным или не склонным писать программы. Распространение графических пользовательских интерфейсов привело к падению популярности 8-битных компьютеров, а следовательно, и BASICODE.

Преемник государственного вещателя ГДР, Deutschlandsender Kultur (который позже стал частью нового Deutschlandradio ), продолжал транслировать программы BASICODE примерно до 1992 года. Запланированный стандарт под названием BASICODE 4 так и не стал реальностью, потому что NOS прекратил поддержку проекта вскоре после BASICODE. Был выпущен 3C. BASICODE до сих пор используется энтузиастами, в частности фанатами 8-битных компьютеров, для ностальгической ценности, но не имеет никакого практического значения.

Историческая значимость

BASICODE был ранней попыткой создания стандарта для обмена программами и данными между несовместимыми архитектурами домашних компьютеров. Это примерно современно стандарту MSX, разработанному Microsoft , который определяет общую аппаратную платформу в дополнение к общему диалекту BASIC. Эти компьютеры продавались несколькими компаниями и напрямую конкурировали с другими популярными домашними компьютерами. MSX имела успех в основном на внутренних рынках производителей, например в Японии , Южной Корее , Нидерландах и Бразилии . В отличие от MSX, BASICODE определял не аппаратное обеспечение, а языковой стандарт для языка программирования BASIC, который был почти повсеместным на домашних компьютерах, плюс формат данных для компакт-кассет, который можно было читать и записывать на всех компьютерах, для которых был доступен BASICODE. В результате реализация BASICODE зависела исключительно от дополнительного программного обеспечения и, таким образом, не ограничивалась компьютерами конкретных производителей. Установленная база из BASICODE трудно оценить, потому что оба Basicoders и программа , написанная в BASICODE были свободно доступны. Bascoder стоял почти на каждом домашнем компьютере, проданном в то время. С коммерческой точки зрения, BASICODE не имел никакого значения, потому что он всегда распространялся бесплатно.

Следует отметить, что BASICODE изначально не мог использовать возможности хост-компьютеров в полной мере. Стандарт языка, определенный BASICODE, был наименьшим общим знаменателем всех соответствующих компьютерных систем. От этой концепции частично отказались только в BASICODE3 / 3C, так как некоторые компьютеры или варианты компьютеров, такие как ZX80 / ZX81 и KC87, не поддерживали графику и цвет, а новые разделы BASICODE, использующие эти возможности, на них не могли использоваться. BASICODE явно уступал программам, написанным на «родном» BASIC или машинном коде, особенно для приложений, которые полагались на время, графику или звук, например видеоигры . Сильные стороны BASICODE были в области разработки приложений, программного обеспечения для обучения и обмена данными. Формат BASICODE также использовался для программ на языке Pascal . Паскаль был гораздо более согласованным языком во всех системах, но компиляторы были доступны только для очень немногих типов домашних компьютеров.

Базовая концепция BASICODE, которая представляет собой определение языкового стандарта для независимой от платформы разработки программного обеспечения и реализацию указанного стандарта в качестве системно-зависимых сред выполнения (Bascoder), была позже пересмотрена в языке программирования Java в форме операционной системы. -специфические виртуальные машины Java, которые выполняют программы Java. Кроме того, распределение данных и информации в формате данных BASICODE напоминает текущие типы документов, не зависящие от платформы, такие как Portable Document Format (PDF) и необходимые ему приложения для чтения PDF.

Формат данных BASICODE

Компактная аудиокассета BASICODE, типичный носитель данных BASICODE .

В формате BASICODE запись программ аналогична записи данных. Итак, при записи программ команды читаются и записываются не в виде однобайтовых единиц ( токенов ), а посимвольно.

Блок данных начинается с символа 02 (STX, начало текста) и заканчивается символом 03 (ETX, конец текста). После ETX передается контрольный байт, составленный из предыдущих байтов, включая STX и ETX, путем двоичного сложения (XOR). Символ 0D (десятичное 13) отмечает конец строки во время передачи. Файлы данных, созданные программами, могут использовать все символы в качестве данных и не должны содержать управляющих символов. Они читаются и записываются блоками по 1024 байта.

Каждый байт передается в последовательности «1 стартовый бит - 8 бит данных - 2 стоповых бита». Биты данных отправляются первым с наименьшим значащим битом. Самый старший бит передается в инвертированном виде и всегда равен 0 (передается как 1), поскольку BASICODE использует только символы ASCII . Таким образом, другой способ описать последовательность передачи - «1 стартовый бит - 7 бит данных - 3 стоповых бита». Результирующая избыточность предназначена для максимальной совместимости с различными компьютерами.

Для аудиосигналов используются прямоугольные волны в форме волны 1200 Гц для бита «0» и двух волн 2400 Гц для бита «1», что дает время 1/1200 секунды для каждого бита. Пауза более 1/1800 секунды между волнами отмечает начало байта, делая следующую волну стартовым битом. После стартового бита и перед восемью битами данных следует еще одна пауза продолжительностью не менее 1/1800 секунды. Сигнал 2400 Гц длительностью пять секунд отмечает начало передачи и используется для синхронизации программы чтения. В конце передачи отправляется сигнал 2400 Гц продолжительностью одна секунда.

Теоретическая скорость передачи данных этого формата составляет 1200 бит в секунду. Учитывая передачу трех дополнительных битов на байт данных и паузы до и после стартового бита, это дает полезную скорость передачи данных 102 байта в секунду и около 6 килобайт в минуту.

Декодирование аудиокассет

На современном компьютере аудиокассеты Basicode можно декодировать с помощью минимодема , свободно доступного программного модема. Если кассета была преобразована в файл wav с именем basicode.wav , следующая команда декодирует ее в соответствующие байты данных в файл с именем basicode.txt .

minimodem --rx 1200 -S 1200 -M 2400 --startbits 1 -7 --stopbits 3 -f basicode.wav >basicode.txt

Смотрите также

дальнейшее чтение

  • (на немецком языке) Михаэль Виганд, Манфред Филлинджер : БАЗИКОД. Mit Programmkassette. Ravensburger Buchverlag, Равенсбург 1986, ISBN   3-473-44010-8
  • (на голландском языке) Hermine Bakker, Jaques Haubrich (авторы), Stichting BASICODE (издатель): Het BASICODE-3 boek. 3. Auflage. Kluwer Technische Boeken BV, Девентер / Антверпен 1988, ISBN   90-201-2111-1
  • (на немецком языке) Хорст Фёльц: Basicode mit Programmen auf Schallplatte für Heimcomputer. Verlag Technik, Берлин 1990, ISBN   3-341-00895-0

внешние ссылки