Subject: Re: storing nvaliases in NVRAM ('NVRAMRC not valid')
To: Michael <macallan18@earthlink.net>
From: Dan LaBell <dan4l-nospam@verizon.net>
List: port-macppc
Date: 04/20/2005 04:36:03
On Apr 19, 2005, at 9:14 PM, Michael wrote:

> Hello,
>
>>> command-ctrl-powerbutton causes a hard reset but that's probably not
>>> what you wanted. On Sun OpenBOOT ( the ancestor of OF, current
>>> versions are more or less OF-compliant ) there's STOP-A which gets 
>>> you
>>> out of pretty much anything ( even the operating system ) but I don't
>>> know if there's an equivalent in Apple's OF.
>>
>> I was going to respond: if you find it, let me know. ;-]
> Yeah, it's incredibly useful, isn't it? :)
>
>> Michael, do you know if  break on a serial line works here?  On suns 
>> it
>> was as good as STOP-A? if I remember.
> I don't think so. If at all then probably only if the serial line is 
> OF's input-device...

I tried telnet w/ kermit, and send break could not break out of  0 0 do 
loop
used kermit, because of its /nowait option.

nvramrc type is no good, if multiline, doesn't like linefeeds.  dump is 
better
for a 1 liner.

Had some trouble empirically confirming where nvramrc is done in OF3 
--at first.
Sun's OpenBoot docs, say: POST, some init, nvramrc, probe-all, 
installconsole, banner,
secondary diags, then boot if autoboot?
I'm actually booting a forth menu, that then boots netbsd, or mac... 
while working on that I found I needed:
s" screen" output
s" keyboard" input
true to use-console?
in any forth script, to get any forth i/o to work,  key,key?,emit, ." " 
, .( ) etc.

So, a lockup, or endless loop in nvramc could leave you with noscreen...
And looping on key or key? could do it.  For example "key drop" for a  
pause, won't work,
instead just returns 0 imediately.  Since I couldn't print out I used 
nvedit and
entered: h# deadbeef
then a cr then ctr-c, then nvstore, reset-all, modded my forth boot 
script do a .s and deadbeef is on the stack... so nvramrc is before 
boot, and before install-console can be inferred from lack of working 
i/o; it seems to match OpenBoot, at least in OF3.   Also discovered , 
whatever reset "bye" does, it does not eval nvramrc... ( nothing on the 
stack ).


Oh yeah,  came up with this to use in place of type, a colon def:
  : puts
   over + swap
   ?do
       i c@
       case
           carret of cr end of
           linefeed of cr end of
           ( default ) dup emit
        endcase
   loop
   cr
  ;
  use where type or dump can be used.  Kind of long though isnt it?