╒══════════════════════════════╕
│░░░░░░ ПРОГРАММИРОВАНИЕ ░░░░░░│
╘══════════════════════════════╛
Предлагаем вашему вниманию прог-
рамму присланную нам Котовым А.В
из города Рыбинска.
Котов А.В.
───────────
Универсальная подпрограмма
ввода/вывода спрайта
Данная прцедура работает с
файлами формата редактора
спрайтов "SPRITE EDITOR 2". Для
тех у кого его нет сообщаю, что
формат файла у данного редактора
таков:
Если файл создавался с
выключенными опциями Mask и
Color, т.е. содержит только
информацию о графике, то вначале
идут 8 строк первого знакоместа
спрайта потом 8 второго и так
далее.
Данные в подпрограмку переда-
ются через IX регистр, в него
записывается адрес таблицы пара-
метров.
Формат таблицы:
IX + 0 X - координата X вывода
на экран (в знакоместах )
+ 1 Y - координата Y вывода
на экран (в знакоместах )
+ 2 Xраз- размер спрайта
по горизонтали в знакоместах
+ 3 Yраз- размер спрайта по
вертикали в знакоместах
+ 4 n - номер спрайта к
выводу (меньше действительного
на 1) для таблиц спрайтов.
+ 5 \
+ 6 / размер спрайта в
байтах.
* SPBUF DEFW 0 ; здесь адрес
;начала таблицы спрайтов
sprite DI
LD B,(IX+4) ;получили
;номер спрайта
LD A,B
CP #0
JR Z,sl2 ;точка входа
;для первого или
;единственного
; спрайта
LD E,(IX+5)
LD D,(IX+6) ;загрузка
;размера
;спрайта
LD HL,(spbuf) ;адрес
;спрайта или
; таблица
;спрайтов
sl1 ADD HL,DE
DJNZ sl1
sl2 LD B,(IX+3) ;размер по Y
LD D,(IX+0)
LD E,(IX+1) ;координаты
;вывода
;спрайта
PUSH HL
CALL GET_ADR_S
POP DE
sl3 PUSH BC
LD B,8 ;начало цикла по
;знакоместу
sl4 PUSH BC
PUSH HL
CALL Outspr ;прорисовка
;одной строки
;спрайта
POP HL
INC H
POP BC
DJNZ sl4
DEC H ;коррекция HL
CALL next_b ;переход на
;следующую
;символьную
;строку
;и коррекция
;при переходе
;через границу
;трети экрана
POP BC
DJNZ sl3
EI
RET
;данная процедура позволяет как
;вывести спрайт на экран так и
;взять его с экрана.Вывод
;возможен прямой по XOR, OR,AND
;нужно только заменить команду
;NOP на ту, которую вам нужно.
Outspr:
LD B,(IX+2) ;длинна
;строки
outsp1 LD A,(DE)
NOP
LD (HL),A
INC DE
INC HL
DJNZ outsp1
RET
next_b INC H
LD A,H
AND #7
RET NZ
LD A,1
ADD A,#30
LD 1,A
RET C
LD A,H
SUB 8
LD H,A
RET
* Set_Adr_S ;данная процедура
;находит экранный адрес
;по знакоместам
; /координаты в DE,адрес
;возвращается в HL (взя-
;то из книги "Приклодная
;графика" Инфорком)/
LD A,E
AND #18
OR #40
LD H,A
LD A,E
AND #07
OR A
RRA
RRA
RRA
RRA
ADD A,D
LD L,A
RET
Соломонов Антон из Челябинска
задает вопрос, связанный с ис-
пользованием принтера.
У меня компьютер "Sсorpion 256"
Version 2.4d. При подключении к
нему через интерфейс Centroniсs
принтера "Seikosha", при подаче
команды на печать LPRINT с уп-
равляющими кодами CHR$ 15 в тек-
стовом режиме выдает совершенно
не то, что нужно...
В графическом режиме при сбросе
картинки с экрана на принтер
вместо картины, также печатаются
буквы...
Для ответа на такие вопросы
необходимо обладать полной ин-
формацией. Как известно, для то-
го чтобы принтер работал, требу-
ется выполнить два условия:
1. Правильно сделать подключение
(аппаратная часть).
2.Установить программу поддержки
принтера (программная часть).
В фирменном ZX-Spectrum'e в ПЗУ
находится программа, которая ра-
ботает только с принтером специ-
ально созданным для этого компь-
ютера. Если к компьютеру подклю-
чен какой-либо другой принтер,то
для его работы требуется прог-
рамма (драйвер) поддерживающая
данный тип принтера. К сожалению
большинство программ содержат
драйвера Epson - совместимых
принтеров.
Для того, чтобы ваш принтер за-
работал необходимо приобрести,
либо написать драйвер этого
принтера, а также установить его
в графические и текстовые редак-
торы.
Пиобрести такую программу можно
на радиорынке. Если таковой там
не окажется, то обратитесь в НПО
"УРАЛАВТ" (см.рекламу).
Просьба к читателям журнала:
В связи с тем, что очень много
пользователей обращаются с воп-
росами, связанными с ремонтом
компьютеров, подключением каких-
- либо внешних устройств, напи-
санием программ поддетжки, то
пусть тот, кто может и желает
сделать такие виды работ, даст
рекламу в нашем журнале.
* * *