Monday, April 1, 2019

Setting up a MULTINET TCP connection (DECnet over IP)

Supratim Sanyal's Blog: MULTINET TCP Tunnel - OpenVMS VAX Server DECnet over TCP/IP Link

Here is an example of a MULTINET:DECNET-CIRCUITS.COM file for Process Software's MULTINET TCP/IP for OpenVMS. This sets up a TCP connection to another MULTINET end-point for DECnet traffic to be tunneled under TCP/IP.

The "MULTINET CONFIGURE /DECNET" command seems to allow only UDP connections to be configured; if so, MULTINET:DECNET-CIRCUITS.COM needs to be hand-edited for the connections to be based on TCP instead of UDP.

Specifically, after using the normal configuration utility to set up a default UDP connection, the "multinet set /decnet" line in MULTINET:DECNET-CIRCUITS.COM has to be modified manually to use TCP. This is borne out by the relevant section from MultiNet DCL Command Reference which states that the "/TCP" switch is not supported by the normal configuration utility:

MULTINET SET /DECNETConfigures the DECnet TCPAx: devices for running DECnet-over-UDP circuits.
Specifies the number of buffers the driver preallocates for this device (by default, 6).
Shuts down and deletes a socket created with the socket() routine. After issuing a CLOSE command, the socket cannot be used again until the MULTINET SET/DECNET command is reissued.
Issues a connect() call to bind the remote address of the socket to the address specified in /REMOTE_ADDRESS.
Specifies the DECnet device name (by default, TCPA0:).
Controls the handling of out-of-order DECnet packets arriving via IP. Prior to VMS V4.7, DECnet could not handle packets arriving out-of-order and would drop the line if it received them. If you have any VMS V4.6 or earlier systems in your DECnet network with which you are communicating, you must use the /FILTER_OUT_OF_ORDER=ON qualifier. The default action,
/FILTER_OUT_OF_ORDER=AUTOMATIC, selects the correct filtering based on the VMS version of the current system only.
Specifies that send() and recv() log a sample of the data passed through them to OPCOM. Use this qualifier only for debugging network problems.
Specifies that send() and recv() errors are logged to OPCOM. The default is to log all errors except these.
Specifies the UDP port number to use for communication (by default, 700).
Specifies the peer's IP address.
Specifies that DECnet is encapsulated in TCP instead of UDP. This mode is not supported by the normal configuration utility, but is of use over high-loss lines. LISTEN specifies that this end of the connection listens on the specified port; CONNECT specifies that this end attempts to connect to the listener on the specified port.
The MULTINET:DECNET-CIRCUITS.COM file below is from an actual SIMH MicroVAX 3900 running OpenVMS 7.3 and MULTINET version:

$ multinet show/version
Process Software MultiNet 5.5 Rev A, VAXserver 3900 Series, OpenVMS VAX V7.3

Deploying the Single Greatest Piece of Software Ever: BSD 4.3 on VAX

Supratim Sanyal's Blog: Installing 4.3 BSD Unix Quasijarus on VAX (SIMH MicroVAX 3900 BSD 4.3)
4.3 BSD Unix Quasijarus on VAX

It was great fun bringing up 4.3 BSD Quasijarus UNIX on a SIMH emulated VAX by simply following awesome instructions documented painstakingly by others. The web pages I found very useful include:
 4.3BSD is, of course, "The single Greatest Piece of Software Ever, with the broadest impact on the world". Legions of excited computer enthusiasts still trace almost every tool they use even today to 4.3BSD, including the vi editor to network programming using Berkeley sockets. Linux, for all it's popularity, continues to be an implementation of ideas first seen in BSD 4.3 UNIX.

AIX, Solaris, MacOS X (and therefore iOS and watchOS), HP-UX, DEC Ultrix, Tru64 ... all are descendants in some form of BSD. Here is a diagram depicting a simplified evolution of UNIX from the Wikipedia page on Berkeley Software Distribution.

Unix history-simple

Thursday, March 28, 2019

The OpenBSD 5.8 on SIMH VAX saga: Part 1 - kernel panic when building ports

OpenBSD/vax 5.8 Kernel Panic and Crash
I installed OpenBSD 5.8 for VAX (the final OpenBSD release for the VAX architecture before OpenBSD stopped supporting VAX) on a SIMH 4 VAX 3900. Booting from the distribution CD-ROM ISO and using "netinstall" went fine. OpenBSD/VAX 5.8 booted up and seemed to work.

Trouble started when I tried to build packages from the OpenBSD ports collection. My first build attempt for shells/bash caused a kernel panic and crash, a very rare occurrence in all of my forays into classic BSD and Unix varieties for different architectures.

I tried various things, like falling back to the "classic" SIMH version 3.9 and disabling the swap space on the second disk. The kernel panic is persistent, and I will have to come back to this and spend more time researching it. Part-2 of this saga will be posted some day.

The kernel panic and crash is consistent:

panic: rmpage: pg 0x80635ad8 br 0x88044300
Stopped at      rmpage+0xc7:    cmpl    8(r6), r2

The basic environment is:

