[comp.os.minix] Status of V1.3

ast@cs.vu.nl (Andy Tanenbaum) (05/10/88)

I am about to start making up the MINIX 1.3 distribution.  I would like to
get it to Prentice-Hall some time in the summer.  Do not construe that as a
promise.  Version 1.3 will contain many items that have already been posted
here, and many that have not been.  Among other features, 1.3 will have:

  - ELLE: a very nice Emacs-like editor written by Ken Harrenstien
  - spell: an English spelling checker, including a 40,000 word dictionary
  - sed: a stream editor
  - ed: a nonstream editor
  - various small utilities
  - networking software for connecting MINIX machines on an Ethernet
  - support for non-IBM EGA cards
  - support for extended memory on ATs (as RAM disk)
  - support for reading the root file system from hard disk
  - many bug fixes, most of them not posted yet
  - lots more

The number of disks in the distribution has not grown, mostly because I will
cheat.  The V1.3 sources will be compressed and archived.  This saves lots
of space.  To extract the sources you will need to de-archive them and then
decompress the individual files.  A READ_ME file will show the way.  I am not
not going to post any compressed stuff.  The net saving of compressing plus
uuencoding is small, a lot of work for everyone, and very, very sensitive to
transmission errors.  All postings will be plaintext.

I would like to get everyone converted to 1.3.  I am tired about hearing about
bugs in 1.1 that were fixed in 1.2.  To accomplish this goal, three options are
available to readers of this group, representing different work-money 
tradeoffs.  These are:

   1. Watch this group carefully (no money, lots of work).
   2. Buy an upgrade kit from P-H for under $40 (middle).
   3. Buy a new set of disks from P-H for $79.95 (most money, least work).

