Context sensitivity in beastie.4th?

Scott Long scottl at
Thu May 26 22:44:47 PDT 2005

Scott Long wrote:
> Malcolm Kay wrote:
>> I have installed FreeBSD 5.4 RELEASE on a new machine,
>> Celeron + SATA drive, without and problems, include a kernel rebuild to
>> support a PCI serial card.
>> But now I wish to change the graphic, beastie, that appears in the 
>> boot menu. I am certainly no expert or even acolyte in forth 
>> programming but the job appears to be simple enough -- just change the 
>> characters in the
>> 'beastie' constructions and if we don't exceed the available screen space
>> all should be well!
>> Well what I got was a cycling reboot going back ech time to the BIOS 
>> splash screen and advancing an apparently negligable distance into the 
>> boot sequence.
>> I had actually copied /boot/beastie.4th to /boot/phoenix.4th, edited
>> the copy and pointed /boot/loader.rc at phoenix.4th instead of 
>> beastie.4th.
>> Recovery by booting from the distribution CD and entering "Fixit" to 
>> change
>> the pointer back to beastie.4th.
>> Most variants on my original attempt ended up the same way, but some 
>> crashed with a "directory full" message which seems quite strange as 
>> my images have always been smaller than the original 'beastie'.
>> Replacing the colourised version of my 'phoenix' with a copy of the 
>> monochrome version worked.
>> At present I have a phoenix.4th file which works but does not exhibit 
>> the full image. The differences to the original beastie.4th file are 
>> shown here
>> with escape characters replaced by '{esc}' to limit mail confusion.
>> With the line:
>> ( 2dup at-xy ."         {esc}[1m^ ^" 1+ )
>> uncommented the system goes back to an infinite boot loop.
>> This all seems very strange and unbelievable -- I must surely be doing 
>> something very stupid. Does anyone have any idea what that might be?
> Seems to work for me with the commented lines fixed.  Btw, you by no 
> doubt have noticed that it's somewhat inconvenient to do 4th programming
> by modifying the boot scripts and then praying that the reboot works.
> It's possible to do 90% of the testing in userland, like I did when I
> wrote beastie.4th.
> Go to /sys/boot/ficl.  Do 'make clean && make testmain'.  This will 
> create a binary called 'testmain' either in the '.' directory or in
> /usr/obj/usr/src/sys/boot/ficl.  Copy this binary to your home
> directory.  Then copy screen.4th, frames.4th, and beastie.4th from
> /boot to your home directory.  Next create a file called init.4th
> containing the following:
> : boot drop exit ;
> : reboot drop exit ;
> load screen.4th
> load frames.4th
> load beastie.4th
> beastie-start
> Then run it via './testmain init.4th'.  The countdown timer won't
> work and most of the keys naturally won't do what they are supposed to
> do, but everything else in the menu should work just as it would at
> boot.  I tested your colorized phoenix this way just now and it worked.

Oh, one thing I forgot to mention is that you'll need to comment out the
'include' lines in beastie.4th since the testmain environment doesn't
implement those words.


More information about the freebsd-stable mailing list