A2osX/LIB/LIBGUI.S.txt

319 lines
6.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
2017-12-04 07:18:24 +00:00
ZPGCPtr .EQ ZPLIB+2
ZPCBPtr .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
2017-12-04 07:18:24 +00:00
.DA CloseGUI
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
2017-12-04 07:18:24 +00:00
.DA UpdateCursor
.DA ReadMouse
2017-12-04 07:18:24 +00:00
J.Cmds .DA DrawLine
.DA DrawText
L.DEVNAME.GFX .DA DEVNAME.GFX
L.DEVNAME.MOUSE .DA DEVNAME.MOUSE
L.MouseClamp .DA MouseClamp
2017-12-04 07:18:24 +00:00
L.GC.Screen .DA GC.Screen
L.CB.Cache .DA CB.Cache
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
.DA CUR.ResizeXY
.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
.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
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
2017-12-04 07:18:24 +00:00
>LDYA L.GC.Screen
jsr GC.SetX2Y2
.1 >LDYA L.DEVNAME.MOUSE
>SYSCALL GetDevByName.YA
bcc .2
inc DEVNAME.MOUSE+3
lda DEVNAME.MOUSE+3
cmp #'8'
bne .1
.8 ldx #DEVMGR.CONTROL Mouse driver disturb graphic screen....
jsr GoDevGfx.Jmp
clc
.9 rts
.2 stx hDevMouse
>STYA GoDevMouse+1
txa
ldx #DEVMGR.OPEN
jsr GoDevMouse
>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
2017-12-04 07:18:24 +00:00
bra .8
*--------------------------------------
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
*--------------------------------------
2017-12-04 07:18:24 +00:00
GC.SetX2Y2 >STYA ZPGCPtr
ldy #S.GC.X1+1
lda (ZPGCPtr),y
tax
dey
lda (ZPGCPtr),y
clc
ldy #S.GC.W
adc (ZPGCPtr),y
pha
iny
txa
adc (ZPGCPtr),y
tax
pla
sbc #0
bcs .1
dex
.1 ldy #S.GC.X2
sta (ZPGCPtr),y
iny
txa
sta (ZPGCPtr),y
ldy #S.GC.Y1+1
lda (ZPGCPtr),y
tax
dey
lda (ZPGCPtr),y
clc
ldy #S.GC.H
adc (ZPGCPtr),y
pha
iny
txa
adc (ZPGCPtr),y
tax
pla
sbc #0
bcs .2
dex
.2 ldy #S.GC.Y2
sta (ZPGCPtr),y
iny
txa
sta (ZPGCPtr),y
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
2017-12-04 07:18:24 +00:00
GC.Desktop .BS S.GC
GC.Bar .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