blob: bd7fd5ab651846c4df8a160c0d4ab1474a3931ba (
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
|
#!/usr/bin/perl
# $Id$
#
# Perl script to convert a Syslinux-format screen to PC-ANSI
#
@ansicol = (0,4,2,6,1,5,3,7);
while ( read(STDIN, $ch, 1) > 0 ) {
if ( $ch eq "\x1A" ) { # <SUB> <Ctrl-Z> EOF
last;
} elsif ( $ch eq "\x0C" ) { # <FF> <Ctrl-L> Clear screen
print "\x1b[2J";
} elsif ( $ch eq "\x0F" ) { # <SI> <Ctrl-O> Attribute change
if ( read(STDIN, $attr, 2) == 2 ) {
$attr = hex $attr;
print "\x1b[0;";
if ( $attr & 0x80 ) {
print "5;";
$attr &= ~0x80;
}
if ( $attr & 0x08 ) {
print "1;";
$attr &= ~0x08;
}
printf "%d;%dm",
$ansicol[$attr >> 4] + 40, $ansicol[$attr & 7] + 30;
}
} else {
print $ch;
}
}
|