PR#3 PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 .LIST OFF .OP 65C02 .OR $2000 .TF /A2OSX.BUILD/SBIN/GUI *-------------------------------------- .INB /A2OSX.BUILD/INC/IO.I .INB /A2OSX.BUILD/INC/MACROS.I .INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/LIBGUI.I *-------------------------------------- ZPPtr1 .EQ ZPBIN *-------------------------------------- * 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 CS .DA DS.END-DS.START DS .DA #16 SS .DA #2 ZP .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.LIBGUI .DA LIBGUI L.DEVNAME.GFX .DA DEVNAME.GFX L.DEVNAME.MOUSE .DA DEVNAME.MOUSE L.MSG.INIT .DA MSG.INIT L.MouseClamp .DA MouseClamp L.MouseData .DA MouseData L.Rect.CB .DA Rect.CB L.SetPixel.CB .DA SetPixel.CB L.DrawLines.CB .DA DrawLines.CB L.Filename .DA Filename L.BitBlT.CB .DA BitBlT.CB L.MousePtr.CB .DA MousePtr.CB L.BM.Arrow .DA BM.Arrow .DA 0 *-------------------------------------- CS.INIT >LDYA L.MSG.INIT >SYSCALL PrintF.YA >LDYA L.LIBGUI >SYSCALL LoadLib.YA sta hLIBGUI >LDYA L.DEVNAME.GFX >SYSCALL GetDevByName.YA bcc .10 rts .10 stx hDevGFX >STYA GoDevGFX+1 txa ldx #DEVMGR.OPEN jsr GoDevGFX .11 >LDYA L.DEVNAME.MOUSE >SYSCALL GetDevByName.YA bcc .20 inc DEVNAME.MOUSE+3 lda DEVNAME.MOUSE+3 cmp #'8' bne .11 beq .21 No mouse found, skip mouse init .20 stx hDevMouse >STYA GoDevMouse+1 ldx #DEVMGR.OPEN jsr GoDevMouse ldx #DEVMGR.CONTROL Mouse driver disturb graphic screen.... jsr GoDevGFX ldx #DEVMGR.STATUS get graphic mode and resolution.... jsr GoDevGFX >STYA ZPPtr1 ldy #S.DSTAT+1 lda (ZPPtr1),y sta MouseClamp+2 iny lda (ZPPtr1),y sta MouseClamp+3 iny lda (ZPPtr1),y sta MouseClamp+6 iny lda (ZPPtr1),y sta MouseClamp+7 >LDYA L.MouseClamp ldx #DEVMGR.CONTROL jsr GoDevMouse .21 lda hDevGFX >LIBCALL hLIBGUI,LIBGUI.InitGUI.A lda (pPs) ora #S.PS.F.EVENT Now accept events sta (pPs) >PUSHWI 0 Aux type >PUSHBI $CB Type >PUSHBI SYS.FOpen.R >PUSHW L.FILENAME >SYSCALL LoadFile bcs .9 txa >SYSCALL GetMemPtr.A >STYA BitBlT.CB+S.CB.SrcPtr jsr Destop.Paint clc .9 rts *-------------------------------------- CS.RUN lda A2osX.ASCREEN GUI screen active ? cmp #3 bne .8 no, exit.... lda hDevMouse Mouse is active ? beq .4 go check KB >LDYA L.MouseData ldx #DEVMGR.READBLOCK jsr GoDevMouse bcs .4 go check KB lda MouseData bit #S.MOUSE.S.MOVE beq .1 lda MouseData+1 sta SetPixel.X lda MouseData+2 sta SetPixel.X+1 lda MouseData+3 sta SetPixel.Y lda MouseData+4 sta SetPixel.Y+1 lda #0 S.CB.OP.XOR sta SetPixel.OP lda #S.CB.MODE.MONO sta SetPixel.Mode lda #1 sta SetPixel.Color >PUSHW L.SetPixel.CB >LIBCALL hLIBGUI,LIBGUI.Draw lda MouseData .1 bit #S.MOUSE.S.DOWN beq .4 jsr Destop.Paint .4 .8 clc rts *-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- CS.QUIT clc rts *-------------------------------------- Destop.Paint >PUSHW L.Rect.CB >LIBCALL hLIBGUI,LIBGUI.Draw * >PUSHW L.DrawLines.CB * >LIBCALL hLIBGUI,LIBGUI.Draw >LDYA L.BM.Arrow >STYA MousePtr.CB+S.CB.SrcPtr >LDYAI 139 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 7 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 29 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 51 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 73 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 95 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 117 >STYA MousePtr.CB+S.CB.DestX >PUSHW L.MousePtr.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 105 >STYA BitBlT.CB+S.CB.DestX >PUSHW L.BitBlt.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 246 >STYA BitBlT.CB+S.CB.DestX >PUSHW L.BitBlt.CB >LIBCALL hLIBGUI,LIBGUI.Draw >LDYAI 387 >STYA BitBlT.CB+S.CB.DestX >PUSHW L.BitBlt.CB >LIBCALL hLIBGUI,LIBGUI.Draw rts *-------------------------------------- *-------------------------------------- *-------------------------------------- GoDevGFX jmp $ffff GoDevMouse jmp $ffff *-------------------------------------- CS.END DEVNAME.GFX >CSTR "GFX" DEVNAME.MOUSE >CSTR "MOU1" LIBGUI >CSTR "libgui.o" MSG.INIT >CSTR "GUI:Init...\r\n" hLIBGUI .BS 1 hDevGFX .BS 1 hDevMouse .BS 1 MouseClamp .BS 8 MouseData .BS S.MOUSE *-------------------------------------- Rect.CB .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 .DA #1 .DA 0 .DA 0 .DA 559 .DA 191 .DA #0 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.MONO .DA #1 .DA 10 .DA 5 .DA 549 .DA 186 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 .DA #7 .DA 20 .DA 10 .DA 539 .DA 181 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 .DA #4 .DA 30 .DA 15 .DA 529 .DA 176 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.MONO .DA #0 .DA 40 .DA 20 .DA 519 .DA 171 .DA #0 *-------------------------------------- DrawLines.CB .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 .DA #1 .DA 80 .DA 191 .DA 80+191 .DA 191+191 .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.XOR .DA #S.CB.MODE.MONO .DA #1 .DA 90 .DA 0 .DA 140 .DA 191 .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.SET .DA #S.CB.MODE.MONO .DA #1 .DA 100 .DA 0 .DA 100+191 .DA 191 .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 .DA #15 .DA 110 .DA 0 .DA 559 .DA 191 .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.SET .DA #S.CB.MODE.MONO .DA #1 .DA 28 .DA 0 .DA 28 .DA 191 .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.SET .DA #S.CB.MODE.MONO .DA #1 .DA 84 .DA 0 .DA 84 .DA 191 .DA #S.CB.CMD.DRAWLINE .DA #S.CB.OP.XOR .DA #S.CB.MODE.MONO .DA #1 .DA 0 .DA 92 .DA 559 .DA 92 .DA #0 *-------------------------------------- Filename >CSTR "/A2OSX.BUILD/MARILYN" *-------------------------------------- BitBlT.CB .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET .DA #S.CB.MODE.MONO .DA #0 .DA 0 X1 .DA 0 Y1 .DA 140 X2 .DA 149 y2 .BS 2 DestX .DA 24 DestY .BS 2 SrcPtr .DA 0 .DA #0 *-------------------------------------- MousePtr.CB .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE .DA #S.CB.MODE.MONO .DA #0 .DA 0 X1 .DA 0 Y1 .DA 10 X2 .DA 12 y2 .BS 2 DestX .DA 1 DestY .BS 2 SrcPtr .DA 0 .DA #0 *-------------------------------------- SetPixel.CB .DA #S.CB.CMD.SETPIXEL SetPixel.OP .BS 1 SetPixel.Mode .BS 1 SetPixel.Color .BS 1 SetPixel.X .BS 2 SetPixel.Y .BS 2 .DA #0 *-------------------------------------- BM.Arrow .DA #S.BM.F.BBP1 .DA #2 RowBytes .DA 11 W .DA 13 H .DA BM.Arrow.MASK-BM.Arrow BM.Arrow.DATA .DA %000.00000000 .DA %000.00000010 .DA %000.00000110 .DA %000.00001110 .DA %000.00011110 .DA %000.00111110 .DA %000.01111110 .DA %000.11111110 .DA %001.11111110 .DA %010.01111110 .DA %000.11110010 .DA %000.11100000 .DA %000.00000000 BM.Arrow.MASK .DA %111.11111100 .DA %111.11111000 .DA %111.11110000 .DA %111.11100000 .DA %111.11000000 .DA %111.10000000 .DA %111.00000000 .DA %110.00000000 .DA %100.00000000 .DA %000.00000000 .DA %000.00000000 .DA %110.00000000 .DA %110.00001111 *-------------------------------------- .DUMMY .OR 0 DS.START DS.END .ED MAN SAVE /A2OSX.SRC/SBIN/GUI.S ASM