Kernel 0.9.1 : GUI, API & Driver

This commit is contained in:
Rémy GIBERT 2017-11-15 17:29:23 +01:00
parent f5da545c4a
commit 60ea43c5e5
11 changed files with 187 additions and 138 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -73,9 +73,9 @@ HLINE.C16 lda CB.Cache+S.CB.X1
and LBUF.AND,x
sta LBUF.ORA,x
inx
cpx LBUF.C2
bcs .1
inx
bcc .1
ldy CB.Cache+S.CB.Y1
jmp LBUF.DrawAtY

View File

@ -21,10 +21,10 @@ FILLRECT jsr HLINE
bcc .8
.2 jsr LBUF.DrawAtY
inc CB.Cache+S.CB.Y1
ldy CB.Cache+S.CB.Y1
inc CB.Cache+S.CB.Y1
cpy CB.Cache+S.CB.Y2
bcs .2
bcc .2
.8 rts
*--------------------------------------

View File

@ -143,28 +143,18 @@ WRITE >STYA ZPCmdPtr
sta SET80STORE
lda (ZPCmdPtr)
lda (ZPCmdPtr) Get Cmd
.1 tax
ldy CB.CmdLen,x
.2 lda (ZPBasePtr),y
.2 lda (ZPCmdPtr),y
sta CB.Cache,y
dey
bpl .2
lda CB.CmdLen,x
clc
adc ZPCmdPtr
sta ZPCmdPtr
bcc .3
inc ZPCmdPtr+1
.3 jsr .10
lda (ZPCmdPtr)
bne .1
sta CLR80STORE
.8 clc
@ -181,18 +171,19 @@ LBUF.SetBounds1YA
jsr DIVMOD7YA A=DIV, X=MOD
sta LBUF.C1
tay
lda Mono.Head,x
sta LBUF.AND,y
rts
*--------------------------------------
LBUF.SetBounds2YA
jsr DIVMOD7YA
cmp LBUF.C1 A=DIV, X=MOD
beq .2
jsr DIVMOD7YA A=DIV, X=MOD
sta LBUF.C2
tay
cmp LBUF.C1
beq .2
lda Mono.Tail,x
sta LBUF.AND,y
@ -204,10 +195,8 @@ LBUF.SetBounds2YA
sta LBUF.AND,y
bra .1
.2 and LBUF.C1
sta LBUF.C2
tay
lda Mono.Tail,x
.2 lda Mono.Head,x
and Mono.Tail,x
sta LBUF.AND,y
.8 rts
*--------------------------------------
@ -218,6 +207,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
lda BASEH,y
sta ZPBasePtr+1
ldy LBUF.C1 y C1->C2
.1 ldx COL.BANK,y
@ -227,11 +217,12 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
and LBUF.AND,y
ora LBUF.ORA,y
lda #$ff
sta (ZPBasePtr),y
iny
cpy LBUF.C2
bcs .1
iny
bcc .1
rts
*--------------------------------------
@ -259,9 +250,9 @@ LBUF.DrawAtY.XOR
* X = MOD
*--------------------------------------
DIVMOD7YA dec
bne DIVMOD7Y2
beq DIVMOD7Y1
bpl DIVMOD7Y2
DIVMOD7Y0 lda DIV7.0,y
ldx MOD7.0,y
rts
@ -285,7 +276,7 @@ DRV.CS.END
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
.DA S.CB.Y1+1 GETPIXEL
.DA S.CB.X2+1 HLINE
.DA S.CB.X2+1 VLINE
.DA S.CB.Y2+1 VLINE
.DA S.CB.Y2+1 FILLRECT
.DA S.CB.DstPtr+1 BITBLT
*--------------------------------------

View File

@ -107,7 +107,7 @@ Dev.Detect >LDYA L.MSG.DETECT
and #$0F
sta DEVSLOT0n
ora #$30
sta DEV.HEADER.NAME+4
sta DEV.HEADER.NAME+3
asl
asl
asl
@ -122,7 +122,7 @@ Dev.Detect >LDYA L.MSG.DETECT
*--------------------------------------
CS.END
MSG.DETECT >CSTR "Apple Mouse Card/IIc Mouse Driver.\r\n"
MSG.DETECT.OK >CSTR "Mouse Installed As Device : %S\r\n"
MSG.DETECT.OK >CSTR "Mouse Installed As Device : %s\r\n"
MSG.DETECT.KO >CSTR "No Mouse Found.\r\n"
DEVSIG.Offset .HS 05070B0CFB
DEVSIG.Value .HS 38180120D6
@ -133,7 +133,7 @@ DEV.HEADER cld
jmp (DRV.CS.START,x)
.DA #0
.BS 6
DEV.HEADER.NAME >PSTR "MOUX"
DEV.HEADER.NAME >CSTR "MOUX"
*--------------------------------------
* Driver Code
*--------------------------------------

View File

@ -6,7 +6,14 @@ AUTO 6
.LIST OFF
.OP 65C02
*--------------------------------------
S.CB.hDC .EQ 0
S.CB.CMD .EQ 0
S.CB.CMD.SETPIXEL .EQ 0
S.CB.CMD.GETPIXEL .EQ 2
S.CB.CMD.HLINE .EQ 4
S.CB.CMD.VLINE .EQ 6
S.CB.CMD.FILLRECT .EQ 8
S.CB.CMD.BITBLT .EQ 10
S.CB.CMD.DRAWLINE .EQ 12
S.CB.OP .EQ 1
S.CB.OP.SAVE .EQ %00000001
S.CB.OP.REPLACE .EQ %00000010
@ -41,6 +48,13 @@ S.DC.H .EQ 10
*
S.DC .EQ 12
*--------------------------------------
CUR.T.ARROW .EQ 0
CUR.T.PLUS .EQ 2
CUR.T.WAIT .EQ 4
CUR.T.RESIZEX .EQ 6
CUR.T.RESIZEY .EQ 8
CUR.T.RESIZEXY .EQ 10
*--------------------------------------
S.CUR.HotPointX .EQ 0
S.CUR.HotPointY .EQ 1
S.CUR.DATA .EQ 2 16x16 bits = 32 bytes
@ -58,13 +72,14 @@ S.BM.H .EQ 4
S.BM.MASK.OFFSET .EQ 6
S.BM.DATA .EQ 8
*--------------------------------------
LIBGFX.InitGFXA .EQ 4
LIBGFX.CloseGFX .EQ 4
LIBGFX.SetCursorPos .EQ 8
LIBGFX.SetCursorYA .EQ 10
LIBGFX.HideCursor .EQ 12
LIBGFX.ShowCursor .EQ 14
LIBGFX.DrawLine .EQ 16
LIBGUI.InitGUI.A .EQ 4
LIBGUI.CloseGUI .EQ 6
LIBGUI.Draw .EQ 8
LIBGUI.SetCursor.A .EQ 10
LIBGUI.SetCursorPos .EQ 12
LIBGUI.HideCursor .EQ 14
LIBGUI.ShowCursor .EQ 16
LIBGUI.DrawLine .EQ 18
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/INC/LIBGUI.I

View File

