vgafont.cpp
1 // VGA Font Grabber 2 // Copyright (c) 1997 Jonathon Fowler 3 // This is a DOS program originally written with Borland Turbo C++ for DOS 3.1 4 5 6 #include <dos.h> 7 #include <stdio.h> 8 9 int main(void) 10 { 11 int font, width, height, numchars; 12 struct REGPACK r; 13 FILE *fp; 14 15 printf("VGA Font Grabber\n" 16 "Copyright (c) 1997 Jonathon Fowler\n"); 17 18 do { 19 printf("\nSelect which font to grab:\n" 20 " 1. 8-by-8 ROM\n" 21 " 2. 8-by-14 ROM\n" 22 " 3. 8-by-16 ROM\n" 23 " 4. 9-by-16 ROM\n" 24 " 5. 9-by-14 ROM\n" 25 " 6. Quit\n" 26 " > "); 27 scanf("%d",&font); 28 29 switch (font) { 30 case 1: 31 printf("Getting 8-by-8 ROM font..."); 32 33 if ((fp = fopen("88vga.dat", "wb")) != NULL) { 34 width = 8; 35 height = 8; 36 numchars = 256; 37 38 r.r_ax = 0x1130; // locate the font (1st half) 39 r.r_bx = 0x0300; 40 intr(0x10, &r); 41 42 fwrite(MK_FP(r.r_es, r.r_bp), 1, (8 * 128), fp); 43 44 r.r_ax = 0x1130; // locate the font (2nd half) 45 r.r_bx = 0x0400; 46 intr(0x10, &r); 47 48 fwrite(MK_FP(r.r_es, r.r_bp), 1, (8 * 128), fp); 49 50 fclose(fp); 51 } 52 53 printf("Done\n"); 54 break; 55 case 2: 56 printf("Getting 8-by-14 ROM font..."); 57 58 if ((fp = fopen("814vga.dat", "wb")) != NULL) { 59 width = 8; 60 height = 14; 61 numchars = 256; 62 63 r.r_ax = 0x1130; // locate the font 64 r.r_bx = 0x0200; 65 intr(0x10, &r); 66 67 fwrite(MK_FP(r.r_es, r.r_bp), 1, (14 * 256), fp); 68 69 fclose(fp); 70 } 71 72 printf("Done\n"); 73 break; 74 case 3: 75 printf("Getting 8-by-16 ROM font..."); 76 77 if ((fp = fopen("816vga.dat", "wb")) != NULL) { 78 width = 8; 79 height = 16; 80 numchars = 256; 81 82 r.r_ax = 0x1130; // locate the font 83 r.r_bx = 0x0600; 84 intr(0x10, &r); 85 86 fwrite(MK_FP(r.r_es, r.r_bp), 1, (16 * 256), fp); 87 88 fclose(fp); 89 } 90 91 printf("Done\n"); 92 break; 93 case 4: 94 printf("Getting 9-by-16 ROM font..."); 95 96 if ((fp = fopen("916vga.dat", "wb")) != NULL) { 97 width = 9; 98 height = 16; 99 numchars = 256; 100 101 r.r_ax = 0x1130; // locate the font 102 r.r_bx = 0x0700; 103 intr(0x10, &r); 104 105 fwrite(MK_FP(r.r_es, r.r_bp), 1, (16 * 256) *2, fp); 106 107 fclose(fp); 108 } 109 110 printf("Done\n"); 111 break; 112 case 5: 113 printf("Getting 9-by-14 ROM font..."); 114 115 if ((fp = fopen("914vga.dat", "wb")) != NULL) { 116 width = 9; 117 height = 16; 118 numchars = 256; 119 120 r.r_ax = 0x1130; // locate the font 121 r.r_bx = 0x0500; 122 intr(0x10, &r); 123 124 fwrite(MK_FP(r.r_es, r.r_bp), 1, (14 * 256)* 2, fp); 125 126 fclose(fp); 127 } 128 129 printf("Done\n"); 130 break; 131 case 6: 132 break; 133 default: 134 printf("Please try again\n"); 135 break; 136 } 137 } while (font != 6); 138 139 return 0; 140 }