As promised here is the diff & misc info on the build.  I installed the Mt Xinu disks to create a build environment and uucp’d the sources from CD#4 of Kirks’ CSRG set (/local/MACH/386/sys).

 

Grepping the source reveals it to be MK35.  Which makes sense from the release notes as this was an i386 only release:

 

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

   ***** MK Version MK35  (rvb) *****

 

 

This is an I386 architecture release only.  It has been tested

on an AT as well as the hypercube.

 

No New features:

--- --------

 

Except possibly that the if_pc586.c is not timing dependent

any more.

 

The big deal about this release is that all the files in the

i386at directory and the files in Mach2.5 I386q are identical --

that is all improvements in the mainline have been merged to

the 3.0 code and vice versa.  NOTE:  the 3.0 com driver has

not been tested cause I did not have any hardware.  Also I

have lpr and if_par drivers that I did not even install for

the same reason.  (I needed to install com.c for the mouse

support code.)

 

ALSO, this release has the Prime copyrights changed to something

less threatening, courtesy of Prime Computer Inc.

 

Bug fix:

The panic that rfr reported with the ram_to_ptr is no longer

possible.

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

 

 

 

For people who like DMESG’s here it is:

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

 

boot:

442336+46792+115216[+38940+39072]

 

 

Insert file system

 

Sÿ boot: memory from 0x1000 to 0x7d0000

Kernel virtual space from 0xc0000000 to 0xc25d0000.

Available physical space from 0xa000 to 0x7d0000

i386_init: virtual_avail = c07d0000, virtual_end = c25d0000

end c01938d8, sym c01938dc(981c) str = c019d0f8(98a4)

[ preserving 78016 bytes of symbol table ]

Mach/4.3 #5.1(I386x): Wed Jan 20 00:45:55 WET 1988; obj/STD+WS-afs-nfs (localhost)

physical memory = 7.81 megabytes.  vm_page_free_count = 689

using 200 buffers containing 0.78 megabytes of memory

available memory = 5.55 megabytes. vm_page_free_count = 58e

fdc0: port = 3f2, spl = 5, pic = 6.

fd0:  port = 3f2, spl = 5, pic = 6. (controller 0, slave 0)

fd1:  port = 3f2, spl = 5, pic = 6. (controller 0, slave 1)

com0: port = 3f8, spl = 6, pic = 4. (DOS COM1)

lpr0: port = 378, spl = 6, pic = 7.

par0: port = 378, spl = 6, pic = 7.

