NEW AUTO 3,1 *-------------------------------------- CB.GetWndYCacheX lda (ZPWNDPtr),y sta CB.Cache,x iny lda (ZPWNDPtr),y sta CB.Cache+1,x rts *-------------------------------------- CB.SwapX1X2 ldx CB.Cache+S.CB.X1 ldy CB.Cache+S.CB.X1+1 lda CB.Cache+S.CB.X2 sta CB.Cache+S.CB.X1 lda CB.Cache+S.CB.X2+1 sta CB.Cache+S.CB.X1+1 stx CB.Cache+S.CB.X2 sty CB.Cache+S.CB.X2+1 rts *-------------------------------------- CB.SwapY1Y2 ldx CB.Cache+S.CB.Y1 ldy CB.Cache+S.CB.Y1+1 lda CB.Cache+S.CB.Y2 sta CB.Cache+S.CB.Y1 lda CB.Cache+S.CB.Y2+1 sta CB.Cache+S.CB.Y1+1 stx CB.Cache+S.CB.Y2 sty CB.Cache+S.CB.Y2+1 rts *-------------------------------------- CB.BorderLineH lda #S.CB.CMD.HLINE sta CB.Cache+S.CB.CMD lda #S.CB.OP.SET sta CB.Cache+S.CB.OP lda #S.CB.M.MONO sta CB.Cache+S.CB.M lda PREFS.BorderColor sta CB.Cache+S.CB.COLOR rts *-------------------------------------- CB.FillRectMonoA sta CB.Cache+S.CB.COLOR 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.MONO sta CB.Cache+S.CB.M rts *-------------------------------------- CB.PullY2X2Y1X1 ldx #7 bra CB.PullX CB.PullY1X1 ldx #3 CB.PullX >PULLA sta CB.Cache+S.CB.X1-1,x >PULLA sta CB.Cache+S.CB.X1,x dex dex bpl CB.PullX rts **-------------------------------------- CB.X2ToX1 ldy CB.Cache+S.CB.X2 lda CB.Cache+S.CB.X2+1 sty CB.Cache+S.CB.X1 sta CB.Cache+S.CB.X1+1 rts *-------------------------------------- CB.AddA2X1 clc adc CB.Cache+S.CB.X1 sta CB.Cache+S.CB.X1 bcc .1 inc CB.Cache+S.CB.X1+1 .1 rts *-------------------------------------- CB.IncY1 inc CB.Cache+S.CB.Y1 bne .1 inc CB.Cache+S.CB.Y1+1 .1 rts *-------------------------------------- CB.DecY2 lda CB.Cache+S.CB.Y2 bne .1 dec CB.Cache+S.CB.Y2+1 .1 dec CB.Cache+S.CB.Y2 rts *-------------------------------------- CB.GetObjX1Y1 ldy #S.OBJ.X1+3 ldx #3 bra CB.GetObjXY *-------------------------------------- CB.GetObjX1Y1X2Y2 ldy #S.OBJ.X1+7 ldx #7 CB.GetObjXY lda (ZPObjPtr),y sta CB.Cache+S.CB.X1,x dey dex bpl CB.GetObjXY rts *-------------------------------------- CB.GetObjSrcWH ldy #S.OBJ.W+3 W,H ldx #3 .1 lda (ZPObjPtr),y sta CB.Cache+S.CB.SrcW,x dey dex bpl .1 rts *-------------------------------------- CB.ResetSrcXY ldx #4 .1 stz CB.Cache+S.CB.SrcX-1,x dex bne .1 rts *-------------------------------------- CB.SrcWCenterH ldy #S.OBJ.W lda (ZPObjPtr),y sec sbc CB.Cache+S.CB.SrcW pha iny lda (ZPObjPtr),y sbc CB.Cache+S.CB.SrcW+1 lsr tax pla ror clc adc CB.Cache+S.CB.X1 sta CB.Cache+S.CB.X1 txa adc CB.Cache+S.CB.X1+1 sta CB.Cache+S.CB.X1+1 rts *-------------------------------------- CB.GetBuf clc ldx hCBBuf bne .9 >LDYAI 1024 >SYSCALL2 GetMem bcs .9 stx hCBBuf >STYA ZPCBBufPtr .9 rts *-------------------------------------- CB.Cache2CBBufG jsr CB.ToGlobal *-------------------------------------- CB.Cache2CBBuf lda CB.Cache lsr tax ldy CB.CmdLen-1,x .1 lda CB.Cache,y sta (ZPCBBufPtr),y dey bpl .1 *-------------------------------------- CB.BufNext lda (ZPCBBufPtr) Get Cmd lsr tax lda CB.CmdLen-1,x sec +1 adc ZPCBBufPtr sta ZPCBBufPtr bcc .1 inc ZPCBBufPtr+1 .1 rts *-------------------------------------- * CLIP.Rect = Target Object *-------------------------------------- CB.Write jsr PTR.Disable jsr CB.GFXWriteClip .8 jmp PTR.Enable *-------------------------------------- * Y,A = Target Object *-------------------------------------- CB.FlushBufToYA jsr CLIP.GetRect CB.FlushBuf ldx hCBBuf beq .8 jsr PTR.Disable lda #0 sta (ZPCBBufPtr) lda hCBBuf >SYSCALL2 GetMemPtr >STYA ZPCBBufPtr *-------------------------------------- .1 lda (ZPCBBufPtr) Get Cmd beq .7 lsr tax ldy CB.CmdLen-1,x .2 lda (ZPCBBufPtr),y sta CB.Cache,y dey bpl .2 * lda (ZPCBBufPtr) A = CB.CMD cmp #S.CB.CMD.DRAWTEXT2 bne .4 lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD sta CB.Cache+S.CB.CMD ldx #0 Select CB.Cache jsr CB.GFXWriteX Direct Write (no clip) bcs .9 jsr CB.GFXWriteClip lda CB.Cache+S.CB.SrcPtr >SYSCALL2 FreeStkObj bra .5 *-------------------------------------- .4 jsr CB.GFXWriteClip .5 jsr CB.BufNext bra .1 .7 lda hCBBuf stz hCBBuf >SYSCALL2 FreeMem jmp PTR.Enable .8 clc .9 rts *-------------------------------------- CB.ToGlobal lda ZPWNDPtr ldx ZPWNDPtr+1 .1 sta ZPPtr1 stx ZPPtr1+1 ldy #S.WND.InnerX1 ldx #S.CB.X1 jsr CB.AddPtr1YtoCBX ldy #S.WND.InnerY1 ldx #S.CB.Y1 jsr CB.AddPtr1YtoCBX ldy #S.WND.InnerX1 ldx #S.CB.X2 jsr CB.AddPtr1YtoCBX ldy #S.WND.InnerY1 ldx #S.CB.Y2 jsr CB.AddPtr1YtoCBX ldy #S.OBJ.hPARENT+1 lda (ZPPtr1),y beq .8 00xx = hDev tax dey lda (ZPPtr1),y bra .1 .8 clc rts *-------------------------------------- CB.AddPtr1YtoCBX lda (ZPPtr1),y clc adc CB.Cache,x sta CB.Cache,x iny lda (ZPPtr1),y adc CB.Cache+1,x sta CB.Cache+1,x rts *-------------------------------------- * CB.Cache -> CLIP.Cache *-------------------------------------- CB.GFXWriteClip jsr CLIP.CB.Cache bcs CB.GFXWrite.9 CB.GFXWrite ldx #2 Select CLIP.Cache *-------------------------------------- * X=0:CB.Cache, X=2:CLIP.Cache *-------------------------------------- CB.GFXWriteX >PUSHB WND.Screen+S.OBJ.hPARENT >PUSHBI IOCTL.WRITE >PUSHW L.CB.Cache,x >SYSCALL2 IOCTL CB.GFXWrite.9 rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.cb LOAD usr/src/lib/libgui.s ASM