add hercules support.

This commit is contained in:
okuji 2001-02-27 12:59:00 +00:00
parent 3a598264dc
commit e85272f436
17 changed files with 530 additions and 132 deletions

View file

@ -35,3 +35,5 @@ stage2/fsys_reiserfs.c and stage2/md5.c.
Christoph Plattner added support for Net Boot Image Proposal.
Stefan Ondrejicka added the commands "partnew" and "parttype".
Frank Mehnert added support for hercules console.

View file

@ -1,3 +1,48 @@
2001-02-27 OKUJI Yoshinori <okuji@gnu.org>
Added hercules support based on a patch by Frank Mehnert
<fm3@os.inf.tu-dresden.de>. I translated his assembly code into
C, and separated hercules from the normal console.
* configure.in (--disable-hercules): New option.
* grub/asmstub.c: Include <hercules.h>.
(set_attrib): Renamed to ...
(console_set_attrib): ... this.
(herc_cls): New function.
(herc_getxy): Likewise.
(herc_gotoxy): Likewise.
(herc_putchar): Likewise.
(herc_set_attrib): Likewise.
* stage2/Makefile.am (noinst_HEADERS): Added hercules.h.
(libgrub_a_CFLAGS): Added -DSUPPORT_HERCULES=1.
(HERCULES_FLAGS): New variable.
(STAGE2_COMPILE): Added $(HERCULES_FLAGS).
(pre_stage2_exec_SOURCES): Added hercules.c.
* stage2/asm.S [!STAGE1_5] (set_attrib) Renamed to ...
[!STAGE1_5] (console_set_attrib): ... this.
* stage2/builtins.c [SUPPORT_HERCULES] (terminal_func): Added
hercules support.
(builtin_table) [SUPPORT_HERCULES]: Added a pointer to
BUILTIN_TERMINAL.
* stage2/char_io.c [SUPPORT_HERCULES]: Include <hercules.h>.
[!STAGE1_5] (get_cmdline) [SUPPORT_HERCULES]: Added hercules
support.
[!STAGE1_5] (getkey) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (checkkey) [SUPPORT_HERCULES]: Likewise.
(grub_putchar) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (gotoxy) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (getxy) [SUPPORT_HERCULES]: Likewise.
[!STAGE1_5] (cls) [SUPPORT_HERCULES]: Likewise.
(set_attrib): New function.
* stage2/shared.h (console_set_attrib): Declared.
(TERMINAL_HERCULES): New macro.
* stage2/stage2.c (run_menu) [SUPPORT_HERCULES]: Added hercules
support.
* stage2/hercules.h: New file.
* stage2/hercules.c: Likewise.
2001-02-17 OKUJI Yoshinori <okuji@gnu.org>
From "Treutwein; Bernhard"

1
NEWS
View file

