Xojo developer gatherings

Only a few months in my case but in my defense I used Microsoft BASCOM and another Basic compiler whose name now eludes me on LS-DOS 6x way back in the early 1980s, and off & on BASCOM on MS-DOS after that. But I got involved in the XBase world for a long time until M$FT bought FoxPro out and picked its bones clean, then it was Classic ASP / VBScript, and after that, VB.NET so I am not new to Basic despite slinging quite a bit of C# and currently building a web API in C# with desktop admin tools in Xojo.

For all my grousing here, Xojo is a pretty nice tool for working on desktop apps; I just don’t take it seriously for Android, probably really IOS and, especially, Web.

2 Likes

same with me

My first steps with Xojo were about 2003. I was surprised to see something like Visual Basic on a Mac :blush:

FWIW, I searched my disk for the oldest Xojo projects of mine (which was quite easy with my own FindAnyFile - by limiting the creation time to 1999 and looking for both ā€œrbā€ and ā€œrbpā€ as extensions).

The earliest was dated February 99 (and my first plugin just one month later – which was made with CW3 and was a global method DebugStr() to enter MacsBug). Still some of them mentioning of Xbasic (Crossbasic) back then.

Sometime after that I remember that I attended a developer meeting in San Francisco or Silicon Valley (IIRC) that Geoff had organized, I think. Had expected to see the original developer (don’t remember his name - anyone?) there, too, but was told that he’s not part of it any more - only learned later that the dev wasn’t too happy with the new management, but never learned the details.

1 Like

Andrew Barry

4 Likes

I’ve just taken a look at a backup of one of my first RB projects and those files show creation dates of 19 years ago. I know I completed one project a good year or so before that one (the project that actually introduced me to RB), so it’s got to be 20 years for me. Wow… time moves on quickly.

2 Likes

So RE: my original post about starting with Basic compilers on the TRS-80. I got a TRS-80 Model 4 emulator (trs80gp) running on my M1 Mac and up pops the splash screen of TRSDOS 6 – well, hello old friend.

At any rate for fun I downloaded the entire output of Misosys (Roy Soltoff’s old company – the author of LS-DOS which was licensed on the Model 4 as TRS-DOS) including its basic compiler, EnhComp. I had forgotten just how crude things of necessity were in 8-bit land, but the minimalist environment is a fun challenge all its own:

Variable names can be any length but only upper case letters, digits, and @, plus the usual typing suffixes (%,!,#,$).

In general, apart from leading spaces on a line, no spaces allowed by the syntax.

Four data types: integer, single & double precision float, and string

You can declare functions, but only parameters are pushed onto the stack; there are no local variables as such. You either have to send extra dummy args into a function or use a naming convention to try to use working variables in global scope within the function body, treating them as pseudo-static variables. The docs don’t even contemplate this, they just assume the then-current mindset that all variables are global and it is the parameters being local (the word ā€œlocalā€ isn’t even a word yet apparently) that is unusual / revolutionary.

Functions cannot have zero parameters (?!) and parameters cannot be arrays or even array elements. You can recurse up to the limits of stack space but without local variables you are effectively limited to rather simple recursion calls that only work with passed args.

When called, functions must be prefixed with !, which makes for interesting syntax if it’s a function that returns a single, for which ! is the variable suffix, hence, say:

SOMEVAR! = !MYFUNC!(0)

All this shouting – I’m not used to it anymore. Feel like writing a preprocessor just so I can write with a sane syntax and camel-casing.

No classes / objects, of course.

On the plus side:

Line numbers are entirely optional and you can completely dispense with them, using COMMAND/ENDCOM, FUNCTION/ENDFUNC and text labels instead.

Strings can be up to 32K, and given you have < 40K of free memory in practice at runtime unless you resort to bank switching, that’s plenty generous.

The compiler is also an assembler so you can drop in to Z-80 assembly language anytime you wish, with all registers saved & available.

There’s a clever enhanced ā€œfieldingā€ mechanism for fixed-width random access files.

Very nice sort functions including something roughly equivalent to Xojo’s Sort … With

The compiler understands includes

Also I had forgotten how terse everything is, including the documentation. The docs for the compiler, included line editor and supervisor program are excellent by the standards of the day but both the compiler design and the docs assume you have already internalized interpreted disk Basic, which I have long since forgotten most of, and there’s no concept of ā€œsee also related commandsā€, etc. I understand building on disk Basic not only for compatibility reasons but for the ability to call into the same system routines for parsing and so forth and thus save a little memory but boy I have gotten soft over the past 40 or so years!

2 Likes

REALbasic 1, back in early 1998… after reading an intro from Apple’s Developer News…

Gee, that was not yesterday.

3 Likes