Kernel 0.9.1 : LibGui, Fonts.....

This commit is contained in:
Rémy GIBERT 2017-12-11 17:54:34 +01:00
parent b5bd89a76e
commit 7b5d5dcefe
4 changed files with 319 additions and 64 deletions

Binary file not shown.

Binary file not shown.

View File

@ -54,12 +54,12 @@ S.FNT.dfCharTable3 .EQ 148
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPTR1 .EQ ZPBIN
ZPInputBufPtr .EQ ZPBIN+2 ZPInputBufPtr .EQ ZPBIN+2
ZPInputBufLen .EQ ZPBIN+4 ZPInputTblPtr .EQ ZPBIN+4
ZPInputTblPtr .EQ ZPBIN+6 ZPInputBMPtr .EQ ZPBIN+6
ZPInputBMPtr .EQ ZPBIN+8
ZPOutPutTblPtr .EQ ZPBIN+10 ZPOutPutTblPtr .EQ ZPBIN+8
ZPOutPutBMPtr .EQ ZPBIN+12
ZPBufPtr .EQ ZPBIN+14 ZPCharBufPtr .EQ ZPBIN+12
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
*-------------------------------------- *--------------------------------------
@ -85,6 +85,7 @@ L.MSG.FILE.OK .DA MSG.FILE.OK
L.MSG.HEADER.OK .DA MSG.HEADER.OK L.MSG.HEADER.OK .DA MSG.HEADER.OK
L.MSG.HEADER.KO .DA MSG.HEADER.KO L.MSG.HEADER.KO .DA MSG.HEADER.KO
L.MSG.RANGE .DA MSG.RANGE L.MSG.RANGE .DA MSG.RANGE
L.MSG.DUMP .DA MSG.DUMP
L.MSG.DONE .DA MSG.DONE L.MSG.DONE .DA MSG.DONE
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -139,9 +140,9 @@ CS.INIT
>SYSCALL GetMem.YA >SYSCALL GetMem.YA
bcs CS.INIT.RTS bcs CS.INIT.RTS
>STYA ZPBufPtr >STYA ZPCharBufPtr
txa txa
>STA.G hBuf >STA.G hCharBuf
.8 clc .8 clc
CS.INIT.RTS rts CS.INIT.RTS rts
@ -154,7 +155,6 @@ CS.INIT.OPENINPUT
>SYSCALL LoadFile >SYSCALL LoadFile
bcs CS.INIT.RTS bcs CS.INIT.RTS
>STYA ZPInputBufLen
>PUSHYA >PUSHYA
txa txa
@ -239,19 +239,30 @@ CS.RUN ldy #S.FNT.dfBreakChar
ldy #S.FNT.dfFirstChar ldy #S.FNT.dfFirstChar
lda (ZPInputBufPtr),y lda (ZPInputBufPtr),y
>STA.G FON.Header+S.FON.First >STA.G FON.Header+S.FON.First
>STA.G CharIndex
>PUSHA >PUSHA
>LDYA L.MSG.RANGE >LDYA L.MSG.RANGE
>SYSCALL PrintF.YA >SYSCALL PrintF.YA
>LDA.G FON.Header+S.FON.Last >LDA.G FON.Header+S.FON.Last
sec
>SBC.G FON.Header+S.FON.First >SBC.G FON.Header+S.FON.First
>STA.G CharCount >STA.G CharCount
asl
tay
lda #0
rol
>SYSCALL GetMem.YA
>STYA ZPOutPutTblPtr
txa
>STA.G hTblBuf
>LDA.G FNT.Version >LDA.G FNT.Version
ldx #S.FNT.dfCharTable2 ldx #S.FNT.dfCharTable2
cmp #4 cmp #4
bne .1 beq .1
ldx #S.FNT.dfCharTable3 ldx #S.FNT.dfCharTable3
.1 txa .1 txa
@ -275,6 +286,14 @@ CS.RUN ldy #S.FNT.dfBreakChar
lda (ZPInputTblPtr) Get Char PixW lda (ZPInputTblPtr) Get Char PixW
jsr CS.RUN.GetChar jsr CS.RUN.GetChar
jsr CS.RUN.DumpChar
jsr CS.RUN.ShiftLChar
jsr CS.RUN.CutRChar
jsr CS.RUN.DumpChar
>DEBUG
>INC.G CharIndex
>DEC.G CharCount >DEC.G CharCount
beq .8 beq .8
@ -295,7 +314,10 @@ CS.RUN.RTS rts
*-------------------------------------- *--------------------------------------
* A=PixW, ZPInputBMPtr->DATA * A=PixW, ZPInputBMPtr->DATA
*-------------------------------------- *--------------------------------------
CS.RUN.GetChar pha CS.RUN.GetChar >STA.G CharPixW
>STA.G CharOutPixW
pha
lsr lsr
lsr lsr
lsr lsr
@ -305,28 +327,33 @@ CS.RUN.GetChar pha
beq .1 beq .1
inx inx
txa .1 txa
>STA.G CharByteW >STA.G CharByteW
>STA.G CharOutByteW
lda #0 0 -> A -> CharByteW
ldx #0 0 > X > CharByteW
.1 >LDA.G ON.Header+S.FON.PixH
.2 pha .2 pha
clc clc
adc ZPBufPtr adc ZPCharBufPtr
sta ZPPTR1 sta ZPPTR1
lda #0 lda #0
adc ZPBufPtr+1 adc ZPCharBufPtr+1
sta ZPPTR1+1 sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
.3 lda (ZPInputBMPtr) Get one source byte
.3 lda (ZPInputBMPtr)
inc ZPInputBMPtr inc ZPInputBMPtr
bne .4 bne .4
inc ZPInputBMPtr+1 inc ZPInputBMPtr+1
.4 sta (ZPPTR1) .4 tay
lda TWIST,y
sta (ZPPTR1)
lda ZPPTR1 lda ZPPTR1
clc clc
>ADC.G CharByteW >ADC.G CharByteW
@ -334,16 +361,221 @@ CS.RUN.GetChar pha
bcc .5 bcc .5
inc ZPPTR1+1 inc ZPPTR1+1
.5 inx .5 dex
txa bne .3
pla pla
dec inc
bne .1 >CMP.G CharByteW
bne .2
clc clc
rts rts
*-------------------------------------- *--------------------------------------
* Dump ZPCharBufPtr : CharByteW x FON.Header+S.FON.PixH
*--------------------------------------
CS.RUN.DumpChar >LDA.G CharOutByteW
>PUSHA
>LDA.G CharOutPixW
>PUSHA
>LDA.G CharIndex
>PUSHA
>PUSHA
>LDYA L.MSG.DUMP
>SYSCALL PrintF.YA
lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tay
.1 phy
lda #'|'
>SYSCALL PutChar.A
>LDA.G CharPixW
tay
.2 lda (ZPPTR1)
inc ZPPTR1
bne .3
inc ZPPTR1+1
.3 ldx #8
.4 lsr
pha
lda #' '
bcc .5
lda #'O'
.5 phx
phy
>SYSCALL PutChar.A
ply
plx
pla
dey
beq .6
dex
bne .4
bra .2
.6 lda #'|'
>SYSCALL PutChar.A
lda #13
>SYSCALL PutChar.A
lda #10
>SYSCALL PutChar.A
ply
dey
bne .1
rts
*--------------------------------------
CS.RUN.ShiftLChar
>LDA.G bNoShrink
bmi .9
.1 lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
lda #0
pha
.2 pla
ora (ZPPTR1)
pha
lda ZPPTR1
clc
>ADC.G CharByteW
sta ZPPTR1
bcc .3
inc ZPPTR1+1
.3 dex
bne .2
pla
beq .9 No pixel in first COL, must be SPACE or BREAK
lsr
bcs .9
lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
>LDA.G FON.Header+S.FON.PixH
tax
.4 >LDA.G CharByteW
tay
clc
.5 dey
lda (ZPPTR1),y
ror
sta (ZPPTR1),y
tya
bne .5
lda ZPPTR1
clc
>ADC.G CharByteW
sta ZPPTR1
bcc .6
inc ZPPTR1+1
.6 dex
bne .4
>DEC.G CharOutPixW
and #7
bne .1
>DEC.G CharOutByteW
bra .1
.9 rts
*--------------------------------------
CS.RUN.CutRChar >LDA.G bNoShrink
bmi .9
lda ZPCharBufPtr
sta ZPPTR1
lda ZPCharBufPtr+1
sta ZPPTR1+1
.1 >LDA.G FON.Header+S.FON.PixH
tax
>LDA.G CharOutByteW
tay
dey
lda #0
pha
.2 pla
ora (ZPPTR1),y
pha
lda ZPPTR1
clc
>ADC.G CharByteW
sta ZPPTR1
bcc .3
inc ZPPTR1+1
.3 dex
bne .2
pla
bne .4
tya No bits in this COL
beq .9 was COL 0.....SPACE or BREAK
>DEC.G CharOutByteW
>LDA.G CharOutPixW
sec
sbc #8
sta (pData),y
bra .1
.4 ldx #9
.5 dex
asl
bcc .5
>LDA.G CharOutPixW
and #$F8
sta (pData),y
txa
ora (pData),y
sta (pData),y
.9 rts
*--------------------------------------
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
@ -353,57 +585,32 @@ CS.QUIT >LDA.G hOutputFile
>SYSCALL FClose.A >SYSCALL FClose.A
.1 >LDA.G hInputBuf .1 >LDA.G hInputBuf
beq .1 beq .2
>SYSCALL FreeMem.A >SYSCALL FreeMem.A
.2 >LDA.G hBuf .2 >LDA.G hCharBuf
beq .1 beq .3
>SYSCALL FreeMem.A
.3 >LDA.G hTblBuf
beq .8
>SYSCALL FreeMem.A >SYSCALL FreeMem.A
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#%01100000,#%11100000 *--------------------------------------
.DA #%00010000,#%10010000,#%01010000,#%11010000,#%00110000,#%10110000,#%01110000,#%11110000 .INB /A2OSX.BUILD/X.TWIST.G
.DA #%00001000,#%10001000,#%01001000,#%11001000,#%00101000,#%10101000,#%01101000,#%11101000 *--------------------------------------
.DA #%00011000,#%10011000,#%01011000,#%11011000,#%00111000,#%10111000,#%01111000,#%11111000 OptionList >PSTR "NnVv"
.DA #%00000100,#%10000100,#%01000100,#%11000100,#%00100100,#%10100100,#%01100100,#%11100100 OptionVars .DA #bNoShrink,#bNoShrink,#bVerbose,#bVerbose
.DA #%00010100,#%10010100,#%01010100,#%11010100,#%00110100,#%10110100,#%01110100,#%11110100 MSG.USAGE >CSTR "Usage : FNT2FON FNT-File \r\n -V : Verbose Mode\r\n -N : No shrink\r\n"
.DA #%00001100,#%10001100,#%01001100,#%11001100,#%00101100,#%10101100,#%01101100,#%11101100
.DA #%00011100,#%10011100,#%01011100,#%11011100,#%00111100,#%10111100,#%01111100,#%11111100
.DA #%00000010,#%10000010,#%01000010,#%11000010,#%00100010,#%10100010,#%01100010,#%11100010
.DA #%00010010,#%10010010,#%01010010,#%11010010,#%00110010,#%10110010,#%01110010,#%11110010
.DA #%00001010,#%10001010,#%01001010,#%11001010,#%00101010,#%10101010,#%01101010,#%11101010
.DA #%00011010,#%10011010,#%01011010,#%11011010,#%00111010,#%10111010,#%01111010,#%11111010
.DA #%00000110,#%10000110,#%01000110,#%11000110,#%00100110,#%10100110,#%01100110,#%11100110
.DA #%00010110,#%10010110,#%01010110,#%11010110,#%00110110,#%10110110,#%01110110,#%11110110
.DA #%00001110,#%10001110,#%01001110,#%11001110,#%00101110,#%10101110,#%01101110,#%11101110
.DA #%00011110,#%10011110,#%01011110,#%11011110,#%00111110,#%10111110,#%01111110,#%11111110
.DA #%00000001,#%10000001,#%01000001,#%11000001,#%00100001,#%10100001,#%01100001,#%11100001
.DA #%00010001,#%10010001,#%01010001,#%11010001,#%00110001,#%10110001,#%01110001,#%11110001
.DA #%00001001,#%10001001,#%01001001,#%11001001,#%00101001,#%10101001,#%01101001,#%11101001
.DA #%00011001,#%10011001,#%01011001,#%11011001,#%00111001,#%10111001,#%01111001,#%11111001
.DA #%00000101,#%10000101,#%01000101,#%11000101,#%00100101,#%10100101,#%01100101,#%11100101
.DA #%00010101,#%10010101,#%01010101,#%11010101,#%00110101,#%10110101,#%01110101,#%11110101
.DA #%00001101,#%10001101,#%01001101,#%11001101,#%00101101,#%10101101,#%01101101,#%11101101
.DA #%00011101,#%10011101,#%01011101,#%11011101,#%00111101,#%10111101,#%01111101,#%11111101
.DA #%00000011,#%10000011,#%01000011,#%11000011,#%00100011,#%10100011,#%01100011,#%11100011
.DA #%00010011,#%10010011,#%01010011,#%11010011,#%00110011,#%10110011,#%01110011,#%11110011
.DA #%00001011,#%10001011,#%01001011,#%11001011,#%00101011,#%10101011,#%01101011,#%11101011
.DA #%00011011,#%10011011,#%01011011,#%11011011,#%00111011,#%10111011,#%01111011,#%11111011
.DA #%00000111,#%10000111,#%01000111,#%11000111,#%00100111,#%10100111,#%01100111,#%11100111
.DA #%00010111,#%10010111,#%01010111,#%11010111,#%00110111,#%10110111,#%01110111,#%11110111
.DA #%00001111,#%10001111,#%01001111,#%11001111,#%00101111,#%10101111,#%01101111,#%11101111
.DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111
*--------------------------------------
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 "FNT File Loaded, %D Bytes Read\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.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.HEADER.KO >CSTR "Invalid Input File Format\r\n"
MSG.RANGE >CSTR "First/Last Char : %d/%d, Default : %d, Break : %d\r\n" MSG.RANGE >CSTR "First/Last Char : %d/%d, Default : %d, Break : %d\r\n"
MSG.DUMP >CSTR "Caracter ID : %d (0x0%2h), Width(P) : %d, Width(B) : %d\r\n"
MSG.DONE >CSTR "All Done!!!\r\n" MSG.DONE >CSTR "All Done!!!\r\n"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
@ -415,9 +622,15 @@ ArgCount .BS 1
hInputBuf .BS 1 hInputBuf .BS 1
hOutputFile .BS 1 hOutputFile .BS 1
bVerbose .BS 1 bVerbose .BS 1
hBuf .BS 1 bNoShrink .BS 1
hCharBuf .BS 1
hTblBuf .BS 1
CharIndex .BS 1
CharCount .BS 1 CharCount .BS 1
CharPixW .BS 1
CharByteW .BS 1 CharByteW .BS 1
CharOutPixW .BS 1
CharOutByteW .BS 1
DS.END DS.END
.ED .ED
*-------------------------------------- *--------------------------------------

