21 Home
David Schmenk edited this page 2018-07-14 08:48:37 -07:00

These pages are for documenting and discussing the libraries, sample code, and internal architecture of PLASMA. The language is documented on the main page and hopefully answers any language specific questions.

Installation Guide:

PLASMA 2.0 has grown significantly from version 1. Follow the Installation Guide for setup.

PLASMA Libraries:

PLASMA has grown over a number of years and certain constructs have been developed over that time. As a result, some samples may look slightly different than others.

The larger libraries provide an API based on function pointers. This allows machine differences to be determined at run time and hidden from other modules. These libraries will provide a header file that exports a pointer to a function table as a structure. To call a library function, it will look something like:

libAPI:someFunc()

If the function doesn't have any parameters, the () are still required because the function will be accessed as just a word without them. The syntax superficially resembles object oriented language constructs and not by accident. Note that function pointers don't get the same parameter/return values checking that regular function definitions get. All library APIs return one value from every function so there isn't a danger of forgetting to override the return value count. However, the parameter counts aren't verified so you need to beware of getting them incorrect.

Smaller libraries will export the individual functions and you will call them just like any other.

PLASMA Sample Code:

The sample code has been subject to even more evolution than the libraries. Some samples look very different than others as the language grew. Looking beyond the inconsistencies, you should find many answers on how to program PLASMA using different features of the Apple 1, II, and ///.

PLASMA Internal Architecture:

PLASMA Byte Code Definitions

PLASMA JIT Compilation Implementation