RichardRussell wrote:DavidS wrote:Since when is BBC BASIC V limited to 255 byte arrays?
I was not referring to
arrays but to
strings. All versions of BBC BASIC from the Acorn stable have had a maximum string length of 255 characters. Brandy has a maximum string length of 65535 characters. BB4W (v6) and BBCSDL strings are limited only by available memory.
As far as byte arrays are concerned, only BB4W and BBCSDL have them! All other versions of BBC BASIC support only numeric arrays (floating point or integer) and string arrays. But byte arrays, even when available, are no substitute for strings because they don't have automatic storage allocation and once created their length cannot be changed.
First thing you can easily do an array of integers, and use it as a string in BBC BASIC V (aka ARM BASIC), it is done all the time, and has no limit on the length. You can use a allocated memory array for any type including bytes, which is a big part of BBC BASIC V programming. So I do not know where you get that only BB4W and BBCSDL support byte arrays, simply not true.
it is a poor attempt at making BBC BASIC OO, and a good job of breaking compatibility with standard features of BBC BASIC V.
Since no versions of BBC BASIC are Object Oriented (it's a procedural language) I don't see what relevance OO has at all. As far as compatibility is concerned, the compatibility of BB4W and BBCSDL with BASIC V is pretty good. What particular compatibility issues concern you?
It has been a god while since I looked at BBC BASIC for Windows, though last I did I remember that they did not support any program I tested on them, even though I only tried programs that do not make any use of the OS or HW in any way , and only used BBC BASIC V commands for all interaction.
I think it may have been some unsupported and/or changed tokens, though I am not sure.
What use is a PRIVATE variable in a purely procedural language?
C has private (static) variables, and it's a procedural language. Without them you are forced to use globals for anything that is local in scope but needs to be preserved from one call to the next.
That is static, not private. Private usually refers to members of classes that are only accessible from within the class.
So I misunderstood the purpose. That is an advantage over LOCAL.
What use are interrupts in BBC BASIC?
Are you kidding? Most modern operating systems are event-driven so a programming language needs to have a mechanism for receiving those events asynchronously. The only alternative is an old-fashioned polling loop which is hopelessly inefficient and limiting.
That is not interrupts, that is call backs. And admittedly the support for such in BBC BASIC V is rather limited, and not very useful.
You can also handle interrupts and SWI's in code written in BBC BASIC by mixing in assembly (something missing from newer implementations)
What do you mean by "missing from newer implementations"? Brandy is the only version of BBC BASIC without an integral assembler, isn't it?
Out of context much?
Having an integral assembler is good for optimization, though it is even better when you can get the code running with low level access to the HW or system services that are not otherwise accessible.
I would like to see an example of BBC BASIC for Windows doing that
BBC BASIC for Windows can handle callbacks, if that is what you are referring to. There's a library for it, see the
online documentation.
Richard.
I was referring to pushing assembled code into an area that it has direct access to HW or non-standard services, and is able to provide calls out to your BASIC program, as well as providing the same services to other running programs
without relying on an external machine code library. This is where protected model OS's fail, and why the use of BBC BASIC V as an core part of RISC OS excels.