HP 3000 Series 37 Notes ======================= --------------------- Memory Backup Battery --------------------- The battery pack used to preserve memory contents during a power failure is HP part number 30457-60011. It consists of three Gates Cyclon 2.0 V 2.5 Ah D-size batteries in series. The original battery pack was opened, and the cells replaced with three EnerSys Cyclon batteries, part number 0810-0004, which appear to be identical to the originals (EnerSys bought Gates). They were puchased from Allied Electronics on 10/27/10 for $9.69 each. On 10/23/23, it was noticed that the batteries no longer held a full charge. Applying a 10 ohm 12 watt resistor to the pack drops the voltage from 6.0V to 5.35V. The pack was then charged at 250 mA CC on a bench supply to 8.5 V. The Cyclon application manual says that this indicates a full charge state. However, with the resistor applied again, the voltage quickly fell back to 5.35 V, indicating that one or more cells has a high internal resistance. Aliied is now RS America, and while the cells are still available, they now charge $30.49 each ($13.76 would be the inflation-adjusted price). Digi-Key also sells them, though for $26.22. The pack is 4.2" wide x 2.6" high x 1.45" deep. The battery holder in the CPU is 4.25" wide x 1.5" deep. A possible replacement is PowerSonic PS-628, 6V, 2.9 Ah, 2.6" x 1.3" x 3.9" high. ----------------------------- Console Response After Logoff ----------------------------- After logging off of MPE, the system console will not respond to CTRL+A, nor will any characters be echoed. RETURN must be pressed first to bring up the CI prompt. Then CTRL+A works, as does normal command entry, e.g., :HELLO. Pressing CTRL+A and then RETURN prints "*INVALID*". The console remains responsive to CTRL+A and character entry for a while. Then, after some sort of timeout expires, the console becomes "dead" again until RETURN is pressed to bring up the CI prompt. Pressing BREAK while the console read is pending does nothing. Pressing BREAK while the console is "dead" does nothing. ------------------------ Uploading PCLINK.PUB.SYS ------------------------ Uploading must be done with the front panel switch is position 1. If the switch is in position 2, receive timeouts will occur, because the 3000 will enter front-panel mode when a CTRL+B is seen in the binary stream. --------------- Front Panel Key --------------- www.rafi.de marked with contacts numbered 12, 11, 14, 22, 21, 24 (CCW from 11 o'clock) It's a flat bar about 3/16" of an inch wide and 7/16" long. There are a series of holes drilled in the sides of the key of varying depth. ------------- ATP Connector ------------- The ATP connector is a D-Subminiature DE-shell socket with a three-pin insert. The three pins are NOT on the same centers as the common nine-pin insert. The 1982 ITT Cannon catalog had ONE three-pin device: DEC-3P[-FO] or DEU-3P[-FO] "Burgun-D." Applicable HP part numbers are: - 40242X DB25M to DE3M - 92218D (13242X) DB25M to DE3M - 92219F (13232X) 264x hood to DE3M - 13222X 262x hood to DE3M - 30152A (30152-60001) DB25S to DE3M - 30153A (30153-60001) DE3F to DE3M Presuming that the three-pin connectors are no longer available, there are three options: 1. Replace the 3000's DE-3S connectors with DE-9Ses. 2. Machine a three-pin replacement insert for a DEU-9P. 3. Modify a nine-pin DEU-9P insert into a three-pin insert. Option 1 is the simplest solution. DE-9Ss are common, and wires can be soldered from the RS-232 PC board to solder-cup DE-9S sockets. We'd want to use the standard nine-pin basing (2, 3, and 7), though, for ease of cabling. The downside is that the 3000 is no longer historically correct, so someone with the proper cables wouldn't be able to use them unless the boards were restored. An alternative is to replace only one of the connectors (port 0, the system console, and perhaps port 1 also). Option 2 would require disassembling the shell, which is done by drilling out the retaining crimp at each mounting hole. A new insert would be machined, and the shell would be reassembled, perhaps with screws. Option 3 might be possible by filling the unused seven holes in a DEU-9P (epoxy?) and then machining a third hole in the correct position between pins 7 and 8. One question is whether the hole would impinge on the filled holes to either side, and, if so, whether the epoxy would hold correctly. Would there be a better fill material? Another question is whether the pin could be retained. The insert has retaining tines molded into it. While the tines are plastic, and so shouldn't present a problem to machining, they can't be replicated, so another method of retention would be needed for pin #3 (epoxy?). NOTE: a PC's serial port is a DE-9P, so we'd need a cable with a pair of DE-9Ses in order to connect. Option 2 was selected. A new, two-part insert was made from Delrin and was used with AMP 205204-9 DE-9 plug shells and AMP 66570-3 solder pins. The shells were carefully separated, the provided insert was discarded, the replacement inserts were incorporated, and the shells were reassembled. The insert drawings are 037-002 and 037-003. The only tricky part was that the pins had to be soldered to the cable wires and inserted between the two insert halves to capture the pins. That meant that the wires had to extend through one of the parts before the pins were soldered. The trouble was that the hole size required to capture the pin was just a bit smaller than the insulation diameter of the cable I had on hand. I resolved this by shaving the insulation down to allow the wires to feed through the holes. A DB-25F to DE-9M cable was fabricated from six-conductor shielded cable that I used for all other HP serial cables. The wiring is: Signal Wire Color DE-9M Pin DB-25F Pin ------------------- ---------- --------- ---------- Signal Ground Shield 1 7 Transmitted Data Green 2 2 Received Data Red 3 3 Request to Send Black - 4 Clear to Send Yellow - 5 Data Set Ready White - 6 Carrier Detect - - 8 Data Terminal Ready Blue - 20 The DB-25F connector is wired as DCE (e.g., the HP 3000 transmits on pin 3) and contains these interconnections within the shell: - RTS to CTS - DTR to CD and DSR The metallized shell of the DE-9 connector is also connected to Signal Ground. -------- Hardware -------- - Crisis appears to have more Series 37 manuals, but check with Al first. - Might want to replace port 0 DE3 connector with DE9 for compatibility. - SIMB Breakpoint Board is 30457-60002. -------- Software -------- - first support for Series 37 is MPE V/E release G.01.00. - first support for 9144 and 7974 on Series 37 is G.01.00. - first support for 35401 on Series 37 is G.02.01 (with patch U000) (sequential mode only). - first support for 7957-63 on Series 37 is G.03.01. - Y2K first supported in MPE V/E release G.30.00 (release 30). - Y2K complete support in release G.31.00. - Warmstart and coolstart do not use tape; boot from disc only. - Coldstart, update, and reload use tape. - Can change system parameters with a coldstart or by responding YES to ANY CHANGES? on a COOLSTART. ----- Tapes ----- - FOS tape contains fundamental operating system files - SUBSYS tape contains add-on subsystems (e.g., languages) --------- Languages --------- Compiler mpeVP_E.B0.00r2348 version coldLoad_82 version -------- ---------------------------- ---------------------------- SPL HP32100A.08.00 [4W] (c) 1979 HP32100A.08.00 [4W] (c) 1979 FORTRAN HP32102B.01.06 (c) 1980 HP32102B.01.06 (c) 1980 BASIC HP32101B.00.14(4WD) (c) 1979 HP32101B.00.14(4WD) (c) 1979 BASICOMP HP32103B.0.14B(4WD) (c) 1979 HP32103B.0.14B(4WD) (c) 1979 COBOL HP32213C.02.05 (c) 1980 HP32213C.02.05 (c) 1980 COBOLII HP32233A.00.11 (c) 1983 HP32233A.00.06 (c) 1981 [<<] Compiler MPE SUBSYS version -------- ---------------------------- BASIC HP32101B.00.24(4WD) (c) 1979 BASICOMP HP32103B.00.24(4WD) (c) 1979 BBASIC HP32115A.02.11 (c) 1985 BBASICOMP HP32115A.02.11 (c) 1985 COBOL COBOLII HP32233A.02.05 [74] (c) 1989 FORTRAN HP32102B.01.12 (c) 1986 FTN HP32116A.02.08 (c) 1983 PASCAL HP32106A.01.32 (c) 1985 RPG HP32104A.08.08 (c) 1988 SPL HP32100A.08.09 [4W] (c) 1987 ----------- Peripherals ----------- - Discs: 7945A, 7914P, 7933H, or 7935H. All others not supported on Series 37. - Tapes: 9144A, 7974A, or 7978A. All others not supported on Series 37. - Disc with internal tape is NOT supported for booting. - Must have disc on HP-IB address 1 and tape on address 3. - Need either physical disc (8065?) and emulated tape, or emulated disc and physical tape (35401), or two GPIB cards for emulated disc and tape. Usage of the 7974/78 on the 3000 is described on page 7-3 (125) of 5955-1770 Jul 1984 Communicator/3000. ------------- Common Drives ------------- Common disc drives between HPDrive and MPE are: - 20 MB : HP7906BP/7906 - 50 MB : HP7920/7920 - 120 MB : HP7925/7925 - 28 MB : HP7911/7911 - 66 MB : HP7912/7912 - 132 MB : HP7914/7914 - 544 MB : HP7937/7937A - 55 MB : HP7945/7945 - 78 MB : HP7957/7957A - 81 MB : HP7957B/7957B - 130 MB : HP7958/7958A - 152 MB : HP7958B/7958B - 304 MB : HP7959B/7959B - 304 MB : HP7963B/7963B - 335 MB : HPC2200A/C2200 - 670 MB : HPC2202A/C2202 - 670 MB : HPC2203A/C2203 Common tape drives are: - HP7970/7970 - HP7974/7974 - HP7976/7976 - HP7978/7978 - HP7979/7979 - HP7980/7980 - HP9144/9144-600 - HP9145/9145-600 ------------ Boot Attempt ------------ The Series 37 wants the system disc on HP-IB address 1 and the system tape on address 3. Boot attempts were made with the 8065 (which reports itself as a 7912) and HPDrive configured as a 9144. HP-IB bus activity was captured with the state analyzer. The first attempt was made with the first of the backup tape images made from the 9144 tapes that came with the system. "hp1.tap" was converted to a raw image and used with HPDrive as: hpdrive -nosleep -a 3 -9144-600 hp-1.img The maintenance-mode command "LOAD,4,3,P" was issued. The Series 37 microcode was successfully loaded from tape. However, the system then halted with this message: SysHalt 3: Code Segment 1 Trap Violation Based on the HP-IB activity and some spelunking, the boot sequence appears to be: 1. Read 256 bytes from block 0. 2. Read 256 bytes from block 252 (the block indicated in words 23-24 of block 0). This block is the Series 37 WCS table, as described on page 16-14 [147] of the G.08.00 tables manual. 3. Read 82176 bytes starting with block 252 to load WCS. 4. Read 256 bytes from block 2. This is a channel program is executed to bring in a larger channel program. 5. Read 2720 bytes from block 184. This is a channel program that is executed to load the INITIAL program. 6. Read a series of segments from various blocks. If I read the channel program correctly, it loads: - 80 bytes from block 19 ICS (interrupt control stack) - 24 bytes from block 20 low core - 256 bytes from block 21 initial CST (code segment table) - 14 bytes from block 22 CS table (communication system ? ) - 244 bytes from block 23 device class table header - 3978 bytes from block 24 device class table - 308 bytes from block 28 terminal descriptor table - 308 bytes from block 29 table lookup buffer - 512 bytes from block 30 VTAB - 256 bytes from block 31 OLDVTAB * - 256 bytes from block 32 disc cold load information table * - 256 bytes from block 33 CTAB - 256 bytes from block 34 CTAB0 - 2048 bytes from block 35 communication record - 24512 bytes from block 37 CSDVR - 24 bytes from block 61 CSDEF - 2 bytes from block 62 INITIAL's DB area - 304 bytes from block 63 stack marker - 532 bytes from block 64 driver table - 380 bytes from block 65 LPDT (logical-physical device table) - 544 bytes from block 66 LDT (logical device table ? ) - 1848 bytes from block 67 LDTX (logical device table extension ? ) - 29912 bytes from block 69 INITIAL's segments - 30768 bytes from block 99 RIN table - 6312 bytes from block 130 logging identifier table - 8560 bytes from block 137 directory header - 26 bytes from block 146 directory - 5984 bytes from block 153 - 7272 bytes from block 159 - 6776 bytes from block 167 - 7344 bytes from block 174 ...and so on. However, on "hp-1.img", the bytes read from block 19 and 20 are all zeros, and the system halts after the Locate and Read for block 20 completes and before the reporting message is issued. This may be because low core contains critical pointers (e.g., CST pointer), and if this is not set up properly, the firmware traps. As to why those records are zeros, it appears that the six-tape set that came with the 35401 originally was used for a complete SYSDUMP, i.e., the OS and user files. However, tape #1 was then overwritten with a one-file backup, probably to check device integrity when the "failure" noted on the tapes occurred. That wound up wiping out part of the SYSDUMP used by the coldload process. CTDs are treated as serial discs by MPE, and tape #1 is written in serial disc format. Note that serial disc format does NOT depend on partial record lengths (the "character count" option) recorded by the tape drive. All variable-length record information is present in the data, so using a raw tape image is fine. Here's the content of tape #1: Block Contains ===== ====================================================================== 0 Serial disc label: BOT=19, EOT=65367, EOD=65407, WCS64=187, WCS37=252, WCSXE=333, WCSLX=414 1 -1 fill 2 HP-IB coldload channel program 3 HP-IB soft dump channel program 4-18 Gap table: loadpoint=19, 19=EOF, 20=EOF, 21=EOF, 22=EOF, 24=EOF, 25=EOF, 26=EOF, 27=EOF, 28=EOF, 29=EOD 19 EOF 20 EOF 21 STORE/RESTORE header label + EOF 22 Tape directory (one file) + EOF 23-24 File: MYJOB.OPERATOR.SYS + EOF 25 STORE/RESTORE trailer label + EOF 26 EOF 27 EOF 28 EOF -- end of valid data -- The two EOFs preceding the STORE/RESTORE header label indicate that this last backup was NOT a SYSDUMP. The interesting thing is that blocks 30 and on contain what should be present for a SYSDUMP. And after the system files are written from there on out, another STORE/RESTORE header appears in block 8290, followed by a directory of files in block 8291. So because the microcode was in block 252, and the second bootstrap CCP was in block 184, these both loaded OK, as they were untouched by the overwriting backup. However, the INITIAL code and data started in block 19, i.e., at the BOT of the "tape", and that was also where the second backup started writing as well. And because the second backup was not a SYSDUMP backup, it started with two EOFs. EOFs are represented on a serial disc as a block of zeros, which was what was read. So tape #1 is unusable as a boot tape. NOTE: We also have two coldload tape images and a DUS tape image. However, these appear to be in a different format than the CTDs. In particular, they are not in serial disc format. This makes sense, as serial disc format is used to mimic tape records on a disc or other block-oriented device, and these undoubtedly came from a 1/2-inch tape. This implies that 1/2" tape images and CTD images are not interchangeable, for two reasons. First, the tape formats are entirely different. Second, the I/O channel programs will be entirely different: one will be issuing Amigo tape commands, and the other will be issuing CS/80 tape commands. Therefore, in order to load MPE, I will need either a CTD image and HPDrive configured as a 9144, or a 1/2" image and HPDrive configured as a 7974. Of course, HPDrive does not (yet!) support the 7974. I suspect that the DUS image would work if it did.... On the other hand, a CTD image with a missing block 0 shouldn't be hard to reconstruct. Block 0 is the serial disc header, which is documented. Moreover, the only item that would change, depending on the OS version, would be the block number of the Series 37 microcode. And that should be relatively easy to locate, as it will have the version number ("M06.10") in the WCS header. The only other item is the SIO channel program, and that isn't used on a CTD! ------------------------------------ Listing Files on STORE/RESTORE Tapes ------------------------------------ :FILE TAPE;DEV=TAPE;REC=12,85,F,ASCII :RUN FCOPY.PUB.SYS >FROM=*TAPE;TO=$STDLIST;SKIPEOF=3 >EXIT (from communicator V1 N4 Nov 1975) [Problem with above is that 12 words * 85 records/block = 2040 bytes, and record on tape is 8184 bytes. So remainder of record is ignored. Using 24 words and 171 records/block works, although entries are listed two per line. Use "fold -w 24" to wrap to one per line.] :FILE TAPE;DEV=TAPE;REC=24,171,F,ASCII :FCOPY FROM=*TAPE;TO=$STDLIST;SKIPEOF=4 Note: The SKIPEOF option is used to skip the two SYSDUMP records and the STORE header in order to read file #4, which is the directory. However, if the tape is not a SYSDUMP tape, the first two files will be null. That is, the tape will start with two EOF marks. In this case, the first EOF is not properly seen, so FCOPY sees the directory as being file #3. -------------------------- Shifting Columns in EDITOR -------------------------- /SET RIGHT=20 set range to 1-20 (column to be moved) /HOLDQ ALL copy column data to hold area /SET RIGHT=72 restore full range /CHANGEQ 1/20 TO "" IN ALL delete first column text /SET LEFT=41 set range to 41-72 (beyond last column to keep) /REPLACEQ 1/20,HOLDQ,NOW insert the column in the the hold area /SET LEFT=1 restore full range