root on `­b

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

 

The diff from the CD is as follows:

 

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

jsteve@2006macpro:/mnt/c/temp/csrg$ diff -ruN sys mach25-i386

diff -ruN sys/Makeconf mach25-i386/Makeconf

--- sys/Makeconf        1970-01-01 08:00:00.000000000 +0800

+++ mach25-i386/Makeconf        2019-06-24 15:24:49.000000000 +0800

@@ -0,0 +1,102 @@

+#

+# Mach Operating System

+# Copyright (c) 1989 Carnegie-Mellon University

+# All rights reserved.  The CMU software License Agreement specifies

+# the terms and conditions for use and redistribution.

+#

+#

+# HISTORY

+# $Log:        Makeconf,v $

+# Revision 2.16  91/09/25  18:51:17  mja

+#      Fix VAX_CONFIG so that processor number component is last (for

+#      SUP wild-carding to work);  make MMAX_CONFIG consistent with

+#      other platforms as STD+ANY+EXP+64.

+#      [91/09/25  18:41:59  mja]

+#

+# Revision 2.15  91/09/24  20:07:07  mja

+#      Require new ${KERNEL_SERIES} macro in place of old ${RELEASE}

+#      even to specify the "latest" series;  add temporary

+#      ${ENVIRON_BASE};  add silent include of Makeconf-local.

+#      [91/09/22  03:16:36  mja]

+#

+#      Add SITE;  set SOURCEDIR to MASTERSOURCEDIR if present (for build).

+#      [91/09/21  18:06:08  mja]

+#

+# Revision 2.14  91/08/30  09:37:19  berman

+#      Set up default config for MMAX which is STD+MP (multiprocessor)

+#      [91/07/30  12:19:40  ern]

+#

+# Revision 2.13  91/04/02  16:04:53  mbj

+#      Added {I,AT}386_CONFIG=STD+WS+EXP lines.

+#      Changed ${MACHINE} references to ${TARGET_MACHINE}.

+#

+# Revision 2.12  90/08/30  12:24:52  bohman

+#      Changes for mac2.

+#      [90/08/28            bohman]

+#

+# Revision 2.11  89/09/25  22:43:32  mja

+#      Correct mis-merged OBJECTDIR.

+#

+# Revision 2.10  89/09/25  22:20:03  mja

+#      Use SOURCEDIR instead of VPATH for shadowing.  This means we

+#      can do away with the SRCSUFFIX stuff which "make" does by

+#      itself, and that Makefiles can use VPATH themselves.  I also

+#      "simplified" the definition of CONFIG and "release_...".

+#      [89/07/06            bww]

+#

+# Revision 2.9  89/08/08  21:44:58  jsb

+#      Defined PMAX_CONFIG.

+#      [89/08/03            rvb]

+#

+# Revision 2.8  89/07/12  23:02:52  jjc

+#      Defined SUN4_CONFIG.

+#      [89/07/12  23:01:03  jjc]

+#

+# Revision 2.7  89/04/10  00:34:59  rpd

+#      Changed OBJECTDIR name to correspond to new organization.

+#      [89/04/06            mrt]

+#

+# Revision 2.6  89/02/25  14:12:18  gm0w

+#      Changes for cleanup.

+#

+# Revision 2.5  89/02/25  14:08:30  gm0w

+#      Changes for cleanup.

+#

+# Revision 2.4  88/11/14  15:04:01  gm0w

+#      Changed the standard configurations to correspond

+#      to the new names.

+#      [88/11/02  15:45:44  mrt]

+#

+# Revision 2.3  88/09/07  15:44:43  rpd

+#      Moved CONFIG macros here from Makefile, so that the user

+#      can easily customize them by modifying Makeconf.

+#      [88/09/07  01:52:32  rpd]

+#

+# Revision 2.2  88/07/15  15:11:46  mja

+# Created.

+#

+

+VAX_CONFIG     = STD+ANY+EXP+16

+mac2_CONFIG    = MACMACH-macos_emul

+I386_CONFIG    = STD+WS+EXP

+AT386_CONFIG   = STD+WS+EXP

+MMAX_CONFIG    = STD+ANY+EXP+64

+

+#CONFIG        = ${${TARGET_MACHINE}_CONFIG?${${TARGET_MACHINE}_CONFIG}:STD+ANY+EXP}

+#CONFIG        = STD+WS+EXP-afs-nfs

+CONFIG = STD+WS-afs-nfs

+

+SITE   = CMUCS

+

+SOURCEDIR      = ${MASTERSOURCEDIR?${MASTERSOURCEDIR}:${SRCBASE}}

+

+#OBJECTDIR     = ../../../obj/@sys/kernel/${KERNEL_SERIES}

+OBJECTDIR      = ./obj

+

+#  XXX until build is fixed to set these  XXX

+ENVIRON_BASE   = ${RELEASE_BASE}

+

+.EXPORT: ENVIRON_BASE

+

+#  Provide for private customizations in a shadow directory

+-include Makeconf-local

diff -ruN sys/Makefile mach25-i386/Makefile

--- sys/Makefile        2016-08-08 14:37:11.000000000 +0800

+++ mach25-i386/Makefile        2019-06-24 15:24:49.000000000 +0800

@@ -206,6 +206,12 @@

at386_cpu=i386

sun4_cpu=sun4

cpu=$(${machine}_cpu)

+#echo "CPU IS $cpu"

+AT386_cpu=i386

+I386_cpu=i386

+cpu=${${TARGET_MACHINE}_cpu?${${TARGET_MACHINE}_cpu}:${target_machine}}

+#echo "CPU IS $cpu"

+

 

VAX_OUTPUT=Makefile

SUN_OUTPUT=Makefile

diff -ruN sys/conf/newvers.sh mach25-i386/conf/newvers.sh

--- sys/conf/newvers.sh 2016-08-08 14:37:11.000000000 +0800

+++ mach25-i386/conf/newvers.sh 2019-06-24 15:25:15.000000000 +0800

@@ -56,8 +56,17 @@

v="${major}.${minor}(${variant}${edit}${patch})" d=`pwd` h=`hostname` t=`date`

CONFIG=`cat vers.config`

if [ -z "$d" -o -z "$h" -o -z "$t" -o -z "${CONFIG}" ]; then

-    exit 1

+#    exit 1

+edit="386"

+major=5

+minor=1

+variant="I"

+patch="x"

+copyright="/copyright.txt"

+v="${major}.${minor}(${variant}${edit}${patch})" d=`pwd` h=`hostname` t=`date`

fi

+#

+

d=`expr "$d" : '.*/\([^/]*\)/[^/]*$'`/${CONFIG}

(

   /bin/echo "int  version_major      = ${major};" ;

diff -ruN sys/i386/start.s mach25-i386/i386/start.s

--- sys/i386/start.s    2016-08-08 14:37:11.000000000 +0800

+++ mach25-i386/i386/start.s    2019-07-01 23:47:25.208021800 +0800

@@ -210,13 +210,14 @@

 

        lgdt    (%eax)

 

+       / flip cr3 before you flip cr0

+       mov     %edx, %cr3

+

        / turn PG on

        mov     %cr0, %eax

        or      $PAGEBIT, %eax

        mov     %eax, %cr0

 

-       mov     %edx, %cr3

-

        ljmp    $KTSSSEL, $0x0

 

/ *********************************************************************

diff -ruN sys/standi386at/boot/disk.c mach25-i386/standi386at/boot/disk.c

--- sys/standi386at/boot/disk.c 2016-08-08 14:37:11.000000000 +0800

+++ mach25-i386/standi386at/boot/disk.c 2019-07-01 23:51:11.261850100 +0800

@@ -340,11 +340,11 @@

 

#ifndef        FIND_PART

        *rel_off = vp->part[part].p_start;

-       if (vp->part[part].p_tag != V_ROOT)

+       if (vp->part[part].p_flag != V_ROOT)

                printf("warning... partition %d not root\n", part);

#else

        for (i = 0; i < vp->nparts; i++)

-               if (vp->part[i].p_tag == V_ROOT)

+               if (vp->part[i].p_flag == V_ROOT)

                        break;

 

        if (i == vp->nparts) {

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