ZX Spectrum
Game

HiSoft BASIC

HiSoft (Великобритания),

Авторы: ,

Жанр: Программирование: BASIC


Доступные версии

 Неофициальное издание
Играть!
 Переиздание
Играть!
 Оригинальное издание
Играть!
 Оригинальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание
  • Описание (авт.пер.)
  • Описание (авт.пер.)
  • Информация

HiSoft BASIC

Быстрый, с плавающей точкой ZX BASIC Compiler

Автор Кэмерон Hayne с программами Энди Pennell

Установка с помощью компьютера Amstrad 1512 работает WordPerfect 5.1 Начало работы и учебное пособие          

Введение

HiSoft BASIC является BASIC компилятор, который превосходит все остальные по Спектр. Есть целые компиляторы, которые могут сделать базовые программы работать более чем в 100 раз быстрее, но они только обрабатывать целые (не десятичных, только целые числа от -32768 до +32767 или от 0 до 65535) и часто имеют другие ограничения. Есть плавающей точкой компиляторы, которые обрабатывают весь спектр десятичных чисел и все Функции спектра, но (несмотря на рекламируемые претензии) они ускорить программы лишь в 3 раза до 5).

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

HiSoft BASIC может составить почти все BASIC спектра в в быстрая машина код. В отличие от некоторых плавающей точкой компиляторов, он может обрабатывать пользовательские функции и двумерный числовой и струнные массивы. Большинство других компиляторов есть блок подпрограмм о 5K в длину (называется автономной работы), которые должны присутствовать на составлен код работать. Это означает, что даже самую короткую BASIC Программа собирает более чем 5K. HiSoft BASIC включает только Процедуры выполнения и которые на самом деле необходимо для вашего кода, так что Короче BASIC программа может составить в только несколько сотен байт.

Кроме того, в отличие от других компиляторов, HiSoft BASIC позволяет поставить составлен код где угодно в оперативной памяти вы хотите, даже в тех местах, как правило, занимал самим компилятором!

HiSoft BASIC составляет лишь около 11K в длину, так что быстро загружается. Это может составить основные программы в памяти до около 30K в длину на 48K Spectrum или до 40К на больших, 128K машин. Другой Отличительной чертой Hisoft BASIC является то, что она обеспечивает полный Информация о коде, который она производит, так что можно легко интерфейс скомпилированный код с ко-резидент BASIC программы. Или, если вы заинтересованы в машинный код, вы можете использовать это Информация научиться использовать подпрограммы ПЗУ.

Наконец, HiSoft BASIC не слепо следовать рецепту в преобразовании BASIC в машинный код. Вместо этого он следит за простые случаи (например: операции с полномочиями 2, постоянного массива Индексы и т.д.), которые он может составить в особенно эффективный код.

HiSoft BASIC является очень простой в использовании, но мы рекомендуем вам прочитать это руководство перед началом каких-либо серьезных компиляцию.

Какой спектр?

Существует версия Hisoft BASIC для каждого английском ROM Spectrum до сих пор освобождены, от скромного, резины кузова 48К машины до впечатляет Спектр +3. Кассета имеет отдельную версию для 48К машины, другой для 128К и 2, и дисковой версии является специально для 3, который добавляет обработки файлов. Пожалуйста, убедитесь, что у вас есть правильный вариант для вашего компьютера перед продолжение.

Мы не имеем версию Hisoft BASIC, который гарантированно работать на + 3 с испанскими дисков, и мы не еще есть один, который работает на + 2A!

Это руководство описано все версии Hisoft BASIC; где существуют Машинно-зависимые особенности они будут помечены в следующем способ:

     Только 48 применимо к 48K машины.

     128 относится к 128 и 2 компьютеров (не +3) только.

     3 специальные 3 особенности.

Если так не отмечен, текст относится ко всем версиям компилятора.

Существуют различные ключевые комбинации, используемые для вызова Hisoft BASIC Команды и они отличаются между 48K и 128K (в том числе 3) версии. Везде, где мы должны обратиться к любой из этих клавиш, они будут показать так: Компиляция что означает нажать клавишу-комбинации что будет скомпилировать программу. Конкретные клавиши, соответствующие для каждой команды приведены в Приложении 4, который вы должны относиться к Теперь, прежде чем двигаться дальше.

Создание резервной копии

Кассета версия

Одна сторона кассеты отмечен 48K, другой 128К и вы

должны использовать один, соответствующий вашему компьютеру – пожалуйста, обратите внимание, что ни одна из версий будет работать на 3.

Содействие при выполнении резервную копию предоставляется в BASIC

погрузчик программа. НАГРУЗКИ, как обычно, но удерживая клавишу S во время Последняя часть. Когда вы услышите звуковой сигнал, подготовить новую ленту для записи, а затем нажмите клавишу.

Для передачи Hisoft BASIC для Microdrive, выполните описанную выше операцию но ворваться в программе после звукового сигнала. Затем измените его вставив * “м”; d; после каждого сохранения и загрузки, где d является привод Число лучшего. Наконец GOTO 9999 для получения Microdrive копию.

Если у вас есть интерфейс диска, такие как ученика или Opus вы должны изменить синтаксис погрузчика в соответствии с вашим интерфейс, в аналогично тому, как это описано выше для Microdrives.

+3 Версия

Прежде чем сделать что-либо, вы должны написать защитить свой мастер-диск для

предотвратить смущающие аварий. Убедитесь, что вы находитесь в 3 BASIC Режим, затем вставить свой мастер-диск и тип:

КОПИЯ “:. * *” В “М:” [ENTER]

Теперь вставьте новый пустой диск и тип:

ФОРМАТ “:” [ENTER]

КОПИЯ “М:. * *” В “:” [ENTER] ERASE “М:” [ENTER]

Генерал

Во всех случаях, хранить исходный кассету или диск в сейф, сухой

разместить вдали от источников тепла, магнитных полей и детей! Используйте только ваш резервные копии, так что вы всегда можете создать новый резервную копию из Оригинальный если что-то пойдет не так.

Более 3000 человеко-часов кропотливой работы получилась в Hisoft BASIC и каждый пиратская копия ускользает некоторые из наших законному награду за это работа. В конечном счете, использование пиратского программного обеспечения у тебя болит, потребителя, потому что цены идут вверх или неприятные схемы защиты от копирования используются и потому программисты, как и мы больше не считаем полезным поставить усилия в написании хороших программ для вашего компьютера. Если вас как-то найти себя в распоряжении пиратской копией Hisoft BASIC, и вы найдете хорошие, полезные программы, то, пожалуйста, честный вещь и пойти и купить себе легальную копию! Теперь, позволяет начать использовать Hisoft BASIC.

Учебник – Попробуйте это в первую очередь

В инструкции по использованию Hisoft BASIC читать этот вводный раздел, но вместо того чтобы оставить вас, чтобы прочитать их и выяснить, вещи для себя, мы покажем вам веревки с несколькими например программы.

Если у вас есть кассетный вариант, загрузить Hisoft BASIC, наложив свое резервные копии кассету в магнитофон и типа:

LOAD “” [ENTER] и нажмите кнопку воспроизведения на вашем магнитофоне.

Если у вас есть диск копию компилятора, вставьте резервный диск

и введите:

LOAD “HIBASIC” [ENTER]

Когда она будет закончена загрузка вы увидите уведомление об авторском праве на

в верхней части экрана. Мы поставили ряд примеров программ на ленте / диск, и мы постараемся нагрузку, компиляции и запуска Теперь им. Нагрузка в первом примере программы, набрав:

LOAD “example1” [ENTER]

СПИСОК ее, а затем запустить его, чтобы проверить его и убедиться, что он работает. Это

является важным шагом, прежде чем пытаться компилировать любой программы!

Как вы, возможно, не всегда хотят, чтобы собрать все части вашего BASIC

Программа, надо сказать Hisoft BASIC, с чего начать и где остановиться компиляции. Как и во всех инструкциях к Hisoft BASIC (Называемые директивы компилятора) это делается через REM заявлении.

Start-компиляции инструкции является: REM: ОТКРЫТОЕ # (сделать это сейчас, сделав эта инструкция линия 1 пример программы).

Стоп-компиляции инструкция: REM: CLOSE # но это

опционально здесь, так как мы хотим, чтобы собрать прямо до конца BASIC программа. Теперь Компиляция и составление начнется (если вы этого не сделаете знаете, как компилировать затем посмотреть в Приложении 4).

Во время компиляции, HiSoft BASIC приостановит дважды, показывая вам некоторые Информация в нижней части экрана. Вы должны будете нажать клавишу, чтобы продолжить (не волнуйтесь по поводу информации, – вы не нужно сейчас). Границы будут менять цвет (пурпурный-голубой-белый) и странные точки и цвета появятся на экране. Мы будем объясню позже, что все это; сейчас нам просто необходимо информация, которая появится после второго нажатия кнопки. Для Первый пример программы, это должно означать, что скомпилированный код (Машинный код) длиной 357 байт, и 10 байт должны быть защищены для машинного кода переменных. Для сравнения число байтов, принятых до базовой программой без переменных также учитывая. (Обратите внимание, что ваш частности компилятор может производить немного разного размера программы, описанным здесь, как мы можем изменить компилятор время от времени, и он может генерировать несколько другой код).

Наиболее важная информация находится в двух линий, которые говорят вам, как

сохранять и загружать скомпилированный код. Адрес НАГРУЗКИ линия адрес будет использоваться после RANDOMIZE ЕГР, когда вы хотите выполнить скомпилированный код. Например, если код должен быть загружен в обратиться 65001 затем RANDOMIZE USR 65001 выполнит составлен Код. Но в то время как HiSoft BASIC там проживает более простой способ: Выполнить выполнит скомпилированный код (это относится к компилятором Команда Run подробно в Приложении 4, НЕ интерпретатор команд RUN).

Вы можете проверить машинный код теперь, если вам нравится. Кстати,

не пугайтесь на то, что это очень маленькая программа, кажется, требуют так много байт в машинном коде. Большинство байт принимаются до по времени работы – подпрограмм, включенных в случае необходимости, но которые будут повторно использованы другими частями более крупной программы. Таким образом, Рацион байт используется для машинного кода для тех, кто в BASIC будет уменьшить как размер программы возрастает.

Ваша основная программа по-прежнему существует после компиляции и может быть

модифицировано и повторной компиляции. Не меняя ничего, попробуйте скомпилировать это второй раз (использовать Compile), чтобы посмотреть, что происходит. Все информация о последнем экране будет таким же, за исключением того адрес, где скомпилированный код находится. Каждый раз при компиляции BASIC программа, скомпилированный код размещается на каком спектре считает вершина вашего пространства памяти (то есть чуть ниже RAMTOP) и RAMTOP меняется на прямо перед вновь скомпилированный код.

Чтобы вернуть эту память (путем сброса RAMTOP в исходное значение) использовать Ясно.

Мы хотим, чтобы использовать первый пример программы, чтобы проиллюстрировать, что

переменные, используемые BASIC и переменные, используемые скомпилированного кода совершенно различны.

Re-компиляции программы (компиляции). Теперь запустите базовой версии, и Затем, как непосредственным командованием, выполнить PRINT N1, N2. Теперь выполните машинный код версия (Run), на этот раз отвечая отличается номера, чем те, вы использовали для базовой версии. Теперь повторно выполнить прямая команда PRINT N1, N2. ОСНОВНЫЕ переменные еще как они были. Переменные машинного кода являются локальными для скомпилирован Код.

Не успели мы выйти этот пример, мы должны отметить, что вход

Команда является одним, что ведет себя немного по-другому в скомпилированы Код, чем это делает в BASIC. Разница в том, в своем ответе на Ошибки. В BASIC, ошибка на входе возвращает управление в редакцию с сообщением об ошибке. Это было бы неудобно в машинный код, так в скомпилированный код команды ввода ошибок в ловушке, так что любые результаты ошибок является перезапуск INPUT. Проверьте это для сами с скомпилированного кода.

Теперь введите:

LOAD “Пример 2.” [ENTER]

и перечислить его, как только он загружен. Положить в новой строке:

9 REM: ОТКРЫТОЕ #

и запустить его, чтобы убедиться, что он работает, затем скомпилировать. То, что мы хотим

к вашему вниманию сейчас количество байт рассмотрен Машина код переменные. Всего 277; это 15 байт для ДЛЯ / NEXT переменной I, 5 байт для I и 257 байт для N $. 257 состоит из 2 байт для длины N $ и 255 байт для хранения фактические символы. Поскольку имя не всегда будет, что долго, кажется расточительным, чтобы зарезервировать так много места для него. По используя REM: директива LEN мы можем сказать Hisoft BASIC сколько пространство, чтобы зарезервировать для строковой переменной.

В этом случае предположим, что мы решили, что мы в безопасности, полагая, что нет

Название могло когда-либо быть длиннее 50 символов, то мы можем рассказать Hisoft основных, вставив новую линию:

9 REM: LEN N $<= 50

(На 48К Spectrum в<= является один символ получается прессования [SYMBOL SHIFT] -Q). Сделайте это сейчас и заново компилировать. Ты будешь узнать количество байт для машинного кода переменных теперь только 72 (52 байт зарезервированы для N $). Может показаться, что 50 все еще слишком долго, но лучше подстраховаться на длинной стороне - слишком мало места может быть фатальным. Кстати, все это нужно, потому что мы выбрали для выбрать эффективности над удобства. В BASIC, когда вы назначаете для Переменная строка, старая копия уничтожается, все остальные Переменные перемешиваются вниз, и новая строка вставляется в конец списка переменных. Но для этого нужно время! В скомпилирован код от Hisoft BASIC, все переменные в том числе текстовых переменных находятся в фиксированных местах, что дает значительное улучшение в скорости. Обратите внимание, что для размеры текстовых переменных, HiSoft BASIC могу сказать от DIM заявлении, сколько места для резервирования и так РЗМ: Директива LEN не надо.

Первые два примера программ служили для иллюстрации некоторых важно

указывает об использовании Hisoft основным, но они не были очень интересными как программы, и они, конечно, не показывают какой-либо ощутимый рост в скорости; и скорость все-таки то, что вы здесь! Так введите:

LOAD “пример3” [ENTER]

и мы начнем исследовать истинные возможности компилятора.

Запустите программу, как обычно, чтобы убедиться, что он работает (мы подчеркиваем, что это является важным шагом, прежде чем пытаться компилировать любой Программа). Если вы перечислите программы вы увидите, что мы уже включали REM: OPEN # директиву в начале, так что мы готовы компилировать. Компиляция и смотреть. Вы обнаружите, что вы получите линию 290 в верхней части экрана с мигающим? и сообщение не ПОДДЕРЖКЕ внизу. Что не поддерживается является команда лента SAVE. Ни одна из команд операционной системы не поддерживаются HiSoft BASIC, потому что они, как правило, более уместно оставить в BASIC. Это где директива REM: CLOSE # полезно.

Вставьте новую строку:

271 REM: CLOSE #

а затем вновь собрать. Она будет работать на этот раз. Попробуйте недавно приобретшей

составлен машинный код, и вы увидите спираль обращается более в три раза быстрее. Несколько отступлений по программе: записка, в линиях 20-50, значения функций SIN и COS вычисляются только один раз, а затем присваивается переменных для использования в будущем. Как это функции (наряду с TAN, ASN, ACS, ATN, EXP, Л. Н., SQR) очень медленно, это умные вещи делать, когда это возможно. Отметим также, CLS в строке 15. Это избыточная в BASIC, так как CLS делается автоматически, когда мы запустили программу, но она необходима для скомпилированный код.

Но то, что о линии 290, который был оставлен из компиляции?

Поскольку у нас теперь есть машина кода версию программы, то, что мы хочу это основная программа загрузчик, что Похоже, программы на следующей странице:

     10 CLEAR, WWWWW

     20 LOAD “спираль” КОД ххххх: RANDOMIZE USR ххххх      30 СТОП      40 SAVE “спираль” КОД ххххх, ууу

где ххххх и ууу являются числа, приведенные Hisoft BASIC и WWWWW меньше ххххх (т.е. ниже) ххххх.

Теперь введите:

LOAD “Example4” [ENTER]

и перечислить его. Вы увидите, что это так же, как в примере 3, но

с дополнительными линиями в конце. Мы уже поставил линию 271 REM: CLOSE #. Если вы скомпилировать его, как сейчас, составлен Код будет точно таким же, как из соединения примера 3. Основные строки после 271 будет просто игнорировать (хотя они фигурируют в число задается Hisoft BASIC для байтов рассмотрен BASIC). Что линия 1000 делает это, чтобы ткнуть картину на экране на хранение в адрес памяти 4500; Линия 2000 напоминает его от Память на экран.

Очистите и запустить программу. Когда рисунок будет завершен, выполнить

GOTO 1000. После СТОП сообщение (это займет несколько минут) выполнить CLS, а затем GOTO 2000. Еще через несколько минут, спираль будет вновь появились на экране, но, поскольку он занимает несколько раз дольше вспомнить спираль из памяти, чем это было бы взять просто перерисовать его, это кажется бессмысленным! Но составлен версия будет быстрее! То, что мы хотим в составленном версии является есть три отдельных точек входа в машинный код: первым обратить спираль, а вторая и третья для сохранения и вызова его из памяти. У нас уже есть первый точку входа на РЗМ: ОТКРЫТОЕ # И возврата в основное происходит в REM: Отказ #.

Мы хотим, дополнительные точки входа на линиях 1000 и 2000, так что мы

вставить новые строки:

999 REM: ОТКРЫТОЕ # и

1000 REM: ОТКРЫТОЕ # (сделать это сейчас)

Возвращается к основным из этих участков кода будет от их

СТОП заявления. Там нет необходимости для каких-либо дополнительных REM: ЗАКРЫТЬ # Потому что мы хотим, чтобы собрать Право конце BASIC. Сейчас мы готовы составить так Компиляция. На этот раз вам будет необходимо Повторно нажать клавишу в качестве информации о различных точках входа появляется на нижней части экрана.

Теперь мы объясним, что означают эти цифры. Во время первого прохода

(С голубой границы) вам будет сказано, относительные адреса Различные точки входа -ie относительно начала скомпилированного кода На втором проходе (с белой рамкой) вам будет сказано, адреса исполнения (в обоих десятичной и шестнадцатеричной) из Различные точки входа. Запишите их для дальнейшего использования. Заметка Также (от окончательного экрана) количество байтов рассмотрен скомпилированный код.

Помните, что если вы пропустите какую-то информацию во время компиляции, вы

всегда можно пересобрать позже (после Clear при желании). Теперь попробуйте скомпилированный код, выполнив первую часть, чтобы привлечь спираль, то вторая часть, чтобы сохранить его в памяти, в CLS и, наконец, выполнить третью часть скомпилированного кода вспомнить спираль Экран. Обратите внимание, что Run работает только для первой точки входа. Ты должны найти, что это в настоящее время занимает примерно такое же время, чтобы вспомнить спираль из памяти, как это было бы, чтобы вновь привлечь его.

Таким образом, наш магазин и рутина напомним еще, кажется, не очень полезно. Но

есть дальнейшее совершенствование образом, мы можем сделать что будет резко увеличить скорость. Ключевой факт заметить, что переменные я, ИСТОЧНИК, и назначения линий 1000-5040 взять на только значения, которые являются положительными целыми числами (они колеблются от 16 384 до 51911). Если HiSoft BASIC будет проинформирован об этом деле (это не совсем достаточно умен, чтобы заметить это для себя!) он будет генерировать гораздо более эффективный код, потому что это может использовать родные способности Процессор Z80, а не полагаться на процедуры ROM для плавающей арифметика. Способ сообщить компилятору, чтобы использовать Директива REM: ИНТ. Эта директива должна быть осуществлена ​​перед первым REM: ОТКРЫТОЕ #, поэтому мы вставить новую строку (для этого теперь!):

9 REM: ИНТ я, адресам источника и назначения

Это говорит Hisoft BASIC, что эти переменные будут принимать только ценности, которые являются положительными целыми числами в диапазоне от 0 до 65535. We знаю, что это верно и для линий 1000 до 5040, но прежде чем мы сможем повторно компиляции мы должны проверить, что это верно и для всей программы. Там является переменной I (который в Spectrum является таким же, как переменной I) в строках 130, 160, 230, но мы легко можем видеть, что это тоже имеет положительные целые значения в нужном диапазоне. Так что вперед и повторно компиляции. Вы заметите, что новый составлен код занимает меньше байт, но реальная разница в скорости.

Теперь она занимает меньше 0,7 секунд, чтобы вспомнить экран из памяти!

Если вы время это с секундомером вы также найдете небольшой снижение времени, необходимого, чтобы нарисовать спираль. Существует нет резкое увеличение скорости рисования спираль, потому что большинство часть времени тратится на рутину ROM рисовать.

Мы только что видели, как гораздо более эффективным является использование целое

Переменные где это возможно. Тем не менее, в этой программе, это было относительно легко убедить себя, что переменные I, ИСТОЧНИК и назначения принимать только целые значения. В другом, более комплексные программы она может быть более трудно выделить целочисленных переменных. Но помощь под рукой! Введите Info. Ничего произойдет не сразу. Но теперь запустить основную программу. Тебе следует см, что меньше экран идут яркие и спираль разрабатываются более медленнее, чем обычно.

Когда она будет закончена, введите Info снова и на этот раз вы будете вознаграждены со списком переменных. Рядом с каждым переменная тип этой переменной: REAL, INTEG или POSINT (или POSINTEG – Сочетание POSINT и INTEG). Смотрите ниже для объяснения типы переменных, но сейчас просто обратите внимание, что переменная я указан как POSINTEG что означает, что его значение не вышли за пределы диапазона целые положительные числа от 0 до 32767. Программа остановился на линии 280 так, что это действительно говорит нам, что я никогда не выходит из что диапазон в линиях 130-230. Программа пока не изучены область строк 1000-5040 так переменные источника и назначения даже еще не перечислены.

Чтобы получить полное представление о тех типов переменных мы должны были бы

выполнить два других разделов программы отдельно, например, с помощью делает последовательность:

Информация

RUN GOTO 1000 GOTO 2000 Информация

Если вы не найдете времени ожидания слишком утомительным, вы могли бы попробовать это

сейчас, но в противном случае вы можете просто взять нам на слово, что в Переменные я, источника и назначения будет все вышли в списке POSINT. Все это только подтверждение то, что мы понял раньше, но вы можете видеть, как это может быть полезно, когда применительно к более сложных программ. Что информация делает это, чтобы включить программа, которая следит за значения переменных во время выполнения основных программы. Вторая информация получается это от и распечатывает результаты. Все, что вы делаете между Infos что влияет на переменные будут учтены в результатах.

Таким образом, если вы должны были сделать последовательность: информация, бежать, то пусть меня = 1,3, информация, Переменная я мог быть показан в качестве реальных, а не INTEG.

Мы должны предупредить Вас, что информация не является непогрешимым руководство

типы переменных. Чтобы проиллюстрировать это, в первую очередь избавиться от существующих базовых набрав Стереть. Не используйте новые, как, что бы стереть из Hisoft BASIC, как хорошо! Теперь наберите в программе:

     10 LET A = 0

     20 ЕСЛИ RND>0,5 то пусть = 0,5

У последовательность: информация, бежать, информация и повторите эту последовательность А

Несколько раз. Вы заметите, что переменная указана иногда как REAL, иногда как POSINTEG. Причина этого понятна – Есть филиал в программе в зависимости от значения РНД и если RND<0,5 программа не понимают, что никогда не не- интеграл. Урок вы должны сделать из этого является то, что, при помощи Информация, вы должны повторить программу достаточное количество раз с разными Входы, чтобы убедиться, что вся программа изучается. В этот пример это, вероятно, будет достаточно, чтобы сделать: информация, бежать, бежать, Беги, беги, информация.

Теперь введите:

LOAD “Example5” [ENTER]

Программа готова для компиляции, но сначала СПИСОК ее и обратите внимание на использование

ИНТ после команды DATA. Переменные X и Y читаются из этой информации и, так как они были объявлены как тип POSINT по REM: ИНТ директива, необходимо, чтобы данные были сохранены в целочисленном формате. Это достигается путем положить INT после ДАННЫЕ. Скомпилировать и запустить эту программу на свой вкус. Теперь введите:

LOAD “Example6” [ENTER] и запустите его.

Вы увидите, что это типичный пример программирования меню. Пытаться

скомпилировать его, и вы получите линию 50 в верхней части экрана с боялся НЕ ПРИ ПОДДЕРЖКЕ сообщение внизу. Линия 50 является то, что называется компьютерная заявление GOSUB. Номер строки не дано специально, но должны быть вычислены во время выполнения, поэтому для того, чтобы компиляции таких заявлений компьютер должен составить список всех номера строк и соответствующие адреса в скомпилированный код.

Составленный Код для GOSUB будет искать по списку во время выполнения, чтобы найти адрес для номера строки, которая необходима. HiSoft BASIC имеет возможность делать все это, но так как это приводит к более медленному и более кода, мы сделали это нестандартное Функция что вы должны выбрать с помощью директивы компилятора.

Вставьте новую строку:

7 REM: GOSUB:

и теперь он будет собирать.

Обратите внимание, что скомпилированный код длиной 760 байт. Если вы посмотрите на

Программа вы увидите, что переменная N может быть 1, 2 или 3, так что только номера строк мы действительно необходимые для использования в линии 50 являются линии 100, 200 и 300. Вы можете сказать Hisoft основных, изменив линию 7 с читать

7 REM: GOSUB 100, 200, 300

и теперь, если вы повторно скомпилировать вы найдете код длиной 728 байт

потому что мы сейчас сохраняя только информацию для этих трех линий вместо всех строках программы. За этот короткий программы это не такая уж большая экономия, но в течение более длительного программ экономии в байт может быть огромным, и имеющий более короткий список для поиска по может значительно увеличить скорость выполнения.

Чтобы посмотреть, что произойдет, если вы опустите соответствующий номер строки, удалить

300 из строки 7, пересобрать, и попробовать скомпилированный код, выбрав опцию 3. Отметим также, что если вы измените линию 50 в GOSUB 100 * N-1, хотя это будет работать в BASIC, скомпилированный код будет не потому, что линии 99, 199 и 299 не существует.

Остальные программы на пленку / диск готовы к компиляции. Ты

