Perhaps Wikipedia would be satisfied if we could get
Ken to write a letter to some current published journal,
saying that he's the one who named cron, he's heard
people are interested in how it got that name, here's
how. We could then cite that as a reference.
On the other hand, this may be an example of the
degree to which one should trust Wikipedia. The
`command run on notice' acronym claim is backed up
by an article from the AUUG (Hi Warren!) Proceedings,
1994, in which the first reference to cron gives
that explanation with no further reference.
If that's the quality of reference they accept, there
is simply no reason to take anything they publish
as gospel. Sorry.
Norman Wilson
Toronto ON
Proud that no one has yet made a spurious Wikipedia
page asserting the etymology of my personal domain
name.
Larry McVoy:
As a guy who has donated money to Wikipedia this whole thread makes
me not want to donate again. Just me being grumpy.
====
Me too.
Perhaps we should start our own online encyclopedia.
In the Ken tradition we could call it pedi.
(pdia sounds better, but pdia.org is already taken.)
Norman Wilson
Toronto ON
I had never doubted that "cron" was a contraction of "chrono-".
Wikipedia, however, offered several folk acronyms on a par
with it. Brian asked Ken, who confirmed,
"cron comes from the prefix (greek?) for time.
it should have been chron, but i never could spell."
I edited Wikipedia to expunge the nonsense. Amusingly that
makes the article less "verifiable" because there had been
literature citations for the nonsense, but there is none
for the fact.
Doug
All,
I am in the process of gaining a deeper understanding of PDP-11 machine
instructions and how the bootstrap loader and its cousins function. As
part of that process, I am analyzing the code. I am concurrently working
through the DEC bootstrap loader and the bootstrap loader that is
described in the v6 documentation. The DEC bootstrap loader, while
fascinating and elegant, is relatively straightforward, given its
enormous range and the fact that it is self-modifying. I wrote up my
preliminary notes here:
http://decuser.blogspot.com/2015/12/analysis-of-pdp-11-bootloader-code.html
The code that is in the v6 documentation on the other hand is not
yielding easily to reasonable interpretation and I was hoping y'all
might be able to shed some light on how it works.
The following is the TU10 (TM11) bootstrap code from "Setting Up Unix -
Sixth Edition":
TU10
012700
172526
010040
012740
060003
000777
The author's notes around the code are:
The tape should move and the CPU loop. (The TU10 code is not the DEC
bulk ROM for tape; it reads block 0, not block 1.)
Halt and restart the CPU at 0. The tape should rewind. The console
should type ‘=’.
Of course, following the instructions results in a successful outcome,
but understanding what is happening is difficult given that this is a
virtual environment and no discernible tape movement can be detected.
My attempt at interpretation is along the following lines, I
manufactured the dissasembly based on my reading of the PDP-11/40
handbook and the machine codes:
012700 MOV #172526, R0 ; moves the TM11 Current Memory Address Register
(MTCMA) address into R0
172526 ; the immediate operand
010040 MOV R0,-(R0) ; moves the contents of R0, 172526, into
memory location 172524, the TM11 Byte Record Counter (MTBRC)
012740 MOV #60003,-(R0); moves 60003 into memory location 172522, the
TM11 Command Register (MTC)
060003 ; immediate data
000777 HALT
This seems like gobbledegook to me. It moves the MTCMA (Magtape Current
Memory Address) into R0, then it moves the MTCMA into the MTBRC (Magtape
Byte Record Count), then it moves 60003 into the MTC (Magtape control
register), which causes a read operation with 800BPI 9 Channel density.
172526 is -5252 in 2's complement.
Am I misinterpreting the byte codes or is this some idiosyncratic way to
get the Magnetic tape to rewind or something (the TM11 has a control
function to rewind, so it seems unlikely that this is the case, but I'm
mystified)?
I single stepped through the code in the simulator, and the TM11
registers appear to be pretty unobservable (examining these three
registers always displays 0's, but if I change from referencing the TM11
registers to another area of memory, say 100500 I see the values I would
expect to see as they are being moved from the registers into memory).
Thanks,
Will
Hi all, I've been in contact with Steven Schultz and I've set up a
mirror of his 2.11BSD patches at:
http://www.tuhs.org/Archive/PDP-11/Distributions/ucb/2.11BSD/Patches/
I have no "git fu", but it would be nice to have a Git repository
with all the sources fully patched. Oh, and new boot tapes :-)
I should ask Santa for it.
Cheers, Warren
Ok, not sure if anyone will want to do this but I've just compiled
ed.c from Unix v6 on Unix v5.
It's not much bigger than the assembled ed, with 1314 lines of C code
the compiled executable is only 6518 bytes vs 4292 for the original. I
was looking at the source code and didn't see anything that the v5 cc
couldn't handle. I trimmed the source a bit, there's a function at the
end called getpid() which is commented out.
The comment says:
/* Get process ID routine if system call is unavailable. */
but my version of v5 does have that system call so it's all good.
It's been run a few times and it seems to work just fine. It may even
have a few more features than the v5 ed, I'm not sure yet :)
Mark
> From: Random832
> Not quite. On a stock V6 kernel, system call 30 (smdate/utime) maps to
> nullsys rather than nosys.
Oh, right. (Hadn't checked the number, assumed they used a new one for utime.)
Noel
> From: Random832
> Non-existent syscalls map to nosys, which sets u_error to 100 ... which
> causes the process to be sent a signal SIGSYS.
Oh, right, I'd forgotten that.
So, getting back to v6tar, I'll bet that if you try and use it to _read_ a TAR
file file under V6 (i.e. write files into the V6 filesystem), it will bomb out
(because of the call to utime).
Noel
> From: Mark Longridge
> Not too sure about reversing getpid.o, but maybe possible with db?
Well, me, I'd just use 'od' - but then again, I have ucode for disassembling
PDP-11 octal! :-) (OK, OK, so a lot of the less common instructions I have
to look up! :-)
But, seriously, yeah, 'db' is probably the way to go.
FWIW, it's possible to get 'adb' running under V6 without much (any?) work,
too. Although maybe it needs the 'phototypesetter' C compiler? I'd have to
check...
There's also a 'cdb' running around (I found a copy on the 'Shoppa disks'),
which is basically 'db' but augmented with a few useful commands - maybe stack
backtrace, I don't recall the details, the documentation in on my V6, and I
don't feel like spinning it up just to look for that.
Noel
So, speaking of system calls that are missing in earlier versions of Unix,
that tickled a memory:
> From: Will Senn
> ... a special version of tar must be prepared to run on V6.
> The document goes on to describe a reasonable method to make v6tar on
> v7 and copy the binary over to the v6 system.
When I got tar running on my V6, I didn't know about this, and I took
a V7 tar and got it running myself, see here:
http://mercury.lcs.mit.edu/~jnc/tech/ImprovingV6.html#tar
One thing I found out while doing that is that tar uses the 'utime' system
call on V7 to set the file date, but i) V6 doesn't have utime() (although it
has smdate(), albeit commented out in the standard distro), and ii) on now
looking in src/cmd/tar and src/libc/v6 in the V7 distro, I don't see a
replacement version of utime().
As near as I can make out, 'v6tar' must be using the standard V7 version of
utime(), which I assume turns into a call to nosys() on V6 (returns an error);
tar doesn't check the return value, so the call fails (silently). So v6tar
won't correctly set the file date when moving a file _to_ V6.
Noel