--- /dev/null
+#%ybinscript-1.1
+
+## THIS IS NOT A CONFFILE DO NOT EDIT !!!
+
+###############################################################################
+##
+## ofboot first stage autoconfiguring bootloader for yaboot and ybin
+## Copyright (C) 2000, 2001 Ethan Benson
+##
+## Forth code written by Chris Emerson
+##
+## Copyright (C) 2000, 2001 Chris Emerson
+##
+## Portions of Forth code also written by iNOUE Koich!
+##
+## Copyright (C) 2000, 2001 iNOUE Koich!
+##
+## This program is free software; you can redistribute it and/or
+## modify it under the terms of the GNU General Public License
+## as published by the Free Software Foundation; either version 2
+## of the License, or (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+##
+###############################################################################
+
+## THIS IS NOT A CONFFILE DO NOT EDIT !!!
+##
+## This script is not meant to be called directly, only by ybin.
+##
+## Usage: OS-count defaultos timeout fgc bgc osname oslabel oskey osdev osfile ...
+
+DEBUG=0
+PRG=ofboot
+
+## make sure we are called at least somewhat sanely.
+if [ $# = 0 ] ; then
+ echo 1>&2 "$PRG: Need arguments"
+ exit 1
+fi
+
+if [ $# != "$(($1 * 5 + 5))" ] ; then
+ echo 1>&2 "$PRG: Invalid argument count: $# should be $(($1 * 5 + 5))"
+ exit 1
+fi
+
+if [ "$1" -gt 8 ] ; then
+ echo 1>&2 "$PRG: Maximum number of OSes is currently 8"
+ exit 1
+fi
+
+## we need printf so \n works, but echo -e -n will sometimes do.
+if [ "$(printf printf_test 2>/dev/null)" = printf_test ] ; then
+ PRINTF=printf
+else
+ PRINTF="echo -e -n"
+fi
+
+## make sure echo is not lame if we must use it.
+if [ "$PRINTF" != printf ] ; then
+ if [ "$(echo -e -n echo_test)" != echo_test ] ; then
+ echo 1>&2 "$PRG: printf unavailable and echo is broken, sorry."
+ exit 1
+ fi
+fi
+
+## get first 5 args which are global and dispose of them.
+OSNUM="$1"
+DEFAULTOS="$2"
+TIMEOUT="$3"
+FGCOLOR="$4"
+BGCOLOR="$5"
+shift 5
+
+## is a boot menu actually needed?
+if [ "$OSNUM" = 1 ] ; then
+ MENU=0
+else
+ MENU=1
+fi
+
+## create the variables.
+##
+## OSNAME="$1"
+## OSLABEL="$2"
+## OSKEY="$3"
+## OSDEV="$4"
+## OSFILE="$5"
+
+COUNT=1
+while [ "$COUNT" -le "$OSNUM" ] ; do
+ case "$COUNT" in
+ 1)
+ OSNAME1="$1"
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file1: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ BTYA=": boot$1 \" Loading second stage bootstrap...\" .printf 100 ms load-base release-load-area \" ${4}${5}\" \$boot ;"
+ MENUYA="\" Press $3 for GNU/Linux${c-,}\"(0d 0a)\" .printf"
+ GETYA=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 2)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file2: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT2=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU2="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET2=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 3)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file3: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT3=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU3="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET3=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 4)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file4: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT4=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU4="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET4=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 5)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file5: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT5=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU5="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET5=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 6)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file6: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT6=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU6="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET6=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 7)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file7: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT7=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU7="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET7=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ 8)
+ [ "$DEBUG" = 1 ] && $PRINTF 1>&2 "$PRG: DEBUG: file8: $5\n"
+ [ "$COUNT" = "$OSNUM" ] && c="."
+ [ "$4" = "quit" ] && BOOT=quit || BOOT="load-base release-load-area \" ${4}${5}\" \$boot"
+ BT8=": boot$1 \" Booting $2...\" .printf 100 ms $BOOT ;"
+ MENU8="\" $3 for $2${c-,}\"(0d 0a)\" .printf"
+ GET8=" ascii $3 of \" $3 \"(0d 0a)\" .printf boot$1 endof"
+ shift 5
+ COUNT="$(($COUNT + 1))"
+ ;;
+ esac
+done
+
+## first OS is reserved.
+if [ "$OSNAME1" != yaboot ] ; then
+ echo 1>&2 "ofboot: first OS must be yaboot"
+ exit 1
+fi
+
+## concatenate the variables together.
+case "$OSNUM" in
+ 1)
+ BOOTVARS="${BTYA}"
+ MENUOPTS="${MENUYA}"
+ GETOS="${GETYA}"
+ ;;
+ 2)
+ BOOTVARS="${BTYA}\n${BT2}"
+ MENUOPTS="${MENUYA}\n${MENU2}"
+ GETOS="${GETYA}\n${GET2}"
+ ;;
+ 3)
+ BOOTVARS="${BTYA}\n${BT2}\n${BT3}"
+ MENUOPTS="${MENUYA}\n${MENU2}\n${MENU3}"
+ GETOS="${GETYA}\n${GET2}\n${GET3}"
+ ;;
+ 4)
+ BOOTVARS="${BTYA}\n${BT2}\n${BT3}\n${BT4}"
+ MENUOPTS="${MENUYA}\n${MENU2}\n${MENU3}\n${MENU4}"
+ GETOS="${GETYA}\n${GET2}\n${GET3}\n${GET4}"
+ ;;
+ 5)
+ BOOTVARS="${BTYA}\n${BT2}\n${BT3}\n${BT4}\n${BT5}"
+ MENUOPTS="${MENUYA}\n${MENU2}\n${MENU3}\n${MENU4}\n${MENU5}"
+ GETOS="${GETYA}\n${GET2}\n${GET3}\n${GET4}\n${GET5}"
+ ;;
+ 6)
+ BOOTVARS="${BTYA}\n${BT2}\n${BT3}\n${BT4}\n${BT5}\n${BT6}"
+ MENUOPTS="${MENUYA}\n${MENU2}\n${MENU3}\n${MENU4}\n${MENU5}\n${MENU6}"
+ GETOS="${GETYA}\n${GET2}\n${GET3}\n${GET4}\n${GET5}\n${GET6}"
+ ;;
+ 7)
+ BOOTVARS="${BTYA}\n${BT2}\n${BT3}\n${BT4}\n${BT5}\n${BT6}\n${BT7}"
+ MENUOPTS="${MENUYA}\n${MENU2}\n${MENU3}\n${MENU4}\n${MENU5}\n${MENU6}\n${MENU7}"
+ GETOS="${GETYA}\n${GET2}\n${GET3}\n${GET4}\n${GET5}\n${GET6}\n${GET7}"
+ ;;
+ 8)
+ BOOTVARS="${BTYA}\n${BT2}\n${BT3}\n${BT4}\n${BT5}\n${BT6}\n${BT7}\n${BT8}"
+ MENUOPTS="${MENUYA}\n${MENU2}\n${MENU3}\n${MENU4}\n${MENU5}\n${MENU6}\n${MENU7}\n${MENU8}"
+ GETOS="${GETYA}\n${GET2}\n${GET3}\n${GET4}\n${GET5}\n${GET6}\n${GET7}\n${GET8}"
+ ;;
+esac
+
+if [ -n "$YBINOFICON" -a -f "$YBINOFICON" -a -r "$YBINOFICON" ] ; then
+ OFBOOTICON="$(cat "$YBINOFICON")"
+else
+ OFBOOTICON="<OS-BADGE-ICONS>
+1010
+000000000000F8FEACF6000000000000
+0000000000F5FFFFFEFEF50000000000
+00000000002BFAFEFAFCF70000000000
+0000000000F65D5857812B0000000000
+0000000000F5350B2F88560000000000
+0000000000F6335708F8FE0000000000
+00000000005600F600F5FD8100000000
+00000000F9F8000000F5FAFFF8000000
+000000008100F5F50000F6FEFE000000
+000000F8F700F500F50000FCFFF70000
+00000088F70000F50000F5FCFF2B0000
+0000002F582A00F5000008ADE02C0000
+00090B0A35A62B0000002D3B350A0000
+000A0A0B0B3BF60000505E0B0A0B0A00
+002E350B0B2F87FAFCF45F0B2E090000
+00000007335FF82BF72B575907000000
+000000000000ACFFFF81000000000000
+000000000081FFFFFFFF810000000000
+0000000000FBFFFFFFFFAC0000000000
+000000000081DFDFDFFFFB0000000000
+000000000081DD5F83FFFD0000000000
+000000000081DDDF5EACFF0000000000
+0000000000FDF981F981FFFF00000000
+00000000FFACF9F9F981FFFFAC000000
+00000000FFF98181F9F981FFFF000000
+000000ACACF981F981F9F9FFFFAC0000
+000000FFACF9F981F9F981FFFFFB0000
+00000083DFFBF981F9F95EFFFFFC0000
+005F5F5FDDFFFBF9F9F983DDDD5F0000
+005F5F5F5FDD81F9F9E7DF5F5F5F5F00
+0083DD5F5F83FFFFFFFFDF5F835F0000
+000000FBDDDFACFBACFBDFDFFB000000
+000000000000FFFFFFFF000000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFF0000000000
+0000000000FFFFFFFFFFFFFF00000000
+00000000FFFFFFFFFFFFFFFFFF000000
+00000000FFFFFFFFFFFFFFFFFF000000
+000000FFFFFFFFFFFFFFFFFFFFFF0000
+000000FFFFFFFFFFFFFFFFFFFFFF0000
+000000FFFFFFFFFFFFFFFFFFFFFF0000
+00FFFFFFFFFFFFFFFFFFFFFFFFFF0000
+00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+00FFFFFFFFFFFFFFFFFFFFFFFFFF0000
+000000FFFFFFFFFFFFFFFFFFFF000000
+</OS-BADGE-ICONS>"
+fi
+
+## create tmp files safely.
+TMP="${TMPDIR:-/tmp}"
+TMPBOOT=`mktemp -q "$TMP/ofboot.XXXXXX"`
+ if [ $? != 0 ] ; then
+ echo 1>&2 "Cannot create temp file, aborting."
+ exit 1
+ fi
+
+## create the real script
+$PRINTF \
+"<CHRP-BOOT>
+<COMPATIBLE>
+MacRISC
+</COMPATIBLE>
+<DESCRIPTION>
+PowerPC GNU/Linux First Stage Bootstrap
+</DESCRIPTION>
+<BOOT-SCRIPT>
+: .printf fb8-write drop ;
+$BOOTVARS
+\" screen\" output
+variable interactive
+$MENU interactive !
+
+0 interactive @ = if
+ bootyaboot
+then
+
+dev screen
+\" \"(0000000000aa00aa0000aaaaaa0000aa00aaaa5500aaaaaa)\" drop 0 7 set-colors
+\" \"(5555555555ff55ff5555ffffff5555ff55ffffff55ffffff)\" drop 8 15 set-colors
+device-end
+$FGCOLOR to foreground-color
+$BGCOLOR to background-color
+\" \"(0C)\" .printf
+
+\" First Stage GNU/Linux Bootstrap\"(0d 0a)\" .printf
+\" \"(0d 0a)\" .printf
+$MENUOPTS
+\" \"(0d 0a)\" .printf
+\" Boot: \" .printf
+get-msecs d# $TIMEOUT 3E8 * +
+begin
+ key? if
+ key case
+$GETOS
+ endcase
+ then
+ dup get-msecs <
+until
+drop
+\" \"(0d 0a)\" .printf $DEFAULTOS
+</BOOT-SCRIPT>
+$OFBOOTICON
+</CHRP-BOOT>\n" > "$TMPBOOT"
+
+echo "$TMPBOOT"