Диалекты бейсика для ZX Spectrum 1992 г.

Спектрум Бейсик - Предисловие; Короткое введение; Первое знакомство.


ДИАЛЕКТЫ БЕЙСИКА

ДЛЯ

Под редакцией Н. Родионова и А. Ларченко

«ПИТЕР» Санкт-Петербург 1992

Диалекты Бейсика для ZX Spectrum

Под редакцией Родионова И. Ю., Ларченко А. А.

Коллектив авторов: Болдачев А. В., Думов И. Е, Елисеев В. А., Карпов П. А., Клюев Л. Е., Ларченко А. А., Родионов Ю. И.

Составитель Болдачев А, В. Ответственный редактор Усманов В. В. Редактор Ромодин В. В. Художник Непомнящий Д. Б. Корректор Голубева 3. Д.

Оригинал-макет подготовлен Болдачевым А. В.

Книга посвящена языку программирования Бейсик для популярного компьютера ZX Spectrum. В ней подробно описаны: базовая версия Бейсика (Spectrum-Бейсик), наиболее распространенные расширения (PRO-DOS, Laser Basic, MegaBasic, Beta Basic), a также компиляторы (ZX-Compiler, MCoder 2, Softek IS, Softek FP, Tobos FP). Одна из глав содержит описание языка Бейсик 128 для компьютера ZX Spectrum 128.

© Издательство «Питер» (Piter Ltd.), 1992

ISBN 5-7190-0001-1

Издательство «Питер». 194044, С.-Петербург, Выборгская наб., 17. Подписано к печати 01.08.92. Формат 84 * 108 1/32. Бумага типографская №1. Печать офсетная. Усл. п. л, 16,8. Уч. изд. л. 17,2. Тираж 50 000. Заказ 192. Отпечатано с готовых диапозитивов в типографии им. Володарского. 191023, С.-Петербург, наб. р. Фонтанки, 57

ПРЕДИСЛОВИЕ

ZX Spectrum, ила как его ласково называют на родине в Англии — Speccy, прочно вошел в жизнь многих наших соотечественников. Он оказался идеальным вариантом недорогого компьютера «для дома для семьи» (home computer). Маленький Speccy с огромным пакетом программного обеспечения, созданного за десять лет зарубежными программистами, стал своеобразной гуманитарной помощью Запада бывшему Союзу.

По традиции, сложившейся для машин класса home computer, один из популярнеиших языков программирования BASIC (Бейсик) «вшит» в память ZX Spectrum. Это означает, что компьютер готов к работе на Бейсике сразу после включения.

Spectrum-Бейсик (так мы будем называть Бейсик, встроенный в ZX Spectrum) подробно, начиная с самых азов, описан в первой главе книги. Большая часть этой главы адресована тем, кто только учится программировать. Для более подготовленных читателей написан специальный раздел — справочник, где вся информация об операторах и функциях Spectrum-Бейсика приведена в сжатой и строгой форме.

Spectrum-Бейсик представляет собой набор лишь самых необходимых средств программирования. Поэтому сразу после появления Speccy стали создаваться программные пакеты, дополняющие Spectrum-Бейсик новыми операторами и функциями, — расширения Spectrum-Бейсика. Они подгружаются в намять с магнитного носителя и открывают перед программистом множество дополнительных возможностей.

Каждое расширение Бейсика имеет свою область применения. Система PRO-DOS ориентирована на преобразование экранного изображения и вывод текста разнообразными шрифтами. Она используется, в основном, для создания демонстрационных и рекламных программ. Но у PRO-DOS имеется существенный недостаток — она не позволяет перемещать картинки. На динамических эффектах специализируется пакет Laser Basic. С его помощью можно различными способами трансформировать графические объекты (спрайты) и передвигать их по экрану, создавая что-то наподобие мультфильмов.

При необходимости максимально расширить арсенал средств программирования можно пустить в ход «тяжелую артиллерию» — диалекты MegaBasic и Beta Basic. Они не только вводят много новых операторов и функций, но и делают более удобным и эффективным процесс написания и отладки программ. MegaBasic, в основном, ориентирован на усиление внешнего оформления программ (управление спрай-тами, генерация звуковых эффектов и т. д.). Beta Basic незаменим для решения расчетных задач и реализации сложных алгоритмов обработки данных. MegaBasic и Beta Basic занимают в памяти компьютера довольно много места, но этот недостаток с лихвой окупается мощностью этих языков.

Одна из глав книги содержит описания компиляторов Spectrum-Бейсика, от самых простых (ZX-Compiler, Mcoder 2, Softek IS) до более серьезных (Softek FP, Tobos FP).

В последнее время все большую популярность среди синкле-ристов приобретает компьютер ZX Spectrum 128. Учитывая это, в книгу включена глава о языке программирования Бейсик 128, «вшитом» в память ZX Spectrum 128.

Глава, посвященная стандартному Spectrum-Бейсику, написана Л. Болдачевым, консультировали его И. Родионов и А. Аарченко. Компиляторы описали В. Елисеев и А. Клюев, PRO-DOS — А. Клюев, Laser Basic — П. Карпов (консультант — А. Евдокимов), MegaBasic — Ю. Родионов, Beta Basic — И. Думов (при участии Л Клюева). Материал о Бейсике 128 подготовил А. Аарченко.

Условные обозначения, используемые в книге:

CS - клавиша Caps Shift;

SS - клавиша Symbol Shift;

CS/Z - клавиши нажимаются одновременно

(в данном случае Caps Shift и Z); Y+Z — клавиши нажимаются последовательно

(в данном случае Y и Z); [ ] - в квадратные скобки заключаются необязательные

элементы формата операторов и функций; | — может использоваться один из нескольких

элементов формата, разделенных этим знаком.

SPECTRUM-ББЙСИК

КОРОТКОЕ ВВЕДЕНИЕ

Это введение написано не для программистов, а для тех, кто только собирается ими стать. Конечно, новичку нужна особая книга, но, может быть, и эта начальная информация облегчит понимание не столь уж хитрого языка программирования — Бейсик.

Начнем с самого простого. Попробуем ответить на вопрос, что такое — компьютер? Что о нем должен знать программист?

Ничего особенного, кроме того, что в компьютере есть процессор, память и устройства ввода-вывода (клавиатура, монитор и другие). Достаточно знать, что процессор обрабатывает информацию, память хранит данные, а устройства ввода-вывода обеспечивают связь компьютера с внешним миром.

Основное же, что должно интересовать программиста — это список команд процессора. Ведь чем программист занимается? Лишь тем, что составляет из команд последовательности, называемые программами. И только.

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

Список команд индивидуален для каждого типа процессора и закладывается раз и навсегда при его проектировании. Команды доводятся до процессора в виде чисел — кодов. Распознавая эти коды, он выполняет те или иные действия, например: пересылает данные из одного места памяти в другое, выполняет математические операции и другие элементарные преобразования. Последовательность, составленная из команд процессора, называется программой в машинных кодах или просто программой в кодах.

Оперировать с набором кодов неудобно, и естественное стремление программистов научить машину понимать человеческую речь привело к появлению всевозможных языков программирования — систем, позволяющих записывать программы словами. Первым делом для составления программ стали использовать мнемоническую запись команд процессора — слова или наборы букв, однозначно соответствующие кодам. После того, как последовательность указаний процессору записана с помощью мнемоник, ее пропускают через специальную программу, которая переводит слова в коды. Такая система прямого перевода получила название язык программирования низкого уровня — ассемблер. «Слов» в ассемблере практически столько же, сколько команд процессора, выигрыш получается лишь в наглядности представления программы.

Следующим шагом в развитии языков программирования стала идея «записывать» часто повторяющиеся последовательности кодов одним, так называемым ключевым словом. Например, сказал компьютеру: «PRINT 2*2» (что в приблизительном переводе с английского означает: напечатай, сколько будет дважды два), а он и сосчитает, и выведет результат на экран, то есть выполнит достаточно длинную, но стандартную последовательность команд процессора. Ее надо только один раз составить, а потом использовать и для «дважды два — четыре» и для «трижды три — где-то семь».

Таким образом, достаточно написать множество стандартных последовательностей команд, выполняющих часто повторяющиеся операции, например: «вычислить косинус выражения», «опросить клавиатуру — не нажата ли клавиша?», «остановить выполнение программы», «если некое условие соблюдено, то выполнить заданные действия» и т. д. После этого каждую из последовательностей нужно назвать соответствующим человеческим словом: COS, INKEY, STOP, IF...THEN — и получится язык программирования высокого уровня.

Наиболее доступным из языков высокого уровня является Бейсик. Его исконное название — BASIC, а полностью — Beginner All-purpose Symbolic Instruction Code, что в переводе означает «инструктивный многоцелевой код для начинающих». Принято считать Бейсик языком учебным: он проще других в изучении и использовании. Но при этом Бейсик имеет все необходимые средства для решения большинства программистских задач. Впрочем, о Бейсике мы еще наговоримся, а сейчас еще несколько слов о языках программирования высокого уровня.

Итак, благодаря использованию в языках программирования «человеческих» слов программы стало писать легче и быстрее. И читать удобнее. Программисту. А компьютеру? Для компьютера надо переводить текст программы на компьютерный язык — язык команд процессора. Программа, понимающая слова языка программирования и заменяющая их соответствующими последовательностями команд процессора, называется транслятор (от англ. translate — переводить).

Наиболее простой способ трансляции — это немедленный «дословный» перевод, так называемая интерпретация (от англ. interpret — толковать). Программа, осуществляющая такой перевод, называется интерпретатором. Она опознает ключевые слова языка программирования (COS, STOP и прочие) и туг же «подсовывает» процессору соответствующую последовательность кодов.

Интерпретатор может работать в двух режимах: в непосредственном режиме и в режиме выполнения программы. В непосредственном режиме действие, заданное тем или иным ключевым словом, выполняется сразу же после введения слова с клавиатуры. Для работы в режиме выполнения программы предварительно словами языка программирования записывается последовательность требуемых от компьютера действий — текст программы. В тексте расписывается, что сделать сначала, что потом, что откуда взять и куда положить. Программа заносится в память компьютера и запускается на выполнение, то есть интерпретатору дается задание слово за словом считывать из памяти текст программы и переводить его на язык команд процессора. (Именно такой интерпретатор «зашит» в постоянной памяти ZX Spectrum.)

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

От этих недостатков удалось избавиться с изобретением другого способа трансляции — компиляции (от англ. compile — собирать). Компилятор — специальная программа, исходным продуктом для которой, как и для интерпретатора, является текст на соответствующем языке программирования высокого уровня. Но в отличие от интерпретатора, компилятор не выполняет предписанные этим текстом действия немедленно, а создает, собирает из имеющихся в нем стандартных последовательностей другую программу — в кодах, не зависимую от каких либо трансляторов. Главная задача компилятора — сделать программу максимально быстродействующей. Откомпилированную программу, как и любую программу в кодах, трудно читать и изменять. Приходится редактировать исходный текст на языке высокого уровня и пропускать его вновь через компилятор, чтобы получить новую программу в кодах.

Созданы компиляторы и для Spectrum-Бейсика. О них позже. А сейчас — об интерпретаторе Бейсика. Основная часть первой главы рассчитана на начинающих. Для уже имеющих опыт в программировании предназначен специальный раздел — «Справочник по Spectrum-Бейсику» (далее просто «Справочник»).

ПЕРВОЕ ЗНАКОМСТВО

Бейсик — родной язык компьютера ZX Spectrum. На Бейсике он готов вести беседу сразу после включения питания и поймет то, что мы хотим ему сказать с полуслова. Ведь для ввода бейсиковской команды в Spectrum достаточно нажать лишь одну клавишу, ну две, в крайнем случае, три, не больше. И все благодаря тому, что программа, которая «сидит» в постоянной памяти компьютера, и клавиатура машины специально приспособлены для работы на Бейсике Это видно при нервом же знакомстве со Speccy: на его клавиши кроме букв, цифр и всяких значков нанесено еще по несколько английских слов. Это слова из лексикона Бейсика — имена его операторов и функций. Они называются киочевычи словами.

