I should probably clarify... :<
To us, customer was the OEM. *They* would design new assays, debug them (in terms of the chemistry) and code up the "QBASIC" routines to implement those assays for *their* customers ("end users"). So, it was reasonable to expect them to have certain tools available for that process (though they surely wouldn't want to be dealing with "raw iron").
I don't think the end user ever *saw* QBASIC. They would typically purchase "Paks" (ROM based) for each assay. FDA issues, etc. (though there was no reason why, from
*our* standpoint, this utility couldn't be "exposed")Yes, I find that to be true of "modern" languages. :< They try to be overly friendly instead of overly *efficient*. Hence my comments regarding fixing/declaring string sizes, integer only math, etc. You can do a *lot* in an environment thusly constrained *if* you are made aware of those constraints. Often, a "user" only needs the ability to do calculations, handle conditionals and "print" (emit?) formatted text with "results". So, a lot of the flowery features of modern languages are wasted...
Nowadays, I would look into support for connectivity as more and more devices talk to each other (or *should*! :> )
One advantage of Limbo/Inferno is the application can extend beyond the confines of the device itself. E.g., you can "export" the hardware from the device/instrument and actually run the *application* external to the device (remotely!)