StarLite is/was (depending on your point of view) the language I created for the development of Prodigy. It was designed to run on a standard PC under DOS, using the memory above 1Mb via the LIM (Lotus-Intel-Microsoft) EMS (Expanded Memory System). This meant either a machine with a hardware memory board in, or a 386 (or better, except the 386 was as good as it got at the time) with memory manager. My chosen memory manager at the time was Quarterdeck's QEMM (which I had to buy in from the US at the time).
Using EMS created additional problems, as the memory was only addressable in 16Kb segments, which had to be manually paged in and out of the 640Kb-1Mb address space. To address this, StarLite was based around an internal memory manager, which split the EMS into two types - units and messages.
Messages were multi-line text items, and could be manipulated on a line-by-line basis, with the limit for a single message set at 64Kb (4 16Kb EMS pages). These were intended for game text, room descriptions, etc.
Units were more complicated - within a unit were a number of additional data types:
|long||32-bit signed integer||long.1, long.15|
|pair||a||16 bit signed integer||pair.1.a|
|b||16 bit signed integer||pair.15.b|
|complex||val||16 bit signed integer||complex.1.val|
|flag||8 1 bit flags||complex.1.flag.1, complex.1.flag.7|
|spare||8 bit unsigned integer||complex.1.spare|
The number of each data type (and size of strings) was defined within the game code, using a number of special instructions. All units were identical in structure, and could be used by the system for any purpose - the division into game objects (players, personas, objects, locations etc.) was entirely up to the code.
The language was designed to be as flexible as possible, in fact it needed to be. With very little in the way of game mechanics defined within StarLite, the aim was to provide a general purpose language designed for a multi-user game, but without defining how that multi-user game would look or feel.