]]> ]]>

MBASIC

Реализация языка программирования Basic

MBASIC — это реализация диалекта Microsoft BASIC языка программирования BASIC для операционной системы CP/M, работающий на 8-битных процессорах Intel 8080. MBASIC это потомок оригинального интерпретатора Altair BASIC являющегося одним из первых продуктов компании Microsoft. MBASIC был одной из двух версий BASIC связанных с компьютером Osborne 1. Название “MBASIC” закрепилось за данной реализацией от названия файла интерпретатора BASIC.

Окружающая среда

Версия MBASIC 5 требовала систему CP/M, не менее 28 Кб оперативной памяти (RAM) и дисковод.

В отличие от версий BASIC Microsoft 80, которые настраивались изготовителями домашних компьютеров для использования специфических аппаратных возможностей компьютера, MBASIC полностью полагался на операционную систему CP/M, запрашивая весь ввод и вывод. MBASIC были доступны только консоль CP/M, устройство печати, дисковые устройства.

MBASIC в ненастроенной форме не имел никаких функций для работы с графикой, цветами, джойстиками, мышкой, передачей данных, работы с сетью, звуком и даже функции для работы с часами реального времени. MBASIC на поддерживал в полном объеме возможности операционной системы CP/M, например, он не поддерживал области пользователей CP/M. Так как системы CP/M были однопользовательскими и автономными, не существовало методов блокирования файлов и не могло быть и речи о многозадачном режиме работы. Несмотря на эти ограничения MBASIC считался мощной и полезной реализацией BASIC.

Особенности

MBASIC является интерпретатором. Исходный код программ сохранялся в памяти с заменой ключевых слов BASIC однобайтовыми лексемами, которые сохранялись в памяти и ускоряли исполнение программы. Программы можно было отображать на экране для редактирования или сохранения в сжатом двоичном формате или в ASCII тексте. Каждая линия программы идентифицировалась числом, которое могло использоваться как адресат в команде GOTO. Однако редактирование исходного кода путем перемещения курсора не было доступно из–за ограничений операционной системы.

Исходный код программы, переменные, дисковые буфера и операционная система CP/M должны были совместно использовать 64-килобайтное адресное пространство процессора 8080. Обычно после запуска MBASIC оставалось менее 32 Кб доступных для программы и данных даже на машинах, оборудованных 64 Кб оперативной памяти. Для обеспечения запуска больших и более сложных программ более поздние версии MBASIC поддерживали функции, которые позволили читать и исполнять частями программу (CHAIN и MERGE). Однако так и не была введена поддержка исполнения команд оболочки, однако эта возможность могла быть реализована программистом.

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

Поддерживаемые типы данных MBASIC:

  • 8-битовные символьные данные в строках длиной от 0 до 255 символов
  • 16-битные целые числа
  • 32-битные числа с плавающей точкой (одинарной точности)
  • 64-битные числа с плавающей точкой (двойной точности)

Операции со строками включали извлечение подстроки, соединение строк, присваивание и проверку на равенство.

MBASIC поддерживал массивы до седьмой размерности, но не имел функций для их обработки (например, отсутствовало присваивание массивов).

В отличие от некоторых реализаций BASIC того времени, MBASIC не имел поддержки операций с матрицами, комплексными числами, десятичными числами (BCD) для финансовых операций.

Все операции с числами с плавающей точкой имели программную реализацию, так как система CP/M не имела аппаратных средств работы с числами с плавающей точкой. Встроенные математические функции (синус, косинус, тангенс, десятичный логарифм, экспонента, квадратный корень) обеспечивали результат с одинарной точностью. Генератор псевдослучайных чисел основывался на нажатых клавишах пользователем.

Преимуществом MBASIC были полные сообщения об ошибках, которые предусматривали ошибки синтаксиса и ошибки времени исполнения программы. MBASIC также имел функцию для трассирования программы, которая отображала номера интерпретируемых строк, эта функция была полезна для обнаружения ошибок в логике программы (например, зацикливание).

Порядок работы программы обеспечивался условными операторами IF...THEN... ELSE..., циклами WHILE...WEND, и командами GOTO, GOSUB. Отсутствовал оператор выбора, хотя при помощи ON...GOTO... можно было организовать многоуровневые переходы. Подпрограммы не имели параметров и как следствие все переменные были глобальными. MBASIC не способствовал развитию структурного программирования и было весьма просто написать запутанную программу.

Ранние реализации BASIC имели скудное ограничение в один или два символа в имени переменной, которое ограничивало выбор имени переменной в сложных программах. Версия MBASIC 5 позволяла давать имена переменным длиной до 40 символов длиной, что обеспечивало читаемые названия переменных.

PEEK, POKE и функции пользователя

Ни одно обсуждение BASIC конца 70-ых начала 80-ых не обходилось без обсуждения важности функций PEEK и POKE для прямого чтения/записи участков памяти. Ни одна система того времени не имела защиты памяти, что позволяло программисту обращаться к частям операционной системы или к функциям, к которым не возможно получить доступ иначе. Однако это приводило к неограниченным возможностям программ

Для обеспечения более сложных операций MBASIC позволял определять функции, которые можно было вызывать из программы. Они обычно размещались в зарезервированной области памяти или преобразовывались в строковые константы как последовательность машинных кодов. MBASIC также поддерживал аппаратные команды INP, OUT, которые считывают или записывают аппаратные порты ввода-вывода. Это могло использоваться для работы с периферийными устройствами.

Использование PEEK, POKE и машинных кодов приводило к непереносимости программами.

Наследники MBASIC

Microsoft также продавала компилятор BASIC для CP/M (BASCOM), который имел похожий исходный код как e MBASIC. Программа, отлаженная под MBASIC, могла быть откомпилирована при помощи BASCOM. И так как исходный код программы больше не находился в памяти и элементы времени исполнения компилятора были меньше чем у интерпретатора, то больший объем памяти стал доступен для данных пользователя. Скорость исполнения программ увеличилась на порядок.

Все функции MBASIC для CP/M были доступны в BASICA или GWBASIC на ПК IBM-PC, что уже обеспечивало определенную переносимость программ.

Значение MBASIC

MBASIC являлся весьма значимым инструментом разработки на протяжении всей эпохи 8-битовых компьютеров CP/M. Опытные пользователи могли реализовывать подпрограммы в MBASIC для автоматизирования задач. По крайней мере один компилятор языка высокого уровня был написан на MBASIC и множество игр и утилит объемом от нескольких строк до нескольких тысяч.

Примечание

MBASIC это также название коммерческого компилятора для микроконтроллеров Microchip Technology, который не связан с интерпретатором для CP/M.


Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам