A2osX/LIB/LIBGUI.S.txt

460 lines
9.0 KiB
Plaintext
Raw Normal View History

NEW
2019-07-30 08:57:25 +00:00
AUTO 3,1
2020-09-04 15:21:15 +00:00
.LIST OFF
.OP 65C02
.OR $2000
2019-12-03 15:42:17 +00:00
.TF lib/libgui
*--------------------------------------
2020-06-30 15:32:23 +00:00
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/gfx.i
.INB inc/libgui.i
2018-05-16 06:02:57 +00:00
*--------------------------------------
WND.MAX .EQ 64
*--------------------------------------
.MA SWAP16
lda ]1
ldx ]2
stx ]1
sta ]2
lda ]1+1
ldx ]2+1
stx ]1+1
sta ]2+1
.EM
2020-09-04 15:21:15 +00:00
.MA NOT16
sec
lda #0
sbc ]1
sta ]1
lda #0
sbc ]1+1
sta ]1+1
.EM
2020-09-04 15:21:15 +00:00
.MA SCMPAX
sec
sbc ]1
txa
sbc ]1+1
bvc :1
eor #$80
2020-09-04 15:21:15 +00:00
:1 .EQ *
.EM
.MA SCMPYA
cpy ]1
sbc ]1+1
bvc :1
eor #$80
:1 .EQ *
.EM
.MA STYAIFGTR
tax
>SCMPYA ]1
bmi :1
sty ]1
stx ]1+1
:1 .EQ *
.EM
.MA STYAIFLWR
tax
>SCMPYA ]1
bpl :1
sty ]1
stx ]1+1
:1 .EQ *
2019-10-03 06:25:27 +00:00
.EM
*--------------------------------------
2020-09-05 13:38:04 +00:00
.DUMMY
.OR ZPLIB
ZPCBPtr .BS 2
2020-09-15 14:48:35 +00:00
ZPObjPtr .BS 2
2020-09-05 13:38:04 +00:00
ZPWNDPtr .BS 2
2020-09-15 14:48:35 +00:00
ZPMENUPtr .BS 2
2019-01-10 16:26:58 +00:00
2020-09-08 15:31:41 +00:00
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
2020-09-05 13:38:04 +00:00
DX .BS 2
DY .BS 2
IY .BS 1
IE .BS 2
D .BS 2
INE .BS 2
Counter .BS 2
2018-05-16 06:02:57 +00:00
2020-09-08 15:31:41 +00:00
hCBBuf .BS 1
ZPCBBufPtr .BS 2
2020-09-15 14:48:35 +00:00
ZPPtr1 .BS 2
2020-09-05 13:38:04 +00:00
.ED
2016-06-15 06:21:42 +00:00
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA 0
.DA CS.END-CS.START
.DA 0
.DA 0
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
2019-01-08 16:29:26 +00:00
.DA SetCursor
2017-11-15 16:29:23 +00:00
.DA SetCursorPos
2016-06-15 15:58:45 +00:00
.DA HideCursor
.DA ShowCursor
2017-12-04 07:18:24 +00:00
.DA UpdateCursor
2019-01-09 16:42:20 +00:00
.DA MOU.ReadMouse
2020-10-02 14:57:05 +00:00
.DA DrawLine
2020-10-01 15:30:25 +00:00
.DA WND.New
.DA WND.Destroy
2020-09-08 15:31:41 +00:00
.DA WND.SetProp
.DA WND.GetProp
.DA WND.Show
2020-10-01 15:30:25 +00:00
.DA WND.Paint
L.WND.fPaint .DA WND.fPaint
2019-01-09 16:42:20 +00:00
*--------------------------------------
2020-09-29 15:37:26 +00:00
J.MBAR .DA MBAR.New
.DA MBAR.Paint
.DA MBAR.Close
2020-09-07 20:40:50 +00:00
*--------------------------------------
J.MENU .DA MENU.New
.DA MENU.Paint
.DA MENU.Close
*--------------------------------------
2020-09-29 15:37:26 +00:00
J.MENUITEM .DA MITEM.New
.DA MITEM.Paint
.DA MITEM.Close
2020-09-07 20:40:50 +00:00
*--------------------------------------
J.BUT .DA BUT.New
.DA BUT.Paint
.DA BUT.Close
*--------------------------------------
J.TEXT .DA TEXT.New
.DA TEXT.Paint
.DA TEXT.Close
*--------------------------------------
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
2018-05-16 06:02:57 +00:00
L.SYSX7 .DA SYSX7
L.SYSX7B .DA SYSX7B
2019-01-09 16:42:20 +00:00
L.IOCTL .DA IOCTL
2019-01-08 16:29:26 +00:00
L.DCB.GFX .DA DCB.GFX
L.MouseClamp .DA MouseClamp
2020-10-02 14:57:05 +00:00
L.CB.Buf .DA CB.Buf
L.CB.Cache .DA CB.Cache
2020-09-06 12:24:04 +00:00
L.WND.Screen .DA WND.Screen
2019-01-10 16:26:58 +00:00
L.WND.Desktop .DA WND.Desktop
L.WND.SysBar .DA WND.SysBar
*--------------------------------------
L.BM.Apple .DA BM.Apple
2020-09-14 14:31:41 +00:00
L.BM.Close .DA BM.Close
L.BM.Max .DA BM.Max
L.BM.Min .DA BM.Min
2019-01-09 16:42:20 +00:00
*--------------------------------------
L.CUR.CB .DA CUR.CB
L.CUR.SaveBuf .DA CUR.SaveBuf
L.Cursors .DA CUR.Arrow
2017-12-04 07:18:24 +00:00
.DA CUR.ResizeX
.DA CUR.ResizeY
2017-12-05 07:09:16 +00:00
.DA CUR.ResizeXY1
.DA CUR.ResizeXY2
2017-12-04 07:18:24 +00:00
.DA CUR.Cross
.DA CUR.Text
.DA CUR.Wait1
.DA CUR.Wait2
.DA CUR.Wait3
.DA CUR.Wait4
.DA CUR.Wait5
.DA CUR.Wait6
J.Clip .DA CLIP.Point SETPIXEL
.DA CLIP.Point GETPIXEL
2020-09-30 15:32:54 +00:00
.DA CLIP.HLine HLINE
.DA CLIP.VLine VLINE
.DA CLIP.Rect FILLRECT
2020-09-30 15:32:54 +00:00
.DA CLIP.BitBlt BITBLT
.DA CLIP.Rect GETRECTBUFSIZE
2020-09-30 15:32:54 +00:00
.DA CLIP.Text DRAWTEXT
.DA CLIP.Text GETTEXTSIZE
.DA CLIP.Line DRAWLINE
.DA CLIP.BitBlt DRAWTEXT2
.DA 0
*--------------------------------------
2018-05-16 06:02:57 +00:00
LIB.LOAD lda LibCount
bne .8
2019-01-08 16:29:26 +00:00
2018-05-16 06:02:57 +00:00
jsr MOU.Init
2020-09-02 15:47:23 +00:00
* bcs .9
2019-01-09 06:58:19 +00:00
jsr WND.Init
bcs .9
2020-09-02 15:47:23 +00:00
jsr FON.Init
bcs .9
2019-01-09 06:58:19 +00:00
lda hDevMouse
2020-09-02 15:47:23 +00:00
beq .1
2019-01-09 06:58:19 +00:00
jsr MOU.Setup
2020-09-02 15:47:23 +00:00
.1 jsr WND.Setup
2020-09-03 15:19:25 +00:00
lda #CUR.T.ARROW
jsr SetCursor
jsr ShowCursor
2020-09-02 15:47:23 +00:00
inc LibCount
.8 clc
2019-01-08 16:29:26 +00:00
.9 rts
2018-05-16 06:02:57 +00:00
*--------------------------------------
LIB.UNLOAD dec LibCount
bne .8
2020-09-02 15:47:23 +00:00
2018-05-16 06:02:57 +00:00
jsr MOU.Quit
2020-09-02 15:47:23 +00:00
2018-05-16 06:02:57 +00:00
.8 clc
2016-06-15 06:21:42 +00:00
rts
*--------------------------------------
2020-10-02 14:57:05 +00:00
OBJ.GetInCache >STYA .1+1
2017-12-04 16:42:08 +00:00
2019-01-10 16:26:58 +00:00
ldx #S.OBJ-1
2020-09-02 15:47:23 +00:00
2017-12-04 16:42:08 +00:00
.1 lda $ffff,x SELF MODIFIED
2019-01-10 16:26:58 +00:00
sta OBJ.Cache,x
2017-12-04 16:42:08 +00:00
dex
bpl .1
2020-09-02 15:47:23 +00:00
2017-12-04 16:42:08 +00:00
rts
*--------------------------------------
2019-01-10 16:26:58 +00:00
OBJ.SetX2Y2 >STYA ZPObjPtr
ldy #S.OBJ.W
lda (ZPObjPtr),y
clc
sbc #0
pha
iny
lda (ZPObjPtr),y
sbc #0
tax
pla
clc
ldy #S.OBJ.X1
adc (ZPObjPtr),y
pha
txa
iny
adc (ZPObjPtr),y
ldy #S.OBJ.X2+1
sta (ZPObjPtr),y
dey
pla
sta (ZPObjPtr),y
ldy #S.OBJ.H
lda (ZPObjPtr),y
clc
sbc #0
pha
iny
lda (ZPObjPtr),y
sbc #0
tax
pla
clc
ldy #S.OBJ.Y1
adc (ZPObjPtr),y
pha
txa
iny
adc (ZPObjPtr),y
ldy #S.OBJ.Y2+1
sta (ZPObjPtr),y
dey
pla
sta (ZPObjPtr),y
rts
*--------------------------------------
2020-10-02 14:57:05 +00:00
CB.ClearCache ldx #S.CB-1
2020-09-13 19:05:38 +00:00
.1 stz CB.Cache,x
dex
bpl .1
rts
*--------------------------------------
2020-10-02 14:57:05 +00:00
CB.GetInCache >STYA .1+1
2017-12-04 16:42:08 +00:00
ldx #S.CB-1
2020-09-03 15:19:25 +00:00
2017-12-04 16:42:08 +00:00
.1 lda $ffff,x SELF MODIFIED
sta CB.Cache,x
dex
bpl .1
2020-09-04 15:21:15 +00:00
2017-12-04 07:18:24 +00:00
rts
*--------------------------------------
2020-09-30 15:32:54 +00:00
GetCBBuf >LDYAI 512
2020-09-08 15:31:41 +00:00
>SYSCALL GetMem
bcs .9
stx hCBBuf
>STYA ZPCBPtr
>STYA ZPCBBufPtr
2020-09-30 15:32:54 +00:00
2020-09-08 15:31:41 +00:00
.9 rts
*--------------------------------------
2020-09-15 14:48:35 +00:00
PutCBCache2CBBuf
lda CB.Cache
lsr
tax
ldy CB.CmdLen-1,x
ldx #0
.1 lda CB.Cache,x
jsr PutA2CBBuf
inx
dey
bpl .1
rts
*--------------------------------------
PutAX2CBBuf jsr PutA2CBBuf
2020-09-13 19:05:38 +00:00
txa
2020-09-15 14:48:35 +00:00
PutA2CBBuf sta (ZPCBBufPtr)
2020-09-08 15:31:41 +00:00
inc ZPCBBufPtr
bne .8
inc ZPCBBufPtr+1
.8 rts
*--------------------------------------
2019-01-10 16:26:58 +00:00
GFXWrite.CB >LDYA L.CB.Cache
2019-01-09 06:58:19 +00:00
2020-09-02 15:47:23 +00:00
GFXWrite.YA pha
2020-09-06 12:24:04 +00:00
>PUSHB WND.Screen+S.OBJ.hPARENT
2019-01-09 06:58:19 +00:00
>PUSHBI IOCTL.WRITE
2020-09-02 15:47:23 +00:00
pla
>PUSHYA
2019-05-05 17:15:37 +00:00
>SYSCALL2 IOCTL
2019-01-09 06:58:19 +00:00
rts
*--------------------------------------
2020-06-30 15:32:23 +00:00
.INB usr/src/lib/libgui.s.bm
.INB usr/src/lib/libgui.s.but
.INB usr/src/lib/libgui.s.clip
.INB usr/src/lib/libgui.s.cur
.INB usr/src/lib/libgui.s.draw
.INB usr/src/lib/libgui.s.fon
.INB usr/src/lib/libgui.s.menu
.INB usr/src/lib/libgui.s.mou
.INB usr/src/lib/libgui.s.pat
2020-09-07 20:40:50 +00:00
.INB usr/src/lib/libgui.s.text
2020-06-30 15:32:23 +00:00
.INB usr/src/lib/libgui.s.wnd
*--------------------------------------
CS.END
*--------------------------------------
2020-06-30 15:32:23 +00:00
.INB usr/src/lib/libgui.g.bm
.INB usr/src/lib/libgui.g.cur
.INB usr/src/lib/libgui.g.fon
.INB usr/src/lib/libgui.g.wnd
*--------------------------------------
2020-06-30 15:32:23 +00:00
DEVNAME.GFX .AZ "/dev/gfx"
DEVNAME.MOUSE .AZ "/dev/mou1"
*--------------------------------------
2020-09-05 13:38:04 +00:00
SYSX7 .AZ "${ROOT}sbin/sysx7"
SYSX7B .AZ "${ROOT}sbin/sysx7b"
2018-05-16 06:02:57 +00:00
*--------------------------------------
LibCount .BS 1
hDevMouse .BS 1
2016-06-15 06:21:42 +00:00
*--------------------------------------
2020-09-03 15:19:25 +00:00
CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL
.DA #S.CB.Y1+1 GETPIXEL
2020-09-08 15:31:41 +00:00
.DA #S.CB.Y2+1 HLINE
2020-09-03 15:19:25 +00:00
.DA #S.CB.Y2+1 VLINE
.DA #S.CB.Y2+1 FILLRECT
.DA #S.CB.DstPtr+1 BITBLT
.DA #S.CB.DstPtr+1 GETRECTBUFSIZE
.DA #S.CB.TxtPtr+1 DRAWTEXT
.DA #S.CB.TxtPtr+1 GETTEXTSIZE
.DA #S.CB.Y2+1 DRAWLINE
.DA #S.CB.TxtPtr+1 DRAWTEXT2
2017-11-15 16:29:23 +00:00
*--------------------------------------
PAT.Buf .BS 1 S.BM.F
.DA #1 S.BM.RowBytes
.DA 8 S.BM.W
.DA 8 S.BM.H
.DA 0 S.BM.MASK.OFS
.BS 8 (data)
*--------------------------------------
2019-01-09 16:42:20 +00:00
IOCTL .BS S.IOCTL
2019-01-08 16:29:26 +00:00
DCB.GFX .BS S.DCB.GFX
2020-09-02 15:47:23 +00:00
MOUSEDATA .BS S.MOUSE
2019-01-09 16:42:20 +00:00
*--------------------------------------
2019-01-10 16:26:58 +00:00
MouseClamp .BS 8
*--------------------------------------
2020-10-02 14:57:05 +00:00
CB.Buf .BS S.CB
2019-01-10 07:00:45 +00:00
CB.Cache .BS S.CB
2019-01-10 16:26:58 +00:00
OBJ.Cache .BS S.OBJ
2019-01-10 07:00:45 +00:00
*--------------------------------------
2020-09-07 20:40:50 +00:00
WND.Screen .DA #S.OBJ.T.WND
2020-09-06 12:24:04 +00:00
.BS S.WND-1
2020-09-03 15:19:25 +00:00
*--------------------------------------
2020-09-06 12:24:04 +00:00
WND.Screen.Childs
.BS 2 WND.Desktop
2019-01-10 16:26:58 +00:00
.BS 2 WND.SysBar
.DA 0
*--------------------------------------
WND.Desktop .DA #S.OBJ.T.WND
.BS S.WND-1
*--------------------------------------
WND.SysBar .DA #S.OBJ.T.WND
.BS S.WND-1
WND.SysBar.Childs
.BS 2 BUT.Sys
.DA 0
2019-01-09 16:42:20 +00:00
*--------------------------------------
2019-01-10 07:00:45 +00:00
BUT.Sys .DA #S.OBJ.T.BUT
.DA #0 F
.DA #0 S
2020-09-08 15:31:41 +00:00
.DA #2 ID
2019-01-10 07:00:45 +00:00
.DA 0 hOWNER
.DA 0 pPARENT
2020-09-08 15:31:41 +00:00
.BS S.OBJ-S.OBJ.X1
.BS 2 S.BUT.hBM
.AZ "A2osX" S.BUT.TEXT
*--------------------------------------
MENU.Sys .DA #2 ID
.DA #0 KEYMOD
.DA #0 KEY
.AZ "About..."
.DA #0
*--------------------------------------
2020-09-14 14:31:41 +00:00
PREFS.BESTVIEWEDX .DA #$FC
2020-09-30 15:32:54 +00:00
PREFS.MBARXMARGIN .DA #5
2020-09-15 14:48:35 +00:00
PREFS.BORDERCOLOR .DA #C.BLACK
2020-09-29 15:37:26 +00:00
PREFS.TBARCOLORA .DA #C16.D.BLUE
PREFS.TBARCOLORI .DA #C16.L.BLUE
PREFS.MBARCOLOR .DA #C.WHITE
PREFS.SBARCOLOR .DA #C.WHITE
*--------------------------------------
MAN
2020-06-30 15:32:23 +00:00
SAVE usr/src/lib/libgui.s
ASM