Context sensitivity in beastie.4th?
Scott Long
scottl at samsco.org
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
>> FBSD
>> 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.
Scott
More information about the freebsd-stable
mailing list