diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po
index 7fc16dee..713f9c11 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 46e0fddf..36cb6a3f 100644
Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ
diff --git a/.Fonts/SYS8x16.fnt b/.Fonts/SYS16x8.fnt
similarity index 100%
rename from .Fonts/SYS8x16.fnt
rename to .Fonts/SYS16x8.fnt
diff --git a/.Fonts/SYS6x7.fnt b/.Fonts/SYSx7.fnt
similarity index 100%
rename from .Fonts/SYS6x7.fnt
rename to .Fonts/SYSx7.fnt
diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt
index 2927a74c..167e3acb 100644
--- a/BIN/LS.S.txt
+++ b/BIN/LS.S.txt
@@ -509,7 +509,7 @@ MSG.DIREXT >CSTR "\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: