Jump to content

Applesoft БЕЙСИК

Applesoft БЕЙСИК
Оригинальный автор(ы) Марк Макдональд
Рик Вейланд
Первоначальный выпуск 1977 год ; 47 лет назад ( 1977 )
Стабильная версия
Applesoft II / 1978 ; 46 лет назад ( 1978 )
Операционная система Яблоко II
Тип Майкрософт БЕЙСИК

Applesoft BASIC — это диалект Microsoft BASIC , разработанный Марком Макдональдом и Риком Вейландом и поставляемый с Apple II компьютерами . Он заменяет Integer BASIC и является BASIC в ПЗУ во всех компьютерах серии Apple II после исходной модели Apple II . Его также называют FP BASIC (от слова с плавающей запятой ) из-за Apple DOS. команды FP используется для его вызова вместо INT для целочисленного БЕЙСИКА.

Applesoft BASIC был предоставлен Microsoft , и его название происходит от названий Apple Computer и Microsoft. Сотрудники Apple, в том числе Рэнди Виггинтон , адаптировали интерпретатор Microsoft для Apple II и добавили несколько функций. Первая версия Applesoft была выпущена в 1977 году на кассете и не имела должной поддержки графики высокого разрешения. Applesoft II , который был доступен на кассете и диске, а также в ПЗУ Apple II Plus и последующих моделей, был выпущен в 1978 году. Именно эта последняя версия имеет некоторые синтаксические различия и поддержку графики высокого разрешения Apple II. режимов, что обычно является синонимом термина «Applesoft».

Компилятор Applesoft BASIC, TASC (The Applesoft Compiler), был выпущен Microsoft в 1981 году. [1]

Когда Стив Возняк писал Integer BASIC для Apple II , он не реализовал поддержку арифметики с плавающей запятой , поскольку его в первую очередь интересовало написание игр — задача, для которой одних целых чисел было достаточно. [2] В 1976 году Microsoft разработала Microsoft BASIC для технологии MOS Technology 6502 , но в то время не было ни одного производственного компьютера, который бы его использовал. Узнав, что у Apple есть машина 6502, Microsoft спросила, заинтересована ли компания в лицензировании BASIC, но Стив Джобс ответил, что у Apple такая машина уже есть.

Apple II был представлен публике на компьютерной ярмарке Западного побережья в апреле 1977 года и поступил в продажу в июне. Одной из наиболее частых жалоб клиентов на компьютер было отсутствие в BASIC вычислений с плавающей запятой. [3] Ситуация усугублялась тем, что конкурирующий персональный компьютер Commodore PET с самого начала имел интерпретатор BASIC с поддержкой операций с плавающей запятой. Поскольку Возняк — единственный человек, который достаточно хорошо понимал Integer BASIC, чтобы добавлять функции с плавающей запятой, — был занят диском и контроллером Disk II , а также Apple DOS , Apple обратилась к Microsoft.

Сообщается, что Apple получила восьмилетнюю лицензию на Applesoft BASIC от Microsoft за фиксированную плату в размере 31 000 долларов и продлила ее в 1985 году по соглашению, которое предоставило Microsoft права и исходный код для версии BASIC от Apple для Macintosh . [4] Applesoft была разработана с учетом обратной совместимости с Integer BASIC и использует ядро ​​реализации Microsoft 6502 BASIC, которая включает использование команды GET для обнаружения нажатия клавиш и не требует пробелов в строках программы. Хотя Applesoft BASIC медленнее, чем Integer BASIC, у него есть много функций, которых нет в старом BASIC:

  • Атомарные строки: строка больше не является массивом символов (как в Integer BASIC и C ); вместо этого это объект , собирающий мусор (как в Scheme и Java ). Это позволяет использовать строковые массивы; DIM A$(10) создает массив из одиннадцати строковых переменных с номерами от 0 до 10.
  • Многомерные массивы (числа или строки)
  • Переменные с плавающей запятой одинарной точности, 8-битной экспонентой и 31-битной мантистикой, а также улучшенные математические возможности, включая тригонометрические и логарифмические функции.
  • Команды для графики высокого разрешения
  • DATA заявления, с READ и RESTORE команды для представления числовых и строковых значений в количестве
  • CHR$, STR$, и VAL функции для преобразования между строковыми и числовыми типами (оба языка имели ASC функция)
  • Пользовательские функции : простые однострочные функции, написанные на BASIC, с одним параметром.
  • Перехват ошибок: разрешение программам BASIC обрабатывать непредвиденные ошибки с помощью подпрограмм, написанных на BASIC.

