On 25 May, David O'Brien wrote:
On Fri, May 26, 2000 at 08:33:51AM +1000, Warren
Toomey wrote:
In article by Mike W.:
> I have a digital microvax II in a 'world case'. I was wondering how to
> hook it up and make it fly. I was told that it runs the Micro VMS OS,
The port-vax(a)netbsd.org list is full of very VAX clueful people.
Yes. port-vax is
the right audience. (I am part of it. ;-) )
There is an excellent site with information about VAX hardware.
http://www.vaxarchive.org/hw/index.html
mirror at
http://vaxarchive.sevensages.org/hw/index.html
There you can find a link to the KA630/MicroVAX II page
http://www.telnet.hu/hamster/dr/ka630.html
This will answer most of your questions.
If you want a modern Unix OS look at
www.netbsd.org.
Or look at
http://minnie.cs.adfa.edu.au/Quasijarus/ (Hi Michael :-) )
--
tschüß,
Jochen
Homepage:
http://www.unixag-kl.fh-kl.de/~jkunz/
Received: (from major@localhost)
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) id TAA43336
for pups-liszt; Fri, 26 May 2000 19:19:50 +1000 (EST)
(envelope-from owner-pups(a)minnie.cs.adfa.edu.au)
From "Joerg B. Micheel"
<joerg(a)begemot.org> Fri May 26 19:22:21 2000
Received: from
begemot.org
(negara.cs.waikato.ac.nz [130.217.248.112])
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) with ESMTP id TAA43332
for <pups(a)minnie.cs.adfa.edu.au>; Fri, 26 May 2000 19:19:44 +1000 (EST)
(envelope-from joerg(a)begemot.org)
Received: (from joerg@localhost)
by
begemot.org (8.9.3/8.9.2) id VAA04812;
Fri, 26 May 2000 21:22:21 +1200 (NZST)
(envelope-from joerg)
Date: Fri, 26 May 2000 21:22:21 +1200
From: "Joerg B. Micheel" <joerg(a)begemot.org>
To: pups(a)minnie.cs.adfa.edu.au
Cc: joerg(a)begemot.org
Subject: Begemot emulator and Harti
Message-ID: <20000526212221.A4801(a)begemot.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Organization: Begemot Computer Associates
Operating-System: ... powered by FreeBSD
Sender: owner-pups(a)minnie.cs.adfa.edu.au
Precedence: bulk
Just as a side note: if you think Harti's Emulator is a useful
piece of software: sent him flowers. He's celebrating wedding
this morning in Berlin, marrying a friendly young lady from
Sibiria, Russia, her name is Larissa.
Regards,
Joerg
--
Joerg B. Micheel Email: <joerg(a)begemot.org>
Begemot Computer Associates Phone: +64 7 8562148
40 Masters Avenue, Hillcrest Fax: +64 7 8562148
Hamilton, New Zealand Pager: +64 868 38222
Received: (from major@localhost)
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) id AAA44458
for pups-liszt; Sat, 27 May 2000 00:07:05 +1000 (EST)
(envelope-from owner-pups(a)minnie.cs.adfa.edu.au)
From "Jason T. Miller"
<jasomill(a)shaffstall.com> Sat May 27 00:04:37 2000
Received: from
guildenstern.shaffstall.com (
cisdn-2.on-net.net [206.229.84.2])
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) with ESMTP id AAA44454
for <pups(a)minnie.cs.adfa.edu.au>; Sat, 27 May 2000 00:07:00 +1000 (EST)
(envelope-from jasomill(a)shaffstall.com)
Received: from localhost (jasomill@localhost)
by
guildenstern.shaffstall.com (8.9.3/8.9.3) with ESMTP id JAA31910;
Fri, 26 May 2000 09:04:37 -0500
X-Authentication-Warning:
guildenstern.shaffstall.com: jasomill owned process doing -bs
Date: Fri, 26 May 2000 09:04:37 -0500 (EST)
From: "Jason T. Miller" <jasomill(a)shaffstall.com>
To: "Steven M. Schultz" <sms(a)moe.2bsd.com>
cc: pups(a)minnie.cs.adfa.edu.au
Subject: Re: Hello and thanks!
In-Reply-To: <200005260320.UAA27315(a)moe.2bsd.com>
Message-ID: <Pine.LNX.4.10.10005260850030.31892-100000(a)guildenstern.shaffstall.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-pups(a)minnie.cs.adfa.edu.au
Precedence: bulk
Well, I keep calling the hardware support folks, and it keeps ringing
busy. Of course, since I don't have call waiting or voice mail, that is to
be expected :) I've actually thought about trying to acquire an
MSCP<->SCSI card and using one of the SCSI drives I have lying around, but
the 19" rackmount stuff is too cool (unfortunately, my spares cabinet is
full of dirty laundry and ruined CD-R media at the moment), though I
suppose an RA92 would suffice (anybody got one? :) though my budget is
henceforth nonexistant -- $300 wouldn't break the bank, because they
wouldn't give it to me. Don't know about the RQDX3, either, but more
likely the KDA50 (which drives my RA81 -- the RQDX3 is for RXen, no more).
The '81 was up all last night, so I don't have error numbers yet; I'll try
to repeat the RX50 problem sometime this weekend. The only FS, I have, is
yours, though I've started reading through it. Though the SCSI spec is
thousands of pages long, it's pretty easy to program; I just finished some
raw-tape-read routines for Hewlett-Packard CS/80 tape drives, that was
even simpler. In both cases, however, I do have documentation
(exhaustive documentation in re: SCSI -- again, work related). I take it
from your reply that such docs aren't to be had for MSCP? At any price?
Jason T. Miller
jasomill(a)shaffstall.com
On Thu, 25 May 2000, Steven M. Schultz wrote:
Hi -
From: "Jason T. Miller"
<jasomill(a)shaffstall.com>
After about a week of work (mainly due to a dying RA81 ... see below), I
have successfully installed 2.11BSD on my 11/83. First and foremost,
thanks to a) Steven M. Shultz for so carefully maintaining and updating
(!) CSRG's PDP-11 code to work with hardware such as my MSCP drives and
TMSCP TK50 and b) everyone involved in prodding SCO to release free
You're welcome! I can't take all of the credit (or blame depending
how you look at it) for the MSCP driver - that came about in 2.10
just before I became heavily involved. Changes/rewrites/whatever
are my fault though ;) The TMSCP driver for 2BSD is my doing (based
on a *heavily* mauled version of the 4.3BSD one with some Ultrix
influences).
The only problems I've been having seem to
be coming from disk controllers
without media. More specifically, I get a hard error, followed by an
endless loop of error indications if I try to access one of my RX50s (on
an RQDX3 controller), and the only recourse is a reset. Okay, so the
Hmmm, that's a new one to me. I used to have RX50s but they were
so d$&$*&^!d flakey that I put a standard "pc" 5.25" floppy on
instead (TEAC something or other). I didn't do the hardware stuff,
Terry Kennedy did that. Details on jumper setting to use a 5.25"
floppy in place of RX50s are floating around somewhere on the net
but I don't have the reference handy.
Can't say I've had a problem with the floppy drive with no media.
It spins and eventually spits out an error but nothing bad happens
to the system.
Hmmmm, what rev level of 2.11BSD do you have installed? The latest
from the PUPS archive (or at least fairly recent)?
solution here is simple: don't do it. The
bigger problem comes with my
flake-job of an RA81, which, FWIW, is the only fixed disk storage I have.
It has a strange habit: the "A" light goes off and the controller can no
Been there, seen that - on 11/44s with UDA50 controllers. When that
happened I picked up the phone and got the hardware support folks to
get me a new RA81 ;) After a while they got tired of maintaining
old hardware and when the RA81 died the last time they just turned off
the system and later sold it for scrap (instead of spending $300 for
a RA92 drive). Boo hiss.
RA81s have been the worst drive I've seen for failures - it should
be fairly cheap to get a RA92 (8" desktop enclosure if I recall
right) to replace the RA81. Does the RQDX3 support the larger
drives though I wonder?
the same loop-of-errors syndrome as an empty
RX50. Anyone have any
pointers or sage advice? I figured I may try to modify the MSCP driver to
re-init the controller on a hard error, and try again. But the MSCP code
is fairly complicated, and I know nothing of the protocol. Anyone have any
You're not just whistling Dixie there - it's the most complex
convoluted protocol I've seen for handling disks (and tapes). Well,
SCSI these days might be just as complex - but there's a difference:
I can get lots better specs and documentation for SCSI than I can for
MSCP. If you've access to other systems (RSX, IAS, etc) sources you
can RTFS (Read The Fine Source) and try to puzzle out how MSCP works
what the errors are and what to do about them but that's a far
cry from a complete, detailed, tabular, whatever document on how to
write a MSCP driver.
MSCP documentation which I could beg, borrow, or
steal? I'd give the
specific error codes, but I haven't written any down yet and I'm at work.
I know I did do some work (mostly in the TMSCP part though) to improve
error handling and not leave drives stranded and the like. If you
can jot down the error codes I can take a look at the driver and
perhaps see what can be done to recover more gracefully.
Cheers!
Steven Schultz
sms(a)moe.2bsd.com
Received: (from major@localhost)
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) id AAA44573
for pups-liszt; Sat, 27 May 2000 00:41:22 +1000 (EST)
(envelope-from owner-pups(a)minnie.cs.adfa.edu.au)
From Markus Leypold
<leypold(a)informatik.uni-tuebingen.de> Sat May 27 00:40:23 2000
Received: from
toulon.informatik.uni-tuebingen.de (toulon.Informatik.Uni-Tuebingen.De [134.2.12.9])
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) with ESMTP id AAA44569
for <pups(a)minnie.cs.adfa.edu.au>; Sat, 27 May 2000 00:41:17 +1000 (EST)
(envelope-from leypold(a)informatik.uni-tuebingen.de)
Received: from informatik.uni-tuebingen.de (wintermute [134.2.12.56])
by toulon.informatik.uni-tuebingen.de (Postfix) with ESMTP id 5DC1E1061
for <pups(a)minnie.cs.adfa.edu.au>; Fri, 26 May 2000 16:40:23 +0200 (DFT)
Received: (from leypold@localhost)
by informatik.uni-tuebingen.de (8.9.3/8.9.3) id QAA12383;
Fri, 26 May 2000 16:40:23 +0200 (CEST)
(envelope-from leypold(a)informatik.uni-tuebingen.de)
Date: Fri, 26 May 2000 16:40:23 +0200 (CEST)
Message-Id: <200005261440.QAA12383(a)informatik.uni-tuebingen.de>
X-Authentication-Warning: wintermute.informatik.uni-tuebingen.de: leypold set sender to
leypold(a)informatik.uni-tuebingen.de using -f
From: Markus Leypold <leypold(a)informatik.uni-tuebingen.de>
To: pups(a)minnie.cs.adfa.edu.au
Subject: Re: Building a 2.11BSD tape for Supnik's emulator
Sender: owner-pups(a)minnie.cs.adfa.edu.au
Precedence: bulk
Hello Seth,
I never worked with a real PDP-11. I tried to build a V7 Boot tape for
the Supnick and still did not succeed, but I got the following impressions:
* V7 Doc says, You can't use the bootstrap from the DEC bulk ROM,
but need to key in a custom bootstrap. Have a look into
the V7 Manual Volume 2B (Essay about Installing UNIX).
* It seems, a tape also needs to contain labels for the files
(512 Byte Records), kind of directory.
Regards -- Markus
Original Message:
---------------------------------
Hello folks,
I'm trying to build a 2.11BSD boot tape for Bob Supnik's emulator. I
downloaded the tape files from Distributions/ucb/2.11BSD, and put them
together with the following commands (on Linux):
cat mtboot mtboot boot | dd of=file0 obs=512
dd if=disklabel of=file1 obs=1024
dd if=mkfs of=file2 obs=1024
dd if=restor of=file3 obs=1024
dd if=icheck of=file4 obs=1024
dd if=root.dump of=file5 obs=10240
dd if=file6.tar of=file6 obs=10240
dd if=file7.tar of=file7 obs=10240
dd if=file8.tar of=file8 obs=10240
cat file? > boot.tape [I've verified the shell expands this
expression to the correct file order]
But when I run the simulator and try to boot from the tape (with or
without the -o optiont to 'boot'), it fails, like so:
% pdp11
PDP-11 simulator V2.3d
sim> set cpu 18b
sim> set cpu 2048K
sim> att tm0 boot.tape
sim> boot tm0
HALT instruction, PC: 000002 (HALT)
sim> boot -o tm0
HALT instruction, PC: 000002 (HALT)
sim>
It's like the bootstrap code isn't working. Or possibly I've completely
misunderstood the proper way to build a tape image. Is there a better
way to go about it?
- -Seth
Received: (from major@localhost)
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) id CAA45296
for pups-liszt; Sat, 27 May 2000 02:31:58 +1000 (EST)
(envelope-from owner-pups(a)minnie.cs.adfa.edu.au)
From "Steven M. Schultz"
<sms(a)moe.2bsd.com> Sat May 27 02:26:28 2000
Received: from
moe.2bsd.com
(0(a)MOE.2BSD.COM [206.139.202.200])
by minnie.cs.adfa.edu.au (8.9.3/8.9.3) with ESMTP id CAA45292
for <pups(a)minnie.cs.adfa.edu.au>; Sat, 27 May 2000 02:31:49 +1000 (EST)
(envelope-from sms(a)moe.2bsd.com)
Received: (from sms@localhost)
by
moe.2bsd.com (8.9.3/8.9.3) id JAA08996
for pups(a)minnie.cs.adfa.edu.au; Fri, 26 May 2000 09:26:28 -0700 (PDT)
Date: Fri, 26 May 2000 09:26:28 -0700 (PDT)
From: "Steven M. Schultz" <sms(a)moe.2bsd.com>
Message-Id: <200005261626.JAA08996(a)moe.2bsd.com>
To: pups(a)minnie.cs.adfa.edu.au
Subject: Re: Building a 2.11BSD tape for Supnik's emulator
Sender: owner-pups(a)minnie.cs.adfa.edu.au
Precedence: bulk
Hi -
From: Markus Leypold
<leypold(a)informatik.uni-tuebingen.de>
I never worked with a real PDP-11. I tried to build a V7 Boot tape for
the Supnick and still did not succeed, but I got the following impressions:
* It seems, a tape also needs to contain labels for the files
(512 Byte Records), kind of directory.
Not exactly. The boot tape consists of files with different block
sizes but has no "labels".
Original Message:
---------------------------------
I'm trying to build a 2.11BSD boot tape for Bob Supnik's emulator. I
downloaded the tape files from Distributions/ucb/2.11BSD, and put them
together with the following commands (on Linux):
cat mtboot mtboot boot | dd of=file0 obs=512
dd if=disklabel of=file1 obs=1024
dd if=mkfs of=file2 obs=1024
dd if=restor of=file3 obs=1024
dd if=icheck of=file4 obs=1024
dd if=root.dump of=file5 obs=10240
dd if=file6.tar of=file6 obs=10240
dd if=file7.tar of=file7 obs=10240
dd if=file8.tar of=file8 obs=10240
cat file? > boot.tape [I've verified the shell expands this
expression to the correct file order]
So close yet so far.
You do not need to "reblock" the files - they already have the correct
sizes. What you do need to do is run a program to add the record
length information for the emulator. The emulator needs to have
"virtual" file and record mark information added.
If you look in the "usr/src/sys/pdpstand" directory you will find
a source file "makesimtape.c". This is a slightly modified version
of the 'maketape' program which 2.11 uses to create its own boot tapes.
The modifications consist of changes to add the virtual tape marks
for Bob's emulator.
I will include a copy of makesimtape.c below in case anyone has trouble
finding it in the source tree.
makesimtape should compile on almost anything (I've used it on
2.11BSD, BSD/OS, and I think FreeBSD). Compile that program. Then
create a small file (maketape.data) containing:
mtboot 1
mtboot 1
boot 1
* 1
disklabel 2
* 1
mkfs 2
* 1
restor 2
* 1
icheck 2
* 1
root.dump 20
* 1
file6.tar 20
* 1
file7.tar 20
* 1
file8.tar 20
*1
Then "makesimtape -i maketape.data -o your_tape_file" will create
the virtual tape file in 'your_tape_file'.
Actually to make sure things work (and the tape is bootable and can
run the standalone programs) all you need are the files up thru
root.dump - that is enough to load the root filesystem.
With a real tape drive you use the "maketape" program that comes
with 2.11 of course since it wants to issue ioctl calls to place
real tape marks, etc on a tape.
It's like the bootstrap code isn't working.
Or possibly I've completely
misunderstood the proper way to build a tape image. Is there a better
way to go about it?
Hopefully the method described above will be closer to what's
needed. it has been quite a while since I've actually created a
simulated tape so I might have left out a step or something.
Good Luck!
Steven Schultz
sms(a)moe.2bsd.com
=====================makesimtape.c=========================
/*
* @(#)makesimtape.c 2.1 (2.11BSD) 1998/12/31
* Hacked 'maketape.c' to write a file in a format suitable for
* use with Bob Supnik's PDP-11 simulator (V2.3) emulated tape
* driver.
*
* NOTE: a PDP-11 has to flip the shorts within the long when writing out
* the record size. Seems a PDP-11 is neither a little-endian
* machine nor a big-endian one.
*/
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/uio.h>
#define MAXB 30
char buf[MAXB * 512];
char name[50];
long recsz, flipped, trl();
int blksz;
int mt, fd, cnt;
struct iovec iovec[3];
struct iovec tmark[2];
void usage();
main(argc, argv)
int argc;
char *argv[];
{
int i, j = 0, k = 0;
long zero = 0;
register char *outfile = NULL, *infile = NULL;
FILE *mf;
struct stat st;
while ((i = getopt(argc, argv, "i:o:")) != EOF)
{
switch (i)
{
case 'o':
outfile = optarg;
break;
case 'i':
infile = optarg;
break;
default:
usage();
/* NOTREACHED */
}
}
if (!outfile || !infile)
usage();
/* NOTREACHED */
/*
* Stat the outfile and make sure it either 1) Does not exist, or
* 2) Exists but is a regular file.
*/
if (stat(outfile, &st) != -1 && !(S_ISREG(st.st_mode)))
errx(1, "outfile must either not exist or be a regular file");
/* NOTREACHED */
mt = open(outfile, O_WRONLY|O_CREAT|O_TRUNC, 0600);
if (mt < 0)
err(1, "Can not create %s", outfile);
/* NOTREACHED */
mf = fopen(infile, "r");
if (!mf)
err(1, "Can not open %s", infile);
/* NOTREACHED*/
tmark[0].iov_len = sizeof (long);
tmark[0].iov_base = (char *)&zero;
while (1)
{
if ((i = fscanf(mf, "%s %d", name, &blksz))== EOF)
exit(0);
if (i != 2) {
fprintf(stderr,"Help! Scanf didn't read 2 things (%d)\n", i);
exit(1);
}
if (blksz <= 0 || blksz > MAXB)
{
fprintf(stderr, "Block size %u is invalid\n", blksz);
exit(1);
}
recsz = blksz * 512; /* convert to bytes */
iovec[0].iov_len = sizeof (recsz);
#ifdef pdp11
iovec[0].iov_base = (char *)&flipped;
#else
iovec[0].iov_base = (char *)&recsz;
#endif
iovec[1].iov_len = (int)recsz;
iovec[1].iov_base = buf;
iovec[2].iov_len = iovec[0].iov_len;
iovec[2].iov_base = iovec[0].iov_base;
if (strcmp(name, "*") == 0)
{
if (writev(mt, tmark, 1) < 0)
warn(1, "writev of pseudo tapemark failed");
k++;
continue;
}
fd = open(name, 0);
if (fd < 0)
err(1, "Can't open %s for reading", name);
/* NOTREACHED */
printf("%s: block %d, file %d\n", name, j, k);
/*
* we pad the last record with nulls
* (instead of the bell std. of padding with trash).
* this allows you to access text files on the
* tape without garbage at the end of the file.
* (note that there is no record length associated
* with tape files)
*/
while ((cnt=read(fd, buf, (int)recsz)) == (int)recsz)
{
j++;
#ifdef pdp11
flipped = trl(recsz);
#endif
if (writev(mt, iovec, 3) < 0)
err(1, "writev #1");
/* NOTREACHED */
}
if (cnt > 0)
{
j++;
bzero(buf + cnt, (int)recsz - cnt);
#ifdef pdp11
flipped = trl(recsz);
#endif
if (writev(mt, iovec, 3) < 0)
err(1, "writev #2");
/* NOTREACHED */
}
close(fd);
}
/*
* Write two tape marks to simulate EOT
*/
writev(mt, tmark, 1);
writev(mt, tmark, 1);
}
long
trl(l)
long l;
{
union {
long l;
short s[2];
} foo;
register short x;
foo.l = l;
x = foo.s[0];
foo.s[0] = foo.s[1];
foo.s[1] = x;
return(foo.l);
}
void
usage()
{
fprintf(stderr, "usage: makesimtape -o outfilefile -i inputfile\n");
exit(1);
}