mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-22 16:31:07 +00:00
9a7d20a7e1
FORMAT: new switches & checks SH:BREAK in FOR and WHILE ASM / S-C MASM: new directives, CString support and .HX LC / UC:bugfix DHGR.DRV:bugfix LIBGUI:wip CC:wip
857 lines
14 KiB
Plaintext
857 lines
14 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
*--------------------------------------
|
||
WND.Init >PUSHW L.DEVNAME.GFX
|
||
>PUSHBI 0
|
||
>SYSCALL2 open
|
||
bcs .9
|
||
|
||
sta WND.Screen+S.OBJ.hPARENT
|
||
|
||
>LDYA L.DCB.GFX
|
||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||
lda #S.IOCTL.S.GETDCB
|
||
sta IOCTL+S.IOCTL.S
|
||
|
||
>PUSHB WND.Screen+S.OBJ.hPARENT
|
||
>PUSHBI IOCTL.STATUS
|
||
>PUSHW L.IOCTL
|
||
>SYSCALL2 IOCTL
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.Setup
|
||
* stz WND.Stack.Top
|
||
* stz MENU.Stack.Cnt
|
||
|
||
>LDYA DCB.GFX+S.DCB.GFX.W
|
||
>STYA WND.Screen+S.OBJ.W
|
||
>STYA WND.Desktop+S.OBJ.W
|
||
>STYA WND.SysBar+S.OBJ.W
|
||
cpy #0
|
||
bne .1
|
||
|
||
dec
|
||
|
||
.1 dey
|
||
>STYA CLIP.Screen+S.RECT.X2
|
||
*--------------------------------------
|
||
lda DCB.GFX+S.DCB.GFX.H
|
||
sta WND.Screen+S.OBJ.H
|
||
|
||
lda SYSFON.Hp2
|
||
sta WND.SysBar+S.OBJ.H
|
||
|
||
lda DCB.GFX+S.DCB.GFX.H
|
||
sec
|
||
sbc SYSFON.Hp2
|
||
sta WND.Desktop+S.OBJ.H
|
||
|
||
sta WND.SysBar+S.OBJ.Y1
|
||
sta RECT.SysBut+S.RECT.Y1
|
||
sta RECT.SysWNDs+S.RECT.Y1
|
||
sta RECT.SysClk+S.RECT.Y1
|
||
|
||
clc
|
||
adc SYSFON.Hp1
|
||
|
||
sta RECT.SysBut+S.RECT.Y2
|
||
sta RECT.SysWNDs+S.RECT.Y2
|
||
sta RECT.SysClk+S.RECT.Y2
|
||
sta CLIP.Screen+S.RECT.Y2
|
||
|
||
>LDYA L.WND.Screen
|
||
>STYA WND.Desktop+S.OBJ.hPARENT
|
||
>STYA WND.SysBar+S.OBJ.hPARENT
|
||
|
||
* >LDYA L.WND.Screen
|
||
jsr OBJ.SetX2Y2
|
||
|
||
>LDYA L.WND.Desktop
|
||
jsr OBJ.SetX2Y2
|
||
|
||
>LDYA L.WND.SysBar
|
||
jsr OBJ.SetX2Y2
|
||
*--------------------------------------
|
||
>LDYA L.WND.SysBar.2osX
|
||
ldx hSYSFON
|
||
jsr FON.GetTextSize
|
||
|
||
lda CB.Cache+S.CB.SrcW
|
||
clc
|
||
adc #25 4 + BM width(16) + 1 + "2osX" + 4
|
||
sta RECT.SysBut+S.RECT.X2
|
||
sta RECT.SysWNDs+S.RECT.X1
|
||
*--------------------------------------
|
||
>LDYA L.WND.SysBar.Clk
|
||
ldx hSYSFON
|
||
jsr FON.GetTextSize
|
||
|
||
lda CB.Cache+S.CB.SrcW
|
||
clc
|
||
adc #2 1 + "00:00" + 1
|
||
sta CB.Cache+S.CB.SrcW
|
||
|
||
lda DCB.GFX+S.DCB.GFX.W
|
||
sec
|
||
sbc CB.Cache+S.CB.SrcW
|
||
sta RECT.SysWNDs+S.RECT.X2
|
||
sta RECT.SysClk+S.RECT.X1
|
||
|
||
lda DCB.GFX+S.DCB.GFX.W+1
|
||
sbc #0
|
||
sta RECT.SysWNDs+S.RECT.X2+1
|
||
sta RECT.SysClk+S.RECT.X1+1
|
||
|
||
lda DCB.GFX+S.DCB.GFX.W
|
||
clc
|
||
sbc #0
|
||
sta RECT.SysClk+S.RECT.X2
|
||
lda DCB.GFX+S.DCB.GFX.W+1
|
||
sbc #0
|
||
sta RECT.SysClk+S.RECT.X2+1
|
||
|
||
jsr SYSBAR.Show
|
||
|
||
rts
|
||
*--------------------------------------
|
||
WND.Quit lda WND.Screen+S.OBJ.hPARENT
|
||
beq .8
|
||
|
||
pha
|
||
>PUSHBI IOCTL.CLOSE
|
||
>PUSHWZ
|
||
pla
|
||
>SYSCALL2 IOCTL
|
||
|
||
.8 clc
|
||
WND.Quit.RTS rts
|
||
*--------------------------------------
|
||
* guiNewWnd(sFlags, iX1, iY1, iW, iH)
|
||
*--------------------------------------
|
||
WND.New ldy WND.Stack.Top
|
||
cpy #WND.MAX
|
||
bcs .98
|
||
|
||
lda #S.OBJ.T.WND
|
||
jsr OBJ.New
|
||
bcs .99
|
||
|
||
* >STYA ZPObjPtr
|
||
phx
|
||
|
||
ldy #S.OBJ.H
|
||
jsr OBJ.PullWordAtY
|
||
|
||
ldy #S.OBJ.W
|
||
jsr OBJ.PullWordAtY
|
||
|
||
ldy #S.OBJ.Y1
|
||
jsr OBJ.PullWordAtY
|
||
|
||
ldy #S.OBJ.X1
|
||
jsr OBJ.PullWordAtY
|
||
|
||
>PULLA
|
||
bit #S.WND.F.RESIZE
|
||
beq .2
|
||
|
||
ora #S.OBJ.F.BORDER
|
||
|
||
.2 ldy #S.OBJ.F
|
||
sta (ZPObjPtr),y
|
||
|
||
ldy #S.PS.PID
|
||
lda (pPs),y
|
||
|
||
ldy #S.OBJ.hOWNER
|
||
sta (ZPObjPtr),y
|
||
|
||
lda L.WND.Desktop
|
||
ldx L.WND.Desktop+1
|
||
ldy #S.OBJ.hPARENT
|
||
jsr OBJ.SetAXAtY
|
||
|
||
lda L.WND.fPaint
|
||
ldx L.WND.fPaint+1
|
||
ldy #S.WND.fPaint
|
||
jsr OBJ.SetAXAtY
|
||
|
||
pla ID
|
||
|
||
* clc
|
||
rts
|
||
|
||
.98 lda #E.OOH
|
||
|
||
.99 >POP 9
|
||
|
||
rts
|
||
*--------------------------------------
|
||
WND.SetMBar >PULLW ZPPtr1
|
||
|
||
jsr OBJ.PullHWND
|
||
|
||
>LDYA ZPPtr1
|
||
jsr MBAR.New
|
||
bcs .9
|
||
|
||
ldy #S.WND.pMBAR
|
||
sta (ZPWNDPtr),y
|
||
|
||
* clc
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.ClrStatus ldy #S.OBJ.S
|
||
eor #$ff
|
||
and (ZPWNDPtr),y
|
||
sta (ZPWNDPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
WND.SetStatus ldy #S.OBJ.S
|
||
ora (ZPWNDPtr),y
|
||
sta (ZPWNDPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
* ZPWNDPtr
|
||
* ZPObjPtr
|
||
*--------------------------------------
|
||
WND.AddChild.I ldy #S.OBJ.pChilds
|
||
lda (ZPWNDPtr),y
|
||
sta ZPPtr1
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sta ZPPtr1+1
|
||
ora ZPPtr1
|
||
bne .1
|
||
|
||
lda ZPObjPtr+1
|
||
sta (ZPWNDPtr),y
|
||
dey
|
||
lda ZPObjPtr
|
||
sta (ZPWNDPtr),y
|
||
clc
|
||
rts
|
||
|
||
.1 ldy #S.OBJ.pNext
|
||
lda (ZPPtr1),y
|
||
tax
|
||
iny
|
||
ora (ZPPtr1),y
|
||
beq .2
|
||
|
||
lda (ZPPtr1),y
|
||
stx ZPPtr1
|
||
sta ZPPtr1+1
|
||
bra .1
|
||
|
||
.2 lda ZPObjPtr+1
|
||
sta (ZPPtr1),y
|
||
dey
|
||
lda ZPObjPtr
|
||
sta (ZPPtr1),y
|
||
clc
|
||
rts
|
||
*--------------------------------------
|
||
WND.Enter
|
||
WND.Leave
|
||
*--------------------------------------
|
||
WND.Destroy clc
|
||
rts
|
||
*--------------------------------------
|
||
WND.Activate jsr OBJ.GetHWNDA
|
||
|
||
|
||
clc
|
||
WND.Activate.RTS
|
||
rts
|
||
*--------------------------------------
|
||
WND.Bring2Front ldx WND.Stack.Idx
|
||
cpx WND.Stack.Top
|
||
beq WND.Activate.RTS
|
||
|
||
lda WND.Stack-1,x
|
||
pha
|
||
|
||
.1 lda WND.Stack,x
|
||
sta WND.Stack-1,x
|
||
inx
|
||
cpx WND.Stack.Top
|
||
bne .1
|
||
|
||
dec WND.Stack.Top
|
||
|
||
.2 pla
|
||
*--------------------------------------
|
||
* guiShowWnd( hWND )
|
||
*--------------------------------------
|
||
WND.Show sta WND.hWND
|
||
|
||
>LDYA L.WND.Desktop
|
||
jsr CLIP.GetRect
|
||
|
||
ldx WND.Stack.Top
|
||
beq .1
|
||
|
||
lda WND.Stack-1,x
|
||
jsr OBJ.GetHWNDA
|
||
|
||
lda #S.WND.S.ACTIVE
|
||
jsr WND.ClrStatus
|
||
|
||
jsr WND.DrawTitleBar
|
||
|
||
.1 lda WND.hWND
|
||
ldx WND.Stack.Top
|
||
|
||
sta WND.Stack,x
|
||
inc WND.Stack.Top
|
||
*--------------------------------------
|
||
WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||
|
||
jsr OBJ.SetX2Y2
|
||
|
||
jsr WND.ResetInnerW
|
||
|
||
lda #S.WND.S.ACTIVE
|
||
jsr WND.SetStatus
|
||
|
||
>LDYA ZPWNDPtr
|
||
ldx #1
|
||
jsr OBJ.DrawBorders
|
||
*--------------------------------------
|
||
.1 ldy #S.OBJ.Y1
|
||
lda (ZPWNDPtr),y
|
||
sta Counter
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sta Counter+1
|
||
|
||
ldy #S.WND.pTITLE+1
|
||
lda (ZPWNDPtr),y
|
||
bne .2
|
||
|
||
ldy #S.OBJ.S
|
||
lda (ZPWNDPtr),y
|
||
and #S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MIN+S.WND.F.MAX
|
||
beq .3
|
||
|
||
.2 lda SYSFON.Hp2
|
||
jsr WND.Add2Counter
|
||
|
||
ldy #S.WND.TBarY2
|
||
jsr WND.SetAXAtY
|
||
|
||
lda #S.WND.S.HASTBAR
|
||
jsr WND.SetStatus
|
||
|
||
jsr WND.DrawTitleBar
|
||
bcs .9
|
||
*--------------------------------------
|
||
.3 ldy #S.WND.pMBAR
|
||
lda (ZPWNDPtr),y
|
||
beq .4
|
||
|
||
ldy #S.WND.MBarY1
|
||
jsr WND.SetCounterAtY
|
||
|
||
lda SYSFON.Hp1
|
||
jsr WND.Add2Counter
|
||
|
||
ldy #S.WND.MBarY2
|
||
jsr WND.SetAXAtY
|
||
|
||
lda #S.WND.S.HASMBAR
|
||
jsr WND.SetStatus
|
||
|
||
ldy #S.WND.pMBAR
|
||
lda (ZPWNDPtr),y
|
||
jsr MBAR.Draw
|
||
bcs .9
|
||
*--------------------------------------
|
||
.4 jsr CB.GetBuf
|
||
bcs .9
|
||
|
||
ldy #S.WND.InnerY1
|
||
jsr WND.SetCounterAtY
|
||
|
||
ldy #S.WND.pSTATUS+1
|
||
lda (ZPWNDPtr),y
|
||
beq .8
|
||
|
||
lda SYSFON.H
|
||
jsr WND.Add2Counter
|
||
|
||
ldy #S.WND.InnerY2
|
||
lda (ZPWNDPtr),y
|
||
clc +1
|
||
sbc SYSFON.H
|
||
sta (ZPWNDPtr),y
|
||
tax
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sbc #0
|
||
sta (ZPWNDPtr),y
|
||
|
||
inx
|
||
bne .5
|
||
|
||
inc
|
||
|
||
.5 ldy #S.WND.SBarY1+1
|
||
sta (ZPWNDPtr),y
|
||
dey
|
||
txa
|
||
sta (ZPWNDPtr),y
|
||
|
||
lda #S.WND.S.HASSBAR
|
||
jsr WND.SetStatus
|
||
|
||
jsr WND.DrawStatusBar
|
||
*--------------------------------------
|
||
.8 ldy #S.WND.InnerH
|
||
lda (ZPWNDPtr),y
|
||
sec
|
||
sbc Counter
|
||
sta (ZPWNDPtr),y
|
||
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sbc Counter+1
|
||
sta (ZPWNDPtr),y
|
||
|
||
jsr CB.FlushBuf
|
||
|
||
lda WND.hWND
|
||
pha
|
||
jmp WND.Paint1
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.ResetInnerW ldy #S.OBJ.X1
|
||
ldx #S.WND.InnerX1
|
||
jsr .1
|
||
|
||
ldy #S.OBJ.Y1
|
||
ldx #S.WND.InnerY1
|
||
|
||
ldy #S.OBJ.X2
|
||
ldx #S.WND.InnerX2
|
||
jsr .1
|
||
|
||
ldy #S.OBJ.Y2
|
||
ldx #S.WND.InnerY2
|
||
jsr .1
|
||
|
||
ldy #S.OBJ.W
|
||
ldx #S.WND.InnerW
|
||
jsr .1
|
||
|
||
ldy #S.OBJ.H
|
||
ldx #S.WND.InnerH
|
||
|
||
.1 lda (ZPWNDPtr),y
|
||
pha
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
phx
|
||
ply
|
||
iny
|
||
sta (ZPWNDPtr),y
|
||
dey
|
||
pla
|
||
sta (ZPWNDPtr),y
|
||
rts
|
||
*--------------------------------------
|
||
WND.Add2Counter clc
|
||
adc Counter
|
||
sta Counter
|
||
bcc .8
|
||
|
||
inc Counter+1
|
||
|
||
.8 ldx Counter+1
|
||
rts
|
||
*--------------------------------------
|
||
WND.SetCounterAtY
|
||
lda Counter
|
||
ldx Counter+1
|
||
*--------------------------------------
|
||
WND.SetAXAtY sta (ZPWNDPtr),y
|
||
iny
|
||
txa
|
||
sta (ZPWNDPtr),y
|
||
|
||
WND.SetAXAtY.9 rts
|
||
*--------------------------------------
|
||
WND.DrawTitleBar
|
||
jsr CB.GetBuf
|
||
bcs WND.SetAXAtY.9
|
||
|
||
lda #S.CB.CMD.FILLRECT
|
||
sta CB.Cache+S.CB.CMD
|
||
|
||
lda #S.CB.OP.SET
|
||
sta CB.Cache+S.CB.OP
|
||
lda #S.CB.M.C16
|
||
sta CB.Cache+S.CB.M
|
||
|
||
ldx PREFS.TBarColorI
|
||
|
||
ldy #S.OBJ.S
|
||
lda (ZPWNDPtr),y
|
||
and #S.WND.S.ACTIVE
|
||
beq .10
|
||
|
||
ldx PREFS.TBarColorA
|
||
|
||
.10 stx CB.Cache+S.CB.COLOR
|
||
|
||
ldy #S.OBJ.X1+5 X1,Y1,X2
|
||
ldx #5
|
||
|
||
.11 lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.X1,x
|
||
dey
|
||
dex
|
||
bpl .11
|
||
|
||
ldy #S.OBJ.Y1
|
||
lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.Y1
|
||
sec
|
||
adc SYSFON.H
|
||
sta CB.Cache+S.CB.Y2
|
||
|
||
iny
|
||
|
||
lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.Y1+1
|
||
adc #0
|
||
sta CB.Cache+S.CB.Y2+1
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
jsr CB.IncY1
|
||
|
||
* TOP LEFT ICON
|
||
ldy #S.WND.ICON+1
|
||
lda (ZPWNDPtr),y
|
||
tax
|
||
dey
|
||
ora (ZPWNDPtr),y
|
||
bne .1
|
||
|
||
>LDYA L.BM.Apple
|
||
bra .2
|
||
|
||
.1 lda (ZPWNDPtr),y
|
||
tay
|
||
txa
|
||
|
||
.2 jsr DRAW.yaBM
|
||
|
||
jsr WND.DrawTitleBarText
|
||
bcs .9
|
||
|
||
* TOP RIGHT ICONS
|
||
|
||
ldy #S.OBJ.X2
|
||
lda (ZPWNDPtr),y
|
||
sec
|
||
sbc #48
|
||
sta CB.Cache+S.CB.X1
|
||
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sbc #0
|
||
sta CB.Cache+S.CB.X1+1
|
||
|
||
ldy #S.OBJ.F
|
||
lda (ZPWNDPtr),y
|
||
bit #S.WND.F.MIN
|
||
beq .3
|
||
|
||
ldx #BM.ID.MIN
|
||
jsr DRAW.xBM
|
||
|
||
.3 lda CB.Cache+S.CB.X1
|
||
clc
|
||
adc #16
|
||
sta CB.Cache+S.CB.X1
|
||
bcc .31
|
||
|
||
inc CB.Cache+S.CB.X1+1
|
||
|
||
.31 ldy #S.OBJ.F
|
||
lda (ZPWNDPtr),y
|
||
bit #S.WND.F.MAX
|
||
beq .4
|
||
|
||
ldx #BM.ID.MAX
|
||
jsr DRAW.xBM
|
||
|
||
.4 lda CB.Cache+S.CB.X1
|
||
clc
|
||
adc #16
|
||
sta CB.Cache+S.CB.X1
|
||
bcc .41
|
||
|
||
inc CB.Cache+S.CB.X1+1
|
||
|
||
.41 ldy #S.OBJ.F
|
||
lda (ZPWNDPtr),y
|
||
bit #S.WND.F.CLOSE
|
||
beq .8
|
||
|
||
ldx #BM.ID.CLOSE
|
||
jsr DRAW.xBM
|
||
|
||
.8 jmp CB.FlushBuf
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.DrawTitleBarText
|
||
ldy #S.WND.pTITLE
|
||
lda (ZPWNDPtr),y
|
||
pha
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
ply
|
||
|
||
ldx hSYSFON
|
||
jsr FON.GetTextSize
|
||
|
||
lda PREFS.XMargin
|
||
asl
|
||
* clc
|
||
adc CB.Cache+S.CB.SrcW
|
||
sta CB.Cache+S.CB.SrcW
|
||
bcc .1
|
||
|
||
inc CB.Cache+S.CB.SrcW+1
|
||
|
||
.1 ldy #S.OBJ.W
|
||
lda (ZPWNDPtr),y
|
||
sec
|
||
sbc CB.Cache+S.CB.SrcW
|
||
sta DX
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sbc CB.Cache+S.CB.SrcW+1
|
||
|
||
lsr
|
||
ror DX
|
||
sta DX+1
|
||
|
||
ldy #S.OBJ.X1
|
||
lda (ZPWNDPtr),y
|
||
clc
|
||
adc DX
|
||
* and PREFS.BestViewedX
|
||
and #$f8
|
||
sta CB.Cache+S.CB.X1
|
||
tax
|
||
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
adc DX+1
|
||
sta CB.Cache+S.CB.X1+1
|
||
|
||
pha
|
||
txa
|
||
|
||
clc
|
||
adc CB.Cache+S.CB.SrcW
|
||
* ora PREFS.nBestViewedX
|
||
and #$f8
|
||
sta CB.Cache+S.CB.X2
|
||
|
||
pla
|
||
adc CB.Cache+S.CB.SrcW+1
|
||
sta CB.Cache+S.CB.X2+1
|
||
|
||
jsr CB.DecY2
|
||
|
||
lda #C.WHITE
|
||
jsr CB.FillRectMonoA
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
lda PREFS.XMargin
|
||
jsr CB.AddA2X1
|
||
|
||
ldy #S.WND.pTITLE
|
||
lda (ZPWNDPtr),y
|
||
pha
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
ply
|
||
|
||
ldx hSYSFON
|
||
jmp DRAW.YAText
|
||
*--------------------------------------
|
||
WND.DrawStatusBar
|
||
jsr CB.GetBuf
|
||
bcs .9
|
||
|
||
jsr CB.BorderLineH
|
||
|
||
ldy #S.OBJ.X1
|
||
ldx #S.CB.X1
|
||
jsr CB.GetWndYCacheX
|
||
|
||
ldy #S.OBJ.X2
|
||
ldx #S.CB.X2
|
||
jsr CB.GetWndYCacheX
|
||
|
||
ldy #S.WND.SBarY1
|
||
ldx #S.CB.Y1
|
||
jsr CB.GetWndYCacheX
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
jsr CB.IncY1
|
||
|
||
lda PREFS.SBarColor
|
||
jsr CB.FillRectMonoA
|
||
|
||
ldy #S.OBJ.Y2
|
||
ldx #S.CB.Y2
|
||
jsr CB.GetWndYCacheX
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
lda #4
|
||
jsr CB.AddA2X1
|
||
|
||
ldy #S.WND.pSTATUS
|
||
lda (ZPWNDPtr),y
|
||
pha
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
ply
|
||
|
||
ldx hSYSFON
|
||
jsr DRAW.YAText
|
||
|
||
jmp CB.FlushBuf
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.Paint pha hWND
|
||
|
||
jsr OBJ.GetHWNDA
|
||
|
||
WND.Paint1 ldy #S.WND.fPaint
|
||
lda (ZPWNDPtr),y
|
||
sta ZPPtr1
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sta ZPPtr1+1
|
||
|
||
pla
|
||
|
||
jmp (ZPPtr1)
|
||
*--------------------------------------
|
||
WND.fPaint jsr OBJ.GetHWNDA
|
||
jsr WND.GetInnerInClip
|
||
|
||
jsr WND.fPaint.BG
|
||
bcs .9
|
||
|
||
jsr WND.GetChilds
|
||
beq .8
|
||
|
||
.1 jsr OBJ.Paint
|
||
bcs .9
|
||
|
||
jsr OBJ.GetNext
|
||
bne .1
|
||
|
||
.8 clc
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.GetInnerInClip
|
||
ldy #S.WND.InnerX1+7
|
||
ldx #7
|
||
|
||
.1 lda (ZPWNDPtr),y
|
||
sta CLIP.Rect+S.RECT.X1,x
|
||
dey
|
||
dex
|
||
bpl .1
|
||
|
||
rts
|
||
*--------------------------------------
|
||
WND.fPaint.BG jsr CB.GetBuf
|
||
bcs .9
|
||
|
||
lda #S.CB.CMD.FILLRECT
|
||
sta CB.Cache+S.CB.CMD
|
||
|
||
lda #S.CB.OP.SET+S.CB.OP.COLOR
|
||
sta CB.Cache+S.CB.OP
|
||
|
||
lda #S.CB.M.MONO
|
||
sta CB.Cache+S.CB.M
|
||
|
||
ldy #S.WND.BGCOLOR
|
||
lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.COLOR
|
||
|
||
ldx #7
|
||
|
||
.1 lda CLIP.Rect+S.RECT.X1,x
|
||
sta CB.Cache+S.CB.X1,x
|
||
dex
|
||
bpl .1
|
||
|
||
jsr CB.Cache2CBBuf
|
||
*--------------------------------------
|
||
ldy #S.WND.BGBM
|
||
lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.SrcPtr
|
||
iny
|
||
ora (ZPWNDPtr),y
|
||
beq .8
|
||
|
||
lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.SrcPtr+1
|
||
|
||
jsr CB.ResetSrcXY
|
||
|
||
ldy #S.WND.InnerW+3
|
||
ldx #3
|
||
|
||
.2 lda (ZPWNDPtr),y
|
||
sta CB.Cache+S.CB.SrcW,x
|
||
dey
|
||
dex
|
||
bpl .2
|
||
|
||
lda #S.CB.CMD.BITBLT
|
||
sta CB.Cache+S.CB.CMD
|
||
|
||
jsr CB.Cache2CBBuf
|
||
|
||
.8 jmp CB.FlushBuf
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
WND.GetChilds ldy #S.OBJ.pChilds
|
||
lda (ZPWNDPtr),y
|
||
sta ZPObjPtr
|
||
iny
|
||
lda (ZPWNDPtr),y
|
||
sta ZPObjPtr+1
|
||
ora ZPObjPtr
|
||
rts
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/lib/libgui.s.wnd
|
||
LOAD usr/src/lib/libgui.s
|
||
ASM
|