42
X.TWIST.G..txt Normal file
View File

@ -0,0 +1,42 @@
PR#3
PREFIX /A2OSX.BUILD
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
TWIST .DA #%00000000,#%10000000,#%01000000,#%11000000,#%00100000,#%10100000,#%01100000,#%11100000
.DA #%00010000,#%10010000,#%01010000,#%11010000,#%00110000,#%10110000,#%01110000,#%11110000
.DA #%00001000,#%10001000,#%01001000,#%11001000,#%00101000,#%10101000,#%01101000,#%11101000
.DA #%00011000,#%10011000,#%01011000,#%11011000,#%00111000,#%10111000,#%01111000,#%11111000
.DA #%00000100,#%10000100,#%01000100,#%11000100,#%00100100,#%10100100,#%01100100,#%11100100
.DA #%00010100,#%10010100,#%01010100,#%11010100,#%00110100,#%10110100,#%01110100,#%11110100
.DA #%00001100,#%10001100,#%01001100,#%11001100,#%00101100,#%10101100,#%01101100,#%11101100
.DA #%00011100,#%10011100,#%01011100,#%11011100,#%00111100,#%10111100,#%01111100,#%11111100
.DA #%00000010,#%10000010,#%01000010,#%11000010,#%00100010,#%10100010,#%01100010,#%11100010
.DA #%00010010,#%10010010,#%01010010,#%11010010,#%00110010,#%10110010,#%01110010,#%11110010
.DA #%00001010,#%10001010,#%01001010,#%11001010,#%00101010,#%10101010,#%01101010,#%11101010
.DA #%00011010,#%10011010,#%01011010,#%11011010,#%00111010,#%10111010,#%01111010,#%11111010
.DA #%00000110,#%10000110,#%01000110,#%11000110,#%00100110,#%10100110,#%01100110,#%11100110
.DA #%00010110,#%10010110,#%01010110,#%11010110,#%00110110,#%10110110,#%01110110,#%11110110
.DA #%00001110,#%10001110,#%01001110,#%11001110,#%00101110,#%10101110,#%01101110,#%11101110
.DA #%00011110,#%10011110,#%01011110,#%11011110,#%00111110,#%10111110,#%01111110,#%11111110
.DA #%00000001,#%10000001,#%01000001,#%11000001,#%00100001,#%10100001,#%01100001,#%11100001
.DA #%00010001,#%10010001,#%01010001,#%11010001,#%00110001,#%10110001,#%01110001,#%11110001
.DA #%00001001,#%10001001,#%01001001,#%11001001,#%00101001,#%10101001,#%01101001,#%11101001
.DA #%00011001,#%10011001,#%01011001,#%11011001,#%00111001,#%10111001,#%01111001,#%11111001
.DA #%00000101,#%10000101,#%01000101,#%11000101,#%00100101,#%10100101,#%01100101,#%11100101
.DA #%00010101,#%10010101,#%01010101,#%11010101,#%00110101,#%10110101,#%01110101,#%11110101
.DA #%00001101,#%10001101,#%01001101,#%11001101,#%00101101,#%10101101,#%01101101,#%11101101
.DA #%00011101,#%10011101,#%01011101,#%11011101,#%00111101,#%10111101,#%01111101,#%11111101
.DA #%00000011,#%10000011,#%01000011,#%11000011,#%00100011,#%10100011,#%01100011,#%11100011
.DA #%00010011,#%10010011,#%01010011,#%11010011,#%00110011,#%10110011,#%01110011,#%11110011
.DA #%00001011,#%10001011,#%01001011,#%11001011,#%00101011,#%10101011,#%01101011,#%11101011
.DA #%00011011,#%10011011,#%01011011,#%11011011,#%00111011,#%10111011,#%01111011,#%11111011
.DA #%00000111,#%10000111,#%01000111,#%11000111,#%00100111,#%10100111,#%01100111,#%11100111
.DA #%00010111,#%10010111,#%01010111,#%11010111,#%00110111,#%10110111,#%01110111,#%11110111
.DA #%00001111,#%10001111,#%01001111,#%11001111,#%00101111,#%10101111,#%01101111,#%11101111
.DA #%00011111,#%10011111,#%01011111,#%11011111,#%00111111,#%10111111,#%01111111,#%11111111
*--------------------------------------
MAN
SAVE /A2OSX.BUILD/X.TWIST.G