@ -6,11 +6,11 @@ AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
.TF /A2OSX.BUILD/LIB/LIBGFX.O
.TF /A2OSX.BUILD/LIB/LIBGUI.O
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/LIBGFX.I
.INB /A2OSX.BUILD/INC/LIBGUI.I
*--------------------------------------
.MA SWAP16
lda ]1
@ -32,8 +32,8 @@ AUTO 6
sta ]1+1
.EM
*--------------------------------------
ZPCBPtr .EQ ZPLIB
ZPDCPtr .EQ ZPLIB+2
ZPCmdPtr .EQ ZPLIB+4
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -51,10 +51,11 @@ CS.START cld
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA InitGFXA
.DA CloseGFX
.DA InitCursor
.DA SetCursorYA
.DA InitGUI.A
J.Cmds .DA CloseGUI J.Cmds-12 !!!
.DA Draw
.DA SetCursor.A
.DA SetCursorPos
.DA HideCursor
.DA ShowCursor
.DA DrawLine
@ -65,21 +66,59 @@ LIB.LOAD
LIB.UNLOAD clc
rts
*--------------------------------------
InitGFXA sta hDev
>SYSCALL GetDevByIDA
>STYA GoDevGFX.1+1
InitGUI.A sta hDev
>SYSCALL GetDevByID.A
>STYA GoDev.Jmp+1
clc
rts
*--------------------------------------
CloseGFX
CloseGUI
stz hDev
sec
rts
*--------------------------------------
InitCursor
Draw >PULLW ZPCmdPtr
lda (ZPCmdPtr) Get Cmd
.1 tax
cpx #S.CB.CMD.DRAWLINE
bcc .3 Native DRV Cmd
ldy CB.CmdLen,x
.2 lda (ZPCmdPtr),y Y=Byte count-1 to cache
sta CB.Cache,y
dey
bpl .2
jsr Draw.Jmp
bra .7
.3 >LDYA ZPCmdPtr
jsr GoDev.YA
.7 lda (ZPCmdPtr) Get Cmd
tax
lda CB.CmdLen,x
sec
adc ZPCmdPtr
sta ZPCmdPtr
bcc .8
inc ZPCmdPtr+1
.8 lda (ZPCmdPtr) Get Cmd
bne .1
clc
rts
Draw.Jmp jmp (J.Cmds,x)
*--------------------------------------
SetCursorYA
SetCursor.A
*--------------------------------------
SetCursorPos
*--------------------------------------
HideCursor
*--------------------------------------
@ -98,12 +137,8 @@ ShowCursor
* X2
* Y2
*--------------------------------------
DrawLine ldy #S.CB.Y2+1
jsr GetCB
DrawLine lda CB.Cache+S.CB.X2
sec
lda CB.Cache+S.CB.X2
sbc CB.Cache+S.CB.X1
sta DX
@ -116,8 +151,9 @@ DrawLine ldy #S.CB.Y2+1
ora DX
bne .2 DX > 0...
ldx #DEVMGR.GFX.VLINE
jmp GoDevGFX DX=0 : VLIN Y1,Y2 At X1
lda #S.CB.CMD.VLINE
sta CB.Cache+S.CB.CMD
jmp GoDev 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
@ -147,15 +183,17 @@ DrawLine ldy #S.CB.Y2+1
ora DY
bne .4
ldx #DEVMGR.GFX.HLINE
jmp GoDevGFX DY=0 : HLIN X1,X2 At Y1
lda #S.CB.CMD.HLINE
sta CB.Cache+S.CB.CMD
jmp GoDev DY=0 : HLIN X1,X2 At Y1
.3 >NOT16 DY set DY=-DY
lda #$ff
sta IY set IY=-1
.4 ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
.4 lda #S.CB.CMD.SETPIXEL
sta CB.Cache+S.CB.CMD
jsr GoDev
lda DX
sec
@ -193,8 +231,7 @@ DrawLine.IncXY lda DX DX=DY
adc IY
sta CB.Cache+S.CB.Y1
ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
jsr GoDev
bra .1
.8 rts
@ -277,8 +314,7 @@ DrawLine.IncY lda DY
adc IY
sta CB.Cache+S.CB.Y1
ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
jsr GoDev
bra .1
.8 rts
@ -362,22 +398,14 @@ DrawLine.IncX lda DX
bne .6
inc CB.Cache+S.CB.X1+1
.6 ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
.6 jsr GoDev
bra .1
.8 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
GoDev >LDYA L.CB.Cache
GoDev.YA ldx #DEVMGR.WRITE
GoDev.Jmp jmp $ffff
*--------------------------------------
CS.END
hDev .BS 1
@ -390,6 +418,14 @@ D .BS 2
INE .BS 2
Counter .BS 2
*--------------------------------------
CB.CmdLen .DA S.CB.Y1+1 SETPIXEL
.DA S.CB.Y1+1 GETPIXEL
.DA S.CB.X2+1 HLINE
.DA S.CB.Y2+1 VLINE
.DA S.CB.Y2+1 FILLRECT
.DA S.CB.DstPtr+1 BITBLT
.DA S.CB.Y2+1 DRAWLINE
*--------------------------------------
CB.Cache .BS S.CB
*--------------------------------------
CUR.Arrow .DA #0

View File

@ -22,9 +22,10 @@ CS.START cld
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START
.DA 0
.DA 0
.DA CS.END-CS.START CS
.DA DS.END-DS.START DS
.DA #16 SS
.DA #2 ZP
.DA 0
*--------------------------------------
* Relocation Table
@ -33,30 +34,26 @@ CS.START cld
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBGFX .DA LIBGFX
L.LIBGUI .DA LIBGUI
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.MSG.INIT .DA MSG.INIT
L.MouseClamp .DA MouseClamp
L.MouseData .DA MouseData
L.Rect.CB .DA Rect.CB
L.SetPixel.CB .DA SetPixel.CB
L.DrawLine1.CB .DA DrawLine1.CB
L.DrawLine2.CB .DA DrawLine2.CB
L.DrawLine3.CB .DA DrawLine3.CB
L.DrawLine4.CB .DA DrawLine4.CB
L.DrawLine5.CB .DA DrawLine5.CB
L.DrawLine6.CB .DA DrawLine6.CB
L.DrawLines.CB .DA DrawLines.CB
.DA 0
*--------------------------------------
CS.INIT >LDYA L.MSG.INIT
>SYSCALL PrintF.YA
>LDYA L.LIBGFX
>SYSCALL LoadLibYA
sta hLIBGFX
>LDYA L.LIBGUI
>SYSCALL LoadLib.YA
sta hLIBGUI
>LDYA L.DEVNAME.GFX
>SYSCALL GetDevByNameYA
>SYSCALL GetDevByName.YA
bcc .10
rts
@ -69,7 +66,7 @@ CS.INIT >LDYA L.MSG.INIT
jsr GoDevGFX
.11 >LDYA L.DEVNAME.MOUSE
>SYSCALL GetDevByNameYA
>SYSCALL GetDevByName.YA
bcc .20
inc DEVNAME.MOUSE+4
@ -111,7 +108,7 @@ CS.INIT >LDYA L.MSG.INIT
jsr GoDevMouse
.21 lda hDevGFX
>LIBCALL hLibGFX,LIBGFX.InitGFXA
>LIBCALL hLIBGUI,LIBGUI.InitGUI.A
lda (pPs)
ora #S.PS.F.EVENT Now accept events
@ -158,9 +155,8 @@ CS.RUN lda A2osX.ASCREEN GUI screen active ?
lda #1
sta SetPixel.Color
>LDYA L.SetPixel.CB
ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
>PUSHW L.SetPixel.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
clc
rts
@ -181,7 +177,10 @@ CS.DOEVENT sec
CS.QUIT clc
rts
*--------------------------------------
Destop.Paint lda #S.CB.MODE.C16
Destop.Paint >PUSHW L.Rect.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
lda #S.CB.MODE.C16
sta SetPixel.Mode
lda #0
@ -195,10 +194,8 @@ Destop.Paint lda #S.CB.MODE.C16
lda /28
sta SetPixel.X+1
.2 >LDYA L.SetPixel.CB
ldx #DEVMGR.GFX.SETPIXEL
jsr GoDevGFX
.2 >PUSHW L.SetPixel.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
lda SetPixel.X
clc
@ -225,19 +222,10 @@ Destop.Paint lda #S.CB.MODE.C16
cmp #16
bne .1
.4
>PUSHW L.DrawLine1.CB
>LIBCALL hLibGFX,LIBGFX.DrawLine
>PUSHW L.DrawLine2.CB
>LIBCALL hLibGFX,LIBGFX.DrawLine
>PUSHW L.DrawLine3.CB
>LIBCALL hLibGFX,LIBGFX.DrawLine
>PUSHW L.DrawLine4.CB
>LIBCALL hLibGFX,LIBGFX.DrawLine
>PUSHW L.DrawLine5.CB
>LIBCALL hLibGFX,LIBGFX.DrawLine
>PUSHW L.DrawLine6.CB
>LIBCALL hLibGFX,LIBGFX.DrawLine
.4
>PUSHW L.DrawLines.CB
>LIBCALL hLIBGUI,LIBGUI.Draw
rts
*--------------------------------------
@ -247,34 +235,45 @@ GoDevGFX jmp $ffff
GoDevMouse jmp $ffff
*--------------------------------------
CS.END
DEVNAME.GFX >PSTR "GFX"
DEVNAME.MOUSE >PSTR "MOU1"
LIBGFX >PSTR "libgui.o"
DEVNAME.GFX >CSTR "GFX"
DEVNAME.MOUSE >CSTR "MOU1"
LIBGUI >CSTR "libgui.o"
MSG.INIT >CSTR "DESKTOP:Init...\r\n"
hLibGFX .BS 1
hLIBGUI .BS 1
hDevGFX .BS 1
hDevMouse .BS 1
MouseClamp .BS 8
MouseData .BS 5
*--------------------------------------
SetPixel.CB .BS 1 hDC
Rect.CB .DA #S.CB.CMD.FILLRECT
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.C16
.DA #13
.DA 30
.DA 30
.DA 530
.DA 160
.DA #0
*--------------------------------------
SetPixel.CB .DA #S.CB.CMD.SETPIXEL
SetPixel.OP .BS 1
SetPixel.Mode .BS 1
SetPixel.Color .BS 1
SetPixel.X .BS 2
SetPixel.Y .BS 2
*--------------------------------------
DrawLine1.CB .BS 1 hDC
.DA #0
*--------------------------------------
DrawLines.CB .DA #S.CB.CMD.DRAWLINE
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.C16
.DA #1
.DA 80
.DA 191
.DA 80+191
.DA 0
.DA 191+191
*--------------------------------------
DrawLine2.CB .BS 1 hDC
.DA #0
.DA #S.CB.CMD.DRAWLINE
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.MONO
.DA #1
.DA 90
@ -282,8 +281,8 @@ DrawLine2.CB .BS 1 hDC
.DA 140
.DA 191
*--------------------------------------
DrawLine3.CB .BS 1 hDC
.DA #0
.DA #S.CB.CMD.DRAWLINE
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.MONO
.DA #1
.DA 100
@ -291,8 +290,8 @@ DrawLine3.CB .BS 1 hDC
.DA 100+191
.DA 191
*--------------------------------------
DrawLine4.CB .BS 1 hDC
.DA #0
.DA #S.CB.CMD.DRAWLINE
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.MONO
.DA #1
.DA 110
@ -300,8 +299,8 @@ DrawLine4.CB .BS 1 hDC
.DA 559
.DA 191
*--------------------------------------
DrawLine5.CB .BS 1 hDC
.DA #0
.DA #S.CB.CMD.DRAWLINE
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.MONO
.DA #1
.DA 28
@ -309,14 +308,22 @@ DrawLine5.CB .BS 1 hDC
.DA 28
.DA 191
*--------------------------------------
DrawLine6.CB .BS 1 hDC
.DA #0
.DA #S.CB.CMD.DRAWLINE
.DA #S.CB.OP.ORA
.DA #S.CB.MODE.MONO
.DA #1
.DA 84
.DA 0
.DA 84
.DA 191
*--------------------------------------
.DA #0
*--------------------------------------
.DUMMY
.OR 0
DS.START
DS.END
.ED
MAN
SAVE /A2OSX.SRC/SBIN/GUI.S
ASM