можно загрузить и перечислить их, чтобы увидеть дополнительные примеры использования директивы компилятора. Следующий программа называется сито и представляет собой Стандарт эталоном программа. Он находит все простые числа, меньшие в два раза больше используется в соответствии 20. Как можно заметить, программа будет не работает в BASIC, потому что нет места для массива 8192 элементы 5 байт каждый. Тем не менее, составлен версию с Массив е $ () объявлен как POSINT (так, чтобы каждый элемент занимает всего 2 байт) отлично работает и занимает всего 2,9 секунды. Добавьте строку:

165 PRINT премьер

если вы хотите увидеть простые числа (но это будет замедлять его

много).

Чтобы получить программу для работы в BASIC вам придется изменить оба

в 8192s в строке 20 в что-то вроде 7000 или меньше и запустить его на пустом Spectrum. С 7000 в строке 20, программы занимает 418 секунд до конца, по сравнению с только 2,6 секунды для скомпилированный код – увеличение скорости 161 раз! Если вы попытаетесь скомпилировать эту программу два раза подряд без сброса RAMTOP (По Clear или Clear) между ними, вы увидите, что адреса на Последний экран после сохранения и загрузки отличаются друг от друга и вам получить сообщение не испытывают на нижней части экрана. Это значит что код не находится в надлежащем положении и должен был бы быть Сохранены и повторно загружены на правильном положении перед выполнением, но остерегайтесь чрезмерного писать Hisoft BASIC – см ПАМЯТЬ карт в Приложении 3.

Последние две программы на ленте являются SHELLSOR и QUICKSOR. Линии

9000 и выше этих двух программ содержат подпрограммы, вроде массив х () чисел в порядке возрастания с использованием двух различных алгоритмы. Остальная часть этих программ для тестирования скорости из этих двух алгоритмов вставки данных, которые случайным образом расположенных и данные, которые уже в порядке. Вы увидите, что QUICKSOR является быстрее случайно расположенных данных, но SHELLSOR быстрее для данных что уже почти все в порядке. Подпрограммы могут легко быть изменена, чтобы разобраться в порядке убывания или сортировки строк вместо цифр. Если вы собираете их, вы увидите, что скомпилированные версии до 19 раз быстрее!

HiSoft BASIC в деталях

Как использовать Hisoft BASIC

1 Использование резервного кассету, Microdrive или диск просто наберите:

     LOAD “HiBasic” [ENTER]

     128 загрузка Hisoft BASIC прервет если виртуальный диск           не пусто.

     +3 Loading HiSoft BASIC удалит файлы на RAM-           диск.

  2 тип Либо в вашем BASIC программы или загрузите его в от вашего      лента, диск или Microdrive. Примечание: Вы должны организовать ваш BASIC      Программа так что можно выполнить его просто      ввод RUN (то есть, он должен начать с низкой линией и      все переменные должны быть определены в рамках программы). Для      Например, если у вас есть базовая программа, которая вам выполнять по      ввод RUN 9000 затем вставить новую строку в начале, что      говорит GOTO 9000.

  3 Убедитесь, что ваш BASIC не включает любую из команд или      Функции, которые не поддерживаются Hisoft BASIC (см резюме      отличий от спектра BASIC).

4 Вставьте новую строку с директивой компилятора REM: ОТКРЫТОЕ # в

     начало вашей программы. Другие директивы являются обязательными.

5 запустить программу, чтобы убедиться, что он работает. Попробуйте его с разными

     Входы для покрытия все возможности и протестировать все      ветви программы. Составленный Код будет разработан      воспроизвести эффект BASIC (за исключением быстрее!), так что если      он не работает в BASIC, скомпилированные версии не будет работать      либо. Однако, если ваш основной версии работает, вы можете ожидать,      скомпилированный код, чтобы сделать то же самое. Это хорошая идея, чтобы СПАСТИ      Основная программа, прежде чем продолжить.

6 Составьте с помощью Compile (см команды HiSoft BASIC). Ссылаться      Сообщения об ошибках, если компиляция останавливается с сообщением на      Внизу экрана

7 сохранять скомпилированный код.

     Составленный Код, как и любой другой программы машинного кода.

     Чтобы выполнить это требует командной RANDOMIZE USR ххххх где      ххххх, своим. Составленный Код вернется в BASIC      в точках, где была команда СТОП или REM: ЗАКРЫТЬ #      директивы или, если это дойдет до конца программы. Учтите, что      Вы должны очистить WWWWW перед загрузкой в ​​коде, где WWWWW      это любой адрес менее ххххх.

Hisoft основные команды

Команды могут быть набраны в верхнем или нижнем регистре. Исполнение

Команда немедленно по получении окончательного характера (нет [ENTER] нужен). Если в любой момент эти команды должны прекратить принимаются, повторно инициализировать интерпретатор команд, набрав:

     RANDOMIZE USR 23792 [ENTER]

Читайте Приложение 4, чтобы увидеть, какие ключевые-комбинации соответствуют друг

Команда на конкретном компьютере.

Компилировать

     Начинает подборку основной программы. Составляет тех      части программы между РЗМ директив компилятора:      ОТКРЫТОЕ # и REM: CLOSE #. Составленный Код помещается только      ниже RAMTOP и RAMTOP пересматривается.

     Во время первого прохода, относительные адреса вступления

     указывает на код приводятся. Компиляция паузу для вас      ударил ключ.

     Во время второго прохода: выполнимых адресов вступления

     указывает на (как в десятичной и шестнадцатеричной) показаны.

     Компиляция паузу после них, пока вы не нажмете клавишу.

     При компиляции отображается следующее:

       -количество байтов, которыми занимается скомпилированного кода      -количество байтов, необходимое для машинного кода переменных      -количество байтов, занятых основной программы      -THE команд, которые будут использоваться, чтобы сохранить скомпилированный код и загрузить      его обратно после.

       На последнем экране будет также отправлено на принтер, если есть      подключен. Другую информацию можно получить с использованием      директивы компилятора REM: линии и REM: список.

Ясно

     Делает то же, основную команду CLEAR, 65367, кроме него      не делает CLS или RESTORE. То есть, он устанавливает, чтобы RAMTOP      65367 (чуть ниже обычного положения определяется пользователем      графика) и устанавливает стек машины есть. В контексте      из Hisoft BASIC, он эффективно удаляет ранее скомпилированные      Код и, таким образом, обеспечивает пространство для нового кода. Обратите внимание, что если вы      есть машинный код в верхней памяти, что вы хотите      заповедник затем дон не используйте Ясно, вместо ясно чуть ниже      Ваша машина код.

Пробег

     Выполняет вновь скомпилированный код, начиная с первого      Точка входа. Эта команда делает то же самое, как RANDOMIZE ЕГР      ххххх, где адрес ххххх является тот, на последнем экране      (Кроме того, что он не влияет на системной переменной SEED).

Информация

     Эта команда используется, чтобы узнать информацию о      переменные, используемые в вашей основной программы. Эта информация может      затем направлена ​​Hisoft BASIC с помощью компилятора      директивы, позволяя компилятору производить более эффективным      Код. Команда информация дает типы (см переменные)      простые числовые переменные, используемые (информация не дается на      массивы). Это также дает максимальные длины достигнутые      простые текстовые переменные используется. После того как вы первого типа Info      ничего не появились, чтобы не случилось, но приводом прерываний      Программа была включена и основные переменные были      Очищается. С тех пор, пока вы не печатаете информация снова, в прерывая      управляемые программные опрашивает основных переменных (массивов исключением) и      сохраняет файл из имен переменных и типов. Вторая информация      отображает этот файл, а затем удаляет его. В период между двумя Infos вы      может делать все, что обычно делают в BASIC. В нижней части экрана      пойдет BRIGHT, чтобы показать, что вы находитесь в режиме Info. Нормальный                              

     

     

                 чудесно.

Стирать

           Заметка            

     

                     

Перерыв

                           Это означает, что                                                                  

   

                     

   

  Печать                  Например,            

     

     Заявления.

     

           Заявления.

     

                             сделано.

                       адрес.

           собственно.

           

     Заявления данных.

     

     

     поддерживается.

          

          

     

                 

FLASH 8;

           

     

     Заявления.

               

                                               

Переменные

Строка.

в BASIC.

Если

СПИСОК.

Для

Если

компилятор.

     

     

     

                       

     

                             

     

     

                       

     

     

                       Длина.

                                               

     

                                                     

     

                       

     

     например.

     

     

           

     

                 

     

                 

     

                       Учтите, что            

     

           

     

     

     Заметка            

     Если вы используете

                       Код.

                                         

     

                 

     

                         

     

             

     

                                               

     

                                         

     

                         

 

     РЕАЛЬНЫЙ.

 

     

                 

     

                 Нет                          

     

                               

     

                       

     

                 адрес.

                 автоматически.

                 

     

     РЕАЛЬНЫЙ.

     

     

     смысл.

 

ПУСТЬ

переменные.

например.

Диапазон.

ВХОД

     Это означает, что

           

     

     

Например:

     

     

     

     

RUN

начиная.

ВОЗВРАТ

Код.

СТОП

Учтите, что

DIM

     

           

     Программа.

     

     

     

     

     48

Здесь,

                             

     

     

     

     

     

     

     

                       Например

     

                 

     

     переводчик.

                 

     

     

     

     

           Например:

     

                                   

     Заявления данных.

                 

     

Код.

FLASH 8;

BRIGHT 8;

Из

Если вас

Учтите, что

удален.

Это значит

Ты должен

Использование

Если вы

     

     Иногда программы                  

     

           

     

                             два.

                       Некоторые из      

     

                      

     

          

                     

     

                             BASIC.

                             

     

                                                                                   Так                                          

     Это значит

     Заметка                  

     

                 

     

     

     

          

                           

     

                                   Программа.

     

     

           

     

     Если

                                   возможно.

           1!

     

                 

     

                 

     

                 так

     

     

     

     

                 Это воля                  через.

                                         

Если

Сообщения об ошибках

10).

В

Видеть

Учтите, что

Файл

Площадь.

цвета

Первый проход

ваш экран.

Приложение 1

               

               

                                                                                                                                                                                                               

отображается.

Название: HiSoft Основные +3 Производитель: HiSoft Машина: Спектр +3 Формат: ДСК Версия: 1.2

Инструкции:

HiSoft BASIC БЫСТРО, с плавающей точкой COMPILER для всех ZX Spectrum Компьютеры

HiSoft Basic

Быстрый, с плавающей точкой ZX BASIC Compiler

Системные требования:

Компьютер Sinclair ZX Spectrum

Copyright (C) HiSoft 1986,88

1-е издание Октябрь 1986

2-е издание февраля 1988

HiSoft BASIC была написана Кэмерон Hayne с программами Энди Pennell

Установка с использованием Apple Macintosh (тм) и LaserWriter Plus (тм) с Aldus PageMaker (тм) и Microsoft Word (TM).

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

Это является нарушением авторского права, относящиеся к Hisoft BASIC и связанной с ним документации для копирования, с помощью любых средств, любую часть Hisoft BASIC по любой причине, кроме как для целей принятия безопасности резервную копию объектного кода.

Содержание
Начало работы и Учебник 1

Введение 1 Какой спектр? 2 Создание резервной копии 2 Кассета Версия 2 +3 Версия 3 Генеральный 3 Учебник – Попробуйте это первый 3

HiSoft BASIC в деталях 13

Как использовать Hisoft BASIC 13 Hisoft основные команды 14 Резюме отличий от спектра BASIC 17 Переменные 18 Типы переменных – Общие 18 РЕАЛЬНЫЙ тип 19 Тип INTEG 19 Тип POSINT 19 Числовые константы 19 Преобразование между типами 19 Директивы компилятора 20 REM: ОТКРЫТОЕ # 20 REM: CLOSE # 20 REM: LEN 21 REM: USR 21 REM: INT 22 REM: INT + 22 REM: INT FN 22 REM: INT FN + 22 REM: FN (INT) 22 REM: FN (ИНТ) 22 REM: GOTO 23 REM: GOSUB 23 REM: ВОССТАНОВЛЕНИЕ 23 REM: СПИСОК 23 REM: ЛИНИЯ 23 REM: LPRINT 24 REM: ПЕРЕРЫВ 24 REM: VAL 24 Заметки о Составлено BASIC 24 Арифметические операторы (+, -, * и /) 24 Операторы сравнения 25 И, ИЛИ 25 ПУСТЬ 26 ВХОД 26 ДЛЯ / NEXT 26 GOTO, GOSUB 27 RUN 27 ВОЗВРАЩЕНИЕ 27 СТОП 27 DIM 27 ВАЛ, ВАЛ $ 28 ВОССТАНОВЛЕНИЕ, читать, DATA 29 УЧАСТОК, рисовать, КРУГ 29 DEF FN 29 В том числе другой код 30 машины Компиляция больших программ 30 Советы по эффективности 31 Что делать, если он не работает? 34 Сообщения об ошибках 34 Неверный Директива компилятора 34 Ожидая номер 35 Ожидая целое 35 Не поддерживается 35 Несуществующий линия 35 Слишком много переменных 35 Нет больше места 35 Используйте * D * E 35 Не хватает места для M / C 35 Exec. решения слишком высокий 36 Не испытываю 36 Нет файлового пространства 36 Смысл точек и цветов 36

Приложение 1 Spectrum 128 и плюс 2 Версия 37

Приложение 2 Спектр +3 Версия 39

Обработка файлов 39 Введение в последовательный файлов 39 Написать Файлы 40 Читайте Файлы 40 Замечания по печати и входной 41 Дополнительное BASIC Ссылка 41 Счетчик времени только версия 42

Приложение 3 Технические примечания 43

Составитель программы 43 Сохранение и загрузка Массивы 43 Изменения по сравнению с версией 1.0 44 Памяти Карты 45

Приложение 4 HiSoft основные команды 46

Начало работы и учебное пособие
Введение

HiSoft BASIC является BASIC компилятор, который превосходит все остальные для Spectrum. Есть целые компиляторы, которые могут сделать Основные программы работают более чем в 100 раз быстрее, но они только обрабатывать целые (нет десятичных знаков, только целые числа от -32768 до +32767 или от 0 до 65535) и часто имеют другие ограничения. Есть плавающей точкой компиляторы, которые обрабатывают весь спектр десятичных чисел и все функции спектра, но (несмотря на рекламируемые претензии) они ускорить программы лишь в 3 раза до 5.

HiSoft BASIC сочетает в себе преимущества этих двух типов компиляторов без каких-либо недостатков. Это компилятор с плавающей точкой, чем можно получить скорость на целое компилятора при выполнении операций, которые не требуют сложности арифметики с плавающей точкой. На самом деле, HiSoft BASIC является одновременно самым быстрым число компилятор и самый быстрый компилятор с плавающей точкой для спектрах.

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

Большинство других компиляторов есть блок подпрограмм о 5к в длиной (называется автономной работы), которые должны присутствовать на скомпилированный код работать. Это означает, что даже самая короткая BASIC программа компилирует более чем 5 КБ. HiSoft BASIC включает в себя только процедуры выполнения и которые на самом деле необходимо для вашего кода, так что короткая BASIC программа может составить в только несколько сотен байт. Кроме того, в отличие от других компиляторов, HiSoft BASIC позволяет поставить скомпилированный код в любом месте памяти вы хотите, даже в тех местах, где обычно находится сам компилятор!

HiSoft BASIC составляет лишь около 11K в длину, так что быстро загружается. Это может составлены основные программы в памяти примерно до 30K в длину на 48К Spectrum или до 40К на больших, 128K машин. Еще одна отличительная черта Hisoft BASIC является то, что она обеспечивает полную информацию о коде, который он производит, так что это легко взаимодействовать скомпилированный код с ко-резидент BASIC программы. Или, если вы заинтересованы в машинный код, вы можете использовать эту информацию, чтобы узнать, как использовать подпрограммы ПЗУ.

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

HiSoft BASIC является очень простой в использовании, но мы рекомендуем вам прочитать это руководство перед началом каких-либо серьезных компиляцию.

Спектр Руководство BASIC пользователя Page 1 –

Какой спектр?

Существует версия Hisoft BASIC для каждого Английский-ROM Spectrum сих пор освобождены, от скромного, резины кузова 48К машине до впечатляющего Spectrum +3. Кассета имеет отдельную версию для 48K машин, еще на 128к и 2, а версия диска специально для 3, который добавляет обработки файлов. Пожалуйста, убедитесь, что у вас есть правильный вариант для вашего компьютера перед переходом.

Мы не имеем версию Hisoft BASIC, который гарантированно работать на 3 с испанскими дисков, и мы не еще есть один, который работает на + 2А!

Это руководство описывает все версии Hisoft BASIC; где есть машинно-зависимые функции, которые они будут помечены следующим образом:

| Только 48 применимо к 48K машины.
| 128 относится к 128К и 2 компьютеров (не +3) только.
| 3 специальные 3 особенности.
Если так не отмечен, текст относится ко всем версиям компилятора.

Существуют различные ключевые комбинации, используемые для вызова команд HiSoft BASIC и они отличаются между 48К и 128К (в том числе 3) версиях. Всякий раз, когда мы должны обратиться к любой из этих клавиш они будут показаны, как это: # Компиляция # что означает нажать клавишу-комбинации, которые будут скомпилировать программу. Конкретные клавиши, соответствующие каждой команды приведены в Приложении 4. котором вы должны относиться к теперь прежде чем двигаться дальше.

Создание резервной копии
Кассета Версия

Одна сторона кассеты отмечается 48k, другой 128k, и вы должны использовать один, соответствующий вашему компьютеру – пожалуйста, обратите внимание, что ни одна из версий будет работать на 3.

