A2osX/LIB/LIBGUI.S.txt

517 lines
11 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/io.i
.INB inc/mli.i
2020-06-30 15:32:23 +00:00
.INB inc/gfx.i
.INB inc/xy.i
2020-06-30 15:32:23 +00:00
.INB inc/libgui.i
2018-05-16 06:02:57 +00:00
*--------------------------------------
WND.MAX .EQ 64
2020-10-13 15:54:55 +00:00
MENU.MAX .EQ 4
2020-10-16 15:25:29 +00:00
MENU.LMargin .EQ 7
MENU.RMargin .EQ 8
*--------------------------------------
.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
2020-10-15 15:19:13 +00:00
2020-10-12 06:04:19 +00:00
ZPBMPtr .BS 2
2020-10-15 15:19:13 +00:00
ZPRECTPtr .BS 2
ZPPtr1 .BS 2
2019-01-10 16:26:58 +00:00
2020-09-05 13:38:04 +00:00
DX .BS 2
DY .BS 2
IE .BS 2
INE .BS 2
2020-10-20 06:01:04 +00:00
D .BS 2
2020-09-05 13:38:04 +00:00
Counter .BS 2
2018-05-16 06:02:57 +00:00
2020-10-20 06:01:04 +00:00
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
IY .BS 1
2020-09-08 15:31:41 +00:00
hCBBuf .BS 1
ZPCBBufPtr .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
.DA PTR.Set
.DA PTR.SetPos
.DA PTR.Hide
.DA PTR.Show
.DA PTR.Update
2019-01-09 16:42:20 +00:00
.DA MOU.ReadMouse
.DA DRAW.Line
2020-10-26 06:38:50 +00:00
.DA OBJ.SetProp
.DA OBJ.GetProp
2020-10-01 15:30:25 +00:00
.DA WND.New
.DA WND.Destroy
2020-09-08 15:31:41 +00:00
.DA WND.Show
2020-10-01 15:30:25 +00:00
.DA WND.Paint
.DA WND.SetMBar
2022-10-11 06:20:24 +00:00
.DA MSG.Get
.DA MBAR.New
*--------------------------------------
2020-10-01 15:30:25 +00:00
L.WND.fPaint .DA WND.fPaint
2019-01-09 16:42:20 +00:00
*--------------------------------------
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
L.XY .DA XY
L.MSG .DA MSG
2020-10-06 06:27:35 +00:00
L.CB.PTR .DA CB.PTR
L.CB.Cache .DA CB.Cache
2020-10-06 06:27:35 +00:00
L.OBJ.Cache .DA OBJ.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
2020-10-08 15:33:38 +00:00
L.WND.SysBar.2osX .DA WND.SysBar.2osX
2020-10-20 06:01:04 +00:00
L.WND.SysBar.Clk .DA WND.SysBar.Clk
2020-10-15 06:16:45 +00:00
L.RECT.SysBut .DA RECT.SysBut
L.RECT.SysWNDs .DA RECT.SysWNDs
L.RECT.SysClk .DA RECT.SysClk
2020-10-08 15:33:38 +00:00
L.MENU.Sys .DA MENU.Sys
2020-10-23 15:23:19 +00:00
L.MENU.Sys.Programs .DA MENU.Sys.Programs
2020-10-20 06:01:04 +00:00
L.MENU.Sys.Settings .DA MENU.Sys.Settings
L.TEXTBUF .DA TEXTBUF
2019-01-10 16:26:58 +00:00
*--------------------------------------
2020-10-12 06:04:19 +00:00
L.BMs .EQ *-2
2019-01-10 16:26:58 +00:00
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
2020-10-16 15:25:29 +00:00
L.BM.Left .DA BM.Left
L.BM.Right .DA BM.Right
L.BM.Up .DA BM.Up
L.BM.Down .DA BM.Down
2019-01-09 16:42:20 +00:00
*--------------------------------------
L.PTR.SaveBuf .DA PTR.SaveBuf
L.Cursors .DA PTR.Arrow
.DA PTR.Move
.DA PTR.ResizeX
.DA PTR.ResizeY
.DA PTR.ResizeXY1
.DA PTR.ResizeXY2
.DA PTR.Cross
.DA PTR.Text
.DA PTR.Wait1
.DA PTR.Wait2
.DA PTR.Wait3
.DA PTR.Wait4
.DA PTR.Wait5
.DA PTR.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
lda #PTR.T.ARROW
jsr PTR.Set
jsr PTR.Show
2020-09-03 15:19:25 +00:00
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-26 06:38:50 +00:00
CB.InitCacheA sta CB.Cache+S.CB.CMD
2020-10-20 06:01:04 +00:00
*--------------------------------------
CB.ClearCache ldx #S.CB-1
2020-09-13 19:05:38 +00:00
.1 stz CB.Cache,x
dex
2020-10-20 06:01:04 +00:00
bne .1
2020-09-13 19:05:38 +00:00
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
*--------------------------------------
CB.GetBuf clc
2020-10-26 06:38:50 +00:00
ldx hCBBuf
bne .9
>LDYAI 512
2021-02-22 17:17:37 +00:00
>SYSCALL2 GetMem
2020-09-08 15:31:41 +00:00
bcs .9
2020-09-08 15:31:41 +00:00
stx hCBBuf
>STYA ZPCBPtr
>STYA ZPCBBufPtr
2020-09-30 15:32:54 +00:00
2020-09-08 15:31:41 +00:00
.9 rts
*--------------------------------------
CB.Cache2CBBuf
2020-09-15 14:48:35 +00:00
lda CB.Cache
lsr
tax
ldy CB.CmdLen-1,x
2020-09-15 14:48:35 +00:00
ldx #0
.1 lda CB.Cache,x
2020-10-26 06:38:50 +00:00
sta (ZPCBBufPtr)
inc ZPCBBufPtr
bne .2
inc ZPCBBufPtr+1
.2 inx
2020-09-15 14:48:35 +00:00
dey
bpl .1
rts
*--------------------------------------
CB.GFXWrite >PUSHB WND.Screen+S.OBJ.hPARENT
2019-01-09 06:58:19 +00:00
>PUSHBI IOCTL.WRITE
2020-10-06 15:23:40 +00:00
>PUSHW L.CB.Cache
2019-05-05 17:15:37 +00:00
>SYSCALL2 IOCTL
2019-01-09 06:58:19 +00:00
rts
*--------------------------------------
SkipAPtr1 clc
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
2020-10-06 06:27:35 +00:00
*--------------------------------------
SkipStrZPtr1 ldy #$ff
2020-10-06 06:27:35 +00:00
.1 iny
2020-10-06 06:27:35 +00:00
lda (ZPPtr1),y
bne .1
tya
sec \0
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
2020-10-06 06:27:35 +00:00
*--------------------------------------
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
2020-10-23 15:23:19 +00:00
.INB usr/src/lib/libgui.s.mbar
2020-06-30 15:32:23 +00:00
.INB usr/src/lib/libgui.s.menu
.INB usr/src/lib/libgui.s.mou
2022-10-11 06:20:24 +00:00
.INB usr/src/lib/libgui.s.msg
2020-10-26 06:38:50 +00:00
.INB usr/src/lib/libgui.s.obj
2020-06-30 15:32:23 +00:00
.INB usr/src/lib/libgui.s.pat
.INB usr/src/lib/libgui.s.ptr
2020-10-06 15:23:40 +00:00
.INB usr/src/lib/libgui.s.sysbar
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.ptr
*--------------------------------------
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
*--------------------------------------
OBJ.SizeOf .DA S.WND
*--------------------------------------
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
2019-01-09 16:42:20 +00:00
*--------------------------------------
2019-01-10 16:26:58 +00:00
MouseClamp .BS 8
XY .BS S.XY
MSG .BS S.MSG
2019-01-10 16:26:58 +00:00
*--------------------------------------
2020-10-06 06:27:35 +00:00
CB.PTR .DA #S.CB.CMD.BITBLT
.BS 1 S.CB.OP
.DA #S.CB.M.MONO
.DA #0
.BS S.CB-4
*--------------------------------------
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
*--------------------------------------
MENU.Stack.Cnt .BS 1
2020-10-13 15:54:55 +00:00
MENU.Stack .BS MENU.MAX
*--------------------------------------
2020-10-26 06:38:50 +00:00
WND.hWND .BS 1
2020-10-23 15:23:19 +00:00
WND.Stack.Idx .BS 1
2020-10-06 06:27:35 +00:00
WND.Stack.Top .BS 1
WND.Stack .BS WND.MAX
*--------------------------------------
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
*--------------------------------------
2019-01-10 16:26:58 +00:00
WND.Desktop .DA #S.OBJ.T.WND
.BS S.WND-1
*--------------------------------------
WND.SysBar .DA #S.OBJ.T.WND
.BS S.WND-1
2020-10-08 15:33:38 +00:00
WND.SysBar.2osX .AZ "2osX"
2020-10-20 06:01:04 +00:00
WND.SysBar.Clk .AZ "00:00"
WND.SysBar.bSysBut .BS 1
2019-01-09 16:42:20 +00:00
*--------------------------------------
2020-10-15 06:16:45 +00:00
RECT.SysBut .BS S.RECT
*--------------------------------------
RECT.SysWNDs .BS S.RECT
*--------------------------------------
RECT.SysClk .BS S.RECT
*--------------------------------------
2020-10-20 06:01:04 +00:00
hSysMenu .BS 1
*--------------------------------------
MENU.Sys .DA #S.MITEM.T.ITEM
2020-10-08 15:33:38 +00:00
.DA #2 ID
.DA #KEYMOD.CTRL+KEYMOD.OA+KEYMOD.CA,#'A'
2020-10-12 06:04:19 +00:00
.DA BM.ID.APPLE pICON
2020-09-08 15:31:41 +00:00
.AZ "About..."
.DA #S.MITEM.T.SEP
.DA #S.MITEM.T.SUBMENU
.DA MENU.Sys.Programs
2020-10-12 06:04:19 +00:00
.DA 0 pICON
.AZ "Programs"
.DA #S.MITEM.T.SUBMENU
.DA MENU.Sys.Settings
2020-10-08 15:33:38 +00:00
.DA 0 pICON
.AZ "Settings"
.DA #S.MITEM.T.SEP
.DA #S.MITEM.T.ITEM
2020-10-12 06:04:19 +00:00
.DA #8 ID
.DA #0,#0
2020-10-12 06:04:19 +00:00
.DA 0 pICON
.AZ "Search..."
.DA #S.MITEM.T.ITEM
2020-10-12 06:04:19 +00:00
.DA #10 ID
.DA #KEYMOD.CTRL+KEYMOD.OA,#'R'
2020-10-12 06:04:19 +00:00
.DA 0 pICON
.AZ "Run..."
.DA #0
2020-09-08 15:31:41 +00:00
*--------------------------------------
2020-10-23 15:23:19 +00:00
MENU.Sys.Programs
.DA #S.MITEM.T.ITEM
2020-10-23 15:23:19 +00:00
.DA #42 ID
.DA #0,#0
2020-10-23 15:23:19 +00:00
.DA BM.ID.APPLE pICON
.AZ "Test ASM"
2020-10-23 15:23:19 +00:00
.DA #S.MITEM.t.ITEM
2020-10-23 15:23:19 +00:00
.DA #44 ID
.DA #0,#0
2020-10-23 15:23:19 +00:00
.DA BM.ID.APPLE pICON
.AZ "Test C"
2020-10-23 15:23:19 +00:00
.DA #0
2020-10-23 15:23:19 +00:00
*--------------------------------------
2020-10-20 06:01:04 +00:00
MENU.Sys.Settings
.DA #S.MITEM.T.ITEM
2020-10-20 06:01:04 +00:00
.DA #62 ID
.DA #0,#0
2020-10-20 06:01:04 +00:00
.DA 0 pICON
.AZ "Colors..."
2020-10-20 06:01:04 +00:00
.DA #S.MITEM.T.ITEM
2020-10-20 06:01:04 +00:00
.DA #64 ID
.DA #0,#0
2020-10-20 06:01:04 +00:00
.DA 0 pICON
.AZ "SubItem2..."
2020-10-20 06:01:04 +00:00
.DA #0
*--------------------------------------
KEYMOD.S.CTRL .EQ 0
KEYMOD.S .AZ "Ctrl-"
KEYMOD.S.OA .EQ *-KEYMOD.S
.DA #01,#'-',#0
KEYMOD.S.CA .EQ *-KEYMOD.S
.DA #02,#'-',#0
*--------------------------------------
TEXTBUF .BS 16 for composing HotKey strings
2020-10-20 06:01:04 +00:00
*--------------------------------------
2020-09-14 14:31:41 +00:00
PREFS.BESTVIEWEDX .DA #$FC
2020-10-20 06:01:04 +00:00
PREFS.bSYSBARTOP .DA #0
PREFS.MBARXMARGIN .DA #5
2020-10-12 06:04:19 +00:00
PREFS.MENUCOLOR .DA #C.WHITE
2020-10-06 06:27:35 +00:00
PREFS.SYSBARCOLOR .DA #C.WHITE
2020-09-15 14:48:35 +00:00
PREFS.BORDERCOLOR .DA #C.BLACK
2020-10-26 06:38:50 +00:00
PREFS.TBARCOLORA .DA #C16.D.BLUE
PREFS.TBARCOLORI .DA #C16.L.BLUE
2020-09-29 15:37:26 +00:00
PREFS.MBARCOLOR .DA #C.WHITE
PREFS.SBARCOLOR .DA #C.WHITE
2020-10-20 06:01:04 +00:00
PREFS.DESKTOPCOLOR .DA #C16.D.BLUE
*--------------------------------------
MAN
2020-06-30 15:32:23 +00:00
SAVE usr/src/lib/libgui.s
ASM