Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Feb 2008 06:59:40 -0800
From:      Jeremy Chadwick <koitsu@freebsd.org>
To:        freebsd-hackers@freebsd.org
Subject:   loader and ficl/Forth help
Message-ID:  <20080224145940.GA41037@eos.sc1.parodius.com>

next in thread | raw e-mail | index | archive | help
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 |




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080224145940.GA41037>