Posts

MacIvory FEP File Formats

I've been playing around with the MacIvory FEP (Front-End Processor) to learn more about how the Symbolics Ivory environment gets started. Not everything is yet clear to me, but I wanted to record some information about the "cold load" environments files. The Ivory chip uses 40-bit words, where 32 bits make up the "address" or immediate portion of the word and the upper 8 bits are a combination of type tagging and "cdr code" flags which allow for compact representation of lists and, in code, program counter sequencing flags to allow for half-word instructions to be compacted around full-word instructions in the stream. A lot more information can be learned from a number of sources. The previous generation "3600" machine was disclosed pretty widely in the literature, and ideas like type-tagging and cdr-coding are very similar between the machines. Bitsavers has a few files scanned from internal documentation. Most informative are I-Machine Ar...

Further Notes on Open Genera on Linux

The previous notes don't seem to work in all circumstances. In particular, trying to enable a CHAOS networking port in .VLM configuration causes NFS to fail in the writing of the Site file. I have been unable to diagnose this as it appears the VLM stops trying to use NFS to access the file after starting a write, and then times out, not even showing any activity on tcpdump when a restart is attempted. It's possible the presence of a CHAOS interface causes it to expect NFILE or perhaps it decides to prefer FTP over TCP. In principle, it should be possible to invoke the debugger on the VLM to understand what is going on, but all the networking is very flexible and elaborate and I have no idea how to debug Genera at this point. On the Linux side, I can find nothing at all that shows an error or misconfiguration or anything at all once the problem starts. After defining the site and saving an incremental world, adding a CHAOS interface seems OK, but I have been stumped trying to ge...

Open Genera VLM on Linux

There are some existing guides to setting up the (unauthorized) Open Genera VLM on x86-64 Linux, but I wanted to tweak them a bit, and came up with a couple of items that diverge from the existing advice. Note that a bunch of URLs on that link should point to https://archives.loomcom.com/  not the static.loomcom.com address. My general goals were to avoid having to run the genera binary as root, and run as a distinct user to have some sense of security (even if the sense is misplaced). I also wanted to change the network addresses, and don't want to use the standard pathnames for the Unix system files and the user directories, and the changes to do so were only in screenshots. My setup Ubuntu 18.04.4 LTS, amd64 My Linux machine is named ubuntu I want all this simulated Genera stuff to happen on  subnet 10.0.10.x  with my Linux host under the name  genera-ubuntu  at 10.0.10.1  and the virtual Lisp machine genera  at 10.0.10.2  (...

MacIvory FEP diagnostics

A quick note to try to make this information available on the net. Trying to troubleshoot my Symbolics MacIvory, where my Quadra 900 was encountering bus errors from time-to-time and, at least once, Genera spammed me with tens of thousands of notifications about low-level drawing operations gone bad, I wanted to exercise the NuBus memory card (a National Semiconductor NS 8/16 with only 8 MB of RAM). The FEP ("Front End Processor") contains a memory test routine, but it has to be explicitly loaded. FEP Command:  is the prompt that shows you are talking to the "MacIvory FEP"; in the "Ivory" menu of the Genera application, you should be able to "Transfer to the FEP". The FEP prompt responds to the "help" key, by the way, and has commands like " Show Command Tree"  that shows the loaded commands. FEP commands themselves are stored in .FLOD  files . Show Directory FEP0:>*.FLOD.newest will list them. " I328- ...

FPGA selection for beginners

I'm not particularly expert on FPGAs, but I feel like sharing some of the thought process and research I did in getting into tinkering with FPGAs to help other people contemplating such things. Why FPGAs? FPGAs are the go-to solution for "digital things that can't be done with Raspberry Pi, Arduino, or other microcontroller plus software." If you want more than a handful of discrete digital devices in your project, an FPGA (or its smaller cousin, a CPLD) can be whatever collection of gates you need. From a more industrial perspective, they are a stepping-stone to the kind of large-scale digital design that goes into developing ASICs and high-powered DSP solutions. I'll probably discuss later some of the things that are probably not suited for FPGAs and assume for now you at least understand what they are, what they can do, and you just really, really want to use one. You want to buy an FPGA for good reasons and can't decide which: how to choose? Choo...

1213486160 or 1347703880

As a public service, I would like to remind everyone that  1213486160 == 0x48545450 is 'HTTP' as a 32-bit integer  on a big-endian machine using ASCII or UTF-8. 1347703880 = 0x50545448 would be 'HTTP' in little-endian 32-bit format. Neither is likely to be a packet length.

Converting ITS documentation

