diff --git a/.Floppies/A2OSX.BOOTHD.woz b/.Floppies/A2OSX.BOOTHD.woz index f1f08b39..57be9e51 100644 Binary files a/.Floppies/A2OSX.BOOTHD.woz and b/.Floppies/A2OSX.BOOTHD.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f12cc162..3e4771fa 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 2fd71455..a8b88154 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/FNT2FON.S.txt b/BIN/FNT2FON.S.txt index 182729a1..e226bf64 100644 --- a/BIN/FNT2FON.S.txt +++ b/BIN/FNT2FON.S.txt @@ -1,16 +1,15 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 - .TF ROOT/FNT2FON + .TF bin/fnt2fon *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I - .INB INC/GUI.I - .INB INC/LIBGUI.I - .INB ROOT/X.FNT.I + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/gfx.i + .INB inc/libgui.i + .INB inc/fnt.i *-------------------------------------- ZPPTR1 .EQ ZPBIN ZPInputBufPtr .EQ ZPBIN+2 @@ -684,7 +683,7 @@ CS.QUIT >LDA.G hOutPutBuf *-------------------------------------- CS.END *-------------------------------------- - .INB ROOT/X.TWIST.G + .INB usr/src/shared/x.twist.g *-------------------------------------- OptionList >PSTR "NnVv" OptionVars .DA #bNoShrink,#bNoShrink,#bVerbose,#bVerbose @@ -718,10 +717,8 @@ CharOutByteW .BS 1 hOutPutBuf .BS 1 OutPutPtr .BS 1 FileOffset .BS 4 - -DS.END - .ED +DS.END .ED *-------------------------------------- MAN -SAVE /A2OSX.BUILD/ROOT/FNT2FON.S +SAVE usr/src/bin/fnt2fon.s ASM diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index 0cd8bd70..6d81fdf9 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -2,7 +2,7 @@ NEW AUTO 3,1 *-------------------------------------- * BitBlt -* S.CB.X1 : Destination X (screen) +* S.CB.X1 : Destination X (screen) * S.CB.Y1 : Destination Y (screen) * S.CB.DstX : X1 in bitmap/mask * S.CB.DstY : Y1 in bitmap/mask diff --git a/DRV/DHGR.DRV.S.OSD.txt b/DRV/DHGR.DRV.S.OSD.txt index 030a1b28..adb39486 100644 --- a/DRV/DHGR.DRV.S.OSD.txt +++ b/DRV/DHGR.DRV.S.OSD.txt @@ -164,8 +164,8 @@ OSD.DRAWTEXT sec * S.CB.S.CB.FONT : hFont * S.CB.SrcPtr : Ptr to Text * Out: -* A,X = Width -* Y = Height +* S.CB.SrcW = Width +* S.CB.SrcH = Height *-------------------------------------- OSD.GETTEXTSIZE clc php diff --git a/INC/IO.D2.I.txt b/INC/IO.D2.I.txt index 3908ae5c..ef362260 100644 --- a/INC/IO.D2.I.txt +++ b/INC/IO.D2.I.txt @@ -4,7 +4,7 @@ NEW IO.D2.SeekTimeR .EQ 160 LIBBLKDEV Recalibration IO.D2.SeekTimeF .EQ 140 LIBBLKDEV Track Formatter IO.D2.SeekTimeB .EQ 140 LIBBLKDEV Boot Block -IO.D2.SeekTimeP .EQ 70 ProDOS.FX initial +IO.D2.SeekTimeP .EQ 75 ProDOS.FX initial IO.D2.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128 *-------------------------------------- IO.D2.Ph0Off .EQ $C080 diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 66df94d5..c06458f3 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -92,9 +92,8 @@ S.OBJ.X2 .EQ 12 S.OBJ.Y2 .EQ 14 S.OBJ.W .EQ 16 S.OBJ.H .EQ 18 -S.OBJ.Childs .EQ 20 * -S.OBJ .EQ 22 +S.OBJ .EQ 20 *-------------------------------------- S.WND.F.RESIZE .EQ %00000001 S.WND.F.MOVE .EQ %00000010 diff --git a/LIB/LIBBLKDEV.S.BB.txt b/LIB/LIBBLKDEV.S.BB.txt index c0130b02..c8207ce8 100644 --- a/LIB/LIBBLKDEV.S.BB.txt +++ b/LIB/LIBBLKDEV.S.BB.txt @@ -428,6 +428,9 @@ rdhead sec anticipate error. bmi BB.Trk2Qtrk.RTS branch if can't fine/read sector. clc indicate reading header. + + ldy #0 Retry cnt waiting D5 + rddata php carry set if reading sector. rd0 dey every time y=0 decrement find count. diff --git a/LIB/LIBGUI.G.CUR.txt b/LIB/LIBGUI.G.CUR.txt index 48a48be6..d3b7c448 100644 --- a/LIB/LIBGUI.G.CUR.txt +++ b/LIB/LIBGUI.G.CUR.txt @@ -19,12 +19,6 @@ CUR.HotPoints .DA #0,#0 CUR.T.ARROW .DA #8,#7 CUR.Wait5 .DA #8,#7 CUR.Wait6 *-------------------------------------- -CUR.CB .DA #S.CB.CMD.BITBLT - .BS 1 - .DA #S.CB.M.MONO - .DA #0 - .BS S.CB-2 -*-------------------------------------- CUR.SaveBuf .BS 64 16*4 *-------------------------------------- CUR.Arrow .DA #S.BM.F.BBP1 diff --git a/LIB/LIBGUI.G.WND.txt b/LIB/LIBGUI.G.WND.txt deleted file mode 100644 index 309d1e85..00000000 --- a/LIB/LIBGUI.G.WND.txt +++ /dev/null @@ -1,10 +0,0 @@ -NEW - AUTO 3,1 -*-------------------------------------- -WND.Stack.Top .BS 1 -WND.Stack .BS WND.MAX -*-------------------------------------- -MAN -SAVE usr/src/lib/libgui.g.wnd -LOAD usr/src/lib/libgui.s -asm diff --git a/LIB/LIBGUI.S.CLIP.txt b/LIB/LIBGUI.S.CLIP.txt index 83515d6c..2750c156 100644 --- a/LIB/LIBGUI.S.CLIP.txt +++ b/LIB/LIBGUI.S.CLIP.txt @@ -227,58 +227,84 @@ CLIP.Line.RIGHT .EQ 2 CLIP.Line.BOTTOM .EQ 4 CLIP.Line.TOP .EQ 8 *-------------------------------------- -CLIP.Line jsr CLIP.Line.EncodeP1 +CLIP.Line +* >DEBUG + jsr CLIP.Line.EncodeP1 jsr CLIP.Line.EncodeP2 + .1 lda CLIP.Line.P1 ora CLIP.Line.P2 beq .88 + lda CLIP.Line.P1 and CLIP.Line.P2 bne .99 + lda CLIP.Line.P1 beq .5 + bit #CLIP.Line.TOP beq .2 + * Y1 is above S.CB.Y1.... * DY=Y2-Y1; jsr CLIP.Line.EncodeP1 bra .1 + .2 bit #CLIP.Line.BOTTOM beq .3 + * Y1 is below S.CB.Y2.... + jsr CLIP.Line.EncodeP1 bra .1 + .3 bit #CLIP.Line.RIGHT beq .4 + * X1 is after S.CB.X2.... + jsr CLIP.Line.EncodeP1 bra .1 + * X1 is before S.CB.X1.... -.4 - jsr CLIP.Line.EncodeP1 + +.4 jsr CLIP.Line.EncodeP1 bra .1 + * P2 + .5 lda CLIP.Line.P2 bit #CLIP.Line.TOP beq .6 + * Y2 is above S.CB.Y1.... + jsr CLIP.Line.EncodeP2 bra .1 + .6 bit #CLIP.Line.BOTTOM beq .7 + * Y2 is below S.CB.Y2.... + jsr CLIP.Line.EncodeP2 bra .1 + .7 bit #CLIP.Line.RIGHT beq .8 + * X2 is after S.CB.X2.... + jsr CLIP.Line.EncodeP2 bra .1 + * X2 is before S.CB.X1.... -.8 - jsr CLIP.Line.EncodeP2 + +.8 jsr CLIP.Line.EncodeP2 bra .1 + .88 clc rts @@ -315,30 +341,38 @@ CLIP.Line.EncodeX.AX pha >SCMPAX OBJ.Cache+S.OBJ.X1 bmi .1 + tya ora #CLIP.Line.LEFT plx rts + .1 pla - >SCMPAX OBJ.Cache+S.OBJ.X1 + >SCMPAX OBJ.Cache+S.OBJ.X2 bpl .8 + tya ora #CLIP.Line.RIGHT + .8 rts *-------------------------------------- CLIP.Line.EncodeY.AX pha >SCMPAX OBJ.Cache+S.OBJ.Y1 bmi .1 + tya ora #CLIP.Line.TOP plx rts + .1 pla - >SCMPAX OBJ.Cache+S.OBJ.Y1 + >SCMPAX OBJ.Cache+S.OBJ.Y2 bpl .8 + tya ora #CLIP.Line.BOTTOM + .8 rts *-------------------------------------- CB.Cache.SetX2Y2 diff --git a/LIB/LIBGUI.S.CUR.txt b/LIB/LIBGUI.S.CUR.txt index 27b3de24..f397fdc5 100644 --- a/LIB/LIBGUI.S.CUR.txt +++ b/LIB/LIBGUI.S.CUR.txt @@ -21,24 +21,24 @@ SetCursor sta CUR.T .1 ldx CUR.T lda L.Cursors,x - sta CUR.CB+S.CB.SrcPtr + sta CB.PTR+S.CB.SrcPtr sta ZPPtr1 lda L.Cursors+1,x - sta CUR.CB+S.CB.SrcPtr+1 + sta CB.PTR+S.CB.SrcPtr+1 sta ZPPtr1+1 ldy #S.BM.W lda (ZPPtr1),y - sta CUR.CB+S.CB.SrcW + sta CB.PTR+S.CB.SrcW clc - adc CUR.CB+S.CB.X1 + adc CB.PTR+S.CB.X1 pha iny lda (ZPPtr1),y - sta CUR.CB+S.CB.SrcW+1 - adc CUR.CB+S.CB.X1+1 + sta CB.PTR+S.CB.SrcW+1 + adc CB.PTR+S.CB.X1+1 tax pla bne .2 @@ -46,21 +46,21 @@ SetCursor sta CUR.T dex .2 dec - sta CUR.CB+S.CB.X2 - stx CUR.CB+S.CB.X2+1 + sta CB.PTR+S.CB.X2 + stx CB.PTR+S.CB.X2+1 iny S.BM.H lda (ZPPtr1),y - sta CUR.CB+S.CB.SrcH + sta CB.PTR+S.CB.SrcH clc - adc CUR.CB+S.CB.Y1 + adc CB.PTR+S.CB.Y1 pha iny lda (ZPPtr1),y - sta CUR.CB+S.CB.SrcH+1 - adc CUR.CB+S.CB.Y1+1 + sta CB.PTR+S.CB.SrcH+1 + adc CB.PTR+S.CB.Y1+1 tax pla bne .3 @@ -68,8 +68,8 @@ SetCursor sta CUR.T dex .3 dec - sta CUR.CB+S.CB.Y2 - stx CUR.CB+S.CB.Y2+1 + sta CB.PTR+S.CB.Y2 + stx CB.PTR+S.CB.Y2+1 lda CUR.bVisible bmi ShowCursor.I @@ -116,33 +116,34 @@ ShowCursor.I ldx CUR.T lda CUR.Pos+S.POINT.X sec sbc CUR.HotPoints,x - sta CUR.CB+S.CB.X1 + sta CB.PTR+S.CB.X1 lda CUR.Pos+S.POINT.X+1 sbc #0 - sta CUR.CB+S.CB.X1+1 + sta CB.PTR+S.CB.X1+1 lda CUR.Pos+S.POINT.Y sec sbc CUR.HotPoints+1,x - sta CUR.CB+S.CB.Y1 + sta CB.PTR+S.CB.Y1 lda CUR.Pos+S.POINT.Y+1 sbc #0 - sta CUR.CB+S.CB.Y1+1 + sta CB.PTR+S.CB.Y1+1 lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE -DrawCursor.I sta CUR.CB+S.CB.OP +DrawCursor.I sta CB.PTR+S.CB.OP >LDYA L.WND.Screen jsr OBJ.GetInCache - >LDYA L.CUR.CB + >LDYA L.CB.PTR jsr CLIP.YA bcs .9 - jmp GFXWrite.CB + >LDYA L.CB.PTR + jmp GFXWrite.YA .9 rts *-------------------------------------- diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index 730fe093..0f1ce47f 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -1,79 +1,7 @@ NEW AUTO 3,1 *-------------------------------------- -DrawCBBufToYA ldx L.CB.Buf - stx ZPCBPtr - ldx L.CB.Buf+1 - stx ZPCBPtr+1 - -DrawCBPtrToYA jsr OBJ.GetInCache - - bit CUR.bVisible - bpl .1 - - jsr HideCursor.I - -.1 lda (ZPCBPtr) - beq .8 - - >LDYA ZPCBPtr - jsr CB.GetInCache A = CB.CMD - - cmp #S.CB.CMD.DRAWTEXT2 - bne .6 - - lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD - sta CB.Cache+S.CB.CMD - jsr GFXWrite.CB - bcs .9 - - jsr CLIP.CB.Cache - bcs .2 - - jsr GFXWrite.CB - -.2 lda CB.Cache+S.CB.SrcPtr - >SYSCALL2 FreeStkObj - bra .7 - -.6 jsr CLIP.CB.Cache - bcs .7 - - jsr GFXWrite.CB - -.7 lda (ZPCBPtr) Get Cmd - lsr - tax - lda CB.CmdLen-1,x - sec +1 - adc ZPCBPtr - sta ZPCBPtr - bcc .1 - - inc ZPCBPtr+1 - bra .1 - -.8 clc -.9 bit CUR.bVisible - bpl .99 - - php - pha - jsr ShowCursor.I - pla - plp - -.99 rts -*-------------------------------------- -* In: Control Block in CB.Cache -* CMD -* OP -* MODE -* COLOR -* X1 -* Y1 -* X2 -* Y2 +* drawline(short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int X2) *-------------------------------------- DrawLine >PULLW CB.Cache+S.CB.Y2 >PULLW CB.Cache+S.CB.X2 @@ -85,6 +13,9 @@ DrawLine >PULLW CB.Cache+S.CB.Y2 >PULLA hWND >SYSCALL2 GetMemPtr >STYA ZPWNDPtr + + jsr DRAW.ToGlobal + jsr DRAW.GetInnerW lda CB.Cache+S.CB.X2 sec @@ -98,15 +29,11 @@ DrawLine >PULLW CB.Cache+S.CB.Y2 ora DX bne .2 DX > 0... - lda #S.CB.CMD.VLINE - sta CB.Cache+S.CB.CMD - jmp GFXWrite.CB DX=0 : VLIN Y1,Y2 At X1 + lda #S.CB.CMD.VLINE DX=0 : VLINE Y1,Y2 At X1 + bra .20 +*-------------------------------------- .1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2 -* >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2 - lda CB.Cache+S.CB.Y1 - ldx CB.Cache+S.CB.Y2 - stx CB.Cache+S.CB.Y1 - sta CB.Cache+S.CB.Y2 + >SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2 >NOT16 DX swap X1/X2, Y1/Y2, set DX=-DX (DX positive) @@ -117,22 +44,33 @@ DrawLine >PULLW CB.Cache+S.CB.Y2 sec sbc CB.Cache+S.CB.Y1 sta DY -* lda CB.Cache+S.CB.Y2+1 - lda #0 -* sbc CB.Cache+S.CB.Y1+1 - sbc #0 + lda CB.Cache+S.CB.Y2+1 + sbc CB.Cache+S.CB.Y1+1 sta DY+1 DY = Y2 - Y1 + bmi .3 DY < 0 ... + ora DY bne .4 - lda #S.CB.CMD.HLINE - sta CB.Cache+S.CB.CMD - jmp GFXWrite.CB DY=0 : HLIN X1,X2 At Y1 + + lda #S.CB.CMD.HLINE DY=0 : HLINE X1,X2 At Y1 + +.20 sta CB.Cache+S.CB.CMD + + jsr CLIP.CB.Cache + bcs .8 + + jmp GFXWrite.CB +.8 rts +*-------------------------------------- .3 >NOT16 DY set DY=-DY lda #$ff sta IY set IY=-1 -.4 lda #S.CB.CMD.SETPIXEL +.4 jsr CLIP.Line + bcs .8 + + lda #S.CB.CMD.SETPIXEL sta CB.Cache+S.CB.CMD jsr GFXWrite.CB lda DX @@ -140,13 +78,14 @@ DrawLine >PULLW CB.Cache+S.CB.Y2 sbc DY tax lda DX+1 -* sbc DY+1 - sbc #0 + sbc DY+1 bmi DrawLine.IncY DY is greater than DX, we will increase on Y axis + txa beq DrawLine.IncXY DX=DY, go inc X & Y - jmp DrawLine.IncX DY is lower than DX, we will increase on X axis + jmp DrawLine.IncX DY is lower than DX, we will increase on X axis +*-------------------------------------- DrawLine.IncXY lda DX DX=DY eor #$ff sta Counter @@ -156,10 +95,13 @@ DrawLine.IncXY lda DX DX=DY .1 inc Counter bne .2 + inc Counter+1 beq .8 + .2 inc CB.Cache+S.CB.X1 bne .3 + inc CB.Cache+S.CB.X1+1 .3 lda CB.Cache+S.CB.Y1 Y1=Y1+IY clc @@ -167,8 +109,9 @@ DrawLine.IncXY lda DX DX=DY sta CB.Cache+S.CB.Y1 jsr GFXWrite.CB bra .1 -.8 rts +.8 rts +*-------------------------------------- DrawLine.IncY lda DY eor #$ff sta Counter @@ -205,6 +148,7 @@ DrawLine.IncY lda DY txa rol sta INE+1 + .1 inc Counter bne .2 @@ -243,7 +187,7 @@ DrawLine.IncY lda DY bra .1 .8 rts - +*-------------------------------------- DrawLine.IncX lda DX eor #$ff sta Counter @@ -280,6 +224,7 @@ DrawLine.IncX lda DX txa rol sta INE+1 + .1 inc Counter bne .2 @@ -309,6 +254,7 @@ DrawLine.IncX lda DX lda D+1 adc IE+1 sta D+1 + .5 inc CB.Cache+S.CB.X1 X1=X1+1 bne .6 @@ -319,6 +265,159 @@ DrawLine.IncX lda DX .8 rts *-------------------------------------- +* drawtext (short int OP, short int hFONT, int X1, int Y1) +*-------------------------------------- +DrawText clc + rts +*-------------------------------------- +* +*-------------------------------------- +DRAW.ToGlobal >LDYA ZPWNDPtr + >STYA ZPPtr1 + +.1 ldy #S.OBJ.X1 + ldx #S.CB.X1 + jsr DRAW.AddP1YtoCBX + + ldy #S.WND.InnerY1 + ldx #S.CB.Y1 + jsr DRAW.AddP1YtoCBX + + ldy #S.OBJ.X1 + ldx #S.CB.X2 + jsr DRAW.AddP1YtoCBX + + ldy #S.WND.InnerY1 + ldx #S.CB.Y2 + jsr DRAW.AddP1YtoCBX + + ldy #S.OBJ.hPARENT+1 + lda (ZPPtr1),y + beq .8 00xx = hDev + + tax + dey + lda (ZPPtr1),y + + sta ZPPtr1 + stx ZPPtr1+1 + bra .1 + +.8 clc + rts +*-------------------------------------- +DRAW.AddP1YtoCBX + 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 +*-------------------------------------- +DRAW.GetInnerW ldy #S.OBJ.X1 + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.X1 + iny + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.X1+1 + + ldy #S.WND.InnerY1 + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.Y1 + iny + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.Y1+1 + + ldy #S.WND.InnerW + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.W + iny + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.W+1 + + iny #S.WND.InnerH + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.H + + iny + lda (ZPWNDPtr),y + sta OBJ.Cache+S.OBJ.H+1 + + >LDYA L.OBJ.Cache + jmp OBJ.SetX2Y2 +*-------------------------------------- +DrawCBBufToYA ldx L.CB.Buf + stx ZPCBPtr + ldx L.CB.Buf+1 + stx ZPCBPtr+1 + +DrawCBPtrToYA bit CUR.bVisible + bpl .10 + + pha + phy + jsr HideCursor.I + ply + pla + +.10 jsr OBJ.GetInCache + +.1 lda (ZPCBPtr) + beq .8 + + >LDYA ZPCBPtr + jsr CB.GetInCache A = CB.CMD + + cmp #S.CB.CMD.DRAWTEXT2 + bne .6 + + lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD + sta CB.Cache+S.CB.CMD + jsr GFXWrite.CB + bcs .9 + + jsr CLIP.CB.Cache + bcs .2 + + jsr GFXWrite.CB + +.2 lda CB.Cache+S.CB.SrcPtr + >SYSCALL2 FreeStkObj + bra .7 + +.6 jsr CLIP.CB.Cache + bcs .7 + + jsr GFXWrite.CB + +.7 lda (ZPCBPtr) Get Cmd + lsr + tax + lda CB.CmdLen-1,x + sec +1 + adc ZPCBPtr + sta ZPCBPtr + bcc .1 + + inc ZPCBPtr+1 + bra .1 + +.8 clc + +.9 bit CUR.bVisible + bpl .99 + + php + pha + jsr ShowCursor.I + pla + plp + +.99 rts +*-------------------------------------- MAN SAVE usr/src/lib/libgui.s.draw LOAD usr/src/lib/libgui.s diff --git a/LIB/LIBGUI.S.MOU.txt b/LIB/LIBGUI.S.MOU.txt index 9225a576..fc12f5bf 100644 --- a/LIB/LIBGUI.S.MOU.txt +++ b/LIB/LIBGUI.S.MOU.txt @@ -43,7 +43,7 @@ MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1 bcs .9 >LDYA L.CUR.SaveBuf - >STYA CUR.CB+S.CB.DstPtr + >STYA CB.PTR+S.CB.DstPtr * clc .9 rts @@ -59,26 +59,91 @@ MOU.Quit lda hDevMouse .8 clc rts *-------------------------------------- -MOU.ReadMouse >PULLYA +MOU.ReadMouse >PULLW ZPPtr1 - ldx A2osX.ASCREEN GUI screen active ? - cpx DCB.GFX+S.DCB.GFX.DEVID + lda A2osX.ASCREEN GUI screen active ? + cmp DCB.GFX+S.DCB.GFX.DEVID bne .9 no, exit.... - ldx hDevMouse + lda hDevMouse beq .9 - pha - - txa >PUSHA >PUSHBI IOCTL.READ - pla - >PUSHYA + >PUSHW ZPPtr1 >SYSCALL2 IOCTL + bcs .99 + + ldy #S.MOUSE.S + lda (ZPPtr1),y + bit #S.MOUSE.S.MOVE + beq .8 + + lda WND.SysBar+S.OBJ.Y1 + + ldy #S.MOUSE.Y1 + cmp (ZPPtr1),y + lda WND.SysBar+S.OBJ.Y1+1 + iny + sbc (ZPPtr1),y + bcc .8 + + jmp SYSBAR.Enter + + +.8 clc rts .9 sec +.99 rts +*-------------------------------------- +SYSBAR.Show jsr GetCBBuf + bcs .9 + + lda #S.CB.CMD.FILLRECT + jsr PutA2CBBuf + + lda #S.CB.OP.SET + jsr PutA2CBBuf + + lda #S.CB.M.MONO + jsr PutA2CBBuf + + lda PREFS.SYSBARCOLOR + jsr PutA2CBBuf + + lda #0 S.OBJ.X1 + jsr PutA2CBBuf + jsr PutA2CBBuf + + lda WND.SysBar+S.OBJ.Y1 + jsr PutA2CBBuf + lda WND.SysBar+S.OBJ.Y1+1 + jsr PutA2CBBuf + + lda WND.SysBar.A2osX.X2 + jsr PutA2CBBuf + lda WND.SysBar.A2osX.X2+1 + jsr PutA2CBBuf + + lda WND.SysBar+S.OBJ.Y2 + jsr PutA2CBBuf + lda WND.SysBar+S.OBJ.Y2+1 + jsr PutA2CBBuf + + lda #0 + jsr PutA2CBBuf + + >LDYA L.WND.SysBar + jsr DrawCBPtrToYA + + lda hCBBuf + >SYSCALL FreeMem + +* clc +.9 rts +*-------------------------------------- +SYSBAR.Enter clc rts *-------------------------------------- MAN diff --git a/LIB/LIBGUI.S.WND.txt b/LIB/LIBGUI.S.WND.txt index 663bbd99..cd92cea6 100644 --- a/LIB/LIBGUI.S.WND.txt +++ b/LIB/LIBGUI.S.WND.txt @@ -25,34 +25,30 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W >STYA WND.Desktop+S.OBJ.W >STYA WND.SysBar+S.OBJ.W - lda SYSFON.H - clc - adc #6 + lda SYSFON.Hp2 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 + sta WND.SysBar+S.OBJ.Y1 >LDYA L.WND.Screen + >STYA WND.Desktop+S.OBJ.hPARENT + >STYA WND.SysBar+S.OBJ.hPARENT 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 #24 + sta WND.SysBar.A2osX.X2 lda #CUR.T.ARROW sta WND.Desktop+S.WND.hCUR @@ -60,6 +56,8 @@ WND.Setup >LDYA DCB.GFX+S.DCB.GFX.W stz WND.Stack.Top + jsr SYSBAR.Show + rts *-------------------------------------- WND.Quit lda WND.Screen+S.OBJ.hPARENT @@ -84,9 +82,12 @@ WND.New >LDYAI S.WND ldy WND.Stack.Top cpy #WND.MAX - bcs .90 + bcc .10 + + lda #E.OOH + >RET 9 - lda #S.OBJ.T.WND +.10 lda #S.OBJ.T.WND sta (ZPWNDPtr) S.OBJ.T ldy #S.WND-1 @@ -141,6 +142,13 @@ WND.New >LDYAI S.WND ldy #S.OBJ.hOWNER sta (ZPWNDPtr),y + + lda L.WND.Desktop + ldy #S.OBJ.hPARENT + sta (ZPWNDPtr),y + iny + lda L.WND.Desktop+1 + sta (ZPWNDPtr),y txa ID ldy WND.Stack.Top @@ -149,9 +157,6 @@ WND.New >LDYAI S.WND * clc rts - -.90 lda #E.OOH -.9 >RET 9 *-------------------------------------- WND.Destroy clc rts @@ -261,7 +266,7 @@ WND.Show >SYSCALL2 GetMemPtr jsr WND.SetStatus jsr WND.PaintTopBar - bcs .9 + bcs WND.GetProp.RTS *-------------------------------------- .3 ldy #S.WND.MBAR+1 lda (ZPWNDPtr),y @@ -321,10 +326,22 @@ WND.Show >SYSCALL2 GetMemPtr jsr WND.PaintSBar *-------------------------------------- -.8 lda #0 +.8 ldy #S.WND.InnerH + lda (ZPWNDPtr),y + sec + sbc Counter+1 + sta (ZPWNDPtr),y + + iny + lda (ZPWNDPtr),y + sbc #0 + sta (ZPWNDPtr),y + + lda #0 jsr PutA2CBBuf - >LDYA L.WND.Screen + >LDYA L.WND.Desktop + jsr DrawCBPtrToYA lda hCBBuf @@ -407,7 +424,7 @@ WND.fPaint stz CB.Buf+S.CB.Y2+2 Ending 0 - >LDYA L.WND.Screen + >LDYA L.WND.Desktop jmp DrawCBBufToYA .1 clc diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 7ef4e897..7e789d6d 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -128,26 +128,6 @@ CS.START cld .DA WND.Paint L.WND.fPaint .DA WND.fPaint *-------------------------------------- -J.MBAR .DA MBAR.New - .DA MBAR.Paint - .DA MBAR.Close -*-------------------------------------- -J.MENU .DA MENU.New - .DA MENU.Paint - .DA MENU.Close -*-------------------------------------- -J.MENUITEM .DA MITEM.New - .DA MITEM.Paint - .DA MITEM.Close -*-------------------------------------- -J.BUT .DA BUT.New - .DA BUT.Paint - .DA BUT.Close -*-------------------------------------- -J.TEXT .DA TEXT.New - .DA TEXT.Paint - .DA TEXT.Close -*-------------------------------------- L.DEVNAME.GFX .DA DEVNAME.GFX L.DEVNAME.MOUSE .DA DEVNAME.MOUSE L.SYSX7 .DA SYSX7 @@ -155,8 +135,10 @@ L.SYSX7B .DA SYSX7B L.IOCTL .DA IOCTL L.DCB.GFX .DA DCB.GFX L.MouseClamp .DA MouseClamp +L.CB.PTR .DA CB.PTR L.CB.Buf .DA CB.Buf L.CB.Cache .DA CB.Cache +L.OBJ.Cache .DA OBJ.Cache L.WND.Screen .DA WND.Screen L.WND.Desktop .DA WND.Desktop L.WND.SysBar .DA WND.SysBar @@ -166,7 +148,6 @@ L.BM.Close .DA BM.Close L.BM.Max .DA BM.Max L.BM.Min .DA BM.Min *-------------------------------------- -L.CUR.CB .DA CUR.CB L.CUR.SaveBuf .DA CUR.SaveBuf L.Cursors .DA CUR.Arrow .DA CUR.ResizeX @@ -230,66 +211,6 @@ LIB.UNLOAD dec LibCount .8 clc rts *-------------------------------------- -OBJ.GetInCache >STYA .1+1 - - ldx #S.OBJ-1 - -.1 lda $ffff,x SELF MODIFIED - sta OBJ.Cache,x - dex - bpl .1 - - rts -*-------------------------------------- -OBJ.SetX2Y2 >STYA ZPObjPtr - - ldy #S.OBJ.W - lda (ZPObjPtr),y - clc - sbc #0 - pha - iny - lda (ZPObjPtr),y - sbc #0 - tax - pla - clc - ldy #S.OBJ.X1 - adc (ZPObjPtr),y - pha - txa - iny - adc (ZPObjPtr),y - ldy #S.OBJ.X2+1 - sta (ZPObjPtr),y - dey - pla - sta (ZPObjPtr),y - ldy #S.OBJ.H - lda (ZPObjPtr),y - clc - sbc #0 - pha - iny - lda (ZPObjPtr),y - sbc #0 - tax - pla - clc - ldy #S.OBJ.Y1 - adc (ZPObjPtr),y - pha - txa - iny - adc (ZPObjPtr),y - ldy #S.OBJ.Y2+1 - sta (ZPObjPtr),y - dey - pla - sta (ZPObjPtr),y - - rts -*-------------------------------------- CB.ClearCache ldx #S.CB-1 .1 stz CB.Cache,x @@ -355,6 +276,69 @@ GFXWrite.YA pha >SYSCALL2 IOCTL rts *-------------------------------------- +OBJ.GetInCache >STYA .1+1 + + ldx #S.OBJ-1 + +.1 lda $ffff,x SELF MODIFIED + sta OBJ.Cache,x + dex + bpl .1 + + rts +*-------------------------------------- +OBJ.SetX2Y2 >STYA ZPPtr1 + + ldy #S.OBJ.W + lda (ZPPtr1),y + clc + sbc #0 + pha + iny + lda (ZPPtr1),y + sbc #0 + tax + + pla + 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 + lda (ZPPtr1),y + clc + sbc #0 + pha + iny + lda (ZPPtr1),y + sbc #0 + tax + + pla + 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 +*-------------------------------------- .INB usr/src/lib/libgui.s.bm .INB usr/src/lib/libgui.s.but .INB usr/src/lib/libgui.s.clip @@ -372,7 +356,6 @@ 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.wnd *-------------------------------------- DEVNAME.GFX .AZ "/dev/gfx" DEVNAME.MOUSE .AZ "/dev/mou1" @@ -408,26 +391,31 @@ MOUSEDATA .BS S.MOUSE *-------------------------------------- MouseClamp .BS 8 *-------------------------------------- -CB.Buf .BS S.CB +CB.PTR .DA #S.CB.CMD.BITBLT + .BS 1 S.CB.OP + .DA #S.CB.M.MONO + .DA #0 + .BS S.CB-4 +*-------------------------------------- +CB.Buf .BS S.CB+1 +Ending 0 CB.Cache .BS S.CB OBJ.Cache .BS S.OBJ *-------------------------------------- +WND.Stack.Top .BS 1 +WND.Stack .BS WND.MAX +*-------------------------------------- WND.Screen .DA #S.OBJ.T.WND .BS S.WND-1 *-------------------------------------- -WND.Screen.Childs - .BS 2 WND.Desktop - .BS 2 WND.SysBar - .DA 0 -*-------------------------------------- WND.Desktop .DA #S.OBJ.T.WND .BS S.WND-1 *-------------------------------------- WND.SysBar .DA #S.OBJ.T.WND .BS S.WND-1 -WND.SysBar.Childs - .BS 2 BUT.Sys - .DA 0 +WND.SysBar.A2osX.X2 + .BS 2 +WND.SysBar.Time.X1 + .BS 2 *-------------------------------------- BUT.Sys .DA #S.OBJ.T.BUT .DA #0 F @@ -447,6 +435,7 @@ MENU.Sys .DA #2 ID .DA #0 *-------------------------------------- PREFS.BESTVIEWEDX .DA #$FC +PREFS.SYSBARCOLOR .DA #C.WHITE PREFS.MBARXMARGIN .DA #5 PREFS.BORDERCOLOR .DA #C.BLACK PREFS.TBARCOLORA .DA #C16.D.BLUE diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 28c8c6cd..32d266ac 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -60,10 +60,6 @@ CS.RUN >LIBCALL hLIBGUI,LIBGUI.ShowCursor CS.RUN.LOOP >SLEEP -* lda A2osX.ASCREEN -* cmp #8 -* bne CS.RUN.LOOP - >PUSHW L.MouseData >LIBCALL hLIBGUI,LIBGUI.ReadMouse bcs .8 @@ -78,22 +74,24 @@ CS.RUN.LOOP >SLEEP lda MouseData+S.MOUSE.S .1 bit #S.MOUSE.S.CLK - beq .4 + beq .2 >LDA.G CUR.T inc inc cmp #CUR.T.WAIT+2 - bne .2 + bne .11 lda #CUR.T.ARROW -.2 >STA.G CUR.T +.11 >STA.G CUR.T >LIBCALL hLIBGUI,LIBGUI.SetCursor + jmp CS.RUN.LOOP - jsr WND.Test +.2 bit #S.MOUSE.S.DCLK + beq .8 -.4 + jsr WND.Test .8 jmp CS.RUN.LOOP @@ -146,9 +144,18 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F. lda hWND >LIBCALL hLIBGUI,LIBGUI.WND.Paint + rts - clc -.9 rts + >PUSHB hWND + >PUSHBI S.CB.OP.SET + >PUSHBI C.BLACK + >PUSHWI 0 + >PUSHWI 0 + >PUSHWI 300 + >PUSHWI 80 + >LIBCALL hLIBGUI,LIBGUI.DrawLine + + rts *-------------------------------------- CS.END LIBGUI .AZ "libgui" diff --git a/BIN/X.CPMVRM.G.txt b/SHARED/X.CPMVRM.G.txt similarity index 87% rename from BIN/X.CPMVRM.G.txt rename to SHARED/X.CPMVRM.G.txt index b5adb0f0..ccdf73f1 100644 --- a/BIN/X.CPMVRM.G.txt +++ b/SHARED/X.CPMVRM.G.txt @@ -25,4 +25,4 @@ hToDelete .BS 1 .FIN *-------------------------------------- MAN -SAVE usr/src/bin/x.cpmvrm.g +SAVE usr/src/shared/x.cpmvrm.g diff --git a/BIN/X.CPMVRM.S.txt b/SHARED/X.CPMVRM.S.txt similarity index 94% rename from BIN/X.CPMVRM.S.txt rename to SHARED/X.CPMVRM.S.txt index 171373e3..f23c2921 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/SHARED/X.CPMVRM.S.txt @@ -705,6 +705,6 @@ CS.QUIT jsr LeaveSubDir rts *-------------------------------------- MAN -SAVE usr/src/bin/x.cpmvrm.s +SAVE usr/src/shared/x.cpmvrm.s LOAD usr/src/bin/cp.s ASM diff --git a/BIN/X.FILEENUM.G.txt b/SHARED/X.FILEENUM.G.txt similarity index 100% rename from BIN/X.FILEENUM.G.txt rename to SHARED/X.FILEENUM.G.txt diff --git a/BIN/X.FILEENUM.S.txt b/SHARED/X.FILEENUM.S.txt similarity index 100% rename from BIN/X.FILEENUM.S.txt rename to SHARED/X.FILEENUM.S.txt diff --git a/DRV/X.SSC.DRV.S.txt b/SHARED/X.SSC.DRV.S.txt similarity index 94% rename from DRV/X.SSC.DRV.S.txt rename to SHARED/X.SSC.DRV.S.txt index e232a7aa..fb13a0dc 100644 --- a/DRV/X.SSC.DRV.S.txt +++ b/SHARED/X.SSC.DRV.S.txt @@ -570,6 +570,6 @@ DCB .DA #S.DCB.T.COM *-------------------------------------- DRV.END MAN -SAVE usr/src/drv/x.ssc.drv.s +SAVE usr/src/shared/x.ssc.drv.s LOAD usr/src/drv/ssc.i.drv.s ASM diff --git a/SHARED/X.TWIST.G..txt b/SHARED/X.TWIST.G..txt index 417cfba5..932e4343 100644 --- a/SHARED/X.TWIST.G..txt +++ b/SHARED/X.TWIST.G..txt @@ -36,4 +36,4 @@ TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#% .DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111 *-------------------------------------- MAN -SAVE USR/SRC/SHARED/X.TWIST.G +SAVE usr/src/shared/x.twist.g