A2osX/DRV/DHGR.DRV.S.LINE.txt

165 lines
2.8 KiB
Plaintext
Raw Normal View History

2017-12-22 21:24:30 +00:00
NEW
2019-07-25 15:10:59 +00:00
AUTO 3,1
.LIST OFF
*--------------------------------------
* HLINE X1,X2 at Y1 (XOR,SET,ORA)
*--------------------------------------
2017-12-22 21:24:30 +00:00
HLINE lda CB.Cache+S.CB.M
2017-12-22 21:24:30 +00:00
cmp #S.CB.M.MONO
2017-11-14 16:57:34 +00:00
bne HLINE.C16
HLINE.MONO >LDYA CB.Cache+S.CB.X1
jsr LBUF.SetBounds1YA
>LDYA CB.Cache+S.CB.X2
jsr LBUF.SetBounds2YA
lda CB.Cache+S.CB.COLOR
2017-11-14 16:57:34 +00:00
beq .1
lda #%01111111
2017-11-15 07:27:12 +00:00
.1 ldx LBUF.C1
.2 sta LBUF.DATA,x
2017-11-15 07:27:12 +00:00
cpx LBUF.C2
inx
bcc .2
2017-11-14 16:57:34 +00:00
ldy CB.Cache+S.CB.Y1
jmp LBUF.DrawAtY
HLINE.C16 lda CB.Cache+S.CB.X1
2017-11-14 16:57:34 +00:00
and #%11111100
tay
lda CB.Cache+S.CB.X1+1
2017-11-14 16:57:34 +00:00
jsr LBUF.SetBounds1YA
2017-11-14 16:57:34 +00:00
lda CB.Cache+S.CB.X2
ora #%00000011
2017-11-14 16:57:34 +00:00
tay
lda CB.Cache+S.CB.X2+1
2017-11-14 16:57:34 +00:00
jsr LBUF.SetBounds2YA
2017-11-15 07:27:12 +00:00
lda CB.Cache+S.CB.COLOR
asl
asl
clc
adc L.Color.Pixels
2019-08-02 14:36:49 +00:00
sta ZPTmpWord
2017-11-15 07:27:12 +00:00
lda L.Color.Pixels+1
adc #0
2019-08-02 14:36:49 +00:00
sta ZPTmpWord+1
2017-11-15 07:27:12 +00:00
ldx LBUF.C1
2017-11-15 07:27:12 +00:00
.1 txa
and #3 Compute index in Palette (Mod 4)
2017-11-14 16:57:34 +00:00
2017-11-15 07:27:12 +00:00
tay
2019-08-02 14:36:49 +00:00
.2 lda (ZPTmpWord),y
2017-11-15 07:27:12 +00:00
2017-11-16 07:12:03 +00:00
sta LBUF.DATA,x
2017-11-15 07:27:12 +00:00
cpx LBUF.C2
2017-11-15 16:29:23 +00:00
inx
bcc .1
2017-11-15 07:27:12 +00:00
ldy CB.Cache+S.CB.Y1
jmp LBUF.DrawAtY
*--------------------------------------
* VLINE Y1,Y2 at X1 (XOR,SET,ORA)
*--------------------------------------
2017-12-22 21:24:30 +00:00
VLINE lda CB.Cache+S.CB.M
cmp #S.CB.M.MONO
bne VLINE.C16
VLINE.MONO >LDYA CB.Cache+S.CB.X1
2019-07-30 08:57:25 +00:00
jsr DIVMOD7YA X = MOD 7
tay
lda COL.OFS,y
2019-07-30 08:57:25 +00:00
sta ZPTmpByte Save COL (DIV)
lda COL.BANK,y
tay
sta $C000,y Select proper BANK
2019-07-30 08:57:25 +00:00
ldy CB.Cache+S.CB.Y1
clc
lda CB.Cache+S.CB.OP
* cmp #S.CB.OP.XOR
beq VLINE.MONO.XOR
lda CB.Cache+S.CB.COLOR
bne VLINE.MONO.WHITE
VLINE.MONO.BLACK
2019-07-30 08:57:25 +00:00
.1 lda BASEL,y
adc ZPTmpByte
2017-11-15 07:27:12 +00:00
sta ZPBasePtr
lda BASEH,y
2017-11-15 07:27:12 +00:00
sta ZPBasePtr+1
lda (ZPBasePtr)
and Mono.NMasks,x
sta (ZPBasePtr)
cpy CB.Cache+S.CB.Y2
iny
bcc .1
rts
VLINE.MONO.WHITE
2019-07-30 08:57:25 +00:00
lda #$1D ORA abs,x
.HS 2C BIT ABS
VLINE.MONO.XOR
2019-07-30 08:57:25 +00:00
lda #$5D EOR abs,x
sta .2
.1 lda BASEL,y
adc ZPTmpByte
2017-11-15 07:27:12 +00:00
sta ZPBasePtr
lda BASEH,y
2017-11-15 07:27:12 +00:00
sta ZPBasePtr+1
lda (ZPBasePtr)
2019-07-30 08:57:25 +00:00
.2 eor Mono.Masks,x SELF MODIFIED
sta (ZPBasePtr)
cpy CB.Cache+S.CB.Y2
iny
bcc .1
rts
VLINE.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)
2019-07-30 08:57:25 +00:00
ldx CB.Cache+S.CB.Y1
2019-07-30 08:57:25 +00:00
.1 phy
phx
2019-07-30 08:57:25 +00:00
jsr SETPIXEL.C16.YX
2019-07-30 08:57:25 +00:00
plx
ply
2019-07-30 08:57:25 +00:00
cpy CB.Cache+S.CB.Y2
iny
2019-07-30 08:57:25 +00:00
bcc .1
2019-07-30 08:57:25 +00:00
rts
*--------------------------------------
MAN
2018-12-19 07:12:58 +00:00
SAVE USR/SRC/DRV/DHGR.DRV.S.LINE
LOAD USR/SRC/DRV/DHGR.DRV.S
ASM