HP с разделением времени BASIC
Парадигма | императив |
---|---|
Разработчик | Майк Грин |
Впервые появился | до 1969 года |
ТЫ | ХП 2100 |
Под влиянием | |
Дартмут БЕЙСИК | |
Под влиянием | |
См. SDS BASIC , Integer BASIC , Atari BASIC и многие другие. |
HP Time-Shared BASIC ( HP TSB ) — это языка программирования BASIC интерпретатор для Hewlett-Packard HP 2000 линейки миникомпьютеров с разделением времени . TSB исторически примечательна как платформа, выпустившая первые публичные версии игры Star Trek .
В системе реализован диалект BASIC, а также элементарная учетная запись пользователя и библиотека программ, которая позволяет нескольким людям использовать систему одновременно. Эти системы были основной силой в начале-середине 1970-х годов и породили большое количество программ. HP вела базу данных предоставленных программ, и клиенты могли заказывать их на перфоленте за символическую плату.
Большинство BASIC 1970-х годов ведут свою историю от оригинального Dartmouth BASIC 1960-х годов, но ранние версии Dartmouth не обрабатывали строковые переменные и не предлагали функции манипулирования строками. Вендоры добавили свои решения; HP использовала систему, похожую на Фортран и другие языки, с разделением массивов , а DEC позже представила MID/LEFT/RIGHT
функции.
Когда в середине 1970-х годов на рынок начали выходить микрокомпьютеры , появилось множество новых BASIC, чьи парсеры основывались на синтаксисе DEC или HP. Altair BASIC , первоначальная версия того, что впоследствии стало Microsoft BASIC , была создана по образцу BASIC-PLUS от DEC . Другие, в том числе Apple Integer BASIC , Atari BASIC и North Star BASIC, были созданы по образцу HP. Это несколько затрудняло преобразование между этими платформами, если приходилось сталкиваться с обработкой строк.
Номенклатура
[ редактировать ]Программное обеспечение также было известно под названием версии, привязанным к аппаратной версии, на которой оно работало, например HP 2000C Time-Shared BASIC , а операционная система выпускалась в разных вариантах — 2000A, 2000B, 2000C, High-Speed 2000C, 2000E, и 2000Ф.
В некоторых публикациях HP также называла этот язык «Access BASIC». Это соответствовало названию машин, на которых он работал, известных в некоторых публикациях как «2000/Access». Эта терминология, по-видимому, использовалась лишь кратко, когда платформа была впервые запущена.
Подробности платформы
[ редактировать ]За исключением систем 2000A и 2000E, система реализована с использованием двухпроцессорной архитектуры . Один полностью сконфигурированный процессор HP серии 2100 используется для выполнения большей части системного кода и всего пользовательского кода, а второй процессор HP серии 2100 меньшего размера используется для обработки последовательных линий RS-232 , по которым передается время. -совместное использование подключенных пользователей. В зависимости от конфигурации оборудования система поддерживает до 16 или до 32 удаленных пользователей одновременно.
Обычным терминалом для системы TSB был Teletype Model 33 ASR, подключавшийся непосредственно к процессору ввода-вывода или через модем или акустический соединитель . Имена учетных записей представляют собой комбинацию одного буквенного символа, за которым следуют три десятичные цифры, например , B001. Привилегированные учетные записи начинались с буквы «А» и имели некоторые дополнительные возможности хранения команд и программ. — Учетная запись суперпользователя A000. Эта схема позволяет использовать до 26 000 учетных записей пользователей.
Во время выполнения пользовательские программы переносятся на накопитель с фиксированной головкой — физически это диск, но работающий как магнитный барабан . с картриджами с подвижной головкой или в пакетах Когда пользовательские программы не выполняются, они хранятся на дисках . Привилегированные пользователи также могут хранить программы на гораздо более быстром барабане. Резервная копия жесткого диска была записана на магнитную ленту .
Имена программ и файлов состоят из шести буквенных символов (AZ) и цифр (0–9). Программы сохраняются в токенизированном формате с помощью команды SAVE. Их также можно сохранить в полукомпилированном формате с помощью команды CSAVE, что позволяет им запускаться быстрее. Поскольку система была тесно связана с использованием общедоступных телетайпов, окончания строк в файлах состояли из символа возврата каретки (ASCII CR, шестнадцатеричный 0D), за которым следовал символ перевода строки (ASCII LF, шестнадцатеричный 0A).
Синтаксис
[ редактировать ]Этот язык представляет собой довольно стандартную реализацию BASIC, обеспечивающую интегрированную среду редактирования и выполнения. Операторы анализируются на предмет правильного синтаксиса по мере их ввода, а затем сохраняются в токенизированной форме. Каждый оператор BASIC должен находиться на строке с уникальным номером, например
10 PRINT "HELLO WORLD"
Номера строк являются обязательными, а операторы автоматически размещаются в возрастающей числовой последовательности. Строки TSB могут содержать один оператор; объединение нескольких операторов в цепочку с двоеточием, как в MS BASIC, не поддерживается. Допускается присвоение нескольких переменных, например , 20 LET A=B=C=42
. Как и в большинстве версий BASIC, использование слова «LET» было необязательным.
В самой ранней версии (2000A) язык поддерживал следующие функции. [ 1 ] В более поздних версиях было добавлено множество дополнительных функций. [ 2 ]
- Безусловное управление потоком программы через
GOTO
операторы и подпрограммы черезGOSUB
иRETURN
заявления - Условное управление потоком через
IF/THEN
заявление - Расчетное управление потоком с помощью
GOTO/OF
иGOSUB/OF
заявления - Блок-цикл на основе переменных
FOR
иNEXT
заявления - Хранение данных в коде через
DATA
,READ
, иRESTORE
заявления - Ввод и вывод пользователю или файлу диска через
INPUT
,READ #
,PRINT
,PRINT #
, иIF END #
заявления - Числовые переменные формы «A» или «A n » (где A — одна буква, а n — одна необязательная цифра).
- Строковые переменные формы «A$» (где A — одна буква), хранящие от 1 до 255 символов по размеру. (См. ниже.) (Или: имена переменных «A0$» или «A1$», но не более этих двух цифр.)
- Одно- или двумерные матричные (массивы) переменные вида «A[x]» или «A[x,y]»
- Матричные операции с помощью операторов (
MAT READ, MAT INPUT, MAT PRINT, MAT=
) и операции (+, -, *, ZER, CON, IDN, INV, TRN
) - Булевы операторы (
AND, OR, NOT
) и операторы отношения (<, <=, =, #, <>, >=, and >
) - Встроенные математические функции, включая тригонометрические (
SIN, COS, TAN, ATN
), логарифмы (LOG, EXP
), квадратный корень (SQR
), генератор случайных чисел (RND
), другие (ABS, INT, SGN, MIN, MAX)
и пользовательские функции - Операции с перфолентой с использованием дистанционных терминалов электромеханического телетайпа Teletype Model 33
Обработка строк
[ редактировать ]Строки в TSB рассматриваются как массив символов, а не как один многосимвольный объект. По умолчанию им выделяется один символ в памяти, и если необходима строка большей длины, их необходимо упомянуть перед использованием. Например, DIM A$[10]
создаст строку, которая может содержать максимум 10 символов. Максимальная длина строки в TSB — 255 символов. [ 3 ]
Доступ к подстрокам внутри строк осуществляется с использованием нотации « нарезки »: A$(L,R)
или A$[L,R]
, где подстрока начинается с самого левого символа, указанного индексом L, и продолжается до самого правого символа, указанного индексом R, или A$[L]
Форма, в которой подстрока начинается с самого левого символа, указанного индексом L, и продолжается до конца строки. TSB принимает () или [] взаимозаменяемо. Индексы массива и подстроки начинаются с 1.
Это резко контрастирует с BASICами, которые следуют шаблону DEC и используют такие функции, как LEFT$()
, MID$()
, и RIGHT$()
для доступа к подстрокам, хотя ANSI BASIC продолжает использовать синтаксис подстроки, аналогичный тому, который был введен Hewlett-Packard. Нотацию HP также можно использовать на стороне назначения оператора LET или INPUT для изменения части существующего строкового значения, например 100 A$[3,5]="XYZ"
или 120 B$[3]="CHANGE ALL BUT FIRST TWO CHARS"
, чего нельзя было сделать с ранними реализациями LEFT/MID/RIGHT.
Основное преимущество этого стиля доступа к строкам заключается в том, что он устраняет необходимость в сложном управлении памятью , которое в противном случае требуется при изменении длины строки. MS BASIC имел длинную библиотеку для обработки сжатия памяти путем удаления мертвого пространства в куче строк , когда в системе заканчивалась память. Он также был общеизвестно медленным и за время своего существования несколько раз модифицировался с целью повышения производительности или исправления ошибок. [ 4 ] Недостатком стиля TSB является то, что строка всегда занимает весь объем DIM-пространства, даже если строка внутри пуста, а простые задачи, такие как конкатенация, потенциально могут переполнить строку, если с самого начала для нее не был установлен большой размер.
Более поздние версии Dartmouth BASIC включали строковые переменные, основанные на том же шаблоне, что и в BASIC-PLUS и MS BASIC. Однако в этой версии не использовались функции LEFT/MID/RIGHT для управления строками, а вместо этого использовались CHANGE
команда, которая преобразовывала строку в эквивалентные значения ASCII и обратно. HP включила идентичную функциональность, изменив только название на CONVERT
. [ 5 ] [ а ] Кроме того, можно использовать одинарные кавычки для преобразования числовой константы в символ ASCII, что позволяет создавать строку по частям; A$='23 '64 '49 "DEF"
создал строку «ABCDEF» без необходимости CHR$()
функция. [ 6 ]
МАТ-команды
[ редактировать ]Более поздние версии Dartmouth BASIC включали набор MAT
команды, которые позволяли выполнять операции с целыми массивами ( матрицами ) с помощью одного оператора. Они также были доступны в более поздних версиях TSB. В своей простейшей форме, MAT
используется как альтернативная форма LET
, применяя выражение ко всем элементам массива. Например:
100 DIM A(20),B(20)
...
200 MAT A=A+B
Добавит значение каждого значения в B к каждой записи в A таким же образом, как:
100 DIM A(20),B(20)
...
200 FOR I=1 TO 20
210 A[I]=A[I]+B[I]
220 NEXT I
Помимо того, что эти команды делают код короче и нагляднее, они также имеют то преимущество, что они высоко оптимизированы, что легко превосходит использование FOR/NEXT. [ 7 ] Дополнительные функции и операторы изменяют PRINT
и INPUT
, инвертировать массивы, строить единичные матрицы и т. д. в одном операторе. [ 8 ]
Другие различия
[ редактировать ]TSB также включает ряд более незначительных отличий от других диалектов. Среди наиболее важных:
#
— необязательная форма сравнения неравных, идентичная<>
[ 9 ]- вычисляемый переход с использованием
ON...GOTO/GOSUB
синтаксис не поддерживается. Вместо этогоGOTO expression OF 1,2,3...
выполняет ту же функцию, выбирая номер строки из списка на основе его порядкового положения. Например,GOTO 1 OF 10,20,30
всегда будет переходить к строке 10, тогда какGOTO A OF 100,200,300
будет переходить на разные строки, если значение A равно 1, 2 или 3. [ 10 ] - Логические и реляционные операторы можно использовать в любом математическом выражении, возвращая 0 в случае ложности или 1 в случае истины, что было необычно для языков BASIC того времени, но популярно в таких языках, C. как Например,
IF C+D THEN 1600
перейдет к строке 1600, если C или D больше нуля, поскольку выражениеC+D
будет иметь значение «истина» вIF
. Если C и D оба равны нулю,IF
оценит его как «ложь», и ветвь не будет выбрана. - БСЭ включает в себя
ENTER
, вариация стандартаINPUT
утверждение, которое продолжается после достижения лимита времени.ENTER
имеет три входа: ограничение времени в секундах, возвращаемую переменную, содержащую фактическое прошедшее время (или код состояния), и, наконец, пользовательский ввод. Например,ENTER 15,T,A$[1,1]
будет ждать 15 секунд, пока пользователь введет один символ. T будет содержать фактическое время, которое они потратили, -256, если таймер истек, или -257 или -258, чтобы указать на проблемы с терминалом. [ 11 ] - При печати строковых констант (литералов) точки с запятой внутри строки не нужны. Например,
PRINT "THE NUMBER IS"A", TRY A LARGER VALUE."
не требует точек с запятой между строковыми константами и переменной A. [ 12 ] Некоторые другие BASIC, включая MS, также поддерживали этот синтаксис. Другие, такие как Atari или Integer, этого не сделали. - Запятые в
PRINT
используйте позиции табуляции каждые 15 символов, оставляя 12 в конце строки, всего 72. [ 13 ] - The
LIN
функция работает как вертикальный аналогTAB
.LIN(3)
вставит три возврата каретки, возможно, в существующую строку, если в конце была активна точка с запятой или запятая, а в особом случаеLIN(-1)
всегда будет переходить на следующую строку. [ 14 ] Integer BASIC имел аналогичную функцию, называемуюVTAB
.
См. также
[ редактировать ]- Rocky Mountain BASIC , еще один, но совсем другой диалект BASIC, созданный в Hewlett-Packard.
Примечания
[ редактировать ]Ссылки
[ редактировать ]Цитаты
[ редактировать ]- ^ HP 2000A — Руководство пользователя, август 1969 г., номер детали 02000-90002, [1] . Проверено 9 мая 2016 г.
- ^ HP 2000/Access BASIC — Справочное руководство, номер детали 22687-90001, [2] . Проверено 9 мая 2016 г.
- ^ Ссылка 1976 , с. 4-3.
- ^ «Создайте свою собственную версию Microsoft BASIC» .
- ^ Ссылка 1976 , с. 4-6.
- ^ Ссылка 1976 , с. 4-2.
- ^ Ссылка 1976 , с. 11-50.
- ^ Ссылка 1976 , стр. 11–49, 11–55.
- ^ Ссылка 1976 , с. 2-5.
- ^ Ссылка 1976 , с. Ф-4.
- ^ Ссылка 1976 , с. 2-15.
- ^ Ссылка 1976 , с. 2-10.
- ^ Ссылка 1976 , с. 2-9.
- ^ Ссылка 1976 , с. 2-11.
Библиография
[ редактировать ]- Справочное руководство HP 2000/Access BASIC (PDF) . Хьюлетт Паккард. Май 1976 г. , деталь № 22687-90001.
- HP 2000/Access Learning Timeshare BASIC (PDF) . Хьюлетт Паккард. Май 1976 г. , деталь № 22687-90009.
Внешние ссылки
[ редактировать ]- www.bitsavers.org — Архивная документация HP (сканированная в PDF)
- Базовый интерпретатор, совместимый с HP 2000
- Компьютерный музей HP
- История компьютерных систем БТИ