diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 713f9c11..e6a6c417 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Fonts/SYSx7.fnt b/.Fonts/SYSx7.fnt index 542f89ac..3c1cd730 100644 Binary files a/.Fonts/SYSx7.fnt and b/.Fonts/SYSx7.fnt differ diff --git a/FNT2FON.S.txt b/FNT2FON.S.txt index f24819fd..a1a4799e 100644 --- a/FNT2FON.S.txt +++ b/FNT2FON.S.txt @@ -54,12 +54,12 @@ S.FNT.dfCharTable3 .EQ 148 *-------------------------------------- ZPPTR1 .EQ ZPBIN ZPInputBufPtr .EQ ZPBIN+2 -ZPInputBufLen .EQ ZPBIN+4 -ZPInputTblPtr .EQ ZPBIN+6 -ZPInputBMPtr .EQ ZPBIN+8 -ZPOutPutTblPtr .EQ ZPBIN+10 -ZPOutPutBMPtr .EQ ZPBIN+12 -ZPBufPtr .EQ ZPBIN+14 +ZPInputTblPtr .EQ ZPBIN+4 +ZPInputBMPtr .EQ ZPBIN+6 + +ZPOutPutTblPtr .EQ ZPBIN+8 + +ZPCharBufPtr .EQ ZPBIN+12 *-------------------------------------- * 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.KO .DA MSG.HEADER.KO L.MSG.RANGE .DA MSG.RANGE +L.MSG.DUMP .DA MSG.DUMP L.MSG.DONE .DA MSG.DONE .DA 0 *-------------------------------------- @@ -139,9 +140,9 @@ CS.INIT >SYSCALL GetMem.YA bcs CS.INIT.RTS - >STYA ZPBufPtr + >STYA ZPCharBufPtr txa - >STA.G hBuf + >STA.G hCharBuf .8 clc CS.INIT.RTS rts @@ -154,7 +155,6 @@ CS.INIT.OPENINPUT >SYSCALL LoadFile bcs CS.INIT.RTS - >STYA ZPInputBufLen >PUSHYA txa @@ -239,19 +239,30 @@ CS.RUN ldy #S.FNT.dfBreakChar ldy #S.FNT.dfFirstChar lda (ZPInputBufPtr),y >STA.G FON.Header+S.FON.First + >STA.G CharIndex >PUSHA >LDYA L.MSG.RANGE >SYSCALL PrintF.YA >LDA.G FON.Header+S.FON.Last + sec >SBC.G FON.Header+S.FON.First >STA.G CharCount + asl + tay + lda #0 + rol + >SYSCALL GetMem.YA + >STYA ZPOutPutTblPtr + txa + >STA.G hTblBuf + >LDA.G FNT.Version ldx #S.FNT.dfCharTable2 cmp #4 - bne .1 + beq .1 ldx #S.FNT.dfCharTable3 .1 txa @@ -275,6 +286,14 @@ CS.RUN ldy #S.FNT.dfBreakChar lda (ZPInputTblPtr) Get Char PixW 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 beq .8 @@ -295,7 +314,10 @@ CS.RUN.RTS rts *-------------------------------------- * A=PixW, ZPInputBMPtr->DATA *-------------------------------------- -CS.RUN.GetChar pha +CS.RUN.GetChar >STA.G CharPixW + >STA.G CharOutPixW + + pha lsr lsr lsr @@ -305,28 +327,33 @@ CS.RUN.GetChar pha beq .1 inx - txa +.1 txa >STA.G CharByteW + >STA.G CharOutByteW - - ldx #0 0 > X > CharByteW - -.1 >LDA.G ON.Header+S.FON.PixH + lda #0 0 -> A -> CharByteW .2 pha clc - adc ZPBufPtr + adc ZPCharBufPtr sta ZPPTR1 lda #0 - adc ZPBufPtr+1 + adc ZPCharBufPtr+1 sta ZPPTR1+1 + + >LDA.G FON.Header+S.FON.PixH + + tax + +.3 lda (ZPInputBMPtr) Get one source byte -.3 lda (ZPInputBMPtr) inc ZPInputBMPtr bne .4 inc ZPInputBMPtr+1 -.4 sta (ZPPTR1) +.4 tay + lda TWIST,y + sta (ZPPTR1) lda ZPPTR1 clc >ADC.G CharByteW @@ -334,16 +361,221 @@ CS.RUN.GetChar pha bcc .5 inc ZPPTR1+1 -.5 inx - txa +.5 dex + bne .3 pla - dec - bne .1 + inc + >CMP.G CharByteW + bne .2 + clc 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 rts *-------------------------------------- @@ -353,57 +585,32 @@ CS.QUIT >LDA.G hOutputFile >SYSCALL FClose.A .1 >LDA.G hInputBuf - beq .1 + beq .2 >SYSCALL FreeMem.A -.2 >LDA.G hBuf - beq .1 +.2 >LDA.G hCharBuf + beq .3 + >SYSCALL FreeMem.A + +.3 >LDA.G hTblBuf + beq .8 >SYSCALL FreeMem.A .8 clc rts *-------------------------------------- CS.END -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 -*-------------------------------------- -OptionList >PSTR "Vv" -OptionVars .DA #bVerbose,#bVerbose -MSG.USAGE >CSTR "Usage : FNT2FON FNT-File \r\n -V : Verbose Mode\r\n" +*-------------------------------------- + .INB /A2OSX.BUILD/X.TWIST.G +*-------------------------------------- +OptionList >PSTR "NnVv" +OptionVars .DA #bNoShrink,#bNoShrink,#bVerbose,#bVerbose +MSG.USAGE >CSTR "Usage : FNT2FON FNT-File \r\n -V : Verbose Mode\r\n -N : No shrink\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.DUMP >CSTR "Caracter ID : %d (0x0%2h), Width(P) : %d, Width(B) : %d\r\n" MSG.DONE >CSTR "All Done!!!\r\n" *-------------------------------------- .DUMMY @@ -415,9 +622,15 @@ ArgCount .BS 1 hInputBuf .BS 1 hOutputFile .BS 1 bVerbose .BS 1 -hBuf .BS 1 +bNoShrink .BS 1 +hCharBuf .BS 1 +hTblBuf .BS 1 +CharIndex .BS 1 CharCount .BS 1 +CharPixW .BS 1 CharByteW .BS 1 +CharOutPixW .BS 1 +CharOutByteW .BS 1 DS.END .ED *-------------------------------------- diff --git a/X.TWIST.G..txt b/X.TWIST.G..txt new file mode 100644 index 00000000..53f3180a --- /dev/null +++ b/X.TWIST.G..txt @@ -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