On 11/15/19 20:53, Paul Koning wrote: > I wonder if the UDA50 microcode can be found. That's a bitslice (2901 ALUs > plus 2910 branch controller) which presumably would be pretty easy to emulate > in a small FPGA.
If it used Am2901 series parts, I wonder if it used Am2908s too for the bus drivers. We used those on our wirewrap prototype (they saved I/O pins to the FPGA which was important at the time) but planned to go to all DS8641s for the real thing (a 324 pin BGA package has a *lot* of I/O pins and I've used most of them). I guess it would be easy enough to replicate the function of Am2908s inside the FGPA though. Anyway, the difficult part of using the actual microcode from the UDA50 is going to be the other side of the device. The interface to the disk drive of the day is not going to look anything at all like an SD card. Not sure it'd be worth trying to fake out that interface unless yo had some strong reason for wanting to run that microcode. > I once saw a bit of the source code. It was very strange because it had two > opcodes per line, one for the ALU and one for the branch controller. Since > the condition codes took a cycle to get to the branch controller, you might > see weird stuff like this (paraphrased, I don't remember the actual opcodes): > > CLR R0 ; BNE label > > which takes some getting used to if you're a conventional sequential > programmer. Richie Lary of PDP-8 fame did part of that microcode. When I started getting more into this micro-coding stuff, Noel pointed me to a book called Principles of Firmware Engineering in Microprogram Control by Michael Andrews. Interesting stuff and he presents several designs that make this clear separation between the control portion of your micro-instructions and the sequencing portion.