A2osX/LIB/LIBGUI.S.txt

247 lines
5.1 KiB
Plaintext
Raw Normal View History

PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
.OP 65C02
.OR $2000
2017-11-15 16:29:23 +00:00
.TF /A2OSX.BUILD/LIB/LIBGUI.O
*--------------------------------------
.INB /A2OSX.BUILD/INC/MACROS.I
.INB /A2OSX.BUILD/INC/A2OSX.I
2017-11-15 16:29:23 +00:00
.INB /A2OSX.BUILD/INC/LIBGUI.I
.INB /A2OSX.BUILD/INC/GFX.I
*--------------------------------------
.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 *
.EM
*--------------------------------------
ZPPtr1 .EQ ZPLIB
ZPDCPtr .EQ ZPLIB+2
2017-11-15 16:29:23 +00:00
ZPCmdPtr .EQ ZPLIB+4
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 InitGUI
J.Cmds .DA CloseGUI J.Cmds-12 !!!
2017-11-15 16:29:23 +00:00
.DA Draw
.DA SetCursor.A
.DA SetCursorPos
2016-06-15 15:58:45 +00:00
.DA HideCursor
.DA ShowCursor
.DA ReadMouse
.DA DrawLine
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.MouseClamp .DA MouseClamp
L.CB.Cache .DA CB.Cache
L.CUR.CB .DA CUR.CB
L.CUR.SaveBuf .DA CUR.SaveBuf
L.Cursors .DA CUR.Arrow
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
.DA 0
*--------------------------------------
LIB.LOAD
LIB.UNLOAD clc
rts
2016-06-15 06:21:42 +00:00
*--------------------------------------
InitGUI lda GC.Screen+S.GC.hDev
bne .8
>LDYA L.DEVNAME.GFX
>SYSCALL GetDevByName.YA
bcs .9
stx GC.Screen+S.GC.hDev
>STYA GoDevGfx.Jmp+1
txa
ldx #DEVMGR.OPEN
jsr GoDevGfx.Jmp
.1 >LDYA L.DEVNAME.MOUSE
>SYSCALL GetDevByName.YA
bcc .2
inc DEVNAME.MOUSE+3
lda DEVNAME.MOUSE+3
cmp #'8'
bne .1
.8 clc No mouse found, skip mouse init
.9 rts
.2 stx hDevMouse
>STYA GoDevMouse+1
txa
ldx #DEVMGR.OPEN
jsr GoDevMouse
ldx #DEVMGR.CONTROL Mouse driver disturb graphic screen....
jsr GoDevGfx.Jmp
ldx #DEVMGR.STATUS get graphic mode and resolution....
jsr GoDevGfx.Jmp
>STYA ZPPtr1
ldy #S.DSTAT.GFX.W+1
lda (ZPPtr1),y
sta GC.Screen+S.GC.W+1
sta MouseClamp+3
lsr
sta CUR.Pos+S.POINT.X+1
dey
lda (ZPPtr1),y
sta MouseClamp+2
sta GC.Screen+S.GC.W
ror
sta CUR.Pos+S.POINT.X
ldy #S.DSTAT.GFX.H+1
lda (ZPPtr1),y
sta MouseClamp+7
sta GC.Screen+S.GC.H+1
lsr
sta CUR.Pos+S.POINT.Y+1
dey
lda (ZPPtr1),y
sta MouseClamp+6
sta GC.Screen+S.GC.H
ror
sta CUR.Pos+S.POINT.Y
>LDYA L.MouseClamp
ldx #DEVMGR.CONTROL
jsr GoDevMouse
>LDYA L.CUR.SaveBuf
>STYA CUR.CB+S.CB.DstPtr
lda #CUR.T.ARROW
jsr SetCursor.A
2016-06-15 06:21:42 +00:00
clc
rts
*--------------------------------------
CloseGUI lda hDevMouse
beq .1
ldx #DEVMGR.CLOSE
jsr GoDevMouse
.1 stz GC.Screen+S.GC.hDev
2016-06-15 06:21:42 +00:00
sec
rts
*--------------------------------------
ReadMouse >PULLYA
ldx hDevMouse Mouse is active ?
beq .9
ldx #DEVMGR.READBLOCK
jmp GoDevMouse
.9 sec
rts
*--------------------------------------
GoDevGfx >LDYA L.CB.Cache
GoDevGfx.YA ldx #DEVMGR.WRITE
GoDevGfx.Jmp jmp $ffff
*--------------------------------------
GoDevMouse jmp $ffff
*--------------------------------------
.INB /A2OSX.SRC/LIB/LIBGUI.S.DRAW
.INB /A2OSX.SRC/LIB/LIBGUI.S.CLIP
.INB /A2OSX.SRC/LIB/LIBGUI.S.CUR
*--------------------------------------
CS.END
*--------------------------------------
.INB /A2OSX.SRC/LIB/LIBGUI.G.CUR
*--------------------------------------
DEVNAME.GFX >CSTR "GFX"
DEVNAME.MOUSE >CSTR "MOU1"
*--------------------------------------
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
*--------------------------------------
MouseClamp .BS 8
*--------------------------------------
GC.Screen .BS S.GC
GC.Cache .BS S.GC
CB.Cache .BS S.CB
*--------------------------------------
MAN
2017-11-14 16:57:34 +00:00
SAVE /A2OSX.SRC/LIB/LIBGUI.S
ASM