[Simh] SIMH VAX on Mac OS with networking

Robert Bustichi robert at smrn.com
Fri Aug 20 16:14:55 EDT 2010


Ton, that YOU VERY MUCH for posting the fix for sim_ether.c to get SIMH 
w/networking running with Snow-Leopard.  The fix worked like a chap and 
networking is working perfectly!  I was almost ready to give up....

I'm going to work on getting taptap compiled and work on the new startup 
script.

Thanks again.

- Robert

On 8/20/10 12:07 PM, Van Overbeek, Ton wrote:
> I finally got the networking on my SIMH VAX working again under
> Snow-Leopard.
> See my earlier post today on the SIMH mailing list.
> This post details my setup and it may be of use if you are in a similar
> situation.
>
> For my VAX I do not need external network access. I only need to be able
> to
> telnet and ftp to SIMH from the Mac side in order to get data in and
> out.
> I use two tap interfaces: tap0 is connected to the mac with ip
> 192.168.2.1 and
> tap1 is connected to simh.
> My simh vax is running vms 7.3 with dec tcpip (formerly ucx) networking
> with a static ip of 192.168.2.2 and a static default route to
> 192.168.2.1.
> The two tap interfaces are connected back to back (forming a tunnel)
> using
> a small program taptap.c.
> The idea came from
> http://www.retrocomputinggeek.com/retrowiki/SIMHNetworking/.
> (Originally I was running simh on Windows XP and winpcap provided the
> tunnel,
> no need for taptap).
> The source for taptap.c is below:
> ------------------------------------------------------------------------
> --------
> /* taptap - link two /dev/net/tun to form virtual ethernet
>
>     Copyright (c) 2003, Hans Rosenfeld
>
>     Permission is hereby granted, free of charge, to any person obtaining
> a
>     copy of this software and associated documentation files (the
> "Software"),
>     to deal in the Software without restriction, including without
> limitation
>     the rights to use, copy, modify, merge, publish, distribute,
> sublicense,
>     and/or sell copies of the Software, and to permit persons to whom the
>     Software is furnished to do so, subject to the following conditions:
>
>     The above copyright notice and this permission notice shall be
> included in
>     all copies or substantial portions of the Software.
>
>     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR
>     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY,
>     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT
> SHALL
>     HANS ROSENFELD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> WHETHER
>     IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
> IN
>     CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> SOFTWARE.
>
>     Except as contained in this notice, the name of Hans Rosenfeld shall
> not
>     be used in advertising or otherwise to promote the sale, use or other
> dealings
>     in this Software without prior written authorization from Hans
> Rosenfeld.
>
>     (This Copyright notice / Disclaimer was copied from SIMH (c) Robert M
> Supnik)
>
>   */
>
> #include<sys/types.h>
> #include<sys/time.h>
> #include<sys/stat.h>
> #include<sys/socket.h>
> #include<fcntl.h>
> #include<unistd.h>
> #include<stdio.h>
> #include<stdlib.h>
>
> int main(int argc, char **argv)
> {
> 	int dev1,dev2,cnt;
> 	unsigned char buf[1518];
> 	
> 	if( ((dev1 = open("/dev/tap0", O_RDWR))<  0) ||
> 	    ((dev2 = open("/dev/tap1", O_RDWR))<  0) ) {
> 		perror("open()");
> 		exit(1);
> 	}
>
> 	if(fork())
> 		while(1) {
> 			cnt=read(dev1,(void*)&buf,1518);
> 			if (cnt>  0) {
> 				write(dev2,(void*)&buf,cnt);
> 			}
> 		}
> 	else
> 		while(1) {
> 			cnt=read(dev2,(void*)&buf,1518);
> 			if (cnt>  0) {
> 				write(dev1,(void*)&buf,cnt);
> 			}
> 		}
> }
> ------------------------------------------------------------------------
> --------
>
> Here is my bash script to start the VAX:
>
> ------------------------------------------------------------------------
> --------
> #!/bin/bash
> #
> # shell script to start the vax emulator with host networking
> #
> TVOVAXROOT=/Users/tvoverbeek/Documents/SOHO/OBSW/VAX-Sim-Mac
> #
> # 1. Start our tap0-tap1 bridge
> $TVOVAXROOT/TapTap/taptap&
>
> # Give taptap some time to create the tap0 and tap1 interfaces
> sleep 1
>
> # tap1 side is used by the vax (Vax will use 192.168.2.2)
> ifconfig tap1 up
>
> # tap0 is the mac os-x side
> ifconfig tap0 192.168.2.1 netmask 255.255.255.0 up
>
> # Start console
> xterm -132 -title "VAX Console" -e "sleep 2&&  telnet localhost 5678"&
>
> # Start a terminal session
> xterm -geometry 80x48-1273-186 -132 -bg lightyellow -fn 8x13 -title "VAX
> terminal" -e "sleep 6&&  telnet localhost 5679"&
>
> # Start the emulator
> (cd $TVOVAXROOT/tvovax; ./vax)
>
> # Kill our bridge and bring tap0 and tap1 down.
> killall taptap
> ------------------------------------------------------------------------
> --------
>
> The relevant lines from vax.ini:
>
> ------------------------------------------------------------------------
> --------
> 	.....
> ; Telnet Console
> set console telnet=5678
> ;
> ; Attach terminal multiplexer
> set vh dhu
> set vh fastdma
> attach vh 5679
> ;
> ; Attach ethernet adapter to TAP device
> attach xq tap1
> 	.....
> ------------------------------------------------------------------------
> --------
>
> and finally the output from netstat -i and netstat -r with simh running:
>
> ------------------------------------------------------------------------
> --------
> HPM-AVANOVER-MCBKPRO:VAX-Sim-Mac tvoverbeek$ netstat -i
> Name  Mtu   Network       Address            Ipkts Ierrs    Opkts Oerrs
> Coll
> lo0   16384<Link#1>                         171520     0   171520     0
> 0
> lo0   16384 localhost   ::1                 171520     -   171520     -
> -
> lo0   16384 localhost   fe80:1::1           171520     -   171520     -
> -
> lo0   16384 127           localhost         171520     -   171520     -
> -
> gif0* 1280<Link#2>                              0     0        0     0
> 0
> stf0* 1280<Link#3>                              0     0        0     0
> 0
> en0   1500<Link#4>     00:23:df:94:8f:0e        0     0        0     0
> 0
> en1   1500<Link#5>     00:25:00:3e:77:6e  3806767     0  5594092     0
> 0
> en1   1500  hpm-avanove fe80:5::225:ff:fe  3806767     -  5594092     -
> -
> en1   1500  10.0.1/24     10.0.1.4         3806767     -  5594092     -
> -
> fw0*  4078<Link#6>     00:23:df:ff:fe:94:8f:0e        0     0        0
> 0     0
> vmnet 1500<Link#7>     00:50:56:c0:00:01        0     0        0     0
> 0
> vmnet 1500  192.168.7     192.168.7.1            0     -        0     -
> -
> vmnet 1500<Link#8>     00:50:56:c0:00:08        0     0        0     0
> 0
> vmnet 1500  192.168.156   192.168.156.1          0     -        0     -
> -
> tap0  1500<Link#9>     72:28:56:bf:6c:f0      208     0      360     0
> 0<-----
> tap0  1500  192.168.2     192.168.2.1          208     -      360     -
> -<-----
> tap1  1500<Link#10>    c6:dc:da:05:7c:83      360     0      208     0
> 0<-----
> HPM-AVANOVER-MCBKPRO:VAX-Sim-Mac tvoverbeek$ netstat -r
> Routing tables
>
> Internet:
> Destination        Gateway            Flags        Refs      Use   Netif
> Expire
> default            10.0.1.1           UGSc            9      132     en1
> 10.0.1/24          link#5             UCS             3        0     en1
> 10.0.1.1           0:26:bb:6c:20:e2   UHLWI          30  4871163     en1
> 1194
> 10.0.1.4           localhost          UHS             0        0     lo0
> 10.0.1.5           0:1e:65:20:8b:52   UHLWI           0     1151     en1
> 1124
> 10.0.1.8           0:c:29:d3:c2:3e    UHLWI           0        0     en1
> 916
> 127                localhost          UCS             0        0     lo0
> localhost          localhost          UH              6   170459     lo0
> 169.254            link#5             UCS             0        0     en1
> 192.168.2          link#9             UC              1        0    tap0
> <-----
> 192.168.2.2        8:0:2b:aa:bb:cc    UHLWI           0        3    tap0
> 1038<-----
> 192.168.7          link#7             UC              0        0  vmnet1
> 192.168.156        link#8             UC              0        0  vmnet8
>
> Internet6:
> Destination        Gateway            Flags         Netif Expire
> 	......
> ------------------------------------------------------------------------
> --------
>
> Note that in 'netstat -r' 8:0:2b:aa:bb:cc is the MAC address of the VAX
> QE0 interface.
>
> With this setup it is easy to get data in and out of the VAX. I am using
> FileZilla
> for this.
>
> Hope this helps somebody getting networking going on Snow-Leopard.
> --
> Ton van Overbeek




More information about the Simh mailing list