Home | History | Annotate | Line # | Download | only in dumpfont
dumpfont.c revision 1.5
      1  1.5     cgd /*	$NetBSD: dumpfont.c,v 1.5 1994/10/26 02:06:57 cgd Exp $	*/
      2  1.5     cgd 
      3  1.5     cgd /*
      4  1.5     cgd  * This is a *real* hack to dump the topaz80 kernel font. This one is
      5  1.5     cgd  * ways nicer than the ugly Mach font, but we'll have to dump it from a
      6  1.5     cgd  * running system to not run against Commodore copyrights. *NEVER* distribute
      7  1.5     cgd  * the generated font with BSD, always regenerate!
      8  1.4  chopps  */
      9  1.1      mw 
     10  1.1      mw #include <exec/types.h>
     11  1.1      mw #include <exec/memory.h>
     12  1.1      mw #include <dos/dos.h>
     13  1.1      mw #include <graphics/gfx.h>
     14  1.1      mw #include <graphics/rastport.h>
     15  1.1      mw #include <graphics/text.h>
     16  1.1      mw 
     17  1.1      mw #include <inline/exec.h>
     18  1.1      mw #include <inline/graphics.h>
     19  1.1      mw 
     20  1.1      mw #include <stdio.h>
     21  1.1      mw 
     22  1.1      mw 
     23  1.1      mw main()
     24  1.1      mw {
     25  1.1      mw   unsigned char str[256], *pp;
     26  1.1      mw   int i;
     27  1.1      mw   struct TextAttr ta = { "topaz.font", 8, FS_NORMAL, FPF_ROMFONT };
     28  1.1      mw   struct RastPort rp;
     29  1.1      mw   struct BitMap bm = { 256, 	/* bytes per row */
     30  1.1      mw 		         8,	/* rows */
     31  1.1      mw 			 0,	/* flags */
     32  1.1      mw 			 1,	/* depth */
     33  1.1      mw 			 0,	/* pad */
     34  1.1      mw 			 0 };	/* planes */
     35  1.1      mw   struct TextFont *tf;
     36  1.1      mw 
     37  1.1      mw   InitRastPort (& rp);
     38  1.1      mw   rp.BitMap = &bm;
     39  1.1      mw   bm.Planes[0] = pp = AllocRaster (256 * 8, 8);
     40  1.1      mw 
     41  1.1      mw   if (!pp)
     42  1.1      mw     {
     43  1.1      mw       fprintf (stderr, "Can't allocate raster!\n");
     44  1.1      mw       exit (1);
     45  1.1      mw     }
     46  1.1      mw   bzero (pp, 256 * 8);
     47  1.1      mw 
     48  1.1      mw   tf = OpenFont (& ta);
     49  1.1      mw   if (! tf)
     50  1.1      mw     {
     51  1.1      mw       fprintf (stderr, "can't open topaz font.\n");
     52  1.1      mw       exit (1);
     53  1.1      mw     }
     54  1.1      mw 
     55  1.1      mw   SetFont (&rp, tf);
     56  1.1      mw 
     57  1.1      mw   /* initialize string to be printed */
     58  1.1      mw   for (i = 32; i < 256; i++) str[i - 32] = i;
     59  1.1      mw 
     60  1.1      mw   Move (&rp, 0, 6);
     61  1.1      mw 
     62  1.1      mw   Text (&rp, str, 256 - 32);
     63  1.1      mw   {
     64  1.1      mw     int bin = open ("bitmap", 1);
     65  1.1      mw     if (bin >= 0)
     66  1.1      mw       {
     67  1.1      mw         write (bin, pp, 256*8);
     68  1.1      mw         close (bin);
     69  1.1      mw       }
     70  1.1      mw   }
     71  1.1      mw 
     72  1.1      mw   /* dump them.. */
     73  1.1      mw   printf ("/* generated automatically by dumpfont.c. *DONT* distribute\n");
     74  1.1      mw   printf ("   this file, it contains information Copyright by Commodore!\n");
     75  1.1      mw   printf ("\n");
     76  1.1      mw   printf ("   This is the (new) topaz80 system font: */\n\n");
     77  1.1      mw 
     78  1.1      mw   printf ("unsigned char kernel_font_width  = 8;\n");
     79  1.1      mw   printf ("unsigned char kernel_font_height = 8;\n");
     80  1.1      mw   printf ("unsigned char kernel_font_lo = 32;\n");
     81  1.1      mw   printf ("unsigned char kernel_font_hi = 255;\n\n");
     82  1.1      mw 
     83  1.1      mw   printf ("unsigned char kernel_cursor[] = {\n");
     84  1.1      mw   printf ("  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };\n\n");
     85  1.1      mw   printf ("unsigned char kernel_font[] = {\n");
     86  1.1      mw 
     87  1.1      mw   for (i = 0; i < 256 - 32; i++)
     88  1.1      mw     {
     89  1.1      mw       printf ("/* %c */ ", i + 32);
     90  1.1      mw       printf ("0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x,\n",
     91  1.1      mw       	      pp[i+0*256], pp[i+1*256], pp[i+2*256], pp[i+3*256],
     92  1.1      mw       	      pp[i+4*256], pp[i+5*256], pp[i+6*256], pp[i+7*256]);
     93  1.1      mw     }
     94  1.1      mw   printf ("};\n");
     95  1.1      mw 
     96  1.1      mw   CloseFont (tf);
     97  1.1      mw   FreeRaster (pp, 256 * 8, 8);
     98  1.1      mw }
     99