aboutsummaryrefslogtreecommitdiff
path: root/mkatables.pl
blob: 1eb3a083bb15185a65709d415cfc3b2915db3b00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/perl -w

%atascii = (
	0 => "♥",
	1 => "┣",
	2 => "┃",
	3 => "┛",
	4 => "┫",
	5 => "┓",
	6 => "╱",
	7 => "╲",
	8 => "◢",
	9 => "▗",
	10 => "◣",
	11 => "▝",
	12 => "▘",
	13 => "▔",
	14 => "▁",
	15 => "▖",
	16 => "♣",
	17 => "┏",
	18 => "━",
	19 => "╋",
	20 => "●",
	21 => "▄",
	22 => "▎",
	23 => "┳",
	24 => "┻",
	25 => "▌",
	26 => "┗",
	27 => "␛",
	28 => "↑",
	29 => "↓",
	30 => "←",
	31 => "→",
	34 => "\\\"",
	92 => "\\\\",
	96 => "◆",
	123 => "♠",
	125 => "↰",
	126 => "◀",
	127 => "▶",
);

%xl = (
	0 => "á",
	1 => "ù",
	2 => "Ñ",
	3 => "É",
	4 => "ç",
	5 => "ô",
	6 => "ò",
	7 => "ì",
	8 => "£",
	9 => "ï",
	10 => "ü",
	11 => "ä",
	12 => "Ö",
	13 => "ú",
	14 => "ó",
	15 => "ö",
	16 => "Ü",
	17 => "â",
	18 => "û",
	19 => "î",
	20 => "é",
	21 => "è",
	22 => "ñ",
	23 => "ê",
	24 => "ȧ",
	25 => "à",
	26 => "Ȧ",
	27 => "␛",
	28 => "↑",
	29 => "↓",
	30 => "←",
	31 => "→",
	34 => "\\\"",
	92 => "\\\\",
	96 => "¡",
	123 => "Ä",
	125 => "↰",
	126 => "◀",
	127 => "▶",
);

sub getcharname {
	my $c = shift;
	if($c == 127) {
		return "[del]";
	} elsif($c < 32) {
		return "^" . chr($c + 64);
	} else {
		return chr($c);
	}
}

sub mktable {
	my ($name, $hash) = @_;

	print "const char *$name\[\] = {\n";
	for (0..127) {
		my $cmt = sprintf("/* %3d \$%02x %5s */", $_, $_, getcharname($_));
		print "\t\"" . ($hash->{$_} || chr($_)), "\",  $cmt\n";
	}
	print "};\n\n";
}

print <<EOF;
/* ATASCII to UTF-8 tables. Generated by mkatables.pl.
   Do not edit this file; edit mkatables.pl instead. */

EOF

mktable("ata2utf", \%atascii);
mktable("ics2utf", \%xl);