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
Screen handling
#10
Slenkar: Perhaps these are useful for setting colours?

They both paint a rectangle in the specified colours - one needs ink/paper/bright/flash separately, the second takes the attribute byte directly.

Code:
SUB WindowPaint(x as uByte,y as uByte, width as uByte, height as uByte, inkCol as ubyte, paperCol as uByte, isBright as uByte, isFlash as uByte) paint(x,y,width,height,(isFlash<<7+isBright<<6+paperCol<<3+inkCol)) END SUB

Code:
SUB paint (x as uByte,y as uByte, width as uByte, height as uByte, attribute as ubyte) asm ld a,(IX+7) ;ypos rrca rrca rrca ; Multiply by 32 ld l,a ; Pass to L and 3 ; Mask with 00000011 add a,88 ; 88 * 256 = 22528 - start of attributes. Change this if you are working with a buffer or somesuch. ld h,a ; Put it in the High Byte ld a,l ; We get y value *32 and 224 ; Mask with 11100000 ld l,a ; Put it in L ld a,(IX+5) ; xpos add a,l ; Add it to the Low byte ld l,a ; Put it back in L, and we're done. HL=Address. push HL ; save address LD A, (IX+13) ; attribute LD DE,32 LD c,(IX+11) ; height BLPaintHeightLoop: LD b,(IX+9) ; width BLPaintWidthLoop: LD (HL),a ; paint a character INC L ; Move to the right (Note that we only would have to inc H if we are crossing from the right edge to the left, and we shouldn't be needing to do that) DJNZ BLPaintWidthLoop BLPaintWidthExitLoop: POP HL ; recover our left edge DEC C JR Z, BLPaintHeightExitLoop ADD HL,DE ; move 32 down PUSH HL ; save it again JP BLPaintHeightLoop BLPaintHeightExitLoop: end asm END SUB
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)