Jump to content

HP с разделением времени BASIC

HP с разделением времени BASIC
Парадигма императив
Разработчик Майк Грин
Впервые появился до 1969 года ; 55 лет назад ( 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 — одна необязательная цифра), хранящиеся в виде 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 рассматриваются как массив символов, а не как один многосимвольный объект. По умолчанию им выделяется один символ в памяти, и если необходима строка большей длины, их необходимо упомянуть перед использованием. Например, 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.

Примечания

[ редактировать ]
  1. ^ Ван BASIC также использовал CONVERT, но он преобразовывал числа в строки, как VAL функция.
  1. ^ HP 2000A — Руководство пользователя, август 1969 г., номер детали 02000-90002, [1] . Проверено 9 мая 2016 г.
  2. ^ HP 2000/Access BASIC — Справочное руководство, номер детали 22687-90001, [2] . Проверено 9 мая 2016 г.
  3. ^ Ссылка 1976 , с. 4-3.
  4. ^ «Создайте свою собственную версию Microsoft BASIC» .
  5. ^ Ссылка 1976 , с. 4-6.
  6. ^ Ссылка 1976 , с. 4-2.
  7. ^ Ссылка 1976 , с. 11-50.
  8. ^ Ссылка 1976 , стр. 11–49, 11–55.
  9. ^ Ссылка 1976 , с. 2-5.
  10. ^ Ссылка 1976 , с. Ф-4.
  11. ^ Ссылка 1976 , с. 2-15.
  12. ^ Ссылка 1976 , с. 2-10.
  13. ^ Ссылка 1976 , с. 2-9.
  14. ^ Ссылка 1976 , с. 2-11.

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1d554e7dd19214f1bfe2bee740914966__1713912660
URL1:https://arc.ask3.ru/arc/aa/1d/66/1d554e7dd19214f1bfe2bee740914966.html
Заголовок, (Title) документа по адресу, URL1:
HP Time-Shared BASIC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)