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