ОТЛАДКА И РЕДАКТИРОВАНИЕ ПРОГРАММ
• КОМАНДЫ BRANCH, TRON, TROFF, SPEED
Команда "BRANCH " может оказаться весьма полезной при отладке программ. Например, вас интересует значение отдельной переменной. Для вывода ее значения на экран используется команда "BRANCH ".
Другой метод контроля выполнения программы — команды "TRON" и "TROFF" Они разрешают и запрещают трассировку (вводится номер выполняемой строки в левый нижний угол экрана).
Команда "SPEED N" устанавливает скорость исполнения программы: N=0 — максимальная скорость; N =255 — минимальная (останов после выполнения каждой команды). Нажатие любой клавиши в этом режиме приводит к повышению быстродействия до максимума.
• КОМАНДЫ AUTO И DELETE
При наборе больших программ очень удобно входить в режим "AUTO", в котором номер строки печатается автоматически после каждого нажатия клавиши <ENTER>.
Команда "AUTO начальное значение, приращение" автоматически нумерует строки при набивке программы. Выход из этого режима: "SYMBOL SHIFT + L" в режиме "EXTENDED".
Часто бывает необходимо удалить большие блоки программы. Команда "DELETE N1,N2" стирает все строки программы с N1 до N2.
• КОМАНДЫ BROFF И BRON
Специально для желающих защитить свою программу от посторонних глаз существует команда "BROFF ", которая запрещает прерывание выполнения программы нажатием на клавишу BREAK. Разрешение прерывания осуществляется командой "BRON ".
• КОМАНДЫ RESTART И RESTART OFF
Многие версии Бейсика имеют команды "ON ERROR GO ТО", которые позволяют изменить работу системы при обнаружении ошибки. Эквивалент этой команды в М-В — "RESTART ", которая имеет один числовой аргумент, определяющий адрес перехода в случае ошибки. Для возобновления нормального режима работы программы необходимо выполнить команду "RESTART OFF".
"RESTART " не срабатывает при обнаружении ошибки в INTERFACE-1 или в самом М-В. Для вывода сообщения об ошибке полезно знать, что
Адрес 59873/4 — содержит номер строки с ошибкой;
Адрес 59875 — номер утверждения с ошибкой;
Адрес 59862 — код ошибки.
ЗВУК
М-В предоставляет вам два новых способа вывода звука для ZX-SPECTRUM — команду "PLAY " и генератор звука по прерыванию (ГЗП). формат:
PLAY N. длина шага, начальная частота, количество шагов, приращение частоты
Эта команда позволяет создавать новые интересные эффекты. N — выбор звука. Если N=0, то чистый тон; если N=1, то белый шум. Однако "PLAY " лишь расширение "BEEP', a М-В открывает совершенно новые возможности, создавая генератор звука по прерыванию (ГЗП), который позволяет выводить звук независимо в процессе выполнения программы.
50 раз в секунду работа процессора прерывается и происходит переход на короткую подпрограмму в машинных кодах, которая сканирует клавиатуру. В М-В эта программа модифицирована для генерации звуков. М-В имеет ряд команд, обеспечивающих управление ГЗП и буфером звука:
SOFF — запрет ГЗП (любой звук прекращается);
SON — разрешение ГЗП (звук возобновляется);
SREP N — количество повторений; если N=0, задает бесконечное количество повторений;
SOUND N,A,B,S,D —простая, но эффективная коман-да управления ГЗП;
N — устанавливает заполнение буфера, если N=0 — содержимое буфера ГЗП возобновляется, если N=1 — данные добавляются в конец буфера звука;
А — выбор звука (аналогично "PLAY N");
В — приращение частоты на каждом шаге;
С — число шагов при однократном запуске;
D — число запусков.
Заметим, что "PLAY " запрещает работу ГЗП, поэтому после "PLAY " надо добавить команду "SON". Отметим кстати, что ГЗП не функционирует при работе строкового редактора.
Скорость выполнения программы зависит от сложности звука, который вы задали.
Пример использования ГЗП:
10 SOUND 0,0,1,20,255
20 SREP 1
30 SON
40 MODE 4: STIPPLE 6: FONT 2
50 VDU (128+RND*15)
60 PAPER RND*7: INK 9
70 GO TO 50
машинные КОДЫ И YS MEGA BASIC
М-В сохраняет возможность запуска подпрограмм в машинных кодах из BASIC-программ. Однако существуют две особенности:
1. Область выше 45000 занимать нельзя, так как она занята самим М-В.
2. М-В использует второй режим прерывания Z80. Поэтому все программы с использованием системы прерываний потребуют особого внимания.
• КОМАНДЫ DOKE И CALL
При работе с микропроцессором Z80 часто бывает необходимо заносить в ОЗУ двубайтные константы. Для этого существует команда "DOKE адрес, данные". Данные размещаются в соответствии со стандартом Z80: младший байт — первый, старший — второй.
Команда "CALL " вызывает подпрограмму в машинных кодах с заданного адреса. В случае необходимости за адресом может следовать любое количество числовых выражений.
• ПЕРЕДНЯЯ ПАНЕЛЬ
М-В дает возможность набивать в прямом режиме программы • машинных кодах, используя переднюю панель. Она вызывается либо командой "MON", либо нажатием пробела и "F" при выполнении программы. Для передней панели используется окно 3, Которое должно иметь размер не менее 40 столбцов на 20 строк для правильного функционирования. Слева на голубом фоне па-мель отображает состояние внутренних регистров Z80. Регистр флагов выведен в двоичной форме. Звездочка обозначает текущий регистр. Справа выводится значение области ОЗУ с произвольного адреса, текущий байт выделен инверсной строкой. Внизу на зеленом фоне — строка ввода. Управление осуществляется несколькими односимвольными командами, за которыми может следовать до 3-х шестнадцатеричных чисел. Все такие числа должны вводиться полностью. При вводе двухбайтных чисел необходимо записывать четыре знака.
SPACE — возврат в BASIC;
R N N — загрузка текущего регистра;
Р — сдвиг указателя текущего регистра;
М NN —устанавливает адрес текущей области памяти, выводимой на панель;
S — устанавливает точку прерывания;
К — возобновляет выполнение программы после прерывания;
U — восстанавливает точку прерывания;
J NN —вызывает подпрограмму в кодах по адресу NN;
ENTER — инкремент адреса текущей области;
"-" —декремент адреса текущей области;
L NN1 NN2 NN3 —перемещение массива объемом NN3 с адреса NN1 в адрес NN2;
1 NN1 NN2 NN3 — заполнение массива объемом NN2 константой NN3 с адреса NN1.
ПРИМЕЧАНИЕ:
N — байт;
NN — двухбайтное слово.
Если в начале строки ввода записываются два числа, представляющие байт, то он записывается в ОЗУ по текущему адресу и этот адрес инкрементируется.
РЕДАКТОР СПРАЙТОВ
• СПРАЙТЫ В МЕГА-БЕЙСИКЕ
Спрайты — это графические объекты, которые можно передвигать по экрану. Их форма, цвет, направление и скорость движения определяются пользователем, причем каждый спрайт может иметь не один облик, связанный с ним. В движении можно изменять форму спрайта, меняя его облик, т.е. сделать его.жи-вым. В М-В вы можете использовать до 8-и спрайтов с номерами от 0 до 7.
Команда "SPRON ", имеющая два аргумента, позволяет выводить спрайты на экран. Первый аргумент определяет номер спрайта, второй — способ вывода (если 1, то логическое сложение по модулю 2). Команда "SPROFF;HOMep спрайта" удаляет спрайт с указанным номером. Размер спрайта — 16*16 точек, причем каждая из 4-х групп размером 8*8 точек может иметь свои собственные атрибуты. Под спрайты отводятся две области в памяти, первая — с адресами 56750-56893 содержит всю информацию о спрайте, за исключением облика. Для каждого спрайта отводится по 18 байт, для вычисления начального адреса с номером N ис-пользуется выражение: A=56750+18*'N.
Вид спрайта определяется байтом с адресом А (если 0, то спрайт не выводится, если 1, то логически складывается по модулю два). Конец информации о спрайтах обозначается байтом 255, поэтому наилучшим способом стереть все спрайты будет команда: POKE 56570, 255
Спрайты используют ту же систему координат, что и команды "SPUT " и "SPRINT ".
А+1 — Х-координата спрайта (0-255);
А+2 —Y-координата спрайта (0-175);
А+3 — инкремент X;
А+4 — инкремент Y;
А+5 — время, необходимое для движения спрайта;
А+7 — число обликов;
А+9 — период смены обликов;
А+11/12 — адрес, с которого начинаются облики;
А+15 — атрибуты, используемые для стирания спрайта.
Вторая область памяти используется для хранения обликов всех спрайтов, она располагается между RAMTOP и адресом
44999 и имеет переменную длину. Под каждый спрайт отводится 36 байт, причем 32 — для изображения, 4 — для атрибутов.
Как уже ранее упоминалось, байты А+11 и А+12 указывают на информацию о первом облике, причем несколько спрайтов могут указывать на один адрес. Если спрайт имеет не один облик, то информация о них должна следовать сразу за информацией о первом облика
• ПРОГРАММА SPRITE DESIGNER
SPRITE DESIGNER (S-D) располагается на ленте сразу за М-В и загружается командой LOAD "S-D".
S-D автоматически запускается и позволяет без особого напряжения создавать спрайты и размещать их на ленте и магнитных картах готовыми для использования.
Голубое поле слева используется для создания изображений, поле справа — для отображения информации." Нижняя часть экрана — для ввода пользователя.
CREATE A SPRITE — позволяет определить координаты, скорость и направление движения.
VIEW A SERIES OF IMAGES — позволяет увидеть спрайты стандартных размеров (конечно, если есть хотя бы один облик в памяти).
CREATE AN IMAGE — очищает 36 байт над RAMTOP для создания нового облика.
EDIT AN IMAGE —позволяет редактировать облик с экрана.
SAVE IMAGES AND SPRITES — записывает текущий спрайт и его облик на ленту или магнитную карту.
LOAD IMAGES AND SPRITES — загружает в память спрайты с их обликами.
COPY TO MICRODRIVE — копирует S-D на магнитную ленту.
RETURN TO BASIC — возврат в MEGA BASIC. Для перезапуска S-D набрать GOTO 5 и нажать <ENTER>.
Помните, что облики нумеруются с 0, а облик с номером О располагается выше всех в памяти.
При записи спрайта необходимо указать имя файла (длиной до 8-и символов), причем записано будет 3 файла. Например, если имя — "SPRITE" то будет сохранено три файла с именами:
"SPRITE .N", "SPRITE .1" и "SPRITE .S". "SPRITE .N" — это однобайтный файл, определяющий количество обликов спрайта,
"SPRITE .S" — файл с информацией о самом спрайте. Для загрузки спрайта и его обликов из вашей программы необходимо набрать:
9000 LOAD F$ + ".N" CODE 23296 9010 CLEAR 44999 + 36 * PEEK 23296 9020 LOAD F$ + " . I" CODE 9030 LOAD F$ + ".S" CODE