NOTE::: this file is not an "official" part of the MiNT distribution,
and need not be included with either source or binary versions of MiNT.
(You can do so if you like, of course.)


version 0.1:

first version released to some alpha testers


version 0.2:

added docs/changes
added pipes; moved process pseudo-drive from 'Q' to 'X', and
	made 'Q' the FIFO pseudo-drive
added the f_pipe call
added the s_yield call
made p_wait, file_instat, file_outstat, file_getchar, and file_putchar
	callable by the user, and improved the error handling of
	the file_* calls to reflect this
added a warning to the message printed on start-up


version 0.3:

biosfs.c: added NUL: device
various places: cleaned up the use of FATAL/HALT, and made the HALT message
	more explanatory.
bios.c: put a lower limit of 0 on debug_level.
pipefs.c: generalized fifo's to allow bidirectional IPC, added pseudo-tty
	code
dosdir.c: fixed bug in dfree that caused the wrong drive to be used
main.c: if "init.prg" is not found in the current directory, it's
	searched for in \auto
main.c,debug.c: changed so MiNT always runs in supervisor mode,
	so that abnormal termination can be done more cleanly (we can
	put the stack back to what TOS wants)
proc.h, context.s, dosmem.c:
	added a "term_vec" field to the context structure, so each
	process can intercept Pterm() calls with the GEMDOS
	process termination vector (located at 0x408)
procfs.c:
	changed so processes waiting on I/O are called "IOBOUND"
	instead of "SUSPENDED" ("SUSPENDED" is 1 too many characters)
tosfs.c:
	changed to make paths in "chdir" upper case
various places:
	made file pointer returned by Fcreate have mode O_RDWR, instead
	of O_WRONLY (thanks, leo)
mem.c:
	made initial process dta point at the command line (TOS apparently
	does this, although I don't think it's guaranteed)
dos.c,proc.c:
	added support for setting process priorities; for now, though, this
	doesn't work very well, since processes poll the BIOS devices
	so that a high-priority foreground job will hog the processor,
	even though it's just waiting for a key press
xlate.c,xlate32.s:
	new files to support compilers with sizeof(int) == 4. (Lots of changes
	were made in other files, too, to remove assumptions about sizeof(int)).
	this has not been tested extensively, but a version compiled with
	the GCC and 32 bit integers runs and seems to be OK
dos.c:
	added routines for getting/setting process i.d.'s and groups (none
	of this has any effect, yet)
main.c:
	added support for the cookie jar. The 'MiNT' cookie gives the
	version of MiNT currently running, and provides a convenient way
	for us to check for multiple invocations of MiNT, as well as being
	useful to the user. Thanks, Atari.
