Skip to content

Instantly share code, notes, and snippets.

@al177
Last active August 8, 2023 02:50
Show Gist options
  • Save al177/2871629b5363086c946237d815db5aac to your computer and use it in GitHub Desktop.
Save al177/2871629b5363086c946237d815db5aac to your computer and use it in GitHub Desktop.
VAXStation 4000 VLC notes
Notes on my VS4k motherboard
-----
Issues:
- No FB card
- lack of S3 switch needs workaround (see below) to use serial consone
- maybe why serial BREAK doesn't HALT
- maybe why DZ test fails
- Fails DZ interrupt test (0x50) most of the time. No explanation.
- Stinky and still a little dirty
- NVR/TOY clock module battery is dead
Hacks done:
- USB to MMJ cable (See below)
- ATX to board adapter
- force ALCON bit (S3 switch) for console on MMJ serial
- solder pin 36 of 21-35025-01 ASIC to ground ("pin 36" may be wrong - measured clockwise from pin 1 indicator)
- signal comes to a via
- this is at the corner of the chip nearest the UC80234 line receiver IC
Other notes:
- Suspect that failure of DZ and HALT being blocked are related
- One of the ASICs may be bad
- or may have to do with dead NVR
- or HALT_L signal may have a pull on the FB card, so without it HALT_L is asserted. Maybe HALT_L is edge triggered so asserting it prevents the DZ UART source from triggering it?
-----
PSU pinout:
+-------+
| |
7 unused | o o | unused 14
| |
6 +5.2 | o o | unused 13
| |
5 +5.2 | o o | 0 12
| ||
4 0 | o o ||unused 11
| ||
3 0 | o o | unused 10
| |
2 0 | o o | +12 9
| |
1 -12 | o o | +5.2 8
| |
+-------+
Standard Molex Mini-fit Jr. 14 pin
Despite what the service manual says, there is no 3.3V rail on this system. Only +5/+12/-12 as above.
ATX-24 (20 compat) to VLC power adapter
ATX VLC Sig
3 2 GND
4 5 5V
5 3 GND
6 6 5V
7 4 GND
10 9 12V
14 1 -12V
15 12 GND
16 - PS_ON#
17 - GND
21 8 5V
Switch between ATX 16 (PS_ON#) and ATX 17 (GND) for power enable
-----
FB connector to 21-35025-01 ASIC map (partial)
TQ144
FB J13 ASIC
1 79
5 78
9 77
13 76
16 75
22 36 4.7K PU to VDD <- short to ground for serial console (S3 up)
34 MSIZE[0]
35 MTYP
33 MSIZE[1]
32 MSIZE[2]
-----
Serial console over USB
The pinout for Cisco RJ45 and DEC MMJ serial console cables map exactly if the outer two wires
(pins 1 and 8) are omitted from the Cisco cable. This makes it easy to crimp an MMJ to a flat-type USB to Cisco cable.
Parts / tools:
- MMJ plug (Digikey 380-1238-ND / Stewart 940-SP-3066R-OST)
- MMJ crimper (???)
- USB-to-Cisco RJ45 console cable (like https://www.amazon.com/dp/B075V1RGQK)
- Voltmeter
- First find DTR on the console cable:
- Plug into PC USB
- Measure voltage between either of the two RJ45 middle pins (gnd) and one pin in from one side of the connector
- If it measures +/- 5V or more, that pin is DTR (Cisco pin 7) which will mate with pin 6 (DSR) of the MMJ.
- If not, try the opposite side
- Note the color of the wire in the position in the RJ45
- Unplug the USB end
- Snip the end of the Cisco cable, then strip the jacket to 1/2", or just enough to escape the MMJ plug when inserted
- Snip wires 1 and 8 of the Cisco cable (RTS and CTS) close to where the jacket is stripped
- Hold the MMJ looking into the cable end such that the latch is facing down and to the right
- pin 1 is opposite the latch end
- Insert the wires with the DTR pin aligned to the right (same side as the latch)
- Crimp
Note that the cable will be too wide to insert into the MMJ for strain relief. Just be careful!
Pinout
Cisco MMJ
CTS 1 -
DSR 2 1 DTR
RXD 3 2 TXD+
GND 4 3 TXD- (GND for console)
GND 5 4 RXD- (GND for console)
TXD 6 5 RXD+ _____
DTR 7 6 DSR _____| <- latch
RTS 8 -
-----
SIMH bootserver for VS4k
(see vaxstation4000vlc_inst.ini)
---
vaxstation4000vlc.ini
---
set async
set cpu 24m
; Attach non-volatile RAM to a file
attach nvr vaxstation4000vlc.nvr
set rz0 rz26
attach rz0 vs4k.dsk
set rz1 disable
set rz2 disable
set rz3 disable
set rz4 rz24
; Find this ISO online somewhere
attach -r rz4 openvms73.iso
set rz5 disable
set rz7 disable
; Attach Ethernet to a network interface
set nar mac=08-00-2B-AA-BB-CC
attach xs enp4s0
set cpu idle=VMS
set cpu conhalt
set console brk=10
;set console telnet=10024
; Console command to boot into VMS when emulator starts
expect ">>>" send "b dka0\r"; continue
; Start the emulator
boot cpu
exit
---
; ------runtime vars------
set env SIM_HOSTNAME=FAKE
; Host network interface to assign to the sim virtual ethernet dev
set env SIM_ETH=enp5s0
set env SIM_ETH_MACADDR=08-00-2B-AA-BB-CC
set env SIM_PASSWD=cyberdec
set env SIM_SCSSYSTEMID=1155
; ------------------------
set async
set cpu 24m
; Attach non-volatile RAM to a file
attach nvr vaxstation4000vlc.nvr
set rz0 rz26
attach rz0 vs4k.dsk
set rz1 disable
set rz2 disable
set rz3 disable
set rz4 rz24
; Find this ISO online somewhere
attach -r rz4 openvms73.iso
set rz5 rz24
; Make an ISO with VMS_PAKS.COM as the only file:
; It's a DCL script with all the licenses you want installed
; You may have to resort to VLF...
attach -r rz5 license.iso
set rz7 disable
; Attach Ethernet to a network interface
set nar mac=%SIM_ETH_MACADDR%
attach xs %SIM_ETH%
set cpu idle=VMS
set cpu conhalt
set console brk=10
;set console telnet=10024
; Expect commands for automating install
; Boot into staback and copy install saveset over
send after=5M
send delay=100000
expect ">>>" send "b dka400\r"; continue
call do_datetime
expect "\r\n$" send "BACKUP DKA400:VMS073.B/SAVE_SET DKA0:\r"; continue
expect "to continue" send "YES\r"; continue
; Assert HLT interrupt to enter the console
expect "\r\n$" d hltpin 1; step -T 1000000; d hltpin 0; continue
; Set root disk as boot device, turn off firmware RAM checks; and boot into the saveset
expect ">>>" send "\rset boot dka0\r"; continue
expect ">>>" send "set fboot 1\r"; continue
expect ">>>" send "\rb\r"; continue
call do_datetime
; Disk config
expect "label for this system disk" send "%SIM_HOSTNAME%SYS\r"; continue
expect "ready to be mounted?" send "Y\r"; continue
expect "distribution media:" send "DKA400:\r"; continue
; Base package options
expect "Do you want to install the OpenVMS library files" send "Y\r"; continue
expect "Do you want to install the OpenVMS optional files" send "Y\r"; continue
expect "Do you want to install the MSGHLP database?" send "Y\r"; continue
expect "Where do you want to install the MSGHLP database?" send "\r"; continue
expect "Do you want to install the optional OpenVMS Management Station files?" send "N\r"; continue
expect "DECwindows base support?" send "N\r"; continue
expect "DECnet-Plus?" send "N\r"; continue
expect "Phase IV?" send "Y\r"; continue
expect "* Is this correct? (Y/N)" send "Y\r"; continue
expect "continue?" send "\r"; continue
; Default account passwords
expect "password for SYSTEM:" send "%SIM_PASSWD%\r"; continue
expect "verification:" send "%SIM_PASSWD%\r"; continue
expect "password for SYSTEST:" send "%SIM_PASSWD%\r"; continue
expect "verification:" send "%SIM_PASSWD%\r"; continue
expect "password for FIELD:" send "%SIM_PASSWD%\r"; continue
expect "verification:" send "%SIM_PASSWD%\r"; continue
; DECnet IV node setup
expect "SCSNODE name:" send "%SIM_HOSTNAME%\r"; continue
expect "SCSSYSTEMID:" send "%SIM_SCSSYSTEMID%\r"; continue
; We'll install licenses later
expect "Do you want to register any Product Authorization Keys?" send "N\r"; continue
; Timezone stuff
expect "location:" send "33\r"; continue
expect "Is this correct? (Yes/No)" send "Yes\r"; continue
expect "location:" send "4\r"; continue
expect "Is this correct? (Yes/No)" send "Yes\r"; continue
expect "Is Daylight Savings time in effect?" send "N\r"; continue
expect "Enter the Time Differential Factor" send "\r"; continue
expect "Is this correct? [Y]:" send "Y\r"; continue
; Reboot into new install happens here
call do_login
; Install the license pak file
expect "\000$ " send "mount /ov=id %SIM_HOSTNAME%$DKA500:\r"; continue
expect "\r\000$ " send "COPY %SIM_HOSTNAME%$DKA500:[000000]VMS_PAKS.COM;1 SYS$LOGIN\r"; continue
expect "\r\000$ " send "SET DEF SYS$LOGIN\r"; continue
expect "\r\000$ " send "SET FILE/ATTRIBUTE=(RFM=STMLF) VMS_PAKS.COM;1\r"; continue
expect "\r\000$ " send "@VMS_PAKS.COM\r"; continue
expect "\r\000$ " send "LICENSE MODIFY/INCLUDE=%SIM_HOSTNAME% VAX-VMS\r"; continue
expect "\r\000$ " send "LICENSE LOAD\r"; continue
; Decompress libraries for more fasterness
expect "\r\000$ " send "@SYS$UPDATE:LIBDECOMP.COM\r"; continue
expect "* Enter letter or number(s) of libraries to be decompressed" send "a\r"; continue
; Modify AUTOGEN system parameters - will reboot after this
expect "\r\000$ " send "open/append HFILE SYS$SYSROOT:[SYSEXE]MODPARAMS.DAT\r"; continue
expect "\r\000$ " send "write HFILE \"MIN_GBLPAGES=50000\"\r"; continue
expect "\r\000$ " send "write HFILE \"ADD_GBLSECTIONS=100\"\r"; continue
expect "\r\000$ " send "write HFILE \"ADD_NPAGEDYN=800000\"\r"; continue
expect "\r\000$ " send "write HFILE \"ADD_NPAGEVIR=800000\"\r"; continue
expect "\r\000$ " send "write HFILE \"MIN_SPTREQ=6000\"\r"; continue
expect "\r\000$ " send "write HFILE \"MIN_INTSTKPAGES=20\"\r"; continue
expect "\r\000$ " send "close HFILE\r"; continue
expect "\r\000$ " send "@SYS$UPDATE:AUTOGEN GETDATA REBOOT NOFEEDBACK\r"; continue
; Login again
call do_login
expect "\000$ " send "set proc/priv=all\r"; continue
expect "\000$ " send "@SYS$MANAGER:NETCONFIG.COM\r"; continue
; Configure DECNET
expect "What do you want your DECnet node name to be?" send "\r"; continue
expect "What do you want your DECnet address to be?" send "1.131\r"; continue
expect "Do you want to operate as a router?" send "\r"; continue
expect "Do you want a default DECnet account?" send "\r"; continue
expect "Do you want a default account for the MAIL object?" send "\r"; continue
expect "Do you want a default account for the FAL object?" send "\r"; continue
expect "Do you want a default account for the PHONE object?" send "\r"; continue
expect "Do you want a default account for the NML object?" send "\r"; continue
expect "Do you want a default account for the MIRROR object?" send "\r"; continue
expect "Do you want a default account for the VPM object?" send "\r"; continue
expect "Press RETURN to continue" send "\r"; continue
expect "Press RETURN to continue" send "\r"; continue
expect "Press RETURN to continue" send "\r"; continue
expect "Press RETURN to continue" send "\r"; continue
expect "Do you want these commands to be executed?" send "YES\r"; continue
expect "Do you want DECnet started?" send "YES\r"; continue
; Sync with another node in DECNET
#expect "\r\000$ " send "RUN SYS$SYSTEM:NCP\r"; continue
#expect "NCP>" send "COPY KNOWN NODES FROM 1.132 TO BOTH\r"; continue
#expect "NCP>" send "EXIT\r"; continue
; Install TCPIP
expect "\r\000$ " send "license load UCX\r"; continue
expect "\r\000$ " send "MOUNT/OVER=ID DKA400\r"; continue
expect "\r\000$ " send "SET DEF DKA400:[TCPIP_VAX051.KIT]\r"; continue
expect "\r\000$ " send "PRODUCT INSTALL *\r"; continue
expect "Do you want to continue?" send "YES\r"; continue
expect "Do you want the defaults for all options?" send "YES\r"; continue
expect "Do you want to review the options?" send "NO\r"; continue
expect "\000$ " send "@SYS$MANAGER:TCPIP$CONFIG\r"; continue
; setup DHCP
expect "Enter configuration option:" send "1\r"; continue
expect "Enter configuration option:" send "2\r"; continue
expect "Enter configuration option:" send "2\r"; continue
expect "Enter configuration option:" send "1\r"; continue
expect "Which interface?" send "SE0\r"; continue
; set domain name
expect "Enter configuration option:" send "1\r"; continue
expect "Enter Internet domain" send "splunge.net\r"; continue
expect "Enter configuration option:" send "E\r"; continue
; setup FTP
expect "Enter configuration option:" send "2\r"; continue
expect "Enter configuration option:" send "1\r"; continue
expect "Enter configuration option:" send "1\r"; continue
expect "* Do you want to configure FTP SERVER" send "YES\r"; continue
expect "Enter configuration option:" send "E\r"; continue
; setup telnet
expect "Enter configuration option:" send "6\r"; continue
expect "Enter configuration option:" send "1\r"; continue
expect "Enter configuration option:" send "E\r"; continue
; start services
expect "Enter configuration option:" send "6\r"; continue
expect "Press Return to continue" send "\r"; continue
expect "Enter configuration option:" send "E\r"; continue
expect "Start these services now?" send "Y\r"; continue
expect "\000$ " send "set def dka0:[000000]\r"; continue
expect "\000$ " send "edit/edt SYS$COMMON:[SYSMGR]SYSTARTUP_VMS.COM\rtype end\r.-1\rinsert\r@SYS$MANAGER:STARTNET\r@SYS$STARTUP:TCPIP$STARTUP\r\x1aexit\r"; continue
expect "\000$ " send "reboot\r"; continue
; Set up cluster
call do_login
expect "\000$ " send "@cluster_config\r"; continue
expect "Do you want LANACP instead of DECnet for cluster boot serving" send "YES\r"; continue
expect "Enter choice [1]"; send "1\r"; continue
expect "Will the LAN be used for cluster communications"; send "Y\r"; continue
expect "Enter this cluster's group number"; send "1\r"; continue
expect "Enter this cluster's password"; send "%SIM_PASSWD%\r"; continue
expect "Re-enter this cluster's password for verification"; send "%SIM_PASSWD%\r"; continue
expect "be a boot server"; send "Y\r"; continue
expect "ALLOCLASS parameter"; send "0\r"; continue
expect "contain a quorum disk"; send "N\r"; continue
expect "Do you want to run AUTOGEN now"; send "Y\r"; continue
; LANACP setup reboots here
call do_login
; add satellite node named JUNIOR with SCSSYSTEMID 1156 (1.132)
; Replace the hardware address with the satellite's MAC
expect "\000$ " send "@cluster_config\r"; continue
expect "Do you want LANACP instead of DECnet for cluster boot serving" send "YES\r"; continue
expect "Enter choice [1]"; send "1\r"; continue
expect "you want to continue [N]"; send "Y\r"; continue
expect "Will the node be a satellite"; send "Y\r"; continue
expect "What is the node's SCS node name"; send "JUNIOR\r"; continue
expect "What is the node's SCSSYSTEMID number"; send "1156\r"; continue
expect "run DECnet "; send "Y\r"; continue
expect "LAN adapter hardware address"; send "00-11-22-33-44-55\r"; continue
; note: we're sharing this host's system disk with the satellite and using lots of defaults
expect "system root"; send "\r"; continue
expect "system root"; send "\r"; continue
expect "conversational bootstraps on"; send "Y\r"; continue
expect "Enter choice"; send "1\r"; continue
expect "be a disk server"; send "N\r"; continue
expect "Size of pagefile"; send "\r"; continue
expect "Size of temporary pagefile"; send "\r"; continue
expect "Size of swap file for"; send "\r"; continue
expect "Size of temporary swap file"; send "\r"; continue
expect "be used for paging and swapping"; send "N\r"; continue
expect "device name for the page and swap files"; send "\r"; continue
expect "\r\000$ " send "shutdown\r"; continue
; ------Procedures------
; Archaic procedures stuff for simh...
goto end_of_procs
; log in as system
:do_login
; sometimes we get stuck after elapsed time, so wait a looong time
expect "Elapsed time:" send after=1000m,"\r"; continue
expect "\r\n\rUsername: " send "system\r"; send "%SIM_PASSWD%\r"; continue
return
; fill in date/time prompt
:do_datetime
expect "DD-MMM-YYYY" send "%DATE_DD%-%DATE_MMM%-%DATE_YYYY% %TIME_HH%:%TIME_MM%\r"; continue
return
:end_of_procs
; ------Procedures end------
; All prior lines are for setup and queueing expect commands - nothing happens
; until we boot
boot cpu
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment