MBASIC является M icrosoft BASIC реализация BASIC для CP / M операционной системы. MBASIC является потомком оригинальных интерпретаторов Altair BASIC, которые были одними из первых продуктов Microsoft. MBASIC был одной из двух версий BASIC, поставляемых с компьютером Osborne 1 . Имя «MBASIC» происходит от имени дискового файла MBASIC.COM интерпретатора BASIC.
Парадигма | императив |
---|---|
Разработано | Microsoft |
Разработчик | Microsoft |
Операционные системы | CP / M |
Веб-сайт | www |
Под влиянием | |
БАЗОВЫЙ |
Среда
Для MBASIC версии 5 требовалась система CP / M с как минимум 28 КБ оперативной памяти (RAM) и как минимум одним дисководом для гибких дисков.
В отличие от версий 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 Binary для плавающей запятой чисел была собственностью реализации, а это означает , что данные могут быть взаимозаменяемыми только с другими программами , используя 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. Это можно было использовать для управления периферийными устройствами, хотя, по крайней мере, в одной общей системе CP / M, Osborne 1, все инструкции ввода / вывода были предварительно загружены для использования системой.
Любые программы MBASIC, которые использовали PEEK
и POKE
и пользовательские функции машинного кода , не переносились между машинами без модификаций.
Преемники MBASIC
Помимо Microsoft BASIC-80 для CP / M, вариант MBASIC был также доступен для операционной системы ISIS-II .
MSX-BASIC также является хорошо известным преемником MBASIC с несколькими расширениями, специфичными для машин MSX .
Все функции CP / M MBASIC были доступны в дисковых BASICA или GWBASIC IBM PC, что сделало возможной миграцию программ с систем CP / M на совместимые с ПК. Токены, используемые для представления ключевых слов, были разными, поэтому программы CP / M приходилось сохранять в исходной форме ASCII. Обычно управляющие последовательности форматирования экрана, помещенные в версию CP / M, заменяются командами позиционирования курсора, имеющимися в версиях BASIC для ПК, в противном случае потребуется небольшая перезапись.
BASCOM
Microsoft продала компилятор CP / M BASIC (известный как 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 не было поддержки для стандартизации возможностей терминала.
- ^ a b «Редакция» . InfoWorld . 1980-08-18. п. 8.
- ^ Пурнель, Джерри (декабрь 1980 г.). «БЕЙСИК, компьютерные языки и компьютерные приключения» . БАЙТ . п. 222 . Проверено 18 октября 2013 года .
- Том Хоган и Майк Яннамико, Справочное руководство пользователя Osborne 1 , (1982) Osborne Computer Corporation
- Дэвид А. Лиен, Справочник BASIC , 2-е издание Энциклопедия компьютерного языка BASIC ", (1981), Compusoft Publishing
- Справочное руководство BASIC 80 , Microsoft Corporation, без даты