[OpenBIOS] Incorrect implementation of b?branch?
Blue Swirl
blauwirbel at gmail.com
Sat Feb 21 17:26:35 CET 2009
On 2/21/09, Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk> wrote:
> Stefan Reinauer wrote:
>
>
> > I think you indeed hit a bug. b?branch in openbios only works in word
> > definitions, not in interpretion mode. It needs similar handling as
> > setup-tmp-comp/execute-tmp-comp in the definition of "if"
> in bootstrap.fs.
> >
>
> No way! I was actually looking at the code in bootstrap.fs thinking that
> the code assumed it was working inside a temporary buffer, and wondering if
> the setup-tmp-comp word would help me. Thanks for the pointer.
>
>
> > In addition to that your example contains non-valid code. A b?branch
> > always needs to point behind a b(>resolve) as in the below example.
> >
> > here
> > cc c, \ offset16
> > \ a4 c, \ -1
> > a5 c, \ 0
> > 14 c, 00 c, 05 c, \ b?branch
> > 02 c, 16 c, \ abort
> > b2 c, \ b(>resolve)
> > 9f c, \ .s
> > 00 c, \ end0
> > 1 byte-load
> >
>
> Indeed, that is my mistake. Please find the attached patch, which when used
> with your code example above now seems to do the right thing for b?branch:
>
>
> 0 > here ok
> 1 > cc c, ok
> 1 > a5 c, ok
> 1 > 14 c, 00 c, 05 c, ok
> 1 > 02 c, 16 c, ok
> 1 > b2 c, ok
> 1 > 9f c, ok
> 1 > 00 c, ok
> 1 > 1 byte-load <e> -1 1 0 -1 0 0 0 ffd79378 0 0 0 0 0 0
> ok
>
>
> 0 > here ok
> 1 > cc c, ok
> 1 > a4 c, ok
> 1 > 14 c, 00 c, 05 c, ok
> 1 > 02 c, 16 c, ok
> 1 > b2 c, ok
> 1 > 9f c, ok
> 1 > 00 c, ok
> 1 > 1 byte-load
> byte-load: exception caught!
> ok
>
>
> At least now if I find similar errors, I have an idea of how to fix them :)
Thanks, I'll apply this. My marTux and Milax test images get a little
further with this patch.
More information about the OpenBIOS
mailing list