A2osX/LIB/LIBGUI.S.txt

319 lines
6.5 KiB
Plaintext
Raw Normal View History

NEW
2019-07-30 08:57:25 +00:00
AUTO 3,1
.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
.MA NOT16
sec
lda #0
sbc ]1
sta ]1
lda #0
sbc ]1+1
sta ]1+1
.EM
.MA SCMPAX
sec
sbc ]1
txa
sbc ]1+1
bvc :1
eor #$80
:1 .EQ *
2019-10-03 06:25:27 +00:00
.EM
*--------------------------------------
ZPPtr1 .EQ ZPLIB
2019-01-10 16:26:58 +00:00
ZPObjPtr .EQ ZPLIB+4
2019-01-08 16:29:26 +00:00
ZPCBPtr .EQ ZPLIB+6
ZPWNDPtr .EQ ZPLIB+8
2018-05-16 06:02:57 +00:00
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
*--------------------------------------
2017-12-04 07:18:24 +00:00
J.Cmds .DA DrawLine
.DA DrawText
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.CB.Cache .DA CB.Cache
2019-01-10 16:26:58 +00:00
L.SCR .DA SCR
L.WND.Desktop .DA WND.Desktop
L.WND.SysBar .DA WND.SysBar
*--------------------------------------
L.BM.Apple .DA BM.Apple
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
2019-01-10 16:26:58 +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
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
*--------------------------------------
2017-12-04 16:42:08 +00:00
CB.Get >STYA .1+1
ldx #S.CB-1
.1 lda $ffff,x SELF MODIFIED
sta CB.Cache,x
dex
bpl .1
2017-12-04 07:18:24 +00:00
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
>PUSHB SCR+S.SCREEN.hDEV
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
.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-06-30 15:32:23 +00:00
SYSX7 .AZ "/A2OSX.BUILD/sbin/sysx7"
SYSX7B .AZ "/A2OSX.BUILD/sbin/sysx7b"
2018-05-16 06:02:57 +00:00
*--------------------------------------
LibCount .BS 1
hDevMouse .BS 1
2016-06-15 06:21:42 +00:00
*--------------------------------------
DX .BS 2
DY .BS 2
IY .BS 1
IE .BS 2
D .BS 2
INE .BS 2
Counter .BS 2
CLIP.Line.P1 .BS 1
CLIP.Line.P2 .BS 1
*--------------------------------------
2017-11-15 16:29:23 +00:00
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
2017-11-20 06:59:59 +00:00
.DA S.CB.DstPtr+1 GETRECTBUFSIZE
2017-11-15 16:29:23 +00:00
.DA S.CB.Y2+1 DRAWLINE
.DA S.CB.TxtPtr+1 DRAWTEXT
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
*--------------------------------------
2019-01-10 16:26:58 +00:00
SCR .BS S.SCREEN S.OBJ.T.SCREEN
SCR.Childs .BS 2 WND.Desktop
.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
.DA #0 ID
.DA 0 hOWNER
.DA 0 pPARENT
*--------------------------------------
MENU.Sys
*--------------------------------------
MAN
2020-06-30 15:32:23 +00:00
SAVE usr/src/lib/libgui.s
ASM