Бейсик Вильнюс

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Бейсик Вильнюс
Класс языка:

алгоритмическое, процедурное

Тип исполнения:

Интерпретатор компилирующего типа

Появился в:

1985

Расширение файлов:

BAS

Система типов:

нестрогая

Испытал влияние:

MSX BASIC

Бейсик Вильнюс (также известен как BASIC-86) — реализация языка программирования Бейсик для 16-разрядных домашних и учебных компьютеров с процессорами архитектуры PDP-11. Разработан в вычислительном центре Вильнюсского государственного университета (ВЦКП ВГУ) в 1985 году. Использовался на компьютерах: ДВК, БК-0010/БК-0011, УКНЦ, Немига.

По-видимому, Бейсик Вильнюс был разработан под сильным влиянием MSX BASIC: совпадают названия большинства операторов и функций, а также коды сообщений об ошибках. Но в Бейсик Вильнюс нет возможности записи нескольких операторов в одной строке, нет оператора PLAY и некоторых других возможностей. Кроме того, изображение символа с кодом 36, которое в кодировке ASCII соответствует символу доллара ($), заменено на изображение общего знака денежной единицы (¤). Поэтому все строковые переменные и функции со строковым результатом пишутся через ¤, например, функция MID$ превратилась в MID¤.

Исполнение[править | править вики-текст]

При запуске программы командой RUN происходила компиляция программы в промежуточный, так называемый шитый код. Шитый код, по сути, представляет собой последовательность адресов вызова подпрограмм и данные для вызовов. Команда кодируется в памяти числом, а параметры команды следуют за ней текстом. При выполнении программы, исполняющая система производит вызовы указанных подпрограмм и передаёт им подготовленные данные. Таким образом, шитый код выполняется намного быстрее чем обычная интерпретация, но в несколько раз медленнее чем программа в машинном коде.

Варианты[править | править вики-текст]

Бейсик-Вильнюс на БК
Бейсик-Вильнюс на УКНЦ

Бейсик Вильнюс для БК-0010/БК-0011 занимает 24 КБ ПЗУ. В целях экономии памяти тексты ошибок не были зашиты в ПЗУ; ошибки выдаются не текстом, а кодами, например: «Ошибка 2 в строке 10».

Существует три варианта Бейсик Вильнюс для УКНЦ — версия в кассете ПЗУ занимает 24 КБ, версия для загрузки через сеть (сетевая) — 28 КБ, дисковая версия — 30 КБ. Дисковая и сетевая реализации отличаются наличием текстовых сообщений об ошибках. Последние варианты датируются сентябрём 1988 года.

Взгляд на язык[править | править вики-текст]

Пример простейшей программы:

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.

Интересные факты[править | править вики-текст]

Иллюстрация недостатков RND()
  • В Бейсик Вильнюс использовался популярный в то время алгоритм генерации случайных чисел RANDU, и пользователями БК был замечен существенный недостаток алгоритма[1] — например, при отрисовке большого количества точек, координаты которых получены функцией RND(), было хорошо видно разделение точек по диагональным плоскостям.

Литература[править | править вики-текст]

Примечания[править | править вики-текст]

  1. М. Максимов. Случайны ли случайные числа? — Журнал «Наука и жизнь», № 10, 1986.

Ссылки[править | править вики-текст]