On Jeudi 5 Septembre 2002 17:08, Dan Sugalski wrote :
> At 3:04 PM +0000 9/5/02, Leon Brocard (via RT) wrote:
> >I realise that proper Unicode support is coming, but it may be a while
> >to get here. We currently have ord() and it makes sense to have a
> >chr() as well, so that's what my patch provides. Please apply, thanks ;-)
> Done.

I wanted to use the chr instruction in my Befunge interpreter. I modified it 
to take this new instruction into account, instead of Clinton Pierce's hack 
(check BASIC)... But it did not work properly. I was rather puzzled, so I 
came back with my original version (rsync the whole parrot), and tried to 
"make test" in the languages/Befunge-93 directory: I got the same buggy 
behavior!
Taking a look in more depth, I found _where_ the bug lies in my Befunge 
interpreter, but can't understand _why_ there's such a bug. 

Here's the buggy code. I added the print (and end) statements in order to 
understand what's going on (at the moment of execution, S0 should be the 
string "v").

IO_PUSH_CHAR:
        pushi
        ord I10, S0
        print "\n===\n>"
        print S0
        print "<\n>"
        print I10
        print "<\n===\n"
        end

And I get:
===
>v<
>60<
===

which is obviously a bug...
In fact, I tried to change S0, and whatever S0 value is (I tried with several 
values: "<", ">", "A", "0", " "), I always get a 60 as its ordinal value...

When I check the length of S0:
        length I12, S0
        print I12
        print "\n"
I get:
1 
(which is correct - remember, S0 eq "v")

I also tried the three-args form of ord():
        ord I10, S0, 0
but get the same result...

The strange thing is that when I run in a standalone test.pasm the buggy code:
        set S0, "v"
        ord I10, S0
        print "\n===\n>"
        print S0
        print "<\n>"
        print I10
        print "<\n===\n"
        end

then it works nice:
====
>v<
>118<
====

Does anybody have an explanation? When I sent the patch with the Befunge-93 
interpreter, it was working well. (promise! :-) )
Who broke my interpreter?


Jérôme
-- 
[EMAIL PROTECTED]

Reply via email to