This is a fairly important first step, since if affects which features you can rely on and the extent to which you need to include conditional logic to support different runtime (or even compile-time) environments. At one extreme, you may want to maintain both compile and runtime compatibility across AMOS, UNIX (including dumb serial terminals), as well as Windows, taking advantage of GUI improvements only where appropriate. In this case you have to avoid using any language statements that won’t compile under AMOS, as well as including "IF TEXT THEN X ELSE Y" or similar conditional logic for runtime decisions on GUI versus text mode functions. You also have to avoid the use of SBX routines, unless you are willing to write AMOS equivalents in assembler.
At the opposite extreme, you may decide you only care about the Windows environment, in which case you can use every GUI enhancement available (and can skip the rest of this topic).
Somewhere in the middle are those that no longer care about AMOS compatibility, or who are willing to compile under A-Shell even run AMOS runtimes. If you don’t need AMOS compatibility even at runtime, then you should probably take advantage of SBX routines as much as possible to encapsulate the details of text vs. GUI methods. If you do need AMOS runtime compatibility, you can’t use SBX routines (unless you are willing to write them in AMOS assembler), but might use a scheme involving different sets of ++INCLUDE modules for different environments. If you don’t mind compiling under A-Shell and moving the RUN files to AMOS, then you can use TPRINT and DPRINT. The following table summarizes some of the compatibility relationships between features and environments.
|
AMOS Compile |
AMOS Runtime |
Dumb |
Notes |
SBX |
Y |
? |
Y |
Requires equivalent SBR written for AMOS for runtime compatibility |
Tab(-10,x) |
Y |
? |
N |
AMOS requires ATE client and am62cg.tdv terminal driver. |
TPRINT |
N |
Y |
Y |
Can be compiled as if PRINT under A-Shell for AMOS runtime compatibility; automatically treated as PRINT by A-Shell if not a graphic-enabled TDV |
INFLD |
Y |
Y |
|
Global TYPE |G can activate GUI mode; auto-reverts to text mode if no GUI avail. |
AUI CONTROL |
Y |
? |
N |
AMOS compatibility would require ATE client plus creation of AUI.SBR. No chance for dumb CRT; better to use conditional logic for text vs. GUI |
AUI MENU |
Y |
? |
N |
<same as for AUI CONTROL> |
XTREE |
Y |
? |
N |
AMOS requires ATE client, am62cg.tdv driver, XTREE.SBR (which supports a limited subset of XTREE functionality). For very simple trees, you can use INMEMO instead. |
AUI ENVIROMENT |
Y |
? |
Y |
Use other SBR (such as GETJTB) to determine AMOS environment |
AUI CONTROL |
Y |
? |
N |
AMOS requires ATE client, am62cg.tdv driver; use XCALL MIAMEX,119 (MX_CONTROL) instead of AUI_CONTROL. |
AUI IMAGE |
Y |
Y |
N |
AMOS requires ATE client, am62cg.tdv driver; use XCALL MIAMEX,119 (MX_CONTROL) instead of AUI_CONTROL. |
MOUSE |
|
|
|
See the following section on "Using the Mouse." |