Radix said:
Hi - I'm just curious as to what you have seen suggesting the RQDX firmware is compiled from C - rather than assembler?
As Hunta also noted, the RQDX3 source code is available and written in C and PDP-11 MACRO.
It looks like an early C compiler.
There are no function prototypes at all, from what I can see, which I guess would rule out later compilers who get finicky about that sort of thing.
A tell-tale sign is that it requires a compiler with separate namespaces for struct tags (because it reuses tag names). My recollection is that the Whitesmiths C compiler did not have separate namespaces, neither did the early Unix C compilers. DECUSC has separate namespaces and was available post-1984 IIRC.
The package includes sources for printf and scanf, getc and putc. Getc and putc talk to a terminal directly (but not at 17756x).
The printf.mac code is clearly adapted from the DECUSC source code, or from a shared ancestor. It's streamlined, commented and the local symbols are renumbered, but the logic and data labels are the same. The comments are in exactly the same style as the RQDX3's other MACRO modules.
DECUS-C was substantially written by Martin Minnow, a DEC employee (either before or during its construction). A story I heard was that the DECUS-C compiler was based on the reverse-engineered Unix compiler object files. That was probably truer for the early stages of the compiler, if at all.
I recall a story from one of the RT-11 team leaders who told me, IIRC, that one of the team members had rewritten RT-11 KMON in C but the management didn't let the project go into production. So, that might be another sign that DECUS-C was in use. Perhaps they had an DEC-internal "fork" of the compiler.
The RQDX3 should have a good chance of compiling with DECUS-C, although the RT-11 version I acquired had bugs in it. I have an RT-11 DECUSC runtime kit (DCC.DSK) on GitHub with various bugfixes and some feature additions, including a hack that provides much more space during the parsing stage. If anyone wants to use it, let me know and I'll provide a README.TXT to help out with its usage. The compiler runtime library requires EIS, but I can add an emulator driver to the kit to handle that if EIS is missing.
https://github.com/rust11/rust/tree/master/kit dcc.dsk