OpenBSD 5.8 (GENERIC) #117: Sun Aug 16 06:42:12 MDT 2015
MicroVAX 3800/3900 [0A000006 01530302]
cpu: KA655, CVAX microcode rev 6 Firmware rev 83


; Set the CPU type and memory size for this hardware configuration:
set CPU 512M 
;set cpu simhalt

attach nvr ../data/nvram.bin
load -r ../data/ka655x.bin 

; Line printer - uncomment if you want to enable.
set lpt enable
attach lpt ../data/openbsd-vax-line-printer-output.txt

; Disable devices we won't be needing (for now)
; Device DHQ11 Terminal Multiplexor (VH) 
set VH disable 
; Device UQSSP Tape Controller 0 
set TQ disable 
; Device TSV11/TSV05 Tape Controller 
set TS disable 
; Device RLV12 Controller 0 
set RL disable 
; Device Serial Adapter 16 Lines 
set DZ disable 
; Device UQSSP Disk Controller 1 
set RQB disable 
; Device UQSSP Disk Controller 2 
set RQC disable 
; Device UQSSP Disk Controller 3 
set RQD disable 

; Device RQ (DUAn disks) is automatically enabled in the
; simulator. Attach the data files to be used as the disks.
set rq enable
;ra92 disk capacity is 1.5GB
set rq0 ra92
attach rq0 ../data/openbsd-vax.ra92-1.5gb.disk0.dsk
set rq1 ra92
attach rq1 ../data/openbsd-vax.ra92-1.5gb.disk1.dsk

set rq2 rrd40
attach -r rq2 ../data/install58.iso

set rq3 disable

; Ethernet adapter for TCP/IP
set xq enable
; MAC OUI 58-9C-FC Vendor is FreeBSD Foundation (closest to OpenBSD)
; IP -
set xq mac=58-9C-FC-B5-11-E4
attach xq vde:/tmp/vde-ip.ctl

; DECnet adapter - DECnet is not available for OpenBSD (this is just a placeholder)
set xqb enable
;set xqb mac=AA-00-04-00-.....
set xqb mac=58-9C-FC-B5-11-E5
attach xqb vde:/tmp/vde-dnet.ctl

boot cpu

Initial install log

Adding a disk and trying to build ports (causes kernel panic)

Tuesday, March 19, 2019

Installing CMU TCP/IP 6.3 on VAX VMS 4.7 (SIMH)

Supratim Sanyal's Blog: Download and install CMU-TEK CMU TCPIP for VMS 4.7 VAX for TCP/IP services on VAX/VMS 4
CMU-TEK TCP/IP 6.3 for VAX VMS 4.7 - TELNET connection
Thanks to a friend on HECnet (the owner of node ALDUR) I was able to locate, download and install the elusive CMU-TEK TCP/IP services on a SIMH VAX running the ancient VAX VMS 4.7. I installed everything available with CMU TCP/IP for VMS 4, including sources and documentation. It all went smoothly, no hiccups at all - the software is, as expected in the world of VMS, obviosuly high-quality and well designed and implemented.

The VAX VMS 4.7 node "XLVII" was built using Andy Hoffman's distribution.


According to Columbia University's Kermit Project Page:

CMU-OpenVMS/IP (CMUIP), originally CMU/Tek-TCP/IP, is a public domain TCP/IP package originally developed at Carnegie-Mellon University (CMU) by Tektronix (Tek). CMUIP was released to the public trust in December 1992 as CMU-OpenVMS/IP and is now maintained by a diligent group from around the Internet. Support is provided through the usenet group:
BSD socket support for C-Kermit is supported thanks to a new CMU-OpenVMS/IP socket library written by Mike O'Malley of Digital Equipment Corporation. If you have this library installed on your VMS system, the build procedure will find the file CMUIP_ROOT:[SYSLIB]LIBCMU.OLB and C-Kermit will be built automatically with CMU-OpenVMS/IP support unless you define NET_OPTION to say otherwise. The LIBCMU socket library can be found on the anonymous ftp server.

However, there is little activity in the referenced usenet group now.

I installed the base CMU TCP/IP and the primary utilities in one session, and the rest of the applications (TELNET, FINGER, FTP, LPR and E-MAIL) in another. Here are the two session logs.


SESSION-2 (TCP/IP Applications on CMU-TEK on VAX VMS 4.7)

Monday, March 18, 2019

Remove all ANSI Color, Cursor Position etc. Escape Sequences from a Text File

So I run "script" to create a session log for something interesting, and it is full of ANSI Escape Codes used by the aliased "ls" command etc. on Linux that are intended to make the terminal colorful.

I did unalias ls in .bashrc and also created a .vimrc with "syntax off" to disable VIM's syntax highlighting, but before that I had already captured the session log with ANSI escape sequences in all their glory.

The following sed command filters them out from a text stream fed to its standard input, to produce a nice clean session log with no ANSI escape sequences. This, and other similar sed commands, can be found here.

sed 's/\x1b\[[0-9;]*[a-zA-Z]//g'

Do something like

cat x.x | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' > clean.txt

End of this post.

Recommended Products from Amazon