Comments
Loading Dream Comments...
You must be logged in to write a comment - Log In
Artist
Here is a quick primer and description of the ::SHE+ILA:: operating system and programming language. ::SHE+ILA:: stands for Segmented Hierarchical Environment (the datastore) + Interactive Language Environment (the virtual machine and programming language). It will run on any 100% IBM-compatible PC (or if you hand-translate it, on any processor of your choice). It is a homebrew retro OS, using virtual memory and virtual addressing. In place of a "filesystem", ::SHE+ILA:: uses "Segments", i.e. groups of pages (like DOS clusters) containing intermingled code (programs) and data. Each thread (parallel process) has its own virtual stack and register set. The instruction set combines vector and matrix operations, BCD arithmetic, quaternions (extended complex numbers), and string/character functions. Hexadecimal constants are represented thus : $82, the Motorola convention (rather than 82H, the Intel convention, or 0x82, the Unix convention).
A quick look at the instruction set.
$00 to $1F ... Control characters
$20 to $7F ... ASCII alphanumeric characters
$80 to $E3 ... Packed decimal numerics (00 to 99)
$E4 to $FF ... operation codes (add, multiply, reduce, etc)
A quick look at the syntax
Foo <:: "Hello World"; // Specifies and initalises a variable
// This is a comment
\\ This is also a comment
ttyout("This displays a string on the screen", 123.45, 1+2*3^4, Foo, CRLF);
Vec <:: (1, 2, 3, 4, 5); // or we could say Vec <:: 1_5 using the RANGE operator
Sum <:: +/Vec; // Produces the sum, i.e. 1+2+3+4+5, as in APL
ttyout(Vec[3], Vec[4, 5], $~Vec, CRLF); // Displays 3 4 5 5 4 3 2 1
// The "$~" is the REVERSE operator, resulting in the elements of an array in reverse order
MyFunc <:: { (local1=3.14159, local2=0.7071, local3=2i3j4k5); ttyout(local1+local2, %, local3, CRLF)} // Define a function with local variables
Myfunc(42); // Call the function (the parameter is accessed by the "%" operator)
(&ttyout("squishy"), &ttyout("plushie")) [1+condition] // A simple IF/THEN/ELSE coded as a Case statement
i <:: 1; {* i++=< 5 : ttyout(i, CRLF) *} // A simple loop
{! thread1(); thread2(foo); thread3(bar) !} // Concurrent call of three functions
{? event1; event2; event3 ?} // Wait for any of three events
More examples and system documentation is at #sheila, in the description texts :)