[OpenBIOS] Found out why replacing '\r' with '\n' works

Mark Cave-Ayland mark.cave-ayland at ilande.co.uk
Tue Apr 19 09:32:59 CEST 2016


On 19/04/16 07:39, Segher Boessenkool wrote:

> On Tue, Apr 19, 2016 at 01:17:30AM -0400, Programmingkid wrote:
>> The executing one line at a time idea turned out to be a pretty good idea. That is enough to make Mac OS 9.2 boot. It is also entertaining to watch each executed line be printed to the terminal. Here is the patch:
> 
> [ LONG LINES ]
> 
> If you look at forth/bootstrap/interpreter.fs, you see EVAL already
> handles multiple lines, but only with unix line endings:
> 
> : evaluate ( str len -- ?? )
>   2dup + -rot
>   over + over do
>     i c@ 0a = if
>       i over -
>       (evaluate)
>       i 1+
>     then
>   loop
>   swap over - (evaluate)
>   ;
> 
> So, change that instead?  Or rewrite it, it's yucky.  Bonus points if
> you also handle 0d 0a and 0a 0d line endings.

... which is what the original patch was trying to do last year:
http://www.openfirmware.info/pipermail/openbios/2015-August/008781.html.
This works for OS X but causes yaboot to throw errors on the console.

I still feel we're lacking a good explanation as to why processing this
on a line-by-line basis makes a difference, and how the r-stack problem
is being mitigated in this case.


ATB,

Mark.




More information about the OpenBIOS mailing list