Системные программы для «ZX-Spectrum» 1993 г.

MEGA-BASIC - отладка и редактирование программ. Звук. Машинные коды и Mega-Basic. Работа со спрайтами.


ОТЛАДКА И РЕДАКТИРОВАНИЕ ПРОГРАММ

 

• КОМАНДЫ 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 ", которая имеет один числовой аргумент, определяющий адрес перехода в случае ошибки. Для возобновления нормального ре­жима работы программы необходимо выполнить команду "RE­START OFF".

"RESTART " не срабатывает при обнаружении ошибки в IN­TERFACE-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

 




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Введение - Не прошло и пол года, как на пыльных кинескопах ваших видео-агрегатов засветился новый выпуск газеты WeekEnd #5.
Стихи - "Я счастлив тем, что я люблю людей..."
Хроника 930 - Праздник Пива.
От редакции - саpанская компьютеpная газета CITY не имеет никакого отношения ни к газете ZX-CITY.
Анекдоты - Юмор.

В этот день...   2 мая