Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!mcvax!botter!ast
From: a...@botter.cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.sys.amiga,comp.sys.atari.st,comp.sys.ibm.pc,comp.sys.mac
Subject: MINIX - From the mouth of the horse
Message-ID: <1026@botter.cs.vu.nl>
Date: Thu, 8-Jan-87 18:11:03 EST
Article-I.D.: botter.1026
Posted: Thu Jan  8 18:11:03 1987
Date-Received: Fri, 9-Jan-87 02:45:09 EST
Reply-To: a...@cs.vu.nl (Andy Tanenbaum)
Distribution: world
Organization: VU Informatica, Amsterdam
Lines: 255

I have just learned of quite a discussion going on in comp.sys.atari about
porting MINIX to the Atari.  For all I know a similar discussion is going on
in comp.sys.amiga and elsewhere.  I am cross posting this to several groups
in case there are people there who are interested in porting MINIX to their
machine.  If you missed the original note in mod.os.unix, I have just written
a UNIX clone that is available now with all the SOURCE CODE for $79.95 from
Prentice-Hall.  There is also a book telling how it works inside.
I suggest that subsequent discussion go on in comp.sys.ibm.pc to avoid 
scattering it all over the place.  At the very least, crosspost comments to 
comp.sys.ibm.pc under the subject MINIX. Later, we can set up comp.os.minix
if there is enough interest.

Read the comp.sys.atari group under the heading Forwarded for the last 2 weeks
to get the background for this note.

Although MINIX is copyright (not licensed), Prentice-Hall has agreed to permit
people to make a LIMITED number of copies for educational use, home study etc.
Posting the source code on the network (54K lines of C, kernel+utilities) is a
no no, but if each purchased copy doesn't generated more than say, 2 or 3 
copies it is ok. While this is not public domain it is a lot better than Lotus,
Microsoft, Borland, and every other software company in the world's policy.

About the pricing.  It is clearly not shareware, but by publishing the
source code on diskette, we are clearly not acting like AT&T either.
I had some discussion with people like Brian Kernighan (author of
the Software Tools package) and Doug Comer (author of Xinu, a little
embedded operating system for the LSI-11, although not really UNIX
like) and came to the following conclusion.  I would like to see MINIX become
widespread, so the distribution mechanism is crucial.  Having a major
publisher like Prentice-Hall advertise it, bring it to shows, send out
junk mail, etc. will get it a lot more attention than a note on the
net.  Getting a commercial publisher like Prentice-Hall interested means
charging something.  I think in the long run, this funny, copyrighted
but not real aggressive position we are taking will cause MINIX to become
widespread, new software to be made for it, etc.  The GNU people are
upset because deep in their hearts they, too, know that people would rather
pay a reasonable price for good stuff than get empty promises for free.
Does anyone know how much GNU charges for its "free" software for the tape,
postage, handling etc?    Berkeley generally charges something like $125
for its tapes, as I recall.  If GNU also charges $125 for its "free" software
it seems to me that their moral indignation at Prentice-Hall's outrageous
$79.95 price is somewhat weakened.  I mentioned MINIX in netnews last year
and I got quite a few reactions.  I have also contacted lots of people for
various reasons.  With two exceptions, everybody congratulated me and wished
me good luck.  Some people, especially Martin Atkins, Charles Forsyth, and
Richard Gregg gave me a lot of help, for which I am grateful.  Only two
people were really negative, almost bitter--both from the Free Software
Foundation (names withheld because I don't believe in character assassination
on a world-wide network).  I am tempted to comment further, but I won't.

As to the port to the Atari/Amiga/etc as far as I see, there are no technical
problems with the MMU.  The trouble is as follows.  When you fork, the
child has to go somewhere else in memory than where the parent was.
Unfortunately, the child's stack contains absolute addresses, such as
the return from the fork routine.  If the child runs somewhere other
than where the parent was, it will crash.

There are a couple of solutions, the simplest of which is this.  When the
child is created, record in the process table where the parent was.
When it is time to run the child, just swap the parent and the child,
and actually run the child where it belongs.  When the parent wants to
run, swap them again.  Although this sounds horrendous,  it is not at all
so bad.  Swapping two 10K programs in memory might take 30 millisec.
MINIX programs are small.  I am a strong believer in Small is Beautiful.
At the end of this note you will find the sizes of the MINIX utilities.
The only big ones are the compiler passes, cpp, cem, opt, cg, and asld.

Furthermore, 99.9% of the time, the child does an EXEC, at which point the
operating system can put the parent back where it belongs, and put the
new core image anywhere in memory.  In practice, all this trick will
cost is about two copies of the forked core image, and it doesn't require
modifying the compiler. My experience with fragmentation is that it is not bad.
MINIX doesn't swap because one of the design goals was to have it run on CHEAP
hardware (meaning a 256K PC with 1 floppy disk) and floppies are not ideal as
swapping devices.

The MINIX memory management scheme is very simple, because the PC's hardware
is primitive.  A core image consists of the text, the data, a gap, and then the
stack, growing downward.  The stack and the data segments grow into the
gap.  If they meet, BOOM!  In practice, very few programs have wildly
growing stacks or data segments.  I ran some statistics once, and for 90%
of the MINIX utilities, 2K stack is plenty.  On the PC, the text is limited to
64K, and the data + stack is also limited to 64K.  On a 68000, there would
be no need for such a limit.  It comes from the 8088 architecture.
All you have to do is change a couple of constants in the memory manager.

