Category : BASIC Source Code
Archive   : FNTLOAD.ZIP
Filename : FONTLOAD.BAS

 
Output of file : FONTLOAD.BAS contained in archive : FNTLOAD.ZIP
REM Generic Font Loader version 1.0 - Plain Font
REM Written by Matthew W. Lee
REM Copyright (c) 1993 - All Rights Reserved
REM ----------------------------------------
REM To use Font Loader, $INCLUDE this file into your basic program.
REM Then set the numeric variables X and Y to the coordinates where you would
REM like to place the text. Set the string variable TEXT$ to your message
REM and then type GOSUB DRAWTEXT. To rotate your message, you can use the
REM DRAW command TA, used like: DRAW "TA120" to rotate it 120 degrees from
REM the horizontal. To change its color, use the DRAW command C, used
REM like: DRAW "C14" to turn the text yellow. These commands must be done
REM before you type GOSUB DRAWTEXT to take effect.
REM To run an on-screen font test, make TEXT$ = "®®FONT TEST¯¯". You must
REM have a VGA (640x480) card to display the font test.
REM ----------------------------------------
DIM TEXTUPCASE$(26) 'all these are defining
DIM TEXTLOWCASE$(26) 'the string matrices
DIM TEXTNUMBER$(10) 'where the letter drawing
DIM TEXTSYMBOL$(33) 'commands are stored
DIM TEXTFOREIGN$(44)
REM These are the letter definition strings below.
TEXTUPCASE$(1) = "U5E1U1E1U1E1F1D1F1D1F1NL6D5BR2"
TEXTUPCASE$(2) = "U10R4F1D3G1NL4F1D3G1L4BR7"
TEXTUPCASE$(3) = "BR5BU1G1L3H1U8E1R3F1BD9BR2"
TEXTUPCASE$(4) = "U10R4F1D8G1L4BR7"
TEXTUPCASE$(5) = "U10NR5D5NR4D5R5BR2"
TEXTUPCASE$(6) = "U10NR5D5NR4D5BR7"
TEXTUPCASE$(7) = "BR5BU1U4NL2D4G1L3H1U8E1R3F1BD9BR2"
TEXTUPCASE$(8) = "U10D5R5U5D10BR2"
TEXTUPCASE$(9) = "R4L2U10R2L4BD10BR6"
TEXTUPCASE$(10) = "BR5BU1NU9G1L3H1U2BD3BR7"
TEXTUPCASE$(11) = "U10D5NE5F5BR2"
TEXTUPCASE$(12) = "NU10R5BR2"
TEXTUPCASE$(13) = "U10F1D1F1D1F1E1U1E1U1E1D10BR2"
TEXTUPCASE$(14) = "U10F1D1F1D1F1D1F1D1F1D1NU10BR2"
TEXTUPCASE$(15) = "BR5BU1U8H1L3G1D8F1R3NE1BR3"
TEXTUPCASE$(16) = "U10R4F1D3G1L4BD5BR7"
TEXTUPCASE$(17) = "BR5BU1U8H1L3G1D8F1R4NU1NH3BR2"
TEXTUPCASE$(18) = "U10R4F1D3G1L4F5BR2"
TEXTUPCASE$(19) = "BU1F1R3E1U3H1L3H1U3E1R3F1BD9BR2"
TEXTUPCASE$(20) = "BR3U10L3R6BD10BR2"
TEXTUPCASE$(21) = "BU1NU9F1R3E1U9BD10BR2"
TEXTUPCASE$(22) = "BU10D5F1D1F1D1F1E1U1E1U1E1U5BD10BR2"
TEXTUPCASE$(23) = "NU10E1U1E1U1E1F1D1F1D1F1NU10BR2"
TEXTUPCASE$(24) = "E1U1E1U1E1U1E1U1E1U1BL5D1F1D1F1D1F1D1F1D1F1BR2"
TEXTUPCASE$(25) = "BU10F1D1F1D1F1ND5E1U1E1U1E1BD10BR2"
TEXTUPCASE$(26) = "BU10R5G1D1G1D1G1D1G1D1G1D1R5BR2"
TEXTLOWCASE$(1) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BR2"
TEXTLOWCASE$(2) = "NU10R4E1U5H1L4BR7BD7"
TEXTLOWCASE$(3) = "BR1H1U5E1R3F1BD5G1L3BR6"
TEXTLOWCASE$(4) = "BR5NU10L4H1U5E1R4BR2BD7"
TEXTLOWCASE$(5) = "BR5BU1G1L3H1U5E1R3F1D1L5BR7BD5"
TEXTLOWCASE$(6) = "BR1U9E1R1F1BD2BL1L3BR5BD7"
TEXTLOWCASE$(7) = "BR1H1U5E1R3F1D8G1L3H1BU2BR1R4BR2"
TEXTLOWCASE$(8) = "U10D3R4F1D6BR2"
TEXTLOWCASE$(9) = "U7BU2U1BD10BR2"
TEXTLOWCASE$(10) = "BR4BU2U5BU2U1BD3D9G1L2H1BU2BR7"
TEXTLOWCASE$(11) = "U10D6NE4F4BR2"
TEXTLOWCASE$(12) = "NU10BR2"
TEXTLOWCASE$(13) = "U7D1E1R2F1ND6E1R2F1D6BR2"
TEXTLOWCASE$(14) = "U7D1E1R3F1D6BR2"
TEXTLOWCASE$(15) = "BU1U5E1R3F1D5G1L3NH1BR6"
TEXTLOWCASE$(16) = "BU7ND10R4F1D5G1L4BR7"
TEXTLOWCASE$(17) = "BU1U5E1R4D7L4NH1R4ND3BR2"
TEXTLOWCASE$(18) = "U7D1E1R3F1BD6BR2"
TEXTLOWCASE$(19) = "BU1F1R3E1U2H1L3H1U1E1R3F1BR2BD6"
TEXTLOWCASE$(20) = "BU7R4L2U3D10BR4"
TEXTLOWCASE$(21) = "BU7D6F1R3E1U6D7BR2"
TEXTLOWCASE$(22) = "BU7D1F1D1F1D1F1ND1E1U1E1U1E1U1BD7BR2"
TEXTLOWCASE$(23) = "NU7E3F3NU7BR2"
TEXTLOWCASE$(24) = "U1E5U1BL5D1F5D1BR2"
TEXTLOWCASE$(25) = "BU7D6F1R3E1U6D9G1L3H1BR7BU2"
TEXTLOWCASE$(26) = "BU7R5D1G5D1R5BR2"
TEXTNUMBER$(1) = "R4L2U10NG2BR4BD10"
TEXTNUMBER$(2) = "BU9E1R3F1D2G5D2R5BR2"
TEXTNUMBER$(3) = "BU1F1R3E1U3H1NL1E1U3H1L3G1BR7BD9"
TEXTNUMBER$(4) = "BU10D5R5U5D10BR2"
TEXTNUMBER$(5) = "BU10NR5D5R4F1D3G1L3H1BR7BD1"
TEXTNUMBER$(6) = "BU1U8E1R3F1BD5H1NL4F1D3G1L3NH1BR6"
TEXTNUMBER$(7) = "BU10R5D2G3D5BR5"
TEXTNUMBER$(8) = "BU1U3E1NR3H1U3E1R3F1D3G1F1D3G1L3NH1BR6"
TEXTNUMBER$(9) = "BU1F1R3E1U8H1L3G1D3F1R4BR2BD5"
TEXTNUMBER$(10) = "BR1H1U8E1R3F1D8G1L3BL1BU3E5BR2BD8"
TEXTSYMBOL$(1) = "U1BU2U7BD10BR2"
TEXTSYMBOL$(2) = "BR5BU1G1L3H1U8E1R3F1D7L1U5D1H1L1G1D3F1R1E1BR3BD3"
TEXTSYMBOL$(3) = "BR2U10BR2D10BR2BU4L6BU3R6BR2BD7"
TEXTSYMBOL$(4) = "BU2F1R3E1U2H1L3H1U2E1R3F1BU2BL2D10BL1U10BR5BD10"
TEXTSYMBOL$(5) = "BU9E1F1G1H1BU1BR5D1G1D1G1D1G1D1G1D1G1BR4E1H1G1F1BR3"
TEXTSYMBOL$(6) = "BU7E3F3BD7BR2"
TEXTSYMBOL$(7) = "BR6U1H5U2E1R1F1D2G4D1F1R2E3BD3BR2"
TEXTSYMBOL$(8) = "BR3BU4U6D3L3R6BU3BG1G4BU4F4BR3BD5"
TEXTSYMBOL$(9) = "BR2H2U6E2BR2BD10"
TEXTSYMBOL$(10) = "E2U6H2BR4BD10"
TEXTSYMBOL$(11) = "BU5R5BD5BR2"
TEXTSYMBOL$(12) = "R5BR2"
TEXTSYMBOL$(13) = "BU4R5BU2L5BR7BD6"
TEXTSYMBOL$(14) = "BR3BU2U6D3L3R6BD5BR2"
TEXTSYMBOL$(15) = "NR3U10R3BR2BD10"
TEXTSYMBOL$(16) = "BR3H1U3H1E1U3E1BR2BD10"
TEXTSYMBOL$(17) = "R3U10L3BR5BD10"
TEXTSYMBOL$(18) = "E1U3E1H1U3H1BR4BD10"
TEXTSYMBOL$(19) = "BR5U1H1U1H1U1H1U1H1U1H1BR7BD10"
TEXTSYMBOL$(20) = "U4BU2U4BR2BD10"
TEXTSYMBOL$(21) = "BU8R1D1L1U1BD4R1D1NG1L1U1BR3BD4"
TEXTSYMBOL$(22) = "BU8R1D1L1U1BD4R1D1L1U1BR3BD4"
TEXTSYMBOL$(23) = "BU8E2BR2BD10"
TEXTSYMBOL$(24) = "BU8U2BR2D2BD8BR2"
TEXTSYMBOL$(25) = "U1R1D1NG1L1BR3"
TEXTSYMBOL$(26) = "BR5H5E5BR2BD10"
TEXTSYMBOL$(27) = "U1R1D1L1BR3"
TEXTSYMBOL$(28) = "E5H5BR7BD10"
TEXTSYMBOL$(29) = "U1E1U1E1U1E1U1E1U1E1BD10BR2"
TEXTSYMBOL$(30) = "BU9E1R3F1D3G2D1BD2D1BR4"
TEXTSYMBOL$(31) = "BU10F2BR2BD8"
TEXTSYMBOL$(32) = "BU9E1R1F2R1E1BR2BD9"
TEXTSYMBOL$(33) = "BR7"
TEXTFOREIGN$(1) = "BR5BU1G1L3H1U8E1R3F1BD9BL2D1F1G1BU3BR4"
TEXTFOREIGN$(2) = "BU7D6F1R3E1U6D7BU9U1L1D1R1BL4U1L1D1R1BR6BD9"
TEXTFOREIGN$(3) = "BR5BU1G1L3H1U5E1R3F1D1L5BU4BR2E2BR3BD11"
TEXTFOREIGN$(4) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BU9H2G2BR6BD9"
TEXTFOREIGN$(5) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BU9U1L1D1R1BL4U1L1D1R1BR6BD9"
TEXTFOREIGN$(6) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BU9BL1H2BR5BD11"
TEXTFOREIGN$(7) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BU9BL2H1E1F1G1BR4BD9"
TEXTFOREIGN$(8) = "BR1H1U5E1R3F1BD5G1L3R2D1F1G1BU3BR4"
TEXTFOREIGN$(9) = "BR5BU1G1L3H1U5E1R3F1D1L5BU4BR1E2F2BR2BD9"
TEXTFOREIGN$(10) = "BR5BU1G1L3H1U5E1R3F1D1L5BU4BR1U1L1D1R1BR4U1L1D1R1BR2BD9"
TEXTFOREIGN$(11) = "BR5BU1G1L3H1U5E1R3F1D1L5BU4BR4H2BR5BD11"
TEXTFOREIGN$(12) = "BU9U1R1D1L1BR3U1R1D1L1BL1BD2D7BR4"
TEXTFOREIGN$(13) = "BU9E2F2BL2BD2D7BR4"
TEXTFOREIGN$(14) = "BU11F2BL1BD2D7BR3"
TEXTFOREIGN$(15) = "U5E1U1E1U1E1F1D1F1D1F1NL6D5BU11U1L1D1R1BL5U1L1D1R1BR7BD11"
TEXTFOREIGN$(16) = "U5E1U1E1U1E1F1D1F1D1F1NL6D5BU11BL3H1E1F1G1BR5BD11"
TEXTFOREIGN$(17) = "U10NR5D5NR4D5R5BU11BL3E2BR3BD13"
TEXTFOREIGN$(18) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BR5BU1G1L3H1U5E1R3F1D1L5BR7BD5"
TEXTFOREIGN$(19) = "U1E1U1E1U1E1U1E1U1E1NR5D5L3R7L4D5R5BR2"
TEXTFOREIGN$(20) = "BU1U5E1R3F1D5G1L3NH1BU9E2F2BR2BD9"
TEXTFOREIGN$(21) = "BU1U5E1R3F1D5G1L3NH1BU9U1L1D1R1BR4U1L1D1R1BR2BD9"
TEXTFOREIGN$(22) = "BU1U5E1R3F1D5G1L3NH1BU11BR1F2BR3BD9"
TEXTFOREIGN$(23) = "BU7D6F1R3E1U6D7BU9H2G2BR6BD9"
TEXTFOREIGN$(24) = "BU7D6F1R3E1U6D7BU9BL1H2BR5BD11"
TEXTFOREIGN$(25) = "BU7D6F1R3E1U6D9G1L3H1BR5BU11U1L1D1R1BL4U1L1D1R1BR6BD9"
TEXTFOREIGN$(26) = "BR5BU1U8H1L3G1D8F1R3NE1BU11U1R1D1L1BL3U1L1D1R1BR6BD11"
TEXTFOREIGN$(27) = "BU1NU9F1R3E1U9BU1U1L1D1R1BL4U1L1D1R1BR6BD11"
TEXTFOREIGN$(28) = "BU1BR1H1U5E1R2F1BD5G1L2R1D1U9BR5BD9"
TEXTFOREIGN$(29) = "BR5BU1G1L2H2G1F1E2U3NR1NL1U4E1R1F1BR2BD8"
TEXTFOREIGN$(30) = "BU8F3ND6NL2NR2D3NL1NR1U3E3BR2BD9"
TEXTFOREIGN$(31) = "U10R3F1D2G1L3R3BD1D5NF1U4NL1NR1BR3BD4"
TEXTFOREIGN$(32) = "BU1R1U3NL1NR1U2E1R1F1BR2BD6"
TEXTFOREIGN$(33) = "BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BU11BL1G2BR5BD9"
TEXTFOREIGN$(34) = "BU9E2BD4BL1D7BR3"
TEXTFOREIGN$(35) = "BU1U5E1R3F1D5G1L3NH1BU9BR1E2BR3BD11"
TEXTFOREIGN$(36) = "BU7D6F1R3E1U6D7BU11BL1G2BR5BD9"
TEXTFOREIGN$(37) = "U7D1E1R3F1D6BU10G1H2G1BR6BD10"
TEXTFOREIGN$(38) = "U10F1D1F1D1F1D1F1D1F1D1U10BU2G1H2G1BR6BD12"
TEXTFOREIGN$(39) = "BU3BR5U6H1L3G1BD5U3E1R4D5L4NH1R4BD1NL5BD2BR2"
TEXTFOREIGN$(40) = "BU4U5E1R3F1D5G1L3NH1BR4BD1NL5BD2BR2"
TEXTFOREIGN$(41) = "BR5BU1G1L3H1U2E2U2BU2U1BR5BD10"
TEXTFOREIGN$(42) = "U7BU2U1BR2BD10"
TEXTFOREIGN$(43) = "BR2BU2H2E2BR2G2F2BR2BD2"
TEXTFOREIGN$(44) = "BU2E2H2BR2F2G2BR4BD2"
GOTO ENDFONTLOAD 'after letters are defined it returns to your program
REM This GOSUB routine examines TEXT$ and draws the correct letters.
DRAWTEXT:
IF TEXT$ = "®®FONT TEST¯¯" THEN GOTO TESTFONT
DRAW "BM=" + VARPTR$(X) + ",=" + VARPTR$(Y)
FOR TEXTA = 1 TO LEN(TEXT$)
CURCHAR$ = MID$(TEXT$, TEXTA, 1)
CC = ASC(CURCHAR$)
IF CC > 64 AND CC < 91 THEN GOTO UCASE
IF CC > 96 AND CC < 123 THEN GOTO LCASE
IF CC > 47 AND CC < 58 THEN GOTO NUM
IF CC > 31 AND CC < 48 THEN GOTO SYMBOL
IF CC > 57 AND CC < 65 THEN GOTO SYMBOL
IF CC > 122 AND CC < 127 THEN GOTO SYMBOL
IF CC > 90 AND CC < 97 THEN GOTO SYMBOL
IF CC > 127 AND CC < 176 THEN GOTO FOREIGN
NEXTA:
NEXT TEXTA
GOTO ENDSUB
UCASE:
CC = CC - 64
DRAW TEXTUPCASE$(CC)
GOTO NEXTA
LCASE:
CC = CC - 96
DRAW TEXTLOWCASE$(CC)
GOTO NEXTA
NUM:
CC = CC - 48: IF CC = 0 THEN CC = 10
DRAW TEXTNUMBER$(CC)
GOTO NEXTA
SYMBOL:
IF CC = 32 THEN DRAW TEXTSYMBOL$(33)
IF CC = 33 THEN DRAW TEXTSYMBOL$(1)
IF CC = 34 THEN DRAW TEXTSYMBOL$(24)
IF CC = 35 THEN DRAW TEXTSYMBOL$(3)
IF CC = 36 THEN DRAW TEXTSYMBOL$(4)
IF CC = 37 THEN DRAW TEXTSYMBOL$(5)
IF CC = 38 THEN DRAW TEXTSYMBOL$(7)
IF CC = 39 THEN DRAW TEXTSYMBOL$(23)
IF CC = 40 THEN DRAW TEXTSYMBOL$(9)
IF CC = 41 THEN DRAW TEXTSYMBOL$(10)
IF CC = 42 THEN DRAW TEXTSYMBOL$(8)
IF CC = 43 THEN DRAW TEXTSYMBOL$(14)
IF CC = 44 THEN DRAW TEXTSYMBOL$(25)
IF CC = 45 THEN DRAW TEXTSYMBOL$(11)
IF CC = 46 THEN DRAW TEXTSYMBOL$(27)
IF CC = 47 THEN DRAW TEXTSYMBOL$(29)
IF CC = 58 THEN DRAW TEXTSYMBOL$(22)
IF CC = 59 THEN DRAW TEXTSYMBOL$(21)
IF CC = 60 THEN DRAW TEXTSYMBOL$(26)
IF CC = 61 THEN DRAW TEXTSYMBOL$(13)
IF CC = 62 THEN DRAW TEXTSYMBOL$(28)
IF CC = 63 THEN DRAW TEXTSYMBOL$(30)
IF CC = 64 THEN DRAW TEXTSYMBOL$(2)
IF CC = 91 THEN DRAW TEXTSYMBOL$(14)
IF CC = 92 THEN DRAW TEXTSYMBOL$(18)
IF CC = 93 THEN DRAW TEXTSYMBOL$(16)
IF CC = 94 THEN DRAW TEXTSYMBOL$(6)
IF CC = 95 THEN DRAW TEXTSYMBOL$(12)
IF CC = 96 THEN DRAW TEXTSYMBOL$(31)
IF CC = 123 THEN DRAW TEXTSYMBOL$(15)
IF CC = 124 THEN DRAW TEXTSYMBOL$(19)
IF CC = 125 THEN DRAW TEXTSYMBOL$(17)
IF CC = 126 THEN DRAW TEXTSYMBOL$(32)
GOTO NEXTA
FOREIGN:
IF CC > 168 AND CC < 173 THEN GOTO NEXTA
IF CC > 172 THEN GOTO FOREIGNB
CC = CC - 127
DRAW TEXTFOREIGN$(CC)
GOTO NEXTA
FOREIGNB:
IF CC = 173 THEN DRAW TEXTFOREIGN$(42)
IF CC = 174 THEN DRAW TEXTFOREIGN$(43)
IF CC = 175 THEN DRAW TEXTFOREIGN$(44)
GOTO NEXTA
ENDSUB:
RETURN
TESTFONT:
SCREEN 12
DRAW "BM20,20"
FOR TESTA = 1 TO 26
DRAW TEXTUPCASE$(TESTA)
NEXT TESTA
DRAW "BM20,40"
FOR TESTA = 1 TO 26
DRAW TEXTLOWCASE$(TESTA)
NEXT TESTA
DRAW "BM20,60"
FOR TESTA = 1 TO 10
DRAW TEXTNUMBER$(TESTA)
NEXT TESTA
DRAW "BM20,80"
FOR TESTA = 1 TO 33
DRAW TEXTSYMBOL$(TESTA)
NEXT TESTA
DRAW "BM20,100"
FOR TESTA = 1 TO 44
DRAW TEXTFOREIGN$(TESTA)
NEXT TESTA
DRAW "BM20,140S12"
FOR TESTA = 1 TO 26
DRAW TEXTUPCASE$(TESTA)
NEXT TESTA
DRAW "BM20,180"
FOR TESTA = 1 TO 26
DRAW TEXTLOWCASE$(TESTA)
NEXT TESTA
DRAW "BM20,230"
FOR TESTA = 1 TO 10
DRAW TEXTNUMBER$(TESTA)
NEXT TESTA
DRAW "BM20,270"
FOR TESTA = 1 TO 33
DRAW TEXTSYMBOL$(TESTA)
NEXT TESTA
DRAW "BM20,320"
FOR TESTA = 1 TO 22
DRAW TEXTFOREIGN$(TESTA)
NEXT TESTA
DRAW "BM20,370"
FOR TESTA = 23 TO 44
DRAW TEXTFOREIGN$(TESTA)
NEXT TESTA
GOTO ENDSUB
ENDFONTLOAD:



  3 Responses to “Category : BASIC Source Code
Archive   : FNTLOAD.ZIP
Filename : FONTLOAD.BAS

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/