Last change
on this file since e16e8f2 was
e16e8f2,
checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago
|
bootstuff
|
-
Property mode set to
100755
|
File size:
1.4 KB
|
Line | |
---|
1 | #!/usr/bin/perl |
---|
2 | # |
---|
3 | # Perl script to convert a Syslinux-format screen to PC-ANSI |
---|
4 | # to display in a color xterm or on the Linux console |
---|
5 | # |
---|
6 | |
---|
7 | @ansicol = (0,4,2,6,1,5,3,7); |
---|
8 | |
---|
9 | $getting_file = 0; |
---|
10 | $enable = 1; |
---|
11 | |
---|
12 | while ( read(STDIN, $ch, 1) > 0 ) { |
---|
13 | if ( $ch eq "\x1A" ) { # <SUB> <Ctrl-Z> EOF |
---|
14 | last; |
---|
15 | } elsif ( $ch eq "\x0C" ) { # <FF> <Ctrl-L> Clear screen |
---|
16 | print "\x1b[2J" if ( $enable && !$getting_file ); |
---|
17 | } elsif ( $ch eq "\x0F" ) { # <SI> <Ctrl-O> Attribute change |
---|
18 | if ( !$getting_file ) { |
---|
19 | if ( read(STDIN, $attr, 2) == 2 ) { |
---|
20 | $attr = hex $attr; |
---|
21 | if ( $enable ) { |
---|
22 | print "\x1b[0;"; |
---|
23 | if ( $attr & 0x80 ) { |
---|
24 | print "5;"; |
---|
25 | $attr &= ~0x80; |
---|
26 | } |
---|
27 | if ( $attr & 0x08 ) { |
---|
28 | print "1;"; |
---|
29 | $attr &= ~0x08; |
---|
30 | } |
---|
31 | printf "%d;%dm", |
---|
32 | $ansicol[$attr >> 4] + 40, $ansicol[$attr & 7] + 30; |
---|
33 | } |
---|
34 | } |
---|
35 | } |
---|
36 | } elsif ( $ch eq "\x18" ) { # <CAN> <Ctrl-X> Display image |
---|
37 | # We can't display an image; pretend to be a text screen |
---|
38 | # Ignore all input until end of line |
---|
39 | $getting_file = 1; |
---|
40 | } elsif ( (ord($ch) & ~07) == 0x10 ) { # Mode controls |
---|
41 | $enable = (ord($ch) & 0x01); # Emulate the text screen |
---|
42 | } elsif ( $ch eq "\x0D" ) { # <CR> <Ctrl-M> Carriage return |
---|
43 | # Ignore |
---|
44 | } elsif ( $ch eq "\x0A" ) { # <LF> <Ctrl-J> Line feed |
---|
45 | if ( $getting_file ) { |
---|
46 | $getting_file = 0; |
---|
47 | } else { |
---|
48 | print $ch if ( $enable ); |
---|
49 | } |
---|
50 | } else { |
---|
51 | print $ch if ( $enable && !$getting_file ); |
---|
52 | } |
---|
53 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.