The following warnings occurred:
Warning [2] Undefined array key 0 - Line: 1677 - File: showthread.php PHP 8.2.31 (Linux)
File Line Function
/inc/class_error.php 157 errorHandler->error
/showthread.php 1677 errorHandler->error_callback
/showthread.php 916 buildtree




Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Clearing Screen
#1
I adapted some Screen clearing routines posted on WOS here: <!-- m --><a class="postlink" href="http://www.worldofspectrum.org/forums/showthread.php?t=38426">http://www.worldofspectrum.org/forums/s ... hp?t=38426</a><!-- m --> for ZXBC. Maybe useful for other coders:
Code:
sub ShiftClearScr() asm ld b,8 ;'8 bits to rotate out per byte CLSNloop: call clearscreennice djnz CLSNloop jr CLSNEnd clearscreennice: ld hl,16383 ;'just before display file CLSNcloop: inc hl ld a,h cp 88 ;'into address 22528 yet? ret z ;'yep return sla (hl) ;'nope, shift the byte jr CLSNcloop ;'keep going CLSNEnd: end asm end sub
Code:
sub SpiralTrailClearScr() asm ei ld hl,patterns01 loop1: halt ld a,(hl) inc hl or a jp z,end02 ld c,a and 127 ld d,a ld b,3 ld e,0 loop2: ld a,(de) bit 7,c jr z,tmp1 or (hl) jr tmp2 tmp1: and (hl) tmp2: ld (de),a inc e jr nz,loop2 ld a,d add a,8 ld d,a djnz loop2 inc hl jr loop1 jp end02 patterns01: db 64+128,128,64+128,64,64+128,32,64+128,16 db 64+128,8,64,127,64+128,4,64,191 db 64+128,2,64,223,64+128,1,64,239 db 65+128,1,64,247,66+128,1,64,251 db 67+128,1,64,253,68+128,1,64,254 db 69+128,1,65,254,70+128,1,66,254 db 71+128,1,67,254,71+128,2,68,254 db 71+128,4,69,254,71+128,8,70,254 db 71+128,16,71,254,71+128,32,71,253 db 71+128,64,71,251,71+128,128,71,247 db 70+128,128,71,239,69+128,128,71,223 db 68+128,128,71,191,67+128,128,71,127 db 66+128,128,70,127,65+128,128,69,127 db 65+128,64,68,127,65+128,32,67,127 db 65+128,16,66,127,65+128,8,65,127 db 65+128,4,65,191,65+128,2,65,223 db 66+128,2,65,239,67+128,2,65,247 db 68+128,2,65,251,69+128,2,65,253 db 70+128,2,66,253,70+128,4,67,253 db 70+128,8,68,253,70+128,16,69,253 db 70+128,32,70,253,70+128,64,70,251 db 69+128,64,70,247,68+128,64,70,239 db 67+128,64,70,223,66+128,64,70,191 db 66+128,32,69,191,66+128,16,68,191 db 66+128,8,67,191,66+128,4,66,191 db 67+128,4,66,223,68+128,4,66,239 db 69+128,4,66,247,69+128,8,66,251 db 69+128,16,67,251,69+128,32,68,251 db 68+128,32,69,251,67+128,32,69,247 db 67+128,16,69,239,67+128,8,69,223 db 68+128,8,68,223,68+128,16,67,223 db 67,239,67,247,68,247,68,239 db 0 end02: end asm end sub
Code:
sub SpiralClearScr() asm ei ld hl,patterns loop01: halt ld a,(hl) inc hl or a jp z,clearend2 ld d,a ld c,(hl) inc hl ld b,3 ld e,0 loop02: ld a,(de) and c ld (de),a inc e jr nz,loop02 ld a,d add a,8 ld d,a djnz loop02 jr loop01 jp clearend2 patterns: db 64,127, 64,191, 64,223, 64,239 db 64,247, 64,251, 64,253, 64,254 db 65,254, 66,254, 67,254, 68,254 db 69,254, 70,254, 71,254, 71,253 db 71,251, 71,247, 71,239, 71,223 db 71,191, 71,127, 70,127, 69,127 db 68,127, 67,127, 66,127, 65,127 db 65,191, 65,223, 65,239, 65,247 db 65,251, 65,253, 66,253, 67,253 db 68,253, 69,253, 70,253, 70,251 db 70,247, 70,239, 70,223, 70,191 db 69,191, 68,191, 67,191, 66,191 db 66,223, 66,239, 66,247, 66,251 db 67,251, 68,251, 69,251, 69,247 db 69,239, 69,223, 68,223, 67,223 db 67,239, 67,247, 68,247, 68,239 db 0 clearend2: end asm end sub
Code:
sub RandomClearScr() asm ld hl,0 ;'point hl somewhere in ROM ld b,6 ;'using 48k ROM you need 5 or more repeats to empty screen CLSloop1: call CLSStart1 djnz CLSloop1 jr CLSend1 CLSStart1: ld de,16383 ;'start of display file-1 CLScloop: inc de ;'move into and through display file inc hl ;'and ROM ld a,d ;'are we out of display file and into attributes yet? cp 88 ret z ;'yep return ld a,(de) ;'nope, AND the data together and give the fadeaway effect and (hl) ld (de),a jr CLScloop ;'keep going CLSend1: end asm end sub
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)