#!/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 => "▶", ); %magazine = ( 0 => "{ctrl-,}", 1 => "{ctrl-A}", 2 => "{ctrl-B}", 3 => "{ctrl-C}", 4 => "{ctrl-D}", 5 => "{ctrl-E}", 6 => "{ctrl-F}", 7 => "{ctrl-G}", 8 => "{ctrl-H}", 9 => "{ctrl-I}", 10 => "{ctrl-J}", 11 => "{ctrl-K}", 12 => "{ctrl-L}", 13 => "{ctrl-M}", 14 => "{ctrl-N}", 15 => "{ctrl-O}", 16 => "{ctrl-P}", 17 => "{ctrl-Q}", 18 => "{ctrl-R}", 19 => "{ctrl-S}", 20 => "{ctrl-T}", 21 => "{ctrl-U}", 22 => "{ctrl-V}", 23 => "{ctrl-W}", 24 => "{ctrl-X}", 25 => "{ctrl-Y}", 26 => "{ctrl-Z}", 27 => "{esc}", 28 => "{up}", 29 => "{down}", 30 => "{left}", 31 => "{right}", 34 => "\\\"", 92 => "\\\\", 96 => "{ctrl-.}", 123 => "{ctrl-;}", 125 => "{clear}", 126 => "{bksp}", 127 => "{tab}", # the remaining control characters (with high bit set) # are special-cased in a8cat.c ); 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 <