[Coco] A bug in Basic09/RunB
Wayne Campbell
asa.rand at gmail.com
Tue Dec 8 00:09:37 EST 2009
Willard,
I understand. In most languages I have looked at this is true. I am merely
testing the limits of what appeared to be a possibility, given that I can
pass a 32-byte array to a 32-character string, or vice-versa, and it works
just fine. No type checking. I thought, if this is true, then I should be
able to pass 3 parameters, the sum of whose lengths equal the size of the
expected variable. I guess the former is relegated to individual parameters,
and not the list as a whole.
I am still thinking that the field passing issue needs to be looked into. I
don't think there is any reason why I can't pass a field reference more than
1 field deep. From what I've seen in my tests, it's as though the pointer in
the parameter list is pointing to the first field instead of the second. I
wish I understood more of what is going on there. I may be totally off in my
thinking, just because I don't understand what's going on at the object code
level.
Wayne
----- Original Message -----
From: "Willard Goosey" <goosey at virgo.sdc.org>
To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
Sent: Monday, December 07, 2009 7:59 PM
Subject: Re: [Coco] A bug in Basic09/RunB
> On Sun, Dec 06, 2009 at 05:49:58PM -0800, Wayne Campbell wrote:
>>
>> The first bug occurs when you pass a byte by value:
>
> This has already been addressed by others. Type promotion by
> padding.
>
>> The second bug occurs when you pass multiple variables into a single
>> variable.
>
> That's not supported. Don't do that. You can't really expect it to
> do anything but crash and burn.
>
> Sorry to shoot you down so bluntly, but there it is. A compiler with
> a stronger type system than BASIC-09's would flag this at compile
> time. There's a difference between passing 3 ints and passing an
> array of 3 ints.
>
> As you said earlier:
>
>> Second, as long as the receiving variable is of the correct size, it
>> doesn't matter what type or order you specify the parameter list
>> in. It just has to match the size.
>
> And so it doesn't work if you pass 3 args of size 2 to a subroutine
> expecting 1 arg of size 6.
>
> Appendix C-1 of the Microware C manual discribes the calling
> convention BASIC-09 uses to RUN binary subroutines.
>
> Willard
> --
> Willard Goosey goosey at sdc.org
> Socorro, New Mexico, USA
> I search my heart and find Cimmeria, land of Darkness and the Night.
> -- R.E. Howard
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
More information about the Coco
mailing list