A2osX/DRV/DHGR.DRV.S.PIX.txt

173 lines
3.3 KiB
Plaintext
Raw Normal View History

PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* SETPIXEL
* In : YA = Ptr to CtrlBlk :
* 1 : OP (XOR only)
* 2 : Mode
* 3 : Color
* 4 : SrcX1
* 6 : SrcY1
*--------------------------------------
2017-11-14 16:57:34 +00:00
SETPIXEL lda CB.Cache+S.CB.MODE
bit #S.CB.MODE.C16
bne SETPIXEL.C16
SETPIXEL.MONO ldx CB.Cache+S.CB.X1+1 Get X Hi byte....
lda DIV7.lo,x
sta .1+1
lda DIV7.hi,x
sta .1+2
lda MOD7.lo,x
sta .2+1
lda MOD7.hi,x
sta .2+2
lda DIV7.BASE,x
ldx CB.Cache+S.CB.X1
clc
.1 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
pha save X DIV 7
lsr
ldy CB.Cache+S.CB.Y1
clc
adc BASEL,y setup line Base Ptr (A=Col)
2017-11-15 07:27:12 +00:00
sta ZPBasePtr
lda BASEH,y
2017-11-15 07:27:12 +00:00
sta ZPBasePtr+1
ply
lda COL.BANK,y
tay
sta $c000,y
.2 ldy $ffff,x MOD7 : x = X.LO, y = X MOD 7
lda CB.Cache+S.CB.OP
2017-11-17 07:09:39 +00:00
bne .5
2017-11-15 07:27:12 +00:00
lda (ZPBasePtr) XOR
eor Mono.Masks,y y = mod 7
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
rts
2017-11-15 07:27:12 +00:00
.5 lda (ZPBasePtr)
ldx CB.Cache+S.CB.COLOR get color
bne .6
and Mono.NMasks,y includes And $7F for mono
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
rts
.6 and #$7F switch back this byte to mono
ora Mono.Masks,y
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
rts
SETPIXEL.C16 lda CB.Cache+S.CB.X1
lsr CB.Cache+S.CB.X1+1 divide by 4
ror
lsr CB.Cache+S.CB.X1+1
ror
tay Y=X/4 (range 0->139)
lda DIV7.0,y A=X/4/7 (range 0->19)
asl times 2 (range 0->38)
ldx CB.Cache+S.CB.Y1
2017-11-17 07:09:39 +00:00
* clc
adc BASEL,x setup line Base Ptr (cc by asl)
2017-11-17 07:09:39 +00:00
sta ZPBasePtr ZPBasePtr now point to first of...
lda BASEH,x
2017-11-15 07:27:12 +00:00
sta ZPBasePtr+1 ...the 4 columns
lda MOD7.0,y get MOD
asl times 4 to compute index in MASK tables
asl
tax set in X for Masks,NMasks
lda CB.Cache+S.CB.COLOR
asl times 4 to compute index in PIXELS table
asl
tay
lda Color.Masks,x bits in 1st byte to light?
beq .10
and Color.Pixels,y apply color
sta GBYTE
sta SETPAGE2
2017-11-15 07:27:12 +00:00
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
.10 inx
iny
lda Color.Masks,x
beq .11
and Color.Pixels,y apply color
sta GBYTE
sta CLRPAGE2
2017-11-15 07:27:12 +00:00
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
2017-11-15 07:27:12 +00:00
.11 inc ZPBasePtr
inx
iny
lda Color.Masks,x
beq .12
and Color.Pixels,y apply color
sta GBYTE
sta SETPAGE2
2017-11-15 07:27:12 +00:00
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
.12 inx
iny
lda Color.Masks,x
beq .13
and Color.Pixels,y apply color
sta GBYTE
sta CLRPAGE2
2017-11-15 07:27:12 +00:00
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora GBYTE
2017-11-15 07:27:12 +00:00
sta (ZPBasePtr)
2017-11-14 16:57:34 +00:00
.13 rts
*--------------------------------------
* GETPIXEL
*--------------------------------------
GETPIXEL rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
ASM