In the course of the next couple of months, I will generate diff listings
for all files that have changed between 1.3 and 1.2.  If you have the original,
unmodified 1.2 sources, you can just turn everything into 1.3 by using Erik
Baalbergen's fix program.  Files that were not in 1.2, will be posted, insofar
as that has not already happened. If they have already been posted, you can fish
them out of one of the archives.  The upgrade kit (#2 above) will just be all
these diffs, on diskette.  You will have to do some work to install them, but
at least you can get a complete set of the diffs in a simple way, and not have
to constantly watch this group, as the diffs will probably be posted in bursts,
not all at once.  

If you have 1.1, you can upgrade to 1.2 by scrounging through the archives; 
I posted all those diffs last year.  Then you can repeat the process with the 
new diffs.  I am not going to make an upgrade kit from 1.1. There are only 24 
hours in a day, and all of them are occupied already, mostly dealing with mail
and news.  In theory, enough information will be in the archives to allow
anyone to do it, but option #3 may be a lot easier for busy people.  Sorry.

Note that the diffs that I post will be based on the original 1.2 distribution,
either from P-H or from 1.1 plus last year's diffs.  If you have made changes
since then, including changes that I have posted, you won't be able to apply
my new diffs using fix.  In some cases, Larry Wall's patch may help.  While I
realize this may be a pain, the original 1.2 distribution is the current base
that everyone should have.  It is the only version that I can count on many
people having.  Needless to say, when you finally get 1.3 going, put a copy 
of it aside on floppy disk, so that if we go through this again with 1.4, you 
will have an original 1.3 to use.

At the end of this file I have included the provisional V1.3 doc/READ_ME and 
doc/man_pages files.  Comments are welcome.  If there is some neat program
that you think should be included and isn't, let me know.  Similarly, if there
are parts of the documentation that you think should be improved, let me know
as well.  I have obviously not included everything that has been posted in 1.3.
I am still picky-picky.  My criteria are size (small is beautiful), simplicity
(if I can't figure it out, it doesn't go in), and closeness to UNIX V7. 
However, I am willing to tolerate some non V7 utilities that meet tests 1 and 2.

As to kernel changes, I am really an old stick in the mud.  The system actually
works pretty well.  I have a Zenith Z-248 (AT clone) at home now, and I run
MINIX on it exclusively.  It is rock solid and plenty fast.  You can try to
convince me to add some shiny new feature you have just devised, but it has to
be pretty important and highly compatible with what there already is.  On
the other hand, changes that remove known bugs without introducing new bugs
are welcome.  Note that this is not quite the same as "Changes that remove
known bugs are welcome."

Thus: ideas are always welcome.  They can either be mailed to me, or, if
discussion is appropriate, posted.

Andy Tanenbaum (ast@cs.vu.nl)

-------------------- Provisional V1.3 doc/READ_ME ----------------------------
The software has undergone some changes since the book was published.  Among
other things, the software has been more oriented toward hard disk users,
it has been ported to the IBM PC-AT (and clones), and also to the Atari ST.
The most significant changes are listed here.

 1. GENERAL
       There were a number of minor changes made to the code after the book
    was printed, as mentioned above.  As a result, line X of file Y in the  
    book may actually appear at X+3, or X-5, etc. on the disk version.  In
    the event of conflict, believe the disk version over the book version.

 2. PC-AT
       The distribution for the PC-AT differs from that for the PC in minor
    ways.  For example, there is no /user diskette.  All the files that would
    normally be on /user fit on /usr.  Furthermore, the number and organization
    of the source diskettes is different, but the same programs are available.
    Two additional special files are present in /dev: /dev/at0 and /dev/at1.
    These should be used to access 1.2M diskettes.  To access 360K diskettes
    on the PC-AT, use /dev/fd0 and /dev/fd1.  Special files are used by
    commands such as mount, mkfs, and df, among others.  For example, to
    copy part of a 1.2M diskette, type dd if=/dev/at0 of=file count=100.
    The difference between /dev/at0 and /dev/fd0 is that in MINIX, special
    files have sizes to prevent access beyond the end.  For /dev/fd0 the
    size is 360K.  For /dev/at0 it is 1.2M.  Finally, the executable binary
    for the PC-AT contains at_wini.c instead of xt_wini.c (see below).

 3. HARD DISK DRIVERS
       MINIX supports the use of the standard IBM hard disks.  Unfortunately,
    IBM chose to use different (and incompatible) disks and controllers on the
    XT and AT.  To find out if MINIX works with your disk, give the command:
		dd if=/dev/hd0 of=/dev/null count=1000
    If this runs to the end without errors, the driver embedded in your
    MINIX binary is appropriate for your controller and drive.  If it gives
    errors, copy kernel/xt_wini.c to wini.c and recompile the operating system.
    If this fails, then try kernel/at_wini.c and recompile it once more.
    Usually, one of these will work.  If neither works, your disk is not
    compatible with either the XT or AT.  You will have to modify the driver.
    You MUST have a kernel/wini.c to recompile the system, even if you do not
    have a hard disk (in which case, either one will do).

 4. INSTALLING MINIX ON A HARD DISK
      After you have made sure that you have a working hard disk driver, as
    described above, proceed as follows. To use MINIX on a hard disk, you need
    a MINIX partition.  You may also have MS-DOS, PC-IX, OS/2, XENIX, or other
    partitions as well if you like.  If you understand about making partitions,
    make one any way you are used to.  Otherwise use the MINIX fdisk program.
       Once you have a partition available for MINIX (the type does not matter
    as MINIX does not check), make a file system by booting MINIX from floppy
    the usual way and run mkfs.  If, for example, you have chosen partition 2,
    which has, say, 40 cylinders (i.e., 40 x 68 = 2720 sectors or 1360 1K
    blocks), type: 
		mkfs /dev/hd2 1360
    to make an empty file system.  However, for partition 1 use 1 block less
    because block 0 is not available (it contains the MS-DOS partition table).
    In other words, a 40 cylinder partition 1 has 1359 blocks but a 40 cylinder
    partition 2 or higher has 1360 blocks. Then mount the file system by typing
		/etc/mount /dev/hd2 /user
    Next, make whatever directories you like, typically bin, lib, and others,
    and copy files to the hard disk.  With the /usr floppy in drive 0, the
    command 
		cp /usr/bin/* /user/bin
    will copy all the binaries from /usr/bin to the hard disk, for example.
       Alternatively, the cpdir program can be used to copy entire trees, e.g.
		cpdir /usr/bin /user/bin
    will create a new directory /user/bin, and put /usr/bin with all its files
    and subdirectories in it.  
       A few of the files in /usr/bin must be owned by the root (instead of 
    bin) and have mode 4755. Check to make sure. These files are:  
		badblocks chgrp df fsck mkdir mv passwd readall rmdir su
       Finally, edit /etc/rc to have the hard disk mounted when the system
    is booted.  A line such as
		/etc/mount /dev/hd2 /usr
    can be used as a replacement for the mount command initially in /etc/rc.
    After editing /etc/rc, mount the root file system diskette and copy it
    to the diskette; otherwise the changes will be lost when the system is
    rebooted.  (There is nothing special about the root file system except
    its size; it can be mounted and written on like any other file system.)
       After these steps have been taken, the system can be booted from
    floppy in the usual way, and the root file system also read in from
    floppy.  The hard disk will automatically be mounted by the /etc/rc.
    The root device remains on the RAM disk, and the boot process still
    goes via floppy (for compatibility and to prevent disaster in the event
    that something goes wrong with the hard disk file system).  Hard disk
    file systems can be checked using fsck, the same as floppies.
       The special file /dev/hd0 refers to the whole disk, without regard to
    partitions, whereas /dev/hd1 ... /dev/hd4 refer to partitions 1 to 4.  If
    you have a second hard disk, you can make /dev/hd5 ... /dev/hd9 with mknod
    (major device 3, minor device 5 ... 9) for the second drive, with hd5 for
    the whole drive, hd6 for partition 1, etc.  Fsck also uses this convention.

  5. PUTTING THE ROOT FILE SYSTEM ON A HARD DISK
       To speed up the boot procedure, you may copy the root file system to
    /dev/hd3 with the commands 
		cp /dev/fd0 /dev/hd3     or    cp /dev/at0 /dev/hd3
    The former is for the PC, the latter is for the AT.  /dev/hd3 must not be
    mounted. When booting, leave the boot diskette in the drive when typing the
    = sign.  MINIX will see that the diskette is not a valid file system, and
    take the root file system from the default device, /dev/hd3.  You can 
    change the choice of default by modifying RAM_IMAGE in fs/main.c

  6. USING MS-DOS AS A DEVELOPMENT SYSTEM
       MINIX is now completely self supporting, so the C86 and PC-IX 
    directories have been deleted.  The only time you might need MS-DOS is
    for formatting blank diskettes.  MINIX does not have a format program.

  7. EDITING LARGE PROGRAMS WITH MINED
       Mined has a limit on the size of programs it can edit.  To edit
     larger ones, they must be broken up with split, edited separately and
     recombined later.  Better yet, use elle, which is a much better editor,
     is emacs compatible, and can handle files as large as the disk.

  8. MKNOD
        MINIX differs from UNIX in that block special files (and even some
    character special files, such as /dev/kmem) can have sizes.  A 360K floppy
    disk special file, such as /dev/fd0 can have size 360K.  Unfortunately, the
    mknod system call (and mknod program) have no way to express the size,
    so it uses size 0, which is equal to infinity.  When you read past the
    end of a block special file WITH a size, the file system returns zero
    bytes.  When you go off the end of a device WITHOUT a size, some drivers
    return end-of-file (e.g., hard disk, RAM disk), but others (e.g., floppy
    disk) return an I/O error code.  Thus if you make a new block special file
    for 2/0 and 2/1 (floppy disk) with mknod (i.e., no size) the command
		cp /dev/fd0 /dev/fd1
    will terminate with an error on block 360 (but it will copy the disk
    perfectly).  The only way to make a special file with a size is by making 
    a file system with mkfs.

  9. NONEXISTENT DEVICES
       If you try to open /dev/fd1 on a system with only one floppy disk drive,
    the system may hang.  To avoid this problem, the first time you log in, go
    to the /dev directory, and rename special files that you do not have to
    something unusual.  For example, if you do not have a hard disk, rename
    hd0 to HARD_DISK_0, hd1 to HARD_DISK_1, etc.  Similarly with one one floppy
    disk, rename fd1 to FLOPPY_DISK_1 to prevent it being typed by accident.
    You can also remove them, but due to the mknod problem described above, you
    can not get them back easily, so it is best just to get them out of the 
    way in case you ever need them again later.

 10. PRINTER
       In order to accommodate buffered and unbuffered printers, the printer
    driver uses a combination of delay loops and interrupts.  The net result
    is that the driver consumes a fair number of CPU cyles when running.  If
    you expect to do a lot of printing, you might want to consider rewriting 
    the printer interrupt handler, pr_char, in assembly code.

 11. DISK SPACE
       The /usr disk as distributed is nearly full.  If you have two floppy
    disk drives, be sure to mount /user on drive 1 and move your working
    directory there.  If you have only 1 floppy disk drive, remove some files
    from /usr/bin to make more space.  If you have a hard disk, there is no
    problem.

12. RUNNING /USER TESTS ON A FLOPPY
       Before running the tests in /user/test, remove the files in 
    /user/commands to create some free space on the disk.  Run the tests as
    superuser.

13. COMMAND LINE LENGTH
       The maximum initial stack size is 1K.  Calls to EXEC which require a
    larger stack will fail.  Thus if you do ls -l * in a large directory,
    the shell may expand the * so that the command line exceeds 1K and the 
    EXEC will fail, resulting in the message "Cannot execute ls".

14. ARCHIVES ON THE DISTRIBUTION DISKETTES
       To save space on the distribution diskettes, some of the sources have
    been compressed and/or archived.  Files ending with .archive can be
    de-archived by typing: ar x file.archive.  Files ending with .Z are
    compressed files, and can be decompressed by typing: compress -d file.Z.
    Some directories contain archives of compressed files, so first remove
    the files from the archive and then decompress the resulting .Z files.  

15. RECOMPILING FSCK AND OTHER LARGE PROGRAMS
      If for some reason you don't like the tools/fsck binary and want to
    recompile it, make sure you have plenty of free space for the compiler's
    temporary files.  On a floppy disk system, this may mean putting fsck on
    an almost empty diskette before compiling it.  When the disk is full, the
    quality of the compiler's error messages deteriorates rapidly.  If you
    are compiling fsck and getting strange results, check for disk space.
    Normally /tmp is used for temporaries, but the -T flag can override that.

16. NEWS GROUP
      If you have access to USENET, you may be interested in knowing that
    there is a news group, comp.os.minix devoted to discussions of MINIX.
    This is one of the largest news groups, with over 10,000 readers.
    If you have access to the Arpanet, Bitnet, or EARN, the news group is
    gatewayed there.  Contact info-minix-request@udel.edu to join.

17. SYSTEM PROBLEMS
      The IBM PC does not have any hardware for checking for stack overflow.
    The user must allocate the amount of stack for each program with chmem
    or use the compiler default (64K - program - data size).  Some programs
    in the distribution have been set to a smaller value, and may, in rare
    instances with certain arguments, hang.  If the system ever gets into a
    situation where it echoes keystrokes, but ignores DEL and CTRL-\ and
    appears otherwise to be hung up, hit F1 to see what is going on.  If
    some process is running and there is no way to interrupt it, hit F9.
    This key is equivalent to the super-user typing:  kill -1 9.  The result
    of F9 is that every process in the system is killed, including update
    and all the shells.  Although drastic, F9 will dehang the system
    instantly.  Log in again and then type /etc/update & to restart update.

18. USE OF EXTENDED MEMORY ON ATs
       If the size of the root file system (either taken from floppy or from
    /dev/hd3, as described above), is 256K or more, MINIX puts the root
    device in extended memory, above 1M, leaving the entire 512K or 640K
    free for MINIX and user programs.  To get full advantage of the extended
    memory, the size of the root file system should be the same as the amount
    of extended memory present.  If the root file system is < 256K, MINIX
    assumes that there is no extended memory, and puts the root file system
    in "low" core (below 640K).  This feature only works on ATs, so PCs must
    never have root file systems >= 256K.

19. SOFTWARE SCROLLING FOR EGA CARDS
       MINIX works with monochrome cards, CGA cards, and IBM EGA cards. 
    However, it does not work with some nonstandard EGA cards.  With these 
    cards, the screen will go blank every 25 lines.  MINIX can be made to work 
    with these EGA cards by recompiling tty.c (or the whole kernel)
    with the -DSOFTSCROLL flag.  For example, add -DSOFTSCROLL to CFLAGS in
    kernel/makefile and re-make the kernel.  Software scrolling is much slower
    than hardware scrolling, so this option should only be used if needed.
    The bootable image in the standard distribution was made by running
         make -DSOFTSCROLL
    in the kernel directory.  It is suggested that you try making a new
    kernel (but not mm or fs) without -DSOFTSCROLL.  If that one works, use 
    it, since it will be faster than the one in the distribution.

20. NEW FLAGS AND FEATURES
       Various programs have acquired new flags and features and new programs
    have been included.  Please read all the files in this directory.

21. ANSI ESCAPE SEQUENCES 
      The escape sequences used by the tty driver for both input and output
    have been changed to the ANSI standard ones.  To manipulate the cursor
    etc., print the following:
	ESC M:		scroll a line backwards (cursor must be on line 1)
	ESC [ y ; x H	move to column x, row y;  (1,1) is upper right corner
	ESC [0J		clear from cursor to end of screen
	ESC [7m		go to reverse video
	ESC [0m		go to normal video

    The 9 numeric pad keys, as well as numeric + and - now generate ESC [ x
    for some x.  Just type them to see which x goes with each key.

22. _CLEANUP NO LONGER NEEDED
       The exit routine has been changed to call _cleanup automatically.
    As a result, programs using stdio no longer have to call it explicitly.
    All calls to _cleanup have been removed from the standard distribution.

23. DISTRIBUTION CHANGES
       The subdirectories PCIX and C86 have been deleted, as mentioned above.
    The subdirectories MINIX have been renamed IBM_PC to avoid confusion with
    files for the ATARI ST (not included here).  Before recompiling anything,
    remove the relevant files from IBM_PC and move them one directory up, e.g.
		cd minix/kernel;  cp IBM_PC/* .      
    In some cases, two makefiles are provided, called pc_makefile and 
    at_makefile.  Copy the appropriate one to makefile, depending on whether 
    you have (1) a PC or XT or (2) an AT.  Delete the inappropriate one.

24. LINKS
       The directory /usr/include now contains several subdirectories and also
    linked files.  If you copy this directory to hard disk, link the following
    files, if possible.

        /usr/include/sgtty.h		to	minix/h/sgtty.h
        /usr/include/signal.h		to	minix/h/signal.h
        /usr/include/minix/callnr.h	to	minix/h/callnr.h
        /usr/include/minix/com.h	to	minix/h/com.h
        /usr/include/minix/const.h	to	minix/h/const.h
        /usr/include/minix/type.h	to	minix/h/type.h
        /usr/include/sys/stat.h		to	minix/h/stat.h
        /usr/include/fs/buf.h		to	minix/fs/buf.h
        /usr/include/fs/const.h		to	minix/fs/const.h
        /usr/include/fs/super.h		to	minix/fs/super.h
        /usr/include/fs/type.h		to	minix/fs/type.h

    In addition, the files dosread, dosdir, and doswrite in /usr/bin should all
    be links to the same file. It determines which it is by looking at argv[0].

25. PASCAL AND MODULA 2 COMPILERS FOR MINIX
       A MINIX compiler for Pascal is available.  A MINIX compiler for Modula 2
    will available during the course of 1988.  Neither is part of the standard
    distribution.  They may be purchased from either of:

	Unipress Software		Transmediair Utrecht B.V.
	2025 Lincoln Highway		Melkweg 3
	Edison, NJ 08817		3721 RG Bilthoven
	USA				Holland
	Tel: (201) 985-8000		Tel: (30) 78 18 20

    These companies also sell the sources to the MINIX C compiler, and the
    Amsterdam Compiler Kit, from which all the compilers have been derived.


-------------------- Provisional V1.3 doc/man_pages -------------------------

Command:	ar - archiver
Syntax:		ar [qrxdpmt][abivulc] [posname] archive file ...
Flags:		(none)
Examples:	ar r libc.a sort.s	# replace sort.s in libc.a
		ar rb a.s libc.a b.s	# insert b.s before a.s in libc.a

     Ar allows groups of files to be put together into a single archive.
It is normally used for libraries of compiled procedures.  The following keys
are allowed:
	  q: quickly append to the end of the archive file.
	  m: move named files. Ar expects 'a', 'b', or 'i' to be specified.
	  r: replace (append when not in archive).
	  d: delete. Ar will delete the name members.
	  t: print the archive's table of contents.
	  p: print the named files (list them on standard output)
	  x: extract

The keys may optionally concatencated with one or more of the following:
	  l: local temporary file for work instead of /tmp/ar.$$$$$
	  v: verbose
	  a: after 'posname'
	  b: before 'posname'
	  i: before 'posname'
	  c: create  (suppresses creation message)
	  u: replace only if dated later than member in archive


Command:	ascii - strip all the pure ASCII lines from a file
Syntax:		ascii [-n] [file]
Flags:		-n Extract the lines containing nonASCII characters
Examples:	ascii file >outf	# put all the ASCII lines on outf
		ascii -n <file >outf	# write nonASCII lines to outf

     Sometimes a file contains some nonASCII characters that are in the way.
This program allows the lines containing only ASCII characters to be grepped
from the file.  With the -n flag, the nonASCII lines are grepped.  No matter
whether the flag is used or not, the program returns an exit status of true
if the file is pure ASCII, and false otherwise.


Command:	badblocks - put a list of bad blocks in a file
Syntax:		badblocks block_special
Flags:		(none)
Example:	badblocks /dev/fd1

     If a device develops bad sectors, it is important to not have them
allocated to important files.  This program makes it possible to collect
up to 7 bad blocks into a file, so they will not be allocated for a "real"
file.  When the program starts up, it asks for a list of bad blocks.  Then
it creates a file whose name is of the form .Bad_xxxxx, where xxxxx is a pid.


Command:	cal - print a calendar
Syntax:		cal [month] year
Flags:		(none)
Example:	cal 3 1987		# print March 1987

     Cal prints a calendar for a month or year.  The year can be between 1
and 9999.  Note that the year 87 is not a synonym for 1987, but is itself a
valid year about 19 centuries ago.  The calendar produced is the one used
by England and her colonies.  Try Sept. 1752, Feb 1900, and Feb 2000.  If
you don't understand what is going on, look up "Calendar, Gregorian" in a
good encyclopedia.


Command:	compress - compress a file using modified Lempel-Ziv coding
Syntax:		compress [-cdfv] [file] ...
Flags:		-c Put output on standard output instead of on file.Z
		-d Decompress instead of compress
		-f Force output even if there is no saving
		-v Verbose mode
Examples:	compress <infile >outfile	# compress 1 file
		compress x y z	# compress 3 files to x.Z, y.Z, and z.Z

     The listed files (or standard input, if none are given) are compressed
using the Ziv-Lempel algorithm.  If the output is smaller than the input,
the output is put on file.Z or standard output if no files are listed.


Command:	cpdir - copy a directory and its subdirectories
Syntax:		cpdir [-v] srcdir destdir
Flags:		-v Verbose; cpdir tells what it is doing
Example:	cpdir dir1 dir2	# creat dir2 and copy dir1's files into it

     Cpdir creates the target directory, goes into it, and copies all the
files in the source directory to it.  When it is done, the target directory
contains the same files as the source directory.  Subdirectories are copied
Recursively. Links and special files are ignored.


Command:	diff - print differences between two files
Syntax:		diff file1 file2
Flags:		(none)
Example:	diff file1 file2	# print differences between 2 files

     Diff compares two files and generates a list of lines telling how
the two files differ.  Lines may not be longer than 128 characters.


Command:	diskcheck - check a disk for bad sectors
Syntax:		diskcheck device start count
Flags:		(none)
Examples:	diskcheck /dev/at0 0 1200	# check 1.2 MB floppy
		diskcheck /dev/at0 100 1100	# check floppy from block 100

     Diskcheck checks a disk for bad sectors by reading in each sector,
writing a known bit pattern onto it, reading it back in and comparing with
what was written.  This check is then a second time.  Bad sectors are reported
After each sector is tested, the original sector is restored.


Command:	du - print disk usage
Syntax:		du [-s] dir
Flags:		-s Summary only
Example:	du dir			# list disk space used by files in dir

     Du examines a directory and prints the amount of space occupied by the
files in that directory and its subdirectories.


Command:	ed - editor
Syntax:		ed file
Flags:		(none)
Example:	ed prog.c		# edit prog.c

    Ed is functionally equivalent to the standard V7 editor, ed.  It supports
the following commands:
	
	(.)	a: append
	(.,.)	c: change
	(.,.)	d: delete
		e: edit new file
		f: print name of edited file
	(1,$)	g: global command
	(.)	i: insert
	(.,.+1)	j: join lines together
	(.)	k: mark
	(.)	l: print with special characters in octal
	(.,.)	m: move
	(.,.)	p: print
		q: quit editor
	(.)	r: read in new file
	(.,.)	s: substitute
	(1,$)	v: like g, except select lines that do not match
	(1,$)	w: write out edited file

Many of the commands can take one or two addresses, as indicated above.  The
defaults are shown in parentheses.  Thus 'a' appends to the current line, and
g works on the whole file as default.  The dot refers to the current line.
Below is a sample editing session with comments given following the # symbol.
	ed prog.c		# edit prog.c
	3,20p			# print lines 3 through 20
	/whole/			# find next occurence of 'whole'
	s/whole/while/		# replace 'whole' by 'while'
	g/MAXBUF/s//MAX_BUF/g	# replace 'MAXBUF' by 'MAX_BUF' everywhere
	w			# write the file back
	q			# exit the editor
	

Command:	expr - evaluate experession
Syntax:		expr arg ...
Flags:		(none)
Example:	x=`expr $x + 1`		# add 1 to shell variable x

     Expr computes the value of its argument and writes the result on
standard output.  The valid operators, in order of increasing precedence,
are listed below.  Operators grouped by {...} have the same precedence.
Operators: |, &, {<, <=, ==, !=, >=, >}, {+, -}, *.
     Note that the V7 ":" operator is missing.  Parentheses are permitted.


Command:	factor - factor an integer less than 2**31
Syntax:		factor number
Flags:		(none)
Example:	factor 450180	# print the prime factors of 450180

     Factor prints the prime factors of its argument in increasing order.
Each factor is printed as many times as it appears in the number.


Command:	file - make a guess as to a file's type based on contents
Syntax:		file name ...
Flags:		(none)
Example:	file a.out /usr/include/ar.h	# guess at types

     File reads the first block of a file and tries to make an intelligent
guess about what kind of file it is.  It understands about archives, C
source programs, executable binaries, shell scripts, and English text.


Command:	find - find files meeting a given condition
Syntax:		find directory expression
Flags:		(none)
Examples:	find /  -name a.out -print	# print all a.out paths
		find /usr/ast ! -newer f -ok rm {} \;	# ask before removing
		find /usr -size +20 -exec mv {} /big \; # move files > 20 blks
		find / \( -name a.out -o -name `*.o` \) -exec rm {}\;

     Find descends the file tree starting at the given directory checking
each file in that directory and its subdirectories against a predicate.
If the predicate is true, an action is taken.  The predicates may be
connected by -a (Boolean and), -o (Boolean or) and ! (Boolean negation).
Each predicate is true under the conditions specified below.  The integer n
may also be +n to mean any value greater than n, -n to mean any value less than
n, or just n for exactly n.
  -name s	true if current filename is s (include shell wild cards)
  -size n	true if file size is n blocks
  -inum n	true if the current file's i-node number is n
  -mtime n	true if modification time relative to today (in days) is n
  -links n	true if the number of links to the file is n
  -newer f	true if the file is newer than f
  -perm n	true if the file's permission bits = n (n is in octal)
  -user u	true if the uid = u (a numerical value, not a login name)
  -grogp g	true if the gid = g (a numerical value, not a group name)
  -type x	where x is bcdfug (block, char, dir, regular, setuid, setgid)

Following the expression can be one of the following, telling what to do
when a file is found:
  -print	print the file name on standard output
  -exec		execute a MINIX command, {} stands for the file name
  -ok		prompts before executing the command


Command:	fdisk - partition a hard disk
Syntax:		fdisk file
Flags:		(none)
Example:	fdisk /dev/hd1

     When fdisk starts up, it reads in the partition table and displays it.
It then presents a menu to allow the user to modify partitions, store the
partition table on a file, or load it from a file.  Partitions can be marked
as DOS or non-DOS, and active or not.  MINIX doesn't care what kind of a
partition it uses.  Using fdisk is self-explanatory.  However, be aware that
repartitioning a disk may cause information on it to be lost.


Command:	fix - generate new file from old one and diff listing
Syntax:		fix oldfile difflist >newfile
Flags:		(none)
Example:	fix old difflist >new	# generate new from old and diffs

     Fix accepts a diff listing produced by diff and reconstructs the
new file.  It is common for people to take a file, modify it, and then
send the diff listing between the old and new files to other people.
Using fix, the old file, and the diff listing, it is possible to creat
the new file.  For example:

  diff oldfile newfile >difflist
  fix oldfile difflist >new2

will generate a file new2 that is identical to newfile.


Command:   	fsck - perform file system consistency check
Syntax:	   	fsck [-aclmrs] [device] ...
Flags:	   	-a automatically repair inconsistencies
	   	-c inode ...	check and list only the specified inodes
	 	-l list the files and directories in the filesytem
	  	-m make a new file system
	   	-r prompt user for repairs if inconsistencies are found
	  	-s list the superblock of the file system
Examples: 	fsck /dev/hd4	# check file system on /dev/hd4
	 	fsck -a /dev/at0	# automatically fix errors on /dev/at0
	   	fsck -l /dev/fd0	# list the contents of /dev/fd0
	   	fsck -c 2 3 /dev/hd3	# check and list inodes 2 & 3 on /dev/hd3

     Fsck performs consistency checks on the file systems which reside on the
specified devices.  It may also be used to list the contents of a file system 
or to make a new file system.


Command:	lorder - compute the order for library modules
Syntax:		lorder file ...
Flags:		(none)
Example:	lorder proc1.s proc2.s

     Lorder accepts a series of packed or unpacked .s files and libraries,
and produces a partial ordering suitable for processing by tsort.


Command:	more - pager
Syntax:		more file ...
Flags:		(none)
Example:	more file		# display file on the screen

     More is an alternative to mined as a pager, for people used to the
4.x BSD pager.  This version only implements three commands:
   <space>  - display next page
   <return> - display next line
   q        - exit more


Command:	prep - prepare a text file for statistical analysis
Syntax:		prep [file]
Flags:		(none)
Examples:	prep infile >outfile		# prep infile
		prep <infile >outfile		# prep infile


     Prep strips off most of the troff commands from a text file and then
outputs all the words, one word per line, in the order they occur in the file.
This file can then be sorted and compared to a dictionary (as a spelling
checker), or used for statistical analyses.

Command:	printenv - print out the current environment
Syntax:		printenv
Flags:		(none)
Example:	printenv		# print the environment

     Printenv prints out the current environment strings, one per line.


Command:	readfs - read a MINIX file system
Syntax:		readfs [-il] block_special [dir]
Flags:		-i Give information about the file, but do not extract files
		-l List the files extracted on standard output
Example:	readfs -l /dev/fd0

     Readfs reads a floppy disk containing a MINIX file system.  It can
extract all the files from it, give a listing of them, or both.  The files
extracted can be put in a user-specified directory (default: current
directory).  If subdirectories are needed, they will be created automatically.


Command:	Spell - print all words in a file not present in the dictionary
Syntax:		spell file
Flags:		(none)
Example:	spell document		# print the spelling errors on stdout

     Spell is the MINIX spelling checker.  It is actually a short shell script.
First, the program prep strips off the roff, nroff, and troff control lines,
and the punctuation, and lists each word on a separate line.  These words are
then sorted.  The resulting output is then compared to the dictionary.  Words
present in the file but not present in the dictionary are listed.  The
dictionary should be located in /usr/lib (or the shell script changed).


Command:	strings - print all the strings in a binary file
Syntax:		strings file ...
Flags:		(none)
Example:	strings a.out		# print the strings in a.out

     Strings looks for sequences of ASCII characters followed by a zero byte.
These are usually strings.  This program is typically used to help identify
unknown binary programs


Command:	test - test for a condition
Syntax:		test expr
Flags:		(none)
Example:	test -r file		# see if file is readable

     Test checks to see if files exist, are readable, etc. and returns
an exit status of zero if true and nonzero if false.  The legal operators are
  -r file  true if the file is readable
  -w file  true if the file is writable
  -x file  true if the file is executable
  -f file  true if the file is not a directory
  -d file  true if the file is a directory
  -s file  true if the file exists and has a size > 0
  -t fd    true if file descriptor fd (default 1) is a terminal
  -z s     true if the string s has zero length
  -n s     true if the string s has nonzero length
  s1 = s2  true if the strings s1 and s2 are identical
  s1 != s2 true if the strings s1 and s2 are different
  m -eq m  true if the integers m and n are numerically equal
                The operators -gt, -ge, -ne, -le, -lt may be used as well

These operands may be combined with -a (Boolean and), -o (Boolean or), !
(negation).  The priority of -a is higher than that of -o.  Parentheses are 
permitted, but must be escaped to keep the shell from trying to interpret them.


Command:	tree - print directory tree under working directory
Syntax:		tree
Flags:		(none)
Example:	tree			# print tree starting at working dir

     Tree prints the tree structure starting at the working directory.  All
the subdirectories are listed, with the depth shown by indentation.


Command:	tsort - topological sort
Syntax:		tsort file
Flags:		(none)
Example:	ar cr libc.a `lorder *.s` | tsort	# build library

     Tsort accepts a file of lines containing ordered pairs and builds a
total ordering from the partial orderings.


Command:	treecmp - recursively list differences in two directory trees
Syntax:		treecmp [-v] dir1 dir2
Flags:		-v (verbose) list all directories processed
Example:	treecmp -v /usr/ast/V1 /usr/ast/V2

     Treecmp recursively descends the directory tree of its first argument
and compares all files to those at the corresponding position in the second
argument.  If the two trees are identical, i.e., all the corresponding
directories and files are the same, there is no output.  Otherwise, a list
of files missing from one of the trees or present in both but whose contents
are not identical in both are printed.


Command:	tty - print the device name of this tty
Syntax:		tty
Flags:		(none)
Example:	tty

     Print the name of the controlling tty.


Command:	whereis - examine system directories for a given file
Syntax:		whereis file
Flags:		(none)
Example:	whereis	stat.h		# prints: /usr/include/sys/stat.h

     Whereis searches a fixed set of system directories, /bin, /lib, /usr/bin,
and others, and prints all occurrences of the argument name in any of them.


Command:	which - examine $PATH to see which file will be executed
Syntax:		which name
Flags:		(none)
Example:	which a.out		# tells which a.out will be executed

     The $PATH shell variable controls the MINIX search rules. If a command
a.out is given, the shell first tries to find an executable file in the working
directory.  If that fails, it looks in various system directories, such as /bin
and /usr/bin.  The which command makes the same search and gives the absolute
path of the program that will be chosen.

Command:	whoami - print current user name
Syntax:		whoami
Flags:		(none)
Example:	whoami			# print user name

     In case you forget who you are logged in as, whoami will tell you.  If
you use 'su' to become somebody else, whoami will give the current effective
user.


Command:	uuencode - encode a binary file to ASCII (e.g., for mailing)
Syntax:		uuencode [input] output
Flags:		(none)
Example:	uuencode infile <infile >outfile	# encode infile

     Uuencode takes an input file, typically a binary file, and converts it
to pure ASCII by encoding 3 bytes (24 bits) as 4 bytes in ASCII.  Only 64
different characters are used, all of them valid ASCII characters.


Command:	uudecode - decode a binary file encoded with uuencode
Syntax:		uudecode file 
Flags:		(none)
Example:	uudecode encodedfile 	# re-create the original file

     Uudecode takes an input file, typically a uuencoded binary file, and 
converts it back to the original file.  The decoded file is given the name
that the original file had.  The name information is part of the encoded file.

gnu@hoptoad.uucp (John Gilmore) (05/11/88)

Does the anticipated Minix V1.3 have working serial ports?

Since it has compress and uu**code, it should have atob/btoa too.
They are distributed with compress; they encode binary data as text
in less space than uu**code.  They're small and simple and you can
get them from any comp.sources.unix archive.

The compress documentation should say that it's a 12-bit compress (if it is),
not the standard 16-bit compress.

A much better file(1) command is in the comp.sources.unix archives,
written by Ian Darwin.

The super fast James Woods grep/fgrep/egrep from comp.sources.unix should be
supplied, too.

Patch(1) by Larry Wall should be supplied rather than the "fix"
program, which goes nuts if you have edited the file being patched.

A real version of tar(1) should be included, e.g. one that uses the same
arguments as v7 tar.  Mine is in comp.sources.unix.

Has anyone retrofitted the Berkeley TCP/IP networking code recently posted? :-)
Or even Phil Karn's stuff, which already runs on MSDOS IBM PC's?

I might suggest that just reading the index to comp.sources.unix and
obtaining anything that looks like a PD reimplementation of a Unix command
is likely to produce a much more functional Minix.  The c.s.u code was
written by and for people on real Unix systems, and was edited by good
moderators, so it is usually as useful as real Unix code, unlike
much of Minix.

Bring the standard library up to snuff so that it can compile the
average 1988 program posted to the net, e.g. all the string functions,
(Henry Spencer in comp.sources.unix again), both BSD and SV
bcopy/memcpy, the Posix directory access routines, etc.  Reading the
ANSI C and Posix draft standards might show some places to touch up.
Of course you aren't going to have an ANSI C compiler (until gcc is
ported to the Atari) but you could at least provide the library
routines and include files defined by the standards.

Upgrade the C Preprocessor to handle #if defined() and other things.
ANSI C would be best of course.  There are two working ANSI C
Preprocessors available free in source (gnu and decus).

Porting my tar to Minix involved writing execlp(), bcmp(), bzero(),
3 arg open.

Small may be beautiful, but small and broken is ugly.
-- 
John Gilmore  {sun,pacbell,uunet,pyramid,ihnp4}!hoptoad!gnu        gnu@toad.com
"Use the Source, Luke...."

leo@sunybcs.uucp (Leo Wilson) (05/12/88)

In article <4530@hoptoad.uucp> gnu@hoptoad.uucp (John Gilmore) writes:
>Does the anticipated Minix V1.3 have working serial ports?

I've been trying to wait until there is a released product, now I have
to ask: Will ST Minix have a working serial driver?

===
Leo E. Wilson  364 West Delavan Avenue, Buffalo, NY 14213-1412 (716)883-7573
(leo@gort.cs.Buffalo.EDU)    ...!sunybcs[!leow]!leo    leo@sunybcs.bitnet

wnp@dcs.UUCP (Wolf N. Paul) (05/12/88)

In article <709@ast.cs.vu.nl> ast@cs.vu.nl (Andy Tanenbaum) writes:
 >I am about to start making up the MINIX 1.3 distribution.  I would like to
 >get it to Prentice-Hall some time in the summer.  Do not construe that as a
 >promise.  Version 1.3 will contain many items that have already been posted
 >here, and many that have not been.  Among other features, 1.3 will have:
 >
 >          (lots of stuff deleted)
 >  - networking software for connecting MINIX machines on an Ethernet
 >          (lots of stuff deleted)
 
Will MINIX 1.3 have a "standard", "official" serial port driver?  It seems to
me that THAT would be the enhancement which would lift MINIX out of the 
toy (or "teaching tool") category into the realm of a really useful, working
OS.

Unfortunately, both of the drivers which were posted (Bing Bang and
Jim Paradis) had all these caveats and required other changes to the kernel.

MINIX needs an official, V7-compatible, AST-approved serial driver.
-- 
Wolf N. Paul * 3387 Sam Rayburn Run * Carrollton TX 75007 * (214) 306-9101
UUCP:     ihnp4!killer!dcs!wnp                 ESL: 62832882
INTERNET: wnp@DESEES.DAS.NET or wnp@dcs.UUCP   TLX: 910-280-0585 EES PLANO UD

rmtodd@uokmax.UUCP (Richard Michael Todd) (05/13/88)

In article <4530@hoptoad.uucp> gnu@hoptoad.uucp (John Gilmore) writes:
>The compress documentation should say that it's a 12-bit compress (if it is),
>not the standard 16-bit compress.

If the compress he's got is the one I posted back when I posted the PD Tar
changes, it's a 13-bit compress, not 12 bit.  You can cram 13-bit compress
into 64K split I&D and have it work.  

>A real version of tar(1) should be included, e.g. one that uses the same
>arguments as v7 tar.  Mine is in comp.sources.unix.

And it's already been ported to Minix, too.  The original Minix tar didn't
even output tarfiles to stdout--meaning you couldn't use "tar c ... | bundle"
to backup your hard disk directories easily.  With PD Tar you can; that's
one of the main reasons why I ported it.  

>Has anyone retrofitted the Berkeley TCP/IP networking code recently posted? :-)
>Or even Phil Karn's stuff, which already runs on MSDOS IBM PC's?
Won't be terribly easy to do, if it's even possible.  (BTW, if I'm not
mistaken Karn's stuff contains much of the Berkeley TCP/IP code, just the
drivers are different.)  The main problem is limited address space--the
original BSD code was written on Vaxen where you can allocate plenty of
room to mbufs.  Keith Bostic et al., when they added the Berkeley networking
code to BSD2.10 (the PDP version of BSD), had to do all sorts of nasty
mapping segments in and out to get it to run in the PDP's address space
(roughly like the MINIX system of 64K I, 64K D space for each process).
You'd almost have to add another system process (like FS and MM) just to
handle the network.  

>Bring the standard library up to snuff so that it can compile the
>average 1988 program posted to the net, e.g. all the string functions,
>(Henry Spencer in comp.sources.unix again), both BSD and SV
>bcopy/memcpy, the Posix directory access routines, etc.  Reading the

Just a reminder, I've already done a port of the Posix directory library
to Minix.  Didn't really need much changing to get it to work.

>Porting my tar to Minix involved writing execlp(), bcmp(), bzero(),
>3 arg open.
Well, 3 arg open didn't *have* to be written, since V7 systems got along
without it, but it did allow using the full functionality of the PD Tar
(specifically -k).  I also had to revise printf() to allow both the %ld
formats that the rest of the planet has been using for the past ten
years :-), as well as variable-length formats.
  Ideally I should be able to take a program off of the net and, assuming
it isn't using some esoteric feature like SysV IPC or BSD sockets, get it
running under Minix with as little trouble as it takes to get it running
on one of our Suns or the Multimax.  Reinventing library routines is not
my favorite activity.  

>Small may be beautiful, but small and broken is ugly.
He who thinks small is beautiful should see my dorm room for a
different opinion :-).  
  Seriously, although a certain amount of smallness is required by the
limitations of the XT hardware, we could theoretically do a lot better.
I hold up Berkeley Unix version 2.10 as an example.  The authors of 2.10
have managed to get a reasonable subset of full BSD4.3 to run on PDP-11
machines.  PDP-11's aren't that much bigger than XT's, and they share 
many of the same address space limitations.  We should at least be able
to get some of the Berkeley features working on our machines.  So why
should we limit ourselves by compatibility with Version 7, a Unix variant
that's about 10 years behind the times?
-- 
Richard Todd		Dubious Domain: rmtodd@uokmax.ecn.uoknor.edu
USSnail:820 Annie Court,Norman OK 73069 	Fido:1:147/1
UUCP: {many AT&T sites}!occrsh!uokmax!rmtodd

ast@cs.vu.nl (Andy Tanenbaum) (05/13/88)

In article <4530@hoptoad.uucp> gnu@hoptoad.uucp (John Gilmore) writes:
>Does the anticipated Minix V1.3 have working serial ports?
At this moment, I know of 5 or 6 people who are working on serial ports.
None of them work yet.  Some crash, some need obscure tuning, some are not
plug compatible with the old tty.  The latter is an important issue due to
many changes made in the kernel both as a result of the Ethernet stuff which
has been added and the Atari stuff.  I don't have the time to write a 
serial driver myself right now, but if someone else can supply me with a
FULLY DEBUGGED tty.c file supporting RS232, I am all for it.


>Since it has compress and uu**code, it should have atob/btoa too.
I don't have them.  Somebody please send/post them, along with documentation.

>The compress documentation should say that it's a 12-bit compress (if it is),
>not the standard 16-bit compress.
Beats me.  It uses Lempel-Ziv coding, whatever that is.  I got it from the net
and it seems to work.  Average file is cut in half when compressed.

>A much better file(1) command is in the comp.sources.unix archives,
Its 110K.  Mine is 3K.  The Berkeley spirit at work: 3 times better and 30
times larger.  Bad tradeoff.  It is this mentality that makes my 512K MINIX AT 
at home apleasure to  with, whereas I curse a blue streak at my SUN-3 at work
work because it has only 4M on it.

>The super fast James Woods grep/fgrep/egrep from comp.sources.unix should be
>supplied, too.
Could some kind soul take a look at this, see how big it is, and if it is not
absurd, port it to MINIX and post it. If it don't fit in 64K, it don't count.

>Patch(1) by Larry Wall should be supplied rather than the "fix"
If somebody will do the work and provide me with a fully debugged version
for MINIX and it is ok with Larry, I'll include it in addition to fix.

>A real version of tar(1) should be included, e.g. one that uses the same
>arguments as v7 tar.  Mine is in comp.sources.unix.
I tried one other tar; I forget whose, but it had a lot of problems.  If
yours has been thoroughly tested on MINIX, please send it to me to.  Again, it 
must fit in 64K.  Don't talk to me, talk to Intel.

>Has anyone retrofitted the Berkeley TCP/IP networking code recently posted? :-)
>Or even Phil Karn's stuff, which already runs on MSDOS IBM PC's?
"Not I," said the little red hen.

>I might suggest that just reading the index to comp.sources.unix and
>obtaining anything that looks like a PD reimplementation of a Unix command
>is likely to produce a much more functional Minix.  The c.s.u code was
>written by and for people on real Unix systems, and was edited by good
>moderators, so it is usually as useful as real Unix code, unlike
>much of Minix.
My experience is different.  Every time I try to take something from that
newsgroup, I end up throwing it away because it either has a makefile a
yard long dealing with 4.1, 4.2, 4.3, System 5.0, System 5.1, System 5.3,
V6, V7, and various other systems, it uses all manner of strange library
routines I have never heard of (no doubt 4.something or 5.something) or
it barely fits on my 4M SUN with its lousy little 70M disk, let alone my
impoverished AT with its minuscule 20M disk, or something else is wrong.
I have gotten many useful programs from readers of this group (thanks!) but
very little from comp.sources.unix.
Remember, the goal of MINIX is to have a system that is small enough to
understand.  If you just want to run UNIX, buy Xenix.


>Bring the standard library up to snuff so that it can compile the
>average 1988 program posted to the net, e.g. all the string functions,
The /usr/include directory has been reorganized to be more like true V7.
As far as new library routines, if somebody wants to fish them out of
archives, test them thoroughly on MINIX, and send them to me, fine.
Again, my experience is that everytime I start on something like this, I end
up discovering that nothing works because all the routines make 4.3 or 5.3
calls.

>Upgrade the C Preprocessor to handle #if defined() and other things.
>ANSI C would be best of course.  There are two working ANSI C
>Preprocessors available free in source (gnu and decus).
The compiler works quite well and is internally consistent.  I am not
inclined to change it now.  As to GNU being free,  we have gone through
that issue before at great length.  Perhaps Stallman and the combined legal
departments of Prentice-Hall, its parent company Simon & Schuster, and ITS
parent company, Gulf+Western could work that out :-) .

>Porting my tar to Minix involved writing execlp(), bcmp, bzer(),
>3 arg open.
That is exactly my point.  To use some utility, one must first implement the
4.3 library, and then the 4.3 operating system.  Next time I give my operating
systems course, I'll check to see if any students want to implement 4.3 for
extra credit.  Last time I asked if any wanted to implement MS-DOS.  There
were no takers.  On that note, I will depart.

Andy Tanenbaum (ast@cs.vu.nl)

shaker@hpihoah.HP.COM (Chris Shaker) (05/14/88)

> drivers are different.)  The main problem is limited address space--the
> original BSD code was written on Vaxen where you can allocate plenty of
> room to mbufs.  Keith Bostic et al., when they added the Berkeley networking
> code to BSD2.10 (the PDP version of BSD), had to do all sorts of nasty
> mapping segments in and out to get it to run in the PDP's address space
> (roughly like the MINIX system of 64K I, 64K D space for each process).
> You'd almost have to add another system process (like FS and MM) just to
> handle the network.  

What's wrong with adding another system task for networking?  One of the
appealing things about MINIX as contrasted with System V UNIX is the system
task concept.  It is clean, elegant, and powerful.

Chris

henry@utzoo.uucp (Henry Spencer) (05/16/88)

> ... if I'm not
> mistaken Karn's stuff contains much of the Berkeley TCP/IP code, just the
> drivers are different.) 

You are mistaken; Phil's stuff is a rewrite from the ground up, although
some of the concepts are similar.

> The main problem is limited address space--the
> original BSD code was written on Vaxen where you can allocate plenty of
> room to mbufs...

However, Phil's stuff was written on PCs, and runs just fine on small-address
machines.

> You'd almost have to add another system process (like FS and MM) just to
> handle the network.  

This is probably the right approach.  What's wrong with it?
-- 
NASA is to spaceflight as            |  Henry Spencer @ U of Toronto Zoology
the Post Office is to mail.          | {ihnp4,decvax,uunet!mnetor}!utzoo!henry

Dickson@his-phoenix-multics.arpa (Paul Dickson) (05/23/88)

I have some questions about 1.3 that I'm sure you can answer.
Simple Question: Will V1.3 support Turbo C?

As far as I can tell, this topic has never been covered in the past 3
months.  About the only reference I can find is in the referal to MINIX
archives.  I guess what I'm hoping to hear, is that the V1.2 to Turbo C
diffs have been incorporated into V1.3.

A few friends and I are thinking of bring up MINIX on a new machine this
summer, and with the coming of V1.3, would like to keep the software
up-to-date.  To help with the debug cycle, we'd prefer to do the work in
Turbo C (we were really impressed on how fast we could rebuild MINIX
with Turbo C).

We could if we had to, regnerate a vanilla V1.2 from the diffs and V1.1,
but that would waste at least a week of time.

          -Paul Dickson
            Dickson%pco @ BCO-Multics.ARPA

ast@cs.vu.nl (Andy Tanenbaum) (05/25/88)

In article <2677@louie.udel.EDU> Dickson@his-phoenix-multics.arpa (Paul Dickson) writes:
>I have some questions about 1.3 that I'm sure you can answer.
Yup.
>Simple Question: Will V1.3 support Turbo C?
Nope.

Andy Tanenbaum (ast@cs.vu.nl)

P.S. Since I have to put some filler here to keep Pnews happy, I will mention
that so far the total number of people expressing interest in having 1.3 run
on a hard diskless system is 0.  If there are any floppy fans out there, speak
now or forever hold your peace.

BECKER%HUMBER.BITNET@cornellc.ccs.cornell.edu (Bruce Becker) (05/25/88)

>In article <1988May16.062408.16955@utzoo.uucp>, henry@utzoo.uucp (Henry
>Spencer)
> writes:
>> --
>> NASA is to spaceflight as            |  Henry Spencer @ U of Toronto Zoology
>> the Post Office is to mail.          |
>{ihnp4,decvax,uunet!mnetor}!utzoo!henry
>
>All U.S. readers of COMP.OS.MINIX who think Henry's ungracious swipe in
>COMP.OS.MINIX has gone on too long (being as it is from a Canadian, who should
>talk considering Canada's marvelous space program, and that this is carried on
>U.S.-funded computers across the nation, and that this isn't a space
>newsgroup):
>
>Please do us all a big favor and send him email (see address above) urging him
>to cut it out.  Argue as strongly and persuasively as you can, since he is
>very opinionated and stubborn.
>
>For those who say that NASA sucks dead turkey gizzard:  I wouldn't argue
>very much with you about that so don't bother flaming me.  The merit (or
>demerit) of NASA isn't the issue.  Henry's unmitigated, undecorous,
>inappropriate, gratuitous, just plain rude gall is.
>
>FELLOW AMERICANS, DON'T SIT STILL FOR THIS!!!!
>
>(Don't bother flaming me BTW.  This is my first and last posting here on the
>topic.)
>--
>|------------Dan Levy------------|  Path: ihnp4,<most AT&T machines>!ttrdc!levy
>|              AT&T              |  Weinberg's Principle:  An expert is a
>|       Data Systems Group       |  person who avoids the small errors while
>|--------Skokie, Illinois--------|  sweeping on to the grand fallacy.

Dear Dan:

please blow it out your nose, or wherever. Henry's nationality is not at issue
here: attempting to make it an issue is reprehensible.
On the other hand, there's no reason why you shouldn't disagree with his
opinion...

Cheers, BBecker    Humber College    Etobicoke, Ont.

BitNet: BECKER@HUMBER
UUCP:   ...!ncrcan!ziebmef!becker!bdb

chad@anasaz.UUCP (Chad R. Larson) (05/27/88)

After I bought my "Operating Systems Design and Implementation" book,
I sent my $79.95 to Prentice-Hall for the diskettes.  After being
back-ordered for what seemed like a year, I got a set of 1.1 floppies.
(Guess I missed 1.0 altogether in the back-order crunch.)  Anyway, now
I see references to 1.2 and 1.3 in this news group.  I was under the
impression the rationale for Prentice-Hall doing commercial
distribution of the sources was so updates and bug fixes could be
disseminated, but I've had nary a communication from them.  Did I
inadvertently fall off their mailing list?  Are they, in fact,
distributing anything?  How do I get upgraded to 1.3 (or whatever)?
Inquiring minds want to know.
	-crl
---------------
"I read the news today, oh boy!"  --John Lennon
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| DCF, Inc.               | UUCP: ...noao!mcdsun!nud!anasaz!dcfinc!chad |
| 14623 North 49th Place  | Ma Bell: (602) 953-1392                     |
| Scottsdale, AZ 85254    | Loran: N-33deg37min20sec W-111deg58min26sec |
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|         Disclaimer: These ARE the opinions of my employer!            |
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

bunda@im4u.UUCP (John Bunda) (05/27/88)

> so far the total number of people expressing interest in having 1.3 run
> on a hard diskless system is 0. If there are any floppy fans out there, speak
> now or forever hold your peace.

I'm not a floppy fan by any means, but I would like to be reasonably sure
that my HD controller was supported before agreeing to this, or at least
know that I could hobble along until I hacked up support for it.  

Speaking of which, my WD-chipset-controller/ST-225 is still not working,
I presume because I have to apply some device driver fixes posted to
the archive (any clues as to which one(s) would be *greatly* appreciated :-).

In the insult-to-injury department, my diskette 6 (FS source) appears
to be a copy of diskette 8.  Anybody know of a quick painless way to
get a replacement?

/John
-- 
........................................................................
John Bunda     UT CS Dept.           Show me a perfectly good airplane,
bunda@im4u     Austin, Texas            and I won't jump out of it...

dutchyn@alberta.UUCP (Chris Dutchyn) (05/27/88)

In article <753@ast.cs.vu.nl>, ast@cs.vu.nl (Andy Tanenbaum) writes:
> P.S. Since I have to put some filler here to keep Pnews happy, I will mention
> that so far the total number of people expressing interest in having 1.3 run
> on a hard diskless system is 0.  If there are any floppy fans out there, speak
> now or forever hold your peace.

Unfortunately, floppy users still exist (not I wouldn't say I'm a fan, just
a little under-funded, that's all :-).  I currently run MINIX 1.2- (the -
because I still use the 1.1 cc binaries) on an IBM PC with an Amdek green
monitor, a CGA, 640K (384 on an AST SixPak+), a 1200 baud modem, and (yes,
you guessed it) two 360K floppies. Things don't work too poorly, because I
have made up special /usr and /user which contain only the "development"
utilities - cc, include files, lib, and general utilities like cat, rm,
lib{u}pack (I often use the copt posted a while back), etc.  Diskette
swapping is thus kept to a minimum.  I have even managed to port some of
the games and utilities from comp.sources, but the lack of a curses
package hurts.  Several things I have looked into include but haven't yet
finished include 1) Gnuchess (without -DDISPLAY or -DSUNTOOLS),
 		 2) a steam-based IO system (ala Bell Tech. Journal)
		 3) a graphics driver for my cga (thus probably entirely
			non portable)

Now that I've responded, could you reply to yet one more burning question,
and one not-quite-so burning question:
	1: (BURNING)  Will there be access to MINIX 1.3 binaries for cc
		via the net, or do we netlanders have to either
			a) buy the entire MINIX 1.3 distribution
			b) buy the sources for cc and make our own
	2: (NOT SO BURNING) In terms of a tty driver, does it make sense
		to recognize the inherent differences between a memory-
		mapped terminal (such as the console on a PC) and a serial-
		line based terminal?  If so, why not have 2 different
		tasks, one for each separate case, i think it might
		improve the quality and decrease the quantity of code.
		Besides, then memory-mapped graphics is more stright-forward
		to implement.

Well, having stirred you all up, I'll be going now, Ta Ta...

				Christopher Dutchyn

				(ihnp4!alberta!dutchyn)  (summer)
				(ihnp4!alberta!edm!neyessa!chrys) (permanent)

bobmon@iuvax.cs.indiana.edu (RAMontante) (05/28/88)

AST asks about floppiness for v1.3:

a) Surely you aren't proposing to distribute it on hard disks?

b) This long weekend I will attempt to put my v1.2 (sort-of) code on some
   partitions of my 30Meg RLL hd.  Based on my initial failures, I would
   really like to be able to fall back on my 360K floppies.

-bobmontante

p.s.  I know I saw a note or two about RLL a while ago, but any pointers
would be greatly appreciated.  Thanks in anticipation.

ncoverby@ndsuvax.UUCP (Glen Overby) (05/28/88)

In article <2792@im4u.UUCP> bunda@im4u.UUCP (John Bunda) writes:
>Speaking of which, my WD-chipset-controller/ST-225 is still not working,
>I presume because I have to apply some device driver fixes posted to
>the archive (any clues as to which one(s) would be *greatly* appreciated :-).

on listserv@ndsuvm1.bitnet the file you are looking for is named
 'kernel wdwini'.

>In the insult-to-injury department, my diskette 6 (FS source) appears
>to be a copy of diskette 8.  Anybody know of a quick painless way to
>get a replacement?

get one from a friend who got a good #8.  It's probably not 100% legal
but with the liberal copying policy, and the fact that you DID buy one,
you don't need to feel like you're riping somebody off. And we won't tell
on you :-)
-- 
Glen Overby
Bitnet:  ncoverby@ndsuvax
UUCP: {uunet, ihnp4!umn-cs}!ndsuvax!ncoverby

rde@eagle.ukc.ac.uk (R.D.Eager) (05/29/88)

While in principle I would expect that most people have hard disks, two
points are worth mentioning:

   a) Many MINIX users are probably hobbyists and students who can't
      afford hard disks.

   b) Given all the problems with nonstandard hard disks, a floppy
      based system at least allows hard disk systems to be developed
      for such beasts.
-- 
           Bob Eager
           rde@ukc.UUCP
           ...!mcvax!ukc!rde
           Phone: +44 227 764000 ext 7589

bunda@cs.utexas.edu (John Bunda) (05/31/88)

In article <962@ndsuvax.UUCP>, ncoverby@ndsuvax.UUCP (Glen Overby) writes:
> In article <2792@im4u.UUCP> bunda@im4u.UUCP (John Bunda) writes:

> >to be a copy of diskette 8.  Anybody know of a quick painless way to
> >get a replacement?
> 
> get one from a friend who got a good #8.  It's probably not 100% legal
> but with the liberal copying policy, and the fact that you DID buy one,
> you don't need to feel like you're riping somebody off. And we won't tell
> on you :-)

Actually, it's diskette #6 I need.  And my message was a sly and subtle
plea for exactly what you suggest - I was hoping for a more or less
local kind soul with 1.2 to respond with email :-) (hint! hint!
anybody in Austin have 1.2?)

/John





-- 
................................................................
John Bunda            UT CS Dept.      The proof is trivial, and
bunda@cs.utexas.edu   Austin, Texas    left as an exercise.

brb@akgua.ATT.COM (Brian R. Bainter) (05/31/88)

From article <9202@iuvax.cs.indiana.edu>, by bobmon@iuvax.cs.indiana.edu (RAMontante):
> b) This long weekend I will attempt to put my v1.2 (sort-of) code on some
>    partitions of my 30Meg RLL hd.  Based on my initial failures, I would
>    really like to be able to fall back on my 360K floppies.
> -bobmontante
> p.s.  I know I saw a note or two about RLL a while ago, but any pointers
> would be greatly appreciated.  Thanks in anticipation.

I have successfully put MINIX on my 30M RLL hard disk. It works great! The only
problem that I encountered was that I had to change the sectors per track info
and such in the wini driver. I don't know if there are any problems other than
this on 1.2. My mods were made on 1.1. You will also have to change fsck.c to
reflect the same kind of changes.

      Have fun!
       Brian R. Bainter

chad@anasaz.UUCP (Chad R. Larson) (06/05/88)

In article <753@ast.cs.vu.nl>, ast@cs.vu.nl (Andy Tanenbaum) writes:
> P.S. Since I have to put some filler here to keep Pnews happy, I will mention
> that so far the total number of people expressing interest in having 1.3 run
> on a hard diskless system is 0.  If there are any floppy fans out there, speak
> now or forever hold your peace.

Part of my interest in Minix is the ability to run a multi-tasking
system on a lap-top.  You get 2 720k floppies (usually) which can
build a nice Minix, but hard disk portables are expensive,
(somewhat)fragile and power hawgs.  Please leave it possible to build a
floppy only system.
---------------
"I read the news today, oh boy!"  --John Lennon
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
| DCF, Inc.               | UUCP: ...noao!mcdsun!nud!anasaz!dcfinc!chad |
| 14623 North 49th Place  | Ma Bell: (602) 953-1392                     |
| Scottsdale, AZ 85254    | Loran: N-33deg37min20sec W-111deg58min26sec |
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|         Disclaimer: These ARE the opinions of my employer!            |
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=