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
> From: Mark Longridge <cubexyz(a)gmail.com>
> if one looks at /lib/libc.a via 'ar t getpid.o' you can see the object
> file getpid.o
Library, schlibrary! The important question is 'is it in the kernel source'?
(Although now that I think about it, if the library routine tries to use a
non-existent system call, it should return an error. It would be interested
to disassemble the library routine, and see what it thinks it is doing.)
Noel
On 2015-12-12 06:31, Peter Jeremy<peter(a)rulingia.com> wrote:
> Also, I've seen suggestions that there's a 2.11BSD patch later than
> 447 but I can't find anything "official" andwww.2bsd.com is either
> down or inaccessible from all the systems I have access to. Does
> anyone know if 448 or later were released? And given the issues with
> www.2bsd.com would someone be willing to mirror it (assuming we can
> got a copy of it)?
Yes, I did 448. Various bits and pieces that were fixed there, but
unfortunately I haven't managed to reach Steve to get it officially
sanctioned.
I've passed it out a few times, but there is no canonical place for it.
You can find it at ftp://ftp.update.uu.se/pub/pdp11/2.11bsd/
Feel free to pass that information around.
Things fixed in there:
. Added a timeout to boot prompt for automatic boot
. Made console 8-bit clean
. Changed gethnamadr to fall back to /etc/hosts if dns fails.
. Fixed kernel build process to get version and date properly into kernel.
. Fixed raboot to work on non-DEC mscp controllers
. Fixed tmac macro to work correctly after 2009.
. Fixed a couple of documentation errors.
Essentially small issues that bothered me as I was running on an 11/84
with a CMD controller a few years ago. A system on which I also booted
other OSes, which is why the 8-bit clean issue also bothered me.
(Also was really surprised at the ugly Y2K fix someone had done with
tmac, which failed again in 2010).
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt(a)softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol