stringtranslate.com

HP Time-Shared BASIC

HP Time-Shared BASIC ( HP TSB ) — интерпретатор языка программирования BASIC для линейки мини- компьютеров HP 2000 компании Hewlett-Packard с разделением времени . TSB исторически известен как платформа, на которой были выпущены первые публичные версии игры Star Trek .

Система реализует диалект BASIC, а также элементарную учетную запись пользователя и библиотеку программ, что позволяет нескольким людям использовать систему одновременно. Эти системы были основной силой в начале-середине 1970-х годов и генерировали большое количество программ. HP поддерживала базу данных программ, предоставленных другими, и клиенты могли заказывать их на перфоленте за номинальную плату.

Большинство BASIC 1970-х годов ведут свою историю от оригинального Dartmouth BASIC 1960-х годов, но ранние версии Dartmouth не обрабатывали строковые переменные и не предлагали функции манипуляции строками. Поставщики добавляли собственные решения; HP использовала систему, похожую на Fortran и другие языки с нарезкой массива , в то время как DEC позже представила эти MID/LEFT/RIGHTфункции.

С появлением микрокомпьютеров на рынке в середине 1970-х годов появилось много новых BASIC, которые основывали свои парсеры на синтаксисе DEC или HP. Altair BASIC , первоначальная версия того, что стало Microsoft BASIC , была создана по образцу BASIC-PLUS от DEC. Другие, включая Integer BASIC от Apple , 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. Привилегированные учетные записи начинались с буквы «A» и имели некоторые дополнительные возможности хранения команд и программ. Учетная запись суперпользователя — 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]

Обработка строк

Строки в TSB рассматриваются как массив символов, а не как один многосимвольный объект. По умолчанию им выделяется один символ в памяти, и если требуется строка большей длины, их необходимо указать перед использованием. Например, создаст строку, которая может содержать максимум 10 символов. Максимальная длина строки в TSB составляет 255 символов. [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] [a] Кроме того, можно было использовать одинарные кавычки для преобразования числовой константы в символ ASCII, что позволяло создавать строку по частям; получалась строка «ABCDEF» без необходимости в функции. [6]A$='23 '64 '49 "DEF"CHR$()

МАТ команды

Более поздние версии Dartmouth BASIC включали набор MATкоманд, которые позволяли выполнять операции над целыми массивами ( матрицами ) с помощью одного оператора. Они также были доступны в более поздних версиях TSB. В своей простейшей форме MATиспользуется как альтернативная форма LET, применяя выражение ко всем элементам массива. Например:

100 РАЗМЕР А ( 20 ), Б ( 20 ) ... 200 МАТЕРИАЛ А = А + Б    

Добавит значение каждого значения в B к каждой записи в A, таким же образом, как:

100 РАЗМЕР A ( 20 ), B ( 20 ) ... 200 ДЛЯ I = 1 ДО 20 210 A [ I ] = A [ I ] + B [ I ] 220 СЛЕДУЮЩИЙ I         

Помимо того, что эти команды делают код короче и очевиднее, они также имеют преимущество в том, что они высоко оптимизированы и легко превосходят использование FOR/NEXT. [7] Дополнительные функции и операторы изменяют PRINTи INPUT, инвертируют массивы и строят матрицы идентичности и т. п. в одном операторе. [8]

Другие отличия

TSB также включает в себя ряд более мелких различий с другими диалектами. Среди наиболее важных:

Смотрите также

Примечания

  1. ^ Wang BASIC также использовал CONVERT, но он преобразовывал числа в строки, как и VALфункция.

Ссылки

Цитаты

  1. ^ HP 2000A — Руководство пользователя, август 1969 г. Номер детали 02000-90002, [1]. Получено 09.05.2016
  2. ^ HP 2000/Access BASIC — Справочное руководство, номер детали 22687-90001, [2]. Получено 09.05.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, стр. F-4.
  11. Ссылка 1976, стр. 2-15.
  12. Ссылка 1976, стр. 2-10.
  13. Ссылка 1976, стр. 2-9.
  14. Ссылка 1976, стр. 2-11.

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

Внешние ссылки