proc.c:
	update GEMDOS basepage pointer when contexts are switched, so
	programs that expect this to be accurate (e.g. TSR's) will work
	under MiNT
dosfile.c:
	new call, Fcntl, to support file locking and ioctl() calls
main.c, proc.h, context.s, syscall.s:
	added new functions, enter_kernel() and leave_kernel(), to take
	care of setting up and restoring vectors and system variables.
	this should eliminate problems with running TSR's that change
	the DOS vectors, as well as providing a more consistent
	interface for future expansion
signal.c, dossig.c:
	new funtions for dealing with signals. for now, signals are
	very primitive and can't be caught
procfs.c:
	changed so that unlink() sends a SIGTERM signal to a process
dos.c:
	made setpgrp() call more BSD-like


version 0.4:

bios.c:
	added a check for device ready in bconout() (this should improve
	response when background programs are printing)
pipefs.c:
	cleaned up some of the checks a bit
proc.c,mem.c,dosmem.c:
	separate out various exec() functions to clean things up, and to
	allow for vfork() call
dosmem.c:
	add Pexec(200,...) code; this variant of Pexec overlays the process'
	memory with new code and data loaded from a file; it's designed to
	be used in emulating Unix's exec() calls.
various places:
	instead of calling Pterm() directly when ^C is encountered, or
	on a broken pipe, raise the appropriate signal
signal.c,syscall.s:
	allow for user signal handling routines. Alas, the metaphor is
	most closely that of V7 rather than BSD; although signal
	blocking is provided for, it isn't done automatically.
various places:
	modified to allow compilation under Sozobon C (it doesn't run,
	but I have the buggy version of "as", so that's not surprising)
file.h:
	changed the various O_* flags to match the GCC and Sozobon
	library defaults
dos.c:
	added getgid() and setgid() calls
dossig.c:
	added sigsetmask() and sigblock(), and allowed for SIG_HOLD
	(a la SYSV)
dosmem.c:
	changed so that the p_parent field in a child's basepage is
	set to NULL. This allows programs compiled with dLibs to
	function under MiNT; if p_parent is non-zero, they try
	to poke around in the parent's address space, and fail
	with a bus error (MiNT doesn't store registers in the basepage).
dosfile.c,pipefs.c:
	changed so that FIFOs don't automatically return EOF when
	no processes are listening to them; to get this behavior,
	the "hidden" bit must be set when the FIFO is created.
*fs.c, dosfile.c:
	changed so dosfile.c always calls "f->fs->close" when closing a
	file, even if f->links > 0. This allows more reliable detection
	of broken pipes.


version 0.5

signal.c:
	fixed so that programs can't catch SIGKILL through the DOS
	terminate vector (COMMAND.TOS was stubbornly surviving every
	attempt I made at killing it off)
signal.c:
	fixed so dead processes (ZOMBIE or TSR) don't get sent signals.
bios.c,biosfs.c:
	changed so that CON: and BIOS handle 2 always mean the same
	thing; they refer to the control terminal. A new device
	(PHY:) and a new BIOS handle (currently 6, but don't count on this!)
	have been added to refer to the physical console.
pipefs.c:
	fixed a bug that caused message queues not to be deleted when
	the last process closed them
syscall.s, main.c, bios.c:
	caught XBIOS calls (for now, they're all passed through, but maybe
	someday we'll want to change this)
syscall.s:
	new feature: function -1 for any of the GEMDOS, BIOS, or XBIOS
	traps returns the address of the function table for that trap,
	so users can easily patch into system calls to add functionality
context.s:
	changed so that build_context doesn't use register A2; believe
	it or not, at least one program (KLONDIKE.PRG) expects this
	register to be passed through unchanged to a routines called
	via Supexec().
biosfs.c:
	added V:\MOUSE mouse driver, for easier porting of Unix window
	systems (e.g. MGR or maybe even X someday)
pipefs.c:
	sped up the pipe i/o routines a bit
proc.h:
	re-arranged so that fields that may be of interest to the user
	appear at the beginning of the process structure. also added
	a few new fields for future expansion
dos.c:
	new call, Pusrval(), to set the user value field in the process
	structure
procfs.c:
	extensive changes to implement process names; Pexec'd processes
	start off with a name representing the file they were exec'd
	from, and this name may be changed by the Frename() system call.
dos.c:
	added support for process domains
tty.c:
	added new code to allow ioctl() calls on terminals, and to change
	the behaviour of Fread() and Fwrite() calls (only if the process
	is executing in the MiNT domain)
main.c:
	cleaned up exit code in the case that MiNT is already active
signal.c:
	AT LAST! BSD style "safe" signals. Signals are automatically masked
	while signal handlers are executing, and on their return the kernel
	continues where it left off; no more of this silly EINTR stuff!
biosfs.c:
	added devices FD0, FD1, FD2 for stdin, stdout, and stderr respectively
util.c:
	corrected mstime() so that process times really do start from
	Jan. 1, 1980
intr.s:
	changed reset handling code in an attempt to correct hangups on
	reset
file.h:
	changed defs for F_* fcntl modes to agree with GCC library
dossig.c:
	correct Pkill so that Pkill(0, sig) sends "sig" to the everyone
	in the current process' process group
biosfs.c, pipefs.c:
	added job control functionality
dosmem.c:
	fixed vfork()/Pexec() so that parent is not likely to be woken
	up by signals or by the wrong process exiting
dosmem.c:
	added fork() call; for now it's just like vfork (parent blocks)
	except that a copy of the parent's memory is made, and restored
	when it wakes up
	also: added pwait3(), a more flexible way of waiting for processes

================= Released for FTP as beta test version ==================

version 0.6

bios.c, proc.c, biosfs.c:
	added code to check for CTRL-ALT-key combinations on every
	process switch; thus, debugging, rebooting, etc. do not require
	waiting for a read from the keyboard. Also, ^C sends a SIGINT
	immediately, and ^Z (SIGTSTP) and ^\ (SIGQUIT) take effect
	right away, too.
	CTRL-ALT-DEL supported for TOS <1.4

biosfs.c:
	added a fake "third button" on the mouse (you get it by holding down
	a shift key and a mouse button)
	made mouse_read return at least 1 byte
signal.c:
	changed so stopped processes always have a return code of 0177
dosfile.c:
	added new call, f_select
dos.c:
	added new calls to get resource usage, and set resource limits
bios.c, console.c:
	changed return values of status calls from 1 to -1, to be TOS
	compatible
biosfs.c, pipefs.c, filesys.c, util.c:
	added case-insensitive string comparison routine, and modified the
	file systems to use it
intr.s:
	fixed the Psigreturn race condition bug
dosmem.c:
	made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP
signal.c:
	revamped signal handling so that Psigreturn() no longer needs an
	argument.
proc.c:
	added some sanity checks for things like stack overflow
bios.c, tty.c, pipefs.c:
	added real tty structures that programs can manipulate
dos.c:
	added Talarm() and Pause() system calls
