Site icon Teens Toons

Lisp Machine Hacking (2018)

Lisp Machine hacking









What are Lisp Machines? See here (also has links to more information).

After hacking the CADR emulator (much fun!) in 2005,
I hacked emulators for the TI Explorer: the Meroko and Nevermore for a while.
In 2017 I was bit by the Lambda bug: the LambdaDelta emulator for the LMI Lambda by Daniel Seagraves.

I sometimes run a real Symbolics 3650, but it’s very very noisy (and the screen is now illegible)… Back in the old days I worked on real CADRs, LMI Lambdas, and TI Explorers.

LMI Lambda

The Lambda emulator (LambdaDelta) is really really good: on a modern machine it’s at least as fast as the original (although it interprets the microcode), and you don’t have to re-seat the boards every now and then, like on the original! So far I made small contributions to it, like implementing the visual and audible bell, and fixing small bugs.

I also ported the DNS implementation I did for TI Explorers back in 1987 to the LMI system, and implemented DHCP for it. Let me know if you want a copy (see also GitHub).


CADR

I hacked the keyboard emulation for the “new” keyboard, and the Chaosnet interface.

See some files for setting up the CADR system. To compile it on macOS 11.12, I needed a tiny patch to syms.c and to the Makefile.


TI Explorer

Check the Explorer manuals.

Meroko

  • Fixed RTC initialization so Lisp gets the time.
  • Fixed the X11/SDL display, keyboard and mouse handling.
  • Fixed the Ethernet, finally (yes, I believe it’s really working!)

Problems

Occasional MD CLOBBER PROTECTION STOP 7 crashes, reading #<SYS:DTP-TRAP 1> from random places, and “real” crashes, show the emulator isn’t bug free.

To do

  • Make keyboard bindings configurable.

Nevermore

I’m not actively hacking this anymore – sadly, it’s way too slow. The idea of writing a LispM emulator in Lisp is very nice though.

Patch for Nevermore to get swap space

The problem is that the third disk isn’t found. In nupi-nubus.lisp, the function nupi-handle-command-nupi-status, change (ash (+ 2 2) 2) to (ash (+ 2 3) 2). (This stuff should use a configuration.)

Make disk IO more efficient

I have changed nupi-handle-command-drive-read and nupi-handle-command-drive-write so they don’t open the disk files on each request, but keep them open. Will post the patch later.

Current work

I’m hacking the RTC support, and interval timers. The clock seems to be fairly correct, but microsecond-time is not – this shows up in timeouts and in the console idle time.

I have made some basic mouse support.

Problems

  • cmulisp has 100 internal-time-units-per-second which may be too slow for the Explorer.

To do

  • The X interface draws each pixel individually. There must be a more efficient way.
  • Keys repeat way too quickly, it seems.
  • The key bindings should be easier to configure.
  • and Ethernet support, of course.


Exit mobile version