SCROLLING SCREEN WITH ATTRIBUTES
(C) PunisHer/VooDoo People
-------------------------------------------------------
I want to present two scrollers -
down and up with attributes. Nothing really
I won’t say anything, I’ll just say one thing -
these subroutines create constructions
pa:
LD SP,From
POP HL
LD (Where),HL
POP HL
LD (Where),HL
POP HL
LD (Where),HL
..........
POP HL
LD (Where),HL
POP HL
LD (Where),HL
LD SP,From
POP HL
LD (Where),HL
Here are the subroutine listings:
;SCROLLER DOWN WITH ATTRIBUTES
;(C) PunisHer/VooDoo People
DOWN EQU #8000 ;at this address there will be
;scroller
LD HL,#5740;from (screen)
LD DE,#5760;where
LD IX,DOWN ;create here
LD (IX),#ED;command LD (0),SP
LD (IX+1),#73
LD IX,DOWN+4
EXX
LD HL,#5A40;from (attr)
LD DE,#5A60;where
LD С,16 ;number of signs. Y-1
M3 EXX
LD A,8;pixels in familiarity
LD (IX),#31;LD SP,from
LD (IX+1),L
LD (IX+2),H
INC IX
INC IX
INC IX
M2 PUSH DE
LD В,16 ;line length (X/2)
M1 LD (IX),#E1;POP HL
LD (IX+1),#22;LD (where),HL
LD (IX+2),E
LD (IX+3),D
PUSH Sun
LD Sun,4ADD IX,VS
ROR VS
INC OF
INC OF
DJNZ M1
ROR OF
EX AF,AF`
CALL DEC_DE
CALL DEC_HL
LD (IX),#31;LD SP,where
LD (IX+1),L
LD (IX+2),H
LD VS,3
ADD IX,VS
EX AF,AF`
DEC A
JR NZ,M2
EXX
LD B,16
LD (IX-2),L
LD (IX-1),H
MMCH LD (IX),#E1;ROR HL
LD (IX+1),#22;LD (where),HL
LD (IX+2),E
LD (IX+3),D
PUSH VS
LD VS,4
ADD IX,VS
ROR VS
INC DE
DEC HL
DEC HLINC DE
DJNZ MMC
PUSH Sun
EX DE,HL
AND A
LD Sun,#40
SBC HL,VS
EX DE,HL
ROR Sun
DEC C
JR NZ,M3
LD (IX),#31
INC IX
LD (IX+2),#С9;RET
PUSH IX
POP HL
LD IX,DOWN
LD (IX+2),L
LD (IX+3),H
RET
;SCROLLER UP WITH ATTRIBUTES
;(C) PunisHer/VooDoo People
UP EQU #C000
LD HL,#4080;WHERE
LD DE,#4060;WHERE
LD IX,UP ;HERE WE CREATE ROLLER
LD (IX),#ED;LD (0) SP
LD (IX+1),#73
LD IX,UP+4EXX
LD HL,#5880
LD DE,#5860
LD C,16 ;QUANTITY OF SIGNS. Y-1
MMZ EXX
LD A,8 ;LINES IN A SIGNAL PLACE
LD (IX),#31;LD SP,FROM
LD (IX+1),L
LD (IX+2),H
INC IX
INC IX
INC IX
MM2 PUSH DE
LD B,16 ;LENGTH X/2
MM1 LD (IX),#E1;POP HL
LD (IX+1),#22;LD (WHERE),HL
LD (IX+2),E
LD (IX+3),D
PUSH Sun
LD Sun,4
ADD IX,Sun
ROR Sun
INC DE
INC DE
DJNZ MM1
POP DE
EX AF,AF`
CALL NEX_DE
CALL NEX_HL
LD (IX),#31;LD SP,OKUDA
LD (IX+1),L
LD (IX+2),H
LD Sun,3 ADD IX,ВС
ЕХ AF,AF`
DEC A
JR NZ,ММ2
EXX
LD (IX-3),#31
LD (IX-2),L
LD (IX-1),Н
LD В,16
LD (IX-3),#31
LD (IX-2),L
LD (IX-1),Н
МММЧ LD (IX),#Е1;РОР HL
LD (IX+1),#22;LD (КУДА),HL
LD (IX+2),Е
LD (IX+3),D
PUSH ВС
LD ВС,4
ADD IX,ВС
РОР ВС
INC DE
INC HL
INC HL
INC DE
DJNZ МММЧ
DEC С
JR NZ,ММЗ
LD (IX),#31
INC IX
LD (IX+2),#С9;RET
PUSH IX
РОР HLLD IX,UP
LD (IX+2),L
LD (IX+3),H
RET
;Next are the standard subroutines
;increase and decrease screen address:
NEX_DE INC D
LD A,D
AND 7
RET NZ
LD A,E
ADD A,#20
LD E,A
RET C
LD A,D
SUB 8
LD D,A
RET
NEX_HL EX DE,HL
CALL NEX_DE
EX DE,HL
RET
DEC_DE DEC D
LD A,D
CPL
AND 7
RET NZ
LD A,E
SUB #20LD E,A
RET C
LD A,D
ADD A,8
LD D,A
RET
DEC_HL EX DE,HL
CALL DEC_DE
EX DE,HL
RET
What is all this for? Absurdly filled
army in assembler, many kilometers of foxes
tings, where it will be the same thing, so we
We offer you a kind of installer,
which will generate the required algorithm in RAM.
This scroller algorithm is one-
one of the fastest and recommended for use -
knowledge in various text readers, games and
other programs where memory is not critical
and you can afford a big one, but it’s economical
processor-friendly transfer algorithm
memory.
Share your thoughts about the article