Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

SCELBAL , короткий для НАУЧНЫХ Элементарных Бейсике , является версией BASIC языка программирования , выпущенным в 1976 году для SCELBI и других раннего Intel 8008 и 8080микрокомпьютеров , как Mark-8 . Более поздние дополнения к языку включали расширенный математический пакет и обработку строк . Исходная версия требовала 8 КБ ОЗУ , а для дополнений требовалось не менее 12 КБ.

Язык был опубликован в виде книги с вводными разделами, за которыми следуют блок-схемы, а затем - код ассемблера 8008 . В книге описаны способы экономии памяти, например отключение массивов, и то, как пользователь может добавлять свои собственные новые функции в язык.

История [ править ]

Основным автором SCELBAL является Марк Арнольд, который учился в средней школе в 1974 году, когда было объявлено о SCELBI. Арнольд дружил с профессорами из Университета Вайоминга (UW) и через них договорился о создании учетной записи на их мэйнфрейм-компьютере Sigma 7 . Для этой машины была написана первая версия того, что стало SCELBAL. Позже в том же году он написал кросс-компилятор 8008 на этой платформе.

Арнольд пришел в UW в 1975 году и связался с Нэтом Уодсвортом, одним из основателей SCELBI, с предложением скомпилированной версии BASIC для их новой платформы. Это будет многопроходная система, которая сохранит промежуточные версии на кассетной ленте . Это было бы очень утомительно в использовании, но создавало бы программы, которые работали бы на моделях системы размером 4 КБ 8H. Уодсворт отдавал предпочтение интерпретатору , для которого требовалось бы 8 кБ, что было бы доступно в новых моделях системы 8B. В языке использовались процедуры с плавающей запятой , опубликованные Wadsworth в 1975 году в Machine Language Programming для 8008 .

Уодсворту потребовалось несколько месяцев, чтобы наконец заключить контракт, который включал отправку Арнольду системы разработки 8B. Это значительно задержало выпуск языка в 1976 году. Арнольд предположил, что без этих задержек SCELBAL мог быть выпущен примерно в то же время, что и Altair BASIC в конце 1975 года. Впервые он был представлен в длинной статье во втором выпуске Dr. Журнал Добба в феврале 1976 г. [1]

О выпуске SCLEBAL было объявлено в выпуске Byte за июнь 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, такие как Altair BASIC , без строковых переменных и операторов и ряда математических функций. Остальные различия были менее выраженными. IFЗаявление было дополнительный вид , IF...GOTOчто устранило необходимость THEN, . [6] Он также сохранил МС-стиль короткую форму для одной и той же концепции, . Это также позволило условное выполнение других операторов, таких как . [7]IF X<Y GOTO 100IF X<Y THEN 100IF X<Y THEN PRINT X

Базовый язык не поддерживал обработку строк, хотя буквальные (константные) строки могли использоваться PRINT, и имел вспомогательные функции CHRдля печати непечатаемых символов и TABобеспечения макета. Как ни странно, система требовала, чтобы коды ASCII имели набор старших битов, поэтому для преобразования из обычных кодов символов ASCII в коды символов SCELBI приходилось прибавлять или вычитать 128. Например,

ПЕЧАТЬ «ПРИВЕТ» ; CHR ( 172 ); CHR ( 160 ); "МИР" 

для вывода строки «HELLO, WORLD». [8]

INPUTобычно считывает введенный пользователем текст как число, но позволяет знаку доллара указывать, что значение должно читаться как код SCELBI. Например, INPUT Aбудет считываться пользовательский ввод «1» в A как значение с плавающей запятой 1, в то время как INPUT A$в результате для A будет установлено значение 177, 49 (ASCII для «1») + 128. Кроме того, при использовании знака доллара , традиционный "?" Приглашение не печатается, и команда возвращается на язык, как только вводится один символ, вместо ожидания возврата каретки, как в обычном случае. [8]

