sdyer@bbncca.ARPA (Steve Dyer) (12/15/83)
Well, I found a copy at my local Radio Shack, as promised. I haven't had much time to play with it, only about an hour. It's an interactive compiler, generating something called 'I-code'. The program has several different modes: SYSTEM, the command level, EDIT, procedure entry using the same syntax as the OS-9 command, EDIT, EXECUTION mode, and DEBUG mode. There is also a mechanism to run "packed" I-code modules outside of the BASIC09 development/debugging environment. The program comes with a manual which seems fairly thorough as far as the language and environment goes, but says preciously little about installing the program on your system. I guess you usually just copy them to /d0/CMDS-- I didn't have enough space left there, so I had to go through a few contortions. The language seems quite nice, with all the interactive advantages of BASIC, but with the control and data structures of PASCAL. One strange thing, though. It seems that the language does not support user-defined functions, only procedures. I find this hard to believe, and it dampens my enthusiasm a bit. Perhaps I've misread the manual. Can any BASIC09 gurus out there comment on this? -- /Steve Dyer decvax!bbncca!sdyer sdyer@bbncca
emjej@uokvax.UUCP (12/28/83)
#R:bbncca:-38700:uokvax:3500023:000:1354 uokvax!emjej Dec 26 09:06:00 1983 Re true functions in BASIC09: there aren't any. (I'm disappointed, too.) Other problems: 1. There are no global TYPE declarations. (Boy, this makes for a lot of typing (no pun intended) if you want to write a set of procedures to manipulate a TYPE.) 2. The debug mode won't let you print or tweak fields in a structure. (I hope everyone writes RS and Microware about this--the symbol table info and stuff to do that right ought to be available; I don't see why they didn't. This is the only blemish I can find on a *very* good debugging facility.) 3. No heap, and no reference types. 4. Procedures can't be passed as parameters (but you can invoke them using a string expression for the name of the one you want to run, so that problem is bypassable). Those are the only gripes I have (well, the pretty-printing could be done a little different--natter, grommish :-> ) about the language. The looping constructs are pretty nice. For those who haven't seen them yet--there are the traditional FOR, WHILE, and REPEAT, along with the generic LOOP <statement>* ENDLOOP but also, within any loop one can have EXITIF <boolean> THEN <statement>* ENDEXIT which has the following semantics: if <boolean> then execute the <statement>s and then leave the innermost loop one happens to be in at the time. James Jones