mirror of
https://github.com/A2osX/A2osX.git
synced 2024-05-29 03:41:30 +00:00
586 lines
8.3 KiB
Plaintext
586 lines
8.3 KiB
Plaintext
|
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
|