A2osX/LIB/LIBTUI.S.OBJ.txt

586 lines
8.3 KiB
Plaintext
Raw Normal View History

NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
OBJ.New >PULLW ZPPtr1 Params
>PULLB TempW hParent
>SYSCALL2 GetMemPtr
>STYA ZPPtr2
ldy #S.OBJ.Childs
.10 lda (ZPPtr2),y
beq .11
iny
cpy #S.OBJ
bcc .10
lda #E.OOH
* sec
rts
.11 sty TempW+1
lda (ZPPtr1) S.OBJ.T
tax
ldy OBJ.SIZES,x
lda #0
>SYSCALL2 GetMem
bcs .9
>STYA ZPObjPtr
phx
ldy #0
.1 lda (ZPPtr1),y
sta (ZPObjPtr),y
iny
cpy #S.OBJ.H+1
bne .1
lda (ZPPtr1) S.OBJ.T
tax
ldy OBJ.SIZES,x
lda #0
.2 dey
sta (ZPObjPtr),y
cpy #S.OBJ.pTITLE
bne .2
lda TempW
ldy #S.OBJ.P
sta (ZPObjPtr),y
>LDYA ZPObjPtr
jsr LIB.SetObjX2Y2
pla
ldy TempW+1
sta (ZPPtr2),y
pha
jsr .7
bcs .99
pla
rts
.7 lda (ZPObjPtr) S.OBJ.T
tax
jmp (J.ObjNew,x)
.99 plx
.9 rts
*--------------------------------------
OBJ.Destroy ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
pha
jsr LIB.GetObj
ldy #S.OBJ.Childs
.1 lda (ZPObjPtr),y
beq .2
phy
jsr OBJ.Destroy
ply
.2 iny
cpy #S.OBJ
bcc .1
pla
pha
jsr LIB.GetObj
jsr .7
pla
>SYSCALL2 FreeMem
plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
rts
.7 lda (ZPObjPtr) S.OBJ.T
tax
jmp (J.ObjDestroy,x)
*--------------------------------------
OBJ.Run ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
ldy #1
lda (pStack),y
jsr LIB.GetObj
ldy #S.OBJ.S
lda (ZPObjPtr),y
bpl .9 S.OBJ.S.bACTIVE
ldy #1
lda (pStack),y hOBJ
>PUSHA
lda (pStack),y Event
>PUSHA
jsr .80
bcc .8
ldy #S.OBJ.Childs
.1 lda (ZPObjPtr),y
beq .5
phy
>PUSHA hChild
ldy #1
lda (pStack),y Event
>PUSHA
jsr OBJ.Run
ply
bcc .8
.5 iny
cpy #S.OBJ
bne .1
.9 sec
.8 plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
rts
.80 lda (ZPObjPtr) S.OBJ.T
tax
jmp (J.ObjRun,x)
*--------------------------------------
OBJ.Draw >PUSHA hObj
jsr OBJ.Draw.Top
bcs .9
jsr OBJ.Draw.Body
bcs .9
jsr OBJ.Draw.Bottom
bcs .9
lda #S.OBJ.Childs
>PUSHA
.6 ldy #1
lda (pStack),y
jsr LIB.GetObj
lda (pStack)
tay
lda (ZPObjPtr),y
beq .7
jsr OBJ.Draw
bcs .99
.7 lda (pStack)
inc
sta (pStack)
cmp #S.OBJ
bne .6
clc
.99 inc pStack
.9 inc pStack
OBJ.Draw.RTS rts
*--------------------------------------
OBJ.Draw.Top lda (pStack)
jsr LIB.GetObj
ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bTITLE+S.OBJ.F.bHBorder
* clc
beq OBJ.Draw.RTS
jsr LIB.LineBufInit
ldy #S.OBJ.X1
lda (ZPObjPtr),y
tax
ldy #S.OBJ.Y1
lda (ZPObjPtr),y
tay
jsr LIB.GotoXY
ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bVBorder
beq .1
lda (ZPObjPtr)
jsr LIB.SetColor
ldx #SEQ.BORDERTL-SEQS
jsr LIB.LineBufSeqOut
.1 ldy #S.OBJ.F
lda (ZPObjPtr),y
bpl .4
ldx #SEQ.BAR-SEQS
jsr LIB.LineBufSeqOut
ldy #S.OBJ.InnerW
lda (ZPObjPtr),y
tax
ldy #S.OBJ.pTITLE
lda (ZPObjPtr),y
sta ZPPtr1
iny
lda (ZPObjPtr),y
sta ZPPtr1+1
beq .3
lda #C.SI
jsr LIB.LineBufCOut
ldy #0
.2 lda (ZPPtr1),y
beq .3
jsr LIB.LineBufCOut
iny
dex
bne .2
.3 txa
beq .31
lda #C.SPACE
.30 jsr LIB.LineBufCOut
dex
bne .30
.31 ldx #SEQ.BAREND-SEQS
jsr LIB.LineBufSeqOut
bra .6
.4 ldy #S.OBJ.InnerW
lda (ZPObjPtr),y
tax
lda #'q'
.5 jsr LIB.LineBufCOut
dex
bne .5
.6 ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bVBorder
beq .7
lda (ZPObjPtr)
jsr LIB.SetColor
ldx #SEQ.BORDERTR-SEQS
jsr LIB.LineBufSeqOut
.7 jmp LIB.LineBufOut
*--------------------------------------
OBJ.Draw.Body lda (pStack)
jsr LIB.GetObj
ldy #S.OBJ.InnerY
lda (ZPObjPtr),y
>PUSHA
ldy #S.OBJ.InnerH
lda (ZPObjPtr),y
>PUSHA Count
>PUSHBI 0 Relative Y
.1 jsr LIB.LineBufInit
ldy #3 hObj
lda (pStack),y
jsr LIB.GetObj
ldy #S.OBJ.X1
lda (ZPObjPtr),y
tax
ldy #2 InnerY
lda (pStack),y
tay
jsr LIB.GotoXY
lda (ZPObjPtr)
jsr LIB.SetColor
ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bVBorder
php
beq .2
ldx #SEQ.BORDERV-SEQS
jsr LIB.LineBufSeqOut
.2 jsr OBJ.Draw.Body.JMP
ldx #SEQ.NORMAL-SEQS
jsr LIB.LineBufSeqOut
plp
beq .4
ldy #S.OBJ.X2
lda (ZPObjPtr),y
tax
ldy #2 InnerY
lda (pStack),y
tay
jsr LIB.GotoXY
lda (ZPObjPtr)
jsr LIB.SetColor
ldx #SEQ.BORDERV-SEQS
jsr LIB.LineBufSeqOut
.4 jsr LIB.LineBufOut
bcs .9
lda (pStack) Relative Y
inc
sta (pStack)
ldy #2 InnerY
lda (pStack),y
inc
sta (pStack),y
dey
lda (pStack),y Count
dec
sta (pStack),y
bne .1
* clc
.9 >POP 3
OBJ.Draw.Body.RTS
rts
*--------------------------------------
OBJ.Draw.Body.JMP
lda (ZPObjPtr)
tax
jmp (J.ObjDraw,x)
*--------------------------------------
OBJ.Draw.Bottom lda (pStack)
jsr LIB.GetObj
ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bSTATUS+S.OBJ.F.bHBorder
* clc
beq OBJ.Draw.Body.RTS
jsr LIB.LineBufInit
ldy #S.OBJ.X1
lda (ZPObjPtr),y
tax
ldy #S.OBJ.Y2
lda (ZPObjPtr),y
tay
jsr LIB.GotoXY
ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bVBorder
beq .1
lda (ZPObjPtr)
jsr LIB.SetColor
ldx #SEQ.BORDERBL-SEQS
jsr LIB.LineBufSeqOut
.1 ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bSTATUS
beq .4
ldx #SEQ.BAR-SEQS
jsr LIB.LineBufSeqOut
ldy #S.OBJ.InnerW
lda (ZPObjPtr),y
tax
ldy #S.OBJ.pSTATUS
lda (ZPObjPtr),y
sta ZPPtr1
iny
lda (ZPObjPtr),y
sta ZPPtr1+1
beq .3
lda #C.SI
jsr LIB.LineBufCOut
ldy #0
.2 lda (ZPPtr1),y
beq .3
jsr LIB.LineBufCOut
iny
dex
bne .2
.3 txa
beq .31
lda #C.SPACE
.30 jsr LIB.LineBufCOut
dex
bne .30
.31 ldx #SEQ.BAREND-SEQS
jsr LIB.LineBufSeqOut
bra .6
.4 ldy #S.OBJ.InnerW
lda (ZPObjPtr),y
tax
lda #'q'
.5 jsr LIB.LineBufCOut
dex
bne .5
.6 ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bVBorder
beq .7
lda (ZPObjPtr)
jsr LIB.SetColor
ldx #SEQ.BORDERBR-SEQS
jsr LIB.LineBufSeqOut
.7 jmp LIB.LineBufOut
*--------------------------------------
OBJ.GetProp ldy #1 hObj
lda (pStack),y
jsr LIB.GetObj
>PULLA
tay prop
lda (ZPObjPtr),y
pha
iny
lda (ZPObjPtr),y
ply
inc pStack
* clc
rts
*--------------------------------------
OBJ.SetProp ldy #3 hObj
lda (pStack),y
jsr LIB.GetObj
ldy #2
lda (pStack),y
tay prop
>PULLA
sta (ZPObjPtr),y
iny
>PULLA
sta (ZPObjPtr),y
inc pStack
inc pStack
* clc
rts
*--------------------------------------
OBJ.Activate pha
jsr LIB.FindActive
bcs .1
jsr OBJ.Deactivate
.1 pla
*--------------------------------------
OBJ.Activate2 jsr LIB.GetObj
ldy #S.OBJ.S
lda (ZPObjPtr),y
ora #S.OBJ.S.bACTIVE
sta (ZPObjPtr),y
lda (ZPObjPtr)
tax
jmp (J.ObjActivate,x)
*--------------------------------------
OBJ.Deactivate jsr LIB.GetObj
ldy #S.OBJ.S
lda (ZPObjPtr),y
and #S.OBJ.S.bACTIVE^$ff
sta (ZPObjPtr),y
lda (ZPObjPtr)
tax
jmp (J.ObjDeactivate,x)
*--------------------------------------
MAN
SAVE usr/src/lib/libtui.s.obj
LOAD usr/src/lib/libtui.s
ASM