--- /dev/null
+#include <stdio.h>\r
+#include "lib/types.h"\r
+#include "lib/text.h"\r
+\r
+main() {\r
+ int i;\r
+ int j;\r
+ char l[16];\r
+ char c;\r
+ word s, o;\r
+ word addr = (word) l;\r
+ textInit();\r
+\r
+ //print the addresses of the fonts\r
+ printf("ROM FONT Addresses\n");\r
+ for(i=0; i<4; i++) {\r
+ printf("%d: %x:%x\n", i, romFonts[i].seg, romFonts[i].off);\r
+ }\r
+\r
+ printf("Character: ");\r
+ scanf("%c", &c);\r
+\r
+ s=romFonts[ROM_FONT_8x16].seg;\r
+ o=romFonts[ROM_FONT_8x16].off;\r
+\r
+ //load the letter 'A'\r
+ __asm {\r
+ MOV DI, addr\r
+ MOV SI, o\r
+ MOV ES, s\r
+ SUB BH, BH\r
+ MOV BL, c ; the letter\r
+ SHL BX, 1\r
+ SHL BX, 1\r
+ SHL BX, 1\r
+ SHL BX, 1\r
+ ADD SI, BX ;the address of A\r
+ MOV CX, 16\r
+ L1: MOV AX, ES:SI\r
+ MOV DS:DI, AX\r
+ INC SI\r
+ INC DI\r
+ DEC CX\r
+ JNZ L1\r
+ }\r
+\r
+ //render the letter in ascii art\r
+ for(i=0; i<16; i++) {\r
+ j=1<<8;\r
+ while(j) {\r
+ printf("%c", l[i] & j ? '*':' ');\r
+ j>>=1;\r
+ }\r
+ printf("\n");\r
+ }\r
+}\r