И наоборот, Applesoft не хватает MOD (остаток) из Integer BASIC.

Адаптация BASIC для Apple II была утомительной работой, поскольку Apple получила исходный список Microsoft 6502 BASIC, который оказался ошибочным и также требовал добавления команд Integer BASIC. Поскольку у Apple не было ассемблера 6502, команда разработчиков была вынуждена отправить исходный код по телефонным линиям в компанию Call Computer, которая предлагала услуги компилятора. Это был чрезвычайно утомительный и медленный процесс, и после того, как Call Computer потерял исходный код из-за неисправности оборудования, один из программистов, Клифф Хьюстон, использовал свой собственный компьютер IMSAI 8080 для перекрестной сборки исходного кода BASIC. [5]

Applesoft похож на BASIC 2.0 от Commodore, за исключением функций, унаследованных от Integer BASIC. Есть несколько незначительных отличий, таких как отсутствие в Applesoft побитовых операторов; в противном случае большинство программ BASIC, не использующих аппаратно-зависимые функции, будут работать на обоих BASIC.

The Оператор PR# перенаправляет вывод на карту расширения и IN# перенаправляет ввод с карты расширения. Номер слота карты указывается после PR# или IN# в операторе. Компьютер зависает, если в слоте нет карты. PR#0 восстанавливает вывод на экране из 40 столбцов и IN#0 на клавиатуру.

The Оператор PR# можно использовать для перенаправления вывода на принтер (например, 10 PR#x:PRINT"Hello!"), где x — номер слота, в котором находится карта порта принтера. Чтобы отправить листинг программы BASIC на принтер, пользователь вводит PR#x:LIST.

С использованием PR# в слоте с дисководом (обычно в слоте 6) заставляет Applesoft загружать дисковод. С использованием PR# в слоте с платой на 80 столбцов (обычно в слоте 3) переключается в текстовый режим на 80 столбцов.

Как и в Commodore BASIC, числовые переменные хранятся в виде 40-битных чисел с плавающей запятой; каждая переменная требует пяти байт памяти. Программист может обозначить переменные как целые числа, поставив после них знак процента; в этом случае они используют два байта и ограничены диапазоном от -32768 до 32767; однако BASIC внутренне преобразует их обратно в формат с плавающей запятой при выполнении вычислений, в то время как каждый знак процента также занимает дополнительный байт программного кода, поэтому на практике эта функция полезна только для уменьшения использования памяти большими переменными массива, поскольку она не дает никакого выигрыша в производительности. .

Функция RND генерирует псевдослучайное дробное число от 0 до 1. RND(0) возвращает последнее сгенерированное случайное число. RND с отрицательным числом перейдет к точке в последовательности, определяемой конкретным используемым отрицательным числом. RND с любым положительным значением генерирует следующее число в последовательности, независимо от заданного фактического значения.

Как и другие реализации Microsoft BASIC, Applesoft отбрасывает пробелы (за пределами строк и комментариев) в строках программы. LIST добавляет пробелы при отображении кода для удобства чтения. С LIST добавляет пробел до и после каждого токенизированного ключевого слова. Часто он создает два пробела подряд, хотя одного достаточно для удобства чтения.

Запрос по умолчанию для INPUT является вопросительным знаком. PRINT не добавляет пробел перед числами.

Ограничения

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

В нескольких ранних моделях Apple II Applesoft BASIC не поддерживал использование строчных букв в программах, за исключением строк. PRINT это допустимая команда, но print и Print приведет к синтаксической ошибке.

В Applesoft отсутствуют некоторые команды и функции, общие для большинства интерпретаторов Microsoft BASIC, отличных от 6502, например:

  • INSTR (поиск подстроки в строке)
  • PRINT USING (формат чисел в печатном виде)
  • INKEY$ (проверьте нажатие клавиши, не останавливая программу; хотя это действие достигается с помощью PEEK в позиции $C000)
  • LPRINT (вывод на принтер вместо экрана)

Applesoft не имеет команд для работы с файлами или дисками, кроме сохранения и загрузки программ с помощью кассеты. Дисковая операционная система Apple II, известная просто как DOS, расширяет возможности языка.

Значимы только первые две буквы имен переменных. Например, «LOW» и «LOSS» рассматриваются как одна и та же переменная, и попытка присвоить значение «LOSS» перезаписывает любое значение, присвоенное «LOW». Программист также должен избегать последовательных букв, которые являются командами или операциями Applesoft. Имя «SCORE» для переменной интерпретируется как содержащее OR Логический оператор , представленный как SC OR E. «ФОН» содержит GR, команда для вызова графического режима с низким разрешением и приводит к синтаксической ошибке.

Звук и графика

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

Единственная звуковая поддержка — это возможность PRINT ASCII символ колокольчика системного оповещения для подачи звукового сигнала и PEEK Команда для щелчка по динамику. Язык недостаточно быстр, чтобы из повторяющихся щелчков издавать нечто большее, чем баритоновое жужжание. Однако программы могут хранить процедуру на машинном языке, которая будет вызываться для генерации электронных музыкальных тонов, охватывающих несколько октав.

Applesoft поддерживает рисование в режимах низкого и высокого разрешения Apple II. Существуют команды для построения пикселей и рисования горизонтальных и вертикальных линий в низком разрешении. на основе векторов Высокое разрешение позволяет использовать произвольные линии и таблицы форм для рисования масштабированных и повернутых объектов. Единственным условием смешения текста и графики являются четыре строки текста внизу графического дисплея.

Начиная с Apple IIe , режим «двойного высокого разрешения» стал доступен на машинах со 128 КБ памяти. Этот режим по существу дублирует разрешение исходного режима высокого разрешения, но включает все 16 цветов палитры низкого разрешения. Applesoft не обеспечивает прямую поддержку этого режима. Режимы, специфичные для Apple IIGS, также не поддерживаются.

Расширения

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

Applesoft BASIC можно расширить двумя способами: амперсандом ( & ) команда и Функция USR() . Это две функции, которые вызывают низкоуровневые подпрограммы машинного языка, хранящиеся в памяти, что полезно для подпрограмм, которые должны быть быстрыми или требуют прямого доступа к произвольным функциям или данным в памяти. Функция USR() принимает один аргумент и может быть запрограммирована для получения и возврата вычисленного значения функции, которое будет использоваться в числовом выражении. & фактически является сокращением для CALL с предопределенным адресом. Вызов подпрограмм в ПЗУ Applesoft позволяет подпрограммам амперсанда анализировать значения, следующие за амперсандом. Было доступно множество сторонних коммерческих пакетов для расширения Applesoft с помощью подпрограмм амперсанда.

Недостаток с перехватом ошибок через ONERR означает, что системный стек не сбрасывается, если не вызывается процедура обработки ошибок RESUME, что потенциально может привести к сбою. [6] Встроенная функция генератора псевдослучайных чисел RND способен выдавать предсказуемую серию выходных сигналов благодаря способу включения генератора при первом включении. Такое поведение противоречит описанию этой функции в документации Apple. [7]

Производительность

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

Первоначально Возняк называл свой Integer BASIC «Game BASIC» (написав его, чтобы реализовать Breakout клон для своего нового компьютера). [2] Лишь немногие экшн-игры были написаны на Applesoft BASIC, во многом потому, что использование чисел с плавающей запятой для всех математических операций снижает производительность.

Программы Applesoft BASIC хранятся в виде связанного списка строк; а GOTO или GOSUB занимает линейное время . В некоторых программах подпрограммы располагаются вверху, чтобы сократить время их вызова.

В отличие от Integer BASIC, Applesoft не преобразует буквальные числа (например, 100) в исходном коде в двоичные при вводе строки. Вместо этого строка ASCII преобразуется при каждом выполнении строки. Поскольку поиск переменных часто выполняется быстрее, чем это преобразование, может быть быстрее сохранить числовые константы, используемые внутри циклов, в переменных до входа в цикл.

Пример кода

[ редактировать ]
Привет, мир! , с инверсным видео и колокольчиком , запустите, а затем перечислите

Привет, мир! в Applesoft BASIC можно ввести следующим образом:

10TEXT:HOME
20?"HELLO WORLD"

В одну строку кода можно включить несколько команд, если они разделены двоеточием ( :). ? может использоваться в Applesoft BASIC (и почти во всех версиях Microsoft BASIC) как ярлык для слова «ПЕЧАТЬ», хотя написание этого слова не только приемлемо, но и канонично — Applesoft преобразовала «?» во введенных программах к тому же токену, что и «PRINT» (таким образом, при использовании «?» память фактически не сохраняется), поэтому любой из них отображается как «PRINT», когда программа указана в списке. Программа выше появляется в виде LIST команда как:

10  TEXT : HOME
20  PRINT "HELLO WORLD"

Когда Applesoft II BASIC был первоначально выпущен в середине 1978 года, он был записан на кассете и мог быть загружен в память через монитор машинного языка Apple II. Когда в 1979 году улучшенный Apple II+ заменил исходный II, Applesoft теперь была включена в ПЗУ и автоматически запускалась при включении питания, если не было загрузочной дискеты. И наоборот, Integer BASIC теперь был удален из ПЗУ и превращен в исполняемый файл на диске DOS 3.3.

Ранняя эволюция

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

Исходная версия Applesoft, хранящаяся в оперативной памяти, как описано в ее справочном руководстве от ноября 1977 года, имеет меньший код интерпретатора, чем более поздняя версия Applesoft II, занимающая 8½ КБ памяти. [8] вместо 10 КБ, используемых в более поздней версии Applesoft II. Следовательно, в нем отсутствует ряд командных функций, разработанных для более поздней, основной версии:

  • Все команды, поддерживающие графику Apple «высокого разрешения» (всего 9)
  • Перехват ошибок с помощью ONERR...GOTO и RESUME
  • Сокращенный вызов машинной процедуры "&"
  • Очистка экрана HOME (вызов процедуры системного ПЗУ)
  • Управление выводом текста NORMAL, INVERSE, FLASH и SPEED=
  • Функция печати пространства SPC() указана в руководстве среди зарезервированных слов, но иначе не документирована (функция печати TAB() документирована )
  • Кассетное хранилище числовых массивов: STORE и RECALL
  • Ответ устройства: ПОДОЖДИТЕ

а также несколько, которые были в более поздней версии, которые уже присутствовали в Apple Integer BASIC:

  • Удаление строки программы: DEL
  • Регулярный доступ к машине: ВЫЗОВ
  • Доступ к периферийным устройствам: IN# и PR# (хотя IN без «#» указан среди зарезервированных слов)
  • Управление диапазоном памяти: HIMEM: и LOMEM:
  • Отслеживание выполнения для отладки: TRACE и NOTRACE.
  • Позиционирование экрана: HTAB и VTAB
  • Подпрограмма прерывает POP
  • Функции PDL() для чтения аналоговых контроллеров и SCRN() для чтения графического экрана низкого разрешения (обе имеют доступ к процедурам системного ПЗУ).

Кроме того, его графические команды с низким разрешением имеют названия, отличные от их аналогов в Integer BASIC/Applesoft II. Все имена команд имеют форму PLTx, поэтому GR, COLOR=, PLOT, HLIN и VLIN называются PLTG, PLTC, PLTP, PLTH и PLTV соответственно. Команда возврата в текстовый режим, известная в других версиях как TEXT, представляет собой просто TEX и имеет оговорку, что она должна быть последней командой в строке программы.

Applesoft BASIC 1.x был ближе к исходному коду Microsoft 6502 BASIC, чем более поздний Applesoft II; он сохранил размер памяти? подскажет и отобразит уведомление об авторских правах Microsoft. Чтобы обеспечить согласованность с Integer BASIC, приглашение «ОК» в коде Microsoft было заменено символом ]. Applesoft 1.x также предлагал пользователю при загрузке отключить оператор REM и ключевое слово LET в операторах присваивания в обмен на графические команды знаний.

Функция USR() также определена по-другому и служит заменой отсутствующей команды CALL. Его аргументом является не передача числового значения подпрограмме машинного языка, а адрес вызова самой подпрограммы; нет «крючка» для предварительного определения адреса. Во всех нескольких примерах в руководстве эта функция используется только для доступа к процедурам «ПЗУ системного монитора» или коротким пользовательским процедурам для управления процедурами ПЗУ. Не упоминается какой-либо код для вычисления значения, возвращаемого самой функцией; функция всегда отображается как назначенная «фиктивным» переменным, которые без действий по установке значения с помощью пользовательского кода просто получают бессмысленное значение, возвращаемое им. Даже подпрограммы ПЗУ, к которым осуществляется доступ, которые возвращают значения (в примерах те, которые предоставляют услуги функций PDL() и SCRN()), просто сохраняют свои значения пользовательскими подпрограммами в местах, которые отдельно PEEKed в последующем операторе.

В отличие от Integer BASIC и Applesoft II, логические операторы AND, OR и NOT выполняют побитовые операции над 16-битными целочисленными значениями. Если им даны значения, выходящие за пределы этого диапазона, возникает ошибка.

Термины OUT и PLT (и вышеупомянутый IN) появляются в списке зарезервированных слов, но нигде не объясняются в руководстве.

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

Coleco заявила, что Adam совместим с Applesoft. исходный код SmartBASIC ее домашнего компьютера [9]

Microsoft лицензировала BASIC, совместимый с Applesoft, компании VTech для ее Laser 128 клона . [10]

См. также

[ редактировать ]
  1. ^ Руководство пользователя TASC (компилятор AppleSoft) . Белвью, Вашингтон: Потребительские продукты Microsoft. 1981.
  2. ^ Jump up to: а б Возняк, Стив (1 мая 2014 г.). «Как Стив Возняк написал BASIC для оригинальной Apple с нуля» . Гизмодо . Проверено 2 мая 2014 г.
  3. ^ Маккракен, Гарри (16 апреля 2012 г.). «Apple II Forever: дань уважения 35-летию первого знакового продукта Apple» . Время . ISSN   0040-781X . Проверено 21 июня 2019 г.
  4. ^ Херцфельд, Энди (12 февраля 2014 г.). «MacBasic – печальная история MacBasic» . Фольклор.org .
  5. ^ «Глава 16: Языки» . История Apple II . Июль 2010 года . Проверено 6 июля 2016 г.
  6. ^ Справочное руководство программиста Applesoft BASIC (только для IIe) . Apple Computer, Inc. 1982. с. 70.
  7. ^ Олдридж, Джеймс В. (июль 1987 г.). «Предупреждения относительно генерации случайных чисел на Apple II» . Методы, инструменты и компьютеры исследования поведения . 19 (4): 397–99. дои : 10.3758/BF03202585 . S2CID   62633043 .
  8. ^ Справочное руководство по базовому языку Applesoft с плавающей запятой повышенной точности . Apple Computer, Inc., ноябрь 1977 г.
  9. ^ Coleco представляет компьютерную систему Adam . 3 мая 2016 г. [28 сентября 1983 г.]. Событие происходит в 31:55. Архивировано из оригинала 22 ноября 2021 г. – на YouTube. Каждый, кто знает Applesoft BASIC, также знает Адама SmartBASIC. Доступны все те же команды, все те же элементы управления для этого Бейсика, этого интерпретатора. Фактически, мы собираемся показать вам программу, которая использует графические команды Applesoft... выполняемые через Адама. ... Что касается нас, то когда мы работаем на BASIC и не просматриваем и не POKE... что-либо ниже интерпретатора BASIC, мы совместимы по исходному коду.
  10. ^ Гревстад, Эрик (декабрь 1986 г.). «Лазер 128 / Доступная совместимость» . inСидр . п. 58 . Проверено 24 апреля 2017 г.

В эту статью включен текст из Everything2 , доступный под лицензией GFDL.

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