The book is already out.  You should be able to order it at any book store.
The title is Operating Systems: Design and Implementation.  The software 
will be out in three weeks.  It went into production about three weeks ago,
and it takes about six weeks.  Don't ask me why.  Probably the same reason
as why it takes Prentice-Hall 18 months to produce a book from the finished
manuscript (unless you give them camera ready copy, as I do).  If you want to
get the software (either on PC diskettes or 9 track tape), first order the book
and then send back the business reply card (software order form) in the book.

I would like to see a MINIX version for the Atari/Amiga/etc.  The 68000 is
clearly much better than the 8088, but the PC has a lot of software going for
it.  Maybe a tolerable UNIX clone might help the Atari/Amiga/etc in its fight
against the monster from 8088-land.  A colleague of mine at Philips has
already started to port MINIX to the Atari.  He is an absolutely top rate
programmer, but he is VERY busy, so he doesn't have much time.  I think he
has already rewritten the MINIX assembly code (low level interrupt
handlers, etc) for the 68000.  I will check with him one of these days; he
seems to be away right now.  What I would like to find is someone who:

(1) knows the Atari (Amiga, Macintosh, etc) hardware well 
(2) knows UNIX well on the outside and moderately on the inside
(3) has a substantial amount of free time
(4) has access to an IBM PC for testing things etc.  (not essential, but helps)

Perhaps such a person could do the port with a little assistance from me.
Unfortunately I don't have much time either, as Prentice-Hall is bugging me to
revise a book on networks I wrote a million years ago.

The main things to do, other than the 68000 assembly code, are the device
drivers, all of which are in C, but of course are totally different for
the PC and Atari etc.  The PC version doesn't use the BIOS at all, because the
stupid thing doesn't use interrupts.  When you start a background job up
and then start up the editor in the foreground, calling the BIOS to read
a character would put the whole computer in a tiny loop sitting and waiting
for the keyboard to produce a character.  MINIX supports the full UNIX
multiprogramming, so I had to write all the drivers from scratch (in C).  I 
suspect that the Atari BIOS isn't any better, although maybe we could use the
screen output BIOS.

And here we come back to the $79 again. If the person doing the port does a
good job, Prentice-Hall could sell the other version on diskettes, source code
and all, for the same $79 as the PC version.  I have enough clout with P-H
that I think I could arrange that.  Needless to say, the person doing the
port would be remunerated for his efforts, probably in the form of a royalty
on each disk set sold.  The royalty is typically only a couple of dollars,
but that small amount is why capitalism works and socialism doesn't.

If anyone is interested, let me know.  I don't think it will be that difficult,
but you have to plow through much of a very tightly written 719 page book and
understand a 12,000 line program before you can even start, so it will no doubt
be months of work.  Also, debugging operating system code on a bare machine
even a relatively nice one like the 68000, will be a fair amount of work.

One other point is the compiler.  The compiler is based on ACK, which is 
described in Communications of the ACM, Sept. 1983, pp. 654-660.  ACK is a big
system for writing compilers.  It is being distributed by UniPress in Edison
NJ and Transmediair in Utrecht, Holland.  It uses the old UNCOL idea of having
front ends that generate a common intermediate code and then back ends that
compile from that code to the target machine.  At present we have front ends
for C, Pascal, Modula 2, Basic, Occam, and even a subset of Ada. There are back
ends for virtually every micro around, from the 6502 to the 68020.  The ACK
software is owned by the university I teach at. UniPress pays them a royalty on
each copy they sell (academic price is $995 for a source tape containing 6
megabytes, although Modula 2 and Occam aren't on the tape yet).  Our department
doesn't have much money, and we use the royalties to allow grad students to go
to conferences and the like.  For these reasons the compiler kit is not part
of MINIX.    Furthermore even the 8088 C compiler source by itself fills 4
diskettes.  If the compiler source were in the MINIX distribution, that would
have meant raising the basic price to over $100, very much against my idea of
keeping the price low. I personally wrote MINIX in my spare time, which is why 
it doesn't have to follow the same rules as ACK.

Nevertheless, the source of the 8088 MINIX C compiler is available
as a separate package from UniPress.  I suspect that the easiest way to get
a 68000 C compiler is for someone at a university to have their university buy
the ACK tape and use that to develop the 68000 compiler.  When it is done, it
will be necessary to negotiate a deal with UniPress to allow it to be sold,
but I know Mark Krieger, the president of UniPress, and he is a reasonable guy,
so I am sure some deal can be worked out that won't raise the price too much.
He is on the net (m...@unipress.uucp) if you have questions about all this.

The reason that I think this route is the easiest, is that ACK already has a
backend for the 68000, so there isn't much work to be done, but you really
need a VAX or a SUN or something like that to bring up the full ACK development
system.  The compilers that are produced aren't so big, but the compiler-
compilers, and backend generators and the other meta-software doesn't really
fit easily on a PC.  In addition to the 6 megabytes of source code on the
tape, you have to count on at least 20 megabytes of object files and working
space to compile everything.  The 68000 compiler has been running for years
and it is pretty good.  We recently rewrote the backend table for the
68000, 68010, and 68020 and the code quality seems very good (about 15% better
than the C compiler Motorola sells).  I haven't even thought about using the
Pascal, Modula 2, Basic etc. front ends because I wanted the system to fit on,
and be able to recompile itself on a system without, a hard disk.  This
succeeded.  Technically there shouldn't be any big problem with the other
front ends.  Note that UniPress has TWO packages: 8088 MINIX C compiler, and
full ACK.  The former is 4 diskettes; the latter is 6 megabytes on a mag tape.


Andy Tanenbaum (m...@cs.vu.nl, or in emergencies, m...@vu44.uucp)

Sizes of the MINIX commands

  Program  Text  Data   Bss  Total   (all sizes in decimal bytes)
    sync:   424    20    26    470
     clr:   714    28   156    898
  update:   836    42    58    936
   sleep:   848    58    58    964
      ln:  1070    86    74   1230
   chmod:   984    98   156   1238
basename:  1060    66   156   1282
     tee:  1228    82    94   1404
    kill:  1240    78   156   1474
  umount:   782   758    26   1566
   touch:  1348    76   156   1580
     sum:  1438    84   156   1678
   mknod:   930   738    26   1694
   mount:   890   782    26   1698
     pwd:  1546    84   172   1802
   mkdir:  1656   158    58   1872
   split:  1656   132   130   1918
     rev:   886    42  1052   1980
   rmdir:  1802   196   188   2186
     cat:  1212   722   540   2474
      mv:  2444   244    58   2746
    echo:   648    24  2076   2748
    stty:  2336   260   170   2766
      rm:  2468   276    30   2774
      df:  2030   948   156   3134
    time:  2584   666   266   3516
     lpr:  1314   126  2114   3554
    comm:  1822   104  2400   4326
      tr:  1470    82  2852   4404
   login:  3376  1436    28   4840
   chmem:  3178   278  2074   5530
    size:  3102   232  2208   5542
     tar:  4010   456  1774   6240
    head:  2762   168  3484   6414
      wc:  4460   208  2104   6772
      su:  3548  1498  2076   7122
      dd:  4966   532  2148   7646
   chown:  3522  2148  2074   7744
    date:  5338   412  2104   7854
      od:  5388   288  3654   9330
  passwd:  4976  1764  2620   9360
      pr:  5776   514  3110   9400
    sort:  6404   694  2490   9588
    grep:  6740   694  2208   9642
    uniq:  4956   850  5150  10956
      cc:  4404   826  5986  11216
   cc.at:  4404   834  5986  11224
    gres:  8496   768  2076  11340
    tail:  4550   184  7200  11934
      ar:  4900   488 11350  16738
    mkfs:  8708   906  7376  16990
    roff: 12742   820  4710  18272
      cp:  1914   876 16412  19202
    make: 15216  1976  3614  20806
    shar:   980    82 20506  21568
     cmp:  3372   224 18468  22064
 dosread:  7440  3688 11992  23120
   mined: 15680  2198  5308  23186
      sh: 21536  1668  1310  24514
      ls:  7164   584 17994  25742
     cpp: 16896  3764  8580  29240 (Pass 1 of the C compiler)
    asld: 14048  7882  7412  29342 (Pass 5 of the C compiler)
     opt: 16400  9368  9494  35262 (Pass 3 of the C compiler)
      cg: 24816 22968 10520  58304 (Pass 4 of the C compiler)
     cem: 59856 10656  3164  73676 (Pass 2 of the C compiler)

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!mcvax!botter!ast
From: a...@botter.cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.sys.ibm.pc,comp.sys.atari.st,comp.unix.wizards,comp.unix.xenix,
comp.sources.d
Subject: MINIX
Message-ID: <1028@botter.cs.vu.nl>
Date: Sat, 10-Jan-87 17:33:17 EST
Article-I.D.: botter.1028
Posted: Sat Jan 10 17:33:17 1987
Date-Received: Sun, 11-Jan-87 02:41:40 EST
Reply-To: a...@cs.vu.nl (Andy Tanenbaum)
Distribution: world
Organization: VU Informatica, Amsterdam
Lines: 70

First, I would like to apologize if I over-crossposted.  I haven't posted much
to the net before, so I may have done things wrong.  I was under the impression
that if one sends to multiple groups it cross posts them in such a way that
each reader only gets the message once, even if the reader subscribes to all 
of them.  If I am wrong will somebody please tell me how to do it (by mail).
It is also possible that I messed up.  Furthermore, we were having news and
mail problems at the time, which may have contributed.    It was my intention
that a lot of people see it once, not that a few people see it many times.

As to being commercial, that's true I guess, but since I am supplying 50,000
lines of source code without copy protection  for $79, and I don't mind a 
limited amount of copying of the binary and source code, it is not in the same 
league as normal PC software in terms of the owners zealously guarding both 
binaries and sources.  In fact, it is probably somewhat closer to the Free 
Software Foundation's way of doing things (also copyrighted) than to Lotus.  
I assumed (and judging by the response, probably correctly) that there would be
a fair amount of interest.  Sorry if I offended people.  

Maybe it would be best to set up comp.os.minix now.  Will everyone who would
want to subscribe to it send me mail.  If there is a sufficient number, I
will ask the local guru how one sets up a new group and try to avoid messing 
that up too.  I will cross post this to various groups, but just stick to 
comp.sys.ibm.pc or comp.os.minix (depending on the reaction) in the future.

Several people have asked me questions whose answers may be of general interest,
so I will post them here.

Q1: Can you have multiple users on a PC?
A1: In theory yes.  The terminal driver has an array indexed by terminal
    number from 0 to some maximum.  At present that maximum is 1, so you
    have to change a constant and recompile the tty driver.  Also, there
    is no RS232 driver (the deadline had a race with RS232 and the deadline
    won).  Therefore such a driver has to be made, but it is quite simple.
    Most of the hooks and handles you need are already there, for example,
    when it is time to output a character on tty n, the driver calls a
    function pointed to by tty_struct[n].tty_devstart, so each terminal
    can have a different routine to actually output the character. In this
    way you can mix various device types.

Q2: How compatible does a machine have to be to run MINIX?
A2: It needs a NEC uD765 chip as floppy disk controller, a Motorola 6845 as
    video controller, etc.  If the hard disk controller is nonstandard, the
    hard disk won't work, but the rest will.  Machines with different I/O
    chips but try to hide this by presenting the same BIOS interface won't
    work.  About a dozen different clones have been tested.  MINIX worked
    without problems on 80% and failed on 20%.

Q3: Can you call assembler routines from the MINIX C compiler in order to
    write drivers for new devices?
A3: Yes.  The C compiler uses the standard UNIX calling convention of pushing
    the parameters onto the stack in reverse order, so there is no problem
    writing bits of a program in assembler.  The assembly language accepted
    by the MINIX assembler is identical to that of PC-IX, the "official" IBM
    UNIX system for the PC.  Assembly routines for reading and writing I/O
    ports are present in the file kernel/klib88.s (port_in and port_out).

Q4: What do you mean it will sort of run on a 512K machine?
A4: It will boot fine and run ok with 512K, but since it doesn't swap, it
    won't be possible to run a lot of background jobs without running out
    of memory.  Also, if you use make, you may discover that make + cc +
    the various passes that get forked off may not fit in core at once, which
    causes EXECs to fail and make to get an error return.  This can be solved
    by changing the amount of stack space allocated to the compiler passes
    using the chmem utility.  (chmem is functionally the same as in PC-IX,
    which works the same way.)  Reducing the stack allocated to compiler
    passes means that some very large programs may not compile.  With a 640K
    system, files > 50K characters have compiled.  With 512K, that limit may
    be lower.

Andy Tanenbaum (mi...@cs.vu.nl)

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!rutgers!ames!ucbcad!ucbvax!hplabs!hpcea!hpfcdc!hpfclp!
diamant
From: diam...@hpfclp.HP.COM (John Diamant)
Newsgroups: comp.sys.ibm.pc
Subject: Re: MINIX - From the mouth of the horse
Message-ID: <6640001@hpfclp.HP.COM>
Date: Fri, 9-Jan-87 03:21:21 EST
Article-I.D.: hpfclp.6640001
Posted: Fri Jan  9 03:21:21 1987
Date-Received: Sun, 11-Jan-87 22:52:39 EST
References: <485@uvm-gen.UUCP>
Organization: HP, Fort Collins
Lines: 41

Andy,

I read your note with much interest.  This sounds like a fantastic
system which I am strongly considering buying for my IBM PC.  However,
your note left a few questions in my mind.  Someone else here has already
placed an order for your book and we will try to get a copy in Washington.

What confused me (and others who already read your note and are interested)
is that we could not figure out what the difference between the 4 software
packages was.  Personally, I am most interested in the 2 PC versions at
the moment.  You mentioned that the smaller version didn't have the C compiler.
If that were the only difference, I would assume you could simply ship the
larger one and tell people the compiler will not run on the smaller systems.
So I presume that there is some sort of kernel tuning such that the smaller
system will run with limited memory.  Since you supply source, and I didn't
see any mention of a kernel tuning utility, I assume that it requires
recompiling the kernel to tune it.  This means that the larger system (since
it can compile itself) is tunable, whereas the smaller one isn't.  Is this
correct?  Is it possible to create the smaller system by setting a few
parameters and recompiling the system on a larger machine?  Is this documented
in your book?  The reason I ask is that I am trying to decide which
configuration I would need to order (I have 384K and 2 floppies).  If it
is worth it, I would upgrade my PC to 640K.  What sort of performance
difference is there between a 256K version and a 640K version?

You also mention a different version for the PC-AT.  If I upgrade my PC to
an AT will I then have the wrong version?  Or would I simply need to recompile
the system with a different ifdef active?

Which binaries are on the tar format?

I also have one question on a completely different topic.  I noticed one
significant area not mentioned in your feature list -- uucp.  Does MINIX
not have uucp?

Thanks,

John Diamant
Systems Software Operation	UUCP:  {hplabs,hpfcla}!hpfclp!diamant
Hewlett Packard Co.		ARPA/CSNET: diamant%hpf...@hplabs.HP.COM
Fort Collins, CO

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!mcvax!botter!ast
From: a...@botter.cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.sys.ibm.pc
Subject: Re: MINIX
Message-ID: <1029@botter.cs.vu.nl>
Date: Mon, 12-Jan-87 07:00:41 EST
Article-I.D.: botter.1029
Posted: Mon Jan 12 07:00:41 1987
Date-Received: Tue, 13-Jan-87 00:37:49 EST
Reply-To: a...@cs.vu.nl (Andy Tanenbaum)
Distribution: world
Organization: VU Informatica, Amsterdam
Lines: 73

John Diamant has asked what the difference between the various MINIX packages
is.  Here is a brief rundown.  The binary of the operating system is identical
on the 256K and 640K PC version.  The only difference is that the binary of
the C compiler has been deleted from the 256K version because some of the
passes are normally kept on the RAM disk, and with only 256K, the RAM disk is
too small to hold them. I just deleted the whole compiler, thus freeing up a
little extra space on the /usr diskette.

There are 3 differences between the 640K PC version and the 512K AT version:
1. The binary for the PC version has a hard disk driver for the XT type disk
   embedded in it.  The binary for the AT version has the AT type disk driver.
   Both versions contain the source code for both the XT and AT drivers, so
   if you upgrade your XT to an AT, you just have to recompile with the other
   driver.

2. The AT version comes on five 1.2M diskettes instead of eight 360K diskettes.
   The source programs present on both are identical.

3. The initial configuration of what is on the /usr diskette and what is on
   the RAM disk is different.  The compiler passes won't fit on the RAM disk
   here either with only 512K, but there is plenty of room on the 1.2M floppies.

If you have a 256K or 384K machine and a friend has a 640K machine, get the
640K system and make a new root file system (for the RAM disk) yourself using
mkfs.  About 55K is the right size, and it should contain the same /etc and
/dev as the 640K system; /bin should have only: getlf, sh, and sync.
If you have 256K and two floppy disks or a hard disk, you can also copy the
C compiler to a second file system, but you have to fix and recompile the little
driving program cc.c because the paths of the compiler passes are built into
it.  If you are going to put the compiler passes in /user/lib or somewhere
else, you have to change cc.c so it knows which files to EXEC.  When moving
the 640K PC system to a 512K AT you have to make the same change. 
As distributed, cc.c won't compile because I have intentionally included a
line saying: !!!!_SEE_BELOW_!!!   on line 30 to attract your attention to the
comment explaining all this.

In summary, you can use the 640K system to reconstruct a RAM disk (root device)
for 256K or 384K or any other size using mkfs.  You don't have to recompile
the operating system.  The reason for two different sets is that the RAM disk
image (diskette #2) is different for 256K and 640K as described above.  The
only kernel tuning utility is chmem, which changes the amount of stack space
allocated to a program.

The mag tape has all the sources but no binaries at all.  It was intended for
university courses on operating systems that have to use a VAX for the student
projects.  The tape contains a simulator for the IBM PC (8088 interpreter plus
some I/O device simulation) so students can modify MINIX on the VAX and run
it on the PC simulator.  I would be less than honest to suggest that 
interpreting a PC on a VAX is blindingly fast, but if you compile the C to
assembly code and then patch up the main decode loop by hand and hack away at
the condition code routine, you can help somewhat.  The tape also contains
software to run the file-system-only via a pipe to a test program.  This
runs at normal speed, but only allows the students to test the file system.
Neither of these directories are available on diskette.  The complete PC
simulator is not a real small program :-)  I have found the simulator very
useful for debugging however, as it has a wealth of options for tracing,
breakpoints, and other debugging.

I have had a lot of mail asking about uucp.  I don't have one.  If anyone has
a version that runs on V7 and isn't huge and works (a tall order), let me
know or post it.

There was also some discussion about whether or not B. Dalton deals in 
textbooks.  They certainly do.  I have bought many textbooks at some of their
stores.  The problem is this.  Prentice-Hall, Addison-Wesley, and similar
publishers mostly sell to college book stores.  The discount off list price is
based on the way college book stores work.  B. Dalton simply says "We are big
and we want a bigger discount."  This causes friction.  Sometimes B. Dalton
gives in, sometimes the publisher gives in, and sometimes nobody gives in.
If your local B. Dalton refuses to order the book, try a college book store,
or Prentice-Hall's mail order dept.

Andy Tanenbaum 

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!mcvax!botter!ast
From: a...@botter.cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.sys.ibm.pc
Subject: MINIX
Message-ID: <1033@botter.cs.vu.nl>
Date: Thu, 15-Jan-87 07:01:29 EST
Article-I.D.: botter.1033
Posted: Thu Jan 15 07:01:29 1987
Date-Received: Sat, 17-Jan-87 00:37:51 EST
Reply-To: a...@cs.vu.nl (Andy Tanenbaum)
Distribution: world
Organization: VU Informatica, Amsterdam
Lines: 60

lauren@vortex writes:

> DON'T POST AT&T UNIX BINARIES OR SOURCE (OR BINARIES OR SOURCE BASED ON 
> AT&T UNIX SOURCES) TO THE NETWORK!  FOR THAT MATTER, NEVER POST
> ANY NON-PUBLIC-DOMAIN SOFTWARE UNLESS YOU HAVE EXPLICIT 
> PERMISSION TO DO SO FROM THE ENTITY THAT LICENSES SUCH SOFTWARE!
> 
> I mention this in response to Andy's comment to a uucp query where he said
> (more or less): "if you have one that runs under V7 let me know or post it."
> I assume that he meant to add, "IF and only IF it is PUBLIC-DOMAIN AND NOT
> BASED ON AT&T CODE."  

Yes of course that is what I meant.  While developing MINIX I was offered
some software from people who shall here remain nameless.  This software
consisted of utilities taken from AT&T UNIX with the identifiers all
changed, the layout modified, and a few changes here and there.  Needless
to say I sent it all back, warning the authors that making cosmetic
changes to AT&T code does not suddenly void their copyright.  If you ever
get taken to court for copyright violation the judge can easily find an
impartial expert witness and ask him if in his opinion the copy was based
on the original.  If he says "yes" there will be trouble.

The MINIX utilities and libraries were all genuinely written from scratch,
without even peeking at the UNIX code.  The only place you may find some
resemblance is in very small subroutines like strcmp.  There are not really
a large number of fundamentally different algorithms for strcmp, so there
will be some similarity.  For larger programs like ls or even cp, there
is no similarity at all.  

The policy on posting MINIX source code is this.  Although it is copyright,
if you have modified some file and think people might be interested in it,
it is ok to mail or post it.  The only thing to keep in mind is that a
large amount of the network traffic goes over dial up phone lines, even if
your site happens to be on the ARPANET.  When you post something, remember
that other people are paying the phone bills.  If you want to post a large
file, it might be a good idea to first announce it and ask people to send
you mail if they are interested.  If there isn't much response, mailing
it to a few people is much cheaper than posting it to the whole world.

On another subject, as you can imagine, I have gotten LOTS of mail, all
of it very encouraging.  However, one person who works for a major defense
contractor said that his employer was planning to aquire MINIX to run on
some PCs.  Perhaps a word of caution is in order.  MINIX was designed with
the goal of being an educational tool, for teaching in university or
corporate classes, or studying yourself.  It was also designed for hackers
to play with at home on their PCs, and things like that.   I don't think I
would like to trust the defense of the entire Western World to it.

If you sort of have the vague notion that putting MINIX on your PC will 
suddenly turn the PC into something like the VAX running 4.3 that you use at 
work, you will be disappointed.  What it does do, is turn the PC into something 
roughly comparable to a low-end PDP-11 running V7.

Mark Harris posted a question concerning MINIX and the EGA board.  I honestly
don't know if MINIX will work with the EGA board.  I don't have access to
one.  Since the terminal driver is very straightforward, if the EGA board
makes a reasonable attempt to emulate the 6845, patching the driver shouldn't
be too hard even if it doesn't work initially.

Andy Tanenbaum

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!rutgers!mit-eddie!tower
From: t...@mit-eddie.UUCP
Newsgroups: comp.sys.amiga,comp.sys.atari.st,comp.sys.ibm.pc,comp.sys.mac,
comp.os.minix
Subject: Re: MINIX - From the mouth of the horse
Message-ID: <4564@mit-eddie.MIT.EDU>
Date: Sat, 17-Jan-87 16:53:46 EST
Article-I.D.: mit-eddi.4564
Posted: Sat Jan 17 16:53:46 1987
Date-Received: Sat, 17-Jan-87 23:55:57 EST
References: <1026@botter.cs.vu.nl>
Reply-To: t...@prep.ai.mit.edu (Leonard H. Tower Jr.)
Followup-To: comp.os.minix
Distribution: world
Organization: Project GNU, Free Software Foundation, 1000 Mass. Ave.,
Cambridge, MA  02138, USA +1 (617) 876-3296
Lines: 67
Keywords: MINIX FSF GNU freedom Unix
Summary: diffs between FSF/GNU, MINIX, AT&T Unix

In article <1...@botter.cs.vu.nl> a...@cs.vu.nl (Andy Tanenbaum) writes:

> ...  The GNU people are
>upset because deep in their hearts they, too, know that people would rather
>pay a reasonable price for good stuff than get empty promises for free.

First, I would like to commend ast for doing MINIX, and going a large part of
the way towards giving MINIX its freedom.

Second, GNU isn't an empty promise.  GNU Emacs is out there.  GDB (GNU's
Debugger) is out there.  Bison, a YACC compatible Parser Generator, is out
there.  The GNU C compiler (highly optimizing with VAX, 68000, and 68020 code
generators) will be released soon.  Etc.

The remaining large undone piece is the kernel.  Work has started on that,
and its being leveraged off of existing code for a Unix style kernel, Trix,
written at MIT a while back.

GNU is a more ambitious project than MINIX, and rms hasn't had much more help
than ast.  Most of rms' help has been volunteer.  rms has also been working on
it for a shorter period of time.

Third, none of the GNU people I know of are upset.  We are just sad that yet
more software has been chained up.

>Does anyone know how much GNU charges for its "free" software for the tape,
>postage, handling etc?    Berkeley generally charges something like $125
>for its tapes, as I recall.  If GNU also charges $125 for its "free" software
>it seems to me that their moral indignation at Prentice-Hall's outrageous
>$79.95 price is somewhat weakened.

First, "free" doesn't refer to cost, but to the freedom of the software.

Second, I would like to present some comparisons between GNU, MINIX, and
Unix.  I know the facts are straight for GNU, correct me on the others.

					GNU	MINIX	Unix
					---	-----	----

Is source code distributed?		Yes	Yes	For many more $$

How many copies of the source can
   you give away, legally?	     Unlimited	3-4	None

Can one legally restrict use by others? No	YES	YES

Can one legally post it on USENET?	Yes	NO	NO

Can one legally ARPA ftp it, freely?	Yes	NO	NO

Cost of non-ARPA distribution from
   home organization:		      $ 150.  $ 80.	Many times more.


People are referred to:
	- the GNU Public License
	- the GNU Manifesto
	- Minix's Licensing arrangements (I have yet to see these)
	- AT&T and susbsidiary vendor Unix Licenses
for further details.

happy hacking, len tower
-- 
Len Tower, Project GNU of the Free Software Foundation
	   1000 Mass. Ave., Cambridge, MA  02138, USA +1 (617) 876-3296