На большинстве компьютеров ключевые слова языков программирования, в том числе и Бейсика, набираются но буквам. Например, для набора слова PRINT приходится нажимать одну за другой пять клавиш: Р, R, I, N и Т. И при этом нельзя ошибиться, иначе компьютер не поймет, что, собственно, от него хотят. Speccy же, если с ним говорить на Бейсике, гораздо смышленее.

Включим компьютер и после того, как надоест любоваться фирменной заставкой

©1982 Sinclair Research Ltd

— нажмем клавишу, на которой нарисована буква Р. В нижней части экрана, в так называемой строке редактора, мгновенно появится слово PRINT. Целиком и гарантированно без ошибок.

В результате нехитрого действия (нажатия клавиши) мы набрали, или, как принято говорить, ввели оператор PRINT. Оператор

— это ключевое слово, предписывающее компьютеру выполнить некую законченную последовательность действий. Например, оператор PRINT отвечает за вывод на экран числовой и текстовой информации. Он так и переводится — «печатать». Что именно печатать, записывается следом за словом PRINT.

Там, на экране, за PRINT, давно уже мерцает квадратик с буквой L. Этот квадратик называется курсором. Его основное назначение

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

Теперь у нас получился полноценный оператор: ключевое слово с данными — PRINT 5. Можно приказать компьютеру выполнить его. Найдем на клавиатуре клавишу с надписью Enter (ввести, англ.) и нажмем ее. В верхнем левом углу экрана напечатается цифра 5 (что и ожидалось), сам оператор пропадет, а на его месте появится сообщение:

О ОК, 0:1

Мол, все о'кей, оператор1 выполнен.

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

Формат — это узаконенный для языка программирования способ соединения ключевого слова, параметров и данных. Параметры задают режим работы операторов. Их количество и смысл строго определены дя каждого из них. Данными будем называть «перерабатываемую» операторами информацию. В выполненном нами операторе данными является цифра 5, а параметров нет.

Оператор PRINT имеет более сложный формат, если с его помощью на экран нужно вывести не числовые данные, а символьные, то есть буквы или другие знаки (символьные данные часто еще называют строковыми или просто строками). В этом случае данные заключаются в кавычки. Вот так:

PRINT "р"