Содействие при выполнении резервную копию предоставляется в основной программе загрузчика. НАГРУЗКИ, как обычно, но удерживая клавишу S во время последней части. Когда вы услышите звуковой сигнал, подготовить новую ленту для записи, затем нажмите клавишу.

Спектр Руководство BASIC пользователя Page 2 –

Для передачи Hisoft BASIC для Microdrive, выполните описанную выше операцию, но ворваться в программе после звукового сигнала. Затем измените его, вставив * “м”; д после каждого сохранения и загрузки, где d является номером привода лучшего. Наконец GOTO 9999 для получения Microdrive копию.

Если у вас есть интерфейс диска, такие как ученика или Opus вы должны изменить синтаксис погрузчика в соответствии с вашим интерфейсом, подобным образом, как описано выше для микродрайвы.

+3 Версия
Прежде чем сделать что-либо, вы должны написать защитить свой мастер-диск, чтобы предотвратить неловкие аварий. Убедитесь, что вы находитесь в 3 BASIC режиме, а затем вставьте наш мастер-диска и тип:
КОПИЯ “:. * *” В “М:” [ENTER]
Теперь вставьте чистый диск и тип:

ФОРМАТ “:” [ENTER]

КОПИЯ “М:. * *” В “:” [ENTER] ERASE “М:”

Генерал
Во всех случаях, хранить исходный кассету или диск в безопасном и сухом месте, вдали от источников тепла, магнитных полей и детей! Использовать резервную копию только так, что вы всегда можете сделать новую резервную копию от оригинала, если что-то пойдет не так.

Более 3000 человеко-часов кропотливой работы получилась в Hisoft BASIC и каждый пиратская копия ускользает некоторые из наших законному награду за эту работу. В конечном счете, использование пиратского программного обеспечения у тебя болит, потребителя, потому что цены идут вверх или неприятные схемы защиты от копирования используются и потому, что программисты, как и мы больше не считаем полезным приложить усилия в написании хороших программ для вашего компьютера. Если вы каким-то образом окажетесь в распоряжении пиратской копией Hisoft BASIC и вы найдете хорошие, полезные программы, то, пожалуйста, честное дело и пойти и купить себе легальную копию! Теперь давайте начнем с использованием Hisoft BASIC …

Учебник – Попробуйте это в первую очередь

В инструкции по использованию HiSoft BASIC читать этот вводный раздел, но вместо того чтобы оставить вас, чтобы прочитать их и выяснить вещи для себя, мы покажем вам веревки с нескольких примеров программ.

Если у вас есть кассетный вариант, загрузить Hisoft BASIC, наложив свое резервной копии ленты в магнитофоне и типа:

LOAD “” [ENTER] и нажмите кнопку воспроизведения на вашем магнитофоне.

Спектр Руководство BASIC пользователя Page 3 –

Если у вас есть диск копию компилятора, вставьте диск резервного копирования и тип:

LOAD “hibasic” [ENTER]

Когда она будет закончена загрузка вы увидите уведомление об авторских правах в верхней части экрана. Мы поставили ряд примеров программ на ленте / диск, и мы постараемся нагрузку, компиляции и выполнения их сейчас. Нагрузка в первом примере программы, набрав:

LOAD “example1” [ENTER]

СПИСОК ее, а затем запустить его, чтобы проверить его и убедиться, что она работает. Это очень важный шаг, прежде чем пытаться компилировать любой программы!

Как вы, возможно, не всегда хотят, чтобы собрать все части вашего BASIC программы, надо сказать Hisoft BASIC, с чего начать и где остановиться компиляции. Как и во всех инструкциях к Hisoft BASIC (называемые директивы компилятора) это делается через REM заявлении. Запуск компиляции инструкция: REM: ОТКРЫТОЕ # (сделать это сейчас, сделав эту инструкцию линию 1 в примере программы)

Стоп-компиляции инструкция: REM: CLOSE # но это необязательно здесь, так как мы хотим, чтобы составить до самого конца основной программы. Теперь # Компиляция # и составление начнется (е вы не знаете, что делать, чтобы # Компиляция # затем посмотреть в Приложении 4).

Во время компиляции, HiSoft BASIC приостановит дважды, показывая какую-то информацию в нижней части экрана. Вы должны будете нажать клавишу, чтобы продолжить (не волнуйтесь по поводу информации, – вы не будете нуждаться в этом сейчас). Границы будут менять цвет (пурпурный-голубой-белый) и странные точки и цвета появятся на экране. Мы объясним позже, что все это; сейчас мы просто нужна информация, которая появится после второго нажатия кнопки. Для первого примера программы, это должно означать, что скомпилированный код (машинный код) является 357 байт и что 10 байт должны быть зарезервированы для машины-кода переменных. Для сравнения количество байт принятых до базовой программой без переменных также дается. (Обратите внимание, что конкретный компилятор может производить несколько различных размеров программ к тем, которые описаны здесь, как мы можем изменить компилятор время от времени, и он может генерировать несколько иной код).

Наиболее важная информация находится в двух линий, которые говорят вам, как сохранить и загрузить скомпилированный код. Адрес в линии нагрузки является адрес, который будет использоваться после RANDOMIZE ЕГР, когда вы хотите выполнить скомпилированный код. Например, если код должен быть загружен обратиться 65001 затем RANDOMIZE USR 65001 выполнит скомпилированный код. Но в то время как HiSoft BASIC там проживает более простой способ; # Выполнить # выполнит скомпилированный код (это относится к составители командовать # Run # подробно в Приложении 4 не команда RUN переводчик).

Спектр Руководство по основным функциям Page 4 –

