--- toast-linux	2005/02/06 04:14:39	1.134
+++ toast-linux	2005/02/06 08:09:19	1.135
@@ -1636,12 +1636,14 @@
   s/!PREFIX!/$prefix/g;
 }
 
-# looks like SYSLINUX doesn't support tabs....
-# TODO: banish non-printing characters from configure script
-#for($text{"floppy/logo"})
-#{
-#  s!^(( {8})+)!"\t" x (length($1)/8)!mge;
-#}
+for(qw(floppy/logo floppy/help cd/isolinux/logo cd/isolinux/help))
+{
+  for($text{$_})
+  {
+    s/\^([A-Z])/chr(ord($1)-64)/ge;
+    s/\%/\xb1/g;
+  }
+}
 
 my($oldcfg);
 for($text{"floppy/syslinux.cfg"})
@@ -1703,7 +1705,7 @@
 
 WGET = wget
 
-FROMCONF = dev toast-linux.stub mkhd bochs-config toast.vmx sbin/setup
+FROMCONF = dev toast-linux.stub mkhd bochs-config toast.vmx sbin/setup logotoppm
 FROMCONF2 = smartcat linux-config-smallk linux-config-largek busybox-config
 
 PKGS = TOOLCHAIN LINUX BUSYBOX E2FSPROGS NTFSPROGS PARTED DEVMAP LVM2 GENEXT2FS MTOOLS SYSLINUX CDRTOOLS
@@ -1788,6 +1790,7 @@
 MCOPY = $(MTOOLS_DIR)/mcopy
 MDIR = $(MTOOLS_DIR)/mdir
 SYSLINUX = $(SYSLINUX_DIR)/mtools/syslinux
+ISOLINUX = $(SYSLINUX_DIR)/isolinux.bin
 MKISOFS = $(CDRTOOLS_DIR)/mkisofs/mkisofs
 
 INSTALL_DIR = $(DESTDIR)!PREFIX!
@@ -1955,10 +1958,10 @@
   cd $(MTOOLS_DIR) && ./configure
   $(MAKE) -C $(MTOOLS_DIR)
 
-$(SYSLINUX): $(SYSLINUX_ARCHIVE) smartcat
+$(SYSLINUX) $(ISOLINUX): $(SYSLINUX_ARCHIVE) smartcat
   rm -fr $(SYSLINUX_DIR)
   ./smartcat $< | tar x
-  touch $@
+  touch $(SYSLINUX) $(ISOLINUX)
 
 $(MKISOFS): $(CDRTOOLS_ARCHIVE) smartcat
   rm -fr $(CDRTOOLS_DIR)
@@ -1976,9 +1979,10 @@
   cp $(SMALLK) $@/linux
   cp rootfs.gz $@/initrd
 
-cd: $(LARGEK) $(ISOLINUX) rootfs.gz
+cd: $(LARGEK) $(ISOLINUX) rootfs.gz logo.lss
   rm -fr $@
   !CONFIGURE! $@
+  cp logo.lss $@/isolinux/logo.lss
   cp $(LARGEK) $@/isolinux/linux
   cp $(ISOLINUX) $@/isolinux/isolinux.bin
   cp rootfs.gz $@/isolinux/initrd
@@ -1996,6 +2000,12 @@
 %.iso: % $(MKISOFS)
   $(MKISOFS) -o $@ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table $<
 
+palette.ppm: logotoppm
+  ./logotoppm --palette > $@
+
+logo.lss: floppy logotoppm palette.ppm $(SYSLINUX)
+  ./logotoppm floppy/logo | pnmcrop | pnmscale 1.25 | pnmrotate 4 | pnmpad -width 640 -height 480 | pnmremap -fs -mapfile=palette.ppm | $(SYSLINUX_DIR)/ppmtolss16 \#000000=0 \#aaaaaa=7 \#ffffff=15 > $@
+
 toast-linux: toast-linux.stub floppy.iso.gz
   rm -f $@
   cat $^ > $@
@@ -2197,6 +2207,111 @@
   esac
 done
 
