FIS instructions

PDP2011 can now also be configured to include support for the FIS instructions instead of the full FP11.

Why? Well, that started with Jan Secker’s plan to make the smallest ever MINC – based on the 16K LE max1000, the smaller brother of the cyc1000 that uses a Max10 FPGA instead of a Cyclone-10. But the FPGA did not have enough resources for a full MINC system including the vt105, even though it is the ‘big’ version of the board.

So PDP2011 had to become smaller, and the only way that I could think of was to replace the full floating point unit by the much more limited FIS, and hopefully save lots of resources in that way. After all, FIS only has 4 instructions (FADD, FSUB, FMUL and FDIV) and only does single precision – compare that with FP11 which has 6 dedicated registers, does double precision, can be set to round or truncate, and has many more instructions and all the regular addressing modes.

Implementing the FIS instructions was actually easier than I thought it would be – basically, it is a simple copy of the FP11 and then taking out all things that were not needed. The only thing that caused some real puzzles were the condition codes. And since the MINC systems with a FIS would by definition be LSI11-based, also some extra complications from the mtps and mfps instructions – since LSI11 doesn’t have the PSW at 177776 like the bigger PDP11s have.

And yes, it worked – where the regular 11/23 MINC PDP2011 uses about 15700 resources, the new 11/03 with EIS and FIS only needs 10700. And that leaves enough room for the vt105 and everything else to complete a full MINC on the max1000. Not a lot of room for blinkenlights left though…

I’ll add a board directory for the max1000-based MINC in the next release (soon-ish!). However they’re not currently in stock anywhere – but if you find any, make sure you get the bigger 16K version; the 8K version is definitely still too small.