Набирается эта конструкция предельно просто. После включения компьютера (или выполнения какого-либо оператора) нажимаем клавишу Р (последствия этого действия нам уже известны). Далее давим на клавишу с надписью Symbol Shift и, не отпуская ее, опять клавишу Р — на экране появится кавычка ("). Потом еще раз — клавишу Р и еще раз — Symbol Shift одновременно с Р (кавычка). Теперь можно жать Enter, PRINT кавычки «обрежет» и напечатает на экране строчную букву р.

Если при наборе оператора допущена ошибка, нет необходимости сбрасывать компьютер и начинать ввод сначала. Пока не нажата клавиша Enter, набранную строку можно редактировать. Выведенные на экран ключевые слова и символы удаляются одновременным нажатием клавиш Caps Shift и 0. Эта комбинация клавиш задает команду редактора Delete. После ее выполнения символ или ключевое слово, стоящее левее курсора, удаляется. Подвести курсор к любому месту набранной строки можно с помощью клавиш перемещения курсора: Caps Shift и 5 (влево) и Caps Shift и 8 (вправо). Если необходимо вставить в уже набранную строку еще что-нибудь, то к нужному месту подводится курсор и обычным образом набирается ключевое слово или символ. Текст, расположенный правее курсора, при этом сдвигается, освобождая место для вводимых символов. В этом коротеньком абзаце мы описали редактор строк Spectrum-Бейсика. Удобств в нем маловато, но набрать и поправить строку можно.

Пример с выводом на экран буквы р приведен здесь не только для того, чтобы продемонстрировать формат оператора PRINT при выводе символьных данных, но и для пояснения специфики работы клавиатуры ZX Spectrum. Для большей наглядности включим в строку, взятую в кавычки, еще прописную букву Р, и значок ©. Они набираются нажатием все той же клавиши (рис. 1): прописная Р — совместно с клавишей Caps Shift, а значок © — сложнее: сначала одновременно нажимаются уже известные нам клавиши Caps Shift и Symbol Shift и только потом Symbol Shift и Р. Получим в строке редактора оператор

ТАВ

Р "

* PRINT

Рис. 1. Клавиша Р.

PRINT "рР©"

На этом примере мы показали, что, нажимая одну и ту же клавишу на клавиатуре ZX Spectrum в различных сочетаниях с двумя управляющими клавишами (Caps Shift и Symbol Shift), можно получить на экране разные символы. В примере мы вывели на экран и ключевое слово PRINT, и кавычку, и знак ©. На клавише Р есть еще одно ключевое слово — TAB, которое также можно «выудить» с ее помощью. Пока без пояснений специфики использования TAB вставим его в оператор PRINT: PRINT TAB 10; "рР©"

Для «извлечения» TAB нужно одновременно нажать клавиши Caps Shift и Symbol Shift, а потом клавишу Р. Знак «точка с запятой» (;), расположенный на клавише О, необходим для нормальной работы оператора PRINT и набирается тем же способом, что и кавычка: совместным нажатием Symbol Shift и клавиши О. PRINT в сочетании с TAB напечатает на экране комбинацию из трех символов (рР©), но поместит ее не у левого края экрана, а ближе к его середине.

Такой «многоступенчатый» ввод — следствие отказа от побук-венного набора. Ведь ключевых слов Spectrum-Бейсика в несколько раз больше, чем клавиш у Speccy. А еще буквы, знаки. Вот и получается по несколько символов и ключевых слов на клавишу.

Что конкретно появится на экране после нажатия какой-либо клавиши, зависит не только от того, какие управляющие клавиши были нажаты до или одновременно с ней, но и от режима, в котором находится компьютер. Например, в одном режиме компьютер ждет ввода оператора или номера строки программы, в другом — набора цифр или букв. Мы уже убедились в этом: первый раз нажали клавишу Р — получили ключевое слово PRINT, второй — буквочку р.

О своих ожиданиях, то есть о режиме, в котором он находится, компьютер дает знать по букве, помещенной в курсор (до ввода PRINT в курсор вписывалась буквочка К, сразу после ввода — L, а при наборе TAB и знака © — Е). Индикация режима — это вторая функция курсора, в дополнение к обязанности указывать место, в которое будет поставлен символ либо ключевое слово при нажатии клавиши.

Учитывая все сказанное о клавиатуре, нам не избежать более подробного рассказа о том, как ею пользоваться. Вот такой уж Spectrum-Бейсик — без знания клавиатуры и программу не наберешь. Те, кто читает эту книгу из любопытства или только для общего знакомства, без особого ущерба для себя могут пропустить следующий раздел.




СОДЕРЖАНИЕ:
  1. Laser Basic - Вывод спрайтов на экран; Вывод на экран части спрайта; Перенос атрибутов; Преобразование окна экрана; Наборы переменных; Перемещение спрайтов; Наложение спрайтов; Копирование изображения с экрана в спрайт; Преобразование спрайтов; Скроллинг пейзажа; Изменение размеров области спрайт-файла; Вспомогательные графические операторы и функции; Определение столкновений спрайтов; Сервисные операторы и функции; Процедуры; Загрузка и запись программ.


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Other Nets - Расскаp про Internet.
Тема - Новый ZX Spectrum: рассуждения на тему Спектрума нового поколения.
TOP TEN - Лучшая десятка игр.
О нас - газета для интеллектуалов и параноиков.
brain damage - детская сказочка.

В этот день...   29 марта