I've been playing around a bit more with the Incompatible Timesharing System (ITS). I figured out enough networking on my Mac to be able to use the Java Supdup terminal application to interact with KLH-10 simulating the KS10 architecture. As part of my study, I have also been converting some INFO files to Texinfo, starting the with the file (slow link to UP.update.uu.se ITS system) INFO;DDT > which Bjorn Victor converted to an HTML version: DDT Primer ). I like Texinfo because it can (theoretically) print nice looking books for an ebook reader like my new Kindle Paperwhite, as well as Info compatible for Emacs navigation, and HTML. Actually distributing these files is problematic. ITS generally seems to have operated with a pretty free notion of distribution: send a magnetic tape to pretty much anyone with a PDP-10 who asked, without executing any kind of explicit license agreement, or even having copyright notices on the text. Anyone with access to the system could take i...

Basic ITS hacking

OK, so ITS has only one level of directory in its file system, otherwise known as the SNAME portion of a filename. How do you create a directory if there isn't one already? For instance, if you login as an unknown user JAO and ITS complains it can't find MD:USERS1;LOGIN JAO , and Emacs won't let you create a file USERS1;LOGIN JAO because USERS1; doesn't exist, what do you do? I expected there to be a DDT command to create a directory. But there isn't one. I found a cryptic comment to "look at the documentation for the OPEN UUO." So I did. Examining SYSDOC;_CALLS.124 The file names ..NEW. (UDIR) cause a new directory to be created with the given sname if none already exists. Creating a directory in this way causes a message to be printed on the system console. (A directory is destroyed only when the disks are salvaged by the stand-alone salvager, which is generally run just before the time-sharing system is restarted. A directory is then destroy...

Getting KLH-10 and ITS to work under Mac OS X

I've cycled back to being interested in the Incompatible Timesharing System (ITS). In the interim, I replaced my G4 iBook with a Intel-based MacBookPro. With a bit of hacking, I was actually able to get local networking to communicate with the simulated PDP-10, and thought I would record some of the details. I needed to Install tuntaposx . I used the macports version. Crudely hack the ks-base-its build in klh10-2.0h from panda-dist (and additional patches) to define KLH10_NET_TUN=1 under Mac OS X. I need to clean up my own sources and put them up on github. Also, I needed to hack around the removal of "mtio.h" from Mac OS X 10.6, borrowing the minimum definitions from FreeBSD headers. I guess Apple decided they really didn't want tape drives connected to their machines. Maybe it is still in OS X server? There are a few rough edges in tun/tap support. Following a hint I found online, I open a bash shell as root, and execute exec 4<> /dev/tap0 # create t...

Restoring the Heathkit Jr 35

Image
Heathkit Jr Electronic Workshop "35", Model JK-18 The Heathkit Jr 35 evidently had been stored with batteries in the battery holder, which corroded badly. I replaced it with a plastic RadioShack 4 D-cell battery holder (270-389), wired into the negative power rail and the hot side of the power switch (which is part of the variable resistor). Corroded battery holder Replacement battery holder mounted I mounted the replacement battery holder with a dozen "heavy duty" 1 inch foam double-stick mounting squares (rated to hold 900g), stacked in four groups each three high to overcome the various screws protruding through the main board. The remote speaker station The rubber foot used to protect the relay from being crushed when you turn the kit over was stuck to the remote speaker station. I put it in its rightful place. Relay with the brown rubber foot Earlier, I had built a couple simple circuits, which showed the meter and new battery pack w...

Heathkit Jr. 35

I just picked up a Heathkit Jr. "35" circuit experimenter kit on eBay. I had one of these as a child; I don't remember how it is that we came to own it, but I had an itch to re-read the manual. Buying the manual from vintagemanuals.com would have cost as much as the kit + manual. I remember being befuddled by the descriptions of how transistors worked. It turns out the descriptions of capacitors and transistors were a bit sketchy: I think it is pretty much impossible to understand how the AM radio experiments actually function from the text. The operation of the ferrite-core antenna and the various windings are unexplained as well. I was a bit surprised to find all four transistors in the kit are identical. Thanks to this Heathkit part cross-reference , I see that they are part 417-118, a.k.a. 2N3393 NPN transistors.

Importing from Wordpress.com

