mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-10 22:54:59 +00:00
184 lines
3.5 KiB
Plaintext
184 lines
3.5 KiB
Plaintext
|
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
|
|||
|
*--------------------------------------
|
|||
|
SETPIXEL >STYA ZPBase
|
|||
|
ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0
|
|||
|
.1 lda (ZPBase),y
|
|||
|
sta CB.Cache,y
|
|||
|
dey
|
|||
|
bpl .1
|
|||
|
|
|||
|
sta SET80STORE
|
|||
|
|
|||
|
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)
|
|||
|
sta ZPBase
|
|||
|
lda BASEH,y
|
|||
|
sta ZPBase+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
|
|||
|
beq .5
|
|||
|
|
|||
|
lda (ZPBase) XOR
|
|||
|
eor Mono.Masks,y y = mod 7
|
|||
|
sta (ZPBase)
|
|||
|
|
|||
|
sta CLR80STORE
|
|||
|
rts
|
|||
|
|
|||
|
.5 lda (ZPBase)
|
|||
|
ldx CB.Cache+S.CB.COLOR get color
|
|||
|
bne .6
|
|||
|
|
|||
|
and Mono.NMasks,y includes And $7F for mono
|
|||
|
sta (ZPBase)
|
|||
|
sta CLR80STORE
|
|||
|
rts
|
|||
|
|
|||
|
.6 and #$7F switch back this byte to mono
|
|||
|
ora Mono.Masks,y
|
|||
|
sta (ZPBase)
|
|||
|
sta CLR80STORE
|
|||
|
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
|
|||
|
adc BASEL,x setup line Base Ptr (cc by asl)
|
|||
|
sta ZPBase ZPBase now point to first of...
|
|||
|
lda BASEH,x
|
|||
|
sta ZPBase+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
|
|||
|
|
|||
|
lda (ZPBase)
|
|||
|
and Color.NMasks,x reset existing pixel,
|
|||
|
ora GBYTE
|
|||
|
sta (ZPBase)
|
|||
|
|
|||
|
.10 inx
|
|||
|
iny
|
|||
|
|
|||
|
lda Color.Masks,x
|
|||
|
beq .11
|
|||
|
and Color.Pixels,y apply color
|
|||
|
sta GBYTE
|
|||
|
|
|||
|
sta CLRPAGE2
|
|||
|
|
|||
|
lda (ZPBase)
|
|||
|
and Color.NMasks,x reset existing pixel,
|
|||
|
ora GBYTE
|
|||
|
sta (ZPBase)
|
|||
|
|
|||
|
.11 inc ZPBase
|
|||
|
inx
|
|||
|
iny
|
|||
|
|
|||
|
lda Color.Masks,x
|
|||
|
beq .12
|
|||
|
and Color.Pixels,y apply color
|
|||
|
sta GBYTE
|
|||
|
|
|||
|
sta SETPAGE2
|
|||
|
|
|||
|
lda (ZPBase)
|
|||
|
and Color.NMasks,x reset existing pixel,
|
|||
|
ora GBYTE
|
|||
|
sta (ZPBase)
|
|||
|
|
|||
|
.12 inx
|
|||
|
iny
|
|||
|
|
|||
|
lda Color.Masks,x
|
|||
|
beq .13
|
|||
|
and Color.Pixels,y apply color
|
|||
|
sta GBYTE
|
|||
|
|
|||
|
sta CLRPAGE2
|
|||
|
|
|||
|
lda (ZPBase)
|
|||
|
and Color.NMasks,x reset existing pixel,
|
|||
|
ora GBYTE
|
|||
|
sta (ZPBase)
|
|||
|
|
|||
|
.13 sta CLR80STORE
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
* GETPIXEL
|
|||
|
*--------------------------------------
|
|||
|
GETPIXEL rts
|
|||
|
*--------------------------------------
|
|||
|
MAN
|
|||
|
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.PIX
|
|||
|
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
|||
|
ASM
|