mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-12 17:30:23 +00:00
LIBGUI:more API...
This commit is contained in:
parent
f766b7add3
commit
41dad38140
Binary file not shown.
BIN
.Fonts/SYSx7.fnt
BIN
.Fonts/SYSx7.fnt
Binary file not shown.
@ -11,14 +11,19 @@ NEW
|
||||
.INB inc/libgui.i
|
||||
.INB inc/fnt.i
|
||||
*--------------------------------------
|
||||
ZPPTR1 .EQ ZPBIN
|
||||
ZPInputBufPtr .EQ ZPBIN+2
|
||||
ZPInputTblPtr .EQ ZPBIN+4
|
||||
ZPInputBMPtr .EQ ZPBIN+6
|
||||
ZPCharBufPtr .EQ ZPBIN+8
|
||||
ZPOutPutTblPtr .EQ ZPBIN+10
|
||||
ZPOutPutCharOfs .EQ ZPBIN+12
|
||||
ZPOutPutBufPtr .EQ ZPBIN+14
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPPTR1 .BS 2
|
||||
ZPInputBufPtr .BS 2
|
||||
ZPInputTblPtr .BS 2
|
||||
ZPInputBMPtr .BS 2
|
||||
ZPCharBufPtr .BS 2
|
||||
ZPOutPutTblPtr .BS 2
|
||||
ZPOutPutCharOfs .BS 2
|
||||
ZPOutPutBufPtr .BS 2
|
||||
TmpWord .BS 2
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -26,11 +31,12 @@ 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 CS
|
||||
.DA DS.END-DS.START DS
|
||||
.DA #64 SS
|
||||
.DA #16 ZP
|
||||
.DA #0 S.PS.F.EVENT
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data Size
|
||||
.DA #64 Stack Size
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Relocation Table
|
||||
@ -116,13 +122,17 @@ CS.INIT.OPENINPUT
|
||||
>SYSCALL LoadFile
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
>PUSHYA
|
||||
>STYA TmpWord
|
||||
txa
|
||||
>STA.G hInputBuf
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPInputBufPtr
|
||||
>LDYA L.MSG.FILE.OK
|
||||
>SYSCALL PutS
|
||||
|
||||
>PUSHW L.MSG.FILE.OK
|
||||
>PUSHW TmpWord
|
||||
>PUSHBI 2
|
||||
>SYSCALL Printf
|
||||
|
||||
ldy #S.FNT.dfVersion
|
||||
lda (ZPInputBufPtr),y
|
||||
bne .99
|
||||
@ -134,18 +144,14 @@ CS.INIT.OPENINPUT
|
||||
|
||||
cmp #3
|
||||
bne .99
|
||||
|
||||
*--------------------------------------
|
||||
.1 asl *2 = Entry Len in Tbl
|
||||
>STA.G FNT.Version
|
||||
pha
|
||||
ldy #S.FNT.dfAscent
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.Ascent
|
||||
>PUSHA
|
||||
|
||||
ldy #S.FNT.dfPixHeight
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.PixH
|
||||
>PUSHW L.MSG.HEADER.OK
|
||||
|
||||
pla
|
||||
>PUSHA
|
||||
|
||||
ldy #S.FNT.dfPixWidth
|
||||
@ -153,9 +159,17 @@ CS.INIT.OPENINPUT
|
||||
>STA.G FON.Header+S.FON.PixW
|
||||
>PUSHA
|
||||
|
||||
pla
|
||||
ldy #S.FNT.dfPixHeight
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.PixH
|
||||
>PUSHA
|
||||
>LDYA L.MSG.HEADER.OK
|
||||
|
||||
ldy #S.FNT.dfAscent
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.Ascent
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
clc
|
||||
rts
|
||||
@ -185,14 +199,12 @@ CS.INIT.CREATEOUTPUT
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.FNT.dfBreakChar
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.Break
|
||||
>PUSHA
|
||||
CS.RUN >PUSHW L.MSG.RANGE
|
||||
|
||||
ldy #S.FNT.dfDefaultChar
|
||||
ldy #S.FNT.dfFirstChar
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.Default
|
||||
>STA.G FON.Header+S.FON.First
|
||||
>STA.G CharIndex
|
||||
>PUSHA
|
||||
|
||||
ldy #S.FNT.dfLastChar
|
||||
@ -200,12 +212,17 @@ CS.RUN ldy #S.FNT.dfBreakChar
|
||||
>STA.G FON.Header+S.FON.Last
|
||||
>PUSHA
|
||||
|
||||
ldy #S.FNT.dfFirstChar
|
||||
ldy #S.FNT.dfDefaultChar
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.First
|
||||
>STA.G CharIndex
|
||||
>STA.G FON.Header+S.FON.Default
|
||||
>PUSHA
|
||||
>LDYA L.MSG.RANGE
|
||||
|
||||
ldy #S.FNT.dfBreakChar
|
||||
lda (ZPInputBufPtr),y
|
||||
>STA.G FON.Header+S.FON.Break
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
|
||||
>LDA.G FON.Header+S.FON.Last
|
||||
@ -239,10 +256,10 @@ CS.RUN ldy #S.FNT.dfBreakChar
|
||||
adc (pData),y
|
||||
sta (pData),y
|
||||
sta ZPOutPutCharOfs+1
|
||||
>LEA.G FileOffset
|
||||
>PUSHYA
|
||||
>PUSHBI SYS.FSeek.SET
|
||||
>LDA.G hOutputFile
|
||||
|
||||
>PUSHB.G hOutputFile
|
||||
>PUSHL.G FileOffset
|
||||
>PUSHBI SEEK.SET
|
||||
>SYSCALL FSeek
|
||||
bcc .1
|
||||
|
||||
@ -317,7 +334,7 @@ CS.RUN.LOOP >SLEEP
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.DONE
|
||||
>SYSCALL PrintF
|
||||
>SYSCALL PutS
|
||||
lda #0
|
||||
sec
|
||||
.9 rts
|
||||
@ -386,15 +403,13 @@ CS.RUN.GetChar lda (ZPInputTblPtr) Get Char PixW
|
||||
*--------------------------------------
|
||||
* Dump ZPCharBufPtr : CharByteW x FON.Header+S.FON.PixH
|
||||
*--------------------------------------
|
||||
CS.RUN.DumpChar >LDA.G CharOutByteW
|
||||
>PUSHA
|
||||
>LDA.G CharOutPixW
|
||||
>PUSHA
|
||||
>LDA.G CharIndex
|
||||
>PUSHA
|
||||
>PUSHA
|
||||
>LDYA L.MSG.DUMP
|
||||
CS.RUN.DumpChar >PUSHW L.MSG.DUMP
|
||||
>PUSHB.G CharIndex
|
||||
>PUSHB.G CharOutPixW
|
||||
>PUSHB.G CharOutByteW
|
||||
>PUSHBI 3
|
||||
>SYSCALL PrintF
|
||||
|
||||
lda ZPCharBufPtr
|
||||
sta ZPPTR1
|
||||
lda ZPCharBufPtr+1
|
||||
@ -683,9 +698,9 @@ CS.RUN.WriteByte
|
||||
clc
|
||||
bne .8
|
||||
|
||||
>PUSHWI 256
|
||||
>PUSHB.G hOutputFile
|
||||
>PUSHW ZPOutPutBufPtr
|
||||
>LDA.G hOutputFile
|
||||
>PUSHWI 256
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
@ -703,11 +718,10 @@ CS.RUN.FlushOutPutBuf
|
||||
>LDA.G OutPutPtr
|
||||
beq .8
|
||||
|
||||
tay
|
||||
lda #0
|
||||
>PUSHYA
|
||||
>PUSHB.G hOutputFile
|
||||
>PUSHW ZPOutPutBufPtr
|
||||
>LDA.G hOutputFile
|
||||
>PUSHBI 0
|
||||
>PUSHB.G OutPutPtr
|
||||
>SYSCALL FWrite
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
@ -715,24 +729,30 @@ CS.RUN.WriteBMAndTbl
|
||||
ldy #FileOffset
|
||||
ldx #4
|
||||
lda #0
|
||||
|
||||
.1 sta (pData),y
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
>LEA.G FileOffset
|
||||
>PUSHYA
|
||||
>PUSHBI SYS.FSeek.SET
|
||||
>LDA.G hOutputFile
|
||||
>PUSHB.G hOutputFile
|
||||
>PUSHL.G FileOffset
|
||||
>PUSHBI SEEK.SET
|
||||
>SYSCALL FSeek
|
||||
bcs .9
|
||||
|
||||
>PUSHWI S.FON
|
||||
>PUSHB.G hOutputFile
|
||||
>PUSHEA.G FON.Header
|
||||
>LDA.G hOutputFile
|
||||
>PUSHWI S.FON
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
>PUSHB.G hOutputFile
|
||||
|
||||
>LDA.G hTblBuf
|
||||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
|
||||
>LDA.G FON.Header+S.FON.Last
|
||||
sec
|
||||
>SBC.G FON.Header+S.FON.First
|
||||
@ -744,11 +764,6 @@ CS.RUN.WriteBMAndTbl
|
||||
ply
|
||||
>PUSHYA
|
||||
|
||||
>LDA.G hTblBuf
|
||||
>SYSCALL GetMemPtr
|
||||
>PUSHYA
|
||||
|
||||
>LDA.G hOutputFile
|
||||
>SYSCALL FWrite
|
||||
clc
|
||||
.9 rts
|
||||
|
@ -144,33 +144,37 @@ S.WND.hCUR .EQ S.OBJ+16
|
||||
*
|
||||
S.WND.TitleX1 .EQ S.OBJ+18
|
||||
S.WND.TitleX2 .EQ S.OBJ+20
|
||||
*
|
||||
S.WND.TBarY1 .EQ S.OBJ+20
|
||||
S.WND.TBarY2 .EQ S.OBJ+22
|
||||
S.WND.MBarY1 .EQ S.OBJ+22
|
||||
S.WND.MBarY2 .EQ S.OBJ+24
|
||||
S.WND.InnerY1 .EQ S.OBJ+24
|
||||
S.WND.InnerY2 .EQ S.OBJ+26
|
||||
S.WND.SBarY1 .EQ S.OBJ+26
|
||||
S.WND.InnerW .EQ S.OBJ+28
|
||||
S.WND.InnerH .EQ S.OBJ+30
|
||||
S.WND.DocW .EQ S.OBJ+32
|
||||
S.WND.DocH .EQ S.OBJ+34
|
||||
S.WND.DocX .EQ S.OBJ+36
|
||||
S.WND.DocY .EQ S.OBJ+38
|
||||
S.WND.fPaint .EQ S.OBJ+40
|
||||
S.WND.InnerY1 .EQ S.OBJ+26
|
||||
S.WND.InnerY2 .EQ S.OBJ+28
|
||||
S.WND.SBarY1 .EQ S.OBJ+28
|
||||
|
||||
S.WND.InnerW .EQ S.OBJ+32
|
||||
S.WND.InnerH .EQ S.OBJ+34
|
||||
S.WND.DocW .EQ S.OBJ+36
|
||||
S.WND.DocH .EQ S.OBJ+38
|
||||
S.WND.DocX .EQ S.OBJ+40
|
||||
S.WND.DocY .EQ S.OBJ+42
|
||||
S.WND.fPaint .EQ S.OBJ+44
|
||||
*
|
||||
S.WND .EQ S.OBJ+42
|
||||
S.WND .EQ S.OBJ+46
|
||||
*--------------------------------------
|
||||
S.MBAR.Selected .EQ S.OBJ
|
||||
S.MBAR.Items .EQ S.OBJ+2
|
||||
S.MBAR.Items .EQ S.OBJ
|
||||
*
|
||||
*--------------------------------------
|
||||
S.MBITEM.X1 .EQ 0
|
||||
S.MBITEM.XT .EQ 2
|
||||
S.MBITEM.X2 .EQ 4
|
||||
S.MBITEM.pTEXT .EQ 6
|
||||
S.MBITEM.pMENU .EQ 8
|
||||
S.MBITEM.T .EQ 0
|
||||
S.MBITEM.T.SUBMENU .EQ 6
|
||||
S.MBITEM.S .EQ 1
|
||||
S.MBITEM.S.SELECTED .EQ %10000000
|
||||
S.MBITEM.W .EQ 2
|
||||
S.MBITEM.pTEXT .EQ 4
|
||||
S.MBITEM.pMENU .EQ 6
|
||||
*
|
||||
S.MBITEM .EQ 10
|
||||
S.MBITEM .EQ 8
|
||||
*--------------------------------------
|
||||
S.MENU.hSAVEBUF .EQ S.OBJ+0
|
||||
S.MENU.iW .EQ S.OBJ+2
|
||||
|
@ -3,6 +3,7 @@ NEW
|
||||
|
||||
#define C_BLACK 0
|
||||
#define C_WHITE 255
|
||||
#define pC_WHITE ((void *)255)
|
||||
|
||||
#define PTR_T_ARROW 0
|
||||
#define PTR_T_MOVE 2
|
||||
|
@ -3,9 +3,10 @@ NEW
|
||||
*--------------------------------------
|
||||
hSYSFON .BS 1
|
||||
hSYSFONB .BS 1
|
||||
SYSFON.H .BS 1
|
||||
SYSFON.Hp2 .BS 1
|
||||
SYSFON.Hm1 .BS 1
|
||||
SYSFON.H .BS 1
|
||||
SYSFON.Hp1 .BS 1
|
||||
SYSFON.Hp2 .BS 1
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.g.fon
|
||||
|
@ -22,6 +22,14 @@ CB.GetInCache >STYA .1+1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CB.GetWndYCacheX
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache,x
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+1,x
|
||||
rts
|
||||
*--------------------------------------
|
||||
CB.GetBuf clc
|
||||
|
||||
ldx hCBBuf
|
||||
@ -32,7 +40,6 @@ CB.GetBuf clc
|
||||
bcs .9
|
||||
|
||||
stx hCBBuf
|
||||
>STYA ZPCBPtr
|
||||
>STYA ZPCBBufPtr
|
||||
|
||||
.9 rts
|
||||
@ -72,15 +79,19 @@ CB.FlushBufToYA ldx hCBBuf
|
||||
.1 lda #0
|
||||
sta (ZPCBBufPtr)
|
||||
|
||||
lda hCBBuf
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPCBBufPtr
|
||||
|
||||
ply
|
||||
pla
|
||||
|
||||
jsr OBJ.GetInCache
|
||||
|
||||
.2 lda (ZPCBPtr)
|
||||
.2 lda (ZPCBBufPtr)
|
||||
beq .7
|
||||
|
||||
>LDYA ZPCBPtr
|
||||
>LDYA ZPCBBufPtr
|
||||
jsr CB.GetInCache A = CB.CMD
|
||||
|
||||
cmp #S.CB.CMD.DRAWTEXT2
|
||||
@ -105,16 +116,16 @@ CB.FlushBufToYA ldx hCBBuf
|
||||
|
||||
jsr CB.GFXWrite
|
||||
|
||||
.5 lda (ZPCBPtr) Get Cmd
|
||||
.5 lda (ZPCBBufPtr) Get Cmd
|
||||
lsr
|
||||
tax
|
||||
lda CB.CmdLen-1,x
|
||||
sec +1
|
||||
adc ZPCBPtr
|
||||
sta ZPCBPtr
|
||||
adc ZPCBBufPtr
|
||||
sta ZPCBBufPtr
|
||||
bcc .2
|
||||
|
||||
inc ZPCBPtr+1
|
||||
inc ZPCBBufPtr+1
|
||||
bra .2
|
||||
|
||||
.7 lda hCBBuf
|
||||
|
@ -365,10 +365,7 @@ DRAW.YAText >STYA CB.Cache+S.CB.TxtPtr
|
||||
bra DRAW.Text
|
||||
*--------------------------------------
|
||||
DRAW.YATextAtDXDY
|
||||
phx
|
||||
jsr CB.ClearCache
|
||||
>STYA CB.Cache+S.CB.TxtPtr
|
||||
plx
|
||||
stx CB.Cache+S.CB.hFont
|
||||
|
||||
ldx #3
|
||||
|
@ -21,6 +21,7 @@ FON.Init >LDYA L.SYSX7
|
||||
inc
|
||||
sta SYSFON.H
|
||||
inc
|
||||
sta SYSFON.Hp1
|
||||
inc
|
||||
sta SYSFON.Hp2
|
||||
|
||||
|
@ -3,21 +3,51 @@ NEW
|
||||
*--------------------------------------
|
||||
* Y,A = MBAR definition
|
||||
*--------------------------------------
|
||||
MBAR.New >STYA ZPMENUPtr MBAR definition
|
||||
>STYA ZPPtr1 for pass #2
|
||||
MBAR.New >STYA ZPPtr1 MBAR definition
|
||||
>STYA ZPObjPtr for pass #2
|
||||
|
||||
lda #S.MBAR.Items+1 Ending\0
|
||||
jsr MBAR.GetSize
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPMENUPtr
|
||||
|
||||
phx hMBAR
|
||||
|
||||
lda #S.OBJ.T.MBAR
|
||||
sta (ZPMENUPtr) S.OBJ.T
|
||||
|
||||
lda #0
|
||||
|
||||
ldy #S.MBAR.Items-1
|
||||
|
||||
.1 sta (ZPMENUPtr),y
|
||||
dey
|
||||
bne .1
|
||||
|
||||
>LDYA ZPObjPtr
|
||||
>STYA ZPPtr1 MENU definition
|
||||
|
||||
jsr MBAR.GetData
|
||||
|
||||
pla hMBAR
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* ZPPtr1 = defintion
|
||||
*--------------------------------------
|
||||
MBAR.GetSize lda #S.MBAR.Items+1 Ending\0
|
||||
sta Counter
|
||||
stz Counter+1
|
||||
|
||||
.10 lda (ZPMENUPtr)
|
||||
beq .3
|
||||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPMENUPtr),y
|
||||
bne .1
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
bne .2
|
||||
|
||||
tya
|
||||
|
||||
@ -25,110 +55,184 @@ MBAR.New >STYA ZPMENUPtr MBAR definition
|
||||
|
||||
inc
|
||||
inc skip pMENU
|
||||
adc ZPMENUPtr
|
||||
jsr SkipAPtr1
|
||||
|
||||
lda #S.MBITEM
|
||||
clc
|
||||
adc Counter
|
||||
sta Counter
|
||||
bcc .1
|
||||
|
||||
inc Counter+1
|
||||
bra .1
|
||||
|
||||
.8 >LDYA Counter
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPPtr1 = defintion
|
||||
* ZPMENUPtr = DstBuf
|
||||
*--------------------------------------
|
||||
MBAR.GetData lda ZPMENUPtr
|
||||
clc
|
||||
adc #S.MBAR.Items
|
||||
sta ZPMENUPtr
|
||||
bcc .2
|
||||
bcc .1
|
||||
|
||||
inc ZPMENUPtr+1
|
||||
|
||||
.2 tya
|
||||
sec
|
||||
adc #S.MBITEM
|
||||
|
||||
adc Counter
|
||||
sta Counter
|
||||
bcc .10
|
||||
|
||||
inc Counter+1
|
||||
bra .10
|
||||
|
||||
.3 >LDYA Counter
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPObjPtr
|
||||
|
||||
phx hMBAR
|
||||
|
||||
ldy #S.OBJ-1
|
||||
lda #S.OBJ.T.MBAR
|
||||
jsr OBJ.Init
|
||||
|
||||
lda #S.MBAR.Items
|
||||
clc
|
||||
adc ZPObjPtr
|
||||
sta ZPObjPtr
|
||||
bcc .4
|
||||
|
||||
inc ZPObjPtr+1
|
||||
|
||||
.4 stz DX
|
||||
stz DX+1
|
||||
|
||||
.5 lda (ZPPtr1)
|
||||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
>LDYA DX
|
||||
jsr OBJ.AddWord S.MBITEM.X1
|
||||
lda #S.MBITEM.T.SUBMENU
|
||||
jsr MBAR.AddByte
|
||||
|
||||
lda DX
|
||||
clc
|
||||
adc PREFS.MBARXMARGIN
|
||||
sta DX
|
||||
bcc .6
|
||||
|
||||
sta DX+1
|
||||
|
||||
.6 >LDYA DX
|
||||
jsr OBJ.AddWord S.MBITEM.XT
|
||||
lda #0 S.MBITEM.S
|
||||
jsr MBAR.AddByte
|
||||
|
||||
>LDYA ZPPtr1 pTEXT
|
||||
ldx hSYSFON
|
||||
jsr FON.GetTextSize
|
||||
|
||||
lda DX
|
||||
lda PREFS.MBarXMargin
|
||||
asl x2
|
||||
clc
|
||||
adc CB.CACHE+S.CB.SrcW
|
||||
sta DX
|
||||
tay
|
||||
|
||||
lda DX+1
|
||||
lda #0
|
||||
adc CB.CACHE+S.CB.SrcW+1
|
||||
sta DX+1
|
||||
|
||||
>LDYA DX
|
||||
jsr OBJ.AddWord S.MBITEM.X2
|
||||
jsr MBAR.AddWord S.MBITEM.W
|
||||
|
||||
>LDYA ZPPtr1 pTEXT
|
||||
jsr OBJ.AddWord
|
||||
jsr MBAR.AddWord
|
||||
|
||||
jsr SkipStrZPtr1 skip "TEXT\0"
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
jsr OBJ.AddByte pMENU+1
|
||||
jsr MBAR.AddByte pMENU+1
|
||||
|
||||
lda (ZPPtr1)
|
||||
jsr OBJ.AddByte pMENU
|
||||
jsr MBAR.AddByte pMENU
|
||||
|
||||
lda ZPPtr1
|
||||
clc
|
||||
adc #2
|
||||
sta ZPPtr1
|
||||
bcc .5
|
||||
lda #2
|
||||
jsr SkipAPtr1 stkip pMENU
|
||||
bra .1
|
||||
|
||||
inc ZPPtr1+1
|
||||
bra .5 stkip pMENU
|
||||
.8 sta (ZPMENUPtr)
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBAR.AddWord pha
|
||||
|
||||
.8 pla hMBAR
|
||||
clc
|
||||
tya
|
||||
jsr MBAR.AddByte
|
||||
pla
|
||||
|
||||
MBAR.AddByte sta (ZPMENUPtr)
|
||||
inc ZPMENUPtr
|
||||
bne .8
|
||||
|
||||
inc ZPMENUPtr+1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
* ZPWNDPtr parent WND
|
||||
* MSG.X1, MSG.Y1
|
||||
*--------------------------------------
|
||||
MBAR.Enter ldy #S.WND.pMBAR
|
||||
lda (ZPWNDPtr),y
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr pMBAR
|
||||
|
||||
jsr MBAR.GetMBItems
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldx #S.CB.X1
|
||||
jsr CB.GetWndYCacheX
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
jsr MBAR.SetX2
|
||||
|
||||
lda MSG+S.MSG.X1
|
||||
cmp CB.Cache+S.CB.X1
|
||||
lda MSG+S.MSG.X1+1
|
||||
sbc CB.Cache+S.CB.X1+1
|
||||
bcc .7
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
cmp MSG+S.MSG.X1
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
sbc MSG+S.MSG.X1+1
|
||||
bcc .7
|
||||
* >DEBUG
|
||||
ldy #S.MBITEM.S
|
||||
lda (ZPPtr1),y
|
||||
ora #S.MBITEM.S.SELECTED
|
||||
sta (ZPPtr1),y
|
||||
|
||||
jsr MENU.DestroyAll
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr MBAR.DrawMBItem
|
||||
|
||||
>LDYA L.WND.Screen
|
||||
jmp CB.FlushBufToYA
|
||||
|
||||
.7 lda CB.Cache+S.CB.X2
|
||||
sta CB.Cache+S.CB.X1
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
|
||||
lda #S.MBITEM
|
||||
jsr SkipAPtr1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
*--------------------------------------
|
||||
MBAR.Leave
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPWNDPtr = parent WND
|
||||
*--------------------------------------
|
||||
MBAR.Paint lda #S.CB.CMD.FILLRECT
|
||||
jsr CB.InitCacheA
|
||||
MBAR.Draw >SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr pMBAR
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldx #S.CB.X1
|
||||
jsr CB.GetWndYCacheX
|
||||
|
||||
jsr MBAR.GetMBItems
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
jsr MBAR.SetX2
|
||||
|
||||
jsr MBAR.DrawMBItem
|
||||
bcs .9
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
sta CB.Cache+S.CB.X1
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
|
||||
lda #S.MBITEM
|
||||
jsr SkipAPtr1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MBAR.DrawMBItem lda #S.CB.CMD.FILLRECT
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
lda #S.CB.OP.SET
|
||||
sta CB.Cache+S.CB.OP
|
||||
@ -136,123 +240,86 @@ MBAR.Paint lda #S.CB.CMD.FILLRECT
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
|
||||
lda PREFS.MBARCOLOR
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
ldy #S.MBITEM.S
|
||||
lda (ZPPtr1),y
|
||||
asl
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPWNDPtr),y
|
||||
lda PREFS.MBarColor
|
||||
bcc .1
|
||||
|
||||
eor #$ff
|
||||
|
||||
.1 sta CB.Cache+S.CB.COLOR
|
||||
|
||||
jsr MBAR.SetY1Y2
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda PREFS.MBarXMargin
|
||||
clc
|
||||
adc CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X1
|
||||
bcc .10
|
||||
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
.10 inc CB.Cache+S.CB.Y1
|
||||
bne .11
|
||||
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
|
||||
.11 ldy #S.MBITEM.S
|
||||
lda (ZPPtr1),y
|
||||
asl
|
||||
|
||||
ldy #S.MBITEM.pTEXT
|
||||
lda (ZPPtr1),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
lda (ZPPtr1),y
|
||||
ply
|
||||
ldx hSYSFON
|
||||
jsr DRAW.YAText
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPWNDPtr),y
|
||||
jmp CB.Cache2CBBuf
|
||||
*--------------------------------------
|
||||
MBAR.GetMBItems lda ZPMENUPtr
|
||||
clc
|
||||
adc #S.MBAR.Items
|
||||
sta ZPPtr1
|
||||
|
||||
lda ZPMENUPtr+1
|
||||
adc /S.MBAR.Items
|
||||
sta ZPPtr1+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBAR.SetX2 lda CB.Cache+S.CB.X1
|
||||
clc
|
||||
ldy #S.MBITEM.W
|
||||
adc (ZPPtr1),y
|
||||
sta CB.Cache+S.CB.X2
|
||||
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc (ZPPtr1),y
|
||||
sta CB.Cache+S.CB.X2+1
|
||||
|
||||
ldy #S.WND.MBarY1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBAR.SetY1Y2 ldy #S.WND.MBarY1
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y1
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
iny #S.WND.MBarY2
|
||||
ldy #S.WND.MBarY2
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y2
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.WND.pMBAR
|
||||
lda (ZPWNDPtr),y
|
||||
sta ZPMENUPtr
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta ZPMENUPtr+1
|
||||
|
||||
.1 lda (ZPMENUPtr)
|
||||
beq .8
|
||||
|
||||
jsr CB.ClearCache
|
||||
|
||||
lda #S.CB.CMD.DRAWTEXT2
|
||||
sta CB.CACHE+S.CB.CMD
|
||||
|
||||
lda #S.CB.OP.SET+S.CB.OP.INVERSE
|
||||
sta CB.Cache+S.CB.OP
|
||||
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
|
||||
lda hSYSFON
|
||||
sta CB.CACHE+S.CB.hFont
|
||||
|
||||
ldy #S.MBITEM.XT
|
||||
lda (ZPMENUPtr),y
|
||||
clc
|
||||
ldy #S.OBJ.X1
|
||||
adc (ZPWNDPtr),y
|
||||
sta CB.CACHE+S.CB.X1
|
||||
|
||||
ldy #S.MBITEM.XT+1
|
||||
lda (ZPMENUPtr),y
|
||||
ldy #S.OBJ.X1+1
|
||||
adc (ZPWNDPtr),y
|
||||
sta CB.CACHE+S.CB.X1+1
|
||||
|
||||
ldy #S.WND.MBarY1
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc #1
|
||||
sta CB.CACHE+S.CB.Y1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
sta CB.CACHE+S.CB.Y1+1
|
||||
|
||||
lda #S.MBITEM.pTEXT
|
||||
clc
|
||||
adc ZPMENUPtr
|
||||
sta CB.CACHE+S.CB.TxtPtr
|
||||
|
||||
lda #0
|
||||
adc ZPMENUPtr+1
|
||||
sta CB.CACHE+S.CB.TxtPtr+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda (ZPMENUPtr)
|
||||
clc
|
||||
adc ZPMENUPtr
|
||||
sta ZPMENUPtr
|
||||
bcc .1
|
||||
inc ZPMENUPtr+1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPWNDPtr parent WND
|
||||
* MSG.X1, MSG.Y1
|
||||
*--------------------------------------
|
||||
MBAR.Enter
|
||||
|
||||
* >DEBUG
|
||||
*--------------------------------------
|
||||
MBAR.Leave
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
11
LIB/LIBGUI.S.MBOX.txt
Normal file
11
LIB/LIBGUI.S.MBOX.txt
Normal file
@ -0,0 +1,11 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* MsgBox(hWND, pTITLE, pTEXT, pBM, iButtons)
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.s.mbox
|
||||
LOAD usr/src/lib/libgui.s
|
||||
ASM
|
@ -9,8 +9,8 @@ MENU.New >PULLW DY
|
||||
>STYA ZPPtr1 MENU definition
|
||||
>STYA ZPObjPtr for pass #2
|
||||
|
||||
ldy MENU.Stack.Cnt
|
||||
cpy #MENU.MAX
|
||||
ldx MENU.Stack.Cnt
|
||||
cpx #MENU.MAX
|
||||
beq .90
|
||||
|
||||
jsr MENU.GetSize
|
||||
@ -418,7 +418,21 @@ MENU.FindMItemByID
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MENU.Enter jsr MENU.GetDXDYW
|
||||
MENU.Enter jsr MENU.GetDXDY
|
||||
|
||||
stz D
|
||||
stz D+1
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda DX X1
|
||||
clc
|
||||
adc (ZPMENUPtr),y
|
||||
sta IE IE = X2
|
||||
|
||||
iny
|
||||
lda DX+1
|
||||
adc (ZPMENUPtr),y
|
||||
sta IE+1
|
||||
|
||||
jsr MENU.GetMItems
|
||||
|
||||
@ -429,8 +443,8 @@ MENU.Enter jsr MENU.GetDXDYW
|
||||
beq .2
|
||||
|
||||
lda DY Y1
|
||||
sec
|
||||
adc SYSFON.H
|
||||
clc
|
||||
adc SYSFON.Hp2
|
||||
sta INE INE = Y2
|
||||
lda DY+1
|
||||
adc #0
|
||||
@ -450,41 +464,76 @@ MENU.Enter jsr MENU.GetDXDYW
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr MENU.ResetX1Y1X2
|
||||
jsr MENU.DrawMItem
|
||||
|
||||
.2 jsr MENU.NextMItemDY
|
||||
bra .1
|
||||
|
||||
*--------------------------------------
|
||||
.3 ldy #S.MITEM.S
|
||||
lda (ZPPtr1),y
|
||||
bmi .8 already selected, nothing to do
|
||||
>DEBUG
|
||||
bmi .5 already selected, nothing to do
|
||||
|
||||
eor #S.MITEM.S.SELECTED
|
||||
sta (ZPPtr1),y
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr MENU.ResetX1Y1X2
|
||||
jsr MENU.DrawMItem
|
||||
|
||||
lda (ZPPtr1)
|
||||
.30 ldx MENU.Stack.Idx
|
||||
inx
|
||||
cpx MENU.Stack.Cnt
|
||||
beq .31
|
||||
|
||||
jsr MENU.Destroy
|
||||
bra .30
|
||||
|
||||
.31 lda (ZPPtr1)
|
||||
cmp #S.MITEM.T.SUBMENU
|
||||
bne .1
|
||||
bne .2
|
||||
|
||||
* >LDYA L.WND.Screen
|
||||
* jsr CB.FlushBufToYA
|
||||
ldy #S.MITEM.pMENU
|
||||
lda (ZPPtr1),y
|
||||
sta D
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sta D+1
|
||||
|
||||
* jsr MENU.NewSubMenu
|
||||
* bcs .9
|
||||
|
||||
bra .1
|
||||
lda DY
|
||||
sta Counter
|
||||
lda DY+1
|
||||
sta Counter+1
|
||||
|
||||
bra .2
|
||||
*--------------------------------------
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.4 >LDYA L.WND.Screen
|
||||
jmp CB.FlushBufToYA
|
||||
jsr CB.FlushBufToYA
|
||||
|
||||
lda MSG+S.MSG.S
|
||||
lda D
|
||||
ora D+1
|
||||
beq .5
|
||||
|
||||
>PUSHW D pMENU
|
||||
|
||||
ldy #S.OBJ.X2+1
|
||||
lda (ZPMENUPtr),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPMENUPtr),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHW Counter
|
||||
|
||||
jsr MENU.New
|
||||
bcs .9
|
||||
|
||||
jmp MENU.Draw
|
||||
*--------------------------------------
|
||||
.5 lda MSG+S.MSG.S
|
||||
bit #S.MSG.S.CLK
|
||||
beq .8
|
||||
|
||||
@ -496,41 +545,6 @@ MENU.Enter jsr MENU.GetDXDYW
|
||||
sta MSG+S.MSG.ID
|
||||
|
||||
jmp MENU.DestroyAll
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MENU.NewSubMenu lda DX
|
||||
clc
|
||||
adc Counter W
|
||||
sta DX
|
||||
|
||||
lda DX+1
|
||||
adc Counter+1
|
||||
sta DX+1
|
||||
|
||||
ldy #S.MITEM.pMENU+1
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
|
||||
>PUSHW DX X1
|
||||
>PUSHW DY Y1
|
||||
|
||||
jsr MENU.New
|
||||
bcs .9
|
||||
|
||||
pha hMENU
|
||||
|
||||
jsr MENU.Draw
|
||||
plx
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* DrawMenu(hMENU)
|
||||
*--------------------------------------
|
||||
@ -543,92 +557,29 @@ MENU.Draw >SYSCALL2 GetMemPtr
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr MENU.DrawBorders
|
||||
>LDYA ZPMENUPtr
|
||||
ldx #0
|
||||
jsr OBJ.DrawBorders
|
||||
|
||||
jsr MENU.GetDXDYW
|
||||
jsr MENU.GetDXDY
|
||||
|
||||
jsr MENU.GetMItems
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
jsr MENU.ResetX1Y1X2
|
||||
jsr MENU.DrawMItem
|
||||
jsr MENU.NextMItemDY
|
||||
bra .1
|
||||
|
||||
.8 >LDYA L.WND.Screen
|
||||
jsr CB.FlushBufToYA
|
||||
jmp CB.FlushBufToYA
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MENU.DrawBorders
|
||||
lda #S.CB.CMD.HLINE
|
||||
jsr CB.InitCacheA
|
||||
MENU.DrawMItem jsr MENU.ResetX1Y1X2
|
||||
|
||||
lda #S.CB.OP.SET
|
||||
sta CB.Cache+S.CB.OP
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
lda PREFS.BORDERCOLOR
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
|
||||
ldy #S.OBJ.X2+1
|
||||
ldx #5
|
||||
|
||||
.1 lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.X1,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
lda CB.Cache+S.CB.Y1+1
|
||||
sta CB.Cache+S.CB.Y2+1 top X1,Y1,X2,Y1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.OBJ.Y2
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
sta CB.Cache+S.CB.Y2+1 bottom X1,Y2,X2,Y2
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda #S.CB.CMD.VLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.Y1
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X2
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X2+1 left X1,Y1,X1,Y2
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X2+1 right X2,Y1,X2,Y2
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
*--------------------------------------
|
||||
MENU.DrawMItem lda (ZPPtr1)
|
||||
lda (ZPPtr1)
|
||||
cmp #S.MITEM.T.SEP
|
||||
bne MENU.DrawMItem1
|
||||
|
||||
@ -639,7 +590,7 @@ MENU.DrawMItem lda (ZPPtr1)
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
|
||||
lda PREFS.BORDERCOLOR
|
||||
lda PREFS.BorderColor
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
@ -651,7 +602,7 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
|
||||
ldx PREFS.MENUCOLOR
|
||||
ldx PREFS.MenuColor
|
||||
jsr MENU.IsSelected
|
||||
bcc .15
|
||||
|
||||
@ -661,13 +612,12 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT
|
||||
|
||||
.15 stx CB.Cache+S.CB.COLOR
|
||||
|
||||
lda DY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
lda CB.Cache+S.CB.Y1
|
||||
sec
|
||||
adc SYSFON.H
|
||||
sta CB.Cache+S.CB.Y2
|
||||
lda DY+1
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
lda CB.Cache+S.CB.Y1+1
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.Y2+1
|
||||
jsr CB.Cache2CBBuf
|
||||
@ -695,7 +645,6 @@ MENU.DrawMItem1 lda #S.CB.CMD.FILLRECT
|
||||
ldy #S.MENU.iW
|
||||
adc (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.X1
|
||||
|
||||
bcc .21
|
||||
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
@ -893,83 +842,7 @@ MENU.Save lda #S.CB.CMD.GETRECTBUFSIZE
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
MENU.DestroyAll sec
|
||||
.HS 90 BCC
|
||||
MENU.Destroy clc
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
beq .8
|
||||
|
||||
php
|
||||
|
||||
bit PTR.bVisible
|
||||
bpl .1
|
||||
|
||||
jsr PTR.Hide.I
|
||||
|
||||
.1 lda #S.CB.CMD.BITBLT
|
||||
jsr CB.InitCacheA
|
||||
|
||||
lda #S.CB.OP.RESTORE
|
||||
sta CB.Cache+S.CB.OP
|
||||
|
||||
plp
|
||||
|
||||
.2 php
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
lda MENU.Stack-1,x
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldx #0
|
||||
|
||||
.3 lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.X1,x
|
||||
iny
|
||||
inx
|
||||
cpx #8 X1,Y1,X2,Y2
|
||||
bne .3
|
||||
|
||||
ldy #S.OBJ.W
|
||||
ldx #0
|
||||
|
||||
.4 lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.SrcW,x
|
||||
iny
|
||||
inx
|
||||
cpx #4 W,H
|
||||
bne .4
|
||||
|
||||
ldy #S.MENU.hSAVEBUF
|
||||
lda (ZPMENUPtr),y
|
||||
sta CB.Cache+S.CB.DstPtr
|
||||
|
||||
jsr CB.GFXWrite
|
||||
|
||||
lda CB.Cache+S.CB.DstPtr
|
||||
>SYSCALL2 FreeStkObj
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
lda MENU.Stack-1,x
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
plp
|
||||
dec MENU.Stack.Cnt
|
||||
bcc .7
|
||||
|
||||
bne .2
|
||||
|
||||
.7 bit PTR.bVisible
|
||||
bpl .8
|
||||
|
||||
jmp PTR.Show.I
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MENU.GetDXDYW ldy #S.OBJ.X1
|
||||
MENU.GetDXDY ldy #S.OBJ.X1
|
||||
lda (ZPMENUPtr),y
|
||||
clc
|
||||
adc #1
|
||||
@ -979,16 +852,6 @@ MENU.GetDXDYW ldy #S.OBJ.X1
|
||||
adc #0
|
||||
sta DX+1
|
||||
|
||||
ldy #S.OBJ.W
|
||||
lda (ZPMENUPtr),y
|
||||
sec
|
||||
sbc #3 2Px border + correction from W
|
||||
sta Counter W
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
sbc #0
|
||||
sta Counter+1
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPMENUPtr),y
|
||||
clc
|
||||
@ -1002,21 +865,31 @@ MENU.GetDXDYW ldy #S.OBJ.X1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MENU.ResetX1Y1X2
|
||||
lda DX
|
||||
sta CB.Cache+S.CB.X1
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPMENUPtr),y
|
||||
clc
|
||||
adc Counter
|
||||
sta CB.Cache+S.CB.X2
|
||||
lda DX+1
|
||||
adc #1
|
||||
sta CB.Cache+S.CB.X1
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
adc Counter+1
|
||||
sta CB.Cache+S.CB.X2+1
|
||||
|
||||
lda DY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
lda DY+1
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPMENUPtr),y
|
||||
sec
|
||||
sbc #1
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.X2+1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MENU.FindSelected
|
||||
@ -1075,6 +948,83 @@ MENU.NextMItemDY
|
||||
MENU.NextMItem lda #S.MITEM
|
||||
jmp SkipAPtr1
|
||||
*--------------------------------------
|
||||
MENU.DestroyAll sec
|
||||
.HS 90 BCC
|
||||
MENU.Destroy clc
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
beq .8
|
||||
|
||||
php
|
||||
|
||||
bit PTR.bVisible
|
||||
bpl .1
|
||||
|
||||
jsr PTR.Hide.I
|
||||
|
||||
.1 lda #S.CB.CMD.BITBLT
|
||||
jsr CB.InitCacheA
|
||||
|
||||
lda #S.CB.OP.RESTORE
|
||||
sta CB.Cache+S.CB.OP
|
||||
|
||||
plp
|
||||
|
||||
.2 php
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
lda MENU.Stack-1,x
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPObjPtr
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldx #0
|
||||
|
||||
.3 lda (ZPObjPtr),y
|
||||
sta CB.Cache+S.CB.X1,x
|
||||
iny
|
||||
inx
|
||||
cpx #8 X1,Y1,X2,Y2
|
||||
bne .3
|
||||
|
||||
ldy #S.OBJ.W
|
||||
ldx #0
|
||||
|
||||
.4 lda (ZPObjPtr),y
|
||||
sta CB.Cache+S.CB.SrcW,x
|
||||
iny
|
||||
inx
|
||||
cpx #4 W,H
|
||||
bne .4
|
||||
|
||||
ldy #S.MENU.hSAVEBUF
|
||||
lda (ZPObjPtr),y
|
||||
sta CB.Cache+S.CB.DstPtr
|
||||
|
||||
jsr CB.GFXWrite
|
||||
|
||||
lda CB.Cache+S.CB.DstPtr
|
||||
>SYSCALL2 FreeStkObj
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
lda MENU.Stack-1,x
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
plp Destroy all ?
|
||||
dec MENU.Stack.Cnt
|
||||
|
||||
bcc .7 no
|
||||
|
||||
bne .2
|
||||
|
||||
.7 bit PTR.bVisible
|
||||
bpl .8
|
||||
|
||||
jmp PTR.Show.I
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.s.menu
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
@ -91,9 +91,9 @@ MOU.CheckOverMenu
|
||||
.1 ldx MENU.Stack.Cnt
|
||||
beq .9
|
||||
|
||||
lda MENU.Stack-1,x
|
||||
|
||||
.2 phx
|
||||
.2 dex
|
||||
stx MENU.Stack.Idx
|
||||
lda MENU.Stack,x
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr
|
||||
@ -105,32 +105,18 @@ MOU.CheckOverMenu
|
||||
pla
|
||||
adc /S.OBJ.X1
|
||||
jsr MOU.InRectYA
|
||||
bcc .3
|
||||
bcs .3
|
||||
|
||||
plx
|
||||
jsr MENU.Enter
|
||||
|
||||
dex
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 ldx MENU.Stack.Idx
|
||||
bne .2
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
||||
.3 plx
|
||||
cpx MENU.Stack.Cnt
|
||||
beq .7
|
||||
|
||||
* TODO:destroy from TOP to current, then enter current
|
||||
|
||||
* inx
|
||||
* phx
|
||||
|
||||
* jsr MENU.Destroy
|
||||
* bra .3
|
||||
|
||||
.7 jmp MENU.Enter
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MOU.CheckOverSysBut
|
||||
>LDYA L.RECT.SysBut
|
||||
@ -156,8 +142,7 @@ MOU.CheckOverWND
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPWNDPtr),y
|
||||
|
||||
bit #S.WND.F.BORDER
|
||||
and #S.WND.F.BORDER
|
||||
beq .2
|
||||
|
||||
jsr MOU.ChkWNDBorders
|
||||
@ -190,7 +175,7 @@ MOU.CheckOverWND
|
||||
|
||||
bra .5
|
||||
|
||||
.3 iny #S.WND.MBarY2
|
||||
.3 ldy #S.WND.MBarY2
|
||||
|
||||
lda (ZPWNDPtr),y
|
||||
cmp MSG+S.MSG.Y1
|
||||
@ -203,7 +188,7 @@ MOU.CheckOverWND
|
||||
|
||||
bra .5
|
||||
|
||||
.4 iny #S.WND.SBarY1
|
||||
.4 ldy #S.WND.SBarY1
|
||||
|
||||
lda (ZPWNDPtr),y
|
||||
cmp MSG+S.MSG.Y1
|
||||
|
@ -43,37 +43,6 @@ OBJ.Init sta (ZPObjPtr)
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.AddWord pha
|
||||
|
||||
tya
|
||||
jsr OBJ.AddByte
|
||||
pla
|
||||
|
||||
OBJ.AddByte sta (ZPObjPtr)
|
||||
inc ZPObjPtr
|
||||
bne .8
|
||||
|
||||
inc ZPObjPtr+1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
OBJ.PullY1X1.BAD
|
||||
|
||||
>PULLA
|
||||
ldy #S.OBJ.Y1
|
||||
sta (ZPMENUPtr),y
|
||||
>PULLA
|
||||
iny
|
||||
sta (ZPMENUPtr),y
|
||||
|
||||
>PULLA
|
||||
ldy #S.OBJ.X1
|
||||
sta (ZPMENUPtr),y
|
||||
>PULLA
|
||||
iny
|
||||
sta (ZPMENUPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
* hOBJ, Prop8, Value16
|
||||
*--------------------------------------
|
||||
OBJ.SetProp ldy #3
|
||||
@ -169,9 +138,10 @@ OBJ.SetX2Y2 >STYA ZPPtr1
|
||||
adc (ZPPtr1),y
|
||||
ldy #S.OBJ.Y2+1
|
||||
sta (ZPPtr1),y
|
||||
tax
|
||||
dey
|
||||
pla
|
||||
sta (ZPPtr1),y
|
||||
sta (ZPPtr1),y A,X = Y2
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -185,6 +155,106 @@ OBJ.GetInCache >STYA .1+1
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.DrawBorders >STYA ZPObjPtr
|
||||
stx IY
|
||||
|
||||
lda #S.CB.CMD.HLINE
|
||||
jsr CB.InitCacheA
|
||||
|
||||
lda #S.CB.OP.SET
|
||||
sta CB.Cache+S.CB.OP
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
lda PREFS.BorderColor
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
||||
lda (ZPObjPtr),y
|
||||
sec
|
||||
sbc IY
|
||||
sta CB.Cache+S.CB.X1
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
|
||||
iny #S.OBJ.Y1
|
||||
|
||||
lda (ZPObjPtr),y
|
||||
sec
|
||||
sbc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
sta CB.Cache+S.CB.Y2+1 top X1-1,Y1-1,X2+1,Y1-1
|
||||
|
||||
iny #S.OBJ.X2
|
||||
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.OBJ.Y2
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda #S.CB.CMD.VLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPObjPtr),y
|
||||
sec
|
||||
sbc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X2
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
*-------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.s.obj
|
||||
|
@ -1,7 +1,10 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
SYSBUT.Enter sec
|
||||
SYSBUT.Enter bit WND.SYSBAR.bSysBut
|
||||
bmi .8
|
||||
|
||||
sec
|
||||
ror WND.SYSBAR.bSysBut
|
||||
|
||||
jsr CB.GetBuf
|
||||
@ -18,10 +21,9 @@ SYSBUT.Enter sec
|
||||
jsr MENU.New
|
||||
bcs .9
|
||||
|
||||
sta hSysMenu
|
||||
|
||||
jmp MENU.Draw
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
SYSBUT.Leave bit WND.SYSBAR.bSysBut
|
||||
|
@ -114,7 +114,7 @@ WND.Quit lda WND.Screen+S.OBJ.hPARENT
|
||||
.8 clc
|
||||
WND.Quit.RTS rts
|
||||
*--------------------------------------
|
||||
* F8, X116, Y116, W16, H16
|
||||
* guiNewWnd(sFlags, iX1, iY1, iW, iH)
|
||||
*--------------------------------------
|
||||
WND.New ldy WND.Stack.Top
|
||||
cpy #WND.MAX
|
||||
@ -174,7 +174,7 @@ WND.New ldy WND.Stack.Top
|
||||
|
||||
>PULLA
|
||||
ldy #S.OBJ.X1
|
||||
and PREFS.BESTVIEWEDX
|
||||
and PREFS.BestViewedX
|
||||
sta (ZPWNDPtr),y
|
||||
>PULLA
|
||||
iny
|
||||
@ -235,12 +235,12 @@ WND.Bring2Front ldx WND.Stack.Idx
|
||||
|
||||
.2 pla
|
||||
*--------------------------------------
|
||||
* A = hWND
|
||||
* guiShowWnd( hWND )
|
||||
*--------------------------------------
|
||||
WND.Show sta WND.hWND
|
||||
|
||||
ldx WND.Stack.Top
|
||||
beq WND.Show1
|
||||
beq WND.Show2
|
||||
|
||||
lda WND.Stack-1,x
|
||||
>SYSCALL2 GetMemPtr
|
||||
@ -252,11 +252,15 @@ WND.Show sta WND.hWND
|
||||
jsr CB.GetBuf
|
||||
bcs WND.Activate.RTS
|
||||
|
||||
jsr WND.PaintTopBar
|
||||
jsr WND.DrawTitleBar
|
||||
|
||||
WND.Show1 lda WND.hWND
|
||||
ldy WND.Stack.Top
|
||||
sta WND.Stack,y
|
||||
>LDYA L.WND.Desktop
|
||||
jsr CB.FlushBufToYA
|
||||
|
||||
lda WND.hWND
|
||||
ldx WND.Stack.Top
|
||||
*--------------------------------------
|
||||
WND.Show2 sta WND.Stack,x
|
||||
inc WND.Stack.Top
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
@ -264,36 +268,35 @@ WND.Show1 lda WND.hWND
|
||||
|
||||
jsr OBJ.SetX2Y2
|
||||
|
||||
WND.Show2 jsr CB.GetBuf
|
||||
ldy #S.WND.InnerY2
|
||||
sta (ZPWNDPtr),y
|
||||
txa
|
||||
iny
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs WND.Activate.RTS
|
||||
|
||||
lda #S.WND.S.ACTIVE
|
||||
jsr WND.SetStatus
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPWNDPtr),y
|
||||
tax
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
|
||||
ldy #S.WND.TBarY2+1
|
||||
sta (ZPWNDPtr),y
|
||||
txa
|
||||
dey
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
stz Counter X
|
||||
stz Counter+1 Y
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPWNDPtr),y
|
||||
and #S.WND.F.BORDER
|
||||
beq .1
|
||||
|
||||
lda #1
|
||||
jsr WND.ShowBorders
|
||||
>LDYA ZPWNDPtr
|
||||
ldx #1
|
||||
jsr OBJ.DrawBorders
|
||||
*--------------------------------------
|
||||
.1 ldy #S.OBJ.Y1
|
||||
lda (ZPWNDPtr),y
|
||||
sta Counter
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta Counter+1
|
||||
|
||||
.1 ldy #S.WND.pTITLE+1
|
||||
ldy #S.WND.pTITLE+1
|
||||
lda (ZPWNDPtr),y
|
||||
bne .2
|
||||
|
||||
@ -302,98 +305,82 @@ WND.Show2 jsr CB.GetBuf
|
||||
and #S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MIN+S.WND.F.MAX
|
||||
beq .3
|
||||
|
||||
.2 lda Counter+1
|
||||
clc
|
||||
adc SYSFON.Hp2
|
||||
sta Counter+1
|
||||
.2 lda SYSFON.Hp2
|
||||
jsr WND.Add2Counter
|
||||
|
||||
ldy #S.WND.TBarY2
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc SYSFON.Hp2
|
||||
sta (ZPWNDPtr),y
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
txa
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
lda #S.WND.S.HASTBAR
|
||||
jsr WND.SetStatus
|
||||
|
||||
jsr WND.PaintTopBar
|
||||
jsr WND.DrawTitleBar
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
.3 ldy #S.WND.pMBAR+1
|
||||
.3 ldy #S.WND.pMBAR
|
||||
lda (ZPWNDPtr),y
|
||||
beq .7
|
||||
beq .4
|
||||
|
||||
lda Counter+1
|
||||
clc
|
||||
adc SYSFON.Hp2
|
||||
sta Counter+1
|
||||
lda SYSFON.Hp1
|
||||
jsr WND.Add2Counter
|
||||
|
||||
ldy #S.WND.TBarY2
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc SYSFON.H
|
||||
tax
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
ldy #S.WND.MBarY2+1
|
||||
ldy #S.WND.MBarY2
|
||||
sta (ZPWNDPtr),y
|
||||
iny
|
||||
txa
|
||||
dey
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
lda #S.WND.S.HASMBAR
|
||||
jsr WND.SetStatus
|
||||
|
||||
jsr MBAR.Paint
|
||||
ldy #S.WND.pMBAR
|
||||
lda (ZPWNDPtr),y
|
||||
jsr MBAR.Draw
|
||||
*--------------------------------------
|
||||
.7 ldy #S.WND.pSTATUS+1
|
||||
.4 lda Counter
|
||||
ldy #S.WND.InnerY1
|
||||
sta (ZPWNDPtr),y
|
||||
iny
|
||||
lda Counter+1
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
ldy #S.WND.pSTATUS+1
|
||||
lda (ZPWNDPtr),y
|
||||
beq .8
|
||||
|
||||
lda Counter+1
|
||||
clc
|
||||
adc SYSFON.Hp2
|
||||
sta Counter+1
|
||||
lda SYSFON.Hp1
|
||||
jsr WND.Add2Counter
|
||||
|
||||
ldy #S.OBJ.Y2
|
||||
ldy #S.WND.InnerY2
|
||||
lda (ZPWNDPtr),y
|
||||
sec
|
||||
sbc SYSFON.H
|
||||
tax
|
||||
|
||||
sbc SYSFON.Hp1
|
||||
sta (ZPWNDPtr),y
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc #0
|
||||
ldy #S.WND.SBarY1+1
|
||||
sta (ZPWNDPtr),y
|
||||
txa
|
||||
dey
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
lda #S.WND.S.HASSBAR
|
||||
jsr WND.SetStatus
|
||||
|
||||
jsr WND.PaintSBar
|
||||
jsr WND.DrawStatusBar
|
||||
*--------------------------------------
|
||||
.8 ldy #S.WND.InnerH
|
||||
lda (ZPWNDPtr),y
|
||||
sec
|
||||
sbc Counter+1
|
||||
sbc Counter
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc #0
|
||||
sbc Counter+1
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
>LDYA L.WND.Desktop
|
||||
|
||||
jsr CB.FlushBufToYA
|
||||
|
||||
lda WND.hWND
|
||||
@ -505,106 +492,11 @@ WND.fPaint >SYSCALL2 GetMemPtr
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
.8 >LDYA L.WND.Desktop
|
||||
|
||||
jmp CB.FlushBufToYA
|
||||
*--------------------------------------
|
||||
WND.ShowBorders sta IY
|
||||
|
||||
lda #S.CB.CMD.HLINE
|
||||
jsr CB.InitCacheA
|
||||
|
||||
lda #S.CB.OP.SET
|
||||
sta CB.Cache+S.CB.OP
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
lda PREFS.BORDERCOLOR
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
||||
lda (ZPWNDPtr),y
|
||||
sec
|
||||
sbc IY
|
||||
sta CB.Cache+S.CB.X1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
|
||||
iny #S.OBJ.Y1
|
||||
|
||||
lda (ZPWNDPtr),y
|
||||
sec
|
||||
sbc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
sta CB.Cache+S.CB.Y2+1 top X1-1,Y1-1,X2+1,Y1-1
|
||||
|
||||
iny #S.OBJ.X2
|
||||
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.OBJ.Y2
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
sta CB.Cache+S.CB.Y2
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
sta CB.Cache+S.CB.Y2+1 bottom X1-1,Y2+1,X2+1,Y2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda #S.CB.CMD.VLINE
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPWNDPtr),y
|
||||
sec
|
||||
sbc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X2
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X2+1 left X1-1,Y1-1,X1-1,Y2+1
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X2+1 right X2+1,Y1-1,X2+1,Y2+1
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
*--------------------------------------
|
||||
WND.PaintTopBar lda #S.CB.CMD.FILLRECT
|
||||
WND.DrawTitleBar
|
||||
lda #S.CB.CMD.FILLRECT
|
||||
jsr CB.InitCacheA
|
||||
|
||||
lda #S.CB.OP.SET
|
||||
@ -650,6 +542,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT
|
||||
|
||||
inc DY
|
||||
bne .12
|
||||
|
||||
inc DY+1
|
||||
|
||||
* TOP LEFT ICON
|
||||
@ -669,7 +562,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT
|
||||
|
||||
.2 jsr DRAW.yaBMAtDXDY
|
||||
|
||||
jsr WND.PaintTopBarTitle
|
||||
jsr WND.DrawTitleBarText
|
||||
bcs .9
|
||||
|
||||
* TOP RIGHT ICONS
|
||||
@ -712,6 +605,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT
|
||||
adc #16
|
||||
sta DX
|
||||
bcc .41
|
||||
|
||||
inc DX+1
|
||||
|
||||
.41 ldy #S.OBJ.F
|
||||
@ -726,7 +620,7 @@ WND.PaintTopBar lda #S.CB.CMD.FILLRECT
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
WND.PaintTopBarTitle
|
||||
WND.DrawTitleBarText
|
||||
ldy #S.WND.pTITLE
|
||||
lda (ZPWNDPtr),y
|
||||
pha
|
||||
@ -734,7 +628,7 @@ WND.PaintTopBarTitle
|
||||
lda (ZPWNDPtr),y
|
||||
ply
|
||||
|
||||
ldx hSYSFONB
|
||||
ldx hSYSFON
|
||||
jsr FON.GetTextSize
|
||||
|
||||
ldy #S.OBJ.W
|
||||
@ -756,7 +650,7 @@ WND.PaintTopBarTitle
|
||||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc DX
|
||||
and PREFS.BESTVIEWEDX
|
||||
and PREFS.BestViewedX
|
||||
sta DX
|
||||
|
||||
iny
|
||||
@ -771,18 +665,19 @@ WND.PaintTopBarTitle
|
||||
lda (ZPWNDPtr),y
|
||||
ply
|
||||
|
||||
ldx hSYSFONB
|
||||
ldx hSYSFON
|
||||
clc
|
||||
jmp DRAW.YATextAtDXDY
|
||||
*--------------------------------------
|
||||
WND.PaintSBar lda #S.CB.CMD.HLINE
|
||||
WND.DrawStatusBar
|
||||
lda #S.CB.CMD.HLINE
|
||||
jsr CB.InitCacheA
|
||||
|
||||
lda #S.CB.OP.SET
|
||||
sta CB.Cache+S.CB.OP
|
||||
lda #S.CB.M.MONO
|
||||
sta CB.Cache+S.CB.M
|
||||
lda PREFS.BORDERCOLOR
|
||||
lda PREFS.BorderColor
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
@ -855,9 +750,14 @@ WND.SetMBar >PULLW ZPPtr1
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPWNDPtr
|
||||
|
||||
>LDYA ZPPtr1
|
||||
jsr MBAR.New
|
||||
bcs .9
|
||||
|
||||
ldy #S.WND.pMBAR
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
|
||||
* clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
@ -872,6 +772,16 @@ WND.SetStatus ldy #S.OBJ.S
|
||||
sta (ZPWNDPtr),y
|
||||
rts
|
||||
*--------------------------------------
|
||||
WND.Add2Counter clc
|
||||
adc Counter
|
||||
sta Counter
|
||||
bcc .8
|
||||
|
||||
inc Counter+1
|
||||
|
||||
.8 ldx Counter+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.s.wnd
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
@ -79,15 +79,16 @@ MENU.RMargin .EQ 8
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPLIB
|
||||
ZPCBPtr .BS 2
|
||||
ZPObjPtr .BS 2
|
||||
ZPRECTPtr .BS 2
|
||||
ZPWNDPtr .BS 2
|
||||
ZPMENUPtr .BS 2
|
||||
|
||||
ZPBMPtr .BS 2
|
||||
ZPRECTPtr .BS 2
|
||||
ZPPtr1 .BS 2
|
||||
|
||||
.BS 2
|
||||
|
||||
DX .BS 2
|
||||
DY .BS 2
|
||||
IE .BS 2
|
||||
@ -227,6 +228,11 @@ LIB.LOAD lda LibCount
|
||||
jsr PTR.Set
|
||||
jsr PTR.Show
|
||||
|
||||
>LDYA L.MENU.Sys.Programs
|
||||
>STYA MENU.Sys.1
|
||||
>LDYA L.MENU.Sys.Settings
|
||||
>STYA MENU.Sys.2
|
||||
|
||||
inc LibCount
|
||||
|
||||
.8 clc
|
||||
@ -273,6 +279,7 @@ SkipStrZPtr1 ldy #$ff
|
||||
.INB usr/src/lib/libgui.s.draw
|
||||
.INB usr/src/lib/libgui.s.fon
|
||||
.INB usr/src/lib/libgui.s.mbar
|
||||
.INB usr/src/lib/libgui.s.mbox
|
||||
.INB usr/src/lib/libgui.s.menu
|
||||
.INB usr/src/lib/libgui.s.mou
|
||||
.INB usr/src/lib/libgui.s.msg
|
||||
@ -293,8 +300,8 @@ CS.END
|
||||
DEVNAME.GFX .AZ "/dev/gfx"
|
||||
DEVNAME.MOUSE .AZ "/dev/mou1"
|
||||
*--------------------------------------
|
||||
SYSX7 .AZ "${ROOT}sbin/sysx7"
|
||||
SYSX7B .AZ "${ROOT}sbin/sysx7b"
|
||||
SYSX7 .AZ "${ROOT}opt/gui/fonts/sysx7"
|
||||
SYSX7B .AZ "${ROOT}opt/gui/fonts/sysx7b"
|
||||
*--------------------------------------
|
||||
LibCount .BS 1
|
||||
hDevMouse .BS 1
|
||||
@ -336,6 +343,7 @@ CB.PTR .DA #S.CB.CMD.BITBLT
|
||||
CB.Cache .BS S.CB
|
||||
OBJ.Cache .BS S.OBJ
|
||||
*--------------------------------------
|
||||
MENU.Stack.Idx .BS 1
|
||||
MENU.Stack.Cnt .BS 1
|
||||
MENU.Stack .BS MENU.MAX
|
||||
*--------------------------------------
|
||||
@ -352,6 +360,7 @@ WND.Desktop .DA #S.OBJ.T.WND
|
||||
*--------------------------------------
|
||||
WND.SysBar .DA #S.OBJ.T.WND
|
||||
.BS S.WND-1
|
||||
*--------------------------------------
|
||||
WND.SysBar.2osX .AZ "2osX"
|
||||
WND.SysBar.Clk .AZ "00:00"
|
||||
WND.SysBar.bSysBut .BS 1
|
||||
@ -362,8 +371,6 @@ RECT.SysWNDs .BS S.RECT
|
||||
*--------------------------------------
|
||||
RECT.SysClk .BS S.RECT
|
||||
*--------------------------------------
|
||||
hSysMenu .BS 1
|
||||
*--------------------------------------
|
||||
MENU.Sys .DA #S.MITEM.T.ITEM
|
||||
.DA #2 ID
|
||||
.DA #KEYMOD.CTRL+KEYMOD.OA+KEYMOD.CA,#'A'
|
||||
@ -373,12 +380,12 @@ MENU.Sys .DA #S.MITEM.T.ITEM
|
||||
.DA #S.MITEM.T.SEP
|
||||
|
||||
.DA #S.MITEM.T.SUBMENU
|
||||
.DA MENU.Sys.Programs
|
||||
MENU.Sys.1 .DA MENU.Sys.Programs
|
||||
.DA 0 pICON
|
||||
.AZ "Programs"
|
||||
|
||||
.DA #S.MITEM.T.SUBMENU
|
||||
.DA MENU.Sys.Settings
|
||||
MENU.Sys.2 .DA MENU.Sys.Settings
|
||||
.DA 0 pICON
|
||||
.AZ "Settings"
|
||||
|
||||
@ -437,15 +444,16 @@ KEYMOD.S.CA .EQ *-KEYMOD.S
|
||||
*--------------------------------------
|
||||
TEXTBUF .BS 16 for composing HotKey strings
|
||||
*--------------------------------------
|
||||
PREFS.BESTVIEWEDX .DA #$FC
|
||||
PREFS.BestViewedX .DA #$FC
|
||||
PREFS.MBarXMargin .DA #5
|
||||
*
|
||||
PREFS.bSYSBARTOP .DA #0
|
||||
PREFS.MBARXMARGIN .DA #5
|
||||
PREFS.MENUCOLOR .DA #C.WHITE
|
||||
PREFS.MenuColor .DA #C.WHITE
|
||||
PREFS.SYSBARCOLOR .DA #C.WHITE
|
||||
PREFS.BORDERCOLOR .DA #C.BLACK
|
||||
PREFS.BorderColor .DA #C.BLACK
|
||||
PREFS.TBARCOLORA .DA #C16.D.BLUE
|
||||
PREFS.TBARCOLORI .DA #C16.L.BLUE
|
||||
PREFS.MBARCOLOR .DA #C.WHITE
|
||||
PREFS.MBarColor .DA #C.WHITE
|
||||
PREFS.SBARCOLOR .DA #C.WHITE
|
||||
PREFS.DESKTOPCOLOR .DA #C16.D.BLUE
|
||||
*--------------------------------------
|
||||
|
@ -3,7 +3,7 @@ NEW
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF bin/guitest1
|
||||
.TF root/asmtest/testgui
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
@ -87,8 +87,8 @@ CS.QUIT.RTS rts
|
||||
*--------------------------------------
|
||||
WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.MIN
|
||||
|
||||
>PUSHWI 40
|
||||
>PUSHWI 80
|
||||
>PUSHWI 40
|
||||
>PUSHWI 360
|
||||
>PUSHWI 96
|
||||
>LIBCALL hLIBGUI,LIBGUI.WND.New
|
||||
@ -112,11 +112,11 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
|
||||
|
||||
>PUSHB hWND
|
||||
>PUSHW L.WND.MBAR
|
||||
>LIBCALL hLIBGUI,LIBGUI.MBAR.New
|
||||
sta hMBAR
|
||||
* >LIBCALL hLIBGUI,LIBGUI.MBAR.New
|
||||
* sta hMBAR
|
||||
|
||||
>PUSHB hWND
|
||||
>PUSHB hMBAR
|
||||
* >PUSHB hWND
|
||||
* >PUSHB hMBAR
|
||||
>LIBCALL hLIBGUI,LIBGUI.WND.SetMBar
|
||||
|
||||
>PUSHB hWND
|
||||
@ -156,7 +156,7 @@ LIBGUI .AZ "libgui"
|
||||
hLIBGUI .BS 1
|
||||
*--------------------------------------
|
||||
LOGOFILE .AZ "${ROOT}A2osX.logo"
|
||||
WND.TITLE .AZ "Window Title"
|
||||
WND.TITLE .AZ "Libgui ASM API test"
|
||||
WND.STATUS .AZ "Window status bar message"
|
||||
*--------------------------------------
|
||||
WND.MBAR .AZ "File"
|
||||
@ -271,5 +271,5 @@ DS.START
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/guitest1.s
|
||||
SAVE root/asmtest/testgui.s
|
||||
ASM
|
@ -8,19 +8,20 @@ int bQuit=0;
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
short int hWND = guiNewWnd(WND_F_RESIZE+WND_F_MOVE+WND_F_CLOSE+WND_F_MAX+WND_F_MIN,
|
||||
20,40,200,140);
|
||||
guiSetProp(hWND, WND_P_pTITLE, "Window title");
|
||||
20,20,200,100);
|
||||
guiSetProp(hWND, WND_P_pTITLE, "Libgui C API");
|
||||
guiSetProp(hWND, WND_P_pSTATUS, "Status bar");
|
||||
// guiSetProp(hWND, WND_P_BGCOLOR, C.WHITE);
|
||||
guiSetProp(hWND, WND_P_BGCOLOR, pC_WHITE);
|
||||
|
||||
guiShowWnd(hWND);
|
||||
|
||||
do {
|
||||
if (guiGetMsg(&msg))
|
||||
{
|
||||
switch msg.type {
|
||||
case MSG_T_WND:
|
||||
break;
|
||||
// switch msg.type {
|
||||
// case MSG_T_WND:
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
} while (!bQuit)
|
||||
|
||||
|
@ -61,12 +61,16 @@ CS.RUN >SLEEP
|
||||
>LIBCALL hLIBGUI,LIBGUI.MSG.Get
|
||||
bcs CS.RUN
|
||||
|
||||
.1 lda MSG+S.MSG.T
|
||||
lda MSG+S.MSG.T
|
||||
cmp #S.MSG.T.ID
|
||||
bne CS.RUN
|
||||
|
||||
lda MSG+S.MSG.ID
|
||||
cmp #42
|
||||
cmp #2
|
||||
bne .1
|
||||
|
||||
|
||||
.1 cmp #42
|
||||
bne .2
|
||||
|
||||
>PUSHW L.GUITEST1
|
||||
@ -81,6 +85,7 @@ CS.RUN >SLEEP
|
||||
>PUSHBI 0
|
||||
>SYSCALL ExecL
|
||||
bra CS.RUN
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -98,7 +103,7 @@ CS.QUIT.RTS rts
|
||||
CS.END
|
||||
LIBGUI .AZ "libgui"
|
||||
hLIBGUI .BS 1
|
||||
GUITEST1 .AZ "${ROOT}root/asmtest/guitest1"
|
||||
GUITEST1 .AZ "${ROOT}root/asmtest/testgui"
|
||||
GUITEST2 .AZ "${ROOT}root/ctest/testgui"
|
||||
*--------------------------------------
|
||||
MSG .BS S.MSG
|
||||
|
Loading…
x
Reference in New Issue
Block a user