mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-15 04:29:35 +00:00
Kernel version 0.9 : Cleanup in DHGR stuff, adding primitives (DrawLine,....etc...)
This commit is contained in:
parent
77e3328220
commit
d0d356419f
@ -17,7 +17,6 @@ AUTO 6
|
|||||||
ZPBase .EQ ZPDRV
|
ZPBase .EQ ZPDRV
|
||||||
ZPShiftLo .EQ ZPDRV+2
|
ZPShiftLo .EQ ZPDRV+2
|
||||||
ZPShiftHi .EQ ZPDRV+4
|
ZPShiftHi .EQ ZPDRV+4
|
||||||
ZPCtrlBlk .EQ ZPDRV+8
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -153,12 +152,8 @@ DRV.CS.START .DA STATUS
|
|||||||
.DA GETPIXEL
|
.DA GETPIXEL
|
||||||
.DA HLINE
|
.DA HLINE
|
||||||
.DA VLINE
|
.DA VLINE
|
||||||
|
.DA FILLRECT
|
||||||
.DA BITBLT
|
.DA BITBLT
|
||||||
.DA FILLREC
|
|
||||||
.DA SETCURPOS
|
|
||||||
.DA SETCUR
|
|
||||||
.DA HIDECUR
|
|
||||||
.DA SHOWCUR
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.STAT .DA STAT
|
L.STAT .DA STAT
|
||||||
L.DIV7.0 .DA DIV7.0
|
L.DIV7.0 .DA DIV7.0
|
||||||
@ -241,29 +236,26 @@ CLOSE clc
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SETPIXEL
|
* SETPIXEL
|
||||||
* In : YA = Ptr to CtrlBlk :
|
* In : YA = Ptr to CtrlBlk :
|
||||||
* 0 : X
|
* 1 : OP (XOR only)
|
||||||
* 2 : Y
|
* 2 : Mode
|
||||||
* 4 : Mode
|
* 3 : Color
|
||||||
* 00000000=xor
|
* 4 : SrcX1
|
||||||
* 00000001=b/w (1 bit/pixel)
|
* 6 : SrcY1
|
||||||
* 00000100=16 colors (4 bits/pixel)
|
|
||||||
* 00001000=256 colors (8 bits/pixel)
|
|
||||||
* 5 : Color
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SETPIXEL >STYA ZPBase
|
SETPIXEL >STYA ZPBase
|
||||||
ldy #5
|
ldy #S.CB.Y1 Skip S.CB.Y1+1.....always 0
|
||||||
.1 lda (ZPBase),y
|
.1 lda (ZPBase),y
|
||||||
sta ZPCtrlBlk,y
|
sta CB.Cache,y
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
sta SET80STORE
|
sta SET80STORE
|
||||||
|
|
||||||
lda ZPCtrlBlk+4
|
lda CB.Cache+S.CB.MODE
|
||||||
bit #%00000100
|
bit #S.CB.MODE.C16
|
||||||
bne .7
|
bne SETPIXEL.C16
|
||||||
*-----B&W -----------------------------
|
*---- MONO ----------------------------
|
||||||
ldx ZPCtrlBlk+1 X.HI
|
ldx CB.Cache+S.CB.X1+1
|
||||||
lda DIV7.hi,x
|
lda DIV7.hi,x
|
||||||
sta .2+2
|
sta .2+2
|
||||||
|
|
||||||
@ -272,7 +264,7 @@ SETPIXEL >STYA ZPBase
|
|||||||
lda MOD7.hi,x
|
lda MOD7.hi,x
|
||||||
sta .4+2
|
sta .4+2
|
||||||
|
|
||||||
ldx ZPCtrlBlk X.LO
|
ldx CB.Cache+S.CB.X1
|
||||||
.2 lda DIV7.0,x A=Col*2+AuxBit
|
.2 lda DIV7.0,x A=Col*2+AuxBit
|
||||||
|
|
||||||
eor #1 toggle last bit : 0=Aux, 1=Main
|
eor #1 toggle last bit : 0=Aux, 1=Main
|
||||||
@ -281,6 +273,8 @@ SETPIXEL >STYA ZPBase
|
|||||||
rol .3+1 if CS, -> SETPAGE2
|
rol .3+1 if CS, -> SETPAGE2
|
||||||
.3 sta CLRPAGE2
|
.3 sta CLRPAGE2
|
||||||
|
|
||||||
|
ldy CB.Cache+S.CB.Y1
|
||||||
|
|
||||||
adc BASEL,y setup line Base Ptr (A=Col)
|
adc BASEL,y setup line Base Ptr (A=Col)
|
||||||
sta ZPBase
|
sta ZPBase
|
||||||
lda BASEH,y
|
lda BASEH,y
|
||||||
@ -288,10 +282,10 @@ SETPIXEL >STYA ZPBase
|
|||||||
|
|
||||||
.4 ldy MOD7.0,x x = X.LO
|
.4 ldy MOD7.0,x x = X.LO
|
||||||
|
|
||||||
dec ZPCtrlBlk+4 get mode
|
lda CB.Cache+S.CB.OP
|
||||||
bne .5
|
beq .5
|
||||||
|
|
||||||
lda (ZPBase) Mode=0, XOR
|
lda (ZPBase) XOR
|
||||||
eor Mono.Masks,y y = mod 7
|
eor Mono.Masks,y y = mod 7
|
||||||
sta (ZPBase)
|
sta (ZPBase)
|
||||||
|
|
||||||
@ -299,7 +293,7 @@ SETPIXEL >STYA ZPBase
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
.5 lda (ZPBase)
|
.5 lda (ZPBase)
|
||||||
ldx ZPCtrlBlk+5 mode=1, get color
|
ldx CB.Cache+S.CB.COLOR get color
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
and Mono.NMasks,y includes And $7F for mono
|
and Mono.NMasks,y includes And $7F for mono
|
||||||
@ -313,17 +307,17 @@ SETPIXEL >STYA ZPBase
|
|||||||
sta CLR80STORE
|
sta CLR80STORE
|
||||||
rts
|
rts
|
||||||
*-----16 Colors -----------------------
|
*-----16 Colors -----------------------
|
||||||
.7 lda ZPCtrlBlk X.LO
|
SETPIXEL.C16 lda CB.Cache+S.CB.X1
|
||||||
lsr ZPCtrlBlk+1 divide by 4
|
lsr CB.Cache+S.CB.X1+1 divide by 4
|
||||||
ror
|
ror
|
||||||
lsr ZPCtrlBlk+1
|
lsr CB.Cache+S.CB.X1+1
|
||||||
ror
|
ror
|
||||||
tay Y=CX/4 (range 0->139)
|
tay Y=CX/4 (range 0->139)
|
||||||
lda DIV7.0,y A=CX/4/7 (range 0->19)
|
lda DIV7.0,y A=CX/4/7 (range 0->19)
|
||||||
|
|
||||||
asl times 2 (range 0->38)
|
asl times 2 (range 0->38)
|
||||||
|
|
||||||
ldx ZPCtrlBlk+2
|
ldx CB.Cache+S.CB.Y1
|
||||||
adc BASEL,x setup line Base Ptr (cc by asl)
|
adc BASEL,x setup line Base Ptr (cc by asl)
|
||||||
sta ZPBase ZPBase now point to first of...
|
sta ZPBase ZPBase now point to first of...
|
||||||
lda BASEH,x
|
lda BASEH,x
|
||||||
@ -335,7 +329,7 @@ SETPIXEL >STYA ZPBase
|
|||||||
asl
|
asl
|
||||||
tax set in X for Masks,NMasks
|
tax set in X for Masks,NMasks
|
||||||
|
|
||||||
lda ZPCtrlBlk+5 get COLOR
|
lda CB.Cache+S.CB.COLOR
|
||||||
|
|
||||||
asl times 4 to compute index in PIXELS table
|
asl times 4 to compute index in PIXELS table
|
||||||
asl
|
asl
|
||||||
@ -402,187 +396,86 @@ SETPIXEL >STYA ZPBase
|
|||||||
.13 sta CLR80STORE
|
.13 sta CLR80STORE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* GETPIXEL
|
||||||
|
*--------------------------------------
|
||||||
GETPIXEL rts
|
GETPIXEL rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
HLINE rts
|
* HLINE X1,X2 at Y1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
VLINE rts
|
HLINE >STYA ZPBase
|
||||||
|
ldy #S.CB.X2+1
|
||||||
|
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.MODE
|
||||||
|
bit #S.CB.MODE.C16
|
||||||
|
bne HLINE.C16
|
||||||
|
*----- MONO ---------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HLINE.C16
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FILLREC rts
|
* VLINE Y1,Y2 at X1
|
||||||
|
*--------------------------------------
|
||||||
|
VLINE >STYA ZPBase
|
||||||
|
ldy #S.CB.Y2
|
||||||
|
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
VLINE.I
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* FILLRECT
|
||||||
|
* 2 : Mode
|
||||||
|
* 3 : Color
|
||||||
|
* 4 : SrcX1
|
||||||
|
* 6 : SrcY1
|
||||||
|
* 8 : SrcX2
|
||||||
|
* 10 : SrcY2
|
||||||
|
*--------------------------------------
|
||||||
|
FILLRECT >STYA ZPBase
|
||||||
|
ldy #S.CB.Y2
|
||||||
|
|
||||||
|
.1 lda (ZPBase),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
|
||||||
|
.2 jsr VLINE.I
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.Y1
|
||||||
|
cmp CB.Cache+S.CB.Y2
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
inc CB.Cache+S.CB.Y1
|
||||||
|
bra .2
|
||||||
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BitBlt
|
* BitBlt
|
||||||
* In : YA = Ptr to CtrlBlk :
|
* In : YA = Ptr to CtrlBlk :
|
||||||
* 0 : Operation
|
* 1 : OP
|
||||||
* %00000001 : Save
|
* 4 : SrcX1
|
||||||
* %00000010 : Replace
|
* 6 : SrcY1
|
||||||
* %00000100 : AND with Src BitMask
|
* 8 : SrcX2
|
||||||
* %00001000 : ORA with Src BitMap
|
* 10 : SrcY2
|
||||||
* %00010000 : XOR
|
|
||||||
* 2 : SavePTR
|
|
||||||
* 4 : SrcAX
|
|
||||||
* 6 : SrcAY
|
|
||||||
* 8 : SrcBX
|
|
||||||
* 10 : SrcBY
|
|
||||||
* 12 : DestX
|
* 12 : DestX
|
||||||
* 14 : DestY
|
* 14 : DestY
|
||||||
* 16 : BM Struct
|
* 16 : BM Struct Ptr
|
||||||
|
* 18 : Save Ptr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BITBLT >STYA ZPCtrlBlk
|
BITBLT >STYA ZPBase
|
||||||
lda (ZPCtrlBlk)
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Y,A = pPoint
|
|
||||||
*--------------------------------------
|
|
||||||
SETCURPOS >STYA ZPBase
|
|
||||||
|
|
||||||
ldy #3
|
|
||||||
.1 lda (ZPBase),y
|
|
||||||
sta CUR.X,y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
bit CUR.State
|
|
||||||
bpl .2
|
|
||||||
jsr HIDECUR.I
|
|
||||||
jsr SHOWCUR.I
|
|
||||||
.2 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Y,A = pCur
|
|
||||||
*--------------------------------------
|
|
||||||
SETCUR >STYA ZPBase
|
|
||||||
ldy #S.CUR-1
|
|
||||||
.1 lda (ZPBase),y
|
|
||||||
sta CUR.Buf,y
|
|
||||||
dey
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
bit CUR.State
|
|
||||||
bpl .2
|
|
||||||
jsr HIDECUR.I
|
|
||||||
jsr SHOWCUR.I
|
|
||||||
.2 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SHOWCUR bit CUR.State
|
|
||||||
bpl SHOWCUR.I
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
SHOWCUR.I sta SET80STORE
|
|
||||||
|
|
||||||
ldx CUR.X+1
|
|
||||||
lda DIV7.hi,x
|
|
||||||
sta .71+2
|
|
||||||
lda MOD7.hi,x
|
|
||||||
sta .72+2
|
|
||||||
|
|
||||||
ldx CUR.X
|
|
||||||
|
|
||||||
.71 lda DIV7.0,x
|
|
||||||
lsr
|
|
||||||
sta SB.StartCol
|
|
||||||
lda #0
|
|
||||||
sbc #0
|
|
||||||
sta SB.StartPage
|
|
||||||
|
|
||||||
.72 ldy MOD7.0,x
|
|
||||||
lda Shiftlo.Hi,y
|
|
||||||
sta ZPShiftLo+1
|
|
||||||
lda ShiftHi.Hi,y
|
|
||||||
sta ZPShiftHi+1
|
|
||||||
|
|
||||||
lda L.Shift0.Lo
|
|
||||||
sta ZPShiftLo
|
|
||||||
lda L.Shift0.hi
|
|
||||||
sta ZPShifthi
|
|
||||||
|
|
||||||
lda CUR.Y
|
|
||||||
sta CY
|
|
||||||
|
|
||||||
ldx #0 index to CUR data/mask
|
|
||||||
|
|
||||||
.1 ldy CY
|
|
||||||
lda BaseL,y
|
|
||||||
clc
|
|
||||||
adc SB.StartCol
|
|
||||||
sta ZPBase
|
|
||||||
|
|
||||||
lda BaseH,y
|
|
||||||
sta ZPBase+1
|
|
||||||
|
|
||||||
lda SB.StartPage
|
|
||||||
sta SB.Page
|
|
||||||
|
|
||||||
lda SB.Page
|
|
||||||
tay
|
|
||||||
eor #1
|
|
||||||
sta SB.Page
|
|
||||||
sta CLRPAGE2,y
|
|
||||||
|
|
||||||
lda (ZPBase)
|
lda (ZPBase)
|
||||||
ldy CUR.Buf+S.CUR.MASK,x
|
|
||||||
and (ZPShiftLo),y
|
|
||||||
ldy CUR.Buf+S.CUR.DATA,x
|
|
||||||
ora (ZPShiftLo),y
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
lda SB.Page
|
|
||||||
tay
|
|
||||||
eor #1
|
|
||||||
sta SB.Page
|
|
||||||
sta CLRPAGE2,y
|
|
||||||
beq .3
|
|
||||||
inc ZPBase
|
|
||||||
|
|
||||||
.3 lda (ZPBase)
|
|
||||||
ldy CUR.Buf+S.CUR.MASK,x
|
|
||||||
and (ZPShiftHi),y
|
|
||||||
ldy CUR.Buf+S.CUR.DATA,x
|
|
||||||
ora (ZPShiftHi),y
|
|
||||||
inx
|
|
||||||
ldy CUR.Buf+S.CUR.MASK,x
|
|
||||||
and (ZPShiftLo),y
|
|
||||||
ldy CUR.Buf+S.CUR.DATA,x
|
|
||||||
ora (ZPShiftLo),y
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
lda SB.Page
|
|
||||||
tay
|
|
||||||
eor #1
|
|
||||||
sta SB.Page
|
|
||||||
sta CLRPAGE2,y
|
|
||||||
beq .4
|
|
||||||
inc ZPBase
|
|
||||||
|
|
||||||
.4 lda (ZPBase)
|
|
||||||
ldy CUR.Buf+S.CUR.MASK,x
|
|
||||||
and (ZPShiftHi),y
|
|
||||||
ldy CUR.Buf+S.CUR.DATA,x
|
|
||||||
ora (ZPShiftHi),y
|
|
||||||
sta (ZPBase)
|
|
||||||
|
|
||||||
inx
|
|
||||||
cpx #32
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
sta CLR80STORE
|
|
||||||
sec
|
|
||||||
ror CUR.State
|
|
||||||
|
|
||||||
SHOWCUR.RTS clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
HIDECUR bit CUR.State
|
|
||||||
bpl HIDECUR.RTS
|
|
||||||
|
|
||||||
HIDECUR.I
|
|
||||||
|
|
||||||
|
|
||||||
clc
|
clc
|
||||||
ror CUR.State
|
|
||||||
HIDECUR.RTS clc
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
@ -610,22 +503,13 @@ MOD7.hi .BS 3
|
|||||||
Shiftlo.hi .BS 7
|
Shiftlo.hi .BS 7
|
||||||
Shifthi.hi .BS 7
|
Shifthi.hi .BS 7
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CB.Cache .BS S.CB
|
||||||
|
*--------------------------------------
|
||||||
CX .BS 2
|
CX .BS 2
|
||||||
CY .BS 1
|
CY .BS 1
|
||||||
COL .BS 1
|
COL .BS 1
|
||||||
GBYTE .BS 1
|
GBYTE .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CUR.State .BS 1
|
|
||||||
CUR.X .BS 2
|
|
||||||
CUR.Xdiv7 .BS 1
|
|
||||||
CUR.Xmod7 .BS 1
|
|
||||||
CUR.Y .BS 2
|
|
||||||
CUR.Buf .BS S.CUR
|
|
||||||
CUR.SaveCol .BS 1
|
|
||||||
CUR.SaveColCnt .BS 1
|
|
||||||
CUR.SaveRow .BS 1
|
|
||||||
CUR.SaveRowCnt .BS 1
|
|
||||||
CUR.SaveBuf .BS 3*16 MAX 3 bytes*16 rows
|
|
||||||
SB.StartPage .BS 1
|
SB.StartPage .BS 1
|
||||||
SB.Page .BS 1
|
SB.Page .BS 1
|
||||||
SB.StartCol .BS 1
|
SB.StartCol .BS 1
|
||||||
@ -639,7 +523,7 @@ STAT .DA #0
|
|||||||
.DA #0
|
.DA #0
|
||||||
.DA $0900
|
.DA $0900
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DEVSTAT.MODES .DA #%10000011 XOR,16 & B/W
|
DEVSTAT.MODES .DA #S.CB.MODE.MONO+S.CB.MODE.C16
|
||||||
DEVSTAT.W .DA 560 X.SIZE
|
DEVSTAT.W .DA 560 X.SIZE
|
||||||
DEVSTAT.H .DA 192 Y.SIZE
|
DEVSTAT.H .DA 192 Y.SIZE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -373,7 +373,8 @@ DEVMGR.GFX.SETPIXEL .EQ 22
|
|||||||
DEVMGR.GFX.GETPIXEL .EQ 24
|
DEVMGR.GFX.GETPIXEL .EQ 24
|
||||||
DEVMGR.GFX.HLINE .EQ 26
|
DEVMGR.GFX.HLINE .EQ 26
|
||||||
DEVMGR.GFX.VLINE .EQ 28
|
DEVMGR.GFX.VLINE .EQ 28
|
||||||
DEVMGR.GFX.BITBLT .EQ 30
|
DEVMGR.GFX.FILLRECT .EQ 30
|
||||||
|
DEVMGR.GFX.BITBLT .EQ 32
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.DEVSTAT.S .EQ 0
|
S.DEVSTAT.S .EQ 0
|
||||||
S.DEVSTAT.S.BLOCK .EQ %10000000
|
S.DEVSTAT.S.BLOCK .EQ %10000000
|
||||||
|
@ -6,6 +6,41 @@ AUTO 6
|
|||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
S.CB.hDC .EQ 0
|
||||||
|
S.CB.OP .EQ 1
|
||||||
|
S.CB.OP.SAVE .EQ %00000001
|
||||||
|
S.CB.OP.REPLACE .EQ %00000010
|
||||||
|
S.CB.OP.AND .EQ %00000100
|
||||||
|
S.CB.OP.ORA .EQ %00001000
|
||||||
|
S.CB.OP.XOR .EQ %00010000
|
||||||
|
S.CB.MODE .EQ 2
|
||||||
|
S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel)
|
||||||
|
*S.CB.MODE.C4 .EQ %00000010
|
||||||
|
*S.CB.MODE.C8 .EQ %00000100
|
||||||
|
S.CB.MODE.C16 .EQ %00001000 16 colors (4 bits/pixel)
|
||||||
|
S.CB.MODE.C256 .EQ %00010000 256 colors (8 bits/pixel)
|
||||||
|
S.CB.COLOR .EQ 3
|
||||||
|
S.CB.X1 .EQ 4
|
||||||
|
S.CB.Y1 .EQ 6
|
||||||
|
S.CB.X2 .EQ 8
|
||||||
|
S.CB.Y2 .EQ 10
|
||||||
|
S.CB.DestX .EQ 12
|
||||||
|
S.CB.DestY .EQ 14
|
||||||
|
S.CB.SrcPtr .EQ 16
|
||||||
|
S.CB.DstPtr .EQ 18
|
||||||
|
*
|
||||||
|
S.CB .EQ 20
|
||||||
|
*--------------------------------------
|
||||||
|
S.DC.hDev .EQ 0
|
||||||
|
S.DC.hMem .EQ 1
|
||||||
|
S.DC.Parent .EQ 2
|
||||||
|
S.DC.X .EQ 4
|
||||||
|
S.DC.Y .EQ 6
|
||||||
|
S.DC.W .EQ 8
|
||||||
|
S.DC.H .EQ 10
|
||||||
|
*
|
||||||
|
S.DC .EQ 12
|
||||||
|
*--------------------------------------
|
||||||
S.CUR.HotPointX .EQ 0
|
S.CUR.HotPointX .EQ 0
|
||||||
S.CUR.HotPointY .EQ 1
|
S.CUR.HotPointY .EQ 1
|
||||||
S.CUR.DATA .EQ 2 16x16 bits = 32 bytes
|
S.CUR.DATA .EQ 2 16x16 bits = 32 bytes
|
||||||
@ -15,8 +50,8 @@ S.CUR .EQ 66
|
|||||||
S.BM.F .EQ 0
|
S.BM.F .EQ 0
|
||||||
S.BM.F.BBP1 .EQ %00000001
|
S.BM.F.BBP1 .EQ %00000001
|
||||||
S.BM.F.BBP2 .EQ %00000010
|
S.BM.F.BBP2 .EQ %00000010
|
||||||
S.BM.F.BBP4 .EQ %00000100
|
S.BM.F.BBP4 .EQ %00001000
|
||||||
S.BM.F.BBP8 .EQ %00001000
|
S.BM.F.BBP8 .EQ %00010000
|
||||||
S.BM.RowBytes .EQ 1
|
S.BM.RowBytes .EQ 1
|
||||||
S.BM.W .EQ 2
|
S.BM.W .EQ 2
|
||||||
S.BM.H .EQ 4
|
S.BM.H .EQ 4
|
||||||
@ -24,10 +59,12 @@ S.BM.MASK.OFFSET .EQ 6
|
|||||||
S.BM.DATA .EQ 8
|
S.BM.DATA .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBGFX.InitGFXA .EQ 4
|
LIBGFX.InitGFXA .EQ 4
|
||||||
LIBGFX.SetCursorPos .EQ 6
|
LIBGFX.CloseGFX .EQ 4
|
||||||
LIBGFX.SetCursorYA .EQ 8
|
LIBGFX.SetCursorPos .EQ 8
|
||||||
LIBGFX.HideCursor .EQ 10
|
LIBGFX.SetCursorYA .EQ 10
|
||||||
LIBGFX.ShowCursor .EQ 12
|
LIBGFX.HideCursor .EQ 12
|
||||||
|
LIBGFX.ShowCursor .EQ 14
|
||||||
|
LIBGFX.DrawLine .EQ 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.BUILD/INC/LIBGFX.I
|
SAVE /A2OSX.BUILD/INC/LIBGFX.I
|
||||||
|
184
LIB/LIBGFX.S.txt
184
LIB/LIBGFX.S.txt
@ -12,7 +12,28 @@ AUTO 6
|
|||||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||||
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
.INB /A2OSX.BUILD/INC/LIBGFX.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPPtr1 .EQ ZPLIB
|
.MA SWAP16
|
||||||
|
lda ]1
|
||||||
|
ldx ]2
|
||||||
|
stx ]1
|
||||||
|
sta ]2
|
||||||
|
lda ]1+1
|
||||||
|
ldx ]2+1
|
||||||
|
stx ]1+1
|
||||||
|
sta ]2+1
|
||||||
|
.EM
|
||||||
|
.MA NOT16
|
||||||
|
sec
|
||||||
|
lda #0
|
||||||
|
sbc ]1
|
||||||
|
sta ]1
|
||||||
|
lda #0
|
||||||
|
sbc ]1+1
|
||||||
|
sta ]1+1
|
||||||
|
.EM
|
||||||
|
*--------------------------------------
|
||||||
|
ZPCBPtr .EQ ZPLIB
|
||||||
|
ZPDCPtr .EQ ZPLIB+2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -31,22 +52,28 @@ CS.START cld
|
|||||||
.1 .DA LIB.LOAD
|
.1 .DA LIB.LOAD
|
||||||
.DA LIB.UNLOAD
|
.DA LIB.UNLOAD
|
||||||
.DA InitGFXA
|
.DA InitGFXA
|
||||||
|
.DA CloseGFX
|
||||||
.DA InitCursor
|
.DA InitCursor
|
||||||
.DA SetCursorYA
|
.DA SetCursorYA
|
||||||
.DA HideCursor
|
.DA HideCursor
|
||||||
.DA ShowCursor
|
.DA ShowCursor
|
||||||
|
.DA DrawLine
|
||||||
|
L.CB.Cache .DA CB.Cache
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD
|
LIB.LOAD
|
||||||
LIB.UNLOAD clc
|
LIB.UNLOAD clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
InitGFXA sta hDev
|
InitGFXA sta hDev
|
||||||
|
>SYSCALL GetDevByIDA
|
||||||
|
>STYA GoDevGFX.1+1
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
.9 stz hDev
|
CloseGFX
|
||||||
|
stz hDev
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -61,11 +88,158 @@ ShowCursor
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* .INB LIB/LIBGFX.S.CUR
|
* In: Control Block
|
||||||
|
* hDC
|
||||||
|
* OP
|
||||||
|
* MODE
|
||||||
|
* COLOR
|
||||||
|
* X1
|
||||||
|
* Y1
|
||||||
|
* X2
|
||||||
|
* Y2
|
||||||
|
*--------------------------------------
|
||||||
|
DrawLine ldy #S.CB.Y2+1
|
||||||
|
jsr GetCB
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.X2
|
||||||
|
sbc CB.Cache+S.CB.X1
|
||||||
|
sta DX
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.X2+1
|
||||||
|
sbc CB.Cache+S.CB.X1+1
|
||||||
|
sta DX+1 DX% = X2% - X1%
|
||||||
|
|
||||||
|
bmi .1 DX < 0....
|
||||||
|
|
||||||
|
ora DX
|
||||||
|
bne .2 DX > 0...
|
||||||
|
|
||||||
|
ldx #DEVMGR.GFX.VLINE
|
||||||
|
jmp GoDevGFX DX=0 : VLIN Y1,Y2 At X1
|
||||||
|
|
||||||
|
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
|
||||||
|
>SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
|
||||||
|
>NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX
|
||||||
|
|
||||||
|
.2 stz IY
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.Y2
|
||||||
|
sbc CB.Cache+S.CB.Y1
|
||||||
|
sta DY
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.Y2+1
|
||||||
|
sbc CB.Cache+S.CB.Y1+1
|
||||||
|
sta DY+1 DY% = Y2% - Y1%
|
||||||
|
|
||||||
|
bmi .3 DY < 0 ...
|
||||||
|
|
||||||
|
ora DY
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
ldx #DEVMGR.GFX.HLINE
|
||||||
|
jmp GoDevGFX DY=0 : HLIN X1,X2 At Y1
|
||||||
|
|
||||||
|
.3 >NOT16 DY set DY=-DY
|
||||||
|
dec IY
|
||||||
|
|
||||||
|
.4 ldx #DEVMGR.GFX.SETPIXEL
|
||||||
|
jsr GoDevGFX
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda DX
|
||||||
|
sbc DY
|
||||||
|
sta DXY
|
||||||
|
|
||||||
|
lda DX+1
|
||||||
|
sbc DY+1
|
||||||
|
sta DXY+1
|
||||||
|
bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis
|
||||||
|
|
||||||
|
ora DXY
|
||||||
|
bne DrawLine.IncX DY is lower than DX, we will increase on X axis
|
||||||
|
|
||||||
|
DrawLine.XY lda DX DX=DY
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
lda DX+1
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
|
.1 inc Counter
|
||||||
|
bne .2
|
||||||
|
inc Counter+1
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.2 inc CB.Cache+S.CB.X1
|
||||||
|
bne .3
|
||||||
|
inc CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
.3 bit IY
|
||||||
|
bmi .4
|
||||||
|
|
||||||
|
inc CB.Cache+S.CB.Y1
|
||||||
|
bne .5
|
||||||
|
inc CB.Cache+S.CB.Y1+1
|
||||||
|
bra .5
|
||||||
|
|
||||||
|
.4 sec
|
||||||
|
lda CB.Cache+S.CB.Y1
|
||||||
|
sbc #1
|
||||||
|
sta CB.Cache+S.CB.Y1
|
||||||
|
bcs .5
|
||||||
|
|
||||||
|
dec CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
|
.5 ldx #DEVMGR.GFX.SETPIXEL
|
||||||
|
jsr GoDevGFX
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
|
||||||
|
DrawLine.IncY lda DY
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
lda DY+1
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
DrawLine.IncX lda DX
|
||||||
|
eor #$ff
|
||||||
|
sta Counter
|
||||||
|
lda DX+1
|
||||||
|
eor #$ff
|
||||||
|
sta Counter+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
GetCB >PULLW ZPCBPtr
|
||||||
|
|
||||||
|
.1 lda (ZPCBPtr),y Y=Byte count to cache
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
GoDevGFX >LDYA L.CB.Cache
|
||||||
|
GoDevGFX.1 jmp $ffff
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
hDev .BS 1
|
hDev .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DX .BS 2
|
||||||
|
DY .BS 2
|
||||||
|
IY .BS 1
|
||||||
|
DXY .BS 2
|
||||||
|
Counter .BS 2
|
||||||
|
*--------------------------------------
|
||||||
|
CB.Cache .BS S.CB
|
||||||
|
*--------------------------------------
|
||||||
CUR.Arrow .DA #0
|
CUR.Arrow .DA #0
|
||||||
.DA #0
|
.DA #0
|
||||||
CUR.Arrow.DATA .DA %00000001.000000000
|
CUR.Arrow.DATA .DA %00000001.000000000
|
||||||
|
@ -39,8 +39,9 @@ L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
|
|||||||
L.MSG.INIT .DA MSG.INIT
|
L.MSG.INIT .DA MSG.INIT
|
||||||
L.MouseClamp .DA MouseClamp
|
L.MouseClamp .DA MouseClamp
|
||||||
L.MouseData .DA MouseData
|
L.MouseData .DA MouseData
|
||||||
L.SetPixel.X .DA SetPixel.X
|
L.SetPixel.CB .DA SetPixel.CB
|
||||||
L.DrawLine.X1 .DA DrawLine.X1
|
L.DrawLine1.CB .DA DrawLine1.CB
|
||||||
|
L.DrawLine2.CB .DA DrawLine2.CB
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.MSG.INIT
|
CS.INIT >LDYA L.MSG.INIT
|
||||||
@ -117,9 +118,7 @@ CS.INIT >LDYA L.MSG.INIT
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN ldy #S.EVT.hDEV
|
CS.RUN lda A2osX.ASCREEN GUI screen active ?
|
||||||
|
|
||||||
lda A2osX.ASCREEN GUI screen active ?
|
|
||||||
cmp #3
|
cmp #3
|
||||||
bne .8 no, exit....
|
bne .8 no, exit....
|
||||||
|
|
||||||
@ -147,13 +146,15 @@ CS.RUN ldy #S.EVT.hDEV
|
|||||||
lda MouseData+4
|
lda MouseData+4
|
||||||
sta SetPixel.Y+1
|
sta SetPixel.Y+1
|
||||||
|
|
||||||
lda #4
|
lda #0 S.CB.OP.XOR
|
||||||
|
sta SetPixel.OP
|
||||||
|
lda #S.CB.MODE.MONO
|
||||||
sta SetPixel.Mode
|
sta SetPixel.Mode
|
||||||
|
|
||||||
lda #15
|
lda #1
|
||||||
sta SetPixel.Color
|
sta SetPixel.Color
|
||||||
|
|
||||||
>LDYA L.SetPixel.X
|
>LDYA L.SetPixel.CB
|
||||||
ldx #DEVMGR.GFX.SETPIXEL
|
ldx #DEVMGR.GFX.SETPIXEL
|
||||||
jsr GoDevGFX
|
jsr GoDevGFX
|
||||||
clc
|
clc
|
||||||
@ -176,21 +177,21 @@ CS.DOEVENT sec
|
|||||||
CS.QUIT clc
|
CS.QUIT clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Destop.Paint lda #4
|
Destop.Paint lda #S.CB.MODE.C16
|
||||||
sta SetPixel.Mode
|
sta SetPixel.Mode
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta SetPixel.Color
|
sta SetPixel.Color
|
||||||
|
|
||||||
lda #0
|
lda #20
|
||||||
sta SetPixel.Y
|
sta SetPixel.Y
|
||||||
|
|
||||||
.1 lda #0
|
.1 lda #20
|
||||||
sta SetPixel.X
|
sta SetPixel.X
|
||||||
lda /0
|
lda /20
|
||||||
sta SetPixel.X+1
|
sta SetPixel.X+1
|
||||||
|
|
||||||
.2 >LDYA L.SetPixel.X
|
.2 >LDYA L.SetPixel.CB
|
||||||
|
|
||||||
ldx #DEVMGR.GFX.SETPIXEL
|
ldx #DEVMGR.GFX.SETPIXEL
|
||||||
jsr GoDevGFX
|
jsr GoDevGFX
|
||||||
@ -203,9 +204,9 @@ Destop.Paint lda #4
|
|||||||
inc SetPixel.X+1
|
inc SetPixel.X+1
|
||||||
|
|
||||||
.3 lda SetPixel.X
|
.3 lda SetPixel.X
|
||||||
cmp #279
|
cmp #79
|
||||||
lda SetPixel.X+1
|
lda SetPixel.X+1
|
||||||
sbc /279
|
sbc /79
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
inc SetPixel.Y
|
inc SetPixel.Y
|
||||||
@ -220,6 +221,11 @@ Destop.Paint lda #4
|
|||||||
cmp #16
|
cmp #16
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
>PUSHW L.DrawLine1.CB
|
||||||
|
>LIBCALL hLibGFX,LIBGFX.DrawLine
|
||||||
|
>PUSHW L.DrawLine2.CB
|
||||||
|
>LIBCALL hLibGFX,LIBGFX.DrawLine
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -237,16 +243,31 @@ hDevGFX .BS 1
|
|||||||
hDevMouse .BS 1
|
hDevMouse .BS 1
|
||||||
MouseClamp .BS 8
|
MouseClamp .BS 8
|
||||||
MouseData .BS 5
|
MouseData .BS 5
|
||||||
SetPixel.X .BS 2
|
*--------------------------------------
|
||||||
SetPixel.Y .BS 2
|
SetPixel.CB .BS 1 hDC
|
||||||
|
SetPixel.OP .BS 1
|
||||||
SetPixel.Mode .BS 1
|
SetPixel.Mode .BS 1
|
||||||
SetPixel.Color .BS 1
|
SetPixel.Color .BS 1
|
||||||
DrawLine.X1 .BS 2
|
SetPixel.X .BS 2
|
||||||
DrawLine.Y1 .BS 2
|
SetPixel.Y .BS 2
|
||||||
DrawLine.X2 .BS 2
|
*--------------------------------------
|
||||||
DrawLine.Y2 .BS 2
|
DrawLine1.CB .BS 1 hDC
|
||||||
DrawLine.Mode .BS 1
|
DrawLine1.OP .DA #0
|
||||||
DrawLine.Color .BS 1
|
DrawLine1.Mode .DA #S.CB.MODE.MONO
|
||||||
|
DrawLine1.Color .DA #1
|
||||||
|
DrawLine1.X1 .DA 200
|
||||||
|
DrawLine1.Y1 .DA 0
|
||||||
|
DrawLine1.X2 .DA 200+191
|
||||||
|
DrawLine1.Y2 .DA 191
|
||||||
|
*--------------------------------------
|
||||||
|
DrawLine2.CB .BS 1 hDC
|
||||||
|
DrawLine2.OP .DA #0
|
||||||
|
DrawLine2.Mode .DA #S.CB.MODE.C16
|
||||||
|
DrawLine2.Color .DA #8
|
||||||
|
DrawLine2.X1 .DA 220
|
||||||
|
DrawLine2.Y1 .DA 0
|
||||||
|
DrawLine2.X2 .DA 220+191
|
||||||
|
DrawLine2.Y2 .DA 191
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SBIN/DESKTOP.S
|
SAVE /A2OSX.SRC/SBIN/DESKTOP.S
|
||||||
ASM
|
ASM
|
||||||
|
Loading…
Reference in New Issue
Block a user