Update to CPU CPLD

The KDJ11-E

The KDJ11-E was the most recent CPU board from DEC and was introduced in 1990. This was a quad-width CPU board that was used in systems with either a H9278-A backplane or in the PDP-11/94 with an extended backplane that added UNIBUS slots. This CPU module added quite some features

  • The memory was as fast as a DJC11 chip could read from cache, therefore the KDJ11-E did not have any cache memory, the module was available with either 2Mbyte or 4Mbyte on-board RAM
  • There were a total of 8 serial lines
  • It added the DS1215N real-time clock chip which was also known as phantom clock chip as it had some unique features that could be used to add this clock-chip in parallel to an existing ROM. It was often used in early personal computers as an add-on for so called no-slot clocks
  • EEPROM to hold settings
  • Extended startup ROM
  • etc.

DS1215 RTC

My PDP-11/Hack used the same trick for the memory to get the best performance from a DCJ11 and later I thought it would be cool to have a real-time clock so I would not have to enter time and date every time I boot a OS. Actually when I planned to add a RTC chip to my system I was only aware that the KDJ11-E had such a real-time clock. I did not know that it was a DS1215. But soon I found the TOY program from Oleg which was able to read the RTC from a PDP-11/93. First I was puzzled about the code but then I got aware that the RTC had to be one of the so called phantom clock chips. Soon I found the DS1215 which required exactly the same sequence as Oleg's program was using to activate the read of the clock registers. Only later I found pictures of KDJ11-E modules with enough resolution where I could clearly identify that the KDJ11-E had indeed a DS1215

The PDP-11 Hack

PDP-11/Hack

This was at a time I was designing the new multi-function board for my PDP-11/Hack. A short view into the KDJ11-E CPU Module User's Guide showed exactly how this had to be implemented, in fact it only requires that the data input and output pins of the DS1215 phantom clock switch were made available to bit 8 of the so called additional status register at address 17777526. As I had some spare pins and resources in the CPLD used on the new multi-function board I added a DS1215 and the logic to make the input/output available in a minimal additional status register.

Later I added an option to Oleg's TOY program to allow programming the phantom chip. See separate posts in the projects section TOY.

I used this program in a modified default RSX startup command file to provide a default string for the time and date which is normally asked. I also found then that there is already an option in the command file that depending on system features would magically read phantom clock chip and provide this time and date as the default.

After some reading it was evident, that this feature must be related to the module code in the maintenance register at address 17777750. I already had implemented this register in the CPU board, but encoded the module as being a module number 1 which is equivalent to a PDP-11/73A. I only added this register so the show configuration command of RT-11 would no longer display unknown Processor but PDP 11/73A Processor.

Then I gave it a try and changed the module code from 1 to 5, the module code for a KDJ11-E. At first it
showed PDP 11/94 Processor. This was due to the fact that the CPLD on the CPU board that implements the maintenance register is only connected to DAL0..8 of the DCJ11. The other bits are read as 1. So I decided to make an additional engineering change to the CPU board and added two wires from two spare pins of the CPLD to DAL9 and DAL10. DAL9 is the UNIBUS system bit and DAL10 is reserved and should be read as 0 as well. Still not 100% correct as the remaining bits still not connected to the CPLD (DAL11..15) still read as 1.

@17777750/174123 
@

There were only minimal changes required to the CPLD design file

PIN		94	=  DAL9;
PIN		96	=  DAL10;
.
.
DAL0			=  BPOK;	/* Normally pulled high via R22, but can be de-asserted via any bus device */
DAL1			=  BOOT;	/* We support two boot modes: ODT and BootROM @173000, the other options   */
DAL2			= !BOOT;	/* Power Fail Vector 24 and user defined bootROM address are not required  */
DAL3			= 'b'0;		/* HALT in Kernal Mode Enters ODT                                          */
DAL4			=  MAINT;	/* Module code is 0101b therefore DAL4 should read 1b when reading MAINT   */ 
DAL5			= 'b'0;
DAL6			=  MAINT;	/* Module code is 0101b therefore DAL6 should read 1b when reading MAINT   */ 
DAL7			= 'b'0;
DAL8			= 'b'0;		/* No FPA                                                                  */
DAL9			= 'b'0;		/* No UNIBUS                                                                  */
DAL10			= 'b'0;
[DAL10..0].oe	=  POWERUP & BUFCTL
				#  MAINT   & BUFCTL;

The PDP-11 Hack

After that I could return to the default startup command file of my RSX-11MPlus build for the PDP-11/Hack and let the internal MCR command TIM deal with the RTC. Also I did a SYSGEN for RT-11 5.7


.boot dl:

RT-11XM  V05.07  

.TYPE V5USER.TXT

                                   RT-11 V5.7

    Installation  of  RT-11  Version  5.7 is complete and you are now running
    RT-11 from your system volume.  

    Your  system volume is your working volume if you have used the Automatic
    Installation (AI) procedure.  If you  have  installed  RT-11  using  that
    procedure,  Mentec  recommends  you verify the  correct operation of your
    system's software using the VERIFY verification procedure.  You can  only
    perform  VERIFY  on  the  valid target (output) media you used for the AI
    procedure.  Run VERIFY before you run CONFIG.  To run VERIFY,  enter  the
    command:  
                                   IND VERIFY

    Mentec  recommends  you  read the file V5NOTE.TXT,  which you can TYPE or
    PRINT.  Also, read the Introduction to RT-11, rewritten for  V5.7,  which
    contains much of the information you need to use RT-11 Version 5.7.


.R MSCPCK

.date
1-Jan-2020

.time
10:27:36

.show config

RT-11XM  V05.07  
Booted from DL0:RT11XM
22 bit addressing is on

USR     is set NOSWAP
EXIT    is set SWAP
KMON    is set NOIND
RUN     is set NOVBGEXE
MODE    is set NOSJ
TT      is set NOQUIET
ERROR   is set ERROR
SL      is set OFF
EDIT    is set KEX
FORTRAN is set FORTRA
KMON nesting depth is 3

CLI is set DCL, CCL, UCL, NO UCF

PDP 11/93 Processor
1024KB of memory
Floating Point Microcode
Extended Instruction Set (EIS)
Memory Management Unit
60 Hertz System Clock                  

Device I/O time-out support
System job support
FPU support


.

Now RT-11 automatically has the correct date and time when booted.