hi Hellwig,
Thanks for pointing out.
I was viewing actually the V6's source while I had thought it's V7.
Thanks &
Regards,
Qinglai
On 10/17/06, Hellwig Geisse <Hellwig.Geisse(a)mni.fh-giessen.de> wrote:
> Hi Qinglai,
>
> On Tue, 2006-10-17 at 14:26 +0800, jigsaw wrote:
> > If it's really a bug, why it remains p_stat in UNIX V7?
>
> it was changed in V7 to p_pri (file sig.c, lines 64/65).
>
> Regards,
> Hellwig
>
>
hi all,
It's stated in Lion's book chapter 13.13 that at line 3973, i.e. the
function psignal, there is a typo where the p_stat should be p_pri.
Is there anyone can confirm it?
If it's really a bug, why it remains p_stat in UNIX V7?
Thanks in advance
Qinglai
The thrust meter project -- was that an analog meter that displayed %
CPU utilization? I remember that Tom Ferrin had one mounted in the
middle of a DEC panel filler on the 11/70 at the Computer Graphics
Lab at UCSF. It was really delightful having this analog meter
bouncing up and down as people worked away.
Brian
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
_| _| _| Brian Knittel
_| _| _| Quarterbyte Systems, Inc.
_| _| _| Tel: 1-510-559-7930
_| _| _| Fax: 1-510-525-6889
_| _| _| Email: brian(a)quarterbyte.com
_| _| _| http://www.quarterbyte.com
> But you'd need kernel mode for that; this is a DoS attack (one of the
> first?) launched by a user.
The userland DoS I remember:
main() {
while(1)
fork();
}
And in fact I tried it once on the 11/45 I had access to. Not pretty.
It can be made less disastrous by judicious addition of a wait(); call.
--Milo, wondering how contemporary UNIX will deal with such
pathological behavior....
--
Milo Velimirović
University of Wisconsin - La Crosse
La Crosse, Wisconsin 54601 USA
43 48 48 N 91 13 53 W
--
There's a reason Dennis Ritchie and Ken Thompson have been awarded
the U.S. National Medal of Technology (1998) and are fellows of the
Computer History Museum Online. Dave Cutler hasn't and isn't.
"You are not expected to understand this."
[ Meant to go to list, but sent to DMR only by mistake. ]
On Wed, 4 Oct 2006 dmr(a)plan9.bell-labs.com wrote:
> > It contains the famous Thrust Meter, a few papers by Yours Truly, and
> > I think it has the short assembly program that would bring a PDP-11/70
> > to its knees (the infamous "SPL" firmware bug).
>
> Was this the feature (not really a bug; it's in the manual) that SPL
> suppressed interrupts for one instruction after the SPL? I suppose it
> was indeed a bug that this happened even in user mode where SPL was
> intended to be a no-op.
Yep, that's the one. I regard it as a bug because it indeed happened in
user mode...
> I remember trying this. It depends on completely filling memory with
> SPLs, which I could not figure out how to do using an instruction
> sequence. However, putting a bunch of SPLs into a file and reading it
> in over the program did the job.
There was a clever assembly program that did it; it relied upon the
instruction counter wrapping around (I can't remember in which direction,
or whether it first relocated itself). Anyone, it managed to fill memory
with SPLs, so the next instruction after overwriting its last instruction
was SPL, and for the foreseeable future after that...
If I find the article I'll post it here; I don't think there are too many
11/70s still in public operation.
> It was a bit hard to break out of--the halt switch didn't work. At first
> I thought that power-off was the only solution, but it turned out that
> holding down both reset and halt simultaneously did the job.
I'll remember that, should I ever see an emulator :-) I still remember
Ian Johnstone cursing me...
-- Dave
Dave Horsfall mentioned, about some old editions of AUUGN,
> It contains the famous Thrust Meter, a few papers by Yours Truly, and I
> think it has the short assembly program that would bring a PDP-11/70 to
> its knees (the infamous "SPL" firmware bug).
Was this the feature (not really a bug; it's in the manual)
that SPL suppressed interrupts for one instruction after the SPL?
I suppose it was indeed a bug that this happened even in user mode
where SPL was intended to be a no-op.
I remember trying this. It depends on completely filling
memory with SPLs, which I could not figure out how to
do using an instruction sequence. However, putting
a bunch of SPLs into a file and reading it in over the program
did the job.
It was a bit hard to break out of--the halt switch didn't work.
At first I thought that power-off was the only solution, but it
turned out that holding down both reset and halt simultaneously did
the job.
Dennis
Hi,
at
http://www.ba-stuttgart.de/~helbig/os/script/chapt2.2
I tried to explain the dynamic memory allocation in Unix V6.
Greetings,
Wolfgang
--
"Dijkstra is right, but you don't say such things!"
(A less courageous programmer)
hi Brantley,
Now I start to understand what's going on.
But do you mean 0744 by 0743?
0743 mov (sp), r0
0744 mov $_u, r0
And 2230 should be 2229, which is:
2229 sureg();
Thanks &
Regards,
Qinglai
On 10/3/06, Brantley Coile <brantley(a)coraid.com> wrote:
> Rp->p_addr is the address of the swappable image in core. The process
> image begins with the user segment for that process. Line 0743 maps
> the upage into the current address space (KISA6) and _retu loads
> previously saved sp and r5 from there. Notice that on line 2230
> Ken reloads the other memory mapping registers.
>
> Read the section `Memory Management' starting on page 2-4 for background
> on this.
>
>
> U.u_rsave is just a constant location in memory. Notice that rp->p_addr
> isn't a byte address but a core click address in units of 64 bytes.
>
> Hope that helps.
>
> Brantley
>
> > The final question is about how savu/retu work.
> >
> > savu:
> > line 0729 and line 0730: r5 and sp are saved to (r0) and (r0)+, which
> > are the address of u.u_rsav.
> >
> > retu:
> > 0746 and 0747: sp and r5 are read from (r0) and (r0)+, which is
> > "rp->p_addr" (see line 2228). It looks weird to me. (Okay...I have to
> > confess I look stupid here...) When making call to retu, why bother
> > "retu(rp->p_addr)"? Why not calling with "retu(u.u_rsav)"? Does it
> > mean that rp->p_addr == u.u_rsav?
>
>
hi All,
Again, I run into problems when reading slp.c and savu/retu.
Actually, I have 3 questions.
First, I doubt whether all processes share one "u" or each process has
its own "u".
line 0402: One allocated per process.
It seems that each process has its own user structure.
But the "u" is defined as a universal variable (line 0459), and the
line 0407 clearly states that the "u" resides at virtual kernel loc
140000.
So isn't it saying that there's only one "u" in the core memory?
This concept is very important, because it's bound tightly with
savu/retu mechanism.
---------------------------------------------------------------------------
Now comes the second question:
The savu procedure is supposed to save r5 and sp to u.u_rsav,
and the retu is supposed to reset the r5 and sp with the saved values.
If each process has its own u, then savu/retu simply work fine.
But if all processes share one u, the newest call to savu will
overwrite the previously saved values of r5 and sp, so that retu is
not able to get back the r5/sp again!
The story is like this:
1889: r5/sp of process #1 are saved to u.u_rsav
2189: r5/sp of process #0 are saved! Thus overwriting the values of process #1.
So when we are coming to 2228, how can retu work in a way as it is expected to?
-----------------------------------------------------------------------------
The final question is about how savu/retu work.
savu:
line 0729 and line 0730: r5 and sp are saved to (r0) and (r0)+, which
are the address of u.u_rsav.
retu:
0746 and 0747: sp and r5 are read from (r0) and (r0)+, which is
"rp->p_addr" (see line 2228). It looks weird to me. (Okay...I have to
confess I look stupid here...) When making call to retu, why bother
"retu(rp->p_addr)"? Why not calling with "retu(u.u_rsav)"? Does it
mean that rp->p_addr == u.u_rsav?
OMG, I am totally confused...
--------------------------------------------------------------------------------
I guess It's kind of boring to read my question...but hopefully
someone can give me some hint...Thanks in advance!
Regards,
Qinglai
No.
On PDP 11 assembler the left and right shifts were a
single < and >.
You made a typo when transcribing the source
statement: you typed
> 0636: mov $USIZE-1/<8|6, (r1)+
but the actual code from m40.s reads
> 0636: mov $usize-1\<8|6,(r1)+
However, since < and > where also used to delimit
strings, there was a
need to escape them so as to distinguish their usage
as shifts from the
string delimiters. The escaping was achieved by \
which is what you see
in the code.
See the assembler section of vol 2b of the Unix V7
manuals for details at
http://plan9.bell-labs.com/7thEdMan/v7vol2b.pdf
or
http://web.cuzuco.com/%7Ecuzuco/v7/v7vol2b.pdf
namely:
6.1 Expression operators
The operators are:
(blank) when there is no operand between operands,
the effect is
exactly the same as if a + had appeared.
+ addition
subtraction
* multiplication
\/ division (note that plain / starts a
comment)
& bitwise and
| bitwise or
\> logical right shift
\< logical left shift
... ... ...
j
On Mon, 2 Oct 2006 09:44:58 +0300
jigsaw <jigsaw(a)gmail.com> wrote:
> hi all,
>
> I just started to read the source code of V6 with
Lion's book.
>
> But before I went far I was stopped by m40.s
>
> 0636: mov $USIZE-1/<8|6, (r1)+
>
> What does the slash "/" stand for?
>
> I guess this line should be
>
> mov $USIZE-1<<8|6, (r1)+
>
> Is "/<" the same as "<<"?
>
> I checked in Unix PDP11 Assemble Refrence Manual but
didn't find a clue.
>
> Is it the right place to ask such question?
>
> Thanks in advance
>
> Regards,
>
> Qinglai
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
No.
On PDP 11 assembler the left and right shifts were a single < and >.
You made a typo when transcribing the source statement: you typed
> 0636: mov $USIZE-1/<8|6, (r1)+
but the actual code from m40.s reads
> 0636: mov $usize-1\<8|6,(r1)+
However, since < and > where also used to delimit strings, there was a
need to escape them so as to distinguish their usage as shifts from the
string delimiters. The escaping was achieved by \ which is what you see
in the code.
See the assembler section of vol 2b of the Unix V7 manuals for details at
http://plan9.bell-labs.com/7thEdMan/v7vol2b.pdf
or
http://web.cuzuco.com/%7Ecuzuco/v7/v7vol2b.pdf
namely:
6.1 Expression operators
The operators are:
(blank) when there is no operand between operands, the effect is
exactly the same as if a + had appeared.
+ addition
subtraction
* multiplication
\/ division (note that plain / starts a comment)
& bitwise and
| bitwise or
\> logical right shift
\< logical left shift
... ... ...
j
On Mon, 2 Oct 2006 09:44:58 +0300
jigsaw <jigsaw(a)gmail.com> wrote:
> hi all,
>
> I just started to read the source code of V6 with Lion's book.
>
> But before I went far I was stopped by m40.s
>
> 0636: mov $USIZE-1/<8|6, (r1)+
>
> What does the slash "/" stand for?
>
> I guess this line should be
>
> mov $USIZE-1<<8|6, (r1)+
>
> Is "/<" the same as "<<"?
>
> I checked in Unix PDP11 Assemble Refrence Manual but didn't find a clue.
>
> Is it the right place to ask such question?
>
> Thanks in advance
>
> Regards,
>
> Qinglai
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
hi all,
I just started to read the source code of V6 with Lion's book.
But before I went far I was stopped by m40.s
0636: mov $USIZE-1/<8|6, (r1)+
What does the slash "/" stand for?
I guess this line should be
mov $USIZE-1<<8|6, (r1)+
Is "/<" the same as "<<"?
I checked in Unix PDP11 Assemble Refrence Manual but didn't find a clue.
Is it the right place to ask such question?
Thanks in advance
Regards,
Qinglai
Whilst looking for a recent AUUGN mine eyes espied a pile of old AUUGNs,
from Vol 1 No 1 (October 1978) to Vol 3 No 6 (Aug/Sep 1981). And I know I
have the rest of them somewhere, but they're probably packed away.
It contains the famous Thrust Meter, a few papers by Yours Truly, and I
think it has the short assembly program that would bring a PDP-11/70 to
its knees (the infamous "SPL" firmware bug).
Free to an *organisation* that can use them, on condition they never get
chucked out and are available for viewing (even if as a PDF). Due to a
"senior moment" I've already made this offer to AUUG.
-- Dave
Hi,buddies
Nice to meet you all.I am a new comer from ChengDu,China.I am very
interested in Unix and PDP an now I am reading the book <Lions'
Commentary on UNIX 6th Edition with Source Code> ,which make me so
excited.It's indeed an great book for me to understand the principle and
detail of the UNIX, however, I am a self-learner without chance to
discuss with others around me, so I am glad to join you and have a
chance to learn from all of you. Thanks!
Best Regards
Tian Wen
You know Pat I looked under PDP and BSD 4.2 directories and I don't
think I'm finding the distro you are meaning. I looked under the VAX
directory to and I'm not finding the system you mentioned.
Bill
I've already posted all sorts of information previously, but the
thread seems to have gotten caught in some downtime over the weekend.
Anyway, does anybody have any idea what I might be doing wrong?
Prior posts are in the web archive.
Michael "Madcrow" K.
> Message: 1
> Date: Wed, 14 Jun 2006 16:24:29 -0700 (PDT)
> From: Martin Lovick <martin_lovick(a)yahoo.com>
> Subject: [pups] bitsavers document
> To: pups(a)minnie.tuhs.org
> Message-ID: <20060614232429.78414.qmail(a)web36905.mail.mud.yahoo.com>
> Content-Type: text/plain; charset=iso-8859-1
>
> whilst looking around the bitsavers.org pdf archive, I
> found a document called
> PreliminaryUnixImplementationDocument_Jun72.pdf.
> Having had a quick scan through, it contains a source
> code listing and some commentary (lions i hear you
> say).
No, not Lions. The author is listed on the first page as one T. R.
Bashkow.
> The strange thing is that all of the source code
> appears to be in assembler...
yup. This would be an early pdp11 UNIX from the period before the
rewrite in C.
>
> whats this about?
It appears to be a listing of an assembly language version of an
early UNIX kernel for the pdp11 in the pages labelled E*-*; the pages
F*-* are a commentary; G*-* is a glossary of terms used; H*-*
contains a description of each function in the kernel with complete
details of each function.
>
> is it a comentary of PDP-7 unix?
It's (Bell Labs flavor) pdp11 assembly language.
>
> regards
>
> Martin
--
Milo Velimirović <milov(a)uwlax.edu>
Unix Computer Network Administrator 608-785-6618 Office
ITS Network Services 608-386-2817 Cell
University of Wisconsin - La Crosse
La Crosse, Wisconsin 54601 USA 43 48 48 N 91 13 53 W
--
Unix: Where /etc/init is job #1.
I downloaded the tape building kit of Fred's enhanced Ultrix 3.1 and
set about trying to build an image file suitable for use with SIMH. As
simply modifying the included script to write to a normal file instead
of a (non-existant) tape device failed, I tried doing things by hand,
running maketape and then "cat"ing the file it created along with all
the other files "dd"ed by the script into a single file. While this
produced a file that looked about the right size, it didn't work with
SIMH as mounting it to the emulated TK50 device and booting produced:
HALT instruction, PC: 016300 (CLR R3)
Any help on how to get a working image available so that my nerdy
history project can proceed?
Mike "Madcrow" K.
> I tried doing things by hand,
> running maketape and then "cat"ing the file it created along with all
> the other files "dd"ed by the script into a single file.
You need to put file marks between everything logically 'dd'-ed
In the .tap format, file marks are four bytes of 0.
End of tape should have two sets of file marks (eight bytes of 0)
FWIW, I sent warren a .tap image of Ultrix 2.0. Never heard anything from
him about it.
Actually what I meant Gregg was Jon Pertwee was the Doctor back in the
'60s which is the time period you were referring to, and Troughton too I
guess. That reminds me of an episode called "The time..." something or other
with Roger Delgado. They were trying to do something with some type of
computer obviously an old mini of some type and some anciet artifact. There
were toggle switches and lights. Otherwise it certainly didn't look like and
PDP that I've ever seen in pictures. Just to get close to one of those old
things would be breathtaking. Before my time though.
Bill
Hello!
I have here a Doctor Who book which takes place during the early part of the
computer revolution, about the time the whole of what's discussed here
happened. The people concerned in the book have machines running UNIX. Some
of these are indeed PDP-11s and there are also a few DG Eclipses.
Now the question: How difficult would it to port UNIX V7 from the usual
machine, probably a PDP-11/43 (But I might be wrong about the model!) to a
DG Eclipse? Naturally since I don't have physical hardware here, the
intended target would be a SIMH DG virtual Eclipse (Or even a Nova 4) and
the one doing all the work would be a SIMH PDP-11.
--
Gregg C Levine hansolofalcon(a)worldnet.att.net
"The Force will be with you. Always." Obi-Wan Kenobi
Hi Bent Lee,
you asked for help
>
>I need help with the V6 kernel compilation. I read the Unix setup guide
>and the
>file /usr/sys/run. I've seen one problem so far with the /usr/sys/run
>file. That is
>that the two lib files (lib1 & lib2) did not contain any symbols.
>
>When I ran:
># ar r ../lib1
>and
># ar r ../lib2
>
>I got a string of error messages from ld.
which error messages?
>
>But after I did this:
># ar r ../lib1 *.o
>and
># ar r ../lib2 *.o
This might have corrupted your lib files. These two lines are only meant as
templates to replace some files in your archives, that is lib[12], if necessary.
But replacing an object file is necessary only if you changed the corresponding
source file and recompiled it.
Here are the files supposed to be in lib1:
# ar t lib1
main.o
alloc.o
iget.o
prf.o
rdwri.o
slp.o
subr.o
text.o
trap.o
sig.o
sysent.o
clock.o
fio.o
malloc.o
nami.o
pipe.o
sys1.o
sys2.o
sys3.o
sys4.o
>
>I have these missing symbols
># ld -x l.o m40.o c.o ../lib1 ../lib2
>Undefined:
>_end (defined by ld if successful)
>_edata (same)
>_iinit (from alloc.c)
>_iget (from iget.c)
replace lib1 and lib2 with the original files and it should work!
You might want to consult
http://www.ba-stuttgart.de/~helbig/os/script/chapt1.1
for help installing V6.
Regards,
Wolfgang
--
"Dijkstra is right, but you don't say such things!"
(A less courageous programmer)
Hi All
I need help with the V6 kernel compilation. I read the Unix setup guide
and the
file /usr/sys/run. I've seen one problem so far with the /usr/sys/run
file. That is
that the two lib files (lib1 & lib2) did not contain any symbols.
When I ran:
# ar r ../lib1
and
# ar r ../lib2
I got a string of error messages from ld.
But after I did this:
# ar r ../lib1 *.o
and
# ar r ../lib2 *.o
I have these missing symbols
# ld -x l.o m40.o c.o ../lib1 ../lib2
Undefined:
_end
_edata
_iinit
_iget
_update
_schar
_namei
_maknode
_access
_itrunc
_iput
_alloc
_uchar
_closef
_getf
Can anyone help me with this?
(I saw that MIT athena has a V6 repository with a Makefile in it
But I cannot access it at all. (-_-) )
thanks
bent lee