source: bootcd/isolinux/syslinux-6.03/utils/syslinux2ansi

Last change on this file 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
12while ( 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.