WikiDer > СКЕЛБАЛ
СКЕЛБАЛ, Короче для SC Scientific Элементарный базовый язык, это версия BASIC язык программирования выпущен в 1976 году для SCELBI и другие ранние Intel 8008 и 8080-основан микрокомпьютеры словно Марк-8. Более поздние дополнения к языку включали расширенный математический пакет и обработка строк. Исходная версия требовала 8 КБ баран, а для дополнений требовалось 16 КБ.
Этот язык был издан в виде книги с вводными разделами, за которыми следовали блок-схемы а затем 8008 код ассемблера. В книге описаны способы экономии памяти, например отключение массивов, а также способы добавления новых функций пользователем.
История
Основным автором SCELBAL является Марк Арнольд, который учился в средней школе в 1974 году, когда было объявлено SCELBI. Арнольд дружил с профессорами в Университет Вайоминга (UW), и через них договорились о том, чтобы иметь отчет об их Сигма 7 универсальный компьютер. Для этой машины была написана первая версия того, что стало SCELBAL. Позже в том же году он написал 8008 кросс-компилятор на этой платформе.
Арнольд вошел в UW в 1975 году и связался с Нэтом Уодсвортом, одним из основателей SCELBI, и предложил идею составлен версия BASIC для своей новой платформы. Это будет многопроходная система, которая позволит сохранить промежуточные версии на кассета. Это было бы очень утомительно в использовании, но создавало бы программы, которые работали бы на моделях системы размером 4 КБ 8H. Уодсворт выступал за устный переводчик, для чего потребуется 8 кБ, которые будут доступны в новых моделях системы 8B. Используемый язык плавающая точка программы, опубликованные Wadsworth в 1975 г. в Программирование на машинном языке для 8008.
Уодсворту потребовалось несколько месяцев, чтобы наконец заключить контракт, который включал отправку Арнольду системы разработки 8B. Это значительно задержало выпуск языка в 1976 году. Арнольд предположил, что без этих задержек SCELBAL мог быть выпущен примерно в то же время, что и Альтаир БАЗОВЫЙ в конце 1975 года. Впервые он был представлен в длинной статье во втором номере журнала. Журнал доктора Добба в феврале 1976 г.[1]
О выпуске SCLEBAL было объявлено в рекламе в БайтВыпуск за июнь 1976 г. В объявлении не было конкретной связи языка с платформой SCELBI, вместо этого оно просто предлагалось в виде книги в виде полного списка источников для создания версии BASIC на любой системе 8008 или 8080 с необходимыми 8 КБ ОЗУ. Цена книги составляла 49 долларов, примерно 220 долларов в 2019 году.[2]
Описание
SCELBAL использовал 32-битное (четыре байта) плавающая точка формат для числовых вычислений, с 23-битным мантисса, 1-битовый знак для мантиссы, 7-битный показатель степени и 1-битный знак для экспоненты. Они были организованы в обратном порядке: младший байт мантиссы в первом байте, за ним следует средний, а затем старший байт со знаком в старшем бите. Показатель был последним, снова со знаком в старшем бите.[3] В руководстве представлены хорошо документированные код сборки для всего математического пакета, включая точки входа и примечания по использованию.[4] 32-битные форматы были распространены в то время, в то время как более поздние версии BASIC, начиная с Microsoft BASIC для MOS 6502, обычно используется 40-битный (пятибайтный) формат для дополнительной точности.[5]
SCELBAL в остальном был похож на другие диалекты BASIC, включая ранние версии MS, такие как Альтаир БАЗОВЫЙ, в котором отсутствуют строковые переменные и операторы, а также ряд математических функций. Остальные различия были менее выраженными. В ЕСЛИ
заявление имело необязательную форму ЕСЛИ ... НАЙТИ
это устранило необходимость в ТОГДА
, ЕСЛИ X
ЕСЛИ X
ЕСЛИ X <> 5, ТО LL
, который перейдет к номеру строки в переменной LL.[7]
Базовый язык не поддерживает обработку строк, хотя буквальные (постоянные) строки могут использоваться в РАСПЕЧАТАТЬ
, и имел вспомогательные функции CHR
для печати непечатаемых символов и TAB
предоставить макет. Как ни странно, система требовала ASCII коды должны иметь набор старших битов, поэтому для преобразования из обычных кодов символов ASCII в SCELBI нужно было добавить или вычесть 127. Например, ПЕЧАТЬ «ПРИВЕТ»; CHR (171); CHR (159); «МИР»
для вывода строки «HELLO, WORLD».[8]
ВХОД
обычно считывает введенный пользователем текст как число, но позволяет знаком доллара указывать, что значение должно читаться как код SCELBI. Например, ВХОД A
прочитает ввод пользователя «1» в A как значение с плавающей запятой 1, а ВХОД A $
приведет к установке A в 176, 49 (ASCII для "1") + 127. Кроме того, когда используется знак доллара, традиционный "?" Приглашение не печатается, и команда возвращается на язык, как только вводится один символ, вместо того, чтобы ждать возврата каретки, как в обычном случае.[8]
Среди других отличий было то, что НОВЫЙ
найденная в MS команда, которая очищает существующий программный код и данные, называется SCR
за "царапину",[9] и USR
функция, которая вызвала машинный язык рутина, была UDF
для "пользовательской функции".[10] UDF
не принимает адрес или параметры, поддерживается только одна определяемая пользователем функция с нулевыми параметрами в фиксированном месте.[11]
Коды ошибок были сокращены до двух букв, а код для НАГРУЗКА
и СПАСТИ
были предоставлены в стандартной форме и, как ожидается, будут реализованы при переносе на другие платформы.[12] Номера строк могут быть от 1 до 999999,[10] тогда как большинство BASIC использовали 16-битное целое число и, таким образом, поддерживали строки от 1 до 32767 или от 1 до 65535.
Особенности языка
- Взято из руководства 1976 года, если не указано иное.[13]
Команды
Только в немедленном режиме
В документации называется "исполнительным" режимом.
SCR
царапина, эквивалент MS НОВЫЙ
СПИСОК
ПРОБЕГ
НАГРУЗКА
СПАСТИ
Немедленный или программный режим
РАСПЕЧАТАТЬ
ВХОД
Как и MS, может принимать несколько переменных, ВХОД A, B, C
. Не включил строку подсказки.ПОЗВОЛЯТЬ
Как и MS, ПОЗВОЛЯТЬ
было необязательно, поэтому 15 ПОЗВОЛЯТЬ X = 10
и 15 х = 10
эквивалентны.ЕСЛИ ... ТО
ЕСЛИ ... НАЙТИ
Альтернативная форма ЕСЛИ ... ТО
.ИДТИ К
Оказывается "версия с интервалом", ИДТИ К
, не поддерживался.GOSUB ... ВОЗВРАТ
ДЛЯ ... ЧТОБЫ ... ШАГ ... СЛЕДУЮЩИЙ
Как и в MS, ШАГ
не является обязательным и принимается равным 1. СЛЕДУЮЩИЙ
требуется переменная, в отличие от более поздних версий MS.REM
КОНЕЦ
Тусклый
Массивы работали как в MS, но были необязательными и могли быть отключены для экономии памяти. Поддерживались только одномерные массивы, а общее количество элементов для всех массивов вместе составляло 64 числа.
Функции
INT
SGN
АБС
SQR
RND
Как и в MS, принимает фиктивную переменную и возвращает значение от 0 до 1.CHR
Обратите внимание на отсутствие $ в MS, который использует CHR $
.TAB
UDF
Расширения
SCHELBI опубликовал два расширения системы: Приложение по математическим функциям и Приложение по строкам.
Дополнение к математическим функциям
Дополнение к математическим функциям добавило пять новых трансцендентные функции, ГРЕХ
, COS
, EXP
, БРЕВНО
, и ATN
.[14]
Дополнение к строке
Приложение String было несколько больше, чем Math Functions, включая ряд новых функций.
Строки могут иметь длину до 80 символов, а система может содержать всего 64 строковых переменных. Любой из этих 64 или все они могут быть одномерными массивами, но общее количество по-прежнему должно составлять 64 строки. Как ни странно, строковые массивы не требовали Тусклый
утверждение.[15]
В отличие от MS BASIC, Дартмутский ОСНОВНОЙ Обработка строк, которая вдохновила его, SCELBI использовал "нарезанный" стиль манипуляции строками, найденный в современных BASIC, таких как HP с разделением времени BASIC и Northstar BASIC, или позже Atari BASIC. Вместо использования таких функций, как LEFT $
, ПРАВЫЙ $
, MID $
для доступа к подстрокам использовался синтаксис доступа к массиву с двоеточиями, разделяющими начальную точку и длину. Поскольку SCELBAL также поддерживал строковые массивы, первое число в методах доступа к массиву было индексом массива и было необязательным, если переменная не была массивом. Так, например, код:[15]
10ПОЗВОЛЯТЬАвстралийский доллар="ПРИВЕТ"20РАСПЕЧАТАТЬАвстралийский доллар(:2:3)
приведет к тому, что на выходе будет напечатано "ELL". Если использовался массив, синтаксис требовал индекса массива в первом параметре:[15]
100ПОЗВОЛЯТЬАвстралийский доллар(1)="ПРИВЕТ"150ПОЗВОЛЯТЬАвстралийский доллар(2)="МИР"200РАСПЕЧАТАТЬАвстралийский доллар(2:2:3)
приведет к тому, что на выходе будет напечатано "ORL".
Существует большая разница в том, как это работает по сравнению с другими BASIC, которые использовали синтаксис среза, в том, что последний параметр - это длина, а не позиция. Например, в Atari BASIC похожий код:[16]
20РАСПЕЧАТАТЬАвстралийский доллар(2,3)
Вместо этого выводит «EL», поскольку инструкция переводится как «печатать все символы между позициями 2 и 3». Таким образом, SCELBAL работает более похоже на MS BASIC, где эквивалент будет:[17]
20РАСПЕЧАТАТЬMID $(Австралийский доллар,2,3)
Чтобы добавить полную поддержку строк, Дополнение заменило исходный CHR
с CHR $
, который соответствует синтаксису своего аналога в MS.[15] Так же, ВХОД
был изменен, так что строковые переменные работали как числовые, ожидая возврата каретки и затем назначая весь ввод пользователя связанной строковой переменной.[18] Также добавлены функции поддержки LEN
и ASC
,[15] и VAL $
для преобразования строки, содержащей числовое значение, в строковое представление этого числа. Как и в MS, конкатенация использовал +
оператор.[18]
Рекомендации
Цитаты
- ^ Арнольд, Марк; Уодсворт, Нат (февраль 1976 г.). «SCELBAL - язык высокого уровня для систем 8008/8080». Журнал доктора Добба. С. 30–53.
- ^ "Шокирует!". Байт. Июнь 1976 г. с. 47.
- ^ Арнольд и Уодсворт 1976, п. 10.1.
- ^ Арнольд и Уодсворт 1976, п. 10.
- ^ Стейл, Майкл (20 октября 2008 г.). «Создайте свою собственную версию Microsoft BASIC для 6502».
- ^ Арнольд и Уодсворт 1976, п. 14.10.
- ^ Арнольд и Уодсворт 1976, п. 2.3.
- ^ а б Арнольд и Уодсворт 1976, п. 14.16.
- ^ Арнольд и Уодсворт 1976, п. 14.1.
- ^ а б Арнольд и Уодсворт 1976, п. 14.17.
- ^ Арнольд и Уодсворт 1976, п. 14.3.
- ^ Арнольд и Уодсворт 1976, п. 14.18.
- ^ Арнольд и Уодсворт 1976.
- ^ Математика 1977, п. 1.
- ^ а б c d е Струны 1977, п. 1.
- ^ Смолл, Дэвид, изд. (1983). «Строки Atari и обработка текста». Творческий Atari. Творческие вычисления.
- ^ Струны 1977, п. 3.
- ^ а б Струны 1977, п. 2.
Библиография
- Арнольд, Марк; Уодсворт, Нат (1976). SCELBAL: язык более высокого уровня для систем 8008/8080 (PDF). SCELBI Computer Consulting.CS1 maint: ref = harv (связь)
- Арнольд, Марк (1977). Приложение к математическим функциям SCELBAL. SCELBI Computer Consulting.
- Арнольд, Марк (1977). Дополнение для струнных SCELBAL. SCELBI Computer Consulting.