1 // rom-t6963.cxx - description. -*- C++ -*-
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.
7 extern void init_rom( unsigned char rom[][8] );
8 extern void init_rom_japan( unsigned char rom[][8] );
10 static const int ROM_SIZE = 128 + 32;
13 init_rom_t6963c( bool use_japan_rom, unsigned char rom[][8] ) {
17 for( i=0; i<ROM_SIZE; i++ )
18 for( j=0; j<8; j++ ) rom[i][j] = 0;
20 /* Note: the local ROM indices are offset by 32 (0x20) so that they
21 * correspond to ACSII indices.
26 unsigned char japanese[256][8];
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;
32 fm = &(rom[0x40 + 32][0]);
40 fm = &(rom[0x41 + 32][0]);
47 fm = &(rom[0x42 + 32][0]);
54 fm = &(rom[0x43 + 32][0]); // right arrow
61 fm = &(rom[0x44 + 32][0]); // left arrow
68 fm = &(rom[0x45 + 32][0]); // block
69 for( i=0; i<7; i++ ) fm[i] = 0x1f;
71 for( i=0; i<256; i++ )
72 for( j=0; j<8; j++ ) japanese[i][j] = 0;
74 init_rom_japan( japanese );
76 /* This next part copies the Japanese chars from 0xa6-0xef of the
77 * HD44780U Japanese ROM to 0x46-0x7F of the local ROM.
80 for( i=0xa6, local=0x46; local<0x080; i++, local++ )
82 rom[local + 32][j] = japanese[i][j];
85 fm = &(rom[0x60 + 32][0]);
94 fm = &(rom[0x61 + 32][0]); // u umlaut
101 fm = &(rom[0x62 + 32][0]); // e accent
110 fm = &(rom[0x63 + 32][0]); // a hat
119 fm = &(rom[0x64 + 32][0]); // a umlaut
127 fm = &(rom[0x65 + 32][0]); // a grave
136 fm = &(rom[0x66 + 32][0]); // a dot
144 fm = &(rom[0x67 + 32][0]);
152 fm = &(rom[0x68 + 32][0]); // e hat
161 fm = &(rom[0x69 + 32][0]); // e umlaut
169 fm = &(rom[0x6a + 32][0]); // e grave
178 fm = &(rom[0x6b + 32][0]); // i umlaut
179 for( i=3; i<6; i++ ) fm[i] = 0x4;
184 fm = &(rom[0x6c + 32][0]); // i hat
185 for( i=0; i<6; i++ ) fm[i] = 0x4;
191 fm = &(rom[0x6d + 32][0]); // i grave
192 for( i=1; i<6; i++ ) fm[i] = 0x4;
198 fm = &(rom[0x6e + 32][0]); // A umlaut
206 fm = &(rom[0x6f + 32][0]); // A diamond
215 fm = &(rom[0x70 + 32][0]); // E accent
224 fm = &(rom[0x71 + 32][0]);
231 fm = &(rom[0x72 + 32][0]); // AE
240 fm = &(rom[0x73 + 32][0]); // o hat
248 fm = &(rom[0x74 + 32][0]); // o umlat
255 fm = &(rom[0x75 + 32][0]); // o grave
263 fm = &(rom[0x76 + 32][0]); // u hat
271 fm = &(rom[0x77 + 32][0]); // u grave
279 fm = &(rom[0x78 + 32][0]); // y umlaut
287 fm = &(rom[0x79 + 32][0]); // O umlaut
288 for( i=0; i<6; i++ ) fm[i] = 0x11;
292 fm = &(rom[0x7a + 32][0]); // U umlaut
293 for( i=2; i<6; i++ ) fm[i] = 0x11;
297 fm = &(rom[0x7b + 32][0]); // cent
306 fm = &(rom[0x7c + 32][0]); // pound
315 fm = &(rom[0x7d + 32][0]); // yen
324 fm = &(rom[0x7e + 32][0]); // Rx
333 fm = &(rom[0x7f + 32][0]); // script f