NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF lib/libgui *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i .INB inc/io.i .INB inc/mli.i .INB inc/gfx.i .INB inc/xy.i .INB inc/libgui.i *-------------------------------------- WND.MAX .EQ 64 MENU.MAX .EQ 4 *-------------------------------------- .MA SWAP16 lda ]1 ldx ]2 stx ]1 sta ]2 lda ]1+1 ldx ]2+1 stx ]1+1 sta ]2+1 .EM .MA NOT16 sec lda #0 sbc ]1 sta ]1 lda #0 sbc ]1+1 sta ]1+1 .EM .MA SCMPAX sec sbc ]1 txa sbc ]1+1 bvc :1 eor #$80 :1 .EQ * .EM .MA SCMPYA cpy ]1 sbc ]1+1 bvc :1 eor #$80 :1 .EQ * .EM .MA STYAIFGTR tax >SCMPYA ]1 bmi :1 sty ]1 stx ]1+1 :1 .EQ * .EM .MA STYAIFLWR tax >SCMPYA ]1 bpl :1 sty ]1 stx ]1+1 :1 .EQ * .EM *-------------------------------------- .DUMMY .OR ZPLIB ZPObjPtr .BS 2 ZPRECTPtr .BS 2 ZPWNDPtr .BS 2 ZPBMPtr .BS 2 ZPCBBufPtr .BS 2 ZPPtr1 .BS 2 ZPPtr2 .BS 2 TmpW .BS 2 DX .BS 2 DY .BS 2 IE .BS 2 INE .BS 2 D .BS 2 Counter .BS 2 CLIP.Line.P1 .BS 1 CLIP.Line.P2 .BS 1 IY .BS 1 hCBBuf .BS 1 .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 .DA CS.END-CS.START .DA 0 .DA 0 .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA LIB.LOAD .DA LIB.UNLOAD .DA PTR.Set .DA PTR.SetPos .DA PTR.Hide .DA PTR.Show .DA PTR.Update .DA DRAW.Line .DA DRAW.Fill .DA DRAW.BitMap .DA DRAW.Text .DA OBJ.SetProp .DA OBJ.GetProp .DA WND.New .DA WND.Destroy .DA WND.Show .DA WND.Paint .DA WND.SetMBar .DA MSG.Get .DA MBOX.MsgBox *-------------------------------------- L.WND.fPaint .DA WND.fPaint *-------------------------------------- L.DEVNAME.GFX .DA DEVNAME.GFX L.DEVNAME.MOUSE .DA DEVNAME.MOUSE L.SYSX7 .DA SYSX7 L.SYSX7B .DA SYSX7B L.IOCTL .DA IOCTL L.DCB.GFX .DA DCB.GFX L.MouseClamp .DA MouseClamp L.MSG .DA MSG L.MSG.XY .DA MSG+S.MSG.X1 L.CB.PTR .DA CB.PTR L.CB.Cache .DA CB.Cache CB.GFXWrite .DA CLIP.Cache CB.GFXWrite L.WND.Screen .DA WND.Screen L.WND.Desktop .DA WND.Desktop L.WND.SysBar .DA WND.SysBar L.WND.SysBar.2osX .DA WND.SysBar.2osX L.WND.SysBar.Clk .DA WND.SysBar.Clk L.RECT.SysBut .DA RECT.SysBut L.RECT.SysWNDs .DA RECT.SysWNDs L.RECT.SysClk .DA RECT.SysClk L.MENU.Sys .DA MENU.Sys L.MENU.Sys.Programs .DA MENU.Sys.Programs L.MENU.Sys.Settings .DA MENU.Sys.Settings L.TEXTBUF .DA TEXTBUF *-------------------------------------- L.BMs .EQ *-2 L.BM.Apple .DA BM.Apple L.BM.Close .DA BM.Close L.BM.Max .DA BM.Max L.BM.Min .DA BM.Min L.BM.Left .DA BM.Left L.BM.Right .DA BM.Right L.BM.Up .DA BM.Up L.BM.Down .DA BM.Down L.BM.Info .DA BM.Info *-------------------------------------- L.BUT.Labels .DA BUT.L.OK .DA BUT.L.CANCEL .DA BUT.L.RETRY .DA BUT.L.IGNORE .DA BUT.L.YES .DA BUT.L.NO *-------------------------------------- L.PTR.SaveBuf .DA PTR.SaveBuf L.Cursors .DA PTR.Arrow .DA PTR.Move .DA PTR.ResizeX .DA PTR.ResizeY .DA PTR.ResizeXY1 .DA PTR.ResizeXY2 .DA PTR.Cross .DA PTR.Text .DA PTR.Wait1 .DA PTR.Wait2 .DA PTR.Wait3 .DA PTR.Wait4 .DA PTR.Wait5 .DA PTR.Wait6 *-------------------------------------- J.Clip .DA CLIP.Point SETPIXEL .DA CLIP.Point GETPIXEL .DA CLIP.HLine HLINE .DA CLIP.VLine VLINE .DA CLIP.Rectangle FILLRECT .DA CLIP.BitBlt BITBLT .DA CLIP.Rectangle GETRECTBUFSIZE .DA CLIP.Text DRAWTEXT .DA CLIP.Text GETTEXTSIZE .DA CLIP.Line DRAWLINE .DA CLIP.BitBlt DRAWTEXT2 *-------------------------------------- J.OBJ.Enter .DA WND.Enter .DA MBAR.Enter .DA MENU.Enter .DA BUT.Enter .DA TEXT.Enter .DA BITMAP.Enter .DA LABEL.Enter *-------------------------------------- J.OBJ.Leave .DA WND.Leave .DA MBAR.Leave .DA MENU.Leave .DA BUT.Leave .DA TEXT.Leave .DA BITMAP.Leave .DA LABEL.Leave *-------------------------------------- J.OBJ.fPaintX .DA WND.fPaint .DA $FFFF MBAR .DA $FFFF MENU .DA BUT.fPaint .DA TEXT.fPaint .DA BITMAP.fPaint .DA LABEL.fPaint .DA 0 *-------------------------------------- LIB.LOAD lda LibCount bne .8 jsr MOU.Init * bcs .9 jsr WND.Init bcs .9 jsr FON.Init bcs .9 jsr WND.Setup lda hDevMouse beq .1 jsr MOU.Setup .1 lda #PTR.T.ARROW jsr PTR.Set jsr PTR.Show >LDYA L.MENU.Sys.Programs >STYA MENU.Sys.1 >LDYA L.MENU.Sys.Settings >STYA MENU.Sys.2 inc LibCount .8 clc .9 rts *-------------------------------------- LIB.UNLOAD dec LibCount bne .8 jsr MOU.Quit .8 clc rts *-------------------------------------- SkipAPtr1 clc adc ZPPtr1 sta ZPPtr1 bcc .8 inc ZPPtr1+1 .8 rts *-------------------------------------- SkipStrZPtr1 ldy #$ff .1 iny lda (ZPPtr1),y bne .1 tya sec \0 adc ZPPtr1 sta ZPPtr1 bcc .8 inc ZPPtr1+1 .8 rts *-------------------------------------- SkipAPtr2 clc adc ZPPtr2 sta ZPPtr2 bcc .8 inc ZPPtr2+1 .8 rts *-------------------------------------- SkipStrZPtr2 ldy #$ff .1 iny lda (ZPPtr2),y bne .1 tya sec \0 adc ZPPtr2 sta ZPPtr2 bcc .8 inc ZPPtr1+2 .8 rts *-------------------------------------- .INB usr/src/lib/libgui.s.bitmap .INB usr/src/lib/libgui.s.bm .INB usr/src/lib/libgui.s.but .INB usr/src/lib/libgui.s.cb .INB usr/src/lib/libgui.s.clip .INB usr/src/lib/libgui.s.cur .INB usr/src/lib/libgui.s.draw .INB usr/src/lib/libgui.s.fon .INB usr/src/lib/libgui.s.label .INB usr/src/lib/libgui.s.mbar .INB usr/src/lib/libgui.s.mbox .INB usr/src/lib/libgui.s.menu .INB usr/src/lib/libgui.s.mou .INB usr/src/lib/libgui.s.msg .INB usr/src/lib/libgui.s.obj * .INB usr/src/lib/libgui.s.pat .INB usr/src/lib/libgui.s.ptr .INB usr/src/lib/libgui.s.sysbar .INB usr/src/lib/libgui.s.text .INB usr/src/lib/libgui.s.wnd *-------------------------------------- CS.END *-------------------------------------- .INB usr/src/lib/libgui.g.bm .INB usr/src/lib/libgui.g.cur .INB usr/src/lib/libgui.g.fon .INB usr/src/lib/libgui.g.ptr *-------------------------------------- DEVNAME.GFX .AZ "/dev/gfx" DEVNAME.MOUSE .AZ "/dev/mou1" *-------------------------------------- SYSX7 .AZ "${ROOT}opt/gui/fonts/sysx7" SYSX7B .AZ "${ROOT}opt/gui/fonts/sysx7b" *-------------------------------------- LibCount .BS 1 hDevMouse .BS 1 *-------------------------------------- OBJ.SizeOf .DA S.WND .DA 0 .DA 0 .DA S.BUT .DA S.TEXT .DA S.BITMAP .DA S.LABEL *-------------------------------------- BUT.L.OK .AZ "Ok" BUT.L.CANCEL .AZ "Cancel" BUT.L.RETRY .AZ "Retry" BUT.L.IGNORE .AZ "Ignore" BUT.L.YES .AZ "Yes" BUT.L.NO .AZ "No" *-------------------------------------- CB.CmdLen .DA #S.CB.Y1+1 SETPIXEL .DA #S.CB.Y1+1 GETPIXEL .DA #S.CB.Y2+1 HLINE .DA #S.CB.Y2+1 VLINE .DA #S.CB.Y2+1 FILLRECT .DA #S.CB.DstPtr+1 BITBLT .DA #S.CB.DstPtr+1 GETRECTBUFSIZE .DA #S.CB.TxtPtr+1 DRAWTEXT .DA #S.CB.TxtPtr+1 GETTEXTSIZE .DA #S.CB.Y2+1 DRAWLINE .DA #S.CB.TxtPtr+1 DRAWTEXT2 *-------------------------------------- PAT.Buf .BS 1 S.BM.F .DA #1 S.BM.RowBytes .DA 8 S.BM.W .DA 8 S.BM.H .DA 0 S.BM.MASK.OFS .BS 8 (data) *-------------------------------------- IOCTL .BS S.IOCTL DCB.GFX .BS S.DCB.GFX *-------------------------------------- MSG .BS S.MSG *-------------------------------------- CB.PTR .DA #S.CB.CMD.BITBLT .BS 1 S.CB.OP .DA #S.CB.M.MONO .DA #0 .BS S.CB-4 *-------------------------------------- CB.Cache .BS S.CB CB.GFXWrite: CLIP.Cache .BS S.CB ,x select Cache CLIP.Screen .BS S.RECT CLIP.BitBltX: CLIP.Rect .BS S.RECT ,x select clipping region *-------------------------------------- MENU.Stack.Owner .BS 1 MENU.Stack.Idx .BS 1 MENU.Stack.Cnt .BS 1 MENU.Stack .BS MENU.MAX *-------------------------------------- WND.hWND .BS 1 WND.Stack.Idx .BS 1 WND.Stack.Top .BS 1 WND.Stack .BS WND.MAX *-------------------------------------- WND.Screen .DA #S.OBJ.T.WND .BS S.WND-1 *-------------------------------------- WND.Desktop .DA #S.OBJ.T.WND .BS S.WND-1 *-------------------------------------- WND.SysBar .DA #S.OBJ.T.WND .BS S.WND-1 *-------------------------------------- WND.SysBar.2osX .AZ "2osX" WND.SysBar.Clk .AZ "00:00" WND.SysBar.bSysBut .BS 1 *-------------------------------------- RECT.SysBut .BS S.RECT *-------------------------------------- RECT.SysWNDs .BS S.RECT *-------------------------------------- RECT.SysClk .BS S.RECT *-------------------------------------- MENU.Sys .DA #S.MITEM.T.ITEM .DA #2 ID .DA #KEYMOD.CTRL+KEYMOD.OA+KEYMOD.CA,#'A' .DA BM.ID.APPLE pICON .AZ "About..." .DA #S.MITEM.T.SEP .DA #S.MITEM.T.SUBMENU MENU.Sys.1 .DA MENU.Sys.Programs .DA 0 pICON .AZ "Programs" .DA #S.MITEM.T.SUBMENU MENU.Sys.2 .DA MENU.Sys.Settings .DA 0 pICON .AZ "Settings" .DA #S.MITEM.T.SEP .DA #S.MITEM.T.ITEM .DA #8 ID .DA #0,#0 .DA 0 pICON .AZ "Search..." .DA #S.MITEM.T.ITEM .DA #10 ID .DA #KEYMOD.CTRL+KEYMOD.OA,#'R' .DA 0 pICON .AZ "Run..." .DA #0 *-------------------------------------- MENU.Sys.Programs .DA #S.MITEM.T.ITEM .DA #42 ID .DA #0,#0 .DA BM.ID.APPLE pICON .AZ "Test ASM" .DA #S.MITEM.t.ITEM .DA #44 ID .DA #0,#0 .DA BM.ID.APPLE pICON .AZ "Test C" .DA #0 *-------------------------------------- MENU.Sys.Settings .DA #S.MITEM.T.ITEM .DA #62 ID .DA #0,#0 .DA 0 pICON .AZ "Colors..." .DA #S.MITEM.T.ITEM .DA #64 ID .DA #0,#0 .DA 0 pICON .AZ "SubItem2..." .DA #0 *-------------------------------------- KEYMOD.S.CTRL .EQ 0 KEYMOD.S .AZ "Ctrl-" KEYMOD.S.OA .EQ *-KEYMOD.S .DA #01,#'-',#0 KEYMOD.S.CA .EQ *-KEYMOD.S .DA #02,#'-',#0 *-------------------------------------- MouseClamp .EQ * MOU.Setup TEXTBUF .BS 16 for composing HotKey strings *-------------------------------------- PREFS.BestViewedX .DA #$FC PREFS.nBestViewedX .DA #$03 PREFS.XMargin .DA #4 PREFS.XSeparator .DA #4 * PREFS.MenuColor .DA #C.WHITE PREFS.SysBarColor .DA #C.WHITE PREFS.BorderColor .DA #C.BLACK PREFS.TBarColorA .DA #C16.D.BLUE PREFS.TBarColorI .DA #C16.L.BLUE PREFS.MBarColor .DA #C.WHITE PREFS.SBarColor .DA #C.WHITE PREFS.DESKTOPCOLOR .DA #C16.D.BLUE *-------------------------------------- MAN SAVE usr/src/lib/libgui.s ASM