2017-07-05 14:45:19 +00:00
|
|
|
|
PR#3
|
|
|
|
|
PREFIX /A2OSX.BUILD
|
|
|
|
|
LOMEM $A00
|
|
|
|
|
INC 1
|
|
|
|
|
AUTO 6
|
|
|
|
|
.LIST OFF
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* HLINE X1,X2 at Y1
|
|
|
|
|
*--------------------------------------
|
2017-11-14 16:57:34 +00:00
|
|
|
|
HLINE lda CB.Cache+S.CB.MODE
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-14 16:57:34 +00:00
|
|
|
|
cmp #S.CB.MODE.MONO
|
|
|
|
|
bne HLINE.C16
|
|
|
|
|
|
|
|
|
|
HLINE.MONO >LDYA CB.Cache+S.CB.X1
|
|
|
|
|
jsr LBUF.SetBounds1YA
|
|
|
|
|
|
|
|
|
|
>LDYA CB.Cache+S.CB.X2
|
|
|
|
|
jsr LBUF.SetBounds2YA
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-14 16:57:34 +00:00
|
|
|
|
lda CB.Cache+S.CB.MODE
|
2017-07-05 14:45:19 +00:00
|
|
|
|
bit #S.CB.MODE.C16
|
|
|
|
|
bne HLINE.C16
|
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
ldy CB.Cache+S.CB.COLOR
|
2017-11-14 16:57:34 +00:00
|
|
|
|
beq .1
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
ldy #%01111111
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
.1 ldx LBUF.C1
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
.2 tya
|
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-16 16:46:18 +00:00
|
|
|
|
inx
|
|
|
|
|
bcc .2
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-14 16:57:34 +00:00
|
|
|
|
ldy CB.Cache+S.CB.Y1
|
|
|
|
|
jmp LBUF.DrawAtY
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-16 16:46:18 +00:00
|
|
|
|
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-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-14 16:57:34 +00:00
|
|
|
|
jsr LBUF.SetBounds1YA
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-14 16:57:34 +00:00
|
|
|
|
lda CB.Cache+S.CB.X2
|
2017-11-16 16:46:18 +00:00
|
|
|
|
ora #%00000011
|
2017-11-14 16:57:34 +00:00
|
|
|
|
tay
|
|
|
|
|
lda CB.Cache+S.CB.X2+1
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
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
|
|
|
|
|
sta ZPPalettePtr
|
|
|
|
|
lda L.Color.Pixels+1
|
|
|
|
|
adc #0
|
|
|
|
|
sta ZPPalettePtr+1
|
|
|
|
|
|
2017-11-16 16:46:18 +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
|
|
|
|
|
lda (ZPPalettePtr),y
|
|
|
|
|
|
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
|
|
|
|
|
|
2017-07-05 14:45:19 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
* VLINE Y1,Y2 at X1
|
|
|
|
|
*--------------------------------------
|
2017-11-14 16:57:34 +00:00
|
|
|
|
VLINE lda CB.Cache+S.CB.OP
|
2017-07-05 14:45:19 +00:00
|
|
|
|
beq VLINE.OP0
|
|
|
|
|
|
|
|
|
|
VLINE.XOR jsr VLINE.DIVMOD7
|
|
|
|
|
|
|
|
|
|
ldy XMOD7
|
|
|
|
|
lda Mono.Masks,y
|
|
|
|
|
sta .2+1
|
|
|
|
|
|
|
|
|
|
ldy XCOL7
|
|
|
|
|
|
|
|
|
|
ldx CB.Cache+S.CB.Y1
|
|
|
|
|
|
|
|
|
|
.1 lda BASEL,x
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta ZPBasePtr
|
2017-07-05 14:45:19 +00:00
|
|
|
|
lda BASEH,x
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta ZPBasePtr+1
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
lda (ZPBasePtr),y XOR
|
2017-07-05 14:45:19 +00:00
|
|
|
|
.2 eor #$ff
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta (ZPBasePtr),y
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
|
|
|
|
inx
|
|
|
|
|
cpx CB.Cache+S.CB.Y2
|
|
|
|
|
bcc .1
|
|
|
|
|
beq .1
|
|
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
VLINE.OP0 lda CB.Cache+S.CB.MODE
|
|
|
|
|
dec
|
|
|
|
|
bne VLINE.C16
|
|
|
|
|
|
|
|
|
|
VLINE.MONO jsr VLINE.DIVMOD7
|
|
|
|
|
|
|
|
|
|
ldy XMOD7
|
|
|
|
|
lda Mono.NMasks,y includes And $7F for mono
|
|
|
|
|
sta .3+1
|
|
|
|
|
|
|
|
|
|
lda CB.Cache+S.CB.COLOR get color
|
|
|
|
|
beq .1
|
|
|
|
|
lda Mono.Masks,y
|
|
|
|
|
.1 sta .4+1
|
|
|
|
|
|
|
|
|
|
ldy XCOL7
|
|
|
|
|
|
|
|
|
|
ldx CB.Cache+S.CB.Y1
|
|
|
|
|
|
|
|
|
|
.2 lda BASEL,x
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta ZPBasePtr
|
2017-07-05 14:45:19 +00:00
|
|
|
|
lda BASEH,x
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta ZPBasePtr+1
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
lda (ZPBasePtr),y
|
2017-07-05 14:45:19 +00:00
|
|
|
|
.3 and #$ff
|
|
|
|
|
.4 ora #$ff
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta (ZPBasePtr),y
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
|
|
|
|
inx
|
|
|
|
|
cpx CB.Cache+S.CB.Y2
|
|
|
|
|
bcc .2
|
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
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)
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta ZPBasePtr ZPBasePtr now point to first of...
|
2017-07-05 14:45:19 +00:00
|
|
|
|
lda BASEH,x
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta ZPBasePtr+1 ...the 4 columns
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
|
|
|
|
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)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta (ZPBasePtr)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
|
|
|
|
.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)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta (ZPBasePtr)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-15 07:27:12 +00:00
|
|
|
|
.11 inc ZPBasePtr
|
2017-07-05 14:45:19 +00:00
|
|
|
|
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)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta (ZPBasePtr)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
|
|
|
|
.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)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
and Color.NMasks,x reset existing pixel,
|
|
|
|
|
ora GBYTE
|
2017-11-15 07:27:12 +00:00
|
|
|
|
sta (ZPBasePtr)
|
2017-07-05 14:45:19 +00:00
|
|
|
|
|
2017-11-14 16:57:34 +00:00
|
|
|
|
.13 rts
|
2017-07-05 14:45:19 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
VLINE.DIVMOD7 ldx CB.Cache+S.CB.X1+1 Get X HI byte....
|
|
|
|
|
|
|
|
|
|
lda DIV7.lo,x
|
|
|
|
|
sta .2+1
|
|
|
|
|
lda DIV7.hi,x
|
|
|
|
|
sta .2+2
|
|
|
|
|
|
|
|
|
|
lda MOD7.lo,x
|
|
|
|
|
sta .3+1
|
|
|
|
|
lda MOD7.hi,x
|
|
|
|
|
sta .3+2
|
|
|
|
|
|
|
|
|
|
lda DIV7.BASE,x
|
|
|
|
|
ldx CB.Cache+S.CB.X1 Get X LO byte....
|
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
|
|
|
|
|
.2 adc $ffff,x DIV7 : x = X.LO, a = X DIV 7
|
|
|
|
|
sta XDIV7 save X DIV 7
|
|
|
|
|
|
|
|
|
|
tay
|
|
|
|
|
lsr
|
|
|
|
|
sta XCOL7
|
|
|
|
|
ldx COL.BANK,y
|
|
|
|
|
sta $C000,x
|
|
|
|
|
|
|
|
|
|
.3 lda $ffff,x MOD7 : x = X.LO, y = X MOD 7
|
|
|
|
|
sta XMOD7
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
2017-11-14 16:57:34 +00:00
|
|
|
|
SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.LINE
|
2017-07-05 14:45:19 +00:00
|
|
|
|
LOAD /A2OSX.SRC/DRV/DHGR.DRV.S
|
|
|
|
|
ASM
|