loader and ficl/Forth help
Jeremy Chadwick
koitsu at freebsd.org
Sun Feb 24 14:59:40 UTC 2008
So I've finally gotten around to attempting a feature I mentionted back
in June 2007: using ASCII line-drawing characters for the borders around
beastie/fbsdlogo in frames.4th:
http://lists.freebsd.org/pipermail/freebsd-hackers/2007-June/020851.html
I was hoping there might be some folks familiar with the existing Forth
pieces in /boot who could help, since debugging this is incredibly
difficult. This is my first time with Forth, which is probably where
the true problem lies...
My idea was to implement a loader_logo_lines loader variable, which you
could set to "ascii" to achieve the desired effect -- but simultaneously
retaining support for the PC98 character set, and the CP437 (IBM PC
ANSI) set if the variable isn't defined, or is set to something it
doesn't understand.
So far I've managed to crash loader(8) doing the below, with the message
"sh_el not found" from ficl on the serial console, then either an
infinite register dump or an automatic reboot.
I moved the PC98 and CP437 line constants into routines named pc98_lines
and cp437_lines repectively, and made one called ascii_lines. The main
code piece I changed in frames.4th became this:
s" loader_logo_lines" getenv
dup -1 = if
drop
s" arch-pc98" environment? if
drop
pc98_lines
else
drop
cp437_lines
then
then
2dup s" ascii" compare-insensitive 0= if
2drop
ascii_lines
then
2drop
cp437_lines
I suspect this is what's broken, causing none of the routines to get
executed, thus sh_el never gets defined. The version is here:
http://jdc.parodius.com/freebsd/frames.4th.new
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-hackers
mailing list