Rom generation

Continuing somewhat on the subject of the last post, I have recently made a significant change to how the various ROMs are generated.

PDP2011 has many ROMs in it – with the last post in mind, most obviously of course the bootroms, but there are more – there’s the microcode for the XU controller, for the embedded VT10x terminal, for the font that the terminal uses. And a couple for the few remaining test programs that I still sometimes use. There used to be a lot more test programs though, and while most have been superseded since it became possible to use the XXDP test programs – and the listings are available – I’ll keep the most generic around to use for some very basic testing. Such as I would need when I ever get back to tinkering with the timing of the CPU, or converting it to a hardware oriented microcode machine instead of the behavioural VHDL model it now uses.

The decrease of the amount of test program ROMs combined with the reworking of the bootroms however caused a shift in the rom generation – a lot fewer ROMs, but more variety. The test programs were mostly uniform in the kind of ROM they would require – so it made sense to use a few ROM vhdl templates that would serve for many ROMs. But lately that balance has shifted – for instance, the VT microcode component has a writable space from address 0 to 1000, and the rest is read-only. And the same will apply to the XU microcode once I’ve done the planned rewrite on it. The new bootroms each need a different component name – in short, it made sense to go to a model that each rom gets a dedicated template.

The font rom of the new VT component already used the new style of rom generation – in short, the output of the tools – macro11/genblkram or other, as required – generate only the VHDL statements for the initialisation of the rom component. Then, the Makefile uses sed to stream-copy that into the template and generate a new VHDL file that way.

Unless you have been tinkering with PDP2011 at a rather deep level, you wouldn’t notice this change – since I distribute the sources with all generated components already in it, and there shouldn’t be any need to change any of the code or the font. But if you did change any of the bootrom code, the embedded VT code or the font it uses, or the XU microcode anyway, you’ll need to be aware of this change. Look into the Makefile for details on how it works now – when I get around to publishing the latest version, which will be in a few weeks.

Leave a Reply