NEW AUTO 3,1 *-------------------------------------- WND.Init >PUSHBI 0 >LDYA L.DEVNAME.GFX >SYSCALL2 open bcs .9 sta WND.Screen+S.OBJ.hPARENT >LDYA L.DCB.GFX >STYA IOCTL+S.IOCTL.BUFPTR lda #S.IOCTL.STATCODE.GETDCB sta IOCTL+S.IOCTL.STATCODE >PUSHB WND.Screen+S.OBJ.hPARENT >PUSHBI IOCTL.STATUS >PUSHW L.IOCTL >SYSCALL2 IOCTL .9 rts *-------------------------------------- WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W >STYA WND.Screen+S.OBJ.W >STYA WND.Desktop+S.OBJ.W >STYA WND.SysBar+S.OBJ.W lda SYSFON.H clc adc #6 sta WND.SysBar+S.OBJ.H lda DCB.GFX+S.DCB.GFX.H sta WND.Screen+S.OBJ.H sec sbc WND.SysBar+S.OBJ.H sta WND.Desktop+S.OBJ.H sta WND.SysBar+S.OBJ.X1 lda DCB.GFX+S.DCB.GFX.H+1 sta WND.SysBar+S.OBJ.H+1 sbc #0 sta WND.Desktop+S.OBJ.H+1 sta WND.SysBar+S.OBJ.X1+1 >LDYA L.WND.Screen jsr OBJ.SetX2Y2 >LDYA L.WND.Desktop >STYA WND.Screen.Childs jsr OBJ.SetX2Y2 >LDYA L.WND.SysBar >STYA WND.Screen.Childs+2 jsr OBJ.SetX2Y2 lda #CUR.T.ARROW sta WND.Desktop+S.WND.hCUR sta WND.SysBar+S.WND.hCUR stz WND.Stack.Top rts *-------------------------------------- WND.Quit lda WND.Screen+S.OBJ.hPARENT beq .8 pha >PUSHBI IOCTL.CLOSE >PUSHWZ pla >SYSCALL2 IOCTL .8 clc rts *-------------------------------------- * F8, X116, Y116, W16, H16 *-------------------------------------- WND.Create ldy WND.Stack.Top cpy #WND.MAX bcs .90 >LDYAI S.WND >SYSCALL2 getmem bcs .9 >STYA ZPPtr1 lda #S.OBJ.T.WND sta (ZPPtr1) S.OBJ.T ldy #S.WND-1 lda #0 .1 sta (ZPPtr1),y dey bne .1 >PULLA ldy #S.OBJ.H sta (ZPPtr1),y >PULLA iny sta (ZPPtr1),y >PULLA ldy #S.OBJ.W sta (ZPPtr1),y >PULLA iny sta (ZPPtr1),y >PULLA ldy #S.OBJ.Y1 sta (ZPPtr1),y >PULLA iny sta (ZPPtr1),y >PULLA ldy #S.OBJ.X1 sta (ZPPtr1),y >PULLA iny sta (ZPPtr1),y >PULLA ldy #S.OBJ.F sta (ZPPtr1),y ldy #S.PS.PID lda (pPs),y ldy #S.OBJ.hOWNER sta (ZPPtr1),y txa ID ldy WND.Stack.Top sta WND.Stack inc WND.Stack.Top * clc rts .90 lda #E.OOH .9 >RET 9 *-------------------------------------- * hWND8, Prop8, Value16 *-------------------------------------- WND.SetProp ldy #3 lda (pStack),y hWND >SYSCALL2 GetMemPtr >STYA ZPPtr1 ldy #2 lda (pStack),y tay >PULLA sta (ZPPtr1),y iny >PULLA sta (ZPPtr1),y >RET 2 *-------------------------------------- * hWND8, Prop8 *-------------------------------------- WND.GetProp >PULLA pha >PULLA >SYSCALL2 GetMemPtr >STYA ZPPtr1 ply lda (ZPPtr1),y pha iny lda (ZPPtr1),y ply rts *-------------------------------------- * A = hWND *-------------------------------------- WND.Show >SYSCALL2 GetMemPtr >STYA ZPPtr1 jsr OBJ.SetX2Y2 jsr GetCBBuf bcs .9 stz Counter X stz Counter+1 Y ldy #S.OBJ.F lda (ZPPtr1),y and #S.WND.F.RESIZE+S.WND.F.BORDER beq .1 inc Counter 1 pixel L inc Counter 1 pixel R inc Counter+1 1 top inc Counter+1 1 bottom jsr WND.PaintBorders .1 ldy #S.WND.TITLE+1 lda (ZPPtr1),y beq .77 lda Counter+1 clc adc SYSFON.H inc inc sta Counter+1 jsr WND.PaintTitle bcs .9 .77 lda #0 jsr PutCBBuf >LDYA L.WND.Screen jsr DrawToYA lda hCBBuf >SYSCALL FreeMem clc .9 rts *-------------------------------------- WND.New clc rts *-------------------------------------- WND.Paint >STYA ZPPtr1 clc rts *-------------------------------------- WND.PaintBorders lda #S.CB.CMD.HLINE TOP jsr WND.PaintBorders.H ldy #S.OBJ.X1 .1 lda (ZPPtr1),y jsr PutCBBuf iny cpy #S.OBJ.Y2+2 bne .1 lda #S.CB.CMD.VLINE LEFT jsr WND.PaintBorders.H ldy #S.OBJ.X1 .2 lda (ZPPtr1),y jsr PutCBBuf iny cpy #S.OBJ.Y2+2 bne .2 lda #S.CB.CMD.VLINE RIGHT jsr WND.PaintBorders.H ldy #S.OBJ.X2 jsr WND.PaintPushWY ldy #S.OBJ.Y1 jsr WND.PaintPushWY ldy #S.OBJ.X2 jsr WND.PaintPushWY ldy #S.OBJ.Y2 jsr WND.PaintPushWY lda #S.CB.CMD.HLINE BOTTOM jsr WND.PaintBorders.H ldy #S.OBJ.X1 jsr WND.PaintPushWY ldy #S.OBJ.Y2 jsr WND.PaintPushWY ldy #S.OBJ.X2 jsr WND.PaintPushWY ldy #S.OBJ.Y2 jsr WND.PaintPushWY rts WND.PaintBorders.H jsr PutCBBuf lda #S.CB.OP.SET jsr PutCBBuf lda #S.CB.M.MONO jsr PutCBBuf lda PREFS.BORDERCOLOR jmp PutCBBuf WND.PaintPushWY lda (ZPPtr1),y jsr PutCBBuf iny lda (ZPPtr1),y jsr PutCBBuf rts *-------------------------------------- WND.PaintTitle ldx #S.CB-1 .1 stz CB.Cache,x dex bpl .1 lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD sta CB.Cache+S.CB.CMD lda #S.CB.OP.SET+S.CB.OP.INVERSE sta CB.Cache+S.CB.OP lda #S.CB.M.MONO sta CB.Cache+S.CB.M lda hSYSFONB sta CB.Cache+S.CB.hFont ldy #S.WND.TITLE lda (ZPPtr1),y sta CB.Cache+S.CB.TxtPtr iny lda (ZPPtr1),y sta CB.Cache+S.CB.TxtPtr+1 >DEBUG jsr GFXWrite.CB clc rts bcs .9 ldx #0 .8 lda CB.Cache,x jsr PutCBBuf inx cpx #S.CB.DstPtr+2 bne .8 clc .9 rts *-------------------------------------- WND.Close clc rts *-------------------------------------- MAN SAVE usr/src/lib/libgui.s.wnd LOAD usr/src/lib/libgui.s ASM