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

Этюды - вывод символа в восьмикратном увеличении.


© И. Пивен.

КОРР: Решил вынести на ваш суд свою первую (законченную) процедуру в машинных кодах. Сей релоцируемый программный модуль позволяет выводить на экран 4 любых символа в восьмикратном увеличении (8*4=32, как известно). Надеюсь, на основе моей идеи читатели создадут "BIG RUNLINE" - это, вообще-то, цель письма. Итак, вперед:

; (C) SELINA SPACE 8*8

можно и любой другой адрес подготовка для файла атрибутов

23296

HL,22520 BC, 8

124

ORG

EXX

LD

LD

EXX

CALL

RET - обеспечение релацируемости и

FIR NEX

NEX LIN

DEC

SP

DEC

SP

POP

HL

LD

BC, 10

8

ADD

HL, BC

LD

A, (HL)

CP

255

JR

NZ,CONT

LD

HL,10072

EXX

RET

INC

HL

PUSH

HL

LD

L,A

LD

H, 0

ADD

HL, HL

ADD

HL, HL

ADD

HL, HL

PUSH

HL

POP

BC

LD

HL, (23606)

ADD

HL, BC

PUSH

HL

POP

DE

EXX

ADD

HL, BC

PUSH

HL

LD

B, 8

PUSH

BC

LD

A,(DE)

INC

DE

BIT

7,A

JR

Z, AA

LD

(HL) ,

214

INC

HL

BIT

6,A

JR

Z,BB

LD

(HL) ,

214

INC

HL

BIT

5,A

JR

Z, CC

LD

(HL) ,

214

INC

HL

BIT

4,A

JR

Z,DD

LD

(HL) ,

214

INC

HL

BIT

3,A

JR

Z, EE

LD

(HL) ,

214

INC

HL

BIT

2,A

JR

Z, FF

LD

(HL) ,

214

INC

HL

BIT

1,A

JR

Z, GG

LD

(HL) ,

214

INC

HL

BIT

0,A

JR

Z, HH

LD

(HL) ,

214

LD

BC, 25

ADD

HL, BC

; расчет адреса сообщения

; получаем STRING

; подготовка или возврат, если END

;расчет адреса матрицы символа

; расчет адреса в файле атрибутов

; количество "огромных" знаколиний для цикла

; байт матрицы в аккумулятор и проверяя каждый бит,

; включаем или не включаем соответствующий байт

; атрибутов.

AA

; 214 - параметры (атрибуты) знакоместа

; переход к следующей "огромной" знаколинии

CONT

BB

CC

DD

EE

FF

GG

HH

восстанавливаем параметр цикла не закончили? Тогда на NEX-LINE адрес следующего символа вернули на FIR_NEX начнем сначала.

POP DJNZ POP JR

BC

NEX_LIN HL

FIR_NEX

КОРР: Конечно, не забываю рубрику "ИДЕЯ" и дарю довольно интересную мысль читателям. Вероятно, с самых первых шагов общения с RAM, каждый сталкивается с областью системных переменных, и, в первую очередь, с CHARS. Ну, конечно, у Вас уже мелькнула стереотипная мысль: "CHARS указывает на 256 байтов ниже истинного положения фонта". А почему?! Любой Ваш ответ неверен! На самом деле, CHARS указывает туда, куда надо! Просто процедура печати из ПЗУ не изображает символы с кодами 0...31. Ага! Начинает доходить? Ведь это нужно для работы БЕЙСИКА! А в кодах? Вы собственноручно создаете процедуру печати, которая не игнорирует " контрольные коды" и, таким образом, получаете вдобавок еще 32 символа в Вашем фонте. Создать символы можно в ART STUDIO, указать в CHARS непосредственно на них, а остальной набор загрузить на 256 байтов выше. И все! На базе этой идеи можно создать или доработать текстовый редактор, который, думаю, заинтересовал бы многих.

© Васильев Антон (EARTH SOFTWARE) г. Снежинск

КОРР: Здравствуй уважаемый ИНФОРКОМ! Посылаю вам пару программ - ответов на вопросы Сергея Колотова, а также несколько своих программ.

Итак, сначала ответы: 1. HL= B*C

L1

LD E, C

LD HL,0

LD D,0

ADD HL,DE

DJNZ L1 RET

2. Напечатать символ, код которого в A, атрибутом, заданным в С, на весь экран.

ORG 40000

SUB 32

LD L,A

LD H, 0

LD A, C

LD (L6+1),A

ADD HL, HL

ADD HL, HL

ADD HL, HL

LD DE,15616

ADD HL,DE

LD DE,BUF

LD BC,8 LDIR

LD HL,22528

LD DE,BUF

LD B, 8

PUSH BC

PUSH DE

PUSH HL

LD B, 8

PUSH BC

EX DE,HL

RL (HL)

EX DE,HL

LD A,0

JR NC,L3

LD A,34

LD B, 4

LD (HL),A

INC HL

DJNZ L4

POP BC

DJNZ L2

EX DE,HL

L1

L2

L6 L3 L4

POP

HL

PUSH

HL

LD

B, 64

LD

A, (HL)

LD

(DE),A

INC

HL

INC

DE

DJNZ

L5

POP

HL

LD

DE, 96

ADD

HL, DE

POP

DE

INC

DE

POP

BC

DJNZ

L1

RET

DEFS

8

BUF




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Обратная связь - контакты редакции.
Вступление - Трошку о грустном.
Видео - Боевик "Обмен".
Версии - 2 версии игры: JAWS.
От авторов - Редакция.

В этот день...   21 ноября