Бейсик Вильнюс
Бейсик Вильнюс (также известен как BASIC-86) — реализация языка программирования Бейсик для 16-разрядных домашних и учебных компьютеров с процессорами архитектуры PDP-11. Первоначально разработан в вычислительном центре Вильнюсского государственного университета (ВЦКП ВГУ) в 1985 году. Использовался на компьютерах: ДВК, БК-0010/БК-0011, УКНЦ, Немига.
Бейсик Вильнюс | |
---|---|
Класс языка | алгоритмическое, процедурное |
Тип исполнения | Интерпретатор компилирующего типа |
Появился в | 1985 |
Расширение файлов |
.BAS, COD |
Система типов | нестрогая |
Испытал влияние | MSX BASIC |
По-видимому, Бейсик Вильнюс был разработан под сильным влиянием MSX BASIC: совпадают названия большинства операторов и функций, а также коды сообщений об ошибках. Но в Бейсик Вильнюс нет возможности записи нескольких операторов в одной строке, нет оператора PLAY
, отсутствуют операторы задания типа переменных DEFINT, DEFDBL и др., а также и некоторые другие возможности. Изображение символа с кодом 36, которое в кодировке ASCII соответствует символу доллара ($), заменено на обобщённый символ валюты (¤), поэтому все строковые переменные и функции со строковым результатом пишутся через ¤, например MID¤
.
Исполнение
При запуске программы командой RUN
происходит компиляция программы в промежуточный, так называемый шитый код. Шитый код, по сути, представляет собой последовательность адресов вызова подпрограмм и данные для вызовов. При этом транслятор перед исполнением программы переводит все числа во внутренне представление и все выражения — в обратную бесскобочную запись. При выполнении программы исполняющая система производит вызовы указанных подпрограмм и передаёт им подготовленные данные. Таким образом, шитый код выполняется быстрее, чем обычная интерпретация (поскольку при исполнении программы не тратится время на «распознавание» чисел и имён переменных, на преобразование выражений и т. д.), но медленнее, чем программа в машинном коде, полученная на выходе настоящего компилятора.
Взгляд на язык
Пример простейшей программы:
10 CLS 20 PRINT "Всем привет!" 30 END
Программа состоит из набора нумерованных строк, в каждой строке записывается один оператор. Работа по редактированию текста программы происходит в режиме командной строки. Команды:
RUN
— запуск программы на выполнениеCONT
— продолжение работы программы после остановкиCSAVE
,CLOAD
— запись/чтение программы на магнитную ленту и с неё, расширение файла.COD
; командаFIND
позволяет найти файл, записанный на магнитную лентуLIST
— вывод текста программы на экран;LLIST
— печать листинга на принтер.
— вызов строки на редактированиеDELETE
— удаление строкNEW
— удаление всей программыRENUM
— перенумерация строкAUTO
— ввод программы с автонумерацией строкBSAVE
,BLOAD
— запись/чтение блока памяти на магнитную ленту и с неёMONIT
,SYSTEM
— выход из Бейсика в системный монитор
Операторы языка:
BEEP CALL CIRCLE CLEAR CLOSE CLS COLOR DATA DEF DEF FN DEF USR DIM DRAW END FOR GOSUB GOTO IF INPUT KEY LET LINE LOCATE LPRINT ON OPEN OUT NEXT PAINT POKE PRESET PRINT PSET READ REM RESTORE RETURN SCREEN STOP TROFF TRON
Есть возможность при вводе сокращать операторы до трёх символов (например: CIRCLE
можно сократить до CIR
), а некоторые, первые два символа которых не совпадают ни с одним другим оператором — до двух (POKE
— PO
). Команду PRINT
можно заменять знаком ?
. Также есть возможность использовать цепочную конструкцию IF
— THEN
— ELSE IF
, пользуясь при этом сокращениями TH
, EL
и ELIF
.
При этом максимальная длина одной строки программы ограничивается 254 символами.
Функции:
SQR SIN COS TAN ATN PI EXP LOG ABS FIX INT SGN RND FRE CINT CSNG CDBL PEEK INP BIN¤ OCT¤ HEX¤ CHR¤ ASC LEN STRING¤ INKEY¤ STR¤ VAL MID¤ CSRLIN POS LPOS EOF POINT
Бейсик Вильнюс включает в себя возможности вызова подпрограмм в машинном коде. Для этого используется конструкция DEF USR
. Машинный код может загружаться командой BLOAD
либо формироваться оператором POKE
.
Среди недостатков этого бейсика — отсутствие ряда команд, например, INSTR
для поиска вхождения строки в строку, DEC
для перевода 16-й числа в 10-е, средств для работы с ошибками во время исполнения программы, команды для посимвольного ввода из файла.
Варианты
Бейсик Вильнюс для БК-0010/БК-0011 занимает 24 КБ ПЗУ. В целях экономии памяти тексты ошибок не были зашиты в ПЗУ; ошибки выдаются не текстом, а кодами, например: «Ошибка 2 в строке 10».
Для БК-0010 с Фокалом в ПЗУ была создана упрощённая версия вильнюсского Бейсика размером всего 9 КБ, загружаемая в ОЗУ с магнитофона (первый вариант — в 1985 г, второй — в 1987-м). Она не поддерживала разные типы чисел (только вещественные одинарной точности), а также часть операторов и функций основной версии, но базовый набор возможностей Бейсика был реализован. При этом версия 87-го года допускала использование нескольких операторов в одной строке, а также сокращённое до одной или нескольких первых букв написание операторов. Кроме того, использование вещественной арифметики одинарной точности ускоряло работу с вещественными числами в несколько раз относительно версии для БК-0010-01 в ПЗУ, что делало версию в ОЗУ действительно чрезвычайно быстрой реализацией Бейсика при работе с переменными этого типа.
Существует три варианта Бейсик Вильнюс для УКНЦ — версия в кассете ПЗУ занимает 24 КБ, версия для загрузки через сеть (сетевая) — 28 КБ, дисковая версия — 30 КБ. Дисковая и сетевая реализации отличаются наличием текстовых сообщений об ошибках. Последние варианты датируются сентябрём 1988 года.
Адаптация Бейсик Вильнюс для компьютера Немига по-видимому выполнена позже и уже в Белоруссии. Сам язык отличается наличием оператора PLAY
, позволяющего проигрывать звуки и мелодии.
Интересные факты
- В Бейсик-Вильнюс использовался популярный в то время алгоритм генерации случайных чисел RANDU, и пользователями БК был замечен существенный недостаток алгоритма[1] — например, при отрисовке большого количества точек, координаты которых получены функцией
RND()
, было хорошо видно разделение точек по диагональным плоскостям. - Скорость работы с графикой в Бейсике БК (рисование линий, окружностей, закраска и т. д.) была сравнительно невысокой, из-за чего, несмотря на наличие быстрого «полукомпилятора», в графических тестах на Бейсике БК уступал многим ПК, аналогичным по цене и скорости процессора[2].
Литература
- Программное обеспечение микроЭВМ «Электроника БК-0010». Язык «Бейсик». Описание языка. — ВЦ Вильнюсского госуниверситета, 1985. — 95 с. Архивная копия от 5 декабря 2014 на Wayback Machine
- Программное обеспечение комплекса вычислительного учебного «Электроника МС 0202». Бейсик. Описание языка. — 1987. — 98 с.
- Авсеев В., Авсеев А. Особенности транслятора с языка Бейсик для БК-0010.01 // Информатика и образование. — 1990. — № 2. — С. 42—46.
- Митрюхин В. К., Донской А. Н., Михайлов А. В., Немов А. М. Программирование на БК-0010-01. — Чебоксары: РИО Чебоксарской типографии №1, 1993. — 1993 с.
Примечания
- М. Максимов. Случайны ли случайные числа? — Журнал «Наука и жизнь», № 10, 1986.
- https://www.youtube.com/watch?v=UJZpngjvCD8&list=PLiWLTRSJ9VmvBQHIEDEX6q8urb6Eqikwd&index=15 УКНЦ: дополнение к тесту неигровой графики ПК 80-х годов