diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index b1b2fc8f..65a268cf 100644 Binary files a/.Floppies/A2OSX.BOOT.po and b/.Floppies/A2OSX.BOOT.po differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index cef1f0a3..eabb578d 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index d93cfbcd..878a7924 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/.Fonts/SYSx7.fnt b/.Fonts/SYSx7.fnt index e3b9ca7b..53636d5a 100644 Binary files a/.Fonts/SYSx7.fnt and b/.Fonts/SYSx7.fnt differ diff --git a/.Fonts/SYSx7B.fnt b/.Fonts/SYSx7B.fnt new file mode 100644 index 00000000..0a71ded8 Binary files /dev/null and b/.Fonts/SYSx7B.fnt differ diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 5df57048..2cd854d7 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -16,6 +16,8 @@ ESCSEQ.MAXLEN .EQ 16 *-------------------------------------- ZPBaseL1 .EQ ZPDRV ZPBaseL2 .EQ ZPDRV+2 +ZPTmpWord .EQ ZPDRV+4 +ZPTmpBool .EQ ZPDRV+6 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -280,8 +282,8 @@ COUT.ExecEscSeq stz EscSeqParamCnt ldx #0 EscSeq Ptr -.10 stz EscSeqParamTmp - stz EscSeqParamTmp+1 +.10 stz ZPTmpWord + stz ZPTmpWord+1 .1 inx lda EscSeq,x @@ -294,27 +296,27 @@ COUT.ExecEscSeq stz EscSeqParamCnt dec bEscSeqInNum and #$0F pha - lda EscSeqParamTmp - ldy EscSeqParamTmp+1 - asl EscSeqParamTmp param=param*10 - rol EscSeqParamTmp+1 - asl EscSeqParamTmp - rol EscSeqParamTmp+1 + lda ZPTmpWord + ldy ZPTmpWord+1 + asl ZPTmpWord param=param*10 + rol ZPTmpWord+1 + asl ZPTmpWord + rol ZPTmpWord+1 clc - adc EscSeqParamTmp - sta EscSeqParamTmp + adc ZPTmpWord + sta ZPTmpWord tya - adc EscSeqParamTmp+1 - sta EscSeqParamTmp+1 - asl EscSeqParamTmp - rol EscSeqParamTmp+1 + adc ZPTmpWord+1 + sta ZPTmpWord+1 + asl ZPTmpWord + rol ZPTmpWord+1 pla clc - adc EscSeqParamTmp - sta EscSeqParamTmp + adc ZPTmpWord + sta ZPTmpWord bcc .1 - inc EscSeqParamTmp+1 + inc ZPTmpWord+1 bra .1 .2 bit bEscSeqInNum @@ -322,10 +324,10 @@ COUT.ExecEscSeq stz EscSeqParamCnt stz bEscSeqInNum lda #255 - ldy EscSeqParamTmp+1 + ldy ZPTmpWord+1 bne .21 - lda EscSeqParamTmp + lda ZPTmpWord .21 ldy EscSeqParamCnt sta EscSeqParam,y inc EscSeqParamCnt @@ -443,8 +445,8 @@ ClrScr stz CH lda #" " - php - sei +* php +* sei sta SETWRITEAUX ldy #39 @@ -453,7 +455,7 @@ ClrScr stz CH bpl .2 sta CLRWRITEAUX - plp +* plp ldy #39 .3 sta (ZPBaseL1),y @@ -701,16 +703,16 @@ SetCharAtYX cmp #$40 pla bcs .1 - php - sei +* php +* sei sta SETWRITEAUX - sta (ZPBaseL1),y +.1 sta (ZPBaseL1),y sta CLRWRITEAUX - plp +* plp rts -.1 sta (ZPBaseL1),y - rts +*.1 sta (ZPBaseL1),y +* rts *-------------------------------------- GetCharAtCurPos ldy CH ldx CV @@ -723,16 +725,16 @@ GetCharAtYX jsr SETUP.L1X bcs .1 - php - sei +* php +* sei sta SETREADAUX - lda (ZPBaseL1),y +.1 lda (ZPBaseL1),y sta CLRREADAUX - plp +* plp rts -.1 lda (ZPBaseL1),y - rts +*.1 lda (ZPBaseL1),y +* rts *-------------------------------------- SETUP.L1X lda BASEL,x sta ZPBaseL1 @@ -745,8 +747,8 @@ COPY.XtoL1 lda BASEL,x lda BASEH,x sta ZPBaseL2+1 - php - sei +* php +* sei sta SETWRITEAUX sta SETREADAUX @@ -754,7 +756,7 @@ COPY.XtoL1 lda BASEL,x sta CLRWRITEAUX sta CLRREADAUX - plp +* plp .1 ldy #39 @@ -764,8 +766,8 @@ COPY.XtoL1 lda BASEL,x bpl .2 rts *-------------------------------------- -Decimal.Out stz DecimalBuffer - stz DecimalBuffer+1 +Decimal.Out stz ZPTmpWord + stz ZPTmpWord+1 ldx #8 sed @@ -775,35 +777,40 @@ Decimal.Out stz DecimalBuffer .1 tya asl tay - lda DecimalBuffer - adc DecimalBuffer - sta DecimalBuffer - lda DecimalBuffer+1 - adc DecimalBuffer+1 - sta DecimalBuffer+1 + lda ZPTmpWord + adc ZPTmpWord + sta ZPTmpWord + lda ZPTmpWord+1 + adc ZPTmpWord+1 + sta ZPTmpWord+1 dex bne .1 + cld - stz bDecimal0Out - lda DecimalBuffer+1 + stz ZPTmpBool No leading 0 + lda ZPTmpWord+1 and #$0f beq .2 + ora #$30 - dec bDecimal0Out + dec ZPTmpBool non zero, print everything jsr Char.Out.Put -.2 lda DecimalBuffer +.2 lda ZPTmpWord lsr lsr lsr lsr bne .3 - bit bDecimal0Out + + bit ZPTmpBool Print this digit ? bpl .4 + .3 ora #$30 jsr Char.Out.Put -.4 lda DecimalBuffer + +.4 lda ZPTmpWord and #$0f ora #$30 *-------------------------------------- @@ -836,8 +843,14 @@ Char.Out.Get sec DRV.CS.END EscCodes >PSTR "MDc" EscSeqCmds >PSTR "mnrKH" +ENQ.String .AZ "XTERM" +SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS + .AS 'XTERM' + .DA #IAC,#SE +SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 BASEH .HS 08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B.08.08.09.09.0A.0A.0B.0B +*-------------------------------------- CH .BS 1 CV .BS 1 INVFLG .BS 1 @@ -848,8 +861,6 @@ CURCHAR .BS 1 OutBuffer .BS 16 OutPtr .BS 1 OutCnt .BS 1 -DecimalBuffer .BS 2 -bDecimal0Out .BS 1 *-------------------------------------- KeyRemapped .HS 05080A0B0D15 L,D,U,CR,R KeyRemappedIdx .HS 050004080C0F @@ -870,7 +881,6 @@ bEscMode .BS 1 bEscModeCSI .BS 1 bEscSeqInNum .BS 1 EscSeq .BS ESCSEQ.MAXLEN+1 -EscSeqParamTmp .BS 2 EscSeqParamCnt .BS 1 EscSeqParam .BS 4 *-------------------------------------- @@ -881,11 +891,6 @@ DEVSTAT .DA #S.DSTAT.S.WRITE+S.DSTAT.S.READ .DA #0 .DA #0 .DA #91 -ENQ.String .AZ "XTERM" -SB.IS.TTYPE .DA #IAC,#SB,#TELOPT.TTYPE,#SB.IS - .AS 'XTERM' - .DA #IAC,#SE -SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE *-------------------------------------- MAN SAVE /A2OSX.SRC/DRV/CONSOLE.DRV.S diff --git a/DRV/DHGR.DRV.S.LBUF.txt b/DRV/DHGR.DRV.S.LBUF.txt index 56641496..da776b98 100644 --- a/DRV/DHGR.DRV.S.LBUF.txt +++ b/DRV/DHGR.DRV.S.LBUF.txt @@ -98,10 +98,10 @@ LBUF.DrawAtY.AND.XOR lda (ZPBasePtr),y Get C1 and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 - ora GBYTE + ora ZPTmpByte eor (ZPBasePtr),y sta (ZPBasePtr),y update screen @@ -128,10 +128,10 @@ LBUF.DrawAtY.AND.XOR lda (ZPBasePtr),y Get C2 and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7 - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 - ora GBYTE + ora ZPTmpByte eor (ZPBasePtr),y sta (ZPBasePtr),y update screen @@ -147,11 +147,11 @@ LBUF.DrawAtY.AND.SET lda (ZPBasePtr),y Clear screen at C1 and LBUF.C1.MASK with MASK bits - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 - ora GBYTE ora with screen bits + ora ZPTmpByte ora with screen bits sta (ZPBasePtr),y update screen inx @@ -201,11 +201,11 @@ LBUF.DrawAtY.AND.SET lda (ZPBasePtr),y Get C2 and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7 - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr),y update screen .8 rts @@ -219,11 +219,11 @@ LBUF.DrawAtY.ORA lda (ZPBasePtr),y Get C1 and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 - ora GBYTE + ora ZPTmpByte ora (ZPBasePtr),y sta (ZPBasePtr),y update screen @@ -251,11 +251,11 @@ LBUF.DrawAtY.ORA lda LBUF.MASK,x get MASK bits ora LBUF.C2.MASK and (ZPBasePtr),y - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr),y update screen .8 rts @@ -270,11 +270,11 @@ LBUF.DrawAtY.AND.ORA lda LBUF.MASK,x get MASK bits ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 and (ZPBasePtr),y Clear screen at C1 - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 - ora GBYTE ora with screen bits + ora ZPTmpByte ora with screen bits sta (ZPBasePtr),y update screen inx @@ -302,11 +302,11 @@ LBUF.DrawAtY.AND.ORA lda LBUF.MASK,x get MASK bits ora LBUF.C2.MASK and (ZPBasePtr),y - sta GBYTE + sta ZPTmpByte lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr),y update screen .8 rts diff --git a/DRV/DHGR.DRV.S.LINE.txt b/DRV/DHGR.DRV.S.LINE.txt index 2f85483b..2b9b0863 100644 --- a/DRV/DHGR.DRV.S.LINE.txt +++ b/DRV/DHGR.DRV.S.LINE.txt @@ -83,7 +83,7 @@ VLINE.MONO >LDYA CB.Cache+S.CB.X1 jsr DIVMOD7YA tay lda COL.OFS,y - sta GBYTE Save COL (DIV) + sta ZPTmpByte Save COL (DIV) lda COL.BANK,y tay @@ -101,7 +101,7 @@ VLINE.MONO.BLACK clc .1 lda BASEL,y - adc GBYTE + adc ZPTmpByte sta ZPBasePtr lda BASEH,y sta ZPBasePtr+1 @@ -118,7 +118,7 @@ VLINE.MONO.BLACK VLINE.MONO.WHITE .1 lda BASEL,y - adc GBYTE + adc ZPTmpByte sta ZPBasePtr lda BASEH,y sta ZPBasePtr+1 @@ -134,7 +134,7 @@ VLINE.MONO.WHITE VLINE.MONO.XOR .1 lda BASEL,y - adc GBYTE + adc ZPTmpByte sta ZPBasePtr lda BASEH,y sta ZPBasePtr+1 @@ -180,13 +180,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1 beq .10 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta SETPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .10 inx @@ -196,13 +196,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1 beq .11 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta CLRPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .11 inc ZPBasePtr @@ -213,13 +213,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1 beq .12 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta SETPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .12 inx @@ -229,13 +229,13 @@ VLINE.C16 lda CB.Cache+S.CB.X1 beq .13 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta CLRPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .13 rts diff --git a/DRV/DHGR.DRV.S.PIX.txt b/DRV/DHGR.DRV.S.PIX.txt index 596a65e9..ed8d9e9f 100644 --- a/DRV/DHGR.DRV.S.PIX.txt +++ b/DRV/DHGR.DRV.S.PIX.txt @@ -95,13 +95,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1 lda Color.Masks,x bits in 1st byte to light? beq .10 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta SETPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .10 inx @@ -110,13 +110,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1 lda Color.Masks,x beq .11 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta CLRPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .11 inc ZPBasePtr @@ -126,13 +126,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1 lda Color.Masks,x beq .12 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta SETPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .12 inx @@ -141,13 +141,13 @@ SETPIXEL.C16 lda CB.Cache+S.CB.X1 lda Color.Masks,x beq .13 and Color.Pixels,y apply color - sta GBYTE + sta ZPTmpByte sta CLRPAGE2 lda (ZPBasePtr) and Color.NMasks,x reset existing pixel, - ora GBYTE + ora ZPTmpByte sta (ZPBasePtr) .13 rts diff --git a/DRV/DHGR.DRV.S.RECT.txt b/DRV/DHGR.DRV.S.RECT.txt index f5431d60..f57dc549 100644 --- a/DRV/DHGR.DRV.S.RECT.txt +++ b/DRV/DHGR.DRV.S.RECT.txt @@ -36,14 +36,14 @@ FILLRECT jsr HLINE GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1 jsr DIVMOD7YA - sta GBYTE + sta ZPTmpByte >LDYA CB.Cache+S.CB.X2 jsr DIVMOD7YA inc COL2 + 1 sec - sbc GBYTE (COL2+1)-COL1 + sbc ZPTmpByte (COL2+1)-COL1 tax >LDYA CB.Cache+S.CB.Y1 diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 3b72f8e8..4e12661f 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -23,6 +23,25 @@ ZPBMDataPtr .EQ ZPDRV+8 ZPBMMaskPtr .EQ ZPDRV+10 ZPBMSavePtr .EQ ZPDRV+12 *-------------------------------------- +ZPTmpWord .EQ ZPDRV+14 +*-------------------------------------- +LBUF.C1 .EQ ZPDRV+16 +LBUF.C1.MASK .EQ ZPDRV+17 Bits to CLR in VMEM : 11100000 00000000 00111111 +LBUF.C1.DATA .EQ ZPDRV+18 Bits to SET/ORA/XOR : 000ccccc cccccccc cc000000 +LBUF.C2 .EQ ZPDRV+19 C1 C2 +LBUF.C2.MASK .EQ ZPDRV+20 +LBUF.C2.DATA .EQ ZPDRV+21 +*-------------------------------------- +BLT.BMMaskPtr .EQ ZPDRV+22 +BLT.BMDataPtr .EQ ZPDRV+24 +BLT.BMBitOfs .EQ ZPDRV+26 +BLT.BMBitOfsL .EQ ZPDRV+27 +BLT.ScrBitOfs .EQ ZPDRV+28 +BLT.ScrColIdx .EQ ZPDRV+29 +BLT.CMASK .EQ ZPDRV+30 +*-------------------------------------- +ZPTmpByte .EQ ZPDRV+31 +*-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld @@ -273,10 +292,10 @@ DIVMOD7YA dec * OUT: * Y,A = (Y,A) * X *-------------------------------------- -YAMultX stx GBYTE +YAMultX stx ZPTmpByte - sty GWORD - sta GWORD+1 + sty ZPTmpWord + sta ZPTmpWord+1 ldy #0 Result LO tya Result HI @@ -286,17 +305,19 @@ YAMultX stx GBYTE .1 pha tya clc - adc GWORD + adc ZPTmpWord tay pla - adc GWORD+1 + adc ZPTmpWord+1 -.2 asl GWORD - rol GWORD+1 +.2 asl ZPTmpWord + rol ZPTmpWord+1 -.3 lsr GBYTE +.3 lsr ZPTmpByte bcs .1 + bne .2 + rts *-------------------------------------- .INB /A2OSX.SRC/DRV/DHGR.DRV.S.BLT @@ -396,26 +417,9 @@ CB.CmdLen .DA S.CB.Y1+1 SETPIXEL CB.Cache .BS S.CB BM.Cache .BS S.BM *-------------------------------------- -LBUF.C1 .BS 1 -LBUF.C1.MASK .BS 1 Bits to CLR in VMEM : 11100000 00000000 00111111 -LBUF.C1.DATA .BS 1 Bits to SET/ORA/XOR : 000ccccc cccccccc cc000000 -LBUF.C2 .BS 1 C1 C2 -LBUF.C2.MASK .BS 1 -LBUF.C2.DATA .BS 1 LBUF.MASK .BS 81 81 because of sta LBUF.DATA+1,x!!! LBUF.DATA .BS 81 *-------------------------------------- -BLT.BMMaskPtr .BS 2 -BLT.BMDataPtr .BS 2 -BLT.BMBitOfs .BS 1 -BLT.BMBitOfsL .BS 1 -BLT.ScrBitOfs .BS 1 -BLT.ScrColIdx .BS 1 -BLT.CMASK .BS 1 -*-------------------------------------- -GBYTE .BS 1 -GWORD .BS 2 -*-------------------------------------- DSTAT .DA #0 .DA #0,#0,#0 >PSTR "Apple II DHGR" diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 7648fc14..76e9225d 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -2,8 +2,8 @@ NEW PREFIX /A2OSX.BUILD AUTO 4,1 *-------------------------------------- -ZPDRV .EQ $30 -ZPLIB .EQ $40 32 bytes for TCPIP +ZPDRV .EQ $20 32 bytes for DHGR.DRV.... +ZPLIB .EQ $40 32 bytes for TCPIPD.. *-------------------------------------- * PS Context : 48 bytes MAX *-------------------------------------- diff --git a/INC/GUI.I.txt b/INC/GUI.I.txt index 4bbc7448..23af3a26 100644 --- a/INC/GUI.I.txt +++ b/INC/GUI.I.txt @@ -3,6 +3,26 @@ PREFIX /A2OSX.BUILD AUTO 4,1 .LIST OFF *-------------------------------------- +* GC : Graphic Context +*-------------------------------------- +S.GC.hParentGC .EQ 0 +S.GC.hDev .EQ 1 +S.GC.hMem .EQ 2 +* +S.GC.X1 .EQ 4 +S.GC.Y1 .EQ 6 +S.GC.X2 .EQ 8 +S.GC.Y2 .EQ 10 +S.GC.W .EQ 12 +S.GC.H .EQ 14 + +S.GC.Cursor .EQ 15 +S.GC.Color .EQ 16 +S.GC.hFont .EQ 17 +S.GC.hBrush .EQ 18 +* +S.GC .EQ 20 +*-------------------------------------- S.CB.CMD .EQ 0 S.CB.CMD.SETPIXEL .EQ 0 S.CB.CMD.GETPIXEL .EQ 2 @@ -13,6 +33,7 @@ S.CB.CMD.BITBLT .EQ 10 S.CB.CMD.GETRECTBUFSIZE .EQ 12 S.CB.CMD.DRAWLINE .EQ 14 S.CB.CMD.DRAWTEXT .EQ 16 +S.CB.CMD.GETTEXTSIZE .EQ 18 S.CB.OP .EQ 1 S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen S.CB.OP.SET .EQ 2 replace screen with bitmap @@ -48,6 +69,127 @@ S.CB.DstPtr .EQ 18 BITBLT * S.CB .EQ 20 *-------------------------------------- +CUR.T.ARROW .EQ 0 +CUR.T.RESIZEX .EQ 2 +CUR.T.RESIZEY .EQ 4 +CUR.T.RESIZEXY1 .EQ 6 +CUR.T.RESIZEXY2 .EQ 8 +CUR.T.CROSS .EQ 10 +CUR.T.TEXT .EQ 12 +CUR.T.WAIT .EQ 14 +*-------------------------------------- +S.MOUSE.X1 .EQ 0 +S.MOUSE.Y1 .EQ 2 +S.MOUSE.X2 .EQ 4 +S.MOUSE.Y2 .EQ 6 +S.MOUSE.S .EQ 8 +S.MOUSE.S.UP .EQ %00000001 +S.MOUSE.S.DOWN .EQ %00000010 +S.MOUSE.S.MOVE .EQ %00000100 +S.MOUSE.S.DRAG .EQ %00001000 +S.MOUSE.S.CLK .EQ %00010000 +S.MOUSE.S.DCLK .EQ %00100000 +* +S.MOUSE .EQ 9 +*-------------------------------------- +S.POINT.X .EQ 0 +S.POINT.Y .EQ 2 +* +S.POINT .EQ 4 +*-------------------------------------- +S.RECT.X1 .EQ 0 +S.RECT.Y1 .EQ 2 +S.RECT.X2 .EQ 4 +S.RECT.Y2 .EQ 6 +* +S.RECT .EQ 8 +*-------------------------------------- +T.WND .EQ 0 +T.MENU .EQ 2 +T.BUTTON .EQ 4 +T.TEXT .EQ 6 +*-------------------------------------- +S.WND.T .EQ 0 +S.WND.F .EQ 1 +S.WND.F.RESIZE .EQ %00000001 +S.WND.F.MOVE .EQ %00000010 +S.WND.F.CLOSE .EQ %00000100 +S.WND.F.MAX .EQ %00001000 +S.WND.F.MIN .EQ %00010000 +S.WND.F.NOBORDER .EQ %00100000 +S.WND.F.MODAL .EQ %01000000 +S.WND.F.SYSMODAL .EQ %10000000 +S.WND.S .EQ 2 +S.WND.hOWNER .EQ 3 +S.WND.hPARENT .EQ 4 +S.WND.hTITLE .EQ 5 +S.WND.hMENU .EQ 6 +S.WND.hBKCOLOR .EQ 7 +S.WND.hBKBM .EQ 8 +S.WND.hSTATUS .EQ 9 +S.WND.hCUR .EQ 10 +S.WND.hICON .EQ 11 +S.WND.X .EQ 12 +S.WND.Y .EQ 14 +S.WND.W .EQ 16 +S.WND.H .EQ 18 +* +S.WND .EQ 32 +*-------------------------------------- +S.MENU.T .EQ 0 +S.MENU.F .EQ 1 +S.MENU.hSAVEBUF .EQ 2 +S.MENU.X .EQ 3 +S.MENU.Y .EQ 5 +* ... S.MITEMs... +*-------------------------------------- +S.MITEM.F .EQ 0 +*S.MITEM.F. .EQ %00000001 +*S.MITEM.F. .EQ %00000010 +*S.MITEM.F. .EQ %00000100 +*S.MITEM.F. .EQ %00001000 +*S.MITEM.F. .EQ %00010000 +S.MITEM.F.SEP .EQ %00100000 +S.MITEM.F.CHECKED .EQ %01000000 +S.MITEM.F.DISABLED .EQ %10000000 +S.MITEM.ID .EQ 1 +S.MITEM.hSUBM .EQ 2 +S.MITEM.hBM .EQ 3 +S.MITEM.HOTKEY .EQ 4 +S.MITEM.HOTKEY.CTRL .EQ %10000000 +S.MITEM.HOTKEY.OA .EQ %01000000 +S.MITEM.HOTKEY.CA .EQ %00100000 +S.MITEM.TEXTLEN .EQ 5 +S.MITEM.TEXT .EQ 6 CSTR +* ... +*-------------------------------------- +S.BUT.T .EQ 0 +S.BUT.F .EQ 1 +S.BUT.F.DISABLED .EQ %10000000 +S.BUT.S .EQ 2 +S.BUT.S.PUSHED .EQ %10000000 +S.BUT.ID .EQ 3 +S.BUT.hOWNER .EQ 4 +S.BUT.hPARENT .EQ 5 +S.BUT.X .EQ 6 +S.BUT.Y .EQ 8 +S.BUT.W .EQ 10 +S.BUT.H .EQ 12 +S.BUT.hBM .EQ 14 +S.BUT.TEXTX .EQ 16 +S.BUT.TEXTY .EQ 18 +S.BUT.TEXTLEN .EQ 20 +S.BUT.TEXT .EQ 21 +* ... +*-------------------------------------- +S.TEXT.T .EQ 0 +S.TEXT.F .EQ 1 +S.TEXT.F.DISABLED .EQ %10000000 +S.TEXT.ID .EQ 2 +S.TEXT.hBM .EQ 3 +S.TEXT.TEXTLEN .EQ 5 +S.TEXT.TEXT .EQ 6 +*-------------------------------------- S.BM.F .EQ 0 S.BM.F.BBP1 .EQ %00000001 S.BM.F.BBP2 .EQ %00000010 diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 9ef5bae9..6ea34ff4 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -15,80 +15,6 @@ LIBGUI.UpdateCursor .EQ 18 LIBGUI.ReadMouse .EQ 20 LIBGUI.GetScreenGC .EQ 22 *-------------------------------------- -S.GC.hDev .EQ 0 -S.GC.hMem .EQ 1 -S.GC.Parent .EQ 2 -* -S.GC.X1 .EQ 4 -S.GC.Y1 .EQ 6 -S.GC.X2 .EQ 8 -S.GC.Y2 .EQ 10 -* -S.GC .EQ 12 -*-------------------------------------- -CUR.T.ARROW .EQ 0 -CUR.T.RESIZEX .EQ 2 -CUR.T.RESIZEY .EQ 4 -CUR.T.RESIZEXY1 .EQ 6 -CUR.T.RESIZEXY2 .EQ 8 -CUR.T.CROSS .EQ 10 -CUT.T.TEXT .EQ 12 -CUR.T.WAIT .EQ 14 -*-------------------------------------- -S.MOUSE.X1 .EQ 0 -S.MOUSE.Y1 .EQ 2 -S.MOUSE.X2 .EQ 4 -S.MOUSE.Y2 .EQ 6 -S.MOUSE.S .EQ 8 -S.MOUSE.S.UP .EQ %00000001 -S.MOUSE.S.DOWN .EQ %00000010 -S.MOUSE.S.MOVE .EQ %00000100 -S.MOUSE.S.DRAG .EQ %00001000 -S.MOUSE.S.CLK .EQ %00010000 -S.MOUSE.S.DCLK .EQ %00100000 -* -S.MOUSE .EQ 9 -*-------------------------------------- -S.POINT.X .EQ 0 -S.POINT.Y .EQ 2 -* -S.POINT .EQ 4 -*-------------------------------------- -S.RECT.X1 .EQ 0 -S.RECT.Y1 .EQ 2 -S.RECT.X2 .EQ 4 -S.RECT.Y2 .EQ 6 -* -S.RECT .EQ 8 -*-------------------------------------- -S.WND.F .EQ 0 -S.WND.F.RESIZE .EQ %00000001 -S.WND.F.MOVE .EQ %00000010 -S.WND.F.CLOSE .EQ %00000100 -S.WND.F.MAX .EQ %00001000 -S.WND.F.MIN .EQ %00010000 -S.WND.F.SPARE .EQ %00100000 -S.WND.F.MODAL .EQ %01000000 -S.WND.F.SYSMODAL .EQ %10000000 -S.WND.S .EQ 1 -S.WND.hOWNER .EQ 2 -S.WND.hPARENT .EQ 3 -S.WND.hTITLE .EQ 4 -S.WND.hMENU .EQ 5 -S.WND.hBKCOLOR .EQ 6 -S.WND.hBKBM .EQ 7 -S.WND.hSTATUS .EQ 8 -S.WND.hCUR .EQ 9 -S.WND.hICON .EQ 10 -S.WND.X .EQ 12 -S.WND.Y .EQ 14 -S.WND.W .EQ 16 -S.WND.H .EQ 18 -* -S.WND .EQ 32 -*-------------------------------------- -S.GUI.C.BK -*-------------------------------------- MAN SAVE /A2OSX.BUILD/INC/LIBGUI.I LOAD /A2OSX.SRC/LIB/LIBGUI.S diff --git a/LIB/LIBGUI.S.BM.txt b/LIB/LIBGUI.S.BM.txt new file mode 100644 index 00000000..7d131451 --- /dev/null +++ b/LIB/LIBGUI.S.BM.txt @@ -0,0 +1,12 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*-------------------------------------- +BM.Get +*-------------------------------------- +*-------------------------------------- +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/LIB/LIBGUI.S.BM +LOAD /A2OSX.SRC/LIB/LIBGUI.S +ASM diff --git a/LIB/LIBGUI.S.BUT.txt b/LIB/LIBGUI.S.BUT.txt new file mode 100644 index 00000000..eb67e30c --- /dev/null +++ b/LIB/LIBGUI.S.BUT.txt @@ -0,0 +1,26 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*-------------------------------------- +BUT.New >STYA ZPPtr1 + + ldy #S.BUT.hBM + lda (ZPPtr1),y + beq . + + >SYSCALL + lda #0 + ldy # + sta + + +*-------------------------------------- +BUT.Draw + +*-------------------------------------- + +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/LIB/LIBGUI.S.BUT +LOAD /A2OSX.SRC/LIB/LIBGUI.S +ASM diff --git a/LIB/LIBGUI.S.DRAW.txt b/LIB/LIBGUI.S.DRAW.txt index d91b504f..7135f5bc 100644 --- a/LIB/LIBGUI.S.DRAW.txt +++ b/LIB/LIBGUI.S.DRAW.txt @@ -329,6 +329,7 @@ DrawText >LDYA L.CB.Cache .9 rts *-------------------------------------- + MAN SAVE /A2OSX.SRC/LIB/LIBGUI.S.DRAW LOAD /A2OSX.SRC/LIB/LIBGUI.S diff --git a/LIB/LIBGUI.S.MENU.txt b/LIB/LIBGUI.S.MENU.txt new file mode 100644 index 00000000..b17e2b4e --- /dev/null +++ b/LIB/LIBGUI.S.MENU.txt @@ -0,0 +1,28 @@ +NEW +PREFIX /A2OSX.BUILD +AUTO 4,1 +*-------------------------------------- +PopupMenu >STYA ZPPtr1 + + + lda #2 1px Border + sta DX + sta DY + stz DX+1 + stz DY+1 + + lda ZPPtr1 + clc + adc #S.MENU + sta ZPPtr2 + + lda ZPPtr1+1 + adc /S.MENU + sta ZPPtr2+1 + +.1 lda (ZPPtr2) +*-------------------------------------- +MAN +SAVE /A2OSX.SRC/LIB/LIBGUI.S.MENU +LOAD /A2OSX.SRC/LIB/LIBGUI.S +ASM diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 788c0137..6928ef7f 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -261,6 +261,7 @@ GoDevMouse jmp $ffff .INB /A2OSX.SRC/LIB/LIBGUI.S.CUR .INB /A2OSX.SRC/LIB/LIBGUI.S.PAT .INB /A2OSX.SRC/LIB/LIBGUI.S.WND + .INB /A2OSX.SRC/LIB/LIBGUI.S.BUT *-------------------------------------- CS.END *-------------------------------------- diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 605ccb64..1f209bf4 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -121,8 +121,7 @@ CS.RUN.LOOP bcs .8 unable to send greetings...reset.. - ldy #hBinName - lda (pData),y + >LDA.G hBinName >SYSCALL GetMemPtr.A >SYSCALL ExecPS.YA @@ -218,7 +217,6 @@ CS.DOEVENT lda (pEvent) rts *-------------------------------------- CS.QUIT >LDA.G hBinName - lda (pData),y beq .1 >SYSCALL FreeMem.A diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 9c293c8f..960dc518 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -33,37 +33,44 @@ CS.START cld .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT -L.MSG.INIT .DA MSG.INIT L.LIBGUI .DA LIBGUI -L.SYSFONT .DA SYSFONT +L.SYSX7 .DA SYSX7 +L.SYSX7B .DA SYSX7B L.Filename .DA Filename L.MouseData .DA MouseData L.CB.Paint .DA CB.Paint L.BM.Apple .DA BM.Apple L.TXT.Sample .DA TXT.Sample +L.TXT.A2osX .DA TXT.A2osX L.CB.Marylin .DA CB.Marylin L.CB.DrawLine .DA CB.DrawLine L.GC.Clip .DA GC.Clip .DA 0 *-------------------------------------- -CS.INIT >LDYA L.MSG.INIT - >SYSCALL PrintF.YA - - >LDYA L.LIBGUI +CS.INIT >LDYA L.LIBGUI >SYSCALL LoadLib.YA - bcs .99 + bcs .98 sta hLIBGUI >LIBCALL hLIBGUI,LIBGUI.InitGUI - bcs .99 + bcs .98 >PUSHWI 0 Aux type >PUSHBI $CC Type >PUSHBI SYS.FOpen.R - >PUSHW L.SYSFONT + >PUSHW L.SYSX7 + >SYSCALL LoadStkObj +.98 bcs .99 + sta hSYSFON + sta CB.DrawA2osX+S.CB.hFont + + >PUSHWI 0 Aux type + >PUSHBI $CC Type + >PUSHBI SYS.FOpen.R + >PUSHW L.SYSX7B >SYSCALL LoadStkObj bcs .99 - sta hSYSFONT + sta hSYSFONB sta CB.DrawText+S.CB.hFont >PUSHWI 0 Aux type @@ -78,6 +85,9 @@ CS.INIT >LDYA L.MSG.INIT >LDYA L.TXT.Sample >STYA CB.DrawText+S.CB.TxtPtr + >LDYA L.TXT.A2osX + >STYA CB.DrawA2osX+S.CB.TxtPtr + >LDYA L.BM.Apple >STYA CB.Apple+S.CB.SrcPtr @@ -177,13 +187,14 @@ Destop.Paint >LIBCALL hLIBGUI,LIBGUI.HideCursor *-------------------------------------- CS.END LIBGUI .AZ "libgui.o" -MSG.INIT .AZ "GUI:Init...\r\n" hLIBGUI .BS 1 -hSYSFONT .BS 1 +hSYSFON .BS 1 +hSYSFONB .BS 1 *-------------------------------------- Filename .AZ "/A2OSX.BUILD/ROOT/MARILYN" *-------------------------------------- -SYSFONT .AZ "/A2OSX.BUILD/SBIN/GUI/SYSTEM" +SYSX7 .AZ "/A2OSX.BUILD/SBIN/GUI/SYSX7" +SYSX7B .AZ "/A2OSX.BUILD/SBIN/GUI/SYSX7B" *-------------------------------------- MouseData .BS S.MOUSE *-------------------------------------- @@ -204,19 +215,6 @@ CB.Paint .DA #S.CB.CMD.FILLRECT .DA 20 Y1 .DA 519 X2 .DA 171 Y2 -*-------------------------------------- -CB.Apple .DA #S.CB.CMD.BITBLT - .DA #S.CB.OP.SET - .DA #S.CB.M.C16 - .DA #0 - .DA 0 X1 - .DA 0 Y1 - .DA 16 W - .DA 7 H - .DA 28 DestX - .DA 180 DestY - .BS 2 SrcPtr - .DA 0 DstPtr *-------------------------------------- CB.DrawText .DA #S.CB.CMD.DRAWTEXT .DA #S.CB.OP.SET OP @@ -229,6 +227,31 @@ CB.DrawText .DA #S.CB.CMD.DRAWTEXT .DA 4 DstX .DA 7 DstY .BS 2 TxtPtr +*-------------------------------------- +CB.Apple .DA #S.CB.CMD.BITBLT + .DA #S.CB.OP.SET + .DA #S.CB.M.C16 + .DA #0 + .DA 0 X1 + .DA 0 Y1 + .DA 16 W + .DA 7 H + .DA 4 DestX + .DA 183 DestY + .BS 2 SrcPtr + .DA 0 DstPtr +*-------------------------------------- +CB.DrawA2osX .DA #S.CB.CMD.DRAWTEXT + .DA #S.CB.OP.SET OP + .DA #S.CB.M.MONO M + .BS 1 hFont + .DA 0 X1 + .DA 0 Y1 + .DA 0 SrcW + .DA 0 SrcH + .DA 24 DstX + .DA 183 DstY + .BS 2 TxtPtr *-------------------------------------- .DA #0 *-------------------------------------- @@ -236,7 +259,7 @@ BM.Apple .DA #S.BM.F.BBP4 .DA #2 RowBytes .DA 16 W .DA 7 H - .DA 0 + .DA 0 no MASK.OFS .HS FFF6 green (8) .HS 6FF6 green (8) @@ -246,7 +269,8 @@ BM.Apple .DA #S.BM.F.BBP4 .HS 9999 violet (11) .HS 1FF1 Dark blue (4) *-------------------------------------- -TXT.Sample .AZ "@@@@@@@@@ This Is A Sample Text with System Font Height=7px, Variable Width {}[] #0123456789$ @@@@@@@@@" +TXT.Sample .AZ "@ This Is A Sample Text with SYSX7B.FON Height=7px, Variable Width {}[] #0123456789$ " +TXT.A2osX .AZ "A2osX" *-------------------------------------- CB.Marylin .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index a623be31..c50ee9c2 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -1,8 +1,6 @@ -PR#3 -PREFIX /A2OSX.BUILD NEW -INC 1 -AUTO 6 +PREFIX /A2OSX.BUILD +AUTO 4,1 .LIST OFF .OP 65C02 .OR $2000 diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index ff072eff..87e2855a 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -294,7 +294,7 @@ Cmd.Exec.CD lda (ZPPTR2) iny lda #0 sta (ZPPTR2),y - + .3 >LDYA ZPPTR2 Get ARG >SYSCALL RealPath.YA bcs .9 diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 33f20a8e..82b1cc7f 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -1,8 +1,6 @@ -PR#3 +NEW PREFIX /A2OSX.BUILD -LOMEM $A00 -INC 1 -AUTO 6 +AUTO 4,1 .LIST OFF *-------------------------------------- CSH.E.SYNTAX .EQ $7F diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index e7992039..048fcbeb 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -204,12 +204,12 @@ K.ReadDir.A.ROOT inc ZPPtr2+1 bra .3 -* lda #0 done by S.MEM.F.INIT0 +* lda #0 done by S.MEM.F.INIT0 * sta (ZPPtr4) Ending 0 .5 ldy #S.NODE.DIR.FC lda #16 - sta (ZPPtr1),y Flag that we returned somthing for next time + sta (ZPPtr1),y Flag that we returned somthing for next time jmp K.ReadDir.A.EXIT *-------------------------------------- diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 488dd3bc..449571e8 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -4,7 +4,7 @@ AUTO 4,1 *-------------------------------------- ZPMemMgrSPtr .EQ ZPMEMMGR Pointer To Slot selected ZPMemMgrTmp1 .EQ ZPMEMMGR+2 - +ZPMemMgrSize .EQ ZPMEMMGR+4 ZPSListID .EQ ZPMEMMGR+6 ZPSListIBlkPtr .EQ ZPMEMMGR+8 ZPSListDBlkPtr .EQ ZPMEMMGR+10 @@ -79,7 +79,7 @@ K.GetMem0.YA ldx #S.MEM.F.INIT0 K.GetMem.YA ldx #0 MEM.GetMem.YAX stx Mem.ReqFlags - sta Mem.ReqSize+1 + sta ZPMemMgrSize+1 tya bit #$0F 16 bytes aligned ? @@ -89,9 +89,9 @@ MEM.GetMem.YAX stx Mem.ReqFlags clc adc #$10 bcc .10 - inc Mem.ReqSize+1 + inc ZPMemMgrSize+1 -.10 sta Mem.ReqSize +.10 sta ZPMemMgrSize >LDYAI Mem.Table >STYA ZPMemMgrSPtr @@ -115,12 +115,12 @@ MEM.GetMem.YAX stx Mem.ReqFlags .3 ldy #S.MEM.LEN lda (ZPMemMgrSPtr),y get LEN of this block - cmp Mem.ReqSize compare with requested size + cmp ZPMemMgrSize compare with requested size bne .4 iny lda (ZPMemMgrSPtr),y - cmp Mem.ReqSize+1 + cmp ZPMemMgrSize+1 beq .7 requested size matches slot size !!! .4 cpx Mem.LastSlot any other slot to check? @@ -133,7 +133,7 @@ MEM.GetMem.YAX stx Mem.ReqFlags lda Mem.Free target PTR will be page aligned ? sec - sbc Mem.ReqSize + sbc ZPMemMgrSize beq .6 yes, allocate tay no, reserve a free slot to fill gap @@ -141,7 +141,7 @@ MEM.GetMem.YAX stx Mem.ReqFlags jsr Mem.AddSlot X = new slot bcs .9 -.6 >LDYA Mem.ReqSize +.6 >LDYA ZPMemMgrSize jsr Mem.AddSlot X = new slot bcs .9 @@ -161,11 +161,11 @@ MEM.GetMem.YAX stx Mem.ReqFlags lda (ZPMemMgrSPtr),y sta .12+2 - lda Mem.ReqSize + lda ZPMemMgrSize eor #$ff tay y=not lo count - lda Mem.ReqSize+1 + lda ZPMemMgrSize+1 eor #$ff a=not hi count phx @@ -209,7 +209,6 @@ MEM.GetMem.YAX stx Mem.ReqFlags .9 rts *-------------------------------------- -Mem.ReqSize .BS 2 store requested Size Mem.ReqFlags .BS 1 store requested Flags *-------------------------------------- * Mem.AddSlot @@ -558,6 +557,27 @@ K.SListFree.A sta CLRWRITEAUX rts */-------------------------------------- +* # GetStkObjProperty.A +* ## In: +* A = hMem To Free (AUX Memory) +* Y = Property Index +* ## Out: +* Y,A = Property Value +*\-------------------------------------- + phy + sta SETREADAUX + jsr K.GetMemPtr.A + >STYA ZPMemMgrTmp1 + + ply + lda (ZPMemMgrTmp1),y + pha + iny + lda (ZPMemMgrTmp1),y + ply + sta CLRREADAUX + rts +*/-------------------------------------- * # NewStkObj.YA * ## In: * Y,A = Size Requested @@ -580,7 +600,7 @@ K.NewStkObj.YA ldx #SYS.GetMem.YA *\-------------------------------------- K.FreeStkObj.A ldx #SYS.FreeMem.A - sta SETREADAUX +MEM.GoStkObj sta SETREADAUX sta SETWRITEAUX jsr .1 diff --git a/SYS/KERNEL.S.OSD.txt b/SYS/KERNEL.S.OSD.txt index 4ac9f2f5..fca0e8b3 100644 --- a/SYS/KERNEL.S.OSD.txt +++ b/SYS/KERNEL.S.OSD.txt @@ -63,6 +63,7 @@ J.Cmds .DA SETPIXEL .DA GETRECTBUFSIZE .DA $ffff DRAWLINE .DA DRAWTEXT + .DA GETTEXTSIZE *-------------------------------------- SETPIXEL >LDYA CB.Cache+S.CB.Y1 ldx DstBM.Cache+S.BM.RowBytes @@ -155,6 +156,7 @@ BITBLT.1 >STYA ZPSrcBMPtr *-------------------------------------- +* GETRECTBUFSIZE * In: * S.CB.SrcW * S.CB.SrcH @@ -166,14 +168,28 @@ GETRECTBUFSIZE GETRECTBUFSIZE.RTS rts *-------------------------------------- +* DRAWTEXT * In: * S.CB.S.CB.FONT : hFont * S.CB.SrcPtr : Ptr to Text -* S.CB.DstPtr : Buffer Size (in bytes) * Out: * A=hBM *-------------------------------------- -DRAWTEXT lda CB.Cache+S.CB.hFONT +DRAWTEXT sec + .HS 90 BCC +*-------------------------------------- +* GETTEXTSIZE +* In: +* S.CB.S.CB.FONT : hFont +* S.CB.SrcPtr : Ptr to Text +* Out: +* A,X = Width +* Y = Height +*-------------------------------------- +GETTEXTSIZE clc + php + + lda CB.Cache+S.CB.hFONT jsr GO.GetMemPtr.A >STYA ZPFontPtr @@ -195,34 +211,43 @@ DRAWTEXT lda CB.Cache+S.CB.hFONT .2 >LDYA CB.Cache+S.CB.TxtPtr >STYA TXTPTR - lda #S.BM.F.BBP1 - sta DstBM.Cache+S.BM.F - - stz DstBM.Cache+S.BM.W - stz DstBM.Cache+S.BM.W+1 + stz CB.Cache+S.CB.SrcW + stz CB.Cache+S.CB.SrcW+1 lda FON.Cache+S.FON.PixH - sta DstBM.Cache+S.BM.H - stz DstBM.Cache+S.BM.H+1 - sta CB.Cache+S.CB.SrcH stz CB.Cache+S.CB.SrcH+1 - + .3 jsr MEM.TXTPTR.GetNext beq .4 jsr FON.GetChar lda (ZPCharPtr) Get Char PixelW sec - adc DstBM.Cache+S.BM.W - sta DstBM.Cache+S.BM.W + adc CB.Cache+S.CB.SrcW + sta CB.Cache+S.CB.SrcW bcc .3 - inc DstBM.Cache+S.BM.W+1 + inc CB.Cache+S.CB.SrcW+1 bra .3 -.4 >LDYA DstBM.Cache+S.BM.W - >STYA CB.Cache+S.CB.SrcW +.4 plp + + lda CB.Cache+S.CB.SrcW + ldx CB.Cache+S.CB.SrcW+1 + ldy CB.Cache+S.CB.SrcH + + bcs .5 + rts + + +.5 sta DstBM.Cache+S.BM.W + stx DstBM.Cache+S.BM.W+1 + sty DstBM.Cache+S.BM.H + stz DstBM.Cache+S.BM.H+1 + + lda #S.BM.F.BBP1 + sta DstBM.Cache+S.BM.F jsr BM.Create bcs GETRECTBUFSIZE.RTS diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index d981d35e..f42a0427 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -174,7 +174,7 @@ K.GetC.CDEV ldx #DEVMGR.READ *-------------------------------------- K.GetC.SSOCK lda (pDev) #S.NODE.HANDLER jsr K.GetMemPtr.A - >STYA .1 + >STYA .1+1 ldy #S.NODE.SSOCK.READ lda (pDev),y @@ -290,14 +290,13 @@ K.FOpen.10 >LDYAI S.NODE.REG stz K.MLI.PARAMS+3 stz K.MLI.PARAMS+4 >MLICALL MLISETEOF no, reset size to 0 - bcs .98 - bra .20 + bra .21 .11 >MLICALL MLIGETEOF bcs .98 >MLICALL MLISETMARK - bcs .98 +.21 bcs .98 .20 lda K.FOpen.MODE and #SYS.FOpen.T Text Mode ? @@ -1093,14 +1092,12 @@ STDIO.IOERR lda #MLI.E.IO PADLEN .BS 1 PADCHAR .BS 1 *-------------------------------------- -*EXP .BS 1 HEXBUF .BS 4 -bNeg .BS 1 BCDBUF .BS 5 5, enough to handle 10 digits (32bits) *-------------------------------------- * Convert HEXBUF to ASCBUF decimal padded with 0 *-------------------------------------- -HEX2DEC ror bNeg +HEX2DEC ror .31+1 ldx #4 @@ -1129,8 +1126,8 @@ HEX2DEC ror bNeg bne .2 cld -*-------------------------------------- - bit bNeg a -sign to print before digits ? + +.31 bit #$ff SELF MODIFIED -sign to print before digits ? bpl .9 lda #'-' jsr Printf.Cout