NEW AUTO 3,1 *-------------------------------------- * A = Object Class *-------------------------------------- OBJ.New pha tax ldy OBJ.SizeOf,x lda #0 >SYSCALL GetMem bcs .9 >STYA ZPObjPtr pla sta (ZPObjPtr) tay lda OBJ.SizeOf,y tay dey lda #0 .1 sta (ZPObjPtr),y dey bne .1 * clc .9 rts *-------------------------------------- OBJ.Enter lda (ZPObjPtr) tax jmp (J.OBJ.Enter,x) *-------------------------------------- OBJ.Leave lda (ZPObjPtr) tax jmp (J.OBJ.Leave,x) *-------------------------------------- OBJ.Paint lda (ZPObjPtr) tax jmp (J.OBJ.fPaintX,x) *-------------------------------------- * hOBJ, Prop8, Value16 *-------------------------------------- OBJ.SetProp ldy #3 lda (pStack),y hOBJ >SYSCALL2 GetMemPtr >STYA ZPObjPtr ldy #2 lda (pStack),y tay lda (ZPObjPtr),y pha old value >PULLA sta (ZPObjPtr),y iny lda (ZPObjPtr),y tax >PULLA sta (ZPObjPtr),y txa ply >RET 2 *-------------------------------------- * hOBJ, Prop8 *-------------------------------------- OBJ.GetProp >PULLA pha >PULLA >SYSCALL2 GetMemPtr >STYA ZPObjPtr ply OBJ.GetPropAtY lda (ZPObjPtr),y pha iny ora (ZPObjPtr),y clc bne .1 sec .1 lda (ZPObjPtr),y ply rts *-------------------------------------- OBJ.PullDXDY >PULLW DY >PULLW DX rts *-------------------------------------- OBJ.SetDXDYX1Y1 ldx #3 ldy #S.OBJ.X1+3 .1 lda DX,x sta (ZPObjPtr),y dey dex bpl .1 rts *-------------------------------------- OBJ.SetX2Y2 >STYA ZPPtr1 ldy #S.OBJ.W+1 lda (ZPPtr1),y tax dey lda (ZPPtr1),y bne .1 dex .1 dec clc ldy #S.OBJ.X1 adc (ZPPtr1),y pha txa iny adc (ZPPtr1),y ldy #S.OBJ.X2+1 sta (ZPPtr1),y dey pla sta (ZPPtr1),y *-------------------------------------- ldy #S.OBJ.H+1 lda (ZPPtr1),y tax dey lda (ZPPtr1),y bne .2 dex .2 dec clc ldy #S.OBJ.Y1 adc (ZPPtr1),y pha txa iny adc (ZPPtr1),y ldy #S.OBJ.Y2+1 sta (ZPPtr1),y dey pla sta (ZPPtr1),y rts *-------------------------------------- OBJ.GetPtr lda (ZPObjPtr),y pha iny lda (ZPObjPtr),y beq .1 ply rts .1 plx >LDYA L.BMs,x rts *-------------------------------------- OBJ.SetAXAtY sta (ZPObjPtr),y iny txa sta (ZPObjPtr),y rts *-------------------------------------- OBJ.PullY1X1 ldy #S.OBJ.Y1 jsr OBJ.PullWordAtY ldy #S.OBJ.X1 *-------------------------------------- OBJ.PullWordAtY >PULLA sta (ZPObjPtr),y iny OBJ.PullByteAtY >PULLA sta (ZPObjPtr),y rts *-------------------------------------- OBJ.PullHWND >PULLA OBJ.GetHWNDA >SYSCALL2 GetMemPtr >STYA ZPWNDPtr rts *-------------------------------------- OBJ.DrawBorders >STYA ZPObjPtr stx IY ldy #S.OBJ.F lda (ZPObjPtr),y * and #S.OBJ.F.BORDER * bne .1 bmi .1 clc .9 rts .1 jsr CB.GetBuf bcs .9 jsr CB.BorderLineH 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 jsr CB.Cache2CBBuf jmp CB.FlushBuf *------------------------------------- OBJ.GetNext ldy #S.OBJ.pNext lda (ZPObjPtr),y tax iny lda (ZPObjPtr),y stx ZPObjPtr sta ZPObjPtr+1 ora ZPObjPtr rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.obj LOAD usr/src/lib/libgui.s ASM