Kernel version 0.9 : Cleanup in DHGR stuff, adding primitives (DrawLine,....etc...)

This commit is contained in:
Rémy GIBERT 2017-06-09 17:36:05 +02:00
parent 77e3328220
commit d0d356419f
8 changed files with 365 additions and 248 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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