setup()

SETRGB 1,255,255,255
a$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
scaletext(10,40,630,70,a$)
a$="abcdefghijklmnopqrstuvwxyz"
scaletext(10,80,630,110,a$)
a$="01234567890123456789012345"
scaletext(10,120,630,150,a$)

END

SUB setup()
OPEN WINDOW 640,512
 DIM chr(255,15)
 READ width,height,c
 FOR i=1 TO c
  READ chr
  FOR j=0 TO height-1
   READ chr(chr,j)
  NEXT j
 NEXT i
END SUB

SUB scaletext(textx1,texty1,textx2,texty2,text$)
 scalex=ABS(textx2-textx1)/(LEN(text$)*width)
 scaley=ABS(texty2-texty1)/height
 textx=MIN(textx1,textx2)-scalex
 texty=MIN(texty1,texty2)
 lent=LEN(text$)
 addx=scalex*width
 bit=2^width
 position=0
 REPEAT position=position+1
  chr=ASC(MID$(text$,position,1))
  textx=textx+addx
  textline=0
  ty=texty
  REPEAT bits=1
   chrline=chr(chr,textline)
   tx=textx
   REPEAT
    IF AND(bits,chrline)>0 FILL RECTANGLE tx,ty TO tx+scalex,ty+scaley
    tx=tx-scalex
    bits=bits*2
   UNTIL (bits=bit)
   ty=ty+scaley
   textline=textline+1
  UNTIL (textline=height)
 UNTIL (position=lent)
END SUB

REM size of font (8 bits by 8 bytes)
DATA 8,8

REM number of characters defined
DATA 62

' *******************************
' The number set
' *******************************
DATA 48
DATA 0,60,70,74,82,98,60,0
DATA 49
DATA 0,48,80,16,16,16,124,0
DATA 50
DATA 0,60,66,2,60,64,126,0
DATA 51
DATA 0,60,66,12,2,66,60,0
DATA 52
DATA 0,8,24,40,72,126,8,0
DATA 53
DATA 0,126,64,124,2,66,60,0
DATA 54
DATA 0,60,64,124,66,66,60,0
DATA 55
DATA 0,126,2,4,8,16,16,0
DATA 56
DATA 0,60,66,60,66,66,60,0
DATA 57
DATA 0,60,66,66,62,2,60,0

' *******************************
' Capital letters
' *******************************
DATA 65
DATA 0,60,66,66,126,66,66,0
DATA 66
DATA 0,124,66,124,66,66,124,0
DATA 67
DATA 0,60,66,64,64,66,60,0
DATA 68
DATA 0,120,68,66,66,68,120,0
DATA 69
DATA 0,126,64,124,64,64,126,0
DATA 70
DATA 0,126,64,124,64,64,64,0
DATA 71
DATA 0,60,66,64,78,66,60,0
DATA 72
DATA 0,66,66,126,66,66,66,0
DATA 73
DATA 0,62,8,8,8,8,62,0
DATA 74
DATA 0,2,2,2,66,66,60,0
DATA 75
DATA 0,68,72,112,72,68,66,0
DATA 76
DATA 0,64,64,64,64,64,126,0
DATA 77
DATA 0,66,102,90,66,66,66,0
DATA 78
DATA 0,66,98,82,74,70,66,0
DATA 79
DATA 0,60,66,66,66,66,60,0
DATA 80
DATA 0,124,66,66,124,64,64,0
DATA 81
DATA 0,60,66,66,82,74,60,0
DATA 82
DATA 0,124,66,66,124,68,66,0
DATA 83
DATA 0,60,64,60,2,66,60,0
DATA 84
DATA 0,254,16,16,16,16,16,0
DATA 85
DATA 0,66,66,66,66,66,60,0
DATA 86
DATA 0,66,66,66,66,36,24,0
DATA 87
DATA 0,66,66,66,66,90,36,0
DATA 88
DATA 0,66,36,24,24,36,66,0
DATA 89
DATA 0,130,68,40,16,16,16,0
DATA 90
DATA 0,126,4,8,16,32,126,0

' *******************************
' Lower Case Letters
' *******************************
DATA 97
DATA 0,0,56,4,60,68,60,0
DATA 98
DATA 0,32,32,60,34,34,60,0
DATA 99
DATA 0,0,28,32,32,32,28,0
DATA 100
DATA 0,4,4,60,68,68,60,0
DATA 101
DATA 0,0,56,68,120,64,60,0
DATA 102
DATA 0,24,32,48,32,32,32,0
DATA 103
DATA 0,0,60,68,68,60,4,56
DATA 104
DATA 0,64,64,120,68,68,68,0
DATA 105
DATA 0,16,0,48,16,16,56,0
DATA 106
DATA 0,8,0,8,8,8,72,48
DATA 107
DATA 0,32,40,48,48,40,36,0
DATA 108
DATA 0,32,32,32,32,32,24,0
DATA 109
DATA 0,0,0,104,84,84,84,0
DATA 110
DATA 0,0,0,120,68,68,68,0
DATA 111
DATA 0,0,56,68,68,68,56,0
DATA 112
DATA 0,0,120,68,68,120,64,64
DATA 113
DATA 0,0,60,68,68,60,4,6
DATA 114
DATA 0,0,28,32,32,32,32,0
DATA 115
DATA 0,0,56,64,56,4,120,0
DATA 116
DATA 0,16,56,16,16,16,12,0
DATA 117
DATA 0,0,68,68,68,68,56,0
DATA 118
DATA 0,0,68,68,40,40,16,0
DATA 119
DATA 0,0,84,84,84,84,40,0
DATA 120
DATA 0,0,68,40,16,40,68,0
DATA 121
DATA 0,0,68,68,68,60,4,56
DATA 122
DATA 0,0,124,8,16,32,124,0


