Jump to content

Турбо-БЕЙСИК XL

Турбо-БЕЙСИК XL
Оригинальный автор(ы) Фрэнк Островски
Первоначальный выпуск декабрь 1985 г .; 38 лет назад ( 1985-12 )
Написано в 6502 сборка
Платформа Атари 8-битная

Turbo-BASIC XL — это расширенная версия языка программирования BASIC для 8-битных компьютеров Atari . Это совместимая расширенная версия Atari BASIC , поставляемая с 8-битными системами Atari. Turbo-Basic XL был разработан Фрэнком Островски и опубликован в декабрьском номере немецкого компьютерного журнала Happy Computer за 1985 год . Вскоре после этого была выпущена версия для моделей 400/800 под названием Frost Basic 1.4 . Другие авторы выпустили несколько модифицированных версий, работающих с разными системами DOS.

Turbo-Basic XL значительно улучшает производительность по сравнению с Atari BASIC. Программа Atari BASIC, загруженная в Turbo-BASIC без каких-либо изменений, обычно работает примерно в три раза быстрее. Turbo-Basic XL Компилятор создавал двоичные исполняемые файлы , что еще больше повышало производительность программы примерно в десять раз быстрее, чем Atari BASIC. Turbo-Basic XL также включает расширенный редактор, поддержку именованных процедур, WHILE...ENDWHILE и подобные блочные конструкции, а также добавлен доступ к базовому оборудованию, что, среди прочего, позволяло работать с подключенными дисководами без выхода в DOS .

Вскоре Островский получил работу в компании GFA Systemtechnik GmbH (в то время известной как Integral Hydraulik ), где он адаптировал Turbo-Basic XL в GFA BASIC для Atari ST , который стал одним из самых популярных BASIC на этой платформе.

С момента своего выпуска в 1979 году семейство 8-битных систем обычно поставлялось с версией Atari BASIC на картридже ПЗУ или встроено во внутренние ПЗУ на более поздних машинах. Эта версия BASIC содержала ряд пользовательских команд, которые обеспечивали частичный доступ к расширенным функциям системы, таким как графика и звук. Он был общеизвестно медленным и находился в самом низу списка микрокомпьютерных BASIC в оригинальной версии теста Creative Computing Дэвида Ала . [1]

Низкая производительность официального Atari BASIC привела к появлению на рынке сторонних интерпретаторов BASIC с более высокой производительностью или большим количеством команд. Среди них был официальный порт Microsoft BASIC, продаваемый Atari, несколько улучшенных версий, выпущенных компанией Optimized Systems Software , написавшей оригинальный Atari BASIC по контракту, и многие другие. Также было несколько компиляторов Atari BASIC от разных производителей.

Turbo-Basic XL появился в этом списке поздно и впервые был опубликован в декабре 1985 года как программа ввода . Он был уникален тем, что существовал как в версии интерпретатора, так и в версии компилятора. Он включал код, позволяющий использовать преимущества расширенной памяти, доступной на машинах серии XL, а затем и серии XE. Это означало, что он не мог работать на исходных системах 400/800, что побудило Островского создать порт, известный как Frost BASIC (сокращение от «Фрэнк Островский»), который был привязан к Atari DOS 2.0.

Внутренние команды, связанные с диском, были привязаны к конкретным версиям DOS. Стал доступен ряд портов на разные версии DOS.

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

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

Самой примечательной особенностью Turbo-Basic была значительно увеличенная скорость; немодифицированная программа Atari BASIC, загруженная в Turbo-Basic, обычно работала в три-пять раз быстрее, а преимущество в скорости увеличивалось по мере увеличения размера программы. Во многом это произошло благодаря ряду улучшений известных проблем в исходном коде Atari BASIC.

В большинстве BASICов команда GOTO обрабатывалась путем чтения соответствующего номера строки и последующего поиска этой строки кода в программе. В BASIC, производных от MS, номера строк хранились в виде 16-битных целых чисел и числовых констант в коде в исходном формате ASCII . Когда строка типа GOTO 1000 был обнаружен, интерпретатор использовал специальный код для преобразования «1000» в 16-битный формат, а затем искал его. Atari BASIC работал по-другому, преобразуя все числовые константы в 6-байтовый формат с плавающей запятой при вводе строки. Это означало, что «1000» больше не было в формате ASCII, и его нужно было преобразовать из формата с плавающей запятой в целочисленный формат. Код для этого не был хорошо оптимизирован и мог занимать более 2 мс (в среднем 1–1,5 мс).

Циклы FOR...NEXT — еще одна распространенная конструкция в программах на языке BASIC. В большинстве BASIC, когда часть FOR встречалась во время выполнения, ее местоположение в памяти исходного кода помещалось в стек вызовов , чтобы можно было легко вернуться в это место при обнаружении связанного NEXT. По неизвестным причинам Atari BASIC поместил номер строки FOR в стек, а затем просмотрел весь код этой строки, когда встретил NEXT. Для программ, выполняющих значительные циклы, что часто бывает в BASIC, это может привести к резкому снижению производительности.

Turbo-Basic реализовал циклы FOR с использованием адреса, как это было в MS BASIC, и, таким образом, выполнял циклы примерно с той же производительностью, что и MS. Затем он пошел дальше и значительно улучшил производительность GOTO. Номера строк были отправлены в хеш-функцию , которая разбила их на фрагменты по 256 строк. При входе в программу адрес первого из этих фрагментов сохранялся в таблице из 128 значений. Во время выполнения, когда требовался поиск номера строки, он сначала выбирал ближайшее, но меньшее значение в таблице, получал адрес, а затем начинал поиск строки с этой точки. Улучшение было наиболее заметным в более крупных программах, где время сканирования становилось все более дорогим, поэтому Turbo-Basic мог добиться 5-кратного увеличения в более крупных программах.

Другой основной причиной низкой производительности Atari BASIC был очень медленный двоично-десятичный (BCD) код с плавающей запятой . Библиотека , содержавшаяся в отдельном ПЗУ объемом 2 КБ и считавшаяся частью операционной системы , в отличие от самого BASIC, была написана в спешке и никогда не оптимизировалась. Некоторые процедуры, особенно функции умножения и возведения в степень, работали намного медленнее, чем могли бы быть.

Turbo-Basic исправил это, включив собственную полную библиотеку операций с плавающей запятой, которая не только устранила многие из этих проблем, но и дополнительно оптимизировала код за счет развертывания небольших циклов. Для программ, которые широко использовали математические вычисления, новая библиотека привела к значительному повышению производительности, переместив Atari из нижней части списков Creative Computing Benchmark в верхнюю часть, обойдя ряд машин, которые были намного быстрее в аппаратном обеспечении.

Новые возможности

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

Среди дополнительных функций Turbo-Basic XL, добавленных в Atari BASIC, можно отметить следующие:

См. также

[ редактировать ]
  1. ^ Ахль, Дэвид (ноябрь 1983 г.). «Эталонный сравнительный тест» . Творческие вычисления . п. 260.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 530d6410a4a2833451486f8cc04008ae__1715845920
URL1:https://arc.ask3.ru/arc/aa/53/ae/530d6410a4a2833451486f8cc04008ae.html
Заголовок, (Title) документа по адресу, URL1:
Turbo-BASIC XL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)