OpenCores
URL https://opencores.org/ocsvn/z3/z3/trunk

Subversion Repositories z3

[/] [z3/] [trunk/] [bios/] [makefont.c] - Rev 2

Compare with Previous | Blame | View Log

#include <stdio.h>
#include "zfont2.h"
 
unsigned char data[128][10];
 
void calculateKeyboard(char *output, char *line1, int s)
{
		int x=0;
		int g=0;
		int h=s/2;
		int sections=1;
		char *sep=strchr(line1,'|');
		while (sep)
		{
			sections+=2;
			sep=strchr(sep+1,'|');
		}
		g=120-sections*h+h;
		while (*line1)
		{
			int w=0;
			sep=line1;
			if (*sep=='|')
				w=data['|'][0];
			else
			{
				while (*sep!='|' && *sep!='\0')
				{
					w+=data[*sep][0];
					sep++;
				}
			}
			while (x+w/2<g)
			{
				x+=data[32][0];
				*(output++)=' ';
			}
			if (*line1=='|')
			{
				x+=data[*line1][0];
				*(output++)=*(line1++);
			}
			else
			{
				while (*line1!='|' && *line1!='\0')
				{
					x+=data[*line1][0];
					*(output++)=*(line1++);
				}
			}
			g+=s;
		}
		*(output++)=0;
 
}
 
void fontCreate()
{
	int waiting=0;
	int i=32;
	int x;
	memset(data, 0, sizeof(data));
	for (x=0; x<width; x++)
	{
		if (header_data[10*width+x])
		{
			int k;
			for (k=1; k<10; k++)
			{
				data[i][k]=data[i][k]<<1;
				data[i][k]|=header_data[k*width+x];
			}
			data[i][0]++;
			waiting=0;
		}
		else if (!waiting)
		{
			int y=0;
			for (y=1; y<10; y++)
			{
				data[i][y]<<=8-data[i][0];
			}
			data[i][0]++;
			printf("%d(%c):\n", i, i);
			printf("Adv: %d\n", data[i][0]);
			for (y=0; y<9; y++)
			{
				printf("%d%d%d%d%d%d%d%d\n",
						(data[i][y+1]&128)==0?0:1,
						(data[i][y+1]&64)==0?0:1,
						(data[i][y+1]&32)==0?0:1,
						(data[i][y+1]&16)==0?0:1,
						(data[i][y+1]&8)==0?0:1,
						(data[i][y+1]&4)==0?0:1,
						(data[i][y+1]&2)==0?0:1,
						(data[i][y+1]&1)==0?0:1);
			}
			i++;
			waiting=1;	
		}
	}
 
	char outputBuffer[1024];
	int s=240/20;
	printf("Strings for BIOS for making the keyboard:\n");
	calculateKeyboard(outputBuffer, "q|w|e|r|t|y|u|i|o|p", s);
	printf("@print \"%s\n\";\n", outputBuffer);
	calculateKeyboard(outputBuffer, "a|s|d|f|g|h|j|k|l", s);
	printf("@print \"%s\n\";\n", outputBuffer);
	calculateKeyboard(outputBuffer, "z|x|c|v|b|n|m|,", s);
	printf("@print \"%s\n\";\n", outputBuffer);
	calculateKeyboard(outputBuffer, "Q|W|E|R|T|Y|U|I|O|P", s);
	printf("@print \"%s\n\";\n", outputBuffer);
	calculateKeyboard(outputBuffer, "A|S|D|F|G|H|J|K|L", s);
	printf("@print \"%s\n\";\n", outputBuffer);
	calculateKeyboard(outputBuffer, "Z|X|C|V|B|N|M|,", s);
	printf("@print \"%s\n\";\n", outputBuffer);
	s=40;
	calculateKeyboard(outputBuffer, "Delete|Space|Enter", s);
	printf("@print \"%s\n\";\n", outputBuffer);
}
 
int main()
{
	fontCreate();
	FILE *f=fopen("zfont.dat", "w");
	fwrite(data, sizeof(data), 1, f);
	fclose(f);
	return 0;
}
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.