STATUS ====== Development is occurring mainly in the **pymlac** subdirectory. Some development of tools occurs in the **pyasm** directory. The CPU has been tested. The papertape reader/punch device and the TTY devices (input and output) seem to work. The display instructions and device are now being tested. Testing is stalled a little as the chosen GUIs (wxpython or pyQt) have problems being installed on OSX. Testing continues with the display being simulated by writing a PPM graphics file for each refresh of the display. Slow, but it means testing can proceed. I'm still thinking about what graphics framework to use for the display. I may just choose something simple that just shows the screen and forget about anything showing the address lights, etc. This fits in with the CLI approach used in **pymlac**. The Imlac ========= When I was doing post-graduate study at Sydney University one fun machine I worked on was an `Imlac PDS-4 `_ . This was a 16 bit vector graphics minicomputer with a general purpose main CPU and a specialised display CPU - all implemented with 7400 series chips. It had real core memory, a papertape reader/punch, a trackball and a lightpen. Later on it acquired 8-inch floppy drives but few people used these as they were too unreliable. Besides, there's just something about papertape! The attraction of the machine was its simplicity, its graphics capability and that it ran `Spacewar! `_ I have many fond memories of this machine. It was the first machine that I programmed in assembler. The Imlac has long since gone from the university. No one knows what happened to it. There is a little information online: * Tom Uban's `Imlac picture gallery `_ and `software library `_ * The `Blinkenlights `_ archive of Imlac information * Imlac at `old-computers.com `_ * Inevitably, there is an `Imlac Facebook page `_ * A working Imlac emulator is `here `_ * Some information from `chilton-computing.org.uk `_ It's a little sad to see this machine fade from memory. I wrote an emulator for the Imlac in C with an X display window quite a while ago, but didn't proceed with it, possibly because it would only run on Linux. Now I would like to experiment with a rewrite in Python and use wxPython or pySide for the graphics. This repository holds the code. Overview -------- The Imlac was a simple machine that was driven in the old style: the user sat at the screen and loaded a papertape, set the PC address and then pressed the RUN button. Observing the address lights as the program ran could tell you something about the operation of your code. To debug your program you could paddle around in core and look at the contents of various addresses. Really steam-powered stuff! Since core memory is non-volatile it was possible to switch the machine off and turn it on days later and find your program and data still in memory. This emulator recreates this behaviour by writing the contents of core memory to a file when terminating. This *core* file is read in when the emulator starts. This way we can emulate the behaviour of core memory. To emulate this style of operation as much as possible, the console version of pymlac takes a series of *operations* arguments that are performed left to right. These operations are things such as loading a papertape into the reader, examining memory contents, setting the data switches or setting the machine run address. Console usage ------------- The console version of pymlac is used: :: pymlac [