Some of you may remember my earlier work on PLASMA, the Proto Language AsSeMbler for Apple. Some of you may even know it will be the language of Lawless Legends (https://www.facebook.com/LawlessLegends). But now, with a flurry of previous concepts and new ideas developed for the LL implementation, comes PLASMA 123. Why 123? Because it runs on the Apple 1, ][, and ///. “No way!”, you say. Way. And it runs the exact same PLASMA modules (user programs and libraries) on all three systems, without modification. That’s the power of a VM. But this VM was designed specifically for the Apple II (both 64K and 128K fully utilized) and the Apple /// (uses extended memory addressing, up to 512K), from the beginning. The Apple 1 got a quick port because of the awesome CFFA1 (Rich may still have some left).
Now this is a pretty early announcement, but I thought some of the more technically adventurous may want to take a look and provide some feedback, or at least poke at it. You can find all the source and preliminary documentation on GitHub: https://github.com/dschmenk/PLASMA
There is a demo disk image in the GitHub project: DEMO.0.9.PO – it is a dual booting disk for the Apple II and III. It will boot into a simple command line prompt. The commands are:
c – catalog current path
– catalog path
v – list on-line device volumes
– set prefix to path
+ – run PLASMA file
– – run SYSTEM file (Apple II only)
There are only two sample PLASMA programs to run on this image: HELLO and TEST. Run them, as documented above, with ‘+hello’ and ‘+test’.
The HELLO module is pretty simple. The TEST module actually loads a module dependency, TESTLIB, as it runs. It is just my language test coverage module, using a bunch of different aspects of PLASMA. If you see a bunch of junk on the screen with HELLO on your Apple ][ or ][+, that means you don’t have a lower-case adapter and I haven’t forced the output on those machines to upper case yet.
So now we have the grand unifying environment for the 8 bit Apples. And it’s fast. I developed some new interpreter technology for this version: about 3 times slower than native compiled 6502, but about 10 times as dense, and code doesn’t take up precious main memory (on 128K Apple II or Apple III). You can still write ASM functions inside your PLASMA module for those times that speed is critical above all else.