OSDN Git Service

Enable to track git://github.com/monaka/binutils.git
[pf3gnuchains/pf3gnuchains3x.git] / sid / component / lcd / rom-t6963c.cxx
1 // rom-t6963.cxx - description.  -*- C++ -*-
2
3 // Copyright (C) 1999, 2000 Red Hat.
4 // This file is part of SID and is licensed under the GPL.
5 // See the file COPYING.SID for conditions for redistribution.
6
7 extern void init_rom( unsigned char rom[][8] );
8 extern void init_rom_japan( unsigned char rom[][8] );
9
10 static const int ROM_SIZE = 128 + 32;
11
12 void
13 init_rom_t6963c( bool use_japan_rom, unsigned char rom[][8] ) {
14   int i, j;
15   unsigned char *fm;
16   
17   for( i=0; i<ROM_SIZE; i++ )
18     for( j=0; j<8; j++ ) rom[i][j] = 0;
19
20  /* Note: the local ROM indices are offset by 32 (0x20) so that they
21   *       correspond to ACSII indices.
22   */
23   init_rom( rom );
24
25   if( use_japan_rom ) {
26     unsigned char japanese[256][8];
27
28     // We are over-writing stuff already in set by init_rom, so clear it out
29     for( i=0x40; i<0x46; i++ )
30       for( j=0; j<8; j++ ) rom[i+32][j] = 0;
31
32     fm = &(rom[0x40 + 32][0]);
33     fm[1] = 0x1;
34     fm[2] = 0x1e;
35     fm[3] = 0x4;
36     fm[4] = 0x1f;
37     fm[5] = 0x04;
38     fm[6] = 0x04;
39
40     fm = &(rom[0x41 + 32][0]);
41     fm[2] = 0x1f;
42     fm[3] = 0x08;
43     fm[4] = 0x0f;
44     fm[5] = 0x09;
45     fm[6] = 0x11;
46
47     fm = &(rom[0x42 + 32][0]);
48     fm[2] = 0x1f;
49     fm[3] = 0x15;
50     fm[4] = 0x1f;
51     fm[5] = 0x11;
52     fm[6] = 0x11;
53   
54     fm = &(rom[0x43 + 32][0]);  // right arrow
55     fm[1] = 0x4;
56     fm[2] = 0x2;
57     fm[3] = 0x1f;
58     fm[4] = 0x2;
59     fm[5] = 0x4;
60
61     fm = &(rom[0x44 + 32][0]);  // left arrow
62     fm[1] = 0x4;
63     fm[2] = 0x8;
64     fm[3] = 0x1f;
65     fm[4] = 0x8;
66     fm[5] = 0x4;
67
68     fm = &(rom[0x45 + 32][0]);  // block
69     for( i=0; i<7; i++ ) fm[i] = 0x1f;
70
71     for( i=0; i<256; i++ )
72       for( j=0; j<8; j++ ) japanese[i][j] = 0;
73
74     init_rom_japan( japanese );
75
76    /* This next part copies the Japanese chars from 0xa6-0xef of the 
77     * HD44780U Japanese ROM to 0x46-0x7F of the local ROM.
78     */
79     int local;
80     for( i=0xa6, local=0x46; local<0x080; i++, local++ )
81       for( j=0; j<8; j++ )
82         rom[local + 32][j] = japanese[i][j];
83   }
84   else {
85     fm = &(rom[0x60 + 32][0]);
86     fm[0] = 0x0f;
87     fm[1] = 0x10;
88     fm[2] = 0x10;
89     fm[3] = 0x10;
90     fm[4] = 0x0f;
91     fm[5] = 0x2;
92     fm[6] = 0x0e;
93
94     fm = &(rom[0x61 + 32][0]);  // u umlaut
95     fm[1] = 0x0a;
96     fm[3] = 0x11;
97     fm[4] = 0x11;
98     fm[5] = 0x13;
99     fm[6] = 0x0d;
100
101     fm = &(rom[0x62 + 32][0]);  // e accent
102     fm[0] = 2;
103     fm[1] = 4;
104     fm[2] = 0x0e;
105     fm[3] = 0x11;
106     fm[4] = 0x1f;
107     fm[5] = 0x10;
108     fm[6] = 0x0e;
109
110     fm = &(rom[0x63 + 32][0]);  // a hat
111     fm[0] = 0x04;
112     fm[1] = 0x0a;
113     fm[2] = 0x0e;
114     fm[3] = 0x1;
115     fm[4] = 0x0f;
116     fm[5] = 0x11;
117     fm[6] = 0x0f;
118
119     fm = &(rom[0x64 + 32][0]);  // a umlaut
120     fm[0] = 0x0a;
121     fm[2] = 0x0e;
122     fm[3] = 0x1;
123     fm[4] = 0x0f;
124     fm[5] = 0x11;
125     fm[6] = 0x0f;
126
127     fm = &(rom[0x65 + 32][0]);  // a grave
128     fm[0] = 0x08;
129     fm[1] = 4;
130     fm[2] = 0x0e;
131     fm[3] = 0x1;
132     fm[4] = 0x0f;
133     fm[5] = 0x11;
134     fm[6] = 0x0f;
135
136     fm = &(rom[0x66 + 32][0]);  // a dot
137     fm[0] = 0x08;
138     fm[2] = 0x0e;
139     fm[3] = 0x1;
140     fm[4] = 0x0f;
141     fm[5] = 0x11;
142     fm[6] = 0x0f;
143
144     fm = &(rom[0x67 + 32][0]);
145     fm[1] = 0x0f;
146     fm[2] = 0x10;
147     fm[3] = 0x10;
148     fm[4] = 0x0f;
149     fm[5] = 0x2;
150     fm[6] = 0x0e;
151
152     fm = &(rom[0x68 + 32][0]);  // e hat
153     fm[0] = 4;
154     fm[1] = 0x0a;
155     fm[2] = 0x0e;
156     fm[3] = 0x11;
157     fm[4] = 0x1f;
158     fm[5] = 0x10;
159     fm[6] = 0x0e;
160
161     fm = &(rom[0x69 + 32][0]);  // e umlaut
162     fm[0] = 0x0a;
163     fm[2] = 0x0e;
164     fm[3] = 0x11;
165     fm[4] = 0x1f;
166     fm[5] = 0x10;
167     fm[6] = 0x0e;
168
169     fm = &(rom[0x6a + 32][0]);  // e grave
170     fm[0] = 0x8;
171     fm[1] = 4;
172     fm[2] = 0x0e;
173     fm[3] = 0x11;
174     fm[4] = 0x1f;
175     fm[5] = 0x10;
176     fm[6] = 0x0e;
177
178     fm = &(rom[0x6b + 32][0]);  // i umlaut
179     for( i=3; i<6; i++ ) fm[i] = 0x4;
180     fm[0] = 0x0a;
181     fm[2] = 0x0c;
182     fm[6] = 0x0e;
183
184     fm = &(rom[0x6c + 32][0]);  // i hat
185     for( i=0; i<6; i++ ) fm[i] = 0x4;
186     fm[1] = 0x0a;
187     fm[2] = 0;
188     fm[3] = 0x0c;
189     fm[6] = 0x0e;
190
191     fm = &(rom[0x6d + 32][0]);  // i grave
192     for( i=1; i<6; i++ ) fm[i] = 0x4;
193     fm[0] = 0x08;
194     fm[2] = 0;
195     fm[3] = 0x0c;
196     fm[6] = 0x0e;
197
198     fm = &(rom[0x6e + 32][0]);  // A umlaut
199     fm[0] = 0x0a;
200     fm[2] = 0x04;
201     fm[3] = 0x0a;
202     fm[4] = 0x11;
203     fm[5] = 0x1f;
204     fm[6] = 0x11;
205
206     fm = &(rom[0x6f + 32][0]);  // A diamond
207     fm[0] = 0x04;
208     fm[1] = 0x0a;
209     fm[2] = 0x04;
210     fm[3] = 0x0a;
211     fm[4] = 0x11;
212     fm[5] = 0x1f;
213     fm[6] = 0x11;
214
215     fm = &(rom[0x70 + 32][0]);  // E accent
216     fm[0] = 0x02;
217     fm[1] = 0x04;
218     fm[2] = 0x1f;
219     fm[3] = 0x10;
220     fm[4] = 0x1f;
221     fm[5] = 0x10;
222     fm[6] = 0x1f;
223
224     fm = &(rom[0x71 + 32][0]);
225     fm[2] = 0x1a;
226     fm[3] = 0x05;
227     fm[4] = 0x0f;
228     fm[5] = 0x14;
229     fm[6] = 0x0f;
230
231     fm = &(rom[0x72 + 32][0]);  // AE
232     fm[0] = 0x0f;
233     fm[1] = 0x11;
234     fm[2] = 0x11;
235     fm[3] = 0x1f;
236     fm[4] = 0x11;
237     fm[5] = 0x11;
238     fm[6] = 0x17;
239
240     fm = &(rom[0x73 + 32][0]);  // o hat
241     fm[0] = 0x4;
242     fm[1] = 0x0a;
243     fm[3] = 0xe;
244     fm[4] = 0x11;
245     fm[5] = 0x11;
246     fm[6] = 0xe;
247
248     fm = &(rom[0x74 + 32][0]);  // o umlat
249     fm[1] = 0x0a;
250     fm[3] = 0xe;
251     fm[4] = 0x11;
252     fm[5] = 0x11;
253     fm[6] = 0xe;
254
255     fm = &(rom[0x75 + 32][0]);  // o grave
256     fm[0] = 0x08;
257     fm[1] = 0x04;
258     fm[3] = 0xe;
259     fm[4] = 0x11;
260     fm[5] = 0x11;
261     fm[6] = 0xe;
262
263     fm = &(rom[0x76 + 32][0]);  // u hat
264     fm[0] = 4;
265     fm[1] = 0x0a;
266     fm[3] = 0x11;
267     fm[4] = 0x11;
268     fm[5] = 0x13;
269     fm[6] = 0x0d;
270
271     fm = &(rom[0x77 + 32][0]);  // u grave
272     fm[0] = 0x08;
273     fm[1] = 0x04;
274     fm[3] = 0x11;
275     fm[4] = 0x11;
276     fm[5] = 0x13;
277     fm[6] = 0x0d;
278
279     fm = &(rom[0x78 + 32][0]);  // y umlaut
280     fm[0] = 0x0a;
281     fm[2] = 0x11;
282     fm[3] = 0x11;
283     fm[4] = 0x0f;
284     fm[5] = 0x01;
285     fm[6] = 0x0e;
286
287     fm = &(rom[0x79 + 32][0]);  // O umlaut
288     for( i=0; i<6; i++ ) fm[i] = 0x11;
289     fm[1] = 0x0e;
290     fm[6] = 0x0e;
291
292     fm = &(rom[0x7a + 32][0]);  // U umlaut
293     for( i=2; i<6; i++ ) fm[i] = 0x11;
294     fm[0] = 0x0a;
295     fm[6] = 0x0e;
296
297     fm = &(rom[0x7b + 32][0]);  // cent
298     fm[0] = 0x04;
299     fm[1] = 0x0f;
300     fm[2] = 0x14;
301     fm[3] = 0x14;
302     fm[4] = 0x14;
303     fm[5] = 0x0f;
304     fm[6] = 0x04;
305
306     fm = &(rom[0x7c + 32][0]);  // pound
307     fm[0] = 0x06;
308     fm[1] = 0x09;
309     fm[2] = 0x08;
310     fm[3] = 0x1e;
311     fm[4] = 0x08;
312     fm[5] = 0x08;
313     fm[6] = 0x1f;
314
315     fm = &(rom[0x7d + 32][0]);  // yen
316     fm[0] = 0x11;
317     fm[1] = 0x0a;
318     fm[2] = 0x1f;
319     fm[3] = 0x4;
320     fm[4] = 0x1f;
321     fm[5] = 0x4;
322     fm[6] = 0x4;
323
324     fm = &(rom[0x7e + 32][0]);  // Rx
325     fm[0] = 0x1c;
326     fm[1] = 0x12;
327     fm[2] = 0x1c;
328     fm[3] = 0x12;
329     fm[4] = 0x17;
330     fm[5] = 0x12;
331     fm[6] = 0x13;
332
333     fm = &(rom[0x7f + 32][0]);  // script f
334     fm[0] = 0x2;
335     fm[1] = 0x5;
336     fm[2] = 0x4;
337     fm[3] = 0x0e;
338     fm[4] = 0x4;
339     fm[5] = 0x14;
340     fm[6] = 0x08;
341   }
342 }
343