mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-12 20:29:41 +00:00
Kernel 0.94
This commit is contained in:
parent
b8e761fdbb
commit
d43a064a59
Binary file not shown.
|
@ -146,11 +146,6 @@ COL.BANK .DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2
|
||||||
.DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2
|
.DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2
|
||||||
.DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2
|
.DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
COL.OFS .DA #00,#00,#01,#01,#02,#02,#03,#03,#04,#04,#05,#05,#06,#06,#07,#07,#08,#08,#09,#09
|
|
||||||
.DA #10,#10,#11,#11,#12,#12,#13,#13,#14,#14,#15,#15,#16,#16,#17,#17,#18,#18,#19,#19
|
|
||||||
.DA #20,#20,#21,#21,#22,#22,#23,#23,#24,#24,#25,#25,#26,#26,#27,#27,#28,#28,#29,#29
|
|
||||||
.DA #30,#30,#31,#31,#32,#32,#33,#33,#34,#34,#35,#35,#36,#36,#37,#37,#38,#38,#39,#39
|
|
||||||
*--------------------------------------
|
|
||||||
DIV7.0 .HS 00
|
DIV7.0 .HS 00
|
||||||
DIV7.512 .HS 000000
|
DIV7.512 .HS 000000
|
||||||
DIV7.256 .HS 000000
|
DIV7.256 .HS 000000
|
||||||
|
|
|
@ -154,6 +154,7 @@ BITBLT.1 ldy #S.BM-1
|
||||||
BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
||||||
bit #S.CB.OP.MASK
|
bit #S.CB.OP.MASK
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>LDYA BLT.BMMaskPtr
|
>LDYA BLT.BMMaskPtr
|
||||||
>STYA ZPBMDataPtr
|
>STYA ZPBMDataPtr
|
||||||
|
|
||||||
|
@ -169,8 +170,10 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
||||||
inc BLT.ScrColIdx
|
inc BLT.ScrColIdx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
.2 >LDYA BLT.BMDataPtr
|
.2 >LDYA BLT.BMDataPtr
|
||||||
>STYA ZPBMDataPtr
|
>STYA ZPBMDataPtr
|
||||||
|
|
||||||
lda BLT.BMBitOfs
|
lda BLT.BMBitOfs
|
||||||
sta BLT.BMBitOfsL
|
sta BLT.BMBitOfsL
|
||||||
ldx LBUF.C1
|
ldx LBUF.C1
|
||||||
|
@ -184,14 +187,17 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
||||||
inc BLT.ScrColIdx
|
inc BLT.ScrColIdx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldy CB.Cache+S.CB.DstY
|
ldy CB.Cache+S.CB.DstY
|
||||||
jsr LBUF.DrawAtY
|
jsr LBUF.DrawAtY
|
||||||
inc CB.Cache+S.CB.DstY
|
inc CB.Cache+S.CB.DstY
|
||||||
dec CB.Cache+S.CB.SrcH
|
dec CB.Cache+S.CB.SrcH
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
lda CB.Cache+S.CB.OP
|
||||||
bit #S.CB.OP.MASK
|
bit #S.CB.OP.MASK
|
||||||
beq .4
|
beq .4
|
||||||
|
|
||||||
lda BLT.BMMaskPtr
|
lda BLT.BMMaskPtr
|
||||||
clc
|
clc
|
||||||
adc BM.Cache+S.BM.RowBytes
|
adc BM.Cache+S.BM.RowBytes
|
||||||
|
@ -205,6 +211,7 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
||||||
adc BM.Cache+S.BM.RowBytes
|
adc BM.Cache+S.BM.RowBytes
|
||||||
sta BLT.BMDataPtr
|
sta BLT.BMDataPtr
|
||||||
bcc .5
|
bcc .5
|
||||||
|
|
||||||
inc BLT.BMDataPtr+1
|
inc BLT.BMDataPtr+1
|
||||||
.5 jmp BITBLT.LOOP0
|
.5 jmp BITBLT.LOOP0
|
||||||
|
|
||||||
|
@ -215,6 +222,7 @@ BITBLT.LOOP0 lda CB.Cache+S.CB.OP
|
||||||
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
|
BITBLT.LOOPx lda CB.Cache+S.CB.OP X = BLT.ScrBitOfs
|
||||||
bit #S.CB.OP.MASK
|
bit #S.CB.OP.MASK
|
||||||
beq BITBLT.LOOPx.4
|
beq BITBLT.LOOPx.4
|
||||||
|
|
||||||
>LDYA BLT.BMMaskPtr
|
>LDYA BLT.BMMaskPtr
|
||||||
>STYA ZPBMDataPtr
|
>STYA ZPBMDataPtr
|
||||||
|
|
||||||
|
@ -269,14 +277,17 @@ BITBLT.LOOPx.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites
|
||||||
inc BLT.ScrColIdx
|
inc BLT.ScrColIdx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
bne BITBLT.LOOPx.5
|
bne BITBLT.LOOPx.5
|
||||||
|
|
||||||
ldy CB.Cache+S.CB.DstY
|
ldy CB.Cache+S.CB.DstY
|
||||||
jsr LBUF.DrawAtY
|
jsr LBUF.DrawAtY
|
||||||
inc CB.Cache+S.CB.DstY
|
inc CB.Cache+S.CB.DstY
|
||||||
dec CB.Cache+S.CB.SrcH
|
dec CB.Cache+S.CB.SrcH
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
lda CB.Cache+S.CB.OP
|
||||||
bit #S.CB.OP.MASK
|
bit #S.CB.OP.MASK
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda BLT.BMMaskPtr
|
lda BLT.BMMaskPtr
|
||||||
clc
|
clc
|
||||||
adc BM.Cache+S.BM.RowBytes
|
adc BM.Cache+S.BM.RowBytes
|
||||||
|
|
|
@ -47,7 +47,10 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||||
|
|
||||||
.1 ldy COL.BANK,x
|
.1 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBasePtr),y
|
lda (ZPBasePtr),y
|
||||||
sta (ZPBMSavePtr)
|
sta (ZPBMSavePtr)
|
||||||
inc ZPBMSavePtr
|
inc ZPBMSavePtr
|
||||||
|
@ -60,6 +63,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.OP
|
lda CB.Cache+S.CB.OP
|
||||||
|
|
||||||
.3 and #$F
|
.3 and #$F
|
||||||
tax
|
tax
|
||||||
jmp (J.LBUF.DrawAtY,x)
|
jmp (J.LBUF.DrawAtY,x)
|
||||||
|
@ -68,7 +72,10 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||||
|
|
||||||
.5 ldy COL.BANK,x
|
.5 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBMSavePtr)
|
lda (ZPBMSavePtr)
|
||||||
sta (ZPBasePtr),y
|
sta (ZPBasePtr),y
|
||||||
inc ZPBMSavePtr
|
inc ZPBMSavePtr
|
||||||
|
@ -85,9 +92,13 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||||
LBUF.DrawAtY.SET
|
LBUF.DrawAtY.SET
|
||||||
LBUF.DrawAtY.AND.SET
|
LBUF.DrawAtY.AND.SET
|
||||||
ldx LBUF.C1 x C1->C2
|
ldx LBUF.C1 x C1->C2
|
||||||
|
|
||||||
ldy COL.BANK,x
|
ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBasePtr),y Clear screen at C1
|
lda (ZPBasePtr),y Clear screen at C1
|
||||||
and LBUF.C1.MASK with MASK bits
|
and LBUF.C1.MASK with MASK bits
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
@ -96,6 +107,7 @@ LBUF.DrawAtY.AND.SET
|
||||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||||
ora ZPTmpByte ora with screen bits
|
ora ZPTmpByte ora with screen bits
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
inx
|
inx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
beq .2 C1=C2, go setup C2
|
beq .2 C1=C2, go setup C2
|
||||||
|
@ -104,7 +116,10 @@ LBUF.DrawAtY.AND.SET
|
||||||
|
|
||||||
.1 ldy COL.BANK,x
|
.1 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
sta (ZPBasePtr),y
|
sta (ZPBasePtr),y
|
||||||
|
|
||||||
|
@ -114,16 +129,19 @@ LBUF.DrawAtY.AND.SET
|
||||||
|
|
||||||
.2 ldy COL.BANK,x
|
.2 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C2
|
lda (ZPBasePtr),y Get C2
|
||||||
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
|
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.DrawAtY.XOR
|
LBUF.DrawAtY.XOR
|
||||||
|
@ -142,7 +160,10 @@ LBUF.DrawAtY.XXX
|
||||||
|
|
||||||
ldy COL.BANK,x
|
ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C1
|
lda (ZPBasePtr),y Get C1
|
||||||
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
@ -160,7 +181,10 @@ LBUF.DrawAtY.XXX
|
||||||
|
|
||||||
.1 ldy COL.BANK,x
|
.1 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
.20 ora (ZPBasePtr),y
|
.20 ora (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y
|
sta (ZPBasePtr),y
|
||||||
|
@ -171,7 +195,10 @@ LBUF.DrawAtY.XXX
|
||||||
|
|
||||||
.2 ldy COL.BANK,x
|
.2 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C2
|
lda (ZPBasePtr),y Get C2
|
||||||
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
@ -189,7 +216,10 @@ LBUF.DrawAtY.AND.ORA
|
||||||
|
|
||||||
ldy COL.BANK,x
|
ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda LBUF.MASK,x get MASK bits
|
lda LBUF.MASK,x get MASK bits
|
||||||
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
||||||
and (ZPBasePtr),y Clear screen at C1
|
and (ZPBasePtr),y Clear screen at C1
|
||||||
|
@ -207,7 +237,10 @@ LBUF.DrawAtY.AND.ORA
|
||||||
|
|
||||||
.1 ldy COL.BANK,x
|
.1 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda (ZPBasePtr),y
|
lda (ZPBasePtr),y
|
||||||
and LBUF.MASK,x
|
and LBUF.MASK,x
|
||||||
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
|
@ -219,7 +252,10 @@ LBUF.DrawAtY.AND.ORA
|
||||||
|
|
||||||
.2 ldy COL.BANK,x
|
.2 ldy COL.BANK,x
|
||||||
sta $C000,y
|
sta $C000,y
|
||||||
ldy COL.OFS,x
|
txa
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
|
||||||
lda LBUF.MASK,x get MASK bits
|
lda LBUF.MASK,x get MASK bits
|
||||||
ora LBUF.C2.MASK
|
ora LBUF.C2.MASK
|
||||||
and (ZPBasePtr),y
|
and (ZPBasePtr),y
|
||||||
|
@ -229,6 +265,7 @@ LBUF.DrawAtY.AND.ORA
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
|
@ -74,8 +74,9 @@ VLINE.MONO >LDYA CB.Cache+S.CB.X1
|
||||||
|
|
||||||
jsr DIVMOD7YA X = MOD 7
|
jsr DIVMOD7YA X = MOD 7
|
||||||
tay
|
tay
|
||||||
lda COL.OFS,y
|
lsr
|
||||||
sta ZPTmpByte Save COL (DIV)
|
sta ZPTmpByte Save COL (DIV)
|
||||||
|
|
||||||
lda COL.BANK,y
|
lda COL.BANK,y
|
||||||
tay
|
tay
|
||||||
sta $C000,y Select proper BANK
|
sta $C000,y Select proper BANK
|
||||||
|
@ -109,6 +110,7 @@ VLINE.MONO.WHITE
|
||||||
VLINE.MONO.XOR
|
VLINE.MONO.XOR
|
||||||
lda #$5D EOR abs,x
|
lda #$5D EOR abs,x
|
||||||
sta .2
|
sta .2
|
||||||
|
|
||||||
.1 lda BASEL,y
|
.1 lda BASEL,y
|
||||||
adc ZPTmpByte
|
adc ZPTmpByte
|
||||||
sta ZPBasePtr
|
sta ZPBasePtr
|
||||||
|
|
|
@ -16,7 +16,7 @@ SETPIXEL.MONO >LDYA CB.Cache+S.CB.X1
|
||||||
|
|
||||||
jsr DIVMOD7YA
|
jsr DIVMOD7YA
|
||||||
tay
|
tay
|
||||||
lda COL.OFS,y
|
lsr
|
||||||
phy
|
phy
|
||||||
ldy CB.Cache+S.CB.Y1
|
ldy CB.Cache+S.CB.Y1
|
||||||
clc
|
clc
|
||||||
|
@ -85,26 +85,16 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
|
||||||
lda Color.Masks,x bits in 1st byte to light?
|
lda Color.Masks,x bits in 1st byte to light?
|
||||||
beq .10
|
beq .10
|
||||||
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta ZPTmpByte
|
|
||||||
sta SETPAGE2
|
sta SETPAGE2
|
||||||
lda (ZPBasePtr)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
jsr .81
|
||||||
ora ZPTmpByte
|
|
||||||
sta (ZPBasePtr)
|
|
||||||
|
|
||||||
.10 inx
|
.10 inx
|
||||||
iny
|
iny
|
||||||
lda Color.Masks,x
|
lda Color.Masks,x
|
||||||
beq .11
|
beq .11
|
||||||
|
|
||||||
and Color.Pixels,y apply color
|
jsr .80
|
||||||
sta ZPTmpByte
|
|
||||||
sta CLRPAGE2
|
|
||||||
lda (ZPBasePtr)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
|
||||||
ora ZPTmpByte
|
|
||||||
sta (ZPBasePtr)
|
|
||||||
|
|
||||||
.11 inc ZPBasePtr
|
.11 inc ZPBasePtr
|
||||||
inx
|
inx
|
||||||
|
@ -112,28 +102,25 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
|
||||||
lda Color.Masks,x
|
lda Color.Masks,x
|
||||||
beq .12
|
beq .12
|
||||||
|
|
||||||
and Color.Pixels,y apply color
|
|
||||||
sta ZPTmpByte
|
|
||||||
sta SETPAGE2
|
sta SETPAGE2
|
||||||
lda (ZPBasePtr)
|
|
||||||
and Color.NMasks,x reset existing pixel,
|
jsr .81
|
||||||
ora ZPTmpByte
|
|
||||||
sta (ZPBasePtr)
|
|
||||||
|
|
||||||
.12 inx
|
.12 inx
|
||||||
iny
|
iny
|
||||||
lda Color.Masks,x
|
lda Color.Masks,x
|
||||||
beq .13
|
beq .88
|
||||||
|
|
||||||
and Color.Pixels,y apply color
|
.80 sta CLRPAGE2
|
||||||
|
|
||||||
|
.81 and Color.Pixels,y apply color
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
sta CLRPAGE2
|
|
||||||
lda (ZPBasePtr)
|
lda (ZPBasePtr)
|
||||||
and Color.NMasks,x reset existing pixel,
|
and Color.NMasks,x reset existing pixel,
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
sta (ZPBasePtr)
|
sta (ZPBasePtr)
|
||||||
|
|
||||||
.13 rts
|
.88 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* GETPIXEL
|
* GETPIXEL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 4,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
.OR $2000
|
.OR $2000
|
||||||
|
@ -41,6 +41,7 @@ Dev.Detect >LDYA L.MSG.DETECT
|
||||||
|
|
||||||
stz ZPSlotPtr
|
stz ZPSlotPtr
|
||||||
lda #$C1
|
lda #$C1
|
||||||
|
|
||||||
.1 sta ZPSlotPtr+1
|
.1 sta ZPSlotPtr+1
|
||||||
ldx #DEVSIG.Value-DEVSIG.Offset-1
|
ldx #DEVSIG.Value-DEVSIG.Offset-1
|
||||||
|
|
||||||
|
@ -115,7 +116,7 @@ FD.DEV .DA #S.FD.T.CDEV
|
||||||
.BS 2 DRVPTR
|
.BS 2 DRVPTR
|
||||||
.DA 0 DCBPTR
|
.DA 0 DCBPTR
|
||||||
.DA 0 BUFPTR
|
.DA 0 BUFPTR
|
||||||
FD.DEV.NAME .AZ "MOUx"
|
FD.DEV.NAME .AZ "moux"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Driver Code
|
* Driver Code
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -148,15 +149,20 @@ STATUS >STYA ZPIOCTL
|
||||||
ldy #S.IOCTL.STATCODE
|
ldy #S.IOCTL.STATCODE
|
||||||
lda (ZPIOCTL),y
|
lda (ZPIOCTL),y
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
cmp #S.IOCTL.STATCODE.GETDIB
|
cmp #S.IOCTL.STATCODE.GETDIB
|
||||||
bne STATUS.DCB
|
bne STATUS.DCB
|
||||||
|
|
||||||
ldy #S.DIB-1
|
ldy #S.DIB-1
|
||||||
.HS 2C bit abs
|
.HS 2C bit abs
|
||||||
|
|
||||||
.1 ldy #3
|
.1 ldy #3
|
||||||
|
|
||||||
.2 lda DIB,y
|
.2 lda DIB,y
|
||||||
sta (ZPBufPtr),y
|
sta (ZPBufPtr),y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -169,46 +175,47 @@ CONTROL >STYA ZPBufPtr NON STANDARD
|
||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
ldx #0 set X
|
ldx #0 set X
|
||||||
jsr SETCLAMP
|
jsr SETCLAMP
|
||||||
|
|
||||||
ldy #4
|
ldy #4
|
||||||
ldx #1 set Y
|
ldx #1 set Y
|
||||||
jsr SETCLAMP
|
jsr SETCLAMP
|
||||||
ldy #HOMEMOUSE
|
|
||||||
jsr GOMOUSE
|
|
||||||
|
|
||||||
plp
|
ldy #HOMEMOUSE
|
||||||
clc
|
bra EXIT
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OPEN php
|
OPEN php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
|
lda #S.DIB.S.OPENED
|
||||||
|
tsb DIB+S.DIB.S
|
||||||
|
|
||||||
ldx DEVSLOT0n
|
ldx DEVSLOT0n
|
||||||
lda MOUSEMODx,x keep if VBLInt already activated by kernel
|
lda MOUSEMODx,x keep if VBLInt already activated by kernel
|
||||||
and #MOUSEMODx.INTVBL
|
and #MOUSEMODx.INTVBL
|
||||||
ora #MOUSEMODx.ACTIVE Enable, Polling mode
|
ora #MOUSEMODx.ACTIVE Enable, Polling mode
|
||||||
ldy #SETMOUSE
|
ldy #SETMOUSE
|
||||||
jsr GOMOUSE
|
jsr GOMOUSE
|
||||||
ldy #INITMOUSE Reset
|
|
||||||
jsr GOMOUSE
|
|
||||||
|
|
||||||
lda #S.DIB.S.OPENED
|
ldy #INITMOUSE Reset
|
||||||
tsb DIB+S.DIB.S
|
bra EXIT
|
||||||
plp
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLOSE php
|
CLOSE php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
|
lda #S.DIB.S.OPENED
|
||||||
|
trb DIB+S.DIB.S
|
||||||
|
|
||||||
ldx DEVSLOT0n
|
ldx DEVSLOT0n
|
||||||
lda MOUSEMODx,x keep if VBLInt already activated by kernel
|
lda MOUSEMODx,x keep if VBLInt already activated by kernel
|
||||||
and #MOUSEMODx.INTVBL Disable ALL but VBLInt if previously active
|
and #MOUSEMODx.INTVBL Disable ALL but VBLInt if previously active
|
||||||
ldy #SETMOUSE
|
ldy #SETMOUSE
|
||||||
jsr GOMOUSE
|
|
||||||
lda #S.DIB.S.OPENED
|
EXIT jsr GOMOUSE
|
||||||
trb DIB+S.DIB.S
|
|
||||||
plp
|
plp
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
@ -220,14 +227,17 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
|
||||||
sta SET80STORE
|
* sta SET80STORE
|
||||||
sta CLRPAGE2
|
sta CLRPAGE2
|
||||||
|
|
||||||
* ldy #READMOUSE DONE BY IRQ MANAGER
|
* ldy #READMOUSE DONE BY IRQ MANAGER
|
||||||
* jsr GOMOUSE
|
* jsr GOMOUSE
|
||||||
|
|
||||||
ldx DEVSLOT0n
|
ldx DEVSLOT0n
|
||||||
lda MOUSESTSx,x
|
lda MOUSESTSx,x
|
||||||
and #MOUSESTSx.MOVED
|
and #MOUSESTSx.MOVED
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
ldy #S.MOUSE.X1
|
ldy #S.MOUSE.X1
|
||||||
|
|
||||||
lda MOUSEXLOx,x
|
lda MOUSEXLOx,x
|
||||||
|
@ -249,12 +259,16 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
.1 lda MOUSESTSx,x
|
.1 lda MOUSESTSx,x
|
||||||
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
and #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
||||||
beq .8 no button state change:up & previously up
|
beq .8 no button state change:up & previously up
|
||||||
|
|
||||||
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
||||||
beq .8 no button state change:down & previously down
|
beq .8 no button state change:down & previously down
|
||||||
|
|
||||||
asl if CS, down & previously up
|
asl if CS, down & previously up
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
lda #S.MOUSE.S.DOWN
|
lda #S.MOUSE.S.DOWN
|
||||||
tsb READ.S+1 button has been pressed, start drag...
|
tsb READ.S+1 button has been pressed, start drag...
|
||||||
|
|
||||||
lda MOUSEXLOx,x
|
lda MOUSEXLOx,x
|
||||||
sta SrcDrag
|
sta SrcDrag
|
||||||
lda MOUSEXHIx,x
|
lda MOUSEXHIx,x
|
||||||
|
@ -264,29 +278,38 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
lda MOUSEYHIx,x
|
lda MOUSEYHIx,x
|
||||||
sta SrcDrag+3
|
sta SrcDrag+3
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.2 lda READ.S+1
|
.2 lda READ.S+1
|
||||||
pha save move state
|
pha save move state
|
||||||
ora #S.MOUSE.S.UP
|
ora #S.MOUSE.S.UP
|
||||||
sta READ.S+1
|
sta READ.S+1
|
||||||
pla get back move state
|
pla get back move state
|
||||||
bne .4 no move...click!
|
bne .4 no move...click!
|
||||||
|
|
||||||
lda #S.MOUSE.S.CLK
|
lda #S.MOUSE.S.CLK
|
||||||
bit bDblClick
|
bit bDblClick
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
lda #S.MOUSE.S.DCLK
|
lda #S.MOUSE.S.DCLK
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
sty bDblClick
|
sty bDblClick
|
||||||
|
|
||||||
.3 dec bDblClick
|
.3 dec bDblClick
|
||||||
|
|
||||||
tsb READ.S+1
|
tsb READ.S+1
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.4 lda #S.MOUSE.S.DRAGSTART
|
.4 lda #S.MOUSE.S.DRAGSTART
|
||||||
tsb READ.S+1
|
tsb READ.S+1
|
||||||
|
|
||||||
ldy #S.MOUSE.X2+3
|
ldy #S.MOUSE.X2+3
|
||||||
|
|
||||||
.5 lda SrcDrag-S.MOUSE.X2,y
|
.5 lda SrcDrag-S.MOUSE.X2,y
|
||||||
sta (ZPBufPtr),y
|
sta (ZPBufPtr),y
|
||||||
dey
|
dey
|
||||||
bpl .5
|
bpl .5
|
||||||
|
|
||||||
.8 plp
|
.8 plp
|
||||||
|
|
||||||
READ.S lda #$ff SELF MODIFIED
|
READ.S lda #$ff SELF MODIFIED
|
||||||
|
@ -305,6 +328,7 @@ READ.S lda #$ff SELF MODIFIED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SETCLAMP lda (ZPBufPtr),y
|
SETCLAMP lda (ZPBufPtr),y
|
||||||
sta LOCLAMPLO
|
sta LOCLAMPLO
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPBufPtr),y
|
lda (ZPBufPtr),y
|
||||||
sta LOCLAMPHI
|
sta LOCLAMPHI
|
||||||
|
@ -316,6 +340,7 @@ SETCLAMP lda (ZPBufPtr),y
|
||||||
iny
|
iny
|
||||||
lda (ZPBufPtr),y
|
lda (ZPBufPtr),y
|
||||||
sta HICLAMPHI
|
sta HICLAMPHI
|
||||||
|
|
||||||
txa
|
txa
|
||||||
ldy #CLAMPMOUSE
|
ldy #CLAMPMOUSE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -339,6 +364,11 @@ DIB .DA #0
|
||||||
.DA K.VER
|
.DA K.VER
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.END
|
DRV.END
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
|
DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START
|
||||||
|
DRV.SIZE .EQ DRV.END-DRV.CS.START
|
||||||
|
.LIST OFF
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/drv/mouse.drv.s
|
SAVE usr/src/drv/mouse.drv.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -262,10 +262,7 @@ DrawLine.IncX lda DX
|
||||||
bra .1
|
bra .1
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DrawText >LDYA L.CB.Cache
|
DrawText jsr GFXWrite.CB
|
||||||
ldx #0
|
|
||||||
|
|
||||||
>SYSCALL2 OSD
|
|
||||||
bcs .9
|
bcs .9
|
||||||
jsr GFXWrite.CB
|
jsr GFXWrite.CB
|
||||||
lda CB.Cache+S.CB.SrcPtr
|
lda CB.Cache+S.CB.SrcPtr
|
||||||
|
|
Loading…
Reference in New Issue
Block a user