Вы можете проверить машинный код теперь, если вам нравится. Кстати, не пугайтесь, на то, что его очень небольшая программа, кажется, требуют так много байт в машинном коде. Большинство байтов подхвачена автономной работы – подпрограмм, включенных в случае необходимости, но что будет повторно использоваться другими частями одной большой программы. Таким образом, отношение байтов, используемых для машинного кода к тем, которые в основной будет уменьшаться, как размер программы возрастает.
Ваша основная программа по-прежнему существует после компиляции и может быть изменен и повторной компиляции. Не меняя ничего, попробуйте скомпилировать его во второй раз (использование # Компиляция #), чтобы посмотреть, что происходит. Вся информация на последнем экране будет тот же адрес, где скомпилированный код размещается в то, что спектр считает вершина вашего пространства памяти (то есть чуть ниже RAMTOP) и RAMTOP кроме изменяется быть как раз перед вновь составлен код. Чтобы вернуть эту память (путем сброса RAMTOP к первоначальному значению) использовать # Ясно #.
Мы хотим, чтобы использовать первый пример программы, чтобы проиллюстрировать, что переменные, используемые BASIC и переменные, используемые скомпилированного кода совершенно различны.

Re-компиляции программы (# Компиляция #). Теперь запустите базовой версии, а затем, как непосредственным командованием, выполнить PRINT N1, NT2. Теперь выполните машинного кода версию (# Run #), на этот раз отвечая с разными номерами, чем те, вы использовали для базовой версии. Теперь повторно выполнить прямую команду PRINT N1, N2. ОСНОВНЫЕ переменные все еще, как они были. Переменные машинного кода являются локальными для скомпилированного кода.

Не успели мы выйти этот пример, мы должны отметить, что вход является тот, который ведет себя немного по-другому в скомпилированный код, чем это делает в BASIC. Разница в это ответ на ошибки. В BASIC, ошибка на входе возвращает управление в редакцию с сообщением об ошибке. Это было бы неудобно в машинный код, так в скомпилированный код команды ввода ошибок в ловушке, так что какие-либо ошибочные результаты перезапуска INPUT. Проверьте это на себе с скомпилированного кода.
Теперь введите:
LOAD “Пример 2.” [ENTER]
и перечислить его, как только он загружен. Положить в новой строке:
9 REM: ОТКРЫТОЕ #

и запустить его, чтобы убедиться, что он работает, затем скомпилировать (# Компиляция #). То, что мы хотим довести до вашего внимания теперь это количество байт принятых вверх машинного кода переменных. Всего 277; это 15 байт для / NEXT переменной для ввода, 5 байт для L и 257 байт для N $. 257 состоит из 2 байт для длины N $ и 255 байт для хранения фактических символов. Поскольку имя не всегда будет так долго, кажется расточительным, чтобы зарезервировать, что много места для него. Используя REM: директиву LEN мы называем сказать Hisoft BASIC, сколько места резервировать для строковой переменной.

Спектр Руководство по основным функциям Page 5 –

В этом случае предположим, что мы решили, что мы в безопасности, полагая, что имя не могло когда-либо быть длиннее 50 символов, то мы можем сказать Hisoft BASIC, вставив новую линию:

8 REM: LEN N $<= 50

(На 48К Spectrum<= является один символ, полученный путем нажатия [SYMBOL SHIFT] -Д). Сделайте это сейчас и заново компилировать. Вы увидите количество байт для машинного кода переменных теперь только 72 (52 байт зарезервированы для N $). Может показаться, что 50 все еще слишком долго, но лучше подстраховаться на длинной стороне - слишком мало места может быть смертельным. Кстати, все это нужно, потому что мы выбрали сделать выбор в пользу эффективности над удобства. В BASIC, когда вы назначаете в строковую переменную, старая копия уничтожается, а все остальные переменные перемешиваются вниз, и новая строка вставляется в конец списка переменных. Но для этого нужно время! В скомпилированного кода от Hisoft BASIC, все переменные в том числе текстовых переменных находятся в фиксированных местах, что дает значительное улучшение в скорости. Обратите внимание, что для размеры текстовых переменных, HiSoft BASIC может сказать от DIM заявлении, сколько места резервировать и так REM: директива LEN не надо.

Первые два примера программ служил для иллюстрации некоторые существенные моменты об использовании Hisoft основным, но они не были очень интересными, как программы, и они, конечно, не показывают какой-либо ощутимый прирост в скорости; и скорость все-таки то, что вы здесь! Так введите:

LOAD “пример3” [ENTER]

и мы начнем исследовать истинные возможности компилятора. Запустите программу, как обычно, чтобы убедиться, что он работает (мы подчеркиваем, что это является важным шагом, прежде чем пытаться компилировать любой программы). Если вы перечислите программы вы увидите, что мы уже включали REM: ОТКРЫТОЕ # директиву в начале, так что мы готовы к компиляции. # Компиляция # и смотреть. Вы обнаружите, что вы получите линию 290 в верхней части экрана с мигающим? и сообщение не поддерживается на дне. Что не поддерживается является команда лента SAVE. Ни один из команд операционной системы не поддерживается Hisoft BASIC, потому что они, как правило, более уместно оставить в BASIC. Это где директива REM: CLOSE # полезно. Вставьте новую строку:

271 REM: CLOSE #
а затем вновь собрать его. Она будет работать на этот раз. Попробуйте вновь составленный машинный код, и вы увидите спираль обращается более чем в 3 раза быстрее. Несколько отступлений по программе: обратите внимание, в линиях 20-50, что значения грех и COS функций вычисляются только один раз, а затем присваиваются переменным для использования в будущем. Поскольку эти функции (наряду с TAN, ASN, ACS, ATN, EXP, Л. Н., SQR) очень медленно, это умные вещи делать, когда это возможно. Отметим также, ЦБС в строке 15. Это избыточная в BASIC, так как CLS делается автоматически, когда мы запустили программу, но она необходима для скомпилированного кода.
Но то, что о линии 290, который был оставлен из компиляции? Поскольку у нас теперь есть машина кода версию программы, то, что мы хотим, это основная программа загрузчик, который выглядит как программы на следующей странице:

Спектр Руководство по основным функциям Page 6 –

10 CLEAR, WWWWW

20 LOAD “спираль” КОД ххххх: RANDOMIZE USR ххххх 30 СТОП 40 SAVE “спираль” КОД ххххх, ууу

где ххххх и ууу являются числа, приведенные Hisoft BASIC и WWWWW меньше (т.е. ниже) ххххх.

Теперь введите:

LOAD “Example4” [ENTER]

и перечислить его. Вы будет видеть, что является такой же, как в примере 3, но с дополнительными строки в конце. Мы уже поставили в строке 271 REM: Отказ #. Если вы скомпилировать его, как сейчас, скомпилированный код будет точно таким же, как от ПРИМЕР 3. Основные направления после 271 будет просто игнорировать (хотя они делают фигуру в число заданное Hisoft BASIC для байт принятых вверх BASIC). Что линия 1000 делает, чтобы ткнуть изображение на экране в хранении в адрес памяти 45000; Линия 2000 напоминает его из памяти на экран.

# Очистить # и запустите программу. Когда рисунок закончен, выполнить GOTO 1000. После СТОП сообщение (это займет несколько минут) выполнить CLS, а затем GOTO 2000. Еще через несколько минут, спираль будет повторно появились на экране, но, поскольку он занимает несколько раз дольше вспомнить спираль из памяти, чем потребовалось бы просто перерисовать его, это кажется бессмысленным! Но скомпилированные версии будет быстрее! То, что мы хотим в составленном версии является наличие трех отдельных точках входа в машинный код: первым нарисовать спираль, а вторая и третья для сохранения и вызова из памяти. У нас уже есть первый точку входа на РЗМ: OPEN # и возврата в основное происходит в REM: Отказ #.
Мы хотим, дополнительные точки входа на линиях 1000 и 2000, так что мы вставить новые строки:

999 REM: ОТКРЫТОЕ # и

1999 REM: ОТКРЫТОЕ # (сделать это сейчас)

Возвращается к основным из этих участков кода будет от их СТОП отчетности. Там нет необходимости для каких-либо дополнительных REM: CLOSE # потому что мы хотим, чтобы собрать Право конце BASIC. Теперь мы готовы собрать так # Компиляция #. На этот раз вам будет необходимо повторно нажать клавишу в качестве информации о различных точках входа появляется в нижней части экрана.
Теперь мы объясним, что означают эти цифры. Во время первого прохода (с голубой границы) вам будет сказано, относительные адреса различных точек входа – то есть по отношению к началу скомпилированного кода.
На втором проходе (с белой рамкой) вам будет сказано, адреса исполнения (в оба десятичной и шестнадцатеричной) из различных точек входа. Запишите их для дальнейшего использования. Отметим также, (от окончательного экране) количество байт принятых вверх скомпилированного кода.

Спектр Руководство BASIC пользователя Page 7 –

Помните, что если вы пропустите какую-то информацию во время компиляции, вы всегда можете пересобрать (после # Clear # при желании). Теперь попробуйте скомпилированный код, выполнив первую часть, чтобы привлечь спираль, то вторую часть, чтобы сохранить его в памяти, то CLS и, наконец, выполнить третью часть скомпилированного кода, чтобы открыть экран спираль. Обратите внимание, что # Run # работает только для первой точки входа. Вы обнаружите, что в настоящее время он занимает примерно такое же время, чтобы вспомнить спираль из памяти, как это было бы, чтобы вновь привлечь его.

Таким образом, наш магазин и рутина напомним еще, кажется, не очень полезно. Но есть дальнейшее совершенствование мы можем сделать, что позволит значительно увеличить скорость. Ключевой факт заметить, что переменные я, ИСТОЧНИК, и назначения линий 1000-5040 принимать только значения, которые являются положительными целыми числами (они колеблются от 16 384 до 51 911). Если HiSoft BASIC будет проинформирован об этом деле (это не совсем достаточно умен, чтобы заметить это для себя!), Он будет генерировать гораздо более эффективный код, потому что это может использовать родные способности процессора Z80, а не полагаться на ROM процедур для плавающей арифметика. Способ сообщить компилятору это использовать директиву REM: ИНТ. Эта директива должна быть осуществлена ​​перед первой REM: Open #, поэтому мы вставить новую строку (для этого теперь!):

9 REM: ИНТ я, адресам источника и назначения

Это говорит Hisoft BASIC, что эти переменные будут принимать только значения, которые являются положительными целыми числами в диапазоне от 0 до 65535. Мы знаем, что это верно и для линий с 1000 по 5040, но прежде, чем мы можем перекомпилировать мы должны проверить, что это верно и для вся программа. Существует переменная I (который в Spectrum является таким же, как переменной I) в строках 130, 160, 230, но мы можем видеть, что это слишком принимает положительные целые значения в нужном диапазоне. Так что вперед и вновь собрать. Вы заметите, что новый составлен код занимает меньше байтов, но реальная разница в скорости.

Теперь она занимает меньше 0,7 секунд, чтобы вспомнить экран из памяти! Если вы время это с секундомером вы также найдете небольшое уменьшение времени, необходимого, чтобы нарисовать спираль. Там нет резкое увеличение скорости рисования спираль, потому что большую часть времени тратится на рутину ROM рисовать.

Мы только что видели, как гораздо более эффективным является использование целочисленных переменных, где это возможно. Тем не менее, в этой программе было относительно легко убедить себя, что переменные I, источника и назначения принимать только целые значения. В других, более сложных программ может быть более трудно выделить целочисленных переменных. Но помощь под рукой! Введите # Info #. Ничего не произойдет сразу. Но теперь запустить основную программу. Вы увидите ниже, экран идут яркие и спираль втягиваются медленнее, чем обычно.

Когда она будет закончена, введите # Info # снова и на этот раз вы будете вознаграждены с перечнем переменных. Возле каждой переменной является тип этой переменной: REAL, INTEG или POSINT (или POSINTEG – сочетание POSTINT и INTEG). Смотрите ниже для объяснения типов переменных, но сейчас просто обратите внимание, что переменная я указан в качестве POSINTEG что означает, что это значение не вышел из диапазона натуральных чисел от 0 до 32767. Программа остановился на линии 280 так, что это действительно говорит нам, что переменная я никогда не выходит из этого диапазона в линиях 130-230. Программа пока не исследовали область линий 1000-5040 так переменные источника и назначения даже не перечисленных.

Спектр Руководство по основным функциям Page 8 –

Чтобы получить полное представление о тех типов переменных мы должны были бы выполнить две другие разделы программы в отдельности, например. делая последовательность:

# Информация #

RUN GOTO 1000 GOTO 2000 # Информация #

Если вы не найдете длительного ожидания слишком утомительным, можно попробовать это сейчас, но в противном случае вы можете просто взять нам на слово, что переменные I, источника и назначения будет все вышли в списке POSINT. Все это только подтверждение чего-то мы поняли, раньше, но вы можете видеть, как это может быть полезно в более сложных программ. Когда # информация # делает это включить другую программу, которая следит за значения переменных во время выполнения основных программы. Второй # информация # Получается это у и печатает результаты. Все, что вы делаете между # информация # S, которые влияют на переменные будут учтены в результатах. Таким образом, если вы должны были сделать последовательность: # Информация #, RUN, то пусть меня = 1,3, # информация #, переменная я мог быть показан в качестве реальных, а не POSINTEG.

Мы должны предупредить Вас, что # информация # не непогрешим руководство о типах переменных. Чтобы проиллюстрировать это, в первую очередь избавиться от существующей BASIC, набрав # Erase #. Не используйте новые, как, что бы уничтожить Hisoft BASIC, как хорошо! Теперь наберите в следующей программе:

10 LET A = 0

20 ЕСЛИ RND>0,5 то пусть = 0,5

У последовательность: # Информация #, бегать, # Info #, а затем повторять последовательность несколько раз. Вы заметите, что переменная иногда перечислены в качестве реальных, иногда как POSINTEG. Причина этого понятна – есть филиал в программе в зависимости от значения РНД и если RND<0,5 программа не понимает, что это когда-нибудь не-интеграла. Урок вы должны сделать из этого является то, что, при помощи # Info #, вы должны повторить программу достаточное количество раз с разных входов, чтобы убедиться, что вся программа изучается. В этом примере, это будет, программировать достаточно сделать: # информация #, бежать, бежать, бежать, бежать, # информация #.

Теперь введите:

LOAD “Example5” [ENTER]

Эта программа готова для компиляции, но сначала СПИСОК ее и обратите внимание на использование INT после команды DATA. Переменные X и Y читаются из этого списка DATA и так как они были объявлены как тип POSINT по РЗМ: ИНТ директива, необходимо, чтобы данные были сохранены в формат целого. Это достигается путем положить INT после ДАННЫХ. Скомпилировать и запустить эту программу на свой вкус.
Теперь введите:

LOAD “Example6” [ENTER] и запустите его.

Спектр Руководство BASIC пользователя Page 9 –

Вы увидите, что это типичный пример программирования меню. Попробуйте скомпилировать его, и вы получите линию 50 в верхней части экрана и страшного не поддерживается сообщения в нижней части. Линия 50 является то, что называется компьютерная заявление GOSUB. Это номер строки не дано явно, но должны быть вычислены во время выполнения, поэтому для того, чтобы собрать такие заявления компилятор должен составить список всех номеров строк и соответствующих адресов в скомпилированный код. Составленный Код для GOSUB будет искать этот список во время выполнения, чтобы найти адрес для номера строки, которая необходима. HiSoft BASIC имеет возможность делать все это, но так как это приводит к более медленному и более кода, мы сделали его нестандартную функцию, что вы должны выбрать с помощью директивы компилятора.

Вставьте новую строку:
7 REM: GOSUB:
и это теперь будет собирать правильно.

Обратите внимание, что скомпилированный код длиной 760 байт. Если вы посмотрите на программы вы увидите, что переменная N может быть 1, 2 или 3, так что только номера строк мы должны для использования в линии 50 являются линии 100, 200 и 300. Вы можете сказать Hisoft BASIC это, изменение линии 7, чтобы прочитать

7 REM: GOSUB 100, 200, 300
и теперь, если вы перекомпилировать вы найдете код является 728 байт, потому что мы сейчас сохраняя только информацию для тех 3-х линий, а не для всех строках программы. За этот короткий программы это не большая часть экономии, но в течение более длительного программ сбережения в байтах может быть огромным, и имеющие короткий список для поиска через может значительно увеличить скорость выполнения.
Чтобы посмотреть, что произойдет, если вы опустите соответствующий номер строки, удалить 300 из строки 7, пересобрать, и попробовать скомпилированный код, выбрав вариант 3. Отметим также, что если вы измените линию 50 в GOSUB 100 * N-1, хотя это будет по-прежнему работать в BASIC, скомпилированный код не будет работать, потому что линии 99, 199 и 299 не существует.
Остальные программы на пленку / диск готовы к компиляции. Вы можете загрузить и перечислить их, чтобы увидеть дополнительные примеры использования директив компилятора. Следующая программа называется сито и это стандартная программа эталоном. Он находит все простые числа меньше чем в два раза количество используется в соответствии 20. Как она стоит, то программа не будет работать в BASIC, потому что нет места для массива 8192 элементов 5 байт каждый. Тем не менее, скомпилированные версии с массива F () объявлен как POSINT (так, чтобы каждый элемент занимает всего 2 байта) работает найти и занимает всего 2,9 секунды. Добавьте строку:
165 PRINT премьер
если вы хотите увидеть простые числа (но это будет замедлять его много).

Спектр Руководство BASIC пользователя Page 10 –

Чтобы получить программу на работу в BASIC вам придется изменить оба 8192s в строке 20, чтобы что-то вроде 7000 или меньше и запустить его на пустом Spectrum. С 7000 в строке 20, программа занимает 418 секунд до конца, по сравнению с только 2,6 секунды для скомпилированного кода – увеличение скорости 161 раз! Если попытаться составить эту программу два раза подряд без сброса RAMTOP (по # Clear # или удалить) между ними, вы увидите, что адреса на последнем экране после сохранения и загрузки отличаются друг от друга, и вы получите сообщение НЕ ТЕСТ на нижней части экрана. Это означает, что код не в правильном положении и должны быть сохранены и повторно загружены на правильном положении перед выполнением. Но остерегайтесь чрезмерного писать HiSoft BASIC – см памяти Карты в Приложении 3.

Последние две программы на ленте являются SHELLSOR и QUICKSOR. Линии 9000 и выше этих двух программ содержат подпрограммы, сортировки массива X () чисел в порядке возрастания с использованием двух различных алгоритмов. Остальные из этих программ являются для тестирования скорости этих двух алгоритмов в сортировке данных, хаотически расположенных и данные, которые уже в порядке. Вы увидите, что QUICKSOR быстрее для случайно устроил данные, но SHELLSOR быстрее для данных, которые уже почти все в порядке. Подпрограммы могут быть легко изменены, чтобы разобраться в порядке убывания сортировки строк вместо числа. Если вы собираете их, вы увидите, что скомпилированные версии до 19 раз быстрее!

Спектр Руководство BASIC пользователя Page 11 –

Спектр Руководство BASIC пользователя Page 12 –

HiSoft BASIC в деталях

Как использовать Hisoft BASIC

1. Использование резервного кассеты, микродисков или диск просто наберите:

LOAD “HiBasic” [ENTER]

| 128 Загрузка Hisoft BASIC прервет если RAM-диск не пуст.

| +3 Loading HiSoft BASIC удалит файлы на RAM-диске.

2. Тип Либо в вашем BASIC программы или загрузите его в из ленты, диска или Microdrive. Примечание: Вы должны организовать свой основной программе, так что можно выполнить его, просто введя RUN (то есть, он должен начать с низкой линией и все переменные должны быть определены в рамках программы). Например, если у вас есть базовая программа, которая вам выполнить путем ввода RUN 9000 затем вставить новую строку в начале, что говорит GOTO 9000.

3. Убедитесь, что ваш основной не включает любую из команд или функций, которые не поддерживаются Hisoft BASIC (см Резюме различий от Spectrum BASIC).

FLASH 8;
Переменные

Например
Например

ПУСТЬ
например
ВХОД
Например:

RUN

ВОЗВРАТ
СТОП

DIM

|

|

|

|

Например

|

|

Например:
FLASH 8; BRIGHT 8;
FLASH 8; BRIGHT 8;

Сообщения об ошибках

Приложение 1

Приложение 2

Технические примечания
40 СТОП

40 СТОП

| |

| |

   

       

Приложение 4
Команды

Для игры в HiSoft BASIC не нужны эмуляторы. Это приложения для разработки программ на бейсике, которое создали Cameron Hayne и Andrew Pennell, было издано компанией HiSoft в 1986 году в Великобритании.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

Отправить ответ

Уведомлять об
avatar
wpDiscuz
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close