I'm working on importing my blog from Wordpress.com . Blogger.com apparently will let me use AdSense even with free hosting, and I should get to know more about AdSense and about the Blogger platform as well, as a Googler. I used the Wordpress.com export feature to create an XML file, and used the http://wordpress2blogger.appspot.com/ tool to convert it, as I was under the 1 MB size limit. The code behind that converter is evidently at  http://code.google.com/p/google-blog-converters-appengine/ . That tool plus Safari saved the result with an .xml.html extension, which resulted in a Blogger error code of "bX-uroqxm" when importing. Removing the extraneous .html allowed the Blogger import to mostly succeed. It does not re-map my Wordpress author identity to my Blogger profile. It also does a pretty poor job importing my source-code formatted content. So I'll be slowly publishing the old posts, tweaking that kind of thing as I go.

ChaosNET implementations for PDP-10

This is not particularly interesting, but I wanted to record a couple of links to ChaosNET code for the PDP-10. The ChaosNET memo describes an ITS (Incompatible Time-Sharing System) interface, for which the code is somewhere in the ITS sources, and a Lisp Machine implementation, for which code is in the CADR sources and Symbolics code base, but also a TOPS-20/TENEX implementation, a VMS/VAX implementation, and a UNIX implementation. The UNIX implementation was documented by James E. Kulp for Symbolics, and the code seems to have survived. The TOPS-20/TENEX is harder to find, but it looks like BitSavers' Foonly archives have some files. DSK:<FOONEX>CHAOS.MAC;399 DSK:<FOONEX>CHABUG.MAC;8 DSK:<FOONEX>CHAOS0.MAC;3 DSK:<FOONEX>CHATTY.MAC;21 I have no idea whether this is at all related to the implementation the AI MEMO mentions. A Google search turns up some interesting code (might be for the PDP-11 front end, for ITS) from AI:SYSTEM CH10.defs1 ...

Another Symbolics keyboard adapter

Hans Hübner has been at it again, and has developed code to allow a  Teensy AVR development board to adapt a Symbolics keyboard to USB . I ordered a Teensy board of my own, and was hoping to develop a small adapter to avoid cutting up my keyboard cable, but Teensy does not work with my old Mac OS X 10.4 system.

News on Symbolics keyboard adapters

I wanted to post a link referring to recent progress on adapting Symbolics keyboards to modern PCs. Hans Hübner announced that the kbdbabel project (apparently based on 8051 microcontrollers) was able to be adapted to support the slim-line (Rev. C) Symbolics keyboard, adapting it to PS/2 protocol . My own work in this area ground to a halt pretty soon after I received the ADB adapter from DKS. I'm happy to see that others have been able to make progress! UPDATE: Rainer Joswig has commented on his experience using the kbdbabel adapter to connect a Symbolics keyboard to a Macbook running Mac OS X . UPDATE 2: Hans has developed a USB adapter solution .

COMFY-6502: hosting at github

Mostly to support my own development on multiple computers, I've moved my Common Lisp port of COMFY-6502 to github. I chose the name cl-comfy-6502 for the repository, although the "cl" prefix is a bit ugly. The current snapshot of COMFY-6502 .

Adventuring into embedded ARM

After trying for a while to install Linux on my old Palm Tungsten E and failing, because of hardware issues (perhaps explaining why I replaced it with an E2 way back, although my memory is dim on that), I bought an LN2410SBC from LittleChips.com .

Monthly Boston Lisp Meeting: report

Thanks to François-René Rideau ( fare ) for organizing last night's inaugural Monthly Boston Lisp Meeting (Note: future meetings will apparently happen on the fourth Monday of the month.) I'm surprised I haven't seen reports on Planet Lisp yet, but I had an enjoyable time. I certainly didn't meet everyone there, but did get to meet nyef (who showed off some of his fearless adventuring into bare-metal Lisp) and Brad Parker, got to see Kent Pitman in person, and a few other notables, as well as numerous ITA Lispers. Discussion was wide-ranging (I heard only a fraction of the multiple conversations going on), and some of the most interesting stuff to me was discussion about the background of Dylan and Lispers at Apple in the 1990s. There was at least one person taking pictures; I'm sure they'll pop up somewhere in the blogosphere. Looking forward to more great meetings in the future!

COMFY-6502: snapshot

Even though it is hardly a finished product, I've posted a snapshot of my current CL conversion of COMFY-6502 Not that I expect a huge pent-up demand for the code, but it might be slightly more interesting than the output examples. Thanks to Henry Baker for allowing the release. The page also contains a link to the TODO file describing my next steps. (Most immediately, my attempt to include JMP elision was messy enough to convince me I need a different class to represent opcodes+arguments as a unit.)

COMFY-6502: a slight correction

After all the work to write a post showing off COMFY-6502's ability to reproduce the Red Book tone routine, I made a slight mistake in translation. The code I presented differed ever-so-slightly from the Red Book routine in the case where the Y-register reached zero.