Chaos Networking

ChaosNET was a LAN technology contemporary with the MIT Lisp Machines. Today, it is of interest mostly to those emulating the Incompatible Time-Sharing System (ITS) and CADR Lisp Machines.

This code implements a multi-threaded Network Control Program under OpenMCL running on Mac OS X, interfacing with Unix-domain sockets containing emulated ChaosNET packets. It is my first real effort to deal with issues of multithreaded synchronization.

This code works well enough to allow the USIM emulator to communicate with a simulated host named "openmcl", including flow-controlled bi-directional streams, and the beginnings of mail and chat protocol support. I suspended development of this code to work on a Python-based implementation that could be used on Windows, and also to learn Python.
Component files

    chaos.asd The system definition.
    openmcl-chaos.lisp The Network Control Program.
    chaos-mail.lisp Basic gateway for outgoing MAIL transactions
    chaos-file.lisp Beginnings of support for the FILE protocol

Lisp-machine compatibility

    lispm-compat.asd is the start of a library of routines for compatibility with the Lisp Machine Zetalisp environment.
    lisp-machine-char.lisp is a crude mapping between the Lisp Machine character set and ASCII. Mostly, it swaps control characters from above octal code 200 down to zero, and vice-versa.
    lispm-compat.lisp is a collection of other utility routines that I built up trying to port the Lisp Machine microcode compiler to Common Lisp.


My Python equivalent uses asyncore; it might be interesting (and applicable to single-threaded CLISP) to try to build an entire ChaosNET stack based on an asynchronous architecture.

Original location: