hello there I'm Resun, a teenaged programmer and I love C and UNIX.
I want to use the 5th edition UNIX operating system. From here Index of /Archive/Distributions/Research/Dennis_v5 (tuhs.org)<https://www.tuhs.org/Archive/Distributions/Research/Dennis_v5/> I've got a compressed file of the 5th edition UNIX. I want to use it using the SimH emulator but there's no guide about how to install it or use it. I'm using SimH in Windows 10.
Can someone please help me to use this system?
Thanks.
I never saw his 32V work, but I reimplemented his additive random number generator in my own work.
Not too many people can write a 35 page PhD thesis.
Fewer can do it for Knuth.
-Larry
As an offshoot of looking more closely at 32V, SysIII and 8th Edition I got interested in how each managed memory.
I’ve not deep-dived into the code yet, but from cursory inspection and searching past posts on this list, I get to the following summary:
- As has been documented widely, 32V essentially retained the V7 swapping architecture, merely increasing the maximum process size a bit versus the PDP-11 version.
- SysIII appears to have retained this, just cleaning up the source code a bit. I assume that all the V7/SysIII derivatives of the early 80’s were swapping systems.
- John Reiser further developed 32V memory management into a (reportedly elegant) demand paging system in 1980-1981, but this code appears lost.
- 3BSD/4BSD/4.1BSD developed 32V memory management into a full demand paging setup as well. This code base was dominant in the 1980-1985 era.
- 8th Edition pulled in the BSD VM code and is essentially identical to that in 4.1BSD. This choice was made because it was not a research interest and using a maintained code base freed up scarce time.
- SysV R1 appears to have retained the SysIII memory system.
- SysV R2 (floating about on the net, eg. here https://github.com/ryanwoodsmall/oldsysv) seems to have used a new implementation.
Questions:
Is that about correct, or am I missing major elements?
Several places mention that there was also a setup that was still swapping in nature, but did not require allocations in core to be contiguous (“scatter paging”). Did this get used much in the era?
At first glance, the SysV R2 code seems shorter and cleaner than the early BSD code (~2000 vs. ~3000 sloc). Is this implementation perhaps a derivative of John Reiser’s work?
For clarity and ease of reference:
- The “Tour of paper” is for instance here: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3512 <http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.3512>
- A machine description for the VAX that matches with that paper is for instance in the SysIII source: https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/cc/vax/pcc/ta… <https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/cc/vax/pcc/ta…>
- The new style description in 8th edition is here: https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/vax/stin <https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/vax/stin>
- The program that translates the “stin” file to a “table.c” file is here: https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/common/sty.y <https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/ccom/common/sty.y>
====
Sometimes one thing leads to another.
Following the recent mention of some retro-brew 68K single board systems, I decided to build a CB030 board (in progress). I figure it is a rough proxy for a 1980 VAX and would allow for some experimentation with the 32V / SysIII / 8th edition code.
My first thought was to use the M68K compiler that is included with the Blit sources (see THUS Archive for this), as I had used that before to explore some of the Blit source. That compiler is LP32, not ILP32 - which may be a source of trouble. Just changing the SZINT parameter yielded some issues, so I started looking at the PCC source.
This source does not have a “table.c” in the well known format as described in the “A tour of the portable C compiler” paper. Instead it uses a file “stin” which appears to be in a more compact format and is translated into a “table.c” file by a new pre-processor ("sty.y”). Then looking at the VAX compilers for 8th and 10th edition, these too use this “stin” file.
All the other m68K compilers (based on pcc) that I found appear to derive from the V7/32V/SysIII lineage, not from the 8th edition lineage.
A quick google did not yield much background or documentation on the STY format.
Anybody on this list that can shed some light on the history of the STY table and on how to use it? Any surviving reports or memos that would be useful?
Many thanks in advance
Paul
Does anyone here have an archive of SunOS patches? I'm looking for one
specific one, 100332-08, for Fortran 1.4. Feel free to reply off-list.
Thanks!
-Henry
Thanks to Emanuel Steibler, I am now in possession of a VAXStation 4000
VLC. I've got OpenVMS installed, but, well, the SCSI2SD gives me two more
2GB disks (the fourth partition is the OpenVMS install CD).
I'd like to put Quasijarus on it.
Problem is, the VLC only supports, as far as I know, SCSI devices. I'm
quite happy to install Quasijarus under simhfrom an emulated SCSI tape to
an rz device and then just dd the resulting disk image over to the SD
card...but I can't work out how to do it.
This (as my simh ini file) works fine for getting to the emulated console:
set rz0 rzu
att rz0 quas.dsk
set rz4 tz30
att rz4 quas.tap
boot.cpu
Problem is, quas.tap doesn't actually work; neither the prepackaged
4.3BSD-Quasijarus0c.tap nor one I make with mkdisttap.pl and the input
stand/miniroot/etc files.
I get this:
adam@m1-wired:~/Documents/src/quasi$ ./vaxstation4000vlc install.ini
VAXstation 4000-VLC (KA48) simulator V4.0-0 Current git commit id:
9bf37d3d
/Users/adam/Documents/src/quasi/install.ini-4> att rz4 quas.tap
RZ4: Tape Image 'quas.tap' scanned as SIMH format
/Users/adam/Documents/src/quasi/install.ini-5> boot cpu
Loading boot code from internal ka48a.bin
KA48-A V1.2-32B-V4.0
08-00-2B-B2-35-2C
16MB
?? 010 2 LCG 0086
?? 001 3 DZ 0032
?? 001 4 CACHE 0512
?? 001 7 IT 8706
?? 001 8 SYS 0128
?? 001 9 NI 0024
>>> show dev
VMS/VMB ADDR DEVTYPE NUMBYTES RM/FX WP DEVNAM
REV
------- ---- ------- -------- ----- -- ------
---
ESA0 08-00-2B-B2-35-2C
DKA0 A/0/0 DISK 2.14GB FX RZ23
0A18
DKA100 A/1/0 DISK ...... FX RZ23
0A18
DKA200 A/2/0 DISK ...... FX RZ23
0A18
DKA300 A/3/0 DISK ...... FX RZ23
0A18
MKA400 A/4/0 TAPE RM TZK50
1.1A
DKA500 A/5/0 DISK ...... FX RZ23
0A18
..HostID.. A/6 INITR
DKA700 A/7/0 DISK ...... FX RZ23
0A18
>>> boot mka400:
-MKA400
?48 ENDOFFILE
HALT instruction, PC: 00000B15 (MOVL (R11),SP)
Sooooo....
How do I make a bootable SCSI tape image from Quasijarus? Or,
alternatively, how can I create a bootable ISO image from the Quasijarus
installation files (and then either install under simh, or just dd to an SD
partition and boot from there, or even burn to an actual CD and install
from a SCSI CD-ROM drive)?
Adam
Adam Thornton:
I sat in on an undergrad course from [Dave Hanson] my first year of
grad school (94-95) and he taught it with lcc. I asked `why not
gcc' and he said, `gcc is 100,000 lines and I don't know what 90%
of them are doing; lcc is 10,000'.
===
My copy is indeed about 10K lines, not counting the code-generator
modules. Those are C files generated by a utility program lburg
from a template file. The three architectures supplied in the
distribution, for MIPS, SPARC, and X86, have template files of
about 900, 1200, and 700 lines respectively.
The template file for the VAX is about 2800 lines, but includes
some metalanguage of my own, interpreted by an awk script, to
generate extra rules for all the direct-store type-to-type
instructions. The C output from lburg for the other architectures
is 5000-6000 lines; for the VAX, after expansion by my awk
program and then by lburg, is nearly 20K.
Did someone say Complex Instruction Set?
Norman Wilson
Toronto ON
Dan Cross:
I seem to recall that LCC was also used, at least on 10th Ed. Am I
imagining things, or was that real?
===
Some of the earliest work on lcc was done in 1127; Chris
Fraser worked for the Labs for some years, Dave Hanson
collaborated from his appointment at Princeton. I believe
there was a /usr/bin/lcc. Some programs used it, either
because they needed some part of the ISO syntax (pcc2 was
pre-ISO) or just because.
I don't think that version of lcc used Reiser's c2 optimizer;
it generated reasonably good code by itself, including
emitting auto-increment/decrement instructions. Later
versions of lcc (such as that I later adopted as cc in
my personal V10 world) couldn't do that any more, so I
had to keep c2, and in fact to modify it to turn
addl3 a,b,(p)
mova 4(p),p
into
addl3 a,b,(p)+
(or maybe it was addl2 $4,p, I forget)
But that's another story which I'll tell only if asked,
and nothing to do with the original question.
I was waiting to see whether Steve Johnson would speak
up, because I'm not much of an expert; but yes, the VAX
C compiler in V8/V9/V10 is pcc2.
I think there are a few Research-specific hacks to add
additional stab info for pi(9.1) and on request insert
basic-block profiling for lcomp(1), but nothing major.
Maybe we did some hacking on c2 as well. I know I did
a lot of c2 cleanup later in my personal hacking in
Toronto, but I don't think I did much if any in New
Jersey. But that's independent of the compiler (modulo,
I think, some of my later fixes discovered by using c2
with a different compiler).
Norman Wilson
Toronto ON
Sometimes one thing leads to another.
Following the recent mention of some retro-brew 68K single board systems, I decided to build a CB030 board (in progress). I figure it is a rough proxy for a 1980 VAX and would allow for some experimentation with the 32V / SysIII / 8th edition code.
My first thought was to use the M68K compiler that is included with the bit sources (see THUS Archive for this), as I had used that before to explore some of the Blit source. That compiler is LP32, not ILP32 - which may be a source of trouble. Just changing the SZINT parameter yielded some issues, so I started looking at the PCC source.
This source does not have a “table.c” in the well known format as described in the “A tour of the portable C compiler” paper. Instead it uses a file “stin” which appears to be in a more compact format and is translated into a “table.c” file by a new pre-processor ("sty.y”). Then looking at the VAX compilers for 8th and 10th edition, these to use this “stin” file.
All the other m68K compilers (based on pcc) that I found appear to derive from the V7/32V/SysIII lineage, not from the 8th edition lineage.
A quick google did not yield much background or documentation on the STY format.
Anybody on this list that can shed some light on the history of the STY table and on how to use it? Any surviving reports or memos that would be useful?
Many thanks in advance
Paul