HOME: 36 Porter Street, Somerville, MA  02143, USA +1 (617) 623-7739
UUCP: {}!mit-eddie!mit-prep!tower	INTERNET:   t...@prep.ai.mit.edu

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!rutgers!ames!aurora!jaw
From: j...@aurora.UUCP (James A. Woods)
Newsgroups: comp.os.minix
Subject: Re: MINIX - From the mouth of the horse
Message-ID: <599@aurora.UUCP>
Date: Mon, 19-Jan-87 21:40:31 EST
Article-I.D.: aurora.599
Posted: Mon Jan 19 21:40:31 1987
Date-Received: Tue, 20-Jan-87 18:57:51 EST
References: <1026@botter.cs.vu.nl> <4564@mit-eddie.MIT.EDU>
Organization: NASA Ames Research Center, Mt. View, Ca.
Lines: 30
Keywords: MINIX FSF GNU freedom Unix
Summary: free software needs no law

# ``there's only one "two"`` -- local tv station slogan.

just wondering why purveyors of "totally free" unix-like software
seem overly concerned with the law, as the gnu project appears to be.
re-control through new age license agreements is not really much
different from the mentality of an armada of at&t attorneys.

i doubt it'd be worth it to gnu to really enforce re-distribution provisos,
especially if, as has been said in this forum, they can't even get enough
volunteers to completely re-invent the unix wheel.

the reality of software around here is that once it hits usenet, people do
what they want with it.  the u. s. government, for whom i work, has always
taken this enlightened attitude.  if we (this applies to universities as well)
develop something, give it away, and someone makes a buck off it, goody for
them if they add value and support it.  if private industry doesn't add value
and still manages to sell it, the condition never remains for long, since
the code, having been publicized as free, informs public-minded whistleblowers
who then re-publicize the free code.

as for what's available under gnu/minix, there's an obvious merger
with combining the nice and free optimizing gnu c compiler and sophisticated
public domain utilities not in minix (yacc, lex, compress, egrep, diff, etc.)
with the minix kernel.  since each package is cheaper than dinner for two
(at least in some parts of the world), this is easy enough to do.

long live the sean byrne usenet logo
(n years of usenet freedom and anarchy),

   ames!jaw

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!rutgers!sri-unix!husc6!mit-eddie!tower
From: t...@mit-eddie.UUCP
Newsgroups: comp.os.minix,comp.sys.amiga,comp.sys.atari.st,comp.sys.ibm.pc,
comp.sys.mac,
comp.os.misc,comp.edu,comp.unix.wizards
Subject: Re: MINIX - From the mouth of the horse
Message-ID: <4654@mit-eddie.MIT.EDU>
Date: Sun, 25-Jan-87 22:40:12 EST
Article-I.D.: mit-eddi.4654
Posted: Sun Jan 25 22:40:12 1987
Date-Received: Mon, 26-Jan-87 06:38:24 EST
References: <1026@botter.cs.vu.nl> <4564@mit-eddie.MIT.EDU>
Reply-To: t...@prep.ai.mit.edu (Leonard H. Tower Jr.)
Followup-To: comp.os.minix
Distribution: world
Organization: Project GNU, Free Software Foundation, 1000 Mass. Ave.,
Cambridge, MA  02138, USA +1 (617) 876-3296
Lines: 73
Keywords: GNU MINIX FSF freedom
Summary: rms' reply
Posting-Front-End: GNU Emacs 18.36.1 of Wed Jan 21 1987 on eddie (berkeley-unix)

rms asked me to post this followup to article <1...@botter.cs.vu.nl>
of a...@cs.vu.nl (Andy Tanenbaum).  I apologize for the delay (I was
keyboard-less at USENIX for the last week  ;-} ).



   When Andy Tanenbaum announced his plans for MINIX, I told him that he
   could certainly use any of GNU in MINIX, as long as he followed the
   terms, which say that everyone must be able to redistribute it in any
   quantity to anyone.  Also, I said that if he produced something that
   fit the GNU system and was suitably available, I would use it.
   I don't think this was an antagonistic response.
   
   But I wasn't interested in more than passive cooperation, for two
   reasons.
   
   One was that the technical goals were very different and I doubted
   that any code written for one system would really be suitable for the
   other.  He planned a small system to fit the machines now common.  I
   am aiming for a more powerful system that people will prefer to 4.2 or
   system V, to run on the next generation of machine.  Each of these
   paths has its advantages and disadvantages which I'm sure the reader
   can see.
   
   The other is that I doubted that MINIX would ultimately be available
   on terms that would allow GNU to use it.  I wasn't interested in
   investing any effort on it until this doubt was resolved.  Now
   it appears the resolution is that GNU can't use it.
   
   Meanwhile, Tanenbaum hasn't used any GNU software, perhaps because
   some is too big for today's IBM PC's or perhaps because GNU copylefts
   would not permit their distribution on Prentice Hall's terms.
   
   I do not understand why Tanenbaum calls the GNU project "empty
   promises".  Several pieces of GNU software are already in
   distribution, complete with fanatical admirers and detractors.
   I think we have demonstrated that we can deliver what we promise.
   
   There is no charge whatever for using GNU software for any purpose.
   The Free Software Foundation charges for mailing tapes, but this is
   not the same as a charge for the software on the tape.  That is free,
   and you can make as many copies as you like for anyone at all.  The
   Free Software Foundation is a tax-exempt charitable organization and
   the money that tape distribution brings in is spent on the creation of
   more free software.  (None of it goes to me personally.)
   
   The GNU C compiler will be released for testing soon.  It compiles
   itself, GNU Emacs and Monardo's free TeX-in-C successfully, so it is
   not far from ready.  And it will be free, with sources.  (TeX-in-C is
   still being tested; the Free Software Foundation and probably others
   will distribute it by and by.  There will be announcements.)
   
   Further questions on GNU, GNU mailing lists, and the availability
   of GNU software can be directed to g...@prep.ai.mit.edu or
   mit-eddie!prep!gnu or seismo!prep.ai.mit.edu!gnu.
   


