REM This program is a quick hack to convert the Linux vga.bdf bitmap font
REM file to Amiga font format.  After running to create ram:vga.bmf,
REM complete the conversion using BMFC from Aminet.
REM Peter McGavin, 29 Aug 1998.

DEFINT a-z

DIM p(7), bm(15,7)
p(0) = 1
FOR i = 1 TO 7
  p(i) = 2 * p(i-1)
NEXT i

OPEN "vga.bdf" FOR INPUT AS #1
OPEN "ram:vga.bmf" FOR OUTPUT AS #2

PRINT #2,"bitmapfont vga16 16;"
PRINT #2,"baseline 12;"

WHILE NOT EOF(1)
  LINE INPUT #1,l$
  IF LEFT$(l$,8) = "ENCODING" THEN
    c = VAL(MID$(l$,10))
    WHILE LEFT$(l$,3) <> "BBX"
      LINE INPUT #1,l$
    WEND
    l$ = MID$(l$,5)
    w = VAL(LEFT$(l$,INSTR(l$," ")-1))
    l$ = MID$(l$,INSTR(l$," ")+1)
    h = VAL(LEFT$(l$,INSTR(l$," ")-1))
    l$ = MID$(l$,INSTR(l$," ")+1)
    ow = VAL(LEFT$(l$,INSTR(l$," ")-1))
    l$ = MID$(l$,INSTR(l$," ")+1)
    oh = VAL(l$)
    REM PRINT #2,c; w; h; ow; oh
    PRINT #2
    PRINT #2,"; glyph $"; HEX$(c); " $"; HEX$(c)
    PRINT #2
    WHILE LEFT$(l$,6) <> "BITMAP"
      LINE INPUT #1,l$
    WEND
    FOR i = 0 TO 15
      FOR j = 0 TO 7
        bm(i,j) = 0
      NEXT j
    NEXT i
    FOR i = 12-h-oh TO 11-oh
      LINE INPUT #1,l$
      b = VAL("&H"+l$)
      FOR j = 0 TO 7
        IF b AND p(j) THEN
          bm(i,j-ow)=1
        END IF
      NEXT j
    NEXT i
    FOR i = 0 TO 15
      FOR j = 7 TO 0 STEP -1
        IF bm(i,j) THEN PRINT #2,"#"; ELSE PRINT #2,"_";
      NEXT j
      PRINT #2
    NEXT i
    PRINT #2
  END IF
WEND

PRINT #2,"; glyph $100 $100 {default glyph}"
PRINT #2
PRINT #2,"________"
PRINT #2,"#######_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"##___##_"
PRINT #2,"#######_"
PRINT #2,"________"
PRINT #2,"________"
PRINT #2,"________"
PRINT #2,"________"
PRINT #2
PRINT #2,";"

CLOSE #2
CLOSE #1

END
