Вильнюс БЕЙСИК
Парадигма | императивный , алгоритмический |
---|---|
Впервые появился | 1986 год |
Диалекты | |
БЕЙСИК -86, БЕЙСИК-88 | |
Под влиянием | |
MSX БЕЙСИК | |
Под влиянием | |
Никто |

Vilnius BASIC , иногда известный как BK BASIC , представляет собой диалект BASIC языка программирования , работающий на компьютерах Elektronika BK-0010-01/BK-0011M и UKNC . Он был разработан в Вильнюсском университете , расположенном в Литве была республикой Советского Союза , которая в то время .
В отличие от большинства микрокомпьютерных диалектов BASIC той эпохи, которые были интерпретаторами , Vilnius BASIC представлял собой язык компиляции и запуска , который компилировал исходный код, когда пользователь входил в систему. RUN
команда. В остальном он был похож на GW-BASIC и MSX BASIC по стилю и большинству функций, хотя в нем отсутствовали некоторые мультимедийные команды, имеющиеся в MSX. Одна странность заключалась в том, что он не позволял использовать более одного оператора в одной строке — функция, обычно реализуемая с помощью двоеточия. У него также не было возможности открывать более одного файла данных одновременно.
Только версия UKNC имела полноэкранный редактор , версии машин серии 0010 использовали построчный редактор . Машинно-зависимые функции, такие как графические операторы, параметры и PEEK/POKE
адреса также были разными на разных машинах.
Описание
[ редактировать ]Редактирование программы
[ редактировать ]В отличие от большинства диалектов BASIC той эпохи, Vilnius BASIC представлял собой систему компиляции и запуска , а не интерпретатор . Когда пользователь вводит RUN
, компилятор считывает код и создает исполняемый файл многопоточного кода , который затем запускает. Тем не менее, эта деталь была в значительной степени невидима для пользователя, поскольку система по-прежнему позволяла вводить операторы без номера строки для прямого (немедленного) режима или с номером для косвенного режима, и в этом случае новая строка добавлялась в программу. или заменить строку с тем же номером, если она уже существовала.
К концу 1970-х годов большинство диалектов микрокомпьютеров предлагали полноэкранный редактор, в котором пользователь мог использовать клавиши курсора для перемещения по программе и вводить изменения в любую видимую строку кода. Системы Electronica эмулировали PDP-11 , машины, которые были построены в эпоху, когда компьютерные терминалы с курсорной адресацией не были широко доступны, и, таким образом, сохранили старый стиль линейного редактора . В этих системах отображается приглашение, которое позволяет пользователю ввести одну строку кода или вызвать ранее набранную строку, а затем отредактировать ее на месте.
Команды и утверждения
[ редактировать ]Список ключевых слов, поддерживаемых в Вильнюсе, можно разделить на две группы: те, которые можно использовать только в прямом режиме, и те, которые могут быть прямыми или косвенными.
Первые, известные как команды, включали в себя общие CONT, LIST, NEW, RUN
. CLOAD and CSAVE
загружать и сохранять программы на кассету . AUTO
включил автоматический ввод номера строки, RENUM
перенумеровал строки в текущей программе и DELETE
удалил диапазоны строк, используя тот же формат «to», что и LIST, например, DELETE -200
удалит все, от начала программы до включая строку 200.
Примитивы Вильнюса были похожи на другие BASIC той эпохи и поддерживали большинство элементарных утверждений, таких как DATA, DEF FN, DIM, END, FOR..TO..STEP..NEXT , GOSUB , GOTO , IF..THEN с дополнительными ELSE, INPUT, (необязательно) LET, LIST, PRINT, ON...GOTO и ON...GOSUB, ЧТЕНИЕ, REM , ВОССТАНОВЛЕНИЕ, ВОЗВРАТ , СТОП . В отличие от большинства диалектов, в Вильнюсе не разрешалось использовать более одного утверждения в строке.
Числовые переменные, операторы и функции
[ редактировать ]Как и в большинстве диалектов, имена переменных должны были начинаться с буквы, за которыми могли следовать другие буквы или цифры. Имена переменных могли иметь любую длину, но сохранялись или сопоставлялись только первые два символа, а это означает, что ввод PRT001=1
подписан PR=5
в результате в памяти появится одна переменная, известная как PR, со значением 5.
одинарной и двойной точности В Vilnius BASIC было четыре основных типа данных: строки, числа с плавающей запятой и целые числа. Если не указано иное, предполагалось, что переменные имеют двойную точность, хранятся в восьми байтах и обеспечивают точность около 17 цифр. Для сравнения, в большинстве диалектов MS использовался 5-байтовый формат для чисел с плавающей запятой. Если !
был добавлен к имени переменной, значение сохранялось с одинарной точностью, используя четыре байта с точностью около 7 цифр. %
указал целое число, используя одно 16-битное слово для хранения значений от -32768 до +32767. Если значение с большей точностью присваивалось переменной с меньшей, любое лишнее просто отбрасывалось; A%=1.5
приведет к тому, что A% будет иметь значение 1.
Числовые константы в исходном коде также могут быть указаны как определенный тип с использованием тех же индикаторов; 50%
сохранит константу как целое число, 0.05!
или 5E-02
хранит значение одинарной точности 0,05 и 0.05
или 5D-02
сохраняет то же значение в формате двойной точности по умолчанию. Вильнюс также имел дополнительную возможность вводить числовые константы в виде строк двоичных, восьмеричных или шестнадцатеричных символов, добавляя к строке префикс & и одна буква, обозначающая тип: B, O, H. Например, A=&H9A8B
преобразует шестнадцатеричную строку H9A8B в эквивалентное десятичное значение 39563 и сохраняет его в A.
Включены операторы для числовых значений. +, -, *, /, ^
добавление \
для целочисленного деления и MOD
на остаток. Таким образом 5\2
возвращает 2, а 5 MOD 2
возвращает 1. Числовые функции включают стандартные ABS, ATN, COS, EXP, INT, LOG, RND, SGN, SIN, SQR, TAN
. В него также вошли FIX
оператор, аналогичный INT
но всегда усекается до нуля, так что FIX(-1.5)
возвращает -1 вместо -2, как INT.
Помимо PEEK и POKE , которые возвращали 16-битные значения, система также предлагала OUT and INP
, которые были похожи, но применяли к значениям битовую маску , позволяющую устанавливать или очищать отдельные биты. [1] CLS
очистил экран. Системные функции включают в себя FRE
который возвращал объем свободной памяти, и TAB
который переместился в данный столбец. AT (x,y)
работало аналогично TAB, но перемещало курсор в заданное место X,Y.
Струны
[ редактировать ]Добавление к переменной суффикса $
указал, что это строка. Строковые функции включают в себя общие ASC, CHR$, LEN, STR$, VAL
. STRING$
функция создает копии заданной строки шаблона, так что A$=STRING$(17, "X")
создаст строку из 17 X. [2] Включена только одна функция манипуляции, MID$
, который работает как в MS, но также может использоваться для замены символов в существующей строке, MID$(A$,1,1)="Y"
заменит первую букву A$ на Y. INKEY$
возвращает текущую нажатую клавишу на клавиатуре, если таковая имеется. [3] +
использовался для конкатенации строк , как и в большинстве диалектов.
The HEX$, OCT$ and BIN$
функции возвращали строку, кодирующую переданное значение. Например PRINT HEX$(255)
производит FF, в то время как PRINT BIN$(255)
выдаёт 0000000011111111.
Графические дополнения
[ редактировать ]Системы Electronica включали поддержку компьютерной графики , а Vilnius BASIC включал ряд операторов для работы с графикой. Одной интересной особенностью этой системы было то, что координаты X,Y записывались в скобках. Система запоминала последнюю заданную точку, и новые местоположения можно было указывать с помощью значка @
, например, если последняя команда рисования была в (100,100), можно было бы превратить пиксель в (105,105) в цвет 3 с помощью PSET @(5,5),3
. Было пять значений цвета: от 0 до 3.
В дополнение к PSET
, можно было рисовать линии от-до, используя пару координат, разделенных знаком минус, аналогично команде LIST, например LINE (100,100)-(120,120),3
. В своей простейшей форме, CIRCLE
взял пару X,Y для центра, радиуса и цвета, CIRCLE (120,120),30,1
. Он также может строить дуги по заданным начальному и конечному углам в радианах. CIRCLE (120,120),30,1,0,1.5
и может «сжать» вертикальную ось, чтобы создать эллипс, CIRCLE (100,100),20,1,,,0.4
. PAINT (100,100),3,1
выполнил заливку, начиная с (100,100), заполняя цветом 3 и двигаясь наружу, пока не увидел цвет 1.
Наконец, появился многоцелевой DRAW
команда. Для этого потребовалась строка, в которой закодирована серия шагов рисования, которые могли создать сложную фигуру в одной строке кода. Четыре основных направления обозначались буквами U, D, L и R (вверх, вниз, влево, вправо). Углы в 45 градусов были, двигаясь по часовой стрелке, E (вверх-вправо), F, G и H (вверх-влево). Например, DRAW "R20D20L20U20"
создаст квадрат со сторонами длиной 20 пикселей, начиная с последней нарисованной позиции. Помимо направлений, команду M можно было использовать для указания явных координат, например «M100,120», для которых скобки не требовались. C меняет цвет, B перемещается, не рисуя линию, а N сбрасывает координаты до тех, которые были до команды DRAW.
Имеется единственная графическая функция, POINT(x,y)
, который возвращает номер цвета этого места на экране.
Пример программы
[ редактировать ]1 CLS 2 FOR X%=30% TO 1% STEP -2% 3 ? AT(X%,1%);"*" 4 ? AT(X%,20%);"*" 5 NEXT X%
Эта программа очищает экран, создает цикл на основе целочисленных значений, а затем использует AT
Команда для поочередного перемещения курсора между значениями Y от 1 до 20, печатая (используя короткую форму PRINT, ?) звездочку в обоих местах. В результате получается серия из 30 звездочек в двух горизонтальных линиях.
См. также
[ редактировать ]Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Руководство , с. 46.
- ^ Руководство , с. 44.
- ^ Руководство , с. 45.
Библиография
[ редактировать ]- Митрюхин, В. К.; Донской, А. Н.; Михайлов, А. В.; Немов, А. М. (1986). Программирование для БК-0010-01 [ Программирование для БК-0010-01 ] (на русском языке). версия 24.07.
- «Восточно-европейский домашний компьютер» . Германия: HCM - Музей домашних компьютеров.
Внешние ссылки
[ редактировать ]