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

PRO-DOS - Приложения: Алфавитный перечень операторов PRO-DOS, Распределение памяти при работе с PRO-DOS, Вывод на принтер, Дополнительные сведения об окнах.


ПРИЛОЖЕНИЯ

1. Алфавитный перечень операторов PRO-DOS*

Таблица 7.

0<!*р*Г6р

Параметры

Д<?йсТ*йе

стр.

АД *>*<

♦BOX

Xl. yl,

x2, y2

Рисует прямоугольник с координатами вершин (х1, у1) и (х2, у2)

135

62984

♦CCHR

Переключает шрифт с нормального на узкий

145

62535

♦CHR

Переключает шрифт с узкого на нормальный

146

62544

♦CLEAR

n

Очистка/заливка окна. Параметр устанавливает режим очистки/заливки

144

61559

♦CLS

Очистка/заливка окна. Эквивалентен ♦CLEAR 3

145

61643

♦CSIZE

n1, n2

Устанавливает размер символов графического шрифта

146

62605

♦DIR

n

Устанавливает направление печати для графического шрифта

147

62242

♦DRAW

x. У

Рисует отрезок от текущей точки до точки с координатами (х, у)

135

62752

♦ELLIPSE

x, у, a, b

Рисует эллипс с координатами центра (х, у) и полуосями а и b

136

63023

♦FBOX

xl, y1, x2, y2

Рисует прямоугольник с текстурной заливкой и координатами вершин (х1, у1) и (х2, у2)

138

62841

♦FILL

x, У

Осуществляет сплошную заливку замкнутого контура вокруг точки с координатами (х, у)

139

62320

♦GPAT

n

Устанавливает шаблон для рисования графических объектов прерывистыми линиями и текстуру для оператора ♦FBOX

137

62577

♦HATCH

X, у, addr

Осуществляет заливку замкнутого контура вокруг точки с координатами (х, у) изображениями символа, закодированными по адресу addr

139

62266

♦LARGE

-

Включает режим графического шрифта

147

62559

* В таблице приведен адрес подпрограммы PRO-DOS, реализующей действие оператора.

Оператор

Действие

Стр>

Адрес

*L!NE

x2, y2

Рисует отрезок прямой пинии с координатами концов (х1, у1) и (х2, у2)

135

62896

♦MATCH

addr

Заменяет заливку, полученную последним оператором ♦HATCH, на изображение символа, закодированное по адресу addr

141

62478

♦NEW

Устанавливает стандартные параметры для всех окон

142

60272

♦NOWRAP

Разрешает скроллинг при заполнении окна

143

62526

♦NORMAL

-

Выключает режим графического шрифта

147

62568

♦PAINT

У

Производит текстурную заливку замкнутого контура вокруг точки с координатами (х, у)

139

62622

♦PLOT

У

Рисует точку с координатами (х, у) и устанавливает в ней позицию печати для графических шрифтов

135

61321

♦ROLL.

m, n

Осуществляет циклический скроллинг окна на одно знакоместо, если m отлично от нуля. Параметр п определяет направление скроллинга

143

62090

♦SCREEN

addr

Устанавливает адрес addr начала теневого экрана

148

60255

♦SCROLL

m, n

Осуществляет нециклический скроллинг окна на одно знакоместо, если m отлично от нуля. Параметр п определяет направление скроллинга

143

62096

♦SWAP

Копирует содержимое теневого экрана в экранную область

149

60236

♦TPAT

л

Устанавливает шаблон для текстурной заливки окон с помощью операторов ♦CLEAR и +CLS

144

62591

♦TRIANGLE

x1, yt, x2, y2, хЗ, y3

Рисует треугольник с указанными координатами вершин (xl, у1), (х2, у2) и (хЗ, уЗ)

136

62931

♦WINDOW

n

Устанавливает текущим окно с номером п

141

60481

♦WPOKE

nl, n2

См. Приложение 4

153

60217

♦WRAP

Блокирует скроллинг при заполнении окна

143

62517

♦WSIZE

XI, Y1,

X2, Y2

Устанавливает границы текущего окна: (Х1, Y1) — координаты левого верхнего угла; (Х2, Y2) — правого нижнего (в знакоместах)

141

62693

2. Распределение памяти при работе с PRO-DOS

P_RAMT (23732)41-

Символы, определяемые пользователем

UDG (23675)-

Свободная область

- 63788

Интерпретатор PRO-DOS

- 60000

Свободная область RAMTOP (23730)-

EJJNE (23641)-

Переменные Бейсика

VARS (23627)-

Бейсик-программа PROG (23635)-

3. Вывод на принтер

При работе в среде PRO-DOS возникают определенные сложности с выводом на принтер. Выполняемая при инициализации PRO-DOS модификация канала "P" (см. стр. 133) дает о себе знать при попытке обращения к принтеру: вместо бумаги вывод идет на экран.

PRO-DOS обычно используют для написания демонстрационных программ, как правило, не требующих работы с принтером. Но в некоторых случаях, например, при отладке программы бывает полезно распечатать ее листинг или значения переменных. Листинг проще всего получить, воспользовавшись командой LUST в момент, когда PRO-DOS еще не инициализирована оператором RANDOMIZE USR 60000. Например, для распечатки текста фирменной демонстрационной программы PRODOSDEMO можно загрузить ее в память с помощью оператора MERGE (во избежание автоматического запуска программы) и выполнить LUST.

Однако описанный метод не позволяет выводить информацию на принтер непосредственно в процессе работы программы. Эту проблему можно решить, если перед операцией вывода на принтер модифицировать две ячейки памяти, отвечающие за работу канала "Р", так, чтобы перенаправить действие операторов печати LPRINT и LLIST с экрана на принтер. А затем, сразу после печати, вернуть содержимое этих ячеек в исходное (характерное для PRO-DOS) состояние. Указанные ячейки располагаются в области информации о каналах42 по адресам 23749 и 23750 (если подключен и инициализирован Beta-Disk Interface, то по адресам 23861 и 23862). В этих ячейках должен содержаться адрес процедуры (драйвера), обслуживающей канал "Р". При инициализации PRO-DOS в них записывается значение 60514. Перед работой с принтером это значение надо заменить на адрес применяемого драйвера (первая ячейка должна содержать младший байт адреса, а вторая — старший).

Если Вы владелец фирменного ZX Spectrum с «родным» для него принтером ZX-Printer, то нужный драйвер «зашит» в ПЗУ по адресу 2548 (#09F4). В этом случае программа, использующая вывод на принтер, может выглядеть так (предположим, что дисковый интерфейс отсутствует):

10 RANDOMIZE USR 60000 20 OPEN #2, "Р"

100 LET а=100: LET Ь=200

200 POKE 23749,244: POKE 23750,9: REM Размещаем младший и

старший байты числа 2548 210 LPRINT a: LPRINT b: REM Любые операции вывода на принтер 220 РОКЕ 23749,98: РОКЕ 23750,236: REM Размещаем младший и старший байты числа 60514

Программа выведет значения переменных а и b на принтер.

Если у Вас самодельный Spectrum-совместимый компьютер с нестандартным принтером, то нужно вместо значения 2548 подставить адрес размещения этого драйвера. Чаще всего драйверы располагают в ОЗУ в области буфера принтера по адресу 23296. Если это так, то достаточно заменить строку 200 в приведенном примере на следующую (для разнообразия примем, что Вы еще и обладатель интерфейса Beta-Disk, тогда изменится и 220-я строка):

200 РОКЕ 23861,0: РОКЕ 23862,91: REM Размещаем младший и

старший байты числа 23296 220 РОКЕ 23861,98: РОКЕ 23862,236

Разумеется, строки с номерами 200 и 220 можно оформить в виде двух подпрограмм и вызывать их каждый раз при необходимости вывода на принтер.

4. Дополнительные сведения об окнах

Внутренние системные переменные расположены в области ОЗУ, начиная с адреса 60321. Для каждого окна, включая нулевое, в этой области отведено по 20 байтов. Объем всей области переменных равен 8x20=160 байт.

Оператор

♦WPOKE 20*w+(v—1), к

запишет число к в v-ю ячейку области системных переменных w-ro окна.

Назначение ячеек:

I 4 — размеры окна Устанавливаются оператором +WSIZE Начальные значения - 0, 0, 31 и 2^;

5 и 6 - координаты текущей позиции печати (номер столбца, номер строки). Начальные значения - 0 и 0;

7 и 8 — координаты последней выставленной точки Изменяется только при выполнении графических операторов PRO-DOS Начальные значения — 0 и 191;

9 — тип заливки окна Устанавливается оператором *ТРАТ Начальное значение — 0;

10 —тип линии Устанавливается оператором *GPAT Начальное значение — 255,

II и 12 - размер символов графического шрифта Изменяются оператором +CSIZE Начальные значения - 1 и 1,

13 - тип шрифта и разрешение/запрет скроллинга, если установлен режим *NOWRAP, то значение байта равно 128 для стандартного шрифта, 160 — для графического и 192 — для узкого Если установлен режим *WRAP, приведенные значения увеличиваются на 4. Начальное значение — 128 (Не следует помещать в эту ячейку неспецифицированные значения — это приводит к непредсказуемым результатам);

14 - направление печати Устанавливается оператором *DIR Содержимое ячейки не совпадает со значениями параметра *DIR. 1 — вправо, 2 — вниз, 4 — вверх и 8 — влево, диагональные направления указываются суммой соответствующих значений горизонтального и вертикального Начальное значение — 1,

15 — постоянные цветовые атрибуты окна. Значение определяется по формуле, приведенной на стр 55 Начальное значение - 56 (INK 0, PAPER 7, BRIGHT 0; FLASH 0);

16 — не используется;

17 — атрибуты OVER и INVERSE. Значение определяется по формуле k = <OVER> + 4 *<INVERSE> +32 *G

- гдев = 1, если атрибуты после инициализации окна хотя бы раз изменялись, иначев = 0. Начальное значение — 0;

18 и 19 — адрес размещения теневого экрана; устанавливается оператором *SCREEN; первоначальное значение — 16384 (стандартная экранная область);

20 — не используется

Недостатком оператора +WPOKE является отсутствие «защиты от дурака»: если первый аргумент превышает 159, то *WRAР будет изменять содержимое ячеек памяти за пределами таблицы «оконных» переменных. Это может привести к чему угодно, вплоть до сброса компьютера.




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


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

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



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

Похожие статьи:
Зазеркалье - Инопланетяне - кто они?
Reviews - demo 2003 review: Detroyt, Why?, Extazy, Microcosm, Wirne, Alienate, Sailor, The Source, Evenless, Fuck You Scene, Caprize, Resurrection, demo22, Weed, China Restaurant.
Сплошные приколы - 11 приколов... Сборник высказываний советских офицеров (продолжение).
Разборки - Пара ласковых слов от UnBEL!EVER'а по поводу разборок Demiurge Ash и Goblin^Bmz^x7m.
Chaos - описание игры "Хаос - битва волшебников".

В этот день...   20 апреля