A2osX/LIB/LIBGUI.S.txt

448 lines
8.9 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
ZPPtr1 .BS 2
ZPObjPtr .BS 2
ZPCBPtr .BS 2
ZPWNDPtr .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-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
2017-11-15 16:29:23 +00:00
.DA Draw
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-09-03 15:19:25 +00:00
.DA GetScreenGC
2020-09-08 15:31:41 +00:00
.DA WND.Create
.DA WND.SetProp
.DA WND.GetProp
.DA WND.Show
2019-01-09 16:42:20 +00:00
*--------------------------------------
2017-12-04 07:18:24 +00:00
J.Cmds .DA DrawLine
2020-09-03 15:19:25 +00:00
.DA DrawText2
2019-01-09 16:42:20 +00:00
*--------------------------------------
2020-09-07 20:40:50 +00:00
J.OBJ .DA J.WND
.DA J.MENUBAR
.DA J.MENU
.DA J.MENUITEM
.DA J.BUT
.DA J.TEXT
*--------------------------------------
J.WND .DA WND.New
.DA WND.Paint
.DA WND.Close
*--------------------------------------
J.MENUBAR .DA MENUBAR.New
.DA MENUBAR.Paint
.DA MENUBAR.Close
*--------------------------------------
J.MENU .DA MENU.New
.DA MENU.Paint
.DA MENU.Close
*--------------------------------------
J.MENUITEM .DA MENUITEM.New
.DA MENUITEM.Paint
.DA MENUITEM.Close
*--------------------------------------
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
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
.DA CLIP.HLine
.DA CLIP.VLine
.DA CLIP.Rect FILLRECT
.DA CLIP.BitBlt
.DA CLIP.Rect GETRECTBUFSIZE
.DA CLIP.Line
2020-09-04 15:21:15 +00:00
.DA CLIP.Text
.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
*--------------------------------------
2019-01-10 16:26:58 +00:00
OBJ.Get >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-09-13 19:05:38 +00:00
CB.Clear ldx #S.CB-1
.1 stz CB.Cache,x
dex
bpl .1
rts
*--------------------------------------
2017-12-04 16:42:08 +00:00
CB.Get >STYA .1+1
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-08 15:31:41 +00:00
GetCBBuf >LDYAI 256
>SYSCALL GetMem
bcs .9
stx hCBBuf
>STYA ZPCBPtr
>STYA ZPCBBufPtr
.9 rts
*--------------------------------------
2020-09-13 19:05:38 +00:00
PutCBBufAX jsr PutCBBuf
txa
2020-09-08 15:31:41 +00:00
PutCBBuf sta (ZPCBBufPtr)
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-09-03 15:19:25 +00:00
*--------------------------------------
2020-09-06 12:24:04 +00:00
GetScreenGC >LDYA L.WND.Screen
2020-09-03 15:19:25 +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
*--------------------------------------
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-08 15:31:41 +00:00
PREFS.BORDERCOLOR .DA #0 BLACK
2020-09-15 06:12:52 +00:00
PREFS.TOPBARCOLOR .DA #C16.D.BLUE
*--------------------------------------
MAN
2020-06-30 15:32:23 +00:00
SAVE usr/src/lib/libgui.s
ASM