Среди немногих других отличий было то, что NEWнайденная в MS команда, которая очищает существующий программный код и данные, вызывается SCRдля «царапины» [9], а USRфункция, которая называлась подпрограммой на машинном языке , была UDFдля «определяемой пользователем функции». . [10] UDF позволял передавать один параметр с плавающей запятой пользовательской функции, чей машинный код должен быть загружен в память в фиксированном месте до времени выполнения. [11]

Коды ошибок были сокращены до двух букв, а коды LOADи SAVEбыли представлены в стандартной форме и, как ожидается, будут реализованы при переносе на другие платформы. [12] Номера строк могут быть от 1 до 999999, [10] в то время как большинство BASIC используют 16-битные целые числа и, таким образом, поддерживают строки от 1 до 32767 или от 1 до 65535.

Особенности языка [ править ]

Взято из руководства 1976 года, если не указано иное. [13]

Команды [ править ]

Только в немедленном режиме [ править ]

В документации называется "исполнительным" режимом.

SCR
царапина, эквивалент MS NEW
LIST
RUN
LOAD
SAVE

Немедленный или программный режим [ править ]

PRINT
INPUT
Как и MS, может принимать несколько переменных . Не включил строку подсказки.INPUT A,B,C
LET
Подобно MS, это LETбыло необязательным, поэтому и эквивалентно.15 LET X=1015 X=10
IF...THEN
IF...GOTO
Альтернативная форма IF...THEN.
GOTO
Похоже, что "версия с интервалом" GO TOне поддерживалась.
GOSUB...RETURN
FOR...TO...STEP...NEXT
Как и в MS, не STEPявляется обязательным и предполагается, что 1. NEXTтребуется переменная, в отличие от более поздних версий MS.
REM
END
DIM
Массивы работали как в MS, но были необязательными и могли быть отключены для экономии памяти. Поддерживались только одномерные массивы, а общее количество элементов для всех массивов вместе составляло 64 числа.

Функции [ править ]

INT
SGN
ABS
SQR
RND
Как и в MS, принимает фиктивную переменную и возвращает значение от 0 до 1.
CHR
Обратите внимание на отсутствие $ в MS, которая использует CHR$.
TAB
UDF

Расширения [ править ]

SCELBI опубликовал два расширения системы: Приложение по математическим функциям и Приложение по строкам.

Дополнение к математическим функциям [ править ]

Добавляли Математические функции Дополнение пять новых функций трансцендентные , SIN, COS, EXP, LOG, и ATN. [14]

Дополнение к строке [ править ]

Приложение String было несколько больше, чем Math Functions, включая ряд новых функций.

Строки могут иметь длину до 80 символов, а система может содержать в общей сложности 64 строковых переменных. Любой из этих 64 или все они могут быть одномерными массивами, но общее количество по-прежнему должно составлять 64 строки. Как ни странно, строковые массивы не требовали DIMоператора. [15]

В отличие от MS BASIC и обработки строк Dartmouth BASIC, которая вдохновила его, SCELBI использовал «разрезной» стиль манипуляции строками, который присутствует в современных BASIC, таких как SDS BASIC , HP Time-Shared BASIC и Northstar BASIC , или более поздний Atari BASIC . Вместо того чтобы использовать функции , такие как LEFT$, RIGHT$, MID$чтобы подстроки доступа, синтаксис массива доступа был использован с двоеточием , предшествующим начальной точкой и , возможно , точкой с запятой , предшествующей длиной. Поскольку SCELBAL также поддерживал строковые массивы, первое число в методах доступа к массиву было индексом массива и было необязательным, если переменная не была массивом. Так, например, код: [15]

10 LET A $ = "HELLO" 20 PRINT A $ ( : 2 ; 3 )    

приведет к тому, что на выходе будет напечатано "ELL". Если использовался массив, синтаксис требовал индекса массива в первом параметре: [15]

100 LET A $ ( 1 ) = "HELLO" 150 LET A $ ( 2 ) = "WORLD" 200 ПЕЧАТЬ A $ ( 2 : 2 ; 3 )      

приведет к тому, что на выходе будет напечатано "ORL". SCELBAL также позволяет опускать точку с запятой, которая указывает символы от начальной точки до конца строки. Так, например, код:

210 ПЕЧАТЬ A $ ( 2 : 2 )  

приведет к тому, что на выходе будет напечатано "ORLD".

Несмотря на то, что он похож на SDS BASIC, есть большая разница в том, как он работает по сравнению с другими BASIC, которые использовали синтаксис среза, в том, что последний параметр - это длина, а не позиция. Например, в Atari BASIC похожий код: [16]

20 ПЕЧАТЬ A $ ( 2 , 3 )  

вместо этого выведет «EL», поскольку инструкция переводится как «распечатать все символы между позициями 2 и 3». Таким образом, SCELBAL работает более похоже на MS BASIC, где эквиваленты будут: [17]

20 ПЕЧАТЬ MID $ ( A $ , 2 , 3 )  

и

210 ПЕЧАТЬ ПРЯМО $ ( A $ ( 2 ), 2 )  

Чтобы добавить полную поддержку строк, Дополнение заменило оригинал CHRна CHR$, который соответствовал синтаксису своего аналога MS. [15] Точно так же INPUTбыло изменено, чтобы строковые переменные работали как числовые, ожидая возврата каретки, а затем присваивая весь пользовательский ввод связанной строковой переменной. [18] Также добавлены функции поддержки LENи ASC, [15] и VAL$для преобразования строки, содержащей числовое значение, в строковое представление этого числа. Как и в MS, для конкатенации используется +оператор. [18]

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

Цитаты [ править ]

  1. ^ Арнольд, Марк; Уодсворт, Нат (февраль 1976 г.). «SCELBAL - язык высокого уровня для систем 8008/8080» . Журнал доктора Добба . С. 30–53.
  2. ^ "Шокирует!" . Байт . Июнь 1976 г. с. 47.
  3. Арнольд и Уодсворт, 1976 , стр. 10.1.
  4. Арнольд и Уодсворт, 1976 , стр. 10.
  5. ^ Steil, Майкл (20 октября 2008). «Создайте свою собственную версию Microsoft BASIC для 6502» .
  6. Арнольд и Уодсворт, 1976 , стр. 14.10.
  7. Арнольд и Уодсворт, 1976 , стр. 2.3.
  8. ^ a b Арнольд и Уодсворт 1976 , стр. 14.16.
  9. Арнольд и Уодсворт, 1976 , стр. 14.1.
  10. ^ a b Арнольд и Уодсворт 1976 , стр. 14.17.
  11. Арнольд и Уодсворт, 1976 , стр. 14.3.
  12. Арнольд и Уодсворт, 1976 , стр. 14.18.
  13. Арнольд и Уодсворт, 1976 .
  14. ^ Математика 1977 , стр. 1.
  15. ^ a b c d e Струны 1977 , стр. 1.
  16. ^ Смолл, Дэвид, изд. (1983). «Строки Atari и обработка текста» . Творческий Atari . Творческие вычисления.
  17. Перейти ↑ Strings 1977 , p. 3.
  18. ^ a b Струны 1977 г. , стр. 2.

Библиография [ править ]

  • Арнольд, Марк; Уодсворт, Нат (1976). SCELBAL: язык более высокого уровня для систем 8008/8080 (PDF) . SCELBI Computer Consulting.
  • Арнольд, Марк (1977). Приложение к математическим функциям SCELBAL . SCELBI Computer Consulting.
  • Арнольд, Марк (1977). Приложение для струнных SCELBAL . SCELBI Computer Consulting.

Внешние ссылки [ править ]

  • Симулятор javascript 8008 с предварительно загруженным SCELBAL
  • Симулятор javascript 8008 с предварительно загруженными дополнениями SCELBAL, Math и String.
  • Объектный код для опубликованного SCELBAL в формате Intel Hex
  • Страница SCELBAL Майка Уиллегала
  • Эмулятор SCELBI OS / X Майка Уиллегала, который может запускать SCELBAL