[Simh] Ultrix 1.0

Jason Stevens jsteve at superglobalmegacorp.com
Thu Jun 26 22:35:15 EDT 2014


I wonder if it's related to the BSD driver for the network card.... Years
ago I was playing with 4.2 and 4.3BSD and I never could get the network card
to work, so I started to play with the driver, and I found this:

 

In the  if_de.c driver there is some error checking, that always seems to
come back with errors.

 

------8<------8<------8<------8<------8<------8<------8<------8<------8<----
--8<

/*

 * Ethernet interface receiver interface.

 * If input error just drop packet.

 * Otherwise purge input buffered data path and examine

 * packet to determine type.  If can't determine length

 * from type, then have to drop packet.  Othewise decapsulate

 * packet based on type and pass to type specific higher-level

 * input routine.

 */

derecv(unit)

        int unit;

{

        register struct de_softc *ds = &de_softc[unit];

        register struct de_ring *rp;

        int len;

 

        rp = &ds->ds_rrent[ds->ds_rindex];

        while ((rp->r_flags & RFLG_OWN) == 0) {

                ds->ds_if.if_ipackets++;

                if (ds->ds_deuba.iff_flags & UBA_NEEDBDP)

                        UBAPURGE(ds->ds_deuba.iff_uba,

                        ds->ds_ifr[ds->ds_rindex].ifrw_bdp);

                len = (rp->r_lenerr&RERR_MLEN) - sizeof (struct
ether_header)

                        - 4;    /* don't forget checksum! */

                /* check for errors */

               if ((rp->r_flags & (RFLG_ERRS|RFLG_FRAM|RFLG_OFLO|RFLG_CRC))
||

                    (rp->r_flags&(RFLG_STP|RFLG_ENP)) != (RFLG_STP|RFLG_ENP)
||

                    (rp->r_lenerr & (RERR_BUFL|RERR_UBTO|RERR_NCHN)) ||

                    len < ETHERMIN || len > ETHERMTU) {

                        ds->ds_if.if_ierrors++;

                        if (dedebug)

                        printf("de%d: ierror, flags=%b lenerr=%b
(len=%d)\n",

                                unit, rp->r_flags, RFLG_BITS, rp->r_lenerr,

                                RERR_BITS, len);

                } else

------8<------8<------8<------8<------8<------8<------8<------8<------8<----
--8<

if_dereg.h:#define      RFLG_ERRS       0x40            /* Error summary */

if_dereg.h:#define      RFLG_FRAM       0x20            /* Framing error */

if_dereg.h:#define      RFLG_OFLO       0x10            /* Message overflow
*/

if_dereg.h:#define      RFLG_CRC        0x08            /* CRC error */

if_dereg.h:#define      RFLG_STP        0x02            /* Start of packet
*/

if_dereg.h:#define      RFLG_ENP        0x01            /* End of packet */

if_dereg.h:#define      RERR_BUFL       0x8000          /* Buffer length
error *

if_dereg.h:#define      RERR_UBTO       0x4000          /* UNIBUS tiemout */

if_dereg.h:#define      RERR_NCHN       0x2000          /* No data chaining
*/

 

 

Now I don't know if Ultrix still has the driver source code... but this was
a quick enough fix for me.  And I recall if_de.c being the same from 4.2BSD
into 4.3BSD as it was the same fix I used to get them all working on SIMH.

 

 

 

 

The patch was something like this...

------8<------8<------8<------8<------8<------8<------8<------8<------8<----
--8<

500c500

<               if ((rp->r_flags & (RFLG_ERRS|RFLG_FRAM|RFLG_OFLO|RFLG_CRC))
||

---

> /***          if ((rp->r_flags & (RFLG_ERRS|RFLG_FRAM|RFLG_OFLO|RFLG_CRC))
||

503a504,505

>                       ***/

>                       if(1==5){

------8<------8<------8<------8<------8<------8<------8<------8<------8<----
--8<

 

  _____  

From: Henry Bent [mailto:hbent at oberlin.edu] 
Sent: Friday, June 27, 2014 9:09 AM
To: simh at trailing-edge.com
Subject: [Simh] Ultrix 1.0

 

I had success booting the Unix Archive's floppy distribution of Ultrix 1.0
on the MicroVAX 1 simulator.  It appears that the distribution there was
only meant for a dual-RX50 MicroVAX 1 with an RD drive, and will not boot on
any other machine.  RQ0 needs to be an RD51 or RD52, and RQ1 and RQ2 need to
be RX50s.  TTI and TTO need to be 7 bit.  To boot the installer, put
32m-1.0-bin/01 on RQ1 and 32m-1.0-bin/02 on RQ2.  The install goes cleanly,
albeit with quite a bit of disk swapping - the installation disk set is 13
floppies.

The QVSS is supported and will display some output on boot.  I haven't yet
looked into what is needed to use it as the console (if that's possible?).

The kernel seems to support what I assume is the DEQNA - it has references
to a qe device - but I can't figure out how to get it recognized.
Unfortunately there are no kernel config files in the distribution, so I
have no idea if the stock kernel is expecting the controller at a
non-standard address.  Any help with this would be greatly appreciated, 

-Henry

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.trailing-edge.com/pipermail/simh/attachments/20140627/951fbf52/attachment-0002.html>


More information about the Simh mailing list