+--- FILE logotoppm ---
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+my(@palette) =
+(
+  "\x00\x00\x00",
+  "\x00\x00\xaa",
+  "\x00\xaa\x00",
+  "\x00\xaa\xaa",
+  "\xaa\x00\x00",
+  "\xaa\x00\xaa",
+  "\xaa\x55\x00",
+  "\xaa\xaa\xaa",
+  "\x55\x55\x55",
+  "\x55\x55\xff",
+  "\x55\xff\x55",
+  "\x55\xff\xff",
+  "\xff\x55\x55",
+  "\xff\x55\xff",
+  "\xff\xff\x55",
+  "\xff\xff\xff",
+);
+
+if(@ARGV && $ARGV[0] eq "--palette")
+{
+  print("P6\n16 1\n255\n", @palette);
+  exit(0);
+}
+
+my($small) = "ailnostux";
+my($large) = q(
+
+           XX     XXX                              X
+           XX      XX                             XX
+                   XX                             XX
+ XXXX     XXX      XX   XX XXX   XXXXX   XXXXX  XXXXXX  XX  XX  XX    XX
+    XX     XX      XX    XX  XX XX   XX XX   XX   XX    XX  XX   XX  XX
+ XXXXX     XX      XX    XX  XX XX   XX  XX       XX    XX  XX    XXXX
+XX  XX     XX      XX    XX  XX XX   XX   XXX     XX    XX  XX     XX
+XX  XX     XX      XX    XX  XX XX   XX     XX    XX    XX  XX    XXXX
+XX  XX     XX      XX    XX  XX XX   XX XX   XX   XX X  XX  XX   XX  XX
+ XXX XX   XXXX    XXXX   XX  XX  XXXXX   XXXXX     XX    XXX XX XX    XX
+
+);
+my(@font) = split(/\n/, $large);
+push(@font, "") while scalar(@font) < 16;
+$small .= " ";
+for(@font)
+{
+  $_ .= " " while length($_) < length($small) * 8;
+}
+$small .= "\xb1";
+my($grid) = "X " x 4;
+for(@font)
+{
+  $_ .= $grid;
+  $grid =~ s/(.)(.)/$2$1/g;
+}
+
+my($line) = 0;
+$/ = undef;
+my($input) = <>;
+$input =~ s/.*\x0c//;
+$input .= "\n" x 26;
+
+print("P6\n720 400\n255\n");
+my(@obuf) = map("", 1..16);
+my($r, $fg, $bg) = (0, 7, 0);
+while($input =~ /(\x0f..|.)/sg)
+{
+  last if $r >= 25;
+
+  my($char) = $1;
+  if($char =~ /\x0f(.)(.)/)
+  {
+    $bg = hex($1);
+    $fg = hex($2);
+    next;
+  }
+
+  my($idx) = index($small, $char);
+
+  if($idx == -1 || length($obuf[0]) == 720*3)
+  {
+    for(@obuf)
+    {
+      $_ .= "\x00" while length($_) < 720*3;
+    }
+    print(@obuf);
+    @obuf = map("", 1..16);
+    ++$r;
+    next if $idx == -1;
+  }
+
+  for(0..15)
+  {
+    my($pixels) = substr($font[$_], 8 * $idx, 8) . " ";
+    $pixels =~ s/(.)/$palette[$1 eq " " ? $bg : $fg]/ge;
+    $obuf[$_] .= $pixels;
+  }
+}
+
 --- FILE mkhd ---
 #!/usr/bin/perl
 
@@ -2299,35 +2414,37 @@
 append initrd=initrd root=/dev/ram0 rw
 
 --- FILE floppy/logo ---
-
+^L
 
-                          6e        07            6e        07
-                        6e  北北北北            北北北北  07
-                      6e  北北北北北北北北北北北北北北北北  07
-                      6e  北北北北北北北北北北北北北北北北  07
-                      6e  北北北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                        6e  北北北北北北北北北北北北北北  07
-                          6e                            07
+                          ^O6e        ^O07            ^O6e        ^O07
+                        ^O6e  %%%%%%%%            %%%%%%%%  ^O07
+                      ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                      ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                      ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                        ^O6e  %%%%%%%%%%%%%%%%%%%%%%%%%%%%  ^O07
+                          ^O6e                            ^O07
 
+
                                   toast linux
 
 
-Press 0fF107 within 20 seconds, or risk losing the contents of all hard disks!
+Press ^O0fF1^O07 within 20 seconds, or risk losing the contents of all hard disks!
 
 --- FILE cd/isolinux/logo ---
-Fancy toast linux logo will go here.
+^Xlogo.lss
+Press ^O0fF1^O07 within 20 seconds, or risk losing the contents of all hard disks!
 
 --- FILE floppy/help ---
-By default, the network will be configured automatically using DHCP.
+^LBy default, the network will be configured automatically using DHCP.
 All available network interfaces will be tried sequentially, starting
 with eth0; the first one that responds to DHCP will be used.  You can
 override this behavior with the IF parameter: