![]() |
|
CLS/Fade out ASM Sub-routine - Printable Version +- Boriel Basic Forum (https://forum.boriel.com) +-- Forum: Compilers and Computer Languages (https://forum.boriel.com/forumdisplay.php?fid=12) +--- Forum: ZX Basic Compiler (https://forum.boriel.com/forumdisplay.php?fid=11) +---- Forum: How-To & Tutorials (https://forum.boriel.com/forumdisplay.php?fid=13) +---- Thread: CLS/Fade out ASM Sub-routine (/showthread.php?tid=2641) |
CLS/Fade out ASM Sub-routine - tubz74 - 2025-10-05 This is a small clear screen, that sort of fades out the screen pixel by pixel to the background colour. I took it from one of the Melbourne house books, can't remember which one though. No idea if it breaks anything else, but I've not had any issues. Code: SUB CLSFadeOut()
' Fade out Screen Clearing
ASM
LD DE,08feh
NXTFADE:
LD A,E
RLCA
RLCA
RLCA
LD E,A
LD HL,4000H
LD BC,0018H
NXT:
LD A, (HL)
AND E
LD (HL),A
INC HL
DJNZ NXT
DEC C
JR NZ,NXT
DEC D
JR NZ,NXTFADE
LD A,(5C8DH)
LD (HL),A
LD D,H
LD E,L
INC DE
LD BC,02C0H
LDIR
LD A,(5C48H)
LD (HL),A
LD C,3FH
LDIR
END ASM
END SUBRE: CLS/Fade out ASM Sub-routine - boriel - 2025-10-05 Good one! No, it won't break anything (only IX should be preserved (push/pop) before the function returns). Also, it's recommended to make your labels private. To do so: Wrap your ASM routine between Code: PROC
...
ENDPDeclare your labels locals after PROC, with: LOCAL NXTFADE, NXT :-) If your code is BSD / MIT / Apache I can put it in the standard library for other people to use it. RE: CLS/Fade out ASM Sub-routine - tubz74 - 2025-10-05 Happy for it to be used however by whoever - which ever licence doesn't require anything from me or from the user. |