From b5bd89a76ee378cb4427d4cdc8191a23b1ffaa0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 8 Dec 2017 17:10:39 +0100 Subject: [PATCH] Kernel 0.9.1 : LibGui, Fonts..... --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes .Fonts/{SYS8x16.fnt => SYS16x8.fnt} | Bin .Fonts/{SYS6x7.fnt => SYSx7.fnt} | Bin BIN/LS.S.txt | 3 +- FNT2FON.S.txt | 349 ++++++++++++++++------------ INC/LIBGUI.I.txt | 13 +- README.md | 11 +- 8 files changed, 220 insertions(+), 156 deletions(-) rename .Fonts/{SYS8x16.fnt => SYS16x8.fnt} (100%) rename .Fonts/{SYS6x7.fnt => SYSx7.fnt} (100%) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7fc16deee18f5241289e71fe805b39c4732ca3b4..713f9c1162d1fe37c15def9ac9d0e17968a06c42 100644 GIT binary patch delta 10404 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 P<^*D{?SFQ1vm65en3%U} diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 46e0fddfa7ce2932c60fe9887de0de2d278cdc32..36cb6a3f50ff47c67e68b302e9d00c45d5742a60 100644 GIT binary patch delta 502 zcmZo@FluNp+Tg>&(xEKHwK;&rj!U3akpTph86I~Bfkd0<@ok^S$7smGs4@M57^4!C zv-9*%VvOA;ZvK8s3<8`?GwlL`LxLKWf+K^K7-YGa0)qTq{Dbw}LiAkRd_vlwvMNnV z3`*S77m70~GV)A6EY7IL%FE>88qp@f*e1cWOoDlryo;y1XGo8pV{oIofuWJHiK&^n zg{7mDvx}>nI)en?blywM;`RJYj?T`m!NGkXbxK9$6%eGvz#+h-bwEv*fm@Jirk+cv zuWuv+mk^NYAJk~Tz$47$608>-;usXdASA-%Sd{LZUz%6aqvsUdXviQX#^meoG7Zcz zY)ye1YQP{S&J^P5>#FBml$uzQ+NbAKAKYkUz#uFE5%$eb0UH4n5|m=faLddoNiCWL zF;qaBDJdYav>2odWQnK@Q<7s&PHuj236O#c^2;(M`Q+!N_e0bO$uT7br6!ja6{kX- zCZxdRoS%bmEUO`dsuI(5g`Z3c;_eJw${=sK`nfQ0r~tj{3Zzw;rUzOuPiVWs+;)Yf b?Fwt#6}Gl3>}^*#+OBZ6UEx}Gg?kMEBiV}& delta 448 zcmZo@FluNp+Tg>&(yA;gxH*8uj!Pg}kpTph86M9Ks!)~{Xr9NneI6g9AqS({^b2B) zO4GlHF?Op2M+Pe~$Z|3T1o^x82kW_o=()K0gtXZO1cwAQDycLnF(`3O-z?6k$jCkY zsyL&XI1iJDYlMrZyJtv`o?~#Mx`CmQv5Bc!n*?K<1k*AJ=3Ttz7M6}q&MvNQ>I@RR z)8#KQi-++sIXXML1_$?nv?vvoS3r;w0|!5o)&VtL25teSnR+gvzP^zRT!KKRe^8?V z1CJ1sOR!#Wh+|L)gOD(jV^O+ueraAwkDgO-qalNo==7dT%#z+>Od+1Wu6oWzsfi`2 zeIPj_0|sGnh^TLV3RpQ%NKld~!!0wXB(-P~!~g*)rlf$x(qf1vLk3al=^rjJiCSTR "\e[32m%16s\e[0m %s %s %s\r\n" MSG.FILE >CSTR "%19s" MSG.FILEEXT >CSTR "%15s %S $%H %s %10u %s %s\r\n" *-------------------------------------- -PRODOS.FT.HEX .HS 0406FAFCFDE2CBFF +PRODOS.FT.HEX .HS 0406FAFCFDE2CBCCFF PRODOS.FT.TXT >PSTR "TXT" >PSTR "BIN" >PSTR "ASM" @@ -517,6 +517,7 @@ PRODOS.FT.TXT >PSTR "TXT" >PSTR "VAR" >PSTR "ATK" >PSTR "PIX" + >PSTR "FON" >PSTR "SYS" PRODOS.FT.DFLT >PSTR "$ " MSG.NODATE >CSTR " " diff --git a/FNT2FON.S.txt b/FNT2FON.S.txt index ac18d4cc..f24819fd 100644 --- a/FNT2FON.S.txt +++ b/FNT2FON.S.txt @@ -12,14 +12,54 @@ AUTO 6 .INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/LIBGUI.I *-------------------------------------- +S.FNT.dfVersion .EQ 0 +S.FNT.dfSize .EQ 2 +S.FNT.dfCopyright .EQ 6 +S.FNT.dfType .EQ 66 +S.FNT.dfPoints .EQ 68 +S.FNT.dfVertRes .EQ 70 +S.FNT.dfHorizRes .EQ 72 +S.FNT.dfAscent .EQ 74 +S.FNT.dfInternalLeading .EQ 76 +S.FNT.dfExternalLeading .EQ 78 +S.FNT.dfItalic .EQ 80 +S.FNT.dfUnderline .EQ 81 +S.FNT.dfStrikeOut .EQ 82 +S.FNT.dfWeight .EQ 83 +S.FNT.dfCharSet .EQ 85 +S.FNT.dfPixWidth .EQ 86 +S.FNT.dfPixHeight .EQ 88 +S.FNT.dfPitchAndFamily .EQ 90 +S.FNT.dfAvgWidth .EQ 91 +S.FNT.dfMaxWidth .EQ 93 +S.FNT.dfFirstChar .EQ 95 +S.FNT.dfLastChar .EQ 96 +S.FNT.dfDefaultChar .EQ 97 +S.FNT.dfBreakChar .EQ 98 +S.FNT.dfWidthBytes .EQ 99 +S.FNT.dfDevice .EQ 101 +S.FNT.dfFace .EQ 105 +S.FNT.dfBitsPointer .EQ 109 +S.FNT.dfBitsOffset .EQ 113 +S.FNT.dfReserved .EQ 117 +S.FNT.dfCharTable2 .EQ 118 + +*S.FNT.dfFlags3 .EQ 118 +*S.FNT.dfAspace3 .EQ 122 +*S.FNT.dfBspace3 .EQ 124 +*S.FNT.dfCspace3 .EQ 126 +*S.FNT.dfColorPointer3 .EQ 128 +*S.FNT.dfReserved13 .EQ 132 +S.FNT.dfCharTable3 .EQ 148 +*-------------------------------------- ZPPTR1 .EQ ZPBIN ZPInputBufPtr .EQ ZPBIN+2 ZPInputBufLen .EQ ZPBIN+4 -ZPInputDataPtr .EQ ZPBIN+6 -ZPBMPRowBytes .EQ ZPBIN+8 -ZPPIXRowBytes .EQ ZPBIN+10 -ZPBufPtr .EQ ZPBIN+12 -ZPLineCount .EQ ZPBIN+14 +ZPInputTblPtr .EQ ZPBIN+6 +ZPInputBMPtr .EQ ZPBIN+8 +ZPOutPutTblPtr .EQ ZPBIN+10 +ZPOutPutBMPtr .EQ ZPBIN+12 +ZPBufPtr .EQ ZPBIN+14 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -44,6 +84,7 @@ L.MSG.USAGE .DA MSG.USAGE L.MSG.FILE.OK .DA MSG.FILE.OK L.MSG.HEADER.OK .DA MSG.HEADER.OK L.MSG.HEADER.KO .DA MSG.HEADER.KO +L.MSG.RANGE .DA MSG.RANGE L.MSG.DONE .DA MSG.DONE .DA 0 *-------------------------------------- @@ -94,7 +135,7 @@ CS.INIT .7 >LDA.G hOutputFile beq .99 - >LDYAI 256 + >LDYAI 8192 max 256x256 pixels >SYSCALL GetMem.YA bcs CS.INIT.RTS @@ -124,49 +165,37 @@ CS.INIT.OPENINPUT >LDYA L.MSG.FILE.OK >SYSCALL PrintF.YA - lda (ZPInputBufPtr) - cmp #'B' - bne .99 - - ldy #1 - lda (ZPInputBufPtr),y - cmp #'M' - bne .99 - - ldy #$1C BBP LO - lda (ZPInputBufPtr),y - cmp #1 - bne .99 - iny BBP HI + ldy #S.FNT.dfVersion lda (ZPInputBufPtr),y bne .99 - ldy #$16 H LO + iny lda (ZPInputBufPtr),y - >STA.G PIX.Header+S.BM.H - pha - eor #$ff - sta ZPLineCount + cmp #2 + beq .1 - ldy #$17 H HI - lda (ZPInputBufPtr),y - >STA.G PIX.Header+S.BM.H+1 - >PUSHA - eor #$ff - sta ZPLineCount+1 + cmp #3 + bne .99 - pla - >PUSHA - - ldy #$12 W LO - lda (ZPInputBufPtr),y - >STA.G PIX.Header+S.BM.W +.1 asl *2 = Entry Len in Tbl + >STA.G FNT.Version pha - ldy #$13 W HI + ldy #S.FNT.dfAscent lda (ZPInputBufPtr),y - >STA.G PIX.Header+S.BM.W+1 + >STA.G FON.Header+S.FON.Ascent >PUSHA + + ldy #S.FNT.dfPixHeight + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.PixH + >PUSHA + + ldy #S.FNT.dfPixWidth + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.PixW + >PUSHA + pla >PUSHA @@ -183,7 +212,7 @@ CS.INIT.OPENINPUT *-------------------------------------- CS.INIT.CREATEOUTPUT >PUSHWI 0 Aux type - >PUSHBI $CB PIX Type + >PUSHBI $CC FON Type >PUSHBI SYS.FOpen.W+SYS.FOpen.X >PUSHW ZPPtr1 >SYSCALL FOpen @@ -191,114 +220,71 @@ CS.INIT.CREATEOUTPUT >STA.G hOutputFile .9 rts *-------------------------------------- -CS.RUN lda #S.BM.F.BBP1 - >STA.G PIX.Header+S.BM.F - - >LDA.G PIX.Header+S.BM.W - sta ZPBMPRowBytes - sta ZPPIXRowBytes - - iny - lda (pData),y - sta ZPBMPRowBytes+1 - sta ZPPIXRowBytes+1 - - lda ZPBMPRowBytes - and #%00011111 - beq .1 - lda ZPBMPRowBytes - and #%11100000 - clc - adc #%00100000 - bcc .1 - - inc ZPBMPRowBytes+1 - -.1 lsr ZPBMPRowBytes+1 - ror - lsr ZPBMPRowBytes+1 - ror - lsr ZPBMPRowBytes+1 - ror - sta ZPBMPRowBytes - - lda ZPPIXRowBytes - and #%00000111 - beq .2 - lda ZPPIXRowBytes - and #%11111000 - clc - adc #%00001000 - bcc .2 - - inc ZPPIXRowBytes+1 - -.2 lsr ZPPIXRowBytes+1 - ror - lsr ZPPIXRowBytes+1 - ror - lsr ZPPIXRowBytes+1 - ror - sta ZPPIXRowBytes - >STA.G PIX.Header+S.BM.RowBytes - - lda ZPInputBufPtr - clc - adc ZPInputBufLen - sta ZPInputDataPtr - lda ZPInputBufPtr+1 - adc ZPInputBufLen+1 - sta ZPInputDataPtr+1 - - >PUSHEA.G PIX.Header - >PUSHWI S.BM - >LDA.G hOutputFile +CS.RUN ldy #S.FNT.dfBreakChar + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.Break + >PUSHA + + ldy #S.FNT.dfDefaultChar + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.Default >PUSHA - >SYSCALL FWrite - bcs CS.RUN.RTS -CS.RUN.LOOP inc ZPLineCount + + ldy #S.FNT.dfLastChar + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.Last + >PUSHA + + ldy #S.FNT.dfFirstChar + lda (ZPInputBufPtr),y + >STA.G FON.Header+S.FON.First + >PUSHA + + >LDYA L.MSG.RANGE + >SYSCALL PrintF.YA + + >LDA.G FON.Header+S.FON.Last + >SBC.G FON.Header+S.FON.First + >STA.G CharCount + + >LDA.G FNT.Version + ldx #S.FNT.dfCharTable2 + cmp #4 bne .1 - inc ZPLineCount+1 + ldx #S.FNT.dfCharTable3 + +.1 txa + clc + adc ZPInputBufPtr + sta ZPInputTblPtr + lda #0 + adc ZPInputBufPtr+1 + sta ZPInputTblPtr+1 + +.2 ldy #2 + lda (ZPInputTblPtr),y Get Char BitMap Offset + clc + adc ZPInputBufPtr + sta ZPInputBMPtr + iny + lda (ZPInputTblPtr),y + adc ZPInputBufPtr+1 + sta ZPInputBMPtr+1 + + lda (ZPInputTblPtr) Get Char PixW + + jsr CS.RUN.GetChar + >DEC.G CharCount beq .8 -.1 lda ZPInputDataPtr - sec - sbc ZPBMPRowBytes - sta ZPInputDataPtr - lda ZPInputDataPtr+1 - sbc ZPBMPRowBytes+1 - sta ZPInputDataPtr+1 - - >LDYA ZPBufPtr - >STYA ZPPTR1 - - ldy #0 - -.2 lda (ZPInputDataPtr),y - tax - lda TWIST,x - sta (ZPPTR1) - inc ZPPTR1 - bne .3 - - inc ZPPTR1+1 - -.3 iny - cpy ZPPIXRowBytes - bne .2 - - >PUSHW ZPBufPtr - >PUSHW ZPPIXRowBytes - >LDA.G hOutputFile - >PUSHA - >SYSCALL FWrite - bcs CS.RUN.RTS - - - - bra CS.RUN.LOOP - + lda ZPInputTblPtr + clc + >ADC.G FNT.Version + sta ZPInputTblPtr + bcc .2 + inc ZPInputTblPtr+1 + bra .2 .8 >LDYA L.MSG.DONE >SYSCALL PrintF.YA @@ -307,18 +293,73 @@ CS.RUN.LOOP inc ZPLineCount sec CS.RUN.RTS rts *-------------------------------------- +* A=PixW, ZPInputBMPtr->DATA +*-------------------------------------- +CS.RUN.GetChar pha + lsr + lsr + lsr + tax + pla + and #7 + beq .1 + inx + + txa + >STA.G CharByteW + + + ldx #0 0 > X > CharByteW + +.1 >LDA.G ON.Header+S.FON.PixH + +.2 pha + clc + adc ZPBufPtr + sta ZPPTR1 + lda #0 + adc ZPBufPtr+1 + sta ZPPTR1+1 + +.3 lda (ZPInputBMPtr) + inc ZPInputBMPtr + bne .4 + inc ZPInputBMPtr+1 + +.4 sta (ZPPTR1) + lda ZPPTR1 + clc + >ADC.G CharByteW + sta ZPPTR1 + bcc .5 + inc ZPPTR1+1 + +.5 inx + txa + + pla + dec + bne .1 + + clc + rts +*-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- -CS.QUIT >LDA.G hBuf +CS.QUIT >LDA.G hOutputFile beq .1 - >SYSCALL FreeMem.A - -.1 >LDA.G hOutputFile - beq .8 >SYSCALL FClose.A +.1 >LDA.G hInputBuf + beq .1 + >SYSCALL FreeMem.A + +.2 >LDA.G hBuf + beq .1 + >SYSCALL FreeMem.A + .8 clc rts *-------------------------------------- @@ -359,20 +400,24 @@ TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#% OptionList >PSTR "Vv" OptionVars .DA #bVerbose,#bVerbose MSG.USAGE >CSTR "Usage : FNT2FON FNT-File \r\n -V : Verbose Mode\r\n" -MSG.FILE.OK >CSTR "Font File Loaded, %D Bytes Read\r\n" -MSG.HEADER.OK >CSTR "Font File Size : %D x %D pixels\r\n" -MSG.HEADER.KO >CSTR "Invalid Input File Format\r\n" +MSG.FILE.OK >CSTR "FNT File Loaded, %D Bytes Read\r\n" +MSG.HEADER.OK >CSTR "FNT File Version : %d, Size : %d x %d pixels, Ascent : %d\r\n" +MSG.HEADER.KO >CSTR "Invalid Input File Format\r\n" +MSG.RANGE >CSTR "First/Last Char : %d/%d, Default : %d, Break : %d\r\n" MSG.DONE >CSTR "All Done!!!\r\n" *-------------------------------------- .DUMMY .OR 0 DS.START -PIX.Header .BS S.BM +FNT.Version .BS 1 +FON.Header .BS S.FON ArgCount .BS 1 hInputBuf .BS 1 hOutputFile .BS 1 bVerbose .BS 1 hBuf .BS 1 +CharCount .BS 1 +CharByteW .BS 1 DS.END .ED *-------------------------------------- diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 247b9963..da2efa2a 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -46,6 +46,15 @@ S.CB.OP.MASK .EQ %00001000 Apply BitMap mask before painting S.CB.OP.SAVE .EQ %00010000 Save Screen to DstPtr before painting S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr S.CB.OP.COLOR .EQ %01000000 Assume BitMap is COLOR +S.CB.OP.F.LEFT .EQ 0 +S.CB.OP.F.RIGHT .EQ 2 +S.CB.OP.F.CENTERED .EQ 4 +S.CB.OP.F.JUSTIFIED .EQ 6 +S.CB.OP.F.BOLD .EQ %00010000 +S.CB.OP.F.ITALIC .EQ %00100000 +S.CB.OP.F.UNDERLINE .EQ %01000000 +S.CB.OP.F.GRAYED .EQ %10000000 + S.CB.MODE .EQ 2 S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel) *S.CB.MODE.C4 .EQ %00000010 @@ -53,7 +62,7 @@ S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel) S.CB.MODE.C16 .EQ %00001000 16 colors (4 bits/pixel) *S.CB.MODE.C256 .EQ %00010000 256 colors (8 bits/pixel) S.CB.COLOR .EQ 3 xPIXEL,xLINE,FILLRECT -S.CB.FONT .EQ 3 DRAWTEXT +S.CB.hFONT .EQ 3 DRAWTEXT S.CB.X1 .EQ 4 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE S.CB.Y1 .EQ 6 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE S.CB.X2 .EQ 8 VLINE,FILLRECT,DRAWLINE @@ -88,7 +97,7 @@ S.BM.MASK.OFS .EQ 6 * S.BM .EQ 8 *-------------------------------------- -S.FON.H .EQ 0 +S.FON.F .EQ 0 S.FON.Ascent .EQ 1 S.FON.PixW .EQ 2 if 0, variable W S.FON.PixH .EQ 3 diff --git a/README.md b/README.md index ef34214a..6f33cec3 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Kernel 0.9.1 stable enough to resume building. + Improved Command Line editing and history. (SUPPR key is emulated with Ctrl-X using //e keyboard) - + New DevMgr enumeration stratey, now including /RAM and other virtual Block Devices + + New DevMgr enumeration strategy, now including /RAM and other virtual Block Devices + Math API (Hacked from APPLESOFT ROM ;-) @@ -97,16 +97,25 @@ Several subprojects are now indentified : ## Screenshots +UNIX-Like Shell... ![](./.screen-shots/ScreenShot.LS.png) +TCP/IP Stack... + ![](./.screen-shots/ScreenShot.IP1.png) ![](./.screen-shots/ScreenShot.IP2.png) +Full screen editor ... + ![](./.screen-shots/ScreenShot.EDIT.png) +Kernel Configuration Utility... + ![](./.screen-shots/ScreenShot.KCONFIG.png) +Color ANSI/VT100 Support !!! + ![](./.screen-shots/PuTTY.png) ## General Information: