User:RDBrown/HP3000-WCS-Microcode

In March 1982, Hewlett-Packard announced the HP 3000 Series 64, an ECL implementation with a WCS. September 1985 brought the announcement of the Series 37, a low-cost gate array implementation which eschewed the usual separate control processor for booting and used an initial bootstrap from the 32-bit wide ROMs to load the 64-bit wide boot microcode into the WCS.

It's unlikely that the MPE based HP 3000 Series 64 microcode development system (MDS) software has survived, but an HP internal 543 page assembly listing exists. The Series 37 Design Capture and Documentation (DCDF) tool for capturing designs for simulation in FTL (IBM 370) on an Amdahl V6 is also unlikely to have survived. Unlike the Series 64 listing, only a single line example is shown in the HP Journal for the Series 37 microcode.

The WCS data needs to be recorded on the backup tapes. The System Tables manual describes the Sysdump (Backup) format describes the tape format and the WCS data can be included as part of the first file on the tape, but I haven't seen that in the tape images I've seen. The second file is a concatenation of a list of essential system files and does include the WCS files. The files seem to be dumped as they would be in the Store part of the backup, including the 256 byte (MPE sector) file label. So SYSWCS64.PUB.SYS for Series 64, 68 and 70; SYSWCS37.PUB.SYS for the Series 37 and direct successors. WCSLE1 and WCSLE2 for the Series 37 successors. The files are single extent with 128W FB (256 bytes) records, and a zero file code. The first 256 byte record contains the version and probably a checksum. Assuming the data is 64-bit horizontal microcode the maximum is 10240 entries.

Between the first dated and last dated versions, excluding the first 256 bytes containing the version and checksums SYSWCS37 47 64-bit wds, WCSLE1 44, WCSLE2 49. Between the first and last WCSLE1 and WCSLE2 versions 186, less than the 600 between the first 2 SYSWCS64 version. Assuming that 0xa5a5a5a5a5a5a5a5 is a NOP, the first SYSWCS37 has 8867 64-bit words and WCSLE1, 9019. When including offsets the SYSWCS37 and WCSLE1 differ by 6330, but excluding offsets only by 462. This suggests that SYSWCS37 and WCSLE1 & WCSLE2 share the same 64-bit microcode, but perhaps the code was restructured over and above any necessary changes for the new machines between SYSWCS37 and WCSLE1.

Series 37
LABEL... A.. B.. C.. ADD IN I.. R-FCN-XCNTR-SEC X.. SPEC JTD JFD CONSTANT 0000: 1207 0555 1880 FFFF LOOP     R1  R2  R0  R9  -1 R0    SZL Z5    S5  R1  JL=0 R8  R15 LOOP

Define Counter = R0, Left = R1, Right = R2; Loop: Dec(counter) -> counter/	*Decrement Add(R10,R11) -> ADR/		*Computer address w/ADD ExtractR(Left||RIght(10..20)) -> Left/	*use extractor If Logic=0 then ReturnSub1 else Loop;		*IF.. THEN.. ELSE

Undefine counter,left,right

ABUS        2 of  4  bits used BBUS        4 of  4  bits used CBUS        1 of  4  bits used ASTOR       0 of  2  bits used INC/DEC     0 of  2  bits used ISTOR       2 of  4  bits used Indirect    0 of  1  bits used X-Control  12 of 12  bits used XSTOR       3 of  4  bits used Parity      1 of  1  bits used Special     1 of  6  bits used Jump        4 of  4  bits used Constant    0 of 16  bits used ———————————————————           30 of 64  bits used

TEMP R0: 061E  SJ1  R8: 5DF1   F0: 1  >0: 1  M:  1   BNKP: 0000   ICS: AAE0 P   R1: 0002   ADR  R9: 020A   F1: 1  BT: 0  I:  1   BNKD: 0000   DSP: 55E1 SM  R2: 0202   ADN R10: 0663   F2: 1  DV: 0  T:  1   BNKS: 0000   LP : AAE2 Q   R3: 0052   AUG R11: 0002   CI: 0  L0: 1  R:  1   BNKA: 0000   CPP: 55E2 DB  R4: 0202   STA R12: FFFF   CO: 0  FC: 1  O:  1   LAST: A      DL:  FFFF IR  R5: 0002   FLG R13: E098   OV: 0  I0: 0  C:  1                Z:   5555 XCN R6: 0000   MPC R14: 5DFA   <0: 0  CT: 0  CC: 3   OPA:  0160   PB:  30F8 SJ2 R7: 5F79   CON R15: 0000   =0: 0  SB: 0  SG: FF  OPB:  0000   PL:  0000 X:  55EB TOSA: 0000   SR: 0         INV: 8090 TOSB: 555A   NMR:0        WCS BKPT TOSC: 0000   BDS:0       8001P  FFFF MWA: 5DF9                             TOSD: 0000                53AEP  FFFF MWR: FF03  00FF   6098   FFFF                                   FFFF   FFFF A.. B.. C.. ADD IN I.. R-FCN-XCNTR-SEC X.. SPEC JTD JFD CON     FFFF   FFFF R15 R15 R0     -1 R0    RRF $FF       R6  JBT  R7  R14 $0000    FFFF   FFFF

STATE:        U_HLT     11:14:14 U (MICRO) BREAKPOINT (SET)  [,] [;T] 4366

Counts 64-bit Microinstruction # ub-delta-1_fos_2642 SYSWCS37 1374 a5a5a5a5a5a5a5a5 51 fff0f000f005b86b 47 fff0f0ffa800ffff 22 fff8f000f000ffff 22 ff131000f005b86b 20 bf21a420b000ffbf 19 fff0f0ff0800ffff 16 5ff0f7a07c6a793f 15 fd139400d6002fe7 ...                               # ub-delta-1_fos_2642 WCSLE1 1222 a5a5a5a5a5a5a5a5 51 fff0f000f005b85b 47 fff0f0ffa800ffff 22 fff8f000f000ffff 22 ff131000f005b85b 20 bf21a420b000ffbf 19 fff0f0ff0800ffff 16 fff0f000f800ffff 16 5ff0f7a07c6a793f 15 fd139400d6002fe7 ...                               # ub-delta-1_fos_2642 WCSLE2 1229 a5a5a5a5a5a5a5a5 51 fff0f000f005b85b 47 fff0f0ffa800ffff 23 fff0f000f800ffff 22 fff8f000f000ffff 22 ff131000f005b85b 20 bf21a420b000ffbf 17 fff0f0ff0800ffff 16 5ff0f7a07c6a793f 15 fd139400d6002fe7

Engineers mentioned: Frederic C. Amerson —; Patria G. Alvarez; John R. Obermeyer; Frank E La Fetra, Jr. (Skip); Paul L. Rogers; James H. Holl; Malcolm E. Woodward; Edwin G. Wong — diagnostic microcode S37; William M. Parrish; Eric B. Decker — microcode for 37, 64, 68; Paul Smythe; Greg Gilliom; Brian Feldman; Norm Galassi; Frank Hublou; Daryl Allred; Barry Shackleford;

Series 64
PAGE 1               HP 3000 Series 64/68/70 Microcode                                                    10/ 2/86    9:26 AM RECORD    C.S.       *********** ALU A ***********  ************* ALU B ******************* NO     ADDR  LABL RREG SREG FUNC SFNC STOR SPSK  RREG SREG FUNC SFNC STOR SPSK SPEC SKIP  COMMENT ddddd     XXXX  **************************************************************************

RA 0000 SR    7  SPOA 0000  BKX3 0000    DL       03F0  PB  0000 1000  NIR  0200 RB 0000 ESR   7  SP1B 0000  BKX4 0000    DB  0000 0400  P        10CD  CIR  0200 RC 0000 NM    0  SP2B 0000  BKX5 0000    0        D400  PL       2CBB  DSPL   00 RD 0000 ENM   0  SP3B 0D40  BKX6 0000    SM       D400                 X    0000 RE 0001 RAC   0  SP4B 0000  BKX7 0000    Z   0000 0E00  STA MITROCE 03 RF 0000 RG FFFF CTR  00  CTRX 00  FLAGS 12345    CAR 0000 10CD      YRA  10CC  OPA  01C0 RH 0000                                  PDB      10CD      YRB  10CD  OPB  0200 RAR 0703   RREG SREG FUNC SHFT STOR SPSK   RREG SREG FUNC SHFT STOR SPEC SKIP R3ADR 0008   XC   DB   JSZ  0012      TEST        P    INC       P    RONP R2ADR 0694   RD   RB   SUB            NOFL   RC   RA   LINK      SP1B EPP4 R1ADR 0695             ADD            UNC         UBA  ADD            CCA VBUS 0696   RREG SREG UBR  O C      N       RREG SREG UBB  C        N              0000 0000 0000 0 1      0       0000 0000 0000 1        0

0006 38e57110ccf3e40c # $LUT INSTR=NOP 0 000 000 000 xxx xxx ENTRY=NOP, DSPL=6 Counts 64-bit Microinstruction # 32099-11009_MPE_IV_1of2_2244 (Count of uniq instr values) 46 38e57110ccf3e40c 32 0001000200030004 Filler? 19 5ca5611ebcf3ad24 16 03841e7003841e70 16 03840e6003840e60 16 037e0f70037e0f70 15 5ce571100cf3e40d 15 0000011800000118    14 4ca5631e9ef3f406 14 28e571100cf3e40d 12 38e57104ccf3cc12 12 38e57010ccf3e40d 11 5525611e0cf3dd15 11 38e57105ccf3e4f4 10 38e83110ccf3e40c