A2osX/LIB/LIBGUI.S.txt

571 lines
11 KiB
Plaintext
Raw Permalink 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
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
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-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
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
2020-10-15 15:19:13 +00:00
L.MouseData .DA MouseData
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
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.CUR.SaveBuf .DA CUR.SaveBuf
L.Cursors .DA CUR.Arrow
2020-10-23 15:23:19 +00:00
.DA CUR.Move
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-26 06:38:50 +00:00
CB.InitCacheA sta CB.Cache+S.CB.CMD
2020-10-20 06:01:04 +00:00
*--------------------------------------
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
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
*--------------------------------------
2020-10-26 06:38:50 +00:00
GetCBBuf clc
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
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
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
*--------------------------------------
2020-10-06 15:23:40 +00:00
GFXWrite.CB >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
*--------------------------------------
2020-10-06 06:27:35 +00:00
OBJ.GetInCache >STYA .1+1
ldx #S.OBJ-1
.1 lda $ffff,x SELF MODIFIED
sta OBJ.Cache,x
dex
bpl .1
rts
*--------------------------------------
OBJ.SetX2Y2 >STYA ZPPtr1
ldy #S.OBJ.W
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
clc
ldy #S.OBJ.X1
adc (ZPPtr1),y
pha
txa
iny
adc (ZPPtr1),y
ldy #S.OBJ.X2+1
sta (ZPPtr1),y
dey
pla
sta (ZPPtr1),y
ldy #S.OBJ.H
lda (ZPPtr1),y
clc
sbc #0
pha
iny
lda (ZPPtr1),y
sbc #0
tax
pla
clc
ldy #S.OBJ.Y1
adc (ZPPtr1),y
pha
txa
iny
adc (ZPPtr1),y
ldy #S.OBJ.Y2+1
sta (ZPPtr1),y
dey
pla
sta (ZPPtr1),y
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
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
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
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
*--------------------------------------
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
2019-01-09 16:42:20 +00:00
*--------------------------------------
2019-01-10 16:26:58 +00:00
MouseClamp .BS 8
2020-10-15 15:19:13 +00:00
MouseData .BS S.MOUSE
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
*--------------------------------------
2020-10-13 15:54:55 +00:00
MENU.Stack.Top .BS 1
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
2020-10-13 15:54:55 +00:00
MENU.Sys
.1 .DA #.2-* next
2020-10-09 06:02:45 +00:00
.DA #S.MITEM.F.ITEM F
2019-01-10 07:00:45 +00:00
.DA #0 S
2020-10-08 15:33:38 +00:00
.DA #2 ID
2020-10-12 06:04:19 +00:00
.DA BM.ID.APPLE pICON
2020-10-13 15:54:55 +00:00
.DA #S.MITEM.KEYMOD.CTRL+S.MITEM.KEYMOD.OA+S.MITEM.KEYMOD.CA
2020-10-12 06:04:19 +00:00
.DA #'A'
2020-10-13 15:54:55 +00:00
.DA #.11-.1
2020-09-08 15:31:41 +00:00
.AZ "About..."
2020-10-13 15:54:55 +00:00
.11 .AS "Ctrl-"
.DA #1,#'-',#2,#'-',#'A',#0
2020-10-08 15:33:38 +00:00
2020-10-13 15:54:55 +00:00
.2 .DA #.3-* next
2020-10-08 15:33:38 +00:00
.DA #S.MITEM.F.SEP
2020-10-13 15:54:55 +00:00
.3 .DA #.4-* next
2020-10-08 15:33:38 +00:00
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
2020-10-20 06:01:04 +00:00
.DA #4 ID
2020-10-12 06:04:19 +00:00
.DA 0 pICON
.DA 0 pMENU
2020-10-23 06:03:23 +00:00
.DA #0 KEYSTR
2020-10-12 06:04:19 +00:00
.AZ "Programs"
2020-10-13 15:54:55 +00:00
.4 .DA #.5-* next
2020-10-12 06:04:19 +00:00
.DA #S.MITEM.F.SUBMENU F
.DA #0 S
2020-10-20 06:01:04 +00:00
.DA #6 ID
2020-10-08 15:33:38 +00:00
.DA 0 pICON
.DA 0 pMENU
2020-10-13 15:54:55 +00:00
.DA #0 KEYSTR
2020-10-08 15:33:38 +00:00
.AZ "Settings"
2020-10-13 15:54:55 +00:00
.5 .DA #.6-* next
2020-10-12 06:04:19 +00:00
.DA #S.MITEM.F.SEP
2020-10-13 15:54:55 +00:00
.6 .DA #.7-* next
2020-10-12 06:04:19 +00:00
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #8 ID
.DA 0 pICON
.DA #0
.DA #0
2020-10-13 15:54:55 +00:00
.DA #0 KEYSTR
2020-10-12 06:04:19 +00:00
.AZ "Search..."
2020-10-13 15:54:55 +00:00
.7 .DA #.8-* next
2020-10-12 06:04:19 +00:00
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #10 ID
.DA 0 pICON
2020-10-13 15:54:55 +00:00
.DA #S.MITEM.KEYMOD.CTRL+S.MITEM.KEYMOD.OA
2020-10-12 06:04:19 +00:00
.DA #'R'
2020-10-13 15:54:55 +00:00
.DA #.77-.7
2020-10-12 06:04:19 +00:00
.AZ "Run..."
2020-10-13 15:54:55 +00:00
.77 .AZ "Ctrl-R"
.8 .DA #0
2020-09-08 15:31:41 +00:00
*--------------------------------------
2020-10-23 15:23:19 +00:00
MENU.Sys.Programs
.1 .DA #.2-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #42 ID
.DA BM.ID.APPLE pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "GUITest1"
.2 .DA #.3-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #44 ID
.DA BM.ID.APPLE pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "GUITest2"
.3 .DA #0
*--------------------------------------
2020-10-20 06:01:04 +00:00
MENU.Sys.Settings
.1 .DA #.2-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #62 ID
.DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "Colors..."
.2 .DA #.3-* next
.DA #S.MITEM.F.ITEM F
.DA #0 S
.DA #64 ID
.DA 0 pICON
.DA #0
.DA #0
.DA #0 KEYSTR
.AZ "SubItem2..."
.3 .DA #0
*--------------------------------------
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