|
KrNews
#05
24 июля 1998 |
|
Кодерам - Быстрая процедура точки.

┌──────────────────────────────────────┐
│ CODING │
└──────────────────────────────────────┘
(C) Viper/Techno Laboratory
Посмотрев другие компьютерные газеты,
я нашел там разделы, посвященные
программистам. Думаю, что НАША (ВАША!)
газета ничем не хуже (по-моему даже
лучше многих) и пора восполнить этот
пробел.
Сегодня здесь будет 4 процедуры,
которые довольно часто используются при
программировании:
1) быстрая процедура точки
2) обмен двух областей памяти
3) быстрое деление
4) быстрое умножение
1) Над этой процедурой я долго ломал
голову и изобрел (как оказалось позднее)
велосипед. Но зато потом я придумал
процедуру еще быстрее (69 тактов), но ее
я вам не дам, если кому надо, тот сам
придумает. :-)
Этот вариант берет 73 такта, для его
работы нужно 1024 байта непрерывной
памяти. Подпрограмма создания таблиц об-
зывается CRT. Координаты точки задаются
в DE (XY). Таблицы падают вниз, то есть
если PTY=#FE00, то еще 3 сектора ниже
будут использованы. В самой процедуре
точки (ZIP) вторая команда
LD H,'PTY
есть ничто иное как операция выделения
старшего байта (ALASM). Подобная команда
имеется в STORM, и насколько мне
известно ZXASM3. Если Ваш ассемблер не
поддерживает подобные вещи, задайте
старший байт напрямую, хотя это и
неудобно.
;ZIP PLOT 1.4
;Author: Viper of TechnoLab
;73 Tacts, 4 Tables take 4 sectors
;PTY - Down HiB, LEN=192
;PTX - Down LoB, LEN=192
;ADX - Div8 Lin, LEN=256
;PTB - BitSet N, LEN=256
PTY EQU #FF00
;PTX EQU #FE00
;ADX EQU #FD00 > для справки
;PTB EQU #FC00 /
ORG 40000
ENT
CALL CRT
LD DE,#0909 ; координаты точки
CALL ZIP
RET
ZIP LD L,E
LD H,'PTY
LD B,(HL)
DEC H
LD A,(HL)
DEC H
LD L,D
ADD A,(HL)
LD C,A
DEC H
LD A,(BC)
XOR (HL)
LD (BC),A
RET
CRT LD HL,PTY ; создание таблиц
LD DE,#4000 ; основной экран
LD BC,#C020
CR1 LD (HL),D
DEC H
LD (HL),E
INC L
INC H
INC D
LD A,D
AND 7
JR NZ,$+12
LD A,E
SUB #E0
LD E,A
JR NC,$+6
LD A,D
SUB 8
LD D,A
DJNZ CR1
LD L,H ;только для данных адресов
DEC H ;в общем случае LD L,#FF
DEC H
CR3 DEC C
LD B,8
CR2 LD (HL),C
DEC L
DJNZ CR2
INC C
DEC C
JR NZ,CR3
DEC H
INC A
CR4 LD (HL),A
RLCA
DEC L
DJNZ CR4
RET
Другие статьи номера:
Похожие статьи:
В этот день... 16 ноября