# Runtime Compatible

> [HTML Version](runtimecompatible.htm)

The Run Compatible (**RC**) switch enables the use of several compiler and source code enhancements without breaking backwards Runtime Compatibility with AMOS. To be effective, you must use with COMPIL.LIT / OCMPIL.LIT 1.0(117)+ (not COMPLP) and without any of the /X:# switches. The idea is to accommodate people who want to compile under A-Shell and use as many A-Shell features as possible, but still retain the option of copying the RUN files to AMOS for execution there. 

The features which /RC adds to COMPIL or OCMPIL can be divided into fully and partially supported categories, as shown below.

Fully Supported:

| | |
|------|------|
| DEFINE  | [.SIZEOF()](sizeof().md) |
| DEFSTRUCT / ENDSTRUCT | Use of underline in identifiers |
| Hex, Octal, ASCII Literal Values (\&h10FC, \&o1777, 'a') | Max source line length of 3070 instead of 512 |
| IF / ELSE / ELSEIF / ENDIF  | \++INCLUD nested 13 levels deep |
| DO / WHILE ... UNTIL / LOOP | \++PRAGMA (all) |
| BABIC_plus_-style FOR/NEXT   <br>semantics (test before loop) | Comment may follow an \& on a continuation line |
| EXIT / REPEAT | \++ERROR, ++MESSAGE |
| SWITCH / ENDSWITCH | Conditional compilation (++IF, ++IFDEF, ++IFNDEF, ++IFMAP, ++IFNMAP, ++ELSE, ++ELIF, ++ENDIF) |
| Shortcut Operators (var += <expr>, etc.) |  |




Partially Supported: 

| | |
|------|------|
| 3D TAB(x,y,z): z value ignored | DPRINT / EPRINT / TPRINT: compiled as if PRINT |
| TRACE.xxxx / DEBUG.xxxx: compiled as XCALL EVTWIN | DIMX: compilation only, and only if OPTIONS=RC\_DIMX. |




See the discussion on [A-Shell Extensions](a-shellextensions.md) for more information on all of the above statements and features.