rms (Richard M. Stallman) is directly reachable at
< r...@prep.ai.mit.edu>.  Please realise that any time you spend
communicating with him will delay the delivery of GNU software, by the
time it takes him to read and reply.

happy hacking, -len tower
   
   
   
   
-- 
Len Tower, Project GNU of the Free Software Foundation
	   1000 Mass. Ave., Cambridge, MA  02138, USA +1 (617) 876-3296
HOME: 36 Porter Street, Somerville, MA  02143, USA +1 (617) 623-7739
UUCP: {}!mit-eddie!mit-prep!tower	INTERNET:   t...@prep.ai.mit.edu

Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!rutgers!brl-adm!seismo!mcvax!botter!ast
From: a...@botter.UUCP
Newsgroups: comp.os.minix
Subject: More from the mouth of the horse
Message-ID: <1056@botter.cs.vu.nl>
Date: Mon, 9-Feb-87 17:41:19 EST
Article-I.D.: botter.1056
Posted: Mon Feb  9 17:41:19 1987
Date-Received: Wed, 11-Feb-87 06:48:48 EST
Reply-To: a...@cs.vu.nl (Andy Tanenbaum)
Distribution: world
Organization: VU Informatica, Amsterdam
Lines: 67

Here are some questions and answers from recent news and mail.

Q1: Does the PC simulator on the tape have parts in assembler?
A1: No.  It is 100% C.  It should be easy to port anywhere with a C compiler
    and enough memory (about 1.5M).  Only caution is big vs. little endian.

Q2: Why did you have the C compiler produce packed assembly code?
A2: I didn't have a separate assembler and loader.  All I had was a single
    program, asld, that assembled and loaded all at once.  Given this program,
    packed assembly code was better than ASCII assembly code.  MINIX has
    programs libupack and libpack to go both ways.  I admit it is a kludge,
    but time constraints prohibited me from writing an assembler and a loader,
    and asld was available and well-debugged.

Q3: Why wasn't the code produced as a separate volume, like John Lions' book?
A3: I discussed this with P-H at great length.  Given the way book publishing
    works, a two volume set would have greatly increased the price of the
    book, and neither P-H nor I wanted that.

Q4: Any news on new clones that MINIX works on or doesn't work on?
A4: Our dept. has just gotten a large shipment of Zenith Z-248 AT clones for
    student use.  It works fine, provided the machine has a standard graphics
    board that works the way the IBM mono or color board works.  It doesn't
    work quite right with the EGA board.  I don't know why EGA board manuals
    are scarcer than hen's teeth around here.  Even Zenith doesn't have the
    manual for their own board.  I also discovered a class of hard disks that
    the MINIX disk driver can't handle.  The default block size is 1K, which
    means two sectors on most drives.  On a drive with an odd number of 512-
    byte sectors per cylinder, the last logical block will be split over two
    cylinders.  On drives that can't handle the implied seek, the driver gives
    up and reports an unrecoverable error.  The driver is being modified to
    handle this situation by simple reading each sector one at a time. The
    AT driver on the MINIX distribution worked fine with the Zenith 20 MB hard
    disk, but not with the 30 MB disk, which has 85 sectors per cylinder.

Q5: Why didn't you use the BIOS?
A5: Because it doesn't support interrupts.  If a foreground job, like a
    shell or editor read from the terminal by calling the BIOS, all the
    background jobs would be stopped instantly.  The BIOS simply does not
    support multiprogramming at all.  On the AT it has some crude hooks,
    but I wanted the PC and AT versions to be the same.  I don't think that
    will last long, but at least no one can blame me for the divergence.

Q6: Where is get_tot_mem?  I can't find it in the cross reference map.
A6: It is in lib/getutil.s, which is on the disks but not in the book.
    All the kernel library routines are in kernel/klib88.s and are in the
    book.  There are a couple of very short assembler routines that were
    needed in MM and/or FS, and they got put in the lib directory with
    the other library routines.  Note that the library source routines
    are in a MINIX archive lib lib/libsrc.a (to save disk space) so you
    have to unpack the archive to get them.

There has been a lot of discussion about how to post source code.  It seems
to me that the advantage of readable archives (i.e. shar) is so great that
tar just can't compare at all.  Since MINIX includes a shar, it would seem
that the format produced by this shar should be the standard, since everyone
will have it.  Of course one can create a "guest" uid and log in as guest
to limit the damage when unsharing.  Someone made a comment about gres.
The MINIX shar format expects a gres, but thanks to Martin Atkins of York
MINIX has a gres, so there is no problem.

There was a program uuslave.c posted to comp.sources.unix a couple of days
ago.  Does anyone know anything about this program?  Might it be useful as
a first step toward uucp?  If anyone has the time and knowledge, please take
a look at it and post your findings.

Andy Tanenbaum