Undâr Programming Language

A statically-typed permacomputing-oriented language for the purpose of creating 1st generation style 3D games and graphical user interfaces that work on constrained systems, microcontrollers, retro consoles, and the web using emscripten. It runs on the Reality Engine a 32 bit VM written in C89.

Install

git clone https://git.alfrescocavern.com/zongor/undar-lang.git
cd undar-lang && make
./build/linux/undar-linux-debug ./test/hello.asm.lisp

Hello World

/**
 * High level C-like syntax (WIP)
 */
function main(int argc, str[] argv) {
  str name = "World";
  if (argc > 1) {
      name = argv[1];
  }
  print("Hello, {name}!");
  return 0;
}

Philosophy


Development Timeline

Milestone Feature Status
Pre Alpha Primitive Types Done
Q16.16 fixed point Reals Done
Arithmetic Operations Done
Alpha S-Expression Assembler Done
Touch Device Done
Webassembly Arch Done
Paint program Done
Beta Display Device Done
Mouse Device Done
Terminal Device Done
Keyboard Device Done
8bit, 16bit numbers Done
Memory allocation refactor Done
Assembler rewrite (no malloc, new syntax) In progress
Compiler In progress
Refactor Device, merge with Tunnel Todo
Static Arrays Hardcoded implementation
Plex Implementation Hardcoded implementation
String Opcodes Todo
Fonts Todo
File Tunnel Todo
Minimal Standard Library Todo
Immediate mode UI Todo
Trigonometry Operations Todo
Unit of measure Todo
3D Graphics Math/Primitives Todo
Gamepad/Joystick Device Todo
3D Collision/Physics Todo
Proof of concept 3D platformer Todo
Version 1.0 Sound Device Todo
Network Device Todo
Actor system Todo
Networked Tunnel Implementation Todo
Multiplayer Proof of concept 3D platformer Todo
Localization Todo
Arch without FPU (Maybe PS1?) Todo
MMO Proof of concept Todo
Post Version 1.0 Code Editor Todo
Self hosted assembler Todo
Self hosted compiler Todo
Multithreaded actors Todo

Inspired by

Uxn, Plan 9, Dusk OS, Dis VM Forth, Lisp, Fortran, C, Zig, Lua, Lox,