@ -25,6 +25,7 @@ New in 1.0 - XXXX-XX-XX:
specify the option `--enable-example-kernel' to the configure script.
* New command, "ifconfig".
* Linux software RAID support is added (only for RAID-1).
* Hercules support is added.
New in 0.5.96 - 2000-10-04:
* New commands, "reboot" and "halt".

188
configure vendored
View file

@ -116,6 +116,8 @@ ac_help="$ac_help
--enable-cs-scan=LIST probe for CS89x0 base address using LIST"
ac_help="$ac_help
--enable-diskless enable diskless support"
ac_help="$ac_help
--disable-hercules disable hercules terminal support"
ac_help="$ac_help
--disable-serial diable serial terminal support"
ac_help="$ac_help
@ -668,7 +670,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:672: checking for a BSD compatible install" >&5
echo "configure:674: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -721,7 +723,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
echo "configure:725: checking whether build environment is sane" >&5
echo "configure:727: checking whether build environment is sane" >&5
# Just in case
sleep 1
echo timestamp > conftestfile
@ -793,7 +795,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:797: checking for $ac_word" >&5
echo "configure:799: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -823,7 +825,7 @@ test -n "$AWK" && break
done
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
echo "configure:827: checking whether ${MAKE-make} sets \${MAKE}" >&5
echo "configure:829: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -949,7 +951,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
echo "configure:953: checking host system type" >&5
echo "configure:955: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@ -983,7 +985,7 @@ esac
#
echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
echo "configure:987: checking whether to enable maintainer-specific portions of Makefiles" >&5
echo "configure:989: checking whether to enable maintainer-specific portions of Makefiles" >&5
# Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
if test "${enable_maintainer_mode+set}" = set; then
enableval="$enable_maintainer_mode"
@ -1009,7 +1011,7 @@ if test "x$enable_maintainer_mode" = xyes; then
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1013: checking for $ac_word" >&5
echo "configure:1015: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1056,7 +1058,7 @@ fi
#
echo $ac_n "checking build system type""... $ac_c" 1>&6
echo "configure:1060: checking build system type" >&5
echo "configure:1062: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@ -1082,7 +1084,7 @@ fi
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1086: checking for $ac_word" >&5
echo "configure:1088: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1114,7 +1116,7 @@ fi
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1118: checking for $ac_word" >&5
echo "configure:1120: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1144,7 +1146,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1148: checking for $ac_word" >&5
echo "configure:1150: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1195,7 +1197,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1199: checking for $ac_word" >&5
echo "configure:1201: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1227,7 +1229,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
echo "configure:1231: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
echo "configure:1233: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@ -1238,12 +1240,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
#line 1242 "configure"
#line 1244 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
if { (eval echo configure:1247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@ -1269,12 +1271,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
echo "configure:1273: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "configure:1275: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
echo "configure:1278: checking whether we are using GNU C" >&5
echo "configure:1280: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1283,7 +1285,7 @@ else
yes;
#endif
EOF
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1289: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@ -1302,7 +1304,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
echo "configure:1306: checking whether ${CC-cc} accepts -g" >&5
echo "configure:1308: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1335,7 +1337,7 @@ fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
echo "configure:1339: checking how to run the C preprocessor" >&5
echo "configure:1341: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@ -1350,13 +1352,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
#line 1354 "configure"
#line 1356 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@ -1367,13 +1369,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
#line 1371 "configure"
#line 1373 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1377: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@ -1384,13 +1386,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
#line 1388 "configure"
#line 1390 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1394: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@ -1423,7 +1425,7 @@ echo "$ac_t""$CPP" 1>&6
depcc="$CC"
depcpp="$CPP"
echo $ac_n "checking dependency style of $depcc""... $ac_c" 1>&6
echo "configure:1427: checking dependency style of $depcc" >&5
echo "configure:1429: checking dependency style of $depcc" >&5
if eval "test \"`echo '$''{'am_cv_CC_dependencies_compiler_type'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1479,7 +1481,7 @@ if test "x$with_binutils" != x; then
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1483: checking for $ac_word" >&5
echo "configure:1485: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1516,7 +1518,7 @@ else
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1520: checking for $ac_word" >&5
echo "configure:1522: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1556,7 +1558,7 @@ if test "x$ac_cv_prog_gcc" = xyes; then
STAGE1_CFLAGS="-O2"
GRUB_CFLAGS="-O2"
echo $ac_n "checking whether optimization for size works""... $ac_c" 1>&6
echo "configure:1560: checking whether optimization for size works" >&5
echo "configure:1562: checking whether optimization for size works" >&5
if eval "test \"`echo '$''{'size_flag'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1564,14 +1566,14 @@ else
saved_CFLAGS=$CFLAGS
CFLAGS="-Os -g"
cat > conftest.$ac_ext <<EOF
#line 1568 "configure"
#line 1570 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if { (eval echo configure:1575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
size_flag=yes
else
@ -1603,7 +1605,7 @@ CPPFLAGS="$CPPFLAGS -Wall -Wmissing-prototypes -Wunused -Wshadow"
CPPFLAGS="$CPPFLAGS -Wpointer-arith"
echo $ac_n "checking whether -Wundef works""... $ac_c" 1>&6
echo "configure:1607: checking whether -Wundef works" >&5
echo "configure:1609: checking whether -Wundef works" >&5
if eval "test \"`echo '$''{'undef_flag'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1611,14 +1613,14 @@ else
saved_CPPFLAGS=$CPPFLAGS
CPPFLAGS="-Wundef"
cat > conftest.$ac_ext <<EOF
#line 1615 "configure"
#line 1617 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if { (eval echo configure:1622: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1624: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
undef_flag=yes
else
@ -1645,7 +1647,7 @@ if test "x$with_binutils" != x; then
# Extract the first word of "objcopy", so it can be a program name with args.
set dummy objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1649: checking for $ac_word" >&5
echo "configure:1651: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1681,7 +1683,7 @@ else
# Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args.
set dummy ${ac_tool_prefix}objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:1685: checking for $ac_word" >&5
echo "configure:1687: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_OBJCOPY'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1715,7 +1717,7 @@ fi
# Defined in acinclude.m4.
echo $ac_n "checking if C symbols get an underscore after compilation""... $ac_c" 1>&6
echo "configure:1719: checking if C symbols get an underscore after compilation" >&5
echo "configure:1721: checking if C symbols get an underscore after compilation" >&5
if eval "test \"`echo '$''{'grub_cv_asm_uscore'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1728,7 +1730,7 @@ func (int *list)
}
EOF
if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c'; { (eval echo configure:1732: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.s; then
if { ac_try='${CC-cc} ${CFLAGS} -S conftest.c'; { (eval echo configure:1734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.s; then
true
else
{ echo "configure: error: ${CC-cc} failed to produce assembly code" 1>&2; exit 1; }
@ -1754,7 +1756,7 @@ fi
echo "$ac_t""$grub_cv_asm_uscore" 1>&6
echo $ac_n "checking whether ${OBJCOPY} works for absolute addresses""... $ac_c" 1>&6
echo "configure:1758: checking whether ${OBJCOPY} works for absolute addresses" >&5
echo "configure:1760: checking whether ${OBJCOPY} works for absolute addresses" >&5
if eval "test \"`echo '$''{'grub_cv_prog_objcopy_absolute'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1766,21 +1768,21 @@ cmain (void)
}
EOF
if { (eval echo configure:1770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then :
if { (eval echo configure:1772: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then :
else
{ echo "configure: error: ${CC-cc} cannot compile C source code" 1>&2; exit 1; }
fi
grub_cv_prog_objcopy_absolute=yes
for link_addr in 2000 8000 7C00; do
if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec'; { (eval echo configure:1776: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
if { ac_try='${CC-cc} ${CFLAGS} -nostdlib -Wl,-N -Wl,-Ttext -Wl,$link_addr conftest.o -o conftest.exec'; { (eval echo configure:1778: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
else
{ echo "configure: error: ${CC-cc} cannot link at address $link_addr" 1>&2; exit 1; }
fi
if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'; { (eval echo configure:1780: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
if { ac_try='${OBJCOPY-objcopy} -O binary conftest.exec conftest'; { (eval echo configure:1782: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then :
else
{ echo "configure: error: ${OBJCOPY-objcopy} cannot create binary files" 1>&2; exit 1; }
fi
if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'; { (eval echo configure:1784: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
if test ! -f conftest.old || { ac_try='cmp -s conftest.old conftest'; { (eval echo configure:1786: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
mv -f conftest conftest.old
else
grub_cv_prog_objcopy_absolute=no
@ -1797,7 +1799,7 @@ fi
echo $ac_n "checking whether addr32 must be in the same line as the instruction""... $ac_c" 1>&6
echo "configure:1801: checking whether addr32 must be in the same line as the instruction" >&5
echo "configure:1803: checking whether addr32 must be in the same line as the instruction" >&5
if eval "test \"`echo '$''{'grub_cv_asm_prefix_requirement'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1806,7 +1808,7 @@ else
l1: addr32 movb %al, l1
EOF
if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1810: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
grub_cv_asm_prefix_requirement=yes
else
grub_cv_asm_prefix_requirement=no
@ -1838,7 +1840,7 @@ echo "$ac_t""$grub_cv_asm_prefix_requirement" 1>&6
echo $ac_n "checking for .code16 addr32 assembler support""... $ac_c" 1>&6
echo "configure:1842: checking for .code16 addr32 assembler support" >&5
echo "configure:1844: checking for .code16 addr32 assembler support" >&5
if eval "test \"`echo '$''{'grub_cv_asm_addr32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1853,7 +1855,7 @@ else
sed -e s/@ADDR32@/addr32\;/ < conftest.s.in > conftest.s
fi
if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1859: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
grub_cv_asm_addr32=yes
else
grub_cv_asm_addr32=no
@ -1870,7 +1872,7 @@ fi
echo $ac_n "checking whether an absolute indirect call/jump must not be prefixed with an asterisk""... $ac_c" 1>&6
echo "configure:1874: checking whether an absolute indirect call/jump must not be prefixed with an asterisk" >&5
echo "configure:1876: checking whether an absolute indirect call/jump must not be prefixed with an asterisk" >&5
if eval "test \"`echo '$''{'grub_cv_asm_absolute_without_asterisk'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@ -1881,7 +1883,7 @@ offset:
.word 0
EOF
if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1885: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
if { ac_try='${CC-cc} ${CFLAGS} -c conftest.s'; { (eval echo configure:1887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest.o; then
grub_cv_asm_absolute_without_asterisk=no
else
grub_cv_asm_absolute_without_asterisk=yes
@ -1902,19 +1904,19 @@ echo "$ac_t""$grub_cv_asm_absolute_without_asterisk" 1>&6
echo $ac_n "checking if start is defined by the compiler""... $ac_c" 1>&6
echo "configure:1906: checking if start is defined by the compiler" >&5
echo "configure:1908: checking if start is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_start_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1911 "configure"
#line 1913 "configure"
#include "confdefs.h"
int main() {
asm ("incl start")
; return 0; }
EOF
if { (eval echo configure:1918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1920: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_start_symbol=yes
else
@ -1938,19 +1940,19 @@ echo "$ac_t""$grub_cv_check_start_symbol" 1>&6
echo $ac_n "checking if _start is defined by the compiler""... $ac_c" 1>&6
echo "configure:1942: checking if _start is defined by the compiler" >&5
echo "configure:1944: checking if _start is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_uscore_start_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1947 "configure"
#line 1949 "configure"
#include "confdefs.h"
int main() {
asm ("incl _start")
; return 0; }
EOF
if { (eval echo configure:1954: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_uscore_start_symbol=yes
else
@ -1979,19 +1981,19 @@ fi
echo $ac_n "checking if __bss_start is defined by the compiler""... $ac_c" 1>&6
echo "configure:1983: checking if __bss_start is defined by the compiler" >&5
echo "configure:1985: checking if __bss_start is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_uscore_uscore_bss_start_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1988 "configure"
#line 1990 "configure"
#include "confdefs.h"
int main() {
asm ("incl __bss_start")
; return 0; }
EOF
if { (eval echo configure:1995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:1997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_uscore_uscore_bss_start_symbol=yes
else
@ -2015,19 +2017,19 @@ echo "$ac_t""$grub_cv_check_uscore_uscore_bss_start_symbol" 1>&6
echo $ac_n "checking if _edata is defined by the compiler""... $ac_c" 1>&6
echo "configure:2019: checking if _edata is defined by the compiler" >&5
echo "configure:2021: checking if _edata is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_uscore_edata_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2024 "configure"
#line 2026 "configure"
#include "confdefs.h"
int main() {
asm ("incl _edata")
; return 0; }
EOF
if { (eval echo configure:2031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_uscore_edata_symbol=yes
else
@ -2051,19 +2053,19 @@ echo "$ac_t""$grub_cv_check_uscore_edata_symbol" 1>&6
echo $ac_n "checking if edata is defined by the compiler""... $ac_c" 1>&6
echo "configure:2055: checking if edata is defined by the compiler" >&5
echo "configure:2057: checking if edata is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_edata_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2060 "configure"
#line 2062 "configure"
#include "confdefs.h"
int main() {
asm ("incl edata")
; return 0; }
EOF
if { (eval echo configure:2067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_edata_symbol=yes
else
@ -2093,19 +2095,19 @@ fi
echo $ac_n "checking if end is defined by the compiler""... $ac_c" 1>&6
echo "configure:2097: checking if end is defined by the compiler" >&5
echo "configure:2099: checking if end is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_end_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2102 "configure"
#line 2104 "configure"
#include "confdefs.h"
int main() {
asm ("incl end")
; return 0; }
EOF
if { (eval echo configure:2109: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_end_symbol=yes
else
@ -2129,19 +2131,19 @@ echo "$ac_t""$grub_cv_check_end_symbol" 1>&6
echo $ac_n "checking if _end is defined by the compiler""... $ac_c" 1>&6
echo "configure:2133: checking if _end is defined by the compiler" >&5
echo "configure:2135: checking if _end is defined by the compiler" >&5
if eval "test \"`echo '$''{'grub_cv_check_uscore_end_symbol'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2138 "configure"
#line 2140 "configure"
#include "confdefs.h"
int main() {
asm ("incl _end")
; return 0; }
EOF
if { (eval echo configure:2145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
grub_cv_check_uscore_end_symbol=yes
else
@ -2179,7 +2181,7 @@ fi
# Get the filename or the whole disk and open it.
# Known to work on NetBSD.
echo $ac_n "checking for opendisk in -lutil""... $ac_c" 1>&6
echo "configure:2183: checking for opendisk in -lutil" >&5
echo "configure:2185: checking for opendisk in -lutil" >&5
ac_lib_var=`echo util'_'opendisk | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -2187,7 +2189,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lutil $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2191 "configure"
#line 2193 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -2198,7 +2200,7 @@ int main() {
opendisk()
; return 0; }
EOF
if { (eval echo configure:2202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -2226,7 +2228,7 @@ fi
# Unless the user specify --without-curses, check for curses.
if test "x$with_curses" != "xno"; then
echo $ac_n "checking for wgetch in -lncurses""... $ac_c" 1>&6
echo "configure:2230: checking for wgetch in -lncurses" >&5
echo "configure:2232: checking for wgetch in -lncurses" >&5
ac_lib_var=`echo ncurses'_'wgetch | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -2234,7 +2236,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lncurses $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2238 "configure"
#line 2240 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -2245,7 +2247,7 @@ int main() {
wgetch()
; return 0; }
EOF
if { (eval echo configure:2249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -2268,7 +2270,7 @@ EOF
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for wgetch in -lcurses""... $ac_c" 1>&6
echo "configure:2272: checking for wgetch in -lcurses" >&5
echo "configure:2274: checking for wgetch in -lcurses" >&5
ac_lib_var=`echo curses'_'wgetch | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@ -2276,7 +2278,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcurses $LIBS"
cat > conftest.$ac_ext <<EOF
#line 2280 "configure"
#line 2282 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@ -2287,7 +2289,7 @@ int main() {
wgetch()
; return 0; }
EOF
if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
if { (eval echo configure:2293: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@ -2322,17 +2324,17 @@ for ac_hdr in string.h strings.h ncurses/curses.h ncurses.h curses.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:2326: checking for $ac_hdr" >&5
echo "configure:2328: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 2331 "configure"
#line 2333 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:2336: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:2338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@ -2856,6 +2858,22 @@ else
DISKLESS_SUPPORT_FALSE=
fi
# Check whether --enable-hercules or --disable-hercules was given.
if test "${enable_hercules+set}" = set; then
enableval="$enable_hercules"
:
fi
if test "x$enable_hercules" != xno; then
HERCULES_SUPPORT_TRUE=
HERCULES_SUPPORT_FALSE='#'
else
HERCULES_SUPPORT_TRUE='#'
HERCULES_SUPPORT_FALSE=
fi
# Check whether --enable-serial or --disable-serial was given.
if test "${enable_serial+set}" = set; then
enableval="$enable_serial"
@ -2938,7 +2956,7 @@ main (void)
}
EOF
if { ac_try='${CC-cc} ${CFLAGS} conftest.c -o conftest'; { (eval echo configure:2942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest; then
if { ac_try='${CC-cc} ${CFLAGS} conftest.c -o conftest'; { (eval echo configure:2960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } && test -s conftest; then
grub_tmp_value=`./conftest < "$enable_preset_menu"`
else
{ echo "configure: error: ${CC-cc} failed to produce an executable file" 1>&2; exit 1; }
@ -3158,6 +3176,8 @@ s%@NETBOOT_SUPPORT_TRUE@%$NETBOOT_SUPPORT_TRUE%g
s%@NETBOOT_SUPPORT_FALSE@%$NETBOOT_SUPPORT_FALSE%g
s%@DISKLESS_SUPPORT_TRUE@%$DISKLESS_SUPPORT_TRUE%g
s%@DISKLESS_SUPPORT_FALSE@%$DISKLESS_SUPPORT_FALSE%g
s%@HERCULES_SUPPORT_TRUE@%$HERCULES_SUPPORT_TRUE%g
s%@HERCULES_SUPPORT_FALSE@%$HERCULES_SUPPORT_FALSE%g
s%@SERIAL_SUPPORT_TRUE@%$SERIAL_SUPPORT_TRUE%g
s%@SERIAL_SUPPORT_FALSE@%$SERIAL_SUPPORT_FALSE%g
s%@SERIAL_SPEED_SIMULATION_TRUE@%$SERIAL_SPEED_SIMULATION_TRUE%g

View file

@ -1,5 +1,5 @@
dnl Configure script for GRUB.
dnl Copyright 1999,2000 Free Software Foundation, Inc.
dnl Copyright 1999,2000,2001 Free Software Foundation, Inc.
dnl Permission to use, copy, modify and distribute this software and its
dnl documentation is hereby granted, provided that both the copyright
@ -498,6 +498,11 @@ AC_ARG_ENABLE(diskless,
[ --enable-diskless enable diskless support])
AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes)
dnl Hercules terminal
AC_ARG_ENABLE(hercules,
[ --disable-hercules disable hercules terminal support])
AM_CONDITIONAL(HERCULES_SUPPORT, test "x$enable_hercules" != xno)
dnl Serial terminal
AC_ARG_ENABLE(serial,
[ --disable-serial diable serial terminal support])

View file

@ -1,3 +1,3 @@
@set UPDATED 11 February 2001
@set UPDATED 17 February 2001
@set EDITION 0.5.97
@set VERSION 0.5.97

View file

@ -1,3 +1,3 @@
@set UPDATED 11 February 2001
@set UPDATED 17 February 2001
@set EDITION 0.5.97
@set VERSION 0.5.97

View file

@ -60,6 +60,7 @@ int grub_stage2 (void);
#include <shared.h>
#include <device.h>
#include <serial.h>
#include <hercules.h>
/* Simulated memory sizes. */
#define EXTENDED_MEMSIZE (3 * 1024 * 1024) /* 3MB */
@ -642,7 +643,7 @@ console_checkkey (void)
/* sets text mode character attribute at the cursor position */
void
set_attrib (int attr)
console_set_attrib (int attr)
{
#ifdef HAVE_LIBCURSES
if (use_curses)
@ -1134,3 +1135,34 @@ set_serial_device (const char *device)
serial_device = strdup (device);
}
/* There is no difference between console and hercules in the grub shell. */
void
herc_cls (void)
{
console_cls ();
}
int
herc_getxy (void)
{
return console_getxy ();
}
void
herc_gotoxy (int x, int y)
{
console_gotoxy (x, y);
}
void
herc_putchar (int c)
{
console_putchar (c);
}
void
herc_set_attrib (int attr)
{
console_set_attrib (attr);
}

View file

@ -4,9 +4,9 @@ noinst_SCRIPTS = $(TESTS)
# For dist target.
noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \
fat.h filesys.h freebsd.h fs.h i386-elf.h imgact_aout.h \
mb_header.h mb_info.h md5.h pc_slice.h serial.h shared.h \
smp-imps.h nbi.h
fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \
imgact_aout.h mb_header.h mb_info.h md5.h pc_slice.h serial.h \
shared.h smp-imps.h nbi.h
EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
# For <stage1.h>.
@ -19,8 +19,8 @@ libgrub_a_SOURCES = boot.c builtins.c common.c char_io.c cmdline.c \
fsys_minix.c fsys_reiserfs.c stage2.c md5.c
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
-DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
-DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DSUPPORT_SERIAL \
-fwritable-strings
-DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DSUPPORT_SERIAL=1 \
-DSUPPORT_HERCULES=1 -fwritable-strings
# Stage 2 and Stage 1.5's.
pkgdatadir = $(datadir)/$(PACKAGE)/$(host_cpu)-$(host_vendor)
@ -62,8 +62,14 @@ else
SERIAL_FLAGS =
endif
if HERCULES_SUPPORT
HERCULES_FLAGS = -DSUPPORT_HERCULES=1
else
HERCULES_FLAGS =
endif
STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
$(NETBOOT_FLAGS) $(SERIAL_FLAGS)
$(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS)
STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
@ -71,8 +77,8 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
# For stage2 target.
pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \
fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c serial.c \
smp-imps.c stage2.c md5.c
fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c hercules.c \
serial.c smp-imps.c stage2.c md5.c
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)

View file

@ -92,9 +92,9 @@ noinst_SCRIPTS = $(TESTS)
# For dist target.
noinst_HEADERS = apic.h defs.h dir.h disk_inode.h disk_inode_ffs.h \
fat.h filesys.h freebsd.h fs.h i386-elf.h imgact_aout.h \
mb_header.h mb_info.h md5.h pc_slice.h serial.h shared.h \
smp-imps.h nbi.h
fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \
imgact_aout.h mb_header.h mb_info.h md5.h pc_slice.h serial.h \
shared.h smp-imps.h nbi.h
EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
@ -109,8 +109,8 @@ libgrub_a_SOURCES = boot.c builtins.c common.c char_io.c cmdline.c \
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
-DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
-DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DSUPPORT_SERIAL \
-fwritable-strings
-DFSYS_MINIX=1 -DFSYS_REISERFS=1 -DSUPPORT_SERIAL=1 \
-DSUPPORT_HERCULES=1 -fwritable-strings
# Stage 2 and Stage 1.5's.
@ -140,9 +140,11 @@ PXELOADER_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,7C00
@NETBOOT_SUPPORT_FALSE@NETBOOT_FLAGS =
@SERIAL_SUPPORT_TRUE@SERIAL_FLAGS = @SERIAL_SUPPORT_TRUE@-DSUPPORT_SERIAL=1
@SERIAL_SUPPORT_FALSE@SERIAL_FLAGS =
@HERCULES_SUPPORT_TRUE@HERCULES_FLAGS = @HERCULES_SUPPORT_TRUE@-DSUPPORT_HERCULES=1
@HERCULES_SUPPORT_FALSE@HERCULES_FLAGS =
STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
$(NETBOOT_FLAGS) $(SERIAL_FLAGS)
$(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS)
STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
@ -151,8 +153,8 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
# For stage2 target.
pre_stage2_exec_SOURCES = asm.S bios.c boot.c builtins.c common.c \
char_io.c cmdline.c disk_io.c gunzip.c fsys_ext2fs.c \
fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c serial.c \
smp-imps.c stage2.c md5.c
fsys_fat.c fsys_ffs.c fsys_minix.c fsys_reiserfs.c hercules.c \
serial.c smp-imps.c stage2.c md5.c
pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)
@ -258,8 +260,8 @@ diskless_exec-char_io.o diskless_exec-cmdline.o diskless_exec-disk_io.o \
diskless_exec-gunzip.o diskless_exec-fsys_ext2fs.o \
diskless_exec-fsys_fat.o diskless_exec-fsys_ffs.o \
diskless_exec-fsys_minix.o diskless_exec-fsys_reiserfs.o \
diskless_exec-serial.o diskless_exec-smp-imps.o diskless_exec-stage2.o \
diskless_exec-md5.o
diskless_exec-hercules.o diskless_exec-serial.o \
diskless_exec-smp-imps.o diskless_exec-stage2.o diskless_exec-md5.o
diskless_exec_OBJECTS = $(am_diskless_exec_OBJECTS)
diskless_exec_DEPENDENCIES = ../netboot/libdrivers.a
am_e2fs_stage1_5_exec_OBJECTS = e2fs_stage1_5_exec-start.o \
@ -305,9 +307,9 @@ pre_stage2_exec-char_io.o pre_stage2_exec-cmdline.o \
pre_stage2_exec-disk_io.o pre_stage2_exec-gunzip.o \
pre_stage2_exec-fsys_ext2fs.o pre_stage2_exec-fsys_fat.o \
pre_stage2_exec-fsys_ffs.o pre_stage2_exec-fsys_minix.o \
pre_stage2_exec-fsys_reiserfs.o pre_stage2_exec-serial.o \
pre_stage2_exec-smp-imps.o pre_stage2_exec-stage2.o \
pre_stage2_exec-md5.o
pre_stage2_exec-fsys_reiserfs.o pre_stage2_exec-hercules.o \
pre_stage2_exec-serial.o pre_stage2_exec-smp-imps.o \
pre_stage2_exec-stage2.o pre_stage2_exec-md5.o
pre_stage2_exec_OBJECTS = $(am_pre_stage2_exec_OBJECTS)
@NETBOOT_SUPPORT_TRUE@pre_stage2_exec_DEPENDENCIES = \
@NETBOOT_SUPPORT_TRUE@../netboot/libdrivers.a
@ -353,9 +355,10 @@ $(DEPDIR)/diskless_exec-fsys_ext2fs.Po \
$(DEPDIR)/diskless_exec-fsys_fat.Po $(DEPDIR)/diskless_exec-fsys_ffs.Po \
$(DEPDIR)/diskless_exec-fsys_minix.Po \
$(DEPDIR)/diskless_exec-fsys_reiserfs.Po \
$(DEPDIR)/diskless_exec-gunzip.Po $(DEPDIR)/diskless_exec-md5.Po \
$(DEPDIR)/diskless_exec-serial.Po $(DEPDIR)/diskless_exec-smp-imps.Po \
$(DEPDIR)/diskless_exec-stage2.Po $(DEPDIR)/e2fs_stage1_5_exec-asm.Po \
$(DEPDIR)/diskless_exec-gunzip.Po $(DEPDIR)/diskless_exec-hercules.Po \
$(DEPDIR)/diskless_exec-md5.Po $(DEPDIR)/diskless_exec-serial.Po \
$(DEPDIR)/diskless_exec-smp-imps.Po $(DEPDIR)/diskless_exec-stage2.Po \
$(DEPDIR)/e2fs_stage1_5_exec-asm.Po \
$(DEPDIR)/e2fs_stage1_5_exec-bios.Po \
$(DEPDIR)/e2fs_stage1_5_exec-char_io.Po \
$(DEPDIR)/e2fs_stage1_5_exec-common.Po \
@ -403,7 +406,8 @@ $(DEPDIR)/pre_stage2_exec-fsys_fat.Po \
$(DEPDIR)/pre_stage2_exec-fsys_ffs.Po \
$(DEPDIR)/pre_stage2_exec-fsys_minix.Po \
$(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po \
$(DEPDIR)/pre_stage2_exec-gunzip.Po $(DEPDIR)/pre_stage2_exec-md5.Po \
$(DEPDIR)/pre_stage2_exec-gunzip.Po \
$(DEPDIR)/pre_stage2_exec-hercules.Po $(DEPDIR)/pre_stage2_exec-md5.Po \
$(DEPDIR)/pre_stage2_exec-serial.Po \
$(DEPDIR)/pre_stage2_exec-smp-imps.Po \
$(DEPDIR)/pre_stage2_exec-stage2.Po \
@ -497,6 +501,7 @@ diskless_exec-fsys_fat.o: fsys_fat.c
diskless_exec-fsys_ffs.o: fsys_ffs.c
diskless_exec-fsys_minix.o: fsys_minix.c
diskless_exec-fsys_reiserfs.o: fsys_reiserfs.c
diskless_exec-hercules.o: hercules.c
diskless_exec-serial.o: serial.c
diskless_exec-smp-imps.o: smp-imps.c
diskless_exec-stage2.o: stage2.c
@ -582,6 +587,7 @@ pre_stage2_exec-fsys_fat.o: fsys_fat.c
pre_stage2_exec-fsys_ffs.o: fsys_ffs.c
pre_stage2_exec-fsys_minix.o: fsys_minix.c
pre_stage2_exec-fsys_reiserfs.o: fsys_reiserfs.c
pre_stage2_exec-hercules.o: hercules.c
pre_stage2_exec-serial.o: serial.c
pre_stage2_exec-smp-imps.o: smp-imps.c
pre_stage2_exec-stage2.o: stage2.c
@ -684,6 +690,7 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/diskless_exec-fsys_minix.Po
@AMDEP@include $(DEPDIR)/diskless_exec-fsys_reiserfs.Po
@AMDEP@include $(DEPDIR)/diskless_exec-gunzip.Po
@AMDEP@include $(DEPDIR)/diskless_exec-hercules.Po
@AMDEP@include $(DEPDIR)/diskless_exec-md5.Po
@AMDEP@include $(DEPDIR)/diskless_exec-serial.Po
@AMDEP@include $(DEPDIR)/diskless_exec-smp-imps.Po
@ -749,6 +756,7 @@ maintainer-clean-tags:
@AMDEP@include $(DEPDIR)/pre_stage2_exec-fsys_minix.Po
@AMDEP@include $(DEPDIR)/pre_stage2_exec-fsys_reiserfs.Po
@AMDEP@include $(DEPDIR)/pre_stage2_exec-gunzip.Po
@AMDEP@include $(DEPDIR)/pre_stage2_exec-hercules.Po
@AMDEP@include $(DEPDIR)/pre_stage2_exec-md5.Po
@AMDEP@include $(DEPDIR)/pre_stage2_exec-serial.Po
@AMDEP@include $(DEPDIR)/pre_stage2_exec-smp-imps.Po
@ -1000,6 +1008,14 @@ diskless_exec-fsys_reiserfs.o: fsys_reiserfs.c
@AMDEP@CCDEPMODE = @CCDEPMODE@
diskless_exec-hercules.o: hercules.c
@AMDEP@ source='hercules.c' object='diskless_exec-hercules.o' libtool=no @AMDEPBACKSLASH@
@AMDEP@ depfile='$(DEPDIR)/diskless_exec-hercules.Po' tmpdepfile='$(DEPDIR)/diskless_exec-hercules.TPo' @AMDEPBACKSLASH@
@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(diskless_exec_CFLAGS) $(CFLAGS) -c -o diskless_exec-hercules.o `test -f hercules.c || echo '$(srcdir)/'`hercules.c
@AMDEP@CCDEPMODE = @CCDEPMODE@
diskless_exec-serial.o: serial.c
@AMDEP@ source='serial.c' object='diskless_exec-serial.o' libtool=no @AMDEPBACKSLASH@
@AMDEP@ depfile='$(DEPDIR)/diskless_exec-serial.Po' tmpdepfile='$(DEPDIR)/diskless_exec-serial.TPo' @AMDEPBACKSLASH@
@ -1328,6 +1344,14 @@ pre_stage2_exec-fsys_reiserfs.o: fsys_reiserfs.c
@AMDEP@CCDEPMODE = @CCDEPMODE@
pre_stage2_exec-hercules.o: hercules.c
@AMDEP@ source='hercules.c' object='pre_stage2_exec-hercules.o' libtool=no @AMDEPBACKSLASH@
@AMDEP@ depfile='$(DEPDIR)/pre_stage2_exec-hercules.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-hercules.TPo' @AMDEPBACKSLASH@
@AMDEP@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
$(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pre_stage2_exec_CFLAGS) $(CFLAGS) -c -o pre_stage2_exec-hercules.o `test -f hercules.c || echo '$(srcdir)/'`hercules.c
@AMDEP@CCDEPMODE = @CCDEPMODE@
pre_stage2_exec-serial.o: serial.c
@AMDEP@ source='serial.c' object='pre_stage2_exec-serial.o' libtool=no @AMDEPBACKSLASH@
@AMDEP@ depfile='$(DEPDIR)/pre_stage2_exec-serial.Po' tmpdepfile='$(DEPDIR)/pre_stage2_exec-serial.TPo' @AMDEPBACKSLASH@

View file

@ -1943,7 +1943,7 @@ ENTRY(console_gotoxy)
/*
* set_attrib(attr) : Sets the character attributes for character at
* console_set_attrib(attr) : Sets the character attributes for character at
* current cursor position.
*
* Bitfields for character's display attribute:
@ -1977,7 +1977,7 @@ ENTRY(console_gotoxy)
* %cx = count to display (???, possible side-effects!!)
*/
ENTRY(set_attrib)
ENTRY(console_set_attrib)
push %ebp
push %ebx

View file

@ -3820,7 +3820,7 @@ static struct builtin builtin_setup =
};
#ifdef SUPPORT_SERIAL
#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES)
/* terminal */
static int
terminal_func (char *arg, int flags)
@ -3854,9 +3854,17 @@ terminal_func (char *arg, int flags)
if (terminal & TERMINAL_CONSOLE)
grub_printf ("console%s\n",
terminal & TERMINAL_DUMB ? " (dumb)" : "");
#ifdef SUPPORT_HERCULES
else if (terminal & TERMINAL_HERCULES)
grub_printf ("hercules%s\n",
terminal & TERMINAL_DUMB ? " (dumb)" : "");
#endif /* SUPPORT_HERCULES */
#ifdef SUPPORT_SERIAL
else if (terminal & TERMINAL_SERIAL)
grub_printf ("serial%s\n",
terminal & TERMINAL_DUMB ? " (dumb)" : " (vt100)");
#endif /* SUPPORT_SERIAL */
return 0;
}
@ -3871,12 +3879,22 @@ terminal_func (char *arg, int flags)
if (! default_terminal)
default_terminal = TERMINAL_CONSOLE;
}
#ifdef SUPPORT_HERCULES
else if (grub_memcmp (arg, "hercules", sizeof ("hercules") - 1) == 0)
{
terminal |= TERMINAL_HERCULES;
if (! default_terminal)
default_terminal = TERMINAL_HERCULES;
}
#endif /* SUPPORT_HERCULES */
#ifdef SUPPORT_SERIAL
else if (grub_memcmp (arg, "serial", sizeof ("serial") - 1) == 0)
{
terminal |= TERMINAL_SERIAL;
if (! default_terminal)
default_terminal = TERMINAL_SERIAL;
}
#endif /* SUPPORT_SERIAL */
else
{
terminal = saved_terminal;
@ -3949,7 +3967,7 @@ static struct builtin builtin_terminal =
" If --timeout is present, this command will wait at most for SECS"
" seconds."
};
#endif /* SUPPORT_SERIAL */
#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */
/* testload */
@ -4448,9 +4466,9 @@ struct builtin *builtin_table[] =
#endif /* SUPPORT_SERIAL */
&builtin_setkey,
&builtin_setup,
#ifdef SUPPORT_SERIAL
#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES)
&builtin_terminal,
#endif /* SUPPORT_SERIAL */
#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */
&builtin_testload,
&builtin_testvbe,
#ifdef SUPPORT_NETBOOT

View file

@ -2,7 +2,7 @@
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1996 Erich Boleyn <erich@uruk.org>
* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
*
* 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
@ -21,6 +21,10 @@
#include <shared.h>
#ifdef SUPPORT_HERCULES
# include <hercules.h>
#endif
#ifdef SUPPORT_SERIAL
# include <serial.h>
#endif
@ -302,7 +306,11 @@ get_cmdline (char *prompt, char *cmdline, int maxlen,
{
xpos -= count;
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
# ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
# endif /* SUPPORT_HERCULES */
)
{
int y = getxy () & 0xFF;
@ -336,7 +344,11 @@ get_cmdline (char *prompt, char *cmdline, int maxlen,
{
xpos += count;
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
# ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
# endif /* SUPPORT_HERCULES */
)
{
int y = getxy () & 0xFF;
@ -458,7 +470,11 @@ get_cmdline (char *prompt, char *cmdline, int maxlen,
}
/* Back to XPOS. */
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
# ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
# endif /* SUPPORT_HERCULES */
)
{
int y = getxy () & 0xFF;
@ -1022,7 +1038,11 @@ getkey (void)
{
int c = -1;
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
#ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
#endif /* SUPPORT_HERCULES */
)
c = console_getkey ();
#ifdef SUPPORT_SERIAL
else if (terminal & TERMINAL_SERIAL)
@ -1038,9 +1058,13 @@ checkkey (void)
{
int c = -1;
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
#ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
#endif /* SUPPORT_HERCULES */
)
c = console_checkkey ();
#ifdef SUPPORT_SERIAL
if (terminal & TERMINAL_SERIAL)
c = serial_checkkey ();
@ -1090,6 +1114,11 @@ grub_putchar (int c)
if (terminal & TERMINAL_CONSOLE)
console_putchar (c);
# ifdef SUPPORT_HERCULES
if (terminal & TERMINAL_HERCULES)
herc_putchar (c);
# endif /* SUPPORT_HERCULES */
# ifdef SUPPORT_SERIAL
if (terminal & TERMINAL_SERIAL)
serial_putchar (c);
@ -1104,10 +1133,14 @@ gotoxy (int x, int y)
{
if (terminal & TERMINAL_CONSOLE)
console_gotoxy (x, y);
#ifdef SUPPORT_HERCULES
else if (terminal & TERMINAL_HERCULES)
herc_gotoxy (x, y);
#endif /* SUPPORT_HERCULES */
#ifdef SUPPORT_SERIAL
else if (terminal & TERMINAL_SERIAL)
serial_gotoxy (x, y);
#endif
#endif /* SUPPORT_SERIAL */
}
#ifdef SUPPORT_SERIAL
@ -1126,10 +1159,14 @@ getxy (void)
if (terminal & TERMINAL_CONSOLE)
ret = console_getxy ();
#ifdef SUPPORT_HERCULES
else if (terminal & TERMINAL_HERCULES)
ret = herc_getxy ();
#endif /* SUPPORT_HERCULES */
#ifdef SUPPORT_SERIAL
else if (terminal & TERMINAL_SERIAL)
ret = serial_getxy ();
#endif
#endif /* SUPPORT_SERIAL */
return ret;
}
@ -1225,10 +1262,14 @@ cls (void)
{
if (terminal & TERMINAL_CONSOLE)
console_cls ();
#ifdef SUPPORT_HERCULES
else if (terminal & TERMINAL_HERCULES)
herc_cls ();
#endif /* SUPPORT_HERCULES */
#ifdef SUPPORT_SERIAL
else if (terminal & TERMINAL_SERIAL)
serial_cls ();
#endif
#endif /* SUPPORT_SERIAL */
}
#ifdef SUPPORT_SERIAL
@ -1243,6 +1284,17 @@ serial_cls (void)
grub_printf ("\e[H\e[J");
}
#endif /* SUPPORT_SERIAL */
void
set_attrib (int attr)
{
#ifdef SUPPORT_HERCULES
if (terminal & TERMINAL_HERCULES)
herc_set_attrib (attr);
else
#endif /* SUPPORT_HERCULES */
console_set_attrib (attr);
}
#endif /* ! STAGE1_5 */
int

143
stage2/hercules.c Normal file
View file

@ -0,0 +1,143 @@
/* hercules.c - hercules console interface */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2001 Free Software Foundation, Inc.
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef SUPPORT_HERCULES
#include <shared.h>
#include <hercules.h>
/* The position of the cursor. */
static unsigned hercx, hercy;
/* Write a byte to a port. */
static inline void
outb (unsigned short port, unsigned char value)
{
asm volatile ("outb %b0, %w1" : : "a" (value), "Nd" (port));
}
static void
herc_set_cursor (void)
{
unsigned offset = hercy * HERCULES_WIDTH + hercx;
outb (HERCULES_INDEX_REG, 0x0f);
outb (0x80, 0x0f);
outb (HERCULES_DATA_REG, offset & 0xFF);
outb (0x80, offset & 0xFF);
outb (HERCULES_INDEX_REG, 0x0e);
outb (0x80, 0x0e);
outb (HERCULES_DATA_REG, offset >> 8);
outb (0x80, offset >> 8);
}
void
herc_putchar (int c)
{
switch (c)
{
case '\b':
if (hercx)
hercx--;
break;
case '\n':
hercy++;
break;
case '\r':
hercx = 0;
break;
default:
{
volatile unsigned short *video
= (unsigned short *) HERCULES_VIDEO_ADDR;
video[hercy * HERCULES_WIDTH + hercx] = 0x0700 | c;
hercx++;
if (hercx >= HERCULES_WIDTH)
{
hercx = 0;
hercy++;
}
}
break;
}
if (hercy >= HERCULES_HEIGHT)
{
int i;
volatile unsigned long *video = (unsigned long *) HERCULES_VIDEO_ADDR;
hercy = HERCULES_HEIGHT - 1;
grub_memmove ((char *) HERCULES_VIDEO_ADDR,
(char *) HERCULES_VIDEO_ADDR + HERCULES_WIDTH * 2,
HERCULES_WIDTH * (HERCULES_HEIGHT - 1) * 2);
for (i = HERCULES_WIDTH * (HERCULES_HEIGHT - 1) / 2;
i < HERCULES_WIDTH * HERCULES_HEIGHT / 2;
i++)
video[i] = 0x07200720;
}
}
void
herc_cls (void)
{
int i;
volatile unsigned long *video = (unsigned long *) HERCULES_VIDEO_ADDR;
for (i = 0; i < HERCULES_WIDTH * HERCULES_HEIGHT / 2; i++)
video[i] = 0x07200720;
hercx = hercy = 0;
herc_set_cursor ();
}
int
herc_getxy (void)
{
return (hercx << 8) | hercy;
}
void
herc_gotoxy (int x, int y)
{
hercx = x;
hercy = y;
herc_set_cursor ();
}
void
herc_set_attrib (int attr)
{
volatile unsigned char *video = (unsigned char *) HERCULES_VIDEO_ADDR;
if (attr & 0xF0)
attr = 0x70;
else
attr = 0x07;
video[((hercy * HERCULES_WIDTH + hercx) << 1) + 1] = attr;
}
#endif /* SUPPORT_HERCULES */

38
stage2/hercules.h Normal file
View file

@ -0,0 +1,38 @@
/* hercules.h - hercules console interface */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2001 Free Software Foundation, Inc.
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef GRUB_HERCULES_HEADER
#define GRUB_HERCULES_HEADER 1
/* Macros. */
#define HERCULES_VIDEO_ADDR RAW_ADDR (0xB0000)
#define HERCULES_WIDTH 80
#define HERCULES_HEIGHT 25
#define HERCULES_INDEX_REG 0x3b4
#define HERCULES_DATA_REG 0x3b5
/* Functions. */
void herc_putchar (int c);
void herc_cls (void);
int herc_getxy (void);
void herc_gotoxy (int x, int y);
void herc_set_attrib (int attr);
#endif /* ! GRUB_HERCULES_HEADER */

View file

@ -808,6 +808,9 @@ int console_checkkey (void);
constants defined above. */
void set_attrib (int attr);
/* The console part of set_attrib. */
void console_set_attrib (int attr);
/* Low-level disk I/O */
int get_diskinfo (int drive, struct geometry *geometry);
int biosdisk (int subfunc, int drive, struct geometry *geometry,
@ -867,6 +870,7 @@ extern int terminal;
#define TERMINAL_CONSOLE (1 << 0) /* keyboard and screen */
#define TERMINAL_SERIAL (1 << 1) /* serial console */
#define TERMINAL_HERCULES (1 << 2) /* hercules */
#define TERMINAL_DUMB (1 << 16) /* dumb terminal */

View file

@ -1,7 +1,7 @@
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 1996 Erich Boleyn <erich@uruk.org>
* Copyright (C) 2000 Free Software Foundation, Inc.
* Copyright (C) 2000, 2001 Free Software Foundation, Inc.
*
* 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
@ -164,7 +164,11 @@ print_border (int y, int size)
#ifndef GRUB_UTIL
/* Color the menu. The menu is 75 * 14 characters. */
# ifdef SUPPORT_SERIAL
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
# ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
# endif
)
# endif
{
for (i = 0; i < 14; i++)
@ -387,7 +391,11 @@ restart:
disp_down = ACS_DARROW;
#else /* ! GRUB_UTIL */
# ifdef SUPPORT_SERIAL
if (terminal & TERMINAL_CONSOLE)
if ((terminal & TERMINAL_CONSOLE)
# ifdef SUPPORT_HERCULES
|| (terminal & TERMINAL_HERCULES)
# endif /* SUPPORT_HERCULES */
)
{
disp_up = DISP_UP;
disp_down = DISP_DOWN;