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

Subversion Repositories z3

[/] [z3/] [trunk/] [bios/] [makefont.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 charcole
#include <stdio.h>
2
#include "zfont2.h"
3
 
4
unsigned char data[128][10];
5
 
6
void calculateKeyboard(char *output, char *line1, int s)
7
{
8
                int x=0;
9
                int g=0;
10
                int h=s/2;
11
                int sections=1;
12
                char *sep=strchr(line1,'|');
13
                while (sep)
14
                {
15
                        sections+=2;
16
                        sep=strchr(sep+1,'|');
17
                }
18
                g=120-sections*h+h;
19
                while (*line1)
20
                {
21
                        int w=0;
22
                        sep=line1;
23
                        if (*sep=='|')
24
                                w=data['|'][0];
25
                        else
26
                        {
27
                                while (*sep!='|' && *sep!='\0')
28
                                {
29
                                        w+=data[*sep][0];
30
                                        sep++;
31
                                }
32
                        }
33
                        while (x+w/2<g)
34
                        {
35
                                x+=data[32][0];
36
                                *(output++)=' ';
37
                        }
38
                        if (*line1=='|')
39
                        {
40
                                x+=data[*line1][0];
41
                                *(output++)=*(line1++);
42
                        }
43
                        else
44
                        {
45
                                while (*line1!='|' && *line1!='\0')
46
                                {
47
                                        x+=data[*line1][0];
48
                                        *(output++)=*(line1++);
49
                                }
50
                        }
51
                        g+=s;
52
                }
53
                *(output++)=0;
54
 
55
}
56
 
57
void fontCreate()
58
{
59
        int waiting=0;
60
        int i=32;
61
        int x;
62
        memset(data, 0, sizeof(data));
63
        for (x=0; x<width; x++)
64
        {
65
                if (header_data[10*width+x])
66
                {
67
                        int k;
68
                        for (k=1; k<10; k++)
69
                        {
70
                                data[i][k]=data[i][k]<<1;
71
                                data[i][k]|=header_data[k*width+x];
72
                        }
73
                        data[i][0]++;
74
                        waiting=0;
75
                }
76
                else if (!waiting)
77
                {
78
                        int y=0;
79
                        for (y=1; y<10; y++)
80
                        {
81
                                data[i][y]<<=8-data[i][0];
82
                        }
83
                        data[i][0]++;
84
                        printf("%d(%c):\n", i, i);
85
                        printf("Adv: %d\n", data[i][0]);
86
                        for (y=0; y<9; y++)
87
                        {
88
                                printf("%d%d%d%d%d%d%d%d\n",
89
                                                (data[i][y+1]&128)==0?0:1,
90
                                                (data[i][y+1]&64)==0?0:1,
91
                                                (data[i][y+1]&32)==0?0:1,
92
                                                (data[i][y+1]&16)==0?0:1,
93
                                                (data[i][y+1]&8)==0?0:1,
94
                                                (data[i][y+1]&4)==0?0:1,
95
                                                (data[i][y+1]&2)==0?0:1,
96
                                                (data[i][y+1]&1)==0?0:1);
97
                        }
98
                        i++;
99
                        waiting=1;
100
                }
101
        }
102
 
103
        char outputBuffer[1024];
104
        int s=240/20;
105
        printf("Strings for BIOS for making the keyboard:\n");
106
        calculateKeyboard(outputBuffer, "q|w|e|r|t|y|u|i|o|p", s);
107
        printf("@print \"%s\n\";\n", outputBuffer);
108
        calculateKeyboard(outputBuffer, "a|s|d|f|g|h|j|k|l", s);
109
        printf("@print \"%s\n\";\n", outputBuffer);
110
        calculateKeyboard(outputBuffer, "z|x|c|v|b|n|m|,", s);
111
        printf("@print \"%s\n\";\n", outputBuffer);
112
        calculateKeyboard(outputBuffer, "Q|W|E|R|T|Y|U|I|O|P", s);
113
        printf("@print \"%s\n\";\n", outputBuffer);
114
        calculateKeyboard(outputBuffer, "A|S|D|F|G|H|J|K|L", s);
115
        printf("@print \"%s\n\";\n", outputBuffer);
116
        calculateKeyboard(outputBuffer, "Z|X|C|V|B|N|M|,", s);
117
        printf("@print \"%s\n\";\n", outputBuffer);
118
        s=40;
119
        calculateKeyboard(outputBuffer, "Delete|Space|Enter", s);
120
        printf("@print \"%s\n\";\n", outputBuffer);
121
}
122
 
123
int main()
124
{
125
        fontCreate();
126
        FILE *f=fopen("zfont.dat", "w");
127
        fwrite(data, sizeof(data), 1, f);
128
        fclose(f);
129
        return 0;
130
}

powered by: WebSVN 2.1.0

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