Jump to content

СКЕЛЬБАЛ

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

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

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

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

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

О выпуске SCLEBAL было объявлено в рекламе июньского номера Byte за 1976 год. В рекламе язык не связывался конкретно с платформой SCELBI, вместо этого он просто предлагался в виде книги в качестве полного списка исходных текстов для создания версии BASIC в любой системе 8008 или 8080 с необходимыми 8 КБ ОЗУ. Цена книги составила 49 долларов (около 262 долларов в 2023 году). [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, IF X<Y GOTO 100. [6] Он также сохранил краткую форму той же концепции в стиле MS: IF X<Y THEN 100. Это также позволяло условное выполнение других операторов, таких как IF X<Y THEN PRINT X. [7]

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

PRINT "HELLO";CHR(172);CHR(160);"WORLD"

для создания строки «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
Как и МС, LET было необязательным, поэтому 15 LET X=10 и 15 X=10 эквивалентны.
IF...THEN
IF...GOTO
Альтернативная форма IF...THEN.
GOTO
Похоже, "разнесенная версия", GO TO, не получил поддержки.
GOSUB...RETURN
FOR...TO...STEP...NEXT
Как и в МС, 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]

Струнное дополнение

[ редактировать ]

Строковое дополнение было несколько больше, чем математические функции, и включало ряд новых функций.

Строки могли иметь длину до 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 PRINT A$(2:2;3)

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

210 PRINT A$(2:2)

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

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

20 PRINT A$(2,3)

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

20 PRINT MID$(A$,2,3)

и

210 PRINT RIGHT$(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. ^ Стейл, Майкл (20 октября 2008 г.). «Создайте свою собственную версию Microsoft BASIC для 6502» .
  6. ^ Арнольд и Уодсворт 1976 , с. 14.10.
  7. ^ Арнольд и Уодсворт 1976 , с. 2.3.
  8. ^ Jump up to: а б Арнольд и Уодсворт 1976 , с. 14.16.
  9. ^ Арнольд и Уодсворт 1976 , с. 14.1.
  10. ^ Jump up to: а б Арнольд и Уодсворт 1976 , с. 14.17.
  11. ^ Арнольд и Уодсворт 1976 , с. 14.3.
  12. ^ Арнольд и Уодсворт 1976 , с. 14.18.
  13. ^ Арнольд и Уодсворт 1976 .
  14. ^ Математика 1977 , с. 1.
  15. ^ Jump up to: а б с д и Струны 1977 , с. 1.
  16. ^ Смолл, Дэвид, изд. (1983). «Строки Atari и обработка текста» . Креативная Атари . Творческие вычисления.
  17. ^ Струны 1977 , с. 3.
  18. ^ Jump up to: а б Струны 1977 , с. 2.

Библиография

[ редактировать ]
  • Арнольд, Марк; Уодсворт, Нат (1976). SCELBAL: язык более высокого уровня для систем 8008/8080 (PDF) . СКЭЛБИ Компьютерный консалтинг.
  • Арнольд, Марк (1977). SCELBAL Дополнение к математическим функциям . СКЭЛБИ Компьютерный консалтинг.
  • Арнольд, Марк (1977). Дополнение к струнным инструментам SCELBAL . СКЭЛБИ Компьютерный консалтинг.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d3e98f80519707cff31c95bbdb15b9c0__1642704780
URL1:https://arc.ask3.ru/arc/aa/d3/c0/d3e98f80519707cff31c95bbdb15b9c0.html
Заголовок, (Title) документа по адресу, URL1:
SCELBAL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)