Общие данные, расширенный BASIC
![]() | |
Разработчик(и) | Общие данные |
---|---|
Первоначальный выпуск | 1970 год |
Платформа | Общие данные Нова |
Тип | БАЗОВЫЙ |
Лицензия | Коммерческое проприетарное программное обеспечение |
Data General Extended BASIC , также широко известный как Nova Extended BASIC , был языка программирования BASIC интерпретатором для Data General Nova серии миникомпьютеров . Он был основан на оригинальном Dartmouth BASIC , включая строковые переменные пятого издания и мощный MAT
команды для манипуляций с матрицей . В отличие от Dartmouth BASIC, который можно было компилировать и использовать , Extended BASIC был интерпретатором .
К этому в Extended BASIC добавлены манипуляции с подстроками с использованием нарезки массива , что было распространено на BASIC той эпохи, встречается в HP Time-Shared BASIC , Sinclair BASIC , Atari BASIC и других. Это контрастирует со стилем Microsoft BASIC , в котором используются строковые функции, такие как LEFT$
и, таким образом, несколько затрудняет перенос строкового кода.
Позже Data General приобрела права на значительно расширенный BASIC, который был выпущен как Data General Business Basic . Это добавило мощные функциональные возможности базы данных и в значительной степени заменило Extended BASIC на платформах DG.
Описание
[ редактировать ]Математика
[ редактировать ]Во внутреннем формате чисел с плавающей запятой обычно используются два 16-битных слова общей длиной 32 бита, причем первым сохраняется младший бит . Биты 0 представляли собой знак, от 1 до 7 — показатель степени, хранящийся в формате превышения 64 , а от 8 до 31 — мантисса, хранящаяся в виде шестнадцатеричных цифр. [1] В качестве альтернативы числа могут использовать формат двойной точности, который расширяет только мантиссу, добавляя еще 32 бита. Это означало, что формат двойной точности не расширял диапазон чисел, которые можно было хранить, а только увеличивал точность этих чисел. [2] Возможные числа варьировались от 5,4 × 10. −79 до −7,2 × 10 75 . Числа с числом менее шести цифр отображались в виде десятичных дробей, а числа с большим количеством цифр отображались в экспоненциальном формате. [1]
Имена переменных могут состоять из одной буквы или буквы и одной цифры. Двухбуквенные имена не допускались. Массивы могут быть DIM
med в 1 (массив) или 2 (матрица) измерениях, а нижняя граница всегда равна 1. [2] Как это было принято в то время, переменные без DIM
по умолчанию используется одномерный массив из 10 элементов. Как ни странно, если переменная была DIM
ed, это было не то же самое, что переменная с тем же именем, которая не была DIM
ред; A(1)
и A
могут быть одинаковыми или разными переменными в зависимости от того, как они были созданы. [3]
Математические операторы были стандартным набором с добавлением унарного плюса. [3] Операторы сравнения для сравнения также были стандартным набором, их не было. #
для не-равных, как это встречается в некоторых современных BASICах. [3]
Матричная математика
[ редактировать ]В расширенный BASIC добавлен набор матричных математических операций из пятого издания Dartmouth BASIC. По сути, это были макросы , выполнявшие операции, которые в противном случае можно было бы выполнить с помощью FOR...NEXT
петли. [4]
Система включала в себя ряд предварительно свернутых матриц, таких как ZER
для нулевой матрицы, CON
для матрицы всех единиц, и IDN
для единичной матрицы . Поддерживалось большинство математических операций, например, MAT A=A*2
умножает каждый элемент в A на 2. MAT A=DET A
принимает определитель и MAT A=INV(A)
инвертирует его. [4]
Струны
[ редактировать ]Строковые литералы (константы) заключались в двойные кавычки. Символы внутри строк можно экранировать, поместив их значение ASCII в угловые скобки, например: "This prints a quote, <34>."
Строковые переменные, как и их числовые аналоги, состояли только из одной буквы или одной буквы и одной цифры. [5]
Как и в случае со всеми переменными в Extended BASIC, строковым переменным обычно выделялось десять пробелов, но их можно было расширить максимум до 32 КБ с помощью явного указания. DIM
. Поскольку для объявления длины строки использовался синтаксис массива, массивы строк были невозможны. Присвоение строки переменной, которая была слишком маленькой и не могла ее удерживать, приводило к усечению любого лишнего. [6]
Манипулирование строками осуществлялось с использованием синтаксиса срезов массива . A$(10)
относится к подстроке от позиции 10 до конца строки, а A$(10,20)
относятся к символам с 10 по 20. При объединении использовалась запятая, поэтому A$=A$,B$
добавлен B$ до конца А$ . [7] Это был необычный синтаксис, даже когда он только появился, большинство BASIC, использующих нарезку, использовали его также и для конкатенации, например: A$(LEN(A$))=B$
добавил бы B$ в конце A$ , в то время как те, кто использует строковые функции, такие как Microsoft BASIC , уже широко использовали знак плюса для этой операции.
Это изменение синтаксиса произошло потому, что Extended BASIC позволял применять математические операторы к строкам вплоть до первого нечислового символа. Например, A="1234"+"2345"
поместил бы 3579 в A без необходимости явного преобразования их в числа, что обычно обрабатывается с помощью VAL
функционируют в большинстве диалектов. Нечисловые значения просто игнорировались. A="1234"+"FRED"
поместите 1234 в А. [8]
В расширенном BASIC не было CHANGE
команда из Дартмута, которая преобразовывала всю строку в значения ASCII в массиве или обратно, например: CHANGE "HELLOWORLD" TO B
в результате B присваивается 10 чисел, каждое из которых представляет собой значение ASCII.
Заявления
[ редактировать ]В остальном расширенный BASIC похож на Dartmouth и Microsoft BASIC по разнообразию поддерживаемых команд и их синтаксису. Исключения включают CON
вместо CONT
, DELAY
вместо PAUSE
(что в любом случае было нечасто). Два дополнения были ON ERR THEN...
что позволяло перехватывать ошибки - функция, которая стала распространенной в других BASIC, и ON ESC THEN...
что позволило также заблокировать клавишу Break (в данном случае escape). [9] RETRY
был похож на CON
, но позволял перезапустить одну строку после перерыва вместо продолжения всей программы. [10] TIME
установить срок для TINPUT
операторы ответа, которые были «синхронизированным вводом», в остальном идентичным INPUT
. [11]
В расширенный BASIC добавлено множество операторов редактирования непосредственного режима , которые на самом деле не являются частью языка как такового . В их число вошли ERASE
удалить диапазон строк из программы, ENTER
считывать содержимое текстового файла в программу и RENUMBER
. [12] CARDS
был похож на ENTER
, но читаем строки с картридера.
Он также добавил ряд операторов для работы с базовой файловой системой, в том числе FILE
который перечисляет файлы в каталоге пользователя и LIBRARY
который делает то же самое с подстановочными знаками, GDIR
который напечатал имя этого каталога, LOAD
и SAVE
для программного кода, RENAME
и DELETE
, и DISK
, который печатал свободное пространство. PUNCH
было типа SAVE
, но отправил файл на перфоратор . WHATS
напечатал атрибуты данного файла. [13]
другие заявления, относящиеся к операционной системе. Включены WHO
чтобы распечатать список вошедших в систему пользователей, MSG
беспокоить их, PAGE
чтобы установить правое поле (ширину страницы) и SIZE
для печати памяти, используемой программой, противоположной тому, что было бы возвращено в MS BASIC с помощью FRE()
. [14]
Функции
[ редактировать ]Функции очень похожи на Dartmouth и Microsoft BASIC, с некоторыми дополнениями. CPU()
вернул числовое значение, кодирующее положения переключателей на передней панели. [15] EOF(x)
вернулся ли файл или нет x достиг конца файла. POS(X$,Y$,Z)
вернул позицию B$ в пределах A$ , где угодно после необязательной позиции Z , аналогично стандарту MS INSTR
. [16] Обратите внимание, что это переопределяет POS
найденный в MS, который возвращает текущую позицию столбца курсора.
Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ Перейти обратно: а б Руководство 1978 года , с. 2.1.
- ^ Перейти обратно: а б Руководство 1978 года , с. 2.2.
- ^ Перейти обратно: а б с Руководство 1978 года , с. 2.3.
- ^ Перейти обратно: а б Руководство 1978 г. , Глава 5.
- ^ Руководство 1978 г. , с. 2.4.
- ^ Руководство 1978 г. , с. 2.5.
- ^ Руководство 1978 г. , с. 2.6.
- ^ Руководство 1978 г. , с. 2.7.
- ^ Руководство 1978 г. , с. 3.26.
- ^ Руководство 1978 г. , с. 3.43.
- ^ Руководство 1978 г. , с. 3.48.
- ^ Руководство 1978 г. , с. 3.42.
- ^ Руководство 1978 г. , с. 3.50.
- ^ Руководство 1978 г. , с. 3.46.
- ^ Руководство 1978 г. , с. 4.3.
- ^ Руководство 1978 г. , с. 4.7.
Библиография
[ редактировать ]- Расширенное руководство пользователя BASIC . Общие данные. Январь 1978 года.