ZX-Ревю 1996 №4-5 1996 г.

Этюды - процедура поиска шрифтов и спрайтов.


ИФК: А сейчас предоставим слово Котлярову Евгению из г. Оренбурга.

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

Первая процедура предназначена для поиска шрифтов и спрайтов. Подобные программы на БЕЙСИКЕ уже печатались в ZX РЕВЮ, но эта отличается большими возможностями: она компактна (239 байт), релоцируема, с ее помощью можно искать не только шрифты, но и спрайты размером от 1*1 до 7*31 знакомест. Самое удобное для нее место, на мой взгляд, - буфер принтера. Клавиши управления:

1 - уменьшить длину окна;

2 - увеличить длину окна;

3 - увеличить высоту окна;

4 - уменьшить высоту окна;

5 - переключение спрайт-шрифт;

6 - увеличение адреса на 32;

7 - уменьшение адреса на 32;

8 - увеличение адреса на 1;

9 - уменьшение адреса на 1; 0 - выход из программы.

Вызвать программу можно, например, так: RANDOMIZE ADDRES1: LET A=USR ADDRES2,

где ADDRES1 - адрес начала поиска, ADDRES2 - адрес загрузки. После выхода в A, будет возвращен текущий адрес. Определить режим поиска можно по переменной FLAG, находящейся по адресу #59FD в области атрибутов. Если это знакоместо черного цвета, значит производится поиск шрифтов, если ярко-белого - спрайтов.

Вот ее листинг:

EQU

23670

EQU

#5 9FF

EQU

#5 9FE

EQU

#5 9FD

ORG

40000

ENT

$

LD

A,2

LD

(LEN),A

LD

(HEI),A

CALL

#1601

XOR

A

LD

(FLAG),A

LD

HL,(SEED)

PUSH

HL

PUSH

HL

LD

BC,#0921

CALL

#0DD9

POP

BC

CALL

#2D2B

CALL

#2DE3

POP

HL

LD

A,32

RST

16

LD

A, #EF

IN

A,(#FE)

RRA

LD

B, H

LD

C, L

RET

NC

RRA

JR

C, L2

DEC

HL

RRA

JR

C, L3

INC

HL

RRA

SEED HEI LEN FLAG

START

L2

L3

LD

BC, 32

JR

C, L4

SBC

HL, BC

L4

RRA

JR

C, L5

ADD

HL, BC

L5

LD

A,#F7

IN

A,(#FE)

LD

C,A

RR

C

LD

A,(LEN)

JR

C, L6

DEC

A

JR

NZ, L6

INC

A

L6

RR

C

JR

C, L70

CP

31

JR

Z,L7

INC

A

L7 0

LD

(LEN),A

L7

RR

C

LD

A,(HEI)

JR

C, L8

CP

8

JR

Z,L8

INC

A

L8

RR

C

JR

C, L90

DEC

A

JR

Z,L9

PUSH

AF

PUSH

BC

PUSH

HL

XOR

7

INC

A

LD

B,A

CALL

#0E44

POP

HL

POP

BC

POP

AF

L90

LD

(HEI),A

L9

RR

C

LD

A,(FLAG)

JR

C, RUN

CPL

LD

(FLAG),A

RUN

OR

A

JR

Z,FO_FIND

JR

FIND

START1

JR

START

FIND

PUSH

HL

LD

BC,(LEN)

LD

DE,#5000

L10

PUSH

BC

LD

B, 8

L11

PUSH

BC

LD

B, 0

LDIR

XOR

A

LD

(DE),A

POP

BC

INC

D

LD

A, E

FO FIND

SUB

C

LD

E,A

DJNZ

L11

POP

BC

LD

D,%010100

ADD

A,32

LD

E,A

DJNZ

L10

POP

HL

JR

START1

PUSH

HL

LD

A,(LEN)

LD

B,A

LD

DE,#5000

PUSH

BC

PUSH

DE

LD

A, (HEI)

RLCA

RLCA

RLCA

LD

C,A

LDI

LD

A, B

CP

1

JR

NZ,L14

XOR

A

LD

(DE),A

DEC

DE

LD

A, D

AND

7

CP

7

JR

NZ,L15

LD

A, D

AND

%11111000

LD

D,A

LD

A, E

ADD

A,32

LD

E,A

JR

L16

INC

D

LD

A, C

OR

A

JR

NZ,L13

POP

DE

INC

DE

POP

BC

DJNZ

L12

POP

HL

JR

START1

L12

L13

L14

L15 L16




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Дикий ум - Генерация и оптимизация кода в компилятора (часть 2).
Тусовка - Полный отчет с FunTop'98: часть первая. Миниинтервью с дедушкой Welcome и Mike Blum.
ZXNet - логи ZX-SHADOW.
НА-ЧАЛО - Привeт спeкмaн! Мeня зoвут Full Pull...
От авторов - Ну вот и все, закончился и этот номер нашей газеты.

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