In honor of the Unix 50 party tomorrow, I wrote an analysis of the
available data to conclude the first PDP-7 that Ken and Dennis used to
bring up Unix on was serial number 34. I've not seen this result elsewhere,
but if it's common place, please let me know.
https://bsdimp.blogspot.com/2019/07/the-pdp-7-where-unix-began.html
One surprise from the analysis: there was only one pdp-7 in the world that
could have run the original v0 unix. It's the only one that had the RB09
hard drive (though the asset list referenced in the article listed a RC09
on that system).
I hope you enjoy
Warner
Back in the day I had the pleasure of firing up what was possibly
the last North American BITNET node (certainly the last one on
NetNorth), on a Sun 3/xxx deskside server running SunOS 3.5(+).
(AUCS, at Athabasca U.)
I'm curious to know if the UREP source code that drove that link
ever escaped. I recall it being licensed code at the time, but
from academia vs. a commercial product. I don't know if that also
applied to the bisync serial driver.
--lyndon
> From: "Nelson H. F. Beebe"
> In our PDP-10 TOPS-20 archive of what was then utah-science .. I find
> these files:
Thanks very much for doing that search, and congratulations on finding them!
Not that I have the slightest interest/use in the results, but it's so good to
see historical software being saved.
Noel
Postal mail today brought me the latest issue of the IEEE Computing
Edge magazine, which presents short articles from other recent IEEE
publications. In it, there is an article with numerous mentions of
Doug McIlroy, early Unix, software tools, and software modularization:
Gerard J. Holzmann
Software Components
IEEE Computing Edge 5(7) (July 2019) 38--40
https://ieeexplore.ieee.org/document/8354432
[republished from IEEE Software 35(3) (May/June 2018) 80--82]
-------------------------------------------------------------------------------
- Nelson H. F. Beebe Tel: +1 801 581 5254 -
- University of Utah FAX: +1 801 581 4148 -
- Department of Mathematics, 110 LCB Internet e-mail: beebe(a)math.utah.edu -
- 155 S 1400 E RM 233 beebe(a)acm.org beebe(a)computer.org -
- Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe/ -
-------------------------------------------------------------------------------
I wouldn't call it an error, merely a misleading sentence. .EX/.EE is,
after all, an extension in Gnu, albeit not original to Gnu. And I
didn't intend to impugn anybody. The sentence, "Ingo Schwarze stated
incorrectly" was apparently slipped into the quotation to provide
missing context. I do appreciate, however, how quickly the
inexactness was repaired.
Doug
| Doug McIlroy wrote on Mon, Jul 08, 2019 at 11:17:32PM -0400:
| > Ingo Schwarze stated incorrectly:
|
| >> EE This is a non-standard GNU extension. In mandoc(1), it does the
| >> same as the roff(7) fi request (switch to fill mode).
|
| >>
| >> EX This is a non-standard GNU extension. In mandoc(1), it does the
| >> same as the roff(7) nf request (switch to no-fill mode).
|
| > "Gnu extension" should be read as "extension adopted by Gnu".
| > .EX/.EE was introduced in 9th Edition Unix.
|
| Thank you for pointing out the error, i corrected the manual page
| in OpenBSD and in portable mandoc, see the commit below.
Just sync my personal copy with the tuhs archive.
Looks like there are a lot of Mac preview files (that start with ._) mixed
in. Is that on purpose?
Warner
Dear all,
Apologies for this semi-spam message from a long-time appreciator of classic computers and nostalgic obsolete products, but I hope this will be of interest to at least a few people here.
So, yes, by way of context, I've been acquiring what I consider to be characterful and/or historically interesting computers for coming up to, maybe, 15 years now, with the intention of being able to curate multiple, interactive temporary exhibits on the history of computing, but since moving continents (amongst other things), my paths and passions have changed, so I am currently in the process of re-testing (and repairing) my machines, and will be trying to sell them off in the coming weeks and months. Under different circumstances, finding people (or groups) with similar interests and plans would have been an equal-first priority, but given my more recent 'life changes', sale price — and the ability to better pursue my new focuses — is now more of a factor.
(That said, if you are (or know) a developer of an open source machine emulator who could use one of these machines --- particularly one of the more obscure ones --- please do get in touch, as the prospect of people being able to keep older / rarer operating systems and software running once the physical machines are not longer available or working /is/ actually still kinda important to me, and I'd be open to a lower price and/or setting up some remote access with some kind of kludged-together iLO and vaguely 'dual-ported' disk access via, e.g., an SD2SCSI setup.)
But before I list them on eBay (and/or by way of a heads up), I wanted to let people here know, just in case I have something that someone here particularly wants / needs / could use. The current list of systems I will be parting with is accessible at https://docs.google.com/spreadsheets/d/1QqUrO11gnn4fwAPDxqO_phKDt1M0O15G7wJ… but some (hopefully) highlights include (*big breath*):
DEC: MicroPDP-11/53+; MicroVAX 2000; VAXstation 4000 VLC/60/90A/96; VAX 4000 100A, 105; DECstation 5000/240, 260 (MIPS-based); DEC 3000/300X; Personal Workstation 600au; AlphaServer 4100; AlphaServer DS20, DS25 systems; Letterwriter 100; VT 101, 220, 520 terminals
HP: HP rx2800 Integrity2; 9000 715/100 and Visualize C110 PA-RISC systems
SGI: Indy and O2 systems
SUN: ELC, SPARCstation Voyager (the portable one), 5 and 20; Ultra 1; Ultra 5; Netra T1-105; Enterprise T5240
Apple: IIc, IIe Platinums, IIgs; Mac 512ke, Mac Pluses; SE/30 and Quadra 700s (also for running A/UX); iMac G3s and a G4
Commodore: PET 3000 systems, PET 8032-SK; various C64 / C64C and 128D systems; SX-64; Music Maker keyboards (the big one, inc. SFX modules); Amiga 1000
Apologies again, please feel free to contact me with any queries or reasonable offers, or even if you'd just like to be kept in the loop as more machines become available, and all the best.
Thanks in advance,
Peter
P.S. In light of the responses I've received to posts I've made elsewhere, I've included a 'Default Reserve' price in the aforementioned spreadsheet. I've written more about this there, but the gist of it is that, given that very few of the more obscure / awesome machines have gone through eBay recently, it's kinda hard for me to gauge what a fair and reasonable (to me and the future buyers) price is for quite a few of my machines --- I've started to put in rough figures for /some/ of them based upon 'what feels right', but if there's nothing there, please don't ask me what I might want for them as I don't know yet (though do feel free to make me an offer). Thanks again!
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<