Cheezy Unlimited Main Page

Programs & Programming

These are my ventures into the realm of programming. Some of my programs may require the VB5 runtime or other such library files.

My programs

Function Grapher: very slow, because I am lazy & not very good at optimizing. Also, it requires MSSCRIPT.OCX.
UDP Chat: simple UDP-based chat program. It requires MSWINSCK.OCX. Default IP:PORT is the one I use at home (so you can talk to me if I am online & have the program running, which is unlikely because I rarely run Windows any more).
Z Interpreter: implements most of the Z langauge (see below) I devised.
RN Evaluator: implements the RANDY'S Notation language (see below) I devised.
Wave File Generator: input function(s) & it makes a wave file. The length in seconds, sample rate, 8/16 bits per sample, & mono/stereo can be selected. It requires MSSCRIPT.OCX.
Tengwar Keyboard Layout: for Windows XP & Code2001 (or another font that uses the Private Use Area to encode Tengwar), made with Keyboard Layout Creator. I do not know if it will work on other Windows versions.
Quaternions, octonions, & sedenions in Scheme: only known to work in DrScheme, but they should work elsewhere. Each requires the previous one(s) due to the use of the Cayley-Dickson construction. I, RANDY, hereby place these 3 Scheme files (quaternion.scm, octonion.scm, & sedenion.scm) in the public domain.

I wrote a Visual Basic program which outputs an NTSC monochrome (well, RS-170A) video signal (just some rectangles with different shades of gray) through the parallel port (plus a D/A converter, of course). The code is not here because it is messy & requires the exact hardware setup I have, for which I do not have a schematic, & it does not work with all televisions. Plus, it might damage some if it is too far off the correct timing. It works on my portable TV, but not GigaPocket. I suppose the timing is quite a bit off...oh, well. It is amazing that an interpreted language can do that at all! Next, I hope to port it to my TI-92+ if the link port has high enough bandwidth (I know the processor is fast enough). Actually, I tried it on my TI-86, but the link port circuitry turned my square waves into...something other than square waves, anyway. Later I found out that the waves are within tolerance but the clock generator on the TI-86 is too inaccurate, so the picure rolls.

I have a Super Mario Advance 2 editor (no relation to Nintendo) in the works. No timeframe for completion, though, because QUESO (see below) is a higher priority.

My programming languages

(codenamed QUESO): coming Real Soon Now (i.e. just go away & pretend you never heard this). My current plan is for it to be a strongly typed reversible pure total functional language with reflection & reification facilities & dynamic translation. I axed the "tags" because subtyping can handle everything they could & more, & can moreover prove nice properties about them. I intend to use it to write itself, an IDE for it, an operating system (maybe if my optimizer is decent, it would even work for the Z80-based computer or my TI-89 Titanium), & probably some other similar nonsense. I hope to have something up & running by the end of Christmas break (i.e. mid-January), but as everyone knows, delivery dates have a habbit of slipping. I make no guarantee that whatever I have by then will by ready to be released, but I might put up screenshots.

Z: named after my favorite letter. This file contains the specification & implementation notes.
Technically, this is RZ3 (RANDY'S Z, number 3) because I have 2 unreleased languages also called Z which were made before this one, but unless I release them I shall simply call this Z. The Z programming language is an esoteric programming language (that is, it is intentionally strange). It combines the procedural & functional paradigms, & also throws a little bit of stack-based (FORTH-like) stuff to make it more flexible. I made an interpreter, but it does not yet support the entire specification (it does not implement parentheses). If you are going to make an interpreter or compiler, please follow the specification as closely as possible. It is better (in my opinion) to not implement part than to implement it incorrectly. This will help others concentrate on writing good programs, not supporting various incompatible environments.
If anyone is interested, I have written a Z compiler in Z which implements part of the standard (enough to compile itself). Unfortunately, it no longer works due to some modifications to the specification. Send me an e-mail if you would like to see it included here; perhaps someone else could fix it (I could if I had enough time).
While reading about the game Nomic (in which one can change the rules) in Metamagical Themas, I was reminded of the possibility in Z of redefining the built-in operators. If the interpreter compiled & optimized operator definitions when they were given (to increase processing speed), it would give the unexpected benefit of allowing circular operator definition, as the specification states is allowed. This would be similar to the game of Nomic, only (initially, at least) more permissive. This is also similar to Hofstadter's idea of a computer that could change the way it interprets its machine language.

RN: short for RANDY'S Notation. This strange language uses only parentheses, & yet is turing complete. Essentially, expressions of the form ((searchfor)(searchin)replacewith) become searchin, but with searchfor's replaced with replacewith's. Output is given by leaving numbers as results of top-level functions with ()=0 & (x)=x+1 (this does not work on the TI-89/TI-92+ version of the interpreter).
Fibonacci sequence generator - initial program in the Windows-based interpreter above.

001449
Send questions & comments here
The fine print: these pages copyright ©2004-2009 RANDY Compton. All rights reserved. No waranty whatsoever, express or implied.