Турбо-БЕЙСИК XL
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2020 г. ) |
![]() Стартовый экран версии 1.5 | |
Оригинальный автор(ы) | Фрэнк Островски |
---|---|
Первоначальный выпуск | декабрь 1985 г |
Написано в | 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.
Производительность
[ редактировать ]![]() | Возможно, этот раздел содержит оригинальные исследования . ( Май 2021 г. ) |
Самой примечательной особенностью 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, можно отметить следующие:
- улучшенные звуковые и графические команды
- более гибкие команды ввода-вывода , включая к диску доступ
- структурированного программирования конструкции
- простые отладки средства
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Ахль, Дэвид (ноябрь 1983 г.). «Эталонный сравнительный тест» . Творческие вычисления . п. 260.
- Фетцер, Рон (1985). Расширенная документация Turbo-BASIC XL (PDF) .
Внешние ссылки
[ редактировать ]- Листинги Turbo-Basic XL из Happy Computer журнала