MBASIC
Парадигма | императив |
---|---|
Разработано | Майкрософт |
Разработчик | Майкрософт |
ТЫ | КП/М |
Веб-сайт | www |
Под влиянием | |
БАЗОВЫЙ |
MBASIC — это BASIC в Microsoft BASIC реализация для операционной системы CP/M . MBASIC является потомком оригинальных интерпретаторов Altair BASIC , которые были одними из первых продуктов Microsoft. MBASIC был одной из двух версий BASIC, поставляемых в комплекте с компьютером Osborne 1 . Имя «MBASIC» происходит от имени дискового файла MBASIC.COM интерпретатора BASIC.
Среда
[ редактировать ]Для MBASIC версии 5 требовалась система CP/M с объемом оперативной памяти (ОЗУ) не менее 28 КБ и хотя бы одним дисководом для дискет.
В отличие от версий Microsoft BASIC-80 настраивали , которые производители домашних компьютеров для использования определенных аппаратных функций компьютера, MBASIC полагался только на вызовы операционной системы CP/M для всех операций ввода и вывода. Были доступны только консоль CP/M (экран и клавиатура), построчный принтер и дисковые устройства.
MBASIC в ненастроенной форме не имел функций для графики , цвета, джойстиков, мышей, последовательной связи , сети , звука или даже функции часов реального времени . MBASIC не полностью поддерживал функции хостовой операционной системы CP/M, например, он не поддерживал пользовательские области CP/M для организации файлов на дискете. Поскольку системы CP/M обычно были однопользовательскими и автономными, в них не предусматривалось блокирование файлов или записей или какая-либо форма многозадачности . Помимо этих ограничений, MBASIC в то время считался мощной и полезной реализацией BASIC.
Функции
[ редактировать ]Языковая система
[ редактировать ]MBASIC — интерпретатор . Исходный текст программы хранился в памяти в токенизированной форме, при этом ключевые слова BASIC были заменены однобайтовыми токенами, что экономило место в памяти и ускоряло выполнение. Любая строка с префиксом номера строки сохранялась как текст программы; Операторы BASIC без префикса номера строки выполнялись немедленно как команды. Программы можно было вывести на экран для редактирования или сохранить на диск в сжатом двоичном формате или в виде обычного ASCII текста . Каждая исходная строка была идентифицирована номером, который можно было использовать в качестве цели для передачи GOTO или GOSUB . Предусмотрены только команды редактирования строк. [ 1 ] Часто бывает полезно сохранить программу в виде обычного текста и редактировать ее с помощью полнофункционального редактора.
Текст программы, переменные , дисковые буферы и сама операционная система CP/M должны были использовать 64-килобайтное адресное пространство процессора 8080 . Обычно при первом запуске MBASIC для программ и данных доступно менее 32 КБ памяти, даже на машине, оснащенной полными 64 килобайтами оперативной памяти. Строки комментариев с префиксом REM
ключевое слово или апостроф могли быть помещены в текст программы, но занимали ценное пространство памяти, что не позволяло пользователям BASIC полностью документировать свой код. Чтобы обеспечить запуск более крупных и сложных программ, более поздние версии MBASIC поддерживали функции, которые позволяли считывать части текста программы и выполнять их под управлением программы (« CHAIN
" и MERGE
заявления). Никакой поддержки выполнения команд «оболочки» не было, хотя эту функциональность мог продублировать решительный программист.
Особым преимуществом MBASIC были полнотекстовые сообщения об ошибках синтаксиса и времени выполнения. В MBASIC также была функция «трассировки», которая отображала номера строк по мере их выполнения. Хотя это занимало то же пространство экрана, что и обычный вывод программы, это было полезно для обнаружения таких условий, как бесконечные циклы .
Файлы и ввод/вывод
[ редактировать ]Данные можно было читать и сохранять на диск либо в виде последовательных файлов (с разделением по соглашению CP/M: CR / LF в конце каждой строки), либо в виде файлов произвольного доступа с фиксированной длиной записи, которые, при наличии достаточно решительного программиста, , может использоваться для выполнения манипуляций с записями типа базы данных. Двоичный формат Microsoft для чисел с плавающей запятой был собственностью реализации, а это означало, что данные можно было обменивать только с другими программами, использующими текстовое представление ASCII, или же с помощью расширенного программирования для преобразования двоичного формата.
Переменные и типы данных
[ редактировать ]MBASIC поддерживал следующие типы данных:
- 8-битные символьные данные в строках длиной от 0 до 255 символов;
- 16-битные целые числа ;
- 32-битная плавающая запятая (одинарная точность), эквивалентная шести десятичным цифрам, с двузначным показателем степени;
- 64-битная плавающая запятая (двойной точности), эквивалентная шестнадцати десятичным цифрам, с двузначным показателем степени.
Строковые операторы включали выбор подстроки, конкатенацию, присваивание и проверку на равенство.
Массивы вышеуказанных типов допускались с числом измерений до 7, но с массивами не работали никакие функции или операторы; например, не было присвоения массивов. В отличие от некоторых других реализаций BASIC того времени, MBASIC не обеспечивал поддержку матричных операций, комплексных чисел или десятичного типа данных (BCD) для финансовых расчетов. Все операции с плавающей запятой выполнялись программно, поскольку типичные системы CP/M не имели аппаратного обеспечения с плавающей запятой . Встроенные математические функции ( синус, косинус , тангенс , натуральный логарифм , экспонента , квадратный корень ) давали результаты только с одинарной точностью. программный генератор псевдослучайных чисел Был предоставлен ; при этом пользователь вводил начальное число, чтобы получить последовательность чисел, полезную для игр и некоторых симуляций. MBASIC разрешен, но не требует LET
ключевое слово для операторов присваивания.
Ранние версии BASIC для микрокомпьютеров были печально известны одно- или двухсимвольными именами переменных, из-за чего значения переменных было трудно вспомнить в сложных программах. MBASIC версии 5 допускал идентификаторы длиной до 40 символов, что позволяло программистам давать переменным читаемые имена.
Управление потоком программы
[ редактировать ]Управление потоком программы в MBASIC контролировалось IF...THEN...ELSE...
условные тесты, WHILE...WEND
петли и GOTO
и GOSUB
инструкции. Нет CASE
заявление было доступно, хотя ON...GOTO...
(вычисленный GOTO) обеспечивал многосторонние ветвления. Подпрограммы не имели параметров, и все переменные были глобальными. MBASIC не делал структурное программирование было легко обязательным для программистов, и писать спагетти-код .
PEEK, POKE и пользовательские функции
[ редактировать ]Ни одно обсуждение BASIC на 8-битных компьютерах конца 70-х и начала 80-х не было бы полным без упоминания важности функций PEEK и POKE для непосредственного чтения и записи в память. Поскольку эти системы обычно не имели защиты памяти , это позволяло программисту получить доступ к частям операционной системы или функциям, которые в противном случае были бы недоступны. Это также давало возможность пользовательским программам зависать в системе (обычно случайно). Например, программист CP/M может использовать POKE
функция, позволяющая BASIC переключать консольное устройство на последовательный порт, если BIOS системы поддерживает это. Для машин с часами реального времени предусмотрен набор PEEK
инструкции могли быть использованы для доступа к времени.
Для более сложных операций MBASIC позволял использовать определяемые пользователем функции, которые можно было вызывать из программы BASIC. Обычно они помещались в зарезервированную область памяти или помещались в строковые константы в виде серии машинных кодов ( кодов операций ). MBASIC также предоставила оборудование. INP
и OUT
инструкции, которые считывают и записывают непосредственно в аппаратные порты ввода/вывода 8080. Это можно использовать для управления периферийными устройствами из программы BASIC, если это позволяет аппаратное обеспечение системы.
Любые программы MBASIC, в которых используется PEEK
и POKE
и пользовательские функции машинного кода не переносились между машинами без модификаций.
Преемники MBASIC
[ редактировать ]Помимо BASIC-80 от Microsoft для CP/M, был также доступен вариант MBASIC для операционной системы ISIS-II .
MSX-BASIC также является хорошо известным преемником MBASIC и имеет несколько расширений, специфичных для машин MSX .
Все функции CP/M MBASIC были доступны в дисковой BASICA или GWBASIC IBM PC , что делало возможным миграцию программ из систем CP/M в совместимые с ПК. Токены, используемые для представления ключевых слов, были разными, поэтому программы CP/M приходилось сохранять в исходной форме ASCII. Обычно escape-последовательности форматирования экрана, включенные в версию CP/M, заменяются командами позиционирования курсора, которые есть в версиях BASIC для ПК, в противном случае потребуется небольшая переписывание.
БАСКОМ
[ редактировать ]CP/M BASIC Microsoft продала компилятор (известный как BASCOM ), который использовал исходный язык, аналогичный MBASIC. Программа, отлаженная под MBASIC, может быть скомпилирована с помощью BASCOM. Поскольку текст программы больше не находился в памяти, а элементы времени выполнения компилятора были меньше, чем интерпретатор, для пользовательских данных было доступно больше памяти. Скорость реального выполнения программы увеличилась примерно в 3 раза.
Разработчики приветствовали BASCOM как альтернативу популярному, но медленному и неуклюжему CBASIC . В отличие от CBASIC, BASCOM не нуждался в препроцессоре для исходного кода MBASIC, поэтому его можно было отлаживать в интерактивном режиме. [ 2 ] Недостатком было требование Microsoft взимать гонорар в размере 9% за каждую скомпилированную копию программы. [ 3 ] и 40 долларов за комбинацию аппаратного и программного обеспечения. Компания также оставила за собой право проверять финансовую отчетность застройщиков. Поскольку типичные ставки роялти авторов за программное обеспечение составляли 10–25%, InfoWorld в 1980 году заявила, что дополнительная ставка роялти BASCOM в размере 9% «может сделать разработку программного обеспечения совершенно убыточной», заключив, что «у Microsoft есть техническое решение [недостатков CBASIC], но не экономический». [ 2 ]
Важность MBASIC
[ редактировать ]MBASIC был важным инструментом в эпоху 8-битных компьютеров CP/M. Квалифицированные пользователи могут писать процедуры на MBASIC для автоматизации задач, которые в современных системах выполняются с помощью мощных команд прикладных программ или языков сценариев. Обмен полезными программами MBASIC был обычной функцией групп пользователей компьютеров . Ввод длинных списков BASIC из журнальной статьи был одним из способов «загрузки» программного обеспечения в новую систему CP/M. По крайней мере, один компилятор языка высокого уровня был написан на MBASIC, а также было написано множество небольших игр и служебных программ размером от нескольких строк до нескольких тысяч строк кода.
Другое использование
[ редактировать ]MBASIC — это также название коммерческого компилятора BASIC для Microchip Technology, семейства микроконтроллеров PIC разработанного компанией Basic Micro, Inc. и не имеющего отношения к интерпретатору CP/M.
Ссылки
[ редактировать ]- ^ Продукты CP/M, обеспечивающие поддержку полноэкранного редактирования, требовали собственных процедур установки для настройки программного обеспечения для конкретного компьютерного терминала, используемого в качестве системной консоли. В рамках CP/M не было предоставлено никакой поддержки для стандартизации возможностей терминала.
- ^ Перейти обратно: а б «Редакция» . Инфомир . 18 августа 1980 г. п. 8.
- ^ Пурнель, Джерри (декабрь 1980 г.). «БЕЙСИК, компьютерные языки и компьютерные приключения» . БАЙТ . п. 222 . Проверено 18 октября 2013 г.
- Том Хоган и Майк Яннамико, Справочное руководство пользователя Osborne 1 , (1982) Osborne Computer Corporation
- Дэвид А. Лиен, Справочник по BASIC , 2-е издание Энциклопедии компьютерного языка BASIC», (1981), Compusoft Publishing
- Справочное руководство по BASIC 80 , Microsoft Corporation, без даты