HP Time-Shared BASIC ( HP TSB ) является основным языком программирования переводчиком для Hewlett-Packard «s HP 2000 линии микрокомпьютерных -Ы время обмена компьютерных систем. TSB исторически известна как платформа, выпустившая первые публичные версии игры Star Trek .
Парадигма | императив |
---|---|
Разработчик | Майк Грин |
Впервые появился | до 1969 г . |
Операционные системы | HP 2100 |
Под влиянием | |
Дартмутский ОСНОВНОЙ | |
Под влиянием | |
Ср. SDS BASIC , Integer BASIC , Atari BASIC , многие другие |
В системе реализован диалект BASIC, а также элементарная учетная запись пользователя и программная библиотека, которые позволяют нескольким людям использовать систему одновременно. Системы были главной силой в начале-середине 1970-х годов и породили большое количество программ. HP вела базу данных предоставленных программ, и клиенты могли заказывать их на перфоленте за символическую плату.
Большинство BASIC 1970-х прослеживают свою историю до оригинального Dartmouth BASIC 1960-х, но ранние версии Dartmouth не обрабатывали строковые переменные, и поставщики добавляли свои собственные решения. Это привело к двум общим стилям; DEC представила MID/LEFT/RIGHT
функции, в то время как TSB использовал систему, более похожую на Фортран и другие языки с нарезкой массивов .
Когда в середине 1970-х годов на рынок начали выходить микрокомпьютеры, появилось много новых BASIC, которые основывали свои синтаксические анализаторы на синтаксисе DEC или HP. Altair BASIC , первоначальная версия того, что стало Microsoft BASIC , была основана на DEC BASIC-PLUS . Другие, включая Apple Integer BASIC , Atari BASIC и North Star BASIC, были созданы в стиле HP. Это несколько затрудняло преобразование между этими платформами, если возникала обработка строк.
Номенклатура
Программное обеспечение также было известно под своим версионным именем, связанным с версией оборудования, на котором оно работало, например HP 2000C Time-Shared BASIC, и операционная система была разных версий - 2000A, 2000B, 2000C, High-Speed 2000C, 2000E, и 2000F.
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 ПЕЧАТЬ «ПРИВЕТ, МИР»
Номера строк являются обязательными, а операторы автоматически размещаются в возрастающей числовой последовательности. Строки TSB могут содержать один оператор, объединение нескольких операторов в цепочку с двоеточием, как в MS BASIC, не поддерживается. Множественные задания переменных разрешено, например , . Как и в большинстве версий BASIC, использование слова «LET» было необязательным.20 LET A=B=C=42
В самой ранней версии (2000A) язык поддерживал следующие функции. [1] В более поздних версиях было добавлено много дополнительных функций. [2]
- Безусловная программа управление потоком с помощью
GOTO
заявлений и подпрограмм черезGOSUB
иRETURN
заявление - Условное управление потоком через
IF/THEN
оператор - Рассчитан поток управление через
GOTO/OF
иGOSUB/OF
отчетности - Блок-цикл
FOR
иNEXT
операторы на основе переменных - В-кода для хранения данных с помощью
DATA
,READ
иRESTORE
заявления - Вклад и вывод пользователя или диск файл через
INPUT
,READ #
,PRINT
,PRINT #
, иIF END #
заявление - Числовые переменные вида «А» или « п » (где А одна буква и п представляет собой единый, дополнительный цифра) хранится в виде 32-битных чисел с плавающей точкой чисел
- Строковые переменные формы "A $" (где A - одна буква), хранящие от 0 до 72 символов.
- Одно- или двумерные матричные (массивы) переменные вида «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 обрабатываются как массив символов, а не как один многосимвольный объект. По умолчанию им выделяется один символ в памяти, и если требуется строка большей длины, их необходимо упомянуть перед использованием. Например, создаст строку, которая может содержать не более 10 символов. Максимальная длина строки в TSB составляет 72 символа. [3]DIM A$[10]
Доступ к подстрокам внутри строк осуществляется с помощью нотации « среза »: или , где подстрока начинается с самого левого символа, указанного индексом L, и продолжается до самого правого символа, указанного индексом R, или формы, в которой подстрока начинается с самого левого символа указывается индексом L и продолжается до конца строки. TSB принимает () или [] взаимозаменяемо. Индексы массива и подстроки начинаются с 1.A$(L,R)
A$[L,R]
A$[L]
Это резко контрастирует с BASIC, которые следуют шаблону DEC, которые используют такие функции, как LEFT$()
, MID$()
и RIGHT$()
для доступа к подстрокам, хотя ANSI BASIC продолжает использовать синтаксис подстроки, аналогичный синтаксису, введенному Hewlett-Packard. Нотация HP также может использоваться на стороне назначения оператора LET или INPUT для изменения части существующего строкового значения, например или , что невозможно сделать с ранними реализациями LEFT / MID / RIGHT.100 A$[3,5]="XYZ"
120 B$[3]="CHANGE ALL BUT FIRST TWO CHARS"
Основное преимущество этого стиля доступа к строкам состоит в том, что он устраняет необходимость в сложном управлении памятью , которое в противном случае требуется при изменении длины строки. В MS BASIC была обширная библиотека для обработки сжатия памяти путем удаления мертвого пространства в куче строк, когда системе не хватало памяти. Кроме того, он был заведомо медленным и несколько раз изменялся за время своего существования с целью повышения производительности или исправления ошибок. [4] Обратной стороной стиля TSB является то, что строка всегда занимает весь объем DIMed-пространства, даже если строка внутри пуста, а простые задачи, такие как конкатенация, потенциально могут переполнять строку, если для начала не был установлен большой размер. с участием.
Более поздние версии Dartmouth BASIC действительно включали строковые переменные, основанные на том же шаблоне, что и в BASIC-PLUS и MS BASIC. Однако в этой версии не использовались функции LEFT / MID / RIGHT для управления строками, а вместо этого использовалась CHANGE
команда, которая преобразовывала строку в эквивалентные значения ASCII и обратно. HP включила идентичный функционал, изменив только название на CONVERT
. [5] Кроме того, можно использовать одинарные кавычки для преобразования числовой константы в символ ASCII, что позволяет строить строку по частям; произвел строку «ABCDEF» без необходимости в функции. [6]A$='23 '64 '49 "DEF"
CHR$()
Команды MAT
Более поздние версии Dartmouth BASIC включали набор MAT
команд, которые позволяли выполнять операции с целыми массивами ( матрицами ) с помощью одного оператора. Они также были доступны в более поздних версиях TSB. В своей простейшей форме MAT
используется как альтернативная форма LET
применения выражения ко всем элементам в массиве. Например:
100 РАЗМ А ( 20 ), В ( 20 ) ... 200 МАТ А = А + В
Добавит значение каждого значения в B к каждой записи в A таким же образом, как:
100 DIM A ( 20 ), B ( 20 ) ... 200 ДЛЯ I = 1 ДО 20 210 A [ I ] = A [ I ] + B [ I ] 220 СЛЕДУЮЩИЙ I
Эти команды не только делают код короче и понятнее, но и обладают тем преимуществом, что они сильно оптимизированы и легко превосходят по производительности команды FOR / NEXT. [7] Дополнительные функции и операторы изменяют PRINT
и INPUT
инвертируют массивы, а также создают единичные матрицы и тому подобное в одном операторе. [8]
Прочие отличия
TSB также включает ряд более мелких отличий от других диалектов. Среди наиболее важных:
#
- необязательная форма неравного сравнения, идентичная<>
[9]- computed-goto с использованием
ON...GOTO/GOSUB
синтаксиса не поддерживается. Вместо этого он выполняет ту же функцию, выбирая номер строки из списка на основе его порядкового номера. Например, всегда будет переходить к строке 10, тогда как будет переходить к другим строкам, если значение A равно 1, 2 или 3. [10]GOTO expression OF 1,2,3...
GOTO 1 OF 10,20,30
GOSUB A OF 100,200,300
- Логический и реляционные операторы могут быть использованы в любом математическом выражении, возвращая значение 0 для ложных или 1 для истинного, что было необычно для основных языков того времени, но популярна в таких языках , как C . Например, произойдет переход к строке 1600, если C или D больше нуля, потому что выражение будет оцениваться как «истина» в . Если C и D оба равны нулю, он оценит его как «false», и ветвь не будет выполнена.
IF C+D THEN 1600
C+D
IF
IF
- TSB включает в
ENTER
себя вариант стандартногоINPUT
заявления, которое продолжается по истечении установленного срока.ENTER
имеет три входа, ограничение по времени в секундах, возвращаемую переменную, содержащую фактическое истекшее время (или код состояния), и, наконец, пользовательский ввод. Например, пользователь будет ждать 15 секунд, чтобы ввести один символ. T будет содержать фактическое время, которое они использовали, -256, если таймер истек, или -257 или -258, чтобы указать на проблемы с терминалом. [11]ENTER 15,T,A$[1,1]
- При печати строковых констант (литералов) точки с запятой внутри строки не нужны. Например, не требует точки с запятой между строковыми константами и переменной A. [12] Некоторые другие BASIC, включая MS, также поддерживают этот синтаксис. Другие, такие как Atari или Integer, этого не сделали.
PRINT "THE NUMBER IS"A", TRY A LARGER VALUE."
PRINT
Используемая табуляция запятых останавливает очень 15 символов, оставляя 12 в конце строки, всего 72. [13]LIN
Функция работает как вертикальный аналогTAB
. вставит три возврата каретки, возможно, в существующую строку, если конечная точка с запятой или запятая была активна, в то время как особый случай всегда будет переходить к следующей строке. [14] В Integer BASIC была похожая функция, называемая .LIN(3)
LIN(-1)
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 , стр. F-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 2000
- Музей компьютеров HP
- История компьютерных систем БТИ