File:  [Atari MiNT] / MiNT / changes
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:56:13 2018 UTC (3 years, 7 months ago) by root
Branches: mint, MAIN
CVS tags: mint104, HEAD
MiNT 1.04

Changes are listed in *reverse* order, most recent changes being

first.



version 1.04



bios.c:

	Changed the way timeout worked for Bconout() stuff.

proc.h:

	Increased the number of Fsfirst searches that can happen

	simultaneously to 10 from 6 (this is a per-process

	limit, not system wide).



version 1.03



xbios.c: ++entropy@terminator.rs.itd.umich.edu

	In old versions of TOS

dos.c:

	Changed Psetpgrp so that passing a pgrp of -1 makes it into

	an inquiry call.

filesys.c: ++Martin_Koehling@un.maus.de

	Fixed a bug in Flock (regions were being locked 1 byte too far).

mem.h:

	Changed the memory allocation quantum to 256 bytes, so that

	Srealloc will always work right on ST's.



version 1.02



main.c:

	Run any AUTO folder programs appearing after MINTNP.PRG

	as well as just plain MINT.PRG.

syscall.spp:

	Pop more stuff off the stack in sig_return, since we

	did push more onto it in handle_sig. (It really shouldn't

	matter, restore_context will restore the stack pointer

	anyway, but better safe than sorry.)

filesys.c,mem.c:

	Made the open file associated with shared text memory

	regions be closed automatically when a media change occurs.

xbios.c:

	Changed the do_usrcall function into an assembly language

	routine which preserves all registers. Apparently some

	programs rely on being able to pass parameters to Supexec

	in registers. We only used to kill register A0, which was

	reserved for BIOS use anyway, but obviously some programmers

	choose not to read the f'ing manual.

dosdir.c: ++entropy@terminator.rs.itd.umich.edu

	Fixed a typo (PATH_MAX where ERANGE should have been).

biosfs.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Check control keys on every newline, so users get quick response

	to their key hits.

tty.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Fixed a typo (t_startc is the character to use to resume terminal

	output, not t_stopc!)

dosdir.c,dosmem.c,filesys.c,tosfs.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Fixed many dup_cookie and release_cookie bugs; the code should be much

	more usable now.

main.c:

	Corrected a flaw in the 68030 only version -- it assumed that

	68030 was synonymous with memory protection. Also: set

	mcpu correctly.

main.c:

	Checked to see if we're called "MINTNP.PRG"; if so, turn off

	memory protection automatically. Commented out the code

	for automatically turning MP off on 1 meg machines.



version 1.01



main.c,intr.spp:

	Use init_tail for the temporary stack (saves us 128 bytes of bss,

	oh boy).

main.c:

	If less than 1 megabyte is free, turn off memory protection

	automatically.

mem.h:

	If there's no memory protection, do all ROUNDing etc. to

	16 byte boundaries rather than 8K page boundaries.

mem.c:

	Added a check for the ability to move screen RAM; evidently

	some boards use ST RAM but still don't allow Setscreen()

	to work.

all over the place: ++julian@math.uni-muenster.de

	Cleaned up the code for PureC compatibility.

all over the place: ++akiernan@cix.compulink.co.uk

	Cleaned up the code for Lattice compatibility.

fasttext.c: ++hyc@hanauma.jpl.nasa.gov

	Sped up by special casing some of the gotoxy() calls, and

	also allowed 8 pixel high characters in monochrome mode.

dosdir.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Allow Frename() to succeed on symbolic links.

signal.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Save processor context stuf in the reserved BIOS area even for

	bus errors with memory protection on.

dosfile.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Initialize the exception file descriptors to 0, in anticipation

	of future use of this Fselect feature.

dosfile.c: ++schwab@lamothe.informatik.uni-dortmund.de

	Allow pipes to be opened and written to with O_APPEND mode.

version.h:

	Got rid of the PATCHLEVEL define. Now that I've finally

	checked everything into RCS, it's much easier to just bump

	up the version numbers on each release.



version 1.00



welcome.c,version.h:

	Sigh. This is MultiTOS 1.0's MiNT, so even though I don't

	consider it "finished", I'm changing the version number to

	1.0. At least it's no worse than TOS 1.0 :-).

memprot.c:

	We want to flush the ATC cache, *not* the CPU cache. Thanks

	for pointing this out, Alex.

bios.c:

	Fixed a problem with Speedo GDOS; if the printer's buffer was

	full, Bconout(2,...) would do a context switch, which is not

	a good thing for Speedo.



version 0.99



PATCHLEVEL 2::



main.c:

	Big bug fix -- the do_exec_os routine was being called with a

	basepage that occupied all of memory, so that the Pexec(200) it

	did was failing due to insufficient memory. Now we Mshrink the

	basepage; this also necessitates fixing up the stack pointer.

main.c:

	Handle mint.cnf files that don't end in a carriage return/line feed

	combination.

filesys.c:

	New path parsing code to correct a bug in the way symbolic

	links were being handled on loadable file systems.



PATCHLEVEL 1::



debug.c:

	Made the default debugging level give ALERT messages.

dosfile.c:

	Corrected a bug in the way global file handles are closed.



PATCHLEVEL 0::



dosmem.c:

	Made it so that overlay Pexec modes (e.g. 200) set up

	the basepage to preserve the same "parent".

main.c:

	Added in a kludge so that if we're starting GEM from a file

	(e.g. gem.sys) then we do it via the exec_os vector. I hope

	this makes the Codeheads happy :-).

dosmem.c,tty.c:

	Backed out entropy's and schwab's changes. Random programs

	were getting stopped under MultiTOS because of them; I can't

	find the cause, so let's go back to something that worked

	(if suboptimally).

main.c:

	Fixed a silly initialization error: we should not

	assume a default language, we should get it from

	the ROMs.

dosdir.c: ++julian@math.uni-muenster.de

	Extended Dlock: if bit 1 of the mode is set, then the

	process id of the process using the drive is returned

	instead of ELOCKED or EACCDN; this allows for more

	informative error messages.

welcome.c:

	Updated the copyright notice.



version 0.98



PATCHLEVEL 4::



dosmem.c,tty.c: ++entropy@gnu.ai.mit.edu

	Corrected some silliness in the job control code.



PATCHLEVEL 3::



xbios.c:

	Took out the ONLY030 optimization; it didn't work correctly

	(I can't see any reason why it shouldn't have worked, but

	it didn't; perhaps a compiler bug bit us?)



PATCHLEVEL 2::



main.c:

	Changed magic shift key to LEFT shift key.

filesys.c:

	Make loaded .XFS files go into supervisor accessible

	memory.

welcome.c,main.c:

	Ask user in her own language whether or not to boot if the

	kernel is a MultiTOS one and she held down the shift key.

filesys.c:

	Relax O_COMPAT mode opens somewhat so that any

	number of processes can open the file for reading,

	as long as no more than 1 has it open for writing.

	ALSO: make sure O_EXEC gets treated the same as O_RDONLY.

dosfile.c:

	Change TRACE() to TRACELOW() on Fread and Fwrite.

tosfs.c:

	Went back to old method of doing tosfs.c; this is

	better tested and safer.

dos.c:

	New system call, Salert(msg), for doing an alert message.

debug.c:

	Terminate messages written to the alert pipe with a 0.

	Also: pour them into alert boxes so that programs like

	sysalert don't have so much to do.



PATCHLEVEL 1::



fasttext.c: ++shenson

	Corrected the quote_putch function.

dosdir.c:

	Allow Dfree(n) to work if "n" is a big number (e.g. BIOSDRV)

	and the corresponding pseudo-drive is a current or root directory

	of the current process.

pipefs.c: ++schwab@ls5.informatik.uni-dortmund.de

	Return a new error number, EPIPE, for writes to broken pipes.

tty.c: ++schwab@ls5.informatik.uni-dortmund.de

	If a tty loses its owner, the next process to do i/o to it

	will become the owner.

dosfile.c: ++schwab@ls5.informatik.uni-dortmund.de

	FA_RDONLY doesn't mean "read only" on the process file system,

	so allow such processes to be opened for writing.



PATCHLEVEL 0::



xbios.c:

	Fixed Supexec to pass the function pointer on the stack, too

	(just as TOS does). This is still undocumented behaviour,

	so you rely on it at your own risk.

xbios.c: ++entropy@gnu.ai.mit.edu

	Applied a fix for Rsconf() with TOS 1.04, and made the

	old TOS Rsconf stuff #ifndef ONLY030.

proc.c,dosmem.c:

	Wrap all calls to add_q/rm_q in spl7(), so that the

	wakeselect() function truly can be called from

	interrupt code.

makefile,*.spp:

	Make provisions for compiling an 030/040 only version

	of MiNT; this should be faster and smaller than the

	generic version.

version.h:

	The file system interface changes warrant a new version

	number, so here it is.



version 0.97



PATCHLEVEL 3::



dosdir.c,proc.c:

	Keep a chain of open directories, so that if a program

	terminates without calling closedir() we can still clean

	up after it. Also: allocate directory structures from

	kernel memory rather than user memory, so that we don't

	take an 8K hit on each one. PROBLEM: a bug in the mntlib

	readdir() function causes bus errors if memory protection

	is on. This is a library bug that needs to be fixed

	real soon now.

dosmem.c:

	TSRs now get forced into global memory if they were running

	privately; this should make things easier for users who

	forgot to change prgflags on their TSR programs.

filesys.c:

	New meaning for O_COMPAT mode: deny write access to all other

	processes.

tosfs.c:

	Added a define to turn on/off the RO_FASCISM code. Personally,

	I think it should always be on.

dosdir.c,filesys.c,file.h,*fs.c:

	New file system functions, release() and dupcookie(), so that

	the kernel can inform file systems when it is finished

	with a file cookie; networked file systems will be very

	happy about this.



PATCHLEVEL 2::



procfs.c:

	Moved the memory protection checks for proc_read and

	proc_write to a separate function in memprot.c.

dosfile.c:

	Remove the old compatibility code for Fcntl(F_SETFL,...).

	(Actually, it's commented out, so we can put it back in

	if we need to.)

signal.c:

	Change default behaviour for SIGFPE (which is raised

	by division by 0) to "ignore", same as TOS.

dosdir.c:

	Made Dgetcwd() use the new size parameter, so that it

	works as advertised.

file.h, *fs.c:

	Provide a "size" parameter for the getname() file system

	function, so that we can do Dgetpath() of arbitrary length

	paths.

util.c:

	BIG_MEM_DUMP is a nasty thing for users to get;

	so we shouldn't do it on all failed mallocs!



PATCHLEVEL 1::



proc.c:

	Plugged a memory leak (dispose_proc was failing to

	free the process table memory, because fork_proc

	was zeroing that field in the PROC structure).

main.c:

	Fixed MAXMEM= (it was setting the maximum CPU time,

	not the maximum memory -- I thought I tested this!)



PATCHLEVEL 0::



main.c:

	Added MAXMEM= and SLICES= variables for mint.cnf.

bios.c:

	Fixed Setexc so that if the new vector is in a global

	region, the region is re-marked to be super.

dosmem.c:

	Fixed a race condition with memory protection and

	Pexec(100,...) (if the new process exited early,

	the old process might still try to access it).

realloc.c:

	New file, for doing the Srealloc system call (for

	Falcon TOS).

*.*:

	Merged in Allan's memory protection and debugging

	code. New files: memprot.c, nalloc2.c, welcome.c.



version 0.96



PATCHLEVEL 14::



tosfs.c:

	Aaargh! Just after cutting this patch I discovered

	that I had the test backwards.



PATCHLEVEL 13::



tosfs.c:

	Changed so that Fsfirst()/Fsnext() always return

	upper case, regardless of domain. (MiNT aware

	programs should use the new directory functions.)

dosdir.c: ++akiernan

	Got rid of the special hack for drive x:, since

	drive x: no longer exists.

asm.y: ++akiernan

	Cleaned up a bit.

*.c: ++julian

	Some minor patches for PureC.

dosdir.c: ++julian

	New system call, Dgetcwd(), with a 'size' parameter;

	this doesn't do anything different from Dgetpath

	now, but it's there for future expansion.



PATCHLEVEL 12::



version.h:

	Update the patchlevel correctly.

pipefs.c,dosfile.c:

	Keep the Unix style semantics for pipes created with

	Fpipe, but not for other fifo's (which by default will

	continue to read the number of bytes requested).



PATCHLEVEL 11::



tty.c:	++schwab

	Support word-erase and quote-next-char.

fasttext.c: ++schwab

	support fgcol/bgcol

	(screen_ioctl): tty_ioctl is now called by parent by default if

	EINVFN

signal.c (check_sigs): ++schwab

	Use an int to index signals, not a long

biosfs.c (bios_getxattr): ++schwab

	u:\dev\stdin, etc., get the attributes of

	the associated files

dos.c (p_setuid, p_setgid): ++schwab

	Allow setting to the current real [gu]id

bios.c (checkkeys): ++schwab@ls5.informatik.uni-dortmund.de

	Keys read by do_func_key should not be

	interpreted (esp. UNDO -> SIGQUIT). also recheck shift status

	since do_func_key may take some time

xbios.c: ++entropy@gnu.ai.mit.edu

	Added code to support old (tos < 1.4) Rsconf()

	semantics.

mem.c:

	Changed so that attempts to execute a shared text program

	which has data/bss references in the text segment will

	get an ENOEXEC error instead of ENSMEM.

*.c: ++julian@math.uni-muenster.de

	Applied Julian's purec patches.



PATCHLEVEL 10::



pipefs.c:

	Changed so that read() on a pipe will return as

	soon as some data is available; this is how

	all Unixes work.

*.c:

	Applied Julian's patches to allow compilation with

	PureC.

main.c:

	New variable, MAXMEM=, for setting maximum memory

	size (in K).

main.c:

	Removed PSEUDODRIVES= command, since "alias" has

	replaced it.

util.c:

	Changed atoi to atol; it's more generally useful.

asmtrans:

	Applied Howard's patches; in particular, made %ifdef

	apply to other commands (like %define) as well as to

	code generation.

	

PATCHLEVEL 9::



asmtrans:

	Cleaned up a bit more for cross-compilation.

intr.spp:

	in_kernel can be set while the process is in user mode

	(if the critical error handler calls GEM)

syscall.spp:

	Get rid of some more magic numbers.

bios.c:

	While fixing the mtt bug, a new bug was introduced. So,

	let's try again :-).



PATCHLEVEL 8::



bios.c:

	Fixed a particularly silly bug in bios.c: in do_bconin(),

	r was being returned without being initialized. Why didn't

	gcc catch this?

*.c:

	Applied Alex's patches for Lattice, and Julian's patches for

	Pure C.

signal.c:

	Kill programs with p_term() instead of terminate() (except for

	signal SIGKILL) so as to allow them a chance to clean up via

	the term_vec vector.

shmfs.c:

	Allow Fattrib() call to change the read-only

	bit. Made Fxattr() return the correct mode

	for shared memory files.

main.c, fasttext.c:

	Allowed HARDSCROLL=AUTO to set the number of

	lines of scrolling to the current screen size.

syscall.spp, inline.h:

	New functions, callout2() and callout1(), with

	less overhead; used by bios.c to call the

	Bconxxx functions.

bios.c:

	Changed calls to Bconxxx functions into

	jumps through the defined vector table in

	low memory, when this is possible (TOS 1.0

	doesn't have the table).

asmtrans, *.spp:

	Added %ifdef, %else, and %endif commands (for

	future expansion). Removed the requirement that

	macros to be expanded be delimited by % signs,

	and cleaned up the definitions. Changed

	"SECTION FOO" to "FOO". Added -purec compilation

	option.

filesys.c:

	Fixed a bug in changedrv (there was no

	check to see if "d" was a BIOS drive before

	aliasdrv[d] was tested).



PATCHLEVEL 7::



biosfs.c,fasttext.c:

	Fixed incorrect code that assumed TCURSON

	was 0.

makefile:

	Fixed Makefile to work with older versions

	of gmake, as well as generic make programs.



PATCHLEVEL 6::



*.s:

	Radical overhaul of how assembly language is

	handled. We now provide 2 utility programs,

	"genmagic" (for producing symbolic names for

	various offsets into structures) and "asmtrans"

	(for processing .spp files, replacing macros

	defined by "genmagic" and optionally translating

	Motorola to MIT syntax). Now we only have to

	maintain the .spp files; the Lattice and gcc

	versions of the .s files are generated automatically,

	and as a side benefit we can get rid of magic

	numbers in the .s files and be sure that if we

	change proc.h, the assembly language will be

	updated properly.

main.c,filesys.c,file.h:

	Added a new command to mint.cnf, "alias", to

	enable aliases for pseudo (and other) drives

	to be created. Also, deleted drives q:, v:, and

	x:. Programs should no longer be using these;

	if they are, users can put things like

	"alias q: u:\pipe" into mint.cnf.

file.h:

	Fixed the definitions for TCURSON and TCURSOFF.

console.c:

	Moved the handle checks in file_* functions into

	separate functions, since for example we *know*

	that handle 0 falls within the legal range; this

	should remove a bit of overhead on BIOS and

	single character GEMDOS I/O.

main.c:

	Got rid of the zeroexit() code; since we now

	allow the whole boot process to be aborted by

	right shift.

pipefs.c:

	Allow Cursconf() to work on TOSWIN pipes.

mem.c:

	Check the date and time of shared text regions

	before re-using them.

bios.c,syscall.s:

	Changed the trap #13 entry point to allow quick

	evaluation of BIOS functions that don't need

	the full context save/restore done.

everywhere:

	Macro-ize TRACE and DEBUG so that it's possible

	to produce a smaller version of MiNT without

	them.

biosfs.c:

	Don't check for keyboard presses after every

	BIOS write, it's too time consuming.



PATCHLEVEL 5::



mem.c:

	Another bug: we shouldn't do the dLibs Pexec

	hack on the first process we start up, because

	it means messing with the MiNT basepage (which

	is not ours to mess with, it's TOS's).

main.c:

	Fixed bug in enter_kernel (rootproc->base is no

	longer necessarily MiNT's basepage).

various places:

	Tried to remove gcc warnings about constant

	expression overflow.

syscall.s:

	Applied Alex's patch to allow trace mode to work

	with non-MiNT debuggers.

various places:

	Applied Alex's patches to get rid of Lattice warnings

	about unneeded assignments.

mem.c:

	Added extra traces to exec_region() in an effort to

	track down the mysterious crash problems that others

	have had.



PATCHLEVEL 4::



dosmem.c:

	Made do_vfork not bother to save shared text regions.

bios.c:

	Made Rwabs respect Dlock.

tosfs.c:

	Made the TOS media change routines lazier (actual

	disk access is deferred until the disk is next

	needed).

main.c:

	Applied Alex's patches for setenv.

everywhere:

	Applied Julian's patches for Pure/Turbo C. The

	resulting kernel doesn't actually work yet, but

	at least we don't get so many error messages when

	compiling. (Who needs lint when you have three

	fussy ANSI compilers?)

mint.h:

	Oops; we should have had #include "inline.h" here.

inline.h:

	Applied jrb's GCC patches, and Alex's Lattice patches.



PATCHLEVEL 3::



bios.c:

	Some optimizations in bflush(). I tried something like

	this before, but messed up the terminal output modes.

	Let's hope I got it right this time. Also:

	removed some dependencies on sizeof(int).

makefile:

	Tried -O2 instead of -O. It seems to work, so let's

	leave it on for now.

inline.h:

	New file to keep short, inlined versions of frequently

	called functions.

intr.s:

	Check the floppy disk locking flag before doing a

	pre-emption. Not really necessary now, but it doesn't

	hurt to be careful.

dosfile.c,*fs.c:

	Applied Alex's F_SETLKW patches. If Alex isn't careful,

	he's going to make MiNT Posix compliant on us :-).

dosmem.c:

	Applied Alex's patches to add a Pwaitpid system call.

main.c:

	If running from the AUTO folder, adjust the basepage

	chains so that MiNT is invisible to programs that

	(incorrectly!) make assumptions about basepages.

proc.c:

	Some optimizations in do_wakeup.

filesys.c:

	Don't call (*fs->dskchng)() twice when a disk

	change is detected.

main.c:

	Make sure the _resvalid system variable has the

	correct magic number in it for indicating that

	we want to catch the reset.



PATCHLEVEL 2::



dosdir.c:

	Really forbid deleting other process' current

	directories (the actual "return EACCDN" was missing!)

proc.c:

	Inlined the check_time() function, and re-arranged

	do_wakeup_things a bit to be more efficient.

syscall.s:

	Streamlined a bit; things are now kept in registers

	where possible.

filesys.c:

	When loading file systems at startup time, don't

	check the \MINT directory if that's the current one.

filesys.c:

	After a media change, instead of throwing away all

	handles that pointed to the changed drive, make

	them point to /dev/null instead, so that they

	won't be re-used until the user explicitly closes

	them.

dosdir.c:

	Allow Dlock() to succeed even if there is an

	unfinished Fsfirst/Fsnext sequence on the drive.

mem.c:

	Allow relocations outside of the program load area;

	apparently, some programs actually need these.

mem.c:

	Insert some sanity checks on memory addresses.

signal.c:

	Restart check_sigs if the process stopped because of

	a signal, since the parent may reset the set of

	pending signals.

cpu.s:

	New file from Alex, to control caching &c.

various places:

	More debugging patches from Alex, to make attaching

	to existing processes work correctly.



PATCHLEVEL 1::



various places:

	Cleaned up the debugging stuff a bit. For example, if a

	process does PTRACESFLAGS on itself, it's the same

	as if the parent did; also, if the process does a

	Pexec with overlay (i.e. Unix exec()) then it stops

	before its first instruction. This makes emulating

	the Unix ptrace() system call much easier.



PATCHLEVEL 0::



biosfs.c:

	Changed Fcntl TIOCISPEED/TIOCOSPEED to return the

	next lowest legal baud rate if an illegal one is

	specified.

filesys.c:

	Fix a bug that would cause an infinite loop if a

	bad .XFS format is encountered.

mem.c,mem.h,dosmem.c:

	Implemented shared text; if the appropriate bit

	(for now, 0x800) in the program header is set, then

	the loader will set up a shared text region for

	the program, and subsequent executions of it will

	run out of the same text segment. Note that this

	does require appropriate compiler support!

filesys.c:

	Fixed bug in the way directory searches are closed

	after a media change.

biosfs.c,intr.s:

	Applied Julian's third mouse button patch for

	/dev/mouse.

*.s:

	Applied Alex's debugging patches. Also: wrote a

	Motorola->MIT syntax converter, so that we only

	have to maintain the stuff in the "asm" directory.

signal.c,proc.h,procfs.c,etc.:

	Applied Alex's debugging patches, with a few

	slight modifications.



version 0.95



PATCHLEVEL14::





filesys.c:

	Check for the existence of the \MINT directory before

	trying to load .XFS files from there.



--- patchlevel 13 released to the public ---



PATCHLEVEL13::



proto.h,filesys.c:

	Added Alex's patches for Lattice.



PATCHLEVEL12::



dosdir.c:

	Fsnext() on symbolic links was broken, because

	relpath2cookie no longer checks drive letters

	unless "depth" is > 0. Fixed this. (why did

	we change relpath2cookie that way?? this is

	changed back in 0.99pl2)

main.c,filesys.c:

	Added support for putting the mint.cnf file

	and any *.XFS files into the directory \mint.

dos.c:

	Added Pgeteuid() and Pgetegid() system calls.

main.c:

	Fixed the "set current directory" code to

	work properly.

main.c:

	Added a sanity check; if GEM is already running,

	don't try to run it again.

procfs.c:

	Added FIONWRITE and FIONREAD ioctl calls.

proc.c,bios.c:

	Fixed the type of the critical error handler.

dosfile.c,file.h,proc.c:

	Added Alex's patches for O_APPEND and O_NOINHERIT.

shmfs.c:

	Fixed lseek() on shared memory segments, and added

	FIONWRITE and FIONREAD ioctl calls.

fasttext.c:

	Tried once again to tame the wild cursor.

dosmem.c,proc.c:

	Modified process startup code so that PROC structures are no

	longer kept forever by the kernel (which should help alleviate

	memory fragmentation problems a bit).



PATCHLEVEL11::



dosmem.c:

	Applied Alex Kiernan's SIGTRAP bug fix (and kicked myself for

	forgetting C's precedence rules; thanks, Alex!).

filesys.c:

	Fixed relpath2cookie so that names like "C:\Z:" aren't

	interpreted as referring to drive Z:.

fasttext.c:

	Restored the "turn on cursor when opening()" code, because

	without it the fasttext driver and BIOS aren't in sync.

main.c:

	Moved the check for the presence of an already existing MiNT

	cookie to earlier in the initialization process, so that

	the error message can be printed properly.

shmfs.c:

	Fixed Dpathconf() on U:\SHM (filenames are truncated automatically

	on that file system) and corrected the comment there.

syscall.s:

	New function, call_aes, used to check for the presence of GEM

	(so we can tell whether or not we're running from the AUTO folder).

main.c:

	Run any programs which come after mint.prg in the AUTO

	folder.

version.h:

	Changed so that the patchlevel is always printed on boot-up.



PATCHLEVEL10::



unifs.c:

	Add U:\SHM as an interface for shared memory.

shmfs.c:

	New file system for doing shared memory.

xbios.c:

	Fixed Bconmap() to always return an error if the underlying

	TOS doesn't support Bconmap.

main.c:

	Fixed a bug in the argument parsing code for the "exec"

	command in mint.cnf.

dosdir.c:

	Changed Dlock() to return ELOCKED if an attempt is made to

	lock a drive that's already locked, and ENSLOCK if an attempt

	is made to remove a non-existent lock.

version.h:

	I forgot again to update this. Aargh!



PATCHLEVEL9::



mem.c,mem.h:

	Align everything on 16 byte boundaries.

mem.c,dosmem.c:

	Actually fix the "memory being allocated twice" bug.

	The problem was that setting m->links to 0 before calling

	attach_region was a no-no.



PATCHLEVEL8::



mem.c:

	Attempt to fix the strange "memory being allocated

	twice" bug.

tosfs.c:

	Truncating names at 14 characters came *before* the

	8.3 kludge, which meant that long names were being

	interpreted incorrectly (e.g. gcc-cc1plus.ttp was

	becoming "gcc-cc1p.tt"). Temporary kludge: only

	truncate at 32 characters. Long term solution:

	re-write this code to do the 8.3 truncation at the

	same time as the truncation.

main.c, proc.h:

	Provide a more explicit type for criticerr.

proc.c:

	Don't make _logbase per-process if hardware scrolling

	is active, since this makes for all kinds of weirdness!

mem.c:

	Allow NULL commandline to be the same as an empty

	string. (It was acting this way before, due to the MiNT

	library strncpy; now that we use our own strncpy some

	programs were passing funny arguments.)

dosmem.c:

	Provide a more detailed trace of Pexec activity.

mem.c:

	Added a sanity check in get_region().

proc.c:

	Set the time/date stamp of process 0 to the

	date & time when the system was booted.

fasttext.c:

	Commented out the code that turns the cursor

	on when u:\dev\fasttext is opened.

tty.c:

	Unsigned characters are always >= 0, so we

	don't need to check this.



PATCHLEVEL7::



makefile.lcc,mintlc.prj:

	Added Alex's patches.

assert.h:

	Added Alex's patch to cast the result to void.

filesys.c:

	Make sure the file system media change routine

	is called every time a disk change is forced;

	this corrects the Dlock() bug (it wasn't forcing

	media change as it should have).

version.h:

	Oops! I forgot to increment this for pl6, so

	it jumps by 2 this time.



PATCHLEVEL6::



biosfs.c,pipefs.c,tty.c:

	New Fcntl calls for controlling terminal baud

	rates and flags such as parity and stop bits.

	These have been integrated with the old TIOC*

	calls where applicable.

dosfile.c:

	Changed Fcntl to make a call to tty_ioctl be the

	default if the device is a terminal and the device

	ioctl routine returns EINVFN.

procfs.c, proc.c:

	The date/time stamp of a process now shows when the

	process was started, rather than being the number

	of seconds of CPU time used.

tosfs.c:

	Degrade an ALERT to a TRACE; there is a circumstance

	in which a root directory can apparently be changed,

	and that's when a program tries to open an empty

	file name. We don't need to warn the user that

	something is wrong in this case; we can just fail

	silently.

proc.c:

	Save the logical screen base for each process.

main.c,bios.c,proc.h:

	Made the critical error handler per-process.

bios.c,syscall.s:

	A cleaner way of saving registers when calling

	functions... this wasn't really necessary, but I

	did it to make tracking a bug down easier.

tty.c:

	New terminal flag, T_NOFLUSH, to suppress flushing of

	input when SIGINT or SIGQUIT is received.

*fs.c, file.h:

	Added a new Dpathconf() option that tells whether or

	not a file system is case sensitive.

dos.c:

	Forbid Prenice() on processes that you don't own.

dosmem.c:

	Correct a typo that was causing terminal process groups

	to be incorrectly set.



PATCHLEVEL5::



makefile:

	The -DOWN_LIB declaration should have been on (actually,

	it was, in my copy... sorry for the mix-up).

fasttext.c:

	Applied Alex's patch for the disappearing cursor bug.

everywhere:

	Applied Alex's patches to add "const" declarations where

	appropriate, and to get rid of size_t (since if OWN_LIB

	is defined we use "int" instead).

dosmem.c:

	Fixed M_KEEP to attach memory to rootproc *only* at

	process termination.





PATCHLEVEL4::



proto.h:

	Added prototype for do_func_key().

everywhere:

	Applied apratt's debugging/trace patches.



PATCHLEVEL3::



xbios.c, biosfs.c:

	Change Bconmap to actually do the equivalent of an

	Fforce(-2, foo) call; this way, we don't need the

	ugly DFLTMODM kludge. (On the other hand, we introduce

	some new ugly kludges :-)).

main.c,proc.c:

	Wait until everything is initialized before opening

	devices; this avoids bogus critical error messages from

	AHDI.

util.c, mint.h, ctype.h:

	Add all sorts of utility routines (for string processing,

	character type recognition, and the like). This is

	designed to make sure that MiNT works the same regardless

	of what library is used to compile it. We're not quite

	totally independent of library yet (the startup code and

	<osbind.h> aren't replaced) but we're pretty close.

main.c, proc.c:

	Initialize the current directory for the root

	process *after* file systems have been loaded, since

	otherwise the info is nuked when a new fs is loaded in.

bios.c:

	Allow output to BIOS device 5 to be redirected along

	with BIOS device 2; we do this by using the MW

	ESC-Q control sequence to quote characters. A bit of

	a hack, but then, not many people use device 5.

quickmov.s:

	Fixed two bugs in quickmove: (1) it didn't work for

	regions bigger than 0x00fffe00 bytes in length,

	and (2) it assumed the length was a multiple of 4

	bytes.

fasttext.c:

	Re-arrange things a bit to get rid of a gcc 2.1 warning.

dosmem.c:

	Change flag 0x4000 to mean "don't free the memory

	automatically on process termination"; explicit

	Mfree requests are still allowed, and after

	termination *any* process may Mfree the memory.



PATCHLEVEL2::



makefile:

	Remove -fcombine-regs from CFLAGS, since gcc 2.1

	doesn't understand it.

bios.c:

	Ignore value returned by Bconout for the screen

	(many text accelerators get this wrong :-( ).

dossig.c, signal.h:

	New system call, Psigaction(), by AGK. 

xbios.c:

	Added support for Bconmap.

bios.c, biosfs.c:

	Rationalized the way biosfs and bios interact;

	no more funny device numbers are needed. Also:

	added support for Bconmap, and a new default

	modem device.

pipefs.c:

	Applied Michael Hohmuth's patch for pipe_close (thanks,

	Michael!)

filesys.c:

	Don't try to initialize all the drives at boot time; path2cookie

	is quite capable of initializing, and it saves having

	to access drive B: (for example) while booting is going

	on.

main.c:

	Allow the user to avoid booting MiNT if the right shift key

	is held down.

main.c:

	Added safety checking, as suggested by AKP.

dosmem.c:

	In Mxalloc, if (mode & 0x4000) is nonzero then allocate non-freeable

	memory (we do this by attaching the memory to the root process).

fasttext.c:

	Tabs should be non-destructive on the ST!

proc.h:

	Re-arranged some things. Note that "slices" was never supposed

	to be visible to users! Also, added a "bconmap" variable to

	give the current Bconmap mapping for the process.

dosdir.c:

	Fail Ddelete of current directories only on the current

	drive; for other drives, reset the current directory

	to the root directory. NOTE: Ddelete of a current directory

	is forbidden only if the directory is someone else's

	current directory; if it's only your current dir., you

	can delete it (and get automatically bumped back to

	root).



PATCHLEVEL1::



dosmem.c:

	Fixed a bug that caused processes with no '.' in their names

	to have the wrong process name.

dosmem.c:

	In Pexec, make sure we yield to the new process so that

	it gets at least one timeslice to do an Mshrink().

proc.c:

	In preempt(), don't punish processes that have buffered

	BIOS output and are preempted; the process of flushing the

	buffer may very well put them to sleep, and in any event

	processes doing I/O should not be considered "hogs".

tosfs.c:

	Don't look for volume labels in opendir/readdir/lookup etc.

main.c:

	AGK: added DEBUG_LEVEL and DEBUG_DEVNO options to mint.cnf.

dossig.c:

	New system call (Psigpause()) courtesy of Alex Kiernan.

dosmem.c:

	In Pexec(200,...), don't reset base->p_parent, since the

	"parent" in an overlay exec is oneself.

tty.c:

	Fixed so that RAW mode reads will return all of an

	extended escape sequence at once, rather than waiting

	for the next read.

dosmem.c:

	When terminating a process, make sure that it's "number of

	memory regions" is set to 0; otherwise, calls to memused()

	on the process (e.g. by procfs) can crash the system.

dosdir.c:

	When removing directories, make sure that the directory

	isn't in use as someone's current directory (so that

	they don't get left in limbo).

fasttext.c:

	Screen memory must come from ST RAM -- otherwise hardware

	scrolling crashes and burns. Fixed thanks to AGK.

xbios.c:

	Moved the prototype for midiws to proto.h, and corrected the

	type of its argument (it should have been "int", not "short").



PATCHLEVEL0::



bios.c:

	Terminal modes weren't being set correctly in Bconout, and also

	weren't being set in bflush (which should have employed RAW

	mode output, but didn't).

everywhere:

	Merged in Alex Kiernan's latest Lattice C patches.





version 0.94



PATCHLEVEL4::



filesys.c:

	Use U:\DEV\CON for CON:, instead of V:\CON, since we're

	going to make drive V: go away soon.

unifs.c:

	When looking up a drive, make sure that it has a valid file

	system attached to it -- otherwise, newly installed ramdisks

	can cause system crashes :-(.

fasttext.c:

	Patches to make the fast text device work correctly on a TT,

	courtesy of Erling Henanger.

main.c:

	Install 16 extra cookies, instead of 8, just to be friendly.



PATCHLEVEL3::



main.c:

	Allow PSEUDODRIVES=MAP to put the extra drives in

	_drvbits without installing new drivers for them.

unifs.c:

	Don't rely on drvmap() to figure out what drives exist;

	it isn't accurate if PSEUDODRIVES=NO.



PATCHLEVEL2::



main.c:

	Added an option for turning off the BIOS routines for the

	pseudo-drives.

filesys.c:

	Moved the vector set/restore code to main.c (where all the

	other vector stuff is).

tosfs.c:

	If the _FLK cookie was already set when MiNT started, we

	pass file sharing and locking requests through to GEMDOS.

main.c:

	Turn the cursor off when leaving, if we were started from

	the desktop.

tosfs.c:

	Fixed a bug in which tos_chmode was returning an incorrect

	value.

debug.c:

	Added code for octal output to sprintf().

dosdir.c:

	Make Fsfirst() with the FA_LABEL bit set work on non-TOS

	file systems (via the file system readlabel function).

	(This used to work only when the search was restricted to

	labels only.)

various places:

	Get rid of gcc 2.0 warnings.



PATCHLEVEL1::



file.h:

	Because Fmidipipe and the disk change code can close

	files other than the files of the current process,

	the device driver "close" function needs another

	parameter, namely the process id being closed; this

	allows device drivers to remove locks properly.

tosfs.c:

	Volume labels shouldn't be found by Dreaddir().

tosfs.c:

	Added file locking.

filesys.c, main.c, file.h:

	New utility routine (denylock) to make implementing file

	locking easier for file systems.



PATCHLEVEL0::



tosfs.c:

	Canonicalize file names (i.e. convert to 8.3 format).

	Also, keep track of the value returned from the last

	readdir() call, so that a subsequent Fxattr() will take

	place quickly.

proc.c:

	In sleep(), make sure interrupts are disabled while queue

	manipulations are occuring.

bios.c:

	Correct a stuttering problem for ^C and similar interrupts.

dosmem.c:

	8 character process names weren't terminated properly.

tty.c:

	Aaargh! Shift+cursor keys were being interpreted even when

	they shouldn't have been.



version 0.93



PATCHLEVEL6::



filesys.c:

	Check for newly installed drives when parsing an

	absolute path without an explicit drive letter, as

	well as when looking at ones with drive letters.



PATCHLEVEL5::



biosfs.c, fasttext.c:

	Allow TIOCGWINSZ calls on the console (we use the line A

	variables to get the number or rows and columns).

filesys.c:

	Fix a typo in the file system initialization checking.

pipefs.c:

	Make "VIRGIN_PIPE" more obviously a magic value, and

	document it.

pipefs.c:

	Make u:\pipe have a sensible date/time; also, make

	Dfree on u:\pipe return some useful statistics about

	the number of pipes in the system.

procfs.c:

	u:\proc has a sensible time and date now, namely the

	time/date of the last process creation or destruction.

dosfile.c:

	Fcreate() of a volume label now returns a handle to

	u:\dev\null.

dosmem.c:

	Make sure the BIOSBUF buffer is flushed when terminating.

main.c:

	There's a bug in TOS 1.4: GEM seems to assume that all

	memory is zero initially, and if it isn't (e.g. if a large

	AUTO folder program like MiNT terminates and leaves behind

	dirty memory) then having too many (or the wrong kind of)

	desk accessories can lead to a crash. This was a real bear

	to track down, and the work-around is very ugly; before

	MiNT exits we copy a short machine language subroutine into

	the command line, and then execute it; the routine zeros

	all of the TPA and then does a Pterm0().

rendez.c:

	Change a "short" to "int" for the benefit of gcc 2.0.

bios.c:

	Stop process dumps from stuttering.

console.c:

	Added support for global file handles.



PATCHLEVEL4::



dosfile.c:

	In Fselect(), we have to re-validate file handles after

	a sleep() call, since signal handlers may close files.

proc.c:

	Pre-allocate more PROC structures (this should help

	reduce memory fragmentation).

tty.c, file.h:

	Allow cursor/function keys to send escape sequences.

dosdir.c:

	As suggested by S. Henson: Dsetpath through a symbolic link

	may also require changing the current drive as well.

proc.c,dos.c,timeout.c:

	New process scheduling algorithm, as suggested by A. Pratt.

dosdir.c:

	Make only the low bit of Dlock() significant, for future

	expansion.

dosfile.c:

	Allow Fcreate() to create a global file handle.



PATCHLEVEL3::



debug.c:

	Changed TRACE mode output so that not just any keys will

	start/stop output, but only Help and Undo.

dosdir.c, filesys.c:

	Add a Dlock() system call to lock/unlock drives.

filesys.c:

	Only initialize drives if the BIOS drive map says that

	they exist.

dosmem.c:

	In Pexec, make a copy of any name we're going to use

	before freeing memory for overlayed programs; the old

	way was decidedly incorrect!

dosfile.c:

	Allow for global file handles, so that shared libraries

	can use file handles that are the same for all processes.

dosmem.c:

	In Mxalloc, ignore bits that we don't understand, to

	allow for future expansion.

syscall.s:

	Fix a bug that could cause the wrong system call to be

	made if BIOS buffering is on (!).

bios.c:

	Streamline the BIOS buffering mechanism, and make it

	more conservative about multiple processes doing Bconout

	output.

procfs.c:

	Allow "foo.-1" to stand for the current process, and

	"foo.-2" to stand for our parent. Also, add new

	Fcntls for getting/setting memory flags.

bios.c:

	In Setexc(), don't actually change any vectors, let the BIOS

	do it -- some TSR's install trap handlers that look for

	certain Setexc functions...

signal.c:

	Allow nested Supexec() calls, or Supexec()'s from a terminate

	vector.

procfs.c:

	Change the definition of PPROCADDR and add a new Fcntl,

	PCTXTSIZE.

mem.c:

	In exec_region, set the stack based on the value of p_hitpa

	from the basepage, instead of the size of the memory

	region -- some programs rely on being able to set the initial

	stack pointer for a Pexec(4,...) this way.

main.c, context.s:

	Avoid using 68020 instructions if we're on a 68010.



PATCHLEVEL2::



dos.c,proc.c:

	More tweaking of the priority code.

main.c:

	Change the type of "tosbp" from char ** to BASEPAGE **,

	since that's what it really is.

main.c:

	Add a special case for the Spanish TOS 1.0 act_pd variable.

pipefs.c:

	When a writer is waiting to write a small amount of data

	atomically, remember to wake up readers so that they

	can clear the pipe!

debug.c:

	Add the %u flag to ksprintf() (Fselect uses it, maybe others

	do too...)

dosmem.c:

	In Pterm(), put the exit code onto the stack when calling

	etv_term. It won't be in the same place as it was for TOS,

	but c'est la vie. (People asked for this feature...)

xbios.c:

	Provide a way to pass arguments to Supexec(). Note that Atari

	never documented that this was possible, but some people were

	relying on it anyway :-(. (Don't use this feature, it's only

	there as a compatibility hack.)

main.c:

	In shutdown(), don't bother waiting a second for processes

	to finish if there are no other processes.

filesys.c:

	Make sure that path names are null terminated after strncpy.

mem.c:

	Fix the code to zero process registers so that it *only* zeros

	process registers.

dosmem.c:

	Eliminate some redundant code.

dosfile.c:

	Open u:\pipe\sys$pipe.xxx rather than q:\sys$pipe.xxx.

main.c:

	Change a "malloc" into "kmalloc", and restore the #include

	of <minimal.h> that was inadvertently deleted.

main.c:

	Allow parameters to be passed to the initial program specified

	by the INIT= string.



PATCHLEVEL1::



main.c:

	Fix a typo in shutdown() that was causing problems when

	MiNT was shut down while processes were active.

tosfs.c:

	Make sure that tfullpath() returns a string less than

	PATH_MAX characters long.

everywhere:

	Replace "sprintf" with "ksprintf".

debug.c:

	Add a "ksprintf" function that's like sprintf(), but

	(a) doesn't have so many features (making it smaller),

	and more importantly (b) won't try to write more than

	SPRINTF_MAX characters into a buffer.

filesys.c:

	In path2cookie, make sure we don't try to copy more than

	PATH_MAX characters into the fixed size buffers.

dosmem.c:

	The "sleep if no memory available during Malloc" code

	was causing more problems than it solved, so it was

	removed. To compensate, we increase the priority of

	newly Pexec'd processes to make sure that they get

	to run.

dosmem.c:

	Aaaargh! A very serious screw-up in terminate() was

	causing us to wake up processes sleeping in vfork()

	even when their children were still using the address

	space; needless to say, horrible (and mysterious)

	crashes could ensue. Fix: only force the parent awake

	if wait_q == WAIT_Q && wait_cond matches the terminating

	process, otherwise let post_sig() handle waking.

	While fixing this bug, re-arrange the terminate code

	to do the waking up at the very end, just in case some

	of the other code may cause a sleep() temporarily.

bios.c:

	Fix the scan code for the UNDO key.

fasttext.c:

	Use Setscreen() to set the hardware screen base, since setting

	the variable at 0x45e causes TOS to keep setting the screen base

	ad infinitum.



PATCHLEVEL0::



rendez.c:

	When waking a process up from a semaphore, check to see

	if it's on the WAIT_Q before trying to remove it from

	that queue (it might have been moved off the wait queue

	by a signal).

bios.c:

	Make sure that Bconout(2,c) always succeeds, to compensate

	for text accelerators and other programs that don't return

	sensible values from Bconout. Also, ignore the Bconout

	return value when flushing the text output buffer.



version 0.92



PATCHLEVEL4::



biosfs.c:

	Provide devices for the extra Mega STe serial ports.

biosfs.c:

	Make the kernel info structure available to device drivers

	loaded with Dcntl.

xbios.c:

	Provide a modified Midiws function so that this is also

	affected by Fmidipipe and Fforce.

biosfs.c:

	Split bios_device into two device drivers; one for

	terminal devices, and one for plain character devices

	(the printer and IKBD port fall into this category).

	Also: provide a new Dcntl call to install plain BIOS

	devices in U:\DEV.

tty.c:

	Check for terminal start/stop keys while reading.

bios.c:

	In checkkeys, loop through all keys received since our last

	interrupt, rather than just checking the last thing in the

	buffer (as A. Pratt suggested).

bios.c, tty.c:

	Made the "disable" character for special terminal functions

	(e.g. the EOF key) be 0 instead of -1; this matches System V,

	is more POSIX friendly, and also makes confusing function keys

	and ^@ less likely. (Thanks to Scott Willingham for this

	suggestion.)

file.h, elsewhere as needed:

	Renamed the O_BIOS flag O_TTY (since that's what it really

	represents) and renamed the is_bios macro is_terminal.

dosmem.c:

	Make Pexec mode 106 cause the child to be truly independent

	of the parent (i.e. it doesn't get the parent's address space,

	nor does the parent get the child's).

biosfs.c:

	Allow symbolic links from U:\DEV; this lets us do things like

	Fsymlink("U:\PIPE\SERVERFIFO", "U:\DEV\SERVERDEV").

main.c:

	When PRN=d:\foo is specified, create the file foo instead of

	just trying to open it; this makes no difference to devices,

	but makes redirecting printer output to a file much more

	convenient.

unifs.c:

	Fix a bug that was causing Dgetpath() to return incorrect

	information for U:\A.

timeout.c:

	Make sure "searchtime" is up-to-date; bconout uses this for

	the time out.

biosfs.c:

	Fix bios_write so that if bconout fails, so does the write.

bios.c:

	Fix bconout so that it doesn't hang forever if the device isn't

	going to be ready (e.g. the printer is off); instead, there's

	a 10 second timeout.

main.c:

	Send all processes SIGTERM when we're shutting down, so that

	they have a chance to clean up after themselves.

mint.h:

	The KBDVEC structure was missing the "clockvec" element (!).



PATCHLEVEL3::



biosfs.c:

	Revised to allow support for loading/removing device drivers

	dynamically, via a Dcntl() call.

dosmem.c,mem.c,dosfile.c,file.h:

	Added support for setuid/setgid. These bits are only checked

	in Pexec modes 0, 100, and 200, i.e. the "load and go" modes.

rendez.c:

	Added new semaphore code from Allan Pratt.

main.c:

	New command for mint.cnf: "exec foo.prg bar" runs the program

	"foo" with argument(s) "bar".

main.c:

	Use the XBRA protocol for all interrupt routines that we grab.

filesys.c:

	When terminating MiNT, close all open files to make sure data

	is flushed and devices are nicely shut down.

main.c:

	Add some more variables, such as CON and PRN for redirecting

	those handles, and HARDSCROLL for controlling the fast text

	output.

proc.c:

	Make sure the "links" field for the prn and aux handles is

	correct.

syscall.s, bios.c:

	Special case the BIOS Bconout code to try to speed it up

	a bit. We allow for buffering of Bconout output; the buffer

	is flushed on the next non-Bconout system call or context

	switch. This should usually work OK, but as a precaution

	we provide for a way to turn it off (BIOSBUF=NO in mint.cnf).

fasttext.c.fasttext.h:

	New files for a faster text output device; changes were

	made to biosfs.c to support this, too.

tty.c:

	Streamline writes to terminals by sending data to the

	tty device in chunks instead of 1 character at a time.

dosfile.c:

	In do_open, always return EFILNF, never EPTHNF.

dosmem.c:

	Use supexec() to execute the terminate vector code, to

	avoid duplication of signal 0 faking.

xbios.c:

	In Supexec() does leave the kernel, so we have to make

	appropriate adjustments. We do this by faking a signal

	(signal 0) and installing the user's function as a signal

	handler.

dosdir.c:

	Make Dfree(x) actually look at free space on the drive which

	corresponds to the current directory on <x>; this should make

	Dfree on drive U: much more useful.

proc.h:

	Make the "base" field of the PROC structure have type BASEPAGE *

	(since that's what it is!)

basepage.h, dosdir.c, dosmem.c:

	Support some undocumented fields in the basepage a little bit

	(i.e. they're read only). Programs that try to write to these

	fields break. Surprise, surprise.



PATCHLEVEL2::



dosmem.c, mem.c:

	The docs say that children started with Pexec(104,...) or

	Pexec(106,...) share the parent's memory. This was unfortunately

	not the case; if the parent exited and the child was running

	in the parent's address space (e.g. see tfork() in mntlib)

	the child died very soon thereafter (like when the next program

	comes along and clears the memory the child was running out of).

	This is now fixed.

dos.c, proc.c, timeout.c:

	More tuning of the process scheduler.

main.c:

	Added "setenv" function for mint.cnf.



PATCHLEVEL1::



filesys.c:

	In some circumstances, AHDI will keep telling us that a drive

	has changed, ad infinitum. To avoid this, we stop trying after

	8 media changes occur in a row.

util.c:

	Tuned the kmalloc() strategy to reduce memory fragmentation

	(every process will be allocating 264 bytes for its

	memory region maps right after creation, and this should

	come from kernel memory).

tty.c:

	Under TOS, 1 byte writes should always be in raw mode.

dos.c:

	In Syield(), we should call sleep() even if no other processes

	are waiting, just to make sure that signals, alarms, etc.

	are properly dealt with.

filesys.c, dosfile.c:

	The media change code was wedged (actually, the fault was in

	do_pclose, which sometimes neglected to check to see whether

	or not the file had a still-valid device driver).

dosmem.c:

	In the termination code, close "files" referring to a process

	*before* freeing all the process memory; that way, we don't

	have to worry in do_pclose() and other places about what

	kind of state the process is in.

mem.h:

	Round off memory regions only to a word boundary for better

	TOS compatibility.



PATCHLEVEL0::

dos.c,intr.s,syscall.s:

	Changed s_yield() to actually give up the processor if

	another process is waiting for it; this means that processes

	that call Syield() won't be penalized by the priority code.

	Also: added a new kernel function, preempt(), which does

	what the old s_yield() did (and hence penalizes CPU hogs).

makefile:

	Cleaned up a bit, per suggestions from A. Pratt and D. Gymer.





version 0.91



dosmem.c:

	Only the high 4 bits of the program load flags give memory

	requirements (we were using 8 bits).

dosdir.c:

	Add a hack so that ksh still works (it was using '/' in a

	path name). THIS HACK WILL GO AWAY SOMEDAY!

tty.c:

	CBREAK mode shouldn't do erase, kill, or EOF processing.

dosdir.c:

	Freadlink should check first to make sure the file really

	is a link!

file.h,tty.c:

	Change the name "struct winsiz" to "struct winsize" to match

	what Unix calls it (cosmetic change only).

unifs.c:

	Allow renaming of the drives, and allow rmdir() to work

	like unlink() for symbolic links (since we fake the return

	value from Fsfirst to look like a directory if the link

	points to a directory).

biosfs.c:

	lseek() on the null device should not return 0 always;

	otherwise, it will look like a terminal to many programs!

dosfile.c:

	If a MiNT domain process closes stdin or stdout, they

	really do want them closed (for compatibility with

	MiNT 0.8).

syscall.s:

	When returning from traps, don't pre-empt the current process

	if it's in supervisor mode.

mem.c:

	Fake some stuff in the basepage so that programs compiled

	with dLibs will work some of the time.

tosfs.c:

	Make the value returned from Dgetpath() lower case in the MiNT

	domain. Also, make tosfs a little less verbose when debugging

	or tracing is on.

dosmem.c:

	Try to allocate space for saved fork() memory in the alternate (TT)

	memory map first, as well as in core (ST) memory.

mem.h:

	Round allocation requests up to multiples of 8 bytes instead

	of 4; this automatically gives us a bit of slush for ill

	behaved programs, and also means that requests will always

	be for a multiple of sizeof(double) bytes.

util.c:

	Get rid of the extra slush around kmalloc'd regions (which

	was a lot bigger than originally intended anyway!)





version 0.9



PATCHLEVEL21:: released version



dosmem.c:

	Make Malloc and Mxalloc try again if there isn't enough memory;

	maybe the situation is temporary.

mem.c:

	Plug a memory leak in load_region(); also make load_region try again

	if there isn't enough memory to load the program (just in case the

	situation is temporary).

dosdir.c:

	Add a check to Fattrib to make sure that attributes of directories

	are never changed.



PATCHLEVEL20::



dosdir.c:

	Allow Frenames of processes and other special kinds of files even

	if they do have the FA_RDONLY bit set.

dosfile.c:

	Allow creation of files with the read-only attribute.

tosfs.c:

	Change the file deletion code so that an attempt to delete an

	open file no longer fails, but rather marks the file to be

	deleted when it is closed.

file.h:

	Add some extra space to the tty struct, for future expansion.

filesys.c,main.c:

	Make sure the fake BIOS disk routines are available before

	any of the pseudo-drives are used, by having them set up

	in init_filesys() instead of init_intr().

tosfs.c:

	Remove some debugging output that isn't needed anymore.



PATCHLEVEL19::

Beta release.



intr.s,main.c:

	provide some fake BIOS disk routines for the pseudo-drives,

	in hopes of avoiding "drive U: is not responding" types of

	messages that some have reported

pipefs.c:

	half.ttp was failing under mgr, because of a race condition:

	our select() returns "ready" for a pipe if nobody exists to

	write to it (since then a read will return immediately). half

	would make a pipe that would end up being destroyed immediately

	by mgr before it got attached to a process. Solution: pipes that

	have *never* been opened yet for writing get a special marker

	and select doesn't worry about them, only about ones that were

	once written to.

pipefs.c:

	Fixed FIONWRITE to return the correct value.

dosdir.c:

	Refuse to Frename a file with the FA_RDONLY attribute.

biosfs.c:

	Fixed bios_write to return the number of bytes successfully

	written.

bios.c:

	LAST_DEVICE was inaccurate. This could happen again, so I'm simply

	getting rid of it and leaving all errors to the BIOS.

pipefs.c:

	Make sure the FA_RDONLY attribute is sensible (i.e. unidirectional

	pipes that don't have a writer can still be written to).

filesys.c:

	Fixed relpath2cookie so that it doesn't *always* follow symlinks

	(it only should when lastname == follow_links)

dosfile.c:

	If the FA_RDONLY bit is set on the file, even the superuser should

	be denied access for writing.

dosfile.c:

	Requiring write permission for Fdatime is a Bad Idea, since GEMDOS

	doesn't; so now MiNT doesn't either.

tosfs.c, filesys.c:

	Fixed a bug with media changes (Fsfirst would sometimes try to close a

	directory that had already been automatically closed by a media change).



PATCHLEVEL18::



main.c:

	Fixed the machine type detection code; it needs to run before

	biosfs is initialized, i.e. before init_filesys().

main.c:

	Provide a configuration file so that users can automatically

	setup symbolic links and can change their init program.

biosfs.c:

	Allow rename on bios devices, so people who want terminals called

	"ttyX" instead of "modemX" can do so.

dosdir.c:

	Flink shouldn't need write permission on the destination

	directory, only the source.

dosfile.c:

	Added FSTAT function for Fcntl, to allow a better version of

	fstat() for the library.

dosfile.c:

	Add code to fcntl to automatically convert MiNT 0.8 O_NDELAY

	into MiNT 0.9 O_NDELAY. This is a temporary measure only,

	to let older versions of mgr continue to work for a while.

filesys.c:

	Symbolic links with relative paths were always failing with

	ELOOP. Oops! (Thanks to Stephen Henson for catching this.)

file.h, tosfs.c, dosfile.c:

	Added a new flag, FS_NOXBIT, to control whether or not the

	file system has a sensible notion of execute permission.

	This removes an ugly check for &tos_filesys.

mint.h,util.c,mem.c:

	Added a compile time option, JUNK_MEM, to deliberately fill

	the memory MiNT acquires with garbage; this is for debugging

	(to help track down silly failures to initialize memory) and

	not for production code.

proc.c:

	Fixed a typo in init_proc() that was causing memory not to

	be initialized to 0 correctly. (Thanks are due to Stephen

	Usher for catching this one.)

tosfs.c:

	Added a tos_rewinddir that works.

file.h:

	Added blocks and blksize fields to the XATTR structure, and

	provided a few extra reserved fields for future expansion.

	(Also: re-arranged some fields to match what the gcc library

	already has.)

file.h, main.c:

	Add sleep, wake, and wakeselect to the kernel info structure;

	some device drivers will need these.

biosfs.c:

	Make nodskchng do a Getbpb on the (non-existent) device; the officially

	documented way of forcing a disk change requires this.

file.h,filesys.c,*fs.c:

	Remove the "flag" argument from the dskchng function, and

	have the kernel check Rwabs for E_CHNG; this should save

	a lot of duplication in user file systems, since everyone

	really has to do this anyways.

dosdir.c:

	Make sure that Fsfirst names can be null-terminated.

filesys.c:

	Oops: a misplaced bracket in disk_changed was causing

	write-protected disks to always appear to have changed!

tosfs.c:

	Made it illegal to delete or truncate an open file.



PATCHLEVEL17::



version.h:

	I think we can call this version an "alpha" one, now. No more

	major features remain to be added (fingers crossed, here).

filesys.c,dosdir.c,*fs.c,file.h:

	Media change detection code; this is now the kernel's

	responsibility. This necessitated an additional function

	for file systems; I hope this is the last one.

main.c,biosfs.c:

	Check what kind of machine we're on, and adjust what devices are

	present accordingly. The rs232 file has been renamed to "modem1".

	WARNING: This will break existing code that uses the name "rs232".

filesys.c:

	Code for loading file systems (finally!)

bios.c,context.s:

	Made Rwabs, Getbpb, and Mediach save registers (since device

	drivers often don't, and loadable file systems will be calling

	these directly).

main.c:

	Implemented the "struct kerinfo" to pass information to loadable

	file systems.

filesys.c:

	Re-wrote path2cookie to provide for symbolic links; a new routine

	(relpath2cookie) helps us out.

unifs.c:

	Code for creating, reading, and deleting symbolic links.

*fs.c, dosfile.c, file.h:

	Changed the way file opens and creates are done; the former

	(*getdev) routine for file systems has been split into

	(*creat) and (*getdev), both of which are quite a bit simpler.

	This whole scheme is clearer, less work for the file system,

	and will support symbolic links much better.

various places:

	Add security checks. This is still pretty sad, but at least it

	can provide one with a modicum of protection against silly

	mistakes.

dosfile.c:

	Require write permission on a file before changing its date via

	Fdatime.

tosfs.c:

	Cleaned up and streamlined a bit, and fixed tos_readlabel.

*fs.c,dosdir.c,file.h:

	Changed the file system "getxattr", "chmode", "chown", and

	"chattr" functions to take a single file cookie instead of a

	(directory, name) pair. This should make most uses of these

	functions (e.g. in name lookups) more efficient. Also,

	changed the readdir() function to return a file cookie to go

	along with the newly read file name.

main.c:

	If "init.prg" isn't found, try starting GEM instead.

unifs.c:

	Re-arranged to allow for symbolic links.

filesys.c:

	Implemented some media change routines.

dosdir.c:

	Added Fchown and Fchmod system calls.

dosdir.c:

	Added security check for Fattrib().



PATCHLEVEL16::



lots of places:

	Try to make TRACE() and DEBUG() messages more useful for people

	who don't know the internals of the kernel, and who just want to

	debug their own programs.

dosdir.c:

	Added Flink, Fsymlink, Freadlink, and Dcntl system calls.

*fs.c,file.h:

	Added a new mode to Dpathconf() to determine whether the

	file system uses DOS type file naming conventions, ordinary

	Unix type, or _POSIX_NO_TRUNC type.

file.h:

	Add an "fscntl" field to the file system structure.

tosfs.c:

	Fix the mode values returned from getxattr() (regular files

	have type S_IFREG, not S_IFMT).

proc.c:

	Zero the child's srchdta field after fork_proc(); otherwise,

	the accounting for Fsfirst/Fsnext can get messed up. Thanks

	again to S. Henson.

mem.c:

	As Steve Henson pointed out, resetting the effective user and

	group id's in exec_region is probably a Bad Idea.

dosdir.c:

	Change Dopendir/Dclosedir to use umalloc and ufree instead of

	kmalloc and kfree.



PATCHLEVEL15::



dosdir.c:

	When terminating, clean up after any Fsfirst/Fsnext sequences that

	didn't go to completion.

tosfs.c:

	Streamlined garbage collection code, and also corrected a bug in

	which file indices used in directory searches could be garbage

	collected.

file.h, *fs.c:

	Add symlink and hard link functions.

pipefs.c:

	Make FIONWRITE work again (a line was accidentally deleted).

	Make sure that Fselect() will select any pipes that have been

	closed.

dossig.c:

	Put back the user id check in Pkill.

dos.c, proc.c:

	Make sure that the "euid" and "egid" fields are set with

	the Psetuid and Psetgid calls. Also, make sure the fields

	are reset after an exec.

mem.c:

	Make exec_region shrink the process 'mem' and 'addr' tables

	to the default again if extra regions had been allocated.

dosmem.c:

	Get rid of the magic number "100", and introduce a maximum user

	settable priority MAX_NICE so that the kernel can make sure

	that a process that needs to run (e.g. an aborted vfork) will

	run first by setting its priority to MAX_NICE+1.

proc.c:

	Make sure the initial process memory tables are zeroed.

proc.c:

	Adjust the process scheduling algorithm (yet again!). Also,

	rename "nice_count" to "curpri".

dosdir.c,dos.c:

	Added Dopendir, Dreaddir, Drewinddir, Dclosedir system calls.

*fs.c:

	Made readdir return a file index (inode number) if it's not

	doing a TOS mode search.

biosfs.c:

	PHYSCONS is such an ugly name; CONSOLE makes more sense.



PATCHLEVEL14::



mem.c:

	Allow the kernel to dynamically allocate memory region

	descriptors if it runs out; also, increase the number that

	it starts with by default.

util.c:

	Made it harmless to call kfree with a NULL argument.

proc.h,mem.c,dosmem.c,proc.c:

	Eliminate the 64 region per process limit, by making the "mem"

	and "addr" arrays dynamically allocated.

proc.c:

	Change the code for selecting which process to run next; if more

	than one process is on the ready queue, we use a per-process

	counter to prevent high priority processes from hogging all the

	time.

dosmem.c:

	Release a process' controlling terminal (by setting it's process

	group back to 0) if the process is a process group leader and

	is exiting.

dosfile.c,tty.c,*fs.c:

	Made do_open set terminals up correctly on open/close, and

	handle assigning process groups to them. Also, made the terminal's

	process group be set automatically on Fforce(-1,...).

main.c,timeout.c:

	Added AKP's code for better resolution of time usage.

DELETED FILES:

	xlate.c, xlate32.s, newdisk.s

everywhere:

	Removed all references to NEED_TRANSLATION. This is getting to be a

	pain to maintain, and nobody seems to actually use it.

*fs.c:

	Fixed the ENAMETOOLONG detection code in readdir (thanks, Steve!).

timeout.c:

	New function, nap, for processes that are in busy loops waiting for

	an event that probably won't happen for a while (e.g. waiting for

	the user to hit a key); use e.g. nap(60) to sleep for 60 milliseconds

	instead of yield().

mem.c:

	create_env() should use the value from the current process' basepage,

	since this may *not* be the same as the environment the process

	was actually started with

dosfile.c:

	Make Fcntl(fh, arg, F_SETFL) leave the file sharing mode alone as well

	as the read/write mode.

unifs.c:

	Change the name "fifo" to "pipe"; change "drva", "drvb" etc. into just

	"a", "b" etc.

dosmem.c:

	Make it possible to provide a name with Pexec mode 104. Provide a new

	mode 106 that starts a process in the background and automatically

	detaches the process TPA from the parent's memory.



PATCHLEVEL13::



biosfs.c:

	Made sure that tty_getchar() won't see (long) negative values

	returned from a successful read, by clearing the high bit

	of read values.

*fs.c,atarierr.h:

	Made file systems responsible for dealing with "." and "..";

	introduced a new (fake) EMOUNT error to indicate when ".." is

	found in a root directory (this is for the benefit of the

	unified file system code)

dosdir.c,filesys.c:

	Changes to allow for the unified file system.

unifs.c, makefile:

	New file, for a "unified" file system.

filesys.c, *fs.c:

	Renamed denyaccess() to denyshare().

dosdir.c:

	Changed getname() to work from the root down instead of from

	the directory up; this should work better for mounting and

	symbolic links.

dosdir.c:

	Moved the check for a drive specifier (A:\FOO) in Dsetpath to

	where it should have been, namely before any use of the drive.

biosfs.c,pipefs.c:

	In opendir, make sure the directory structure is properly

	initialized.

dos.c:

	Changed snice and srenice to pnice and prenice; also modified the

	return values to be 16 bit (for the normal case), and 32 bit

	negative for errors, so that low priority processes can be

	distinguished from errors.

debug*.c:

	The Bconstat() check for the printer should be applied to device

	0, not 1.



PATCHLEVEL12::



dosdir.c,filesys.c:

	Re-wrote Fsfirst/next to use opendir/readdir/closedir. Re-wrote

	the pat_match function to work correctly (at least, according

	to the TOS rules :-).

*fs.c, file.h:

	Added opendir/readdir/closedir calls to file systems to allow

	more general file systems; also changed getattr into getxattr

	(again, to allow file systems with extra goodies), setattr into

	chattr, and added chown and chmod calls. Deleted sfirst/snext

	file system entry points, and the Xsfirst/Xsnext system calls.

*fs.c,file.h,dosfile.c,dosdir.c:

	Changed file systems to have separate calls for reading/writing

	volume labels. Added checks to Fattrib and Fcreate to avoid creating

	files with bad attributes (e.g. FA_LABEL or FA_DIR and anything

	else).

main.c:

	Change the definition of tosvers so that TOS 1.0 corresponds

	to tosvers == 0x100, not tosvers == 0. Also, clean up the

	code for testing TOS versions.

	WARNING: This may break RAM TOS versions. I doubt it matters.

bios.c,main.c:

	Always set the kbshft variable, so that kbshift is more

	efficient.

dos.c:

	Eliminated the old code that allowed Super(-1L) to work (GEMDOS

	doesn't support this, so why should MiNT?)

dos.c:

	Added GEMDOS date and time routines, and made sure that

	datestamp and timestamp are initialized properly when

	MiNT is started.

mem.c:

	Increased the size of the buffer used for reading relocation

	information in load_region.

*fs.c, dosfile.c:

	Changed the filesystem getdev call to return a file cookie

	(this saves a call to lookup on every open).

*fs.c, filesys.c:

	Eliminated static variables, changed all routines that used to

	return pointers to cookies to take an extra argument (a pointer

	to the place to put the result).

tosfs.c:

	Turn O_COMPAT sharing mode into O_DENYNONE (after making other

	appropriate changes to the access modes).

debugold.c:

	Updated to reflect changes in debug.c.

debug.c:

	Added calls to va_end where appropriate.

debug.c:

	Before, hitting a key paused debugging output; now, debug_ws

	checks the device that output is going to, so that e.g. if it's

	going to the MIDI port, the output is paused when a character

	arrives on the MIDI port.

mem.c:

	Made exec_region use O_DENYNONE sharing mode instead of O_DENYW



PATCHLEVEL11::



dosfile.c:

	Forbid closing file handles < 0; this will prevent accidental

	destruction of the BIOS handles.

dosfile.c:

	Change Fbiosdev to be MIDI specific, rename it to Fmidipipe, and

	move it to dosfile.c. The semantics are a bit different, too;

	see the comments in dosfile.c.

bios.c:

	Really fix the MIDI output routines, this time. (sigh)



PATCHLEVEL10::



signal.c:

	Fixed a typo in the message printed when bombs occur. Also,

	removed the copying of data from the supervisor stack to the

	BIOS area -- this was causing very strange problems, and it's

	not clear that the info would be useful under MiNT anyway.

	Finally, all this is only supposed to happen for certain

	signals, not for any random killings.



PATCHLEVEL9::



file.h, *fs.c:

	Changed the definition of the DTA buffer to free up space for

	user/group id fields and an extended attributes field. Made

	sfirst/snext use the 'aux' field of the directory cookie

	as an index.

dos.c:

	Fixed Talarm() to return the number of seconds left before an

	alarm, not the number of milliseconds.

dosdir.c:

	New system calls, Xsfirst/Xsnext, for accessing file systems

	with long (>12 character) names.

signal.c:

	Fill in the BIOS post-mortem dump error correctly after

	bus errors, address errors, etc. Also, made the "bomb" replacement

	routine give the process basepage address and program counter,

	as suggested by AKP.

tosfs.c:

	Fixed the tos_lookup bug that was causing bus errors during file

	opens.



PATCHLEVEL8::



tosfs.c:

	Made opens with O_COMPAT sharing mode always open for both reading

	and writing; this is so broken TOS programs that write to read-only

	handles will continue to work.

file.h, tty.c:

	Added TIOCGWINSZ/TIOCSWINSZ and the appropriate window size

	fields to the tty structure to support them.

dossig.c:

	Remove user id checks (for now). Make it impossible to catch

	SIGSTOP.

bios.c:

	Fix so Bconout returns a value (it really should, at least for

	the printer).

mem.c:

	Don't context switch and retry alloc_region; file systems and some

	parts of the kernel aren't expecting the context switch, and besides

	the previous change makes this tactic less likely to be helpful.

mem.c:

	Don't allocate *all* of the memory to the basepage, leave some for

	the kernel and other programs.

pipefs.c:

	Add a check for broken pipes when a program is trying to write

	atomically.

dosmem.c:

	Block job control signals during a vfork instead of ignoring

	them; this will result in the "right" thing happening after

	the exec (since the blocked signals will then be unblocked).

tosfs.c:

	Eeek! Fixed a very serious bug in the garbage collection

	routines ("i" was used where "j" should have been in a loop:

	result: things could be garbage collected that shouldn't

	have been!)

procfs.c:

	changed the return value from "dfree" to more accurately indicate

	the free memory in the system, and to also provide information

	about the smallest unit of allocable memory (currently a longword)

*fs.c,dosfile.c,dosdir.c,filesys.c:

	instead of passing fcookies to file systems, pass pointers to

	them; this should slightly improve efficiency, and greatly

	improve portability (otherwise, compilers used to make

	installable file systems would have to have the same structure

	passing/return conventions as the one that compiled the kernel)

dos.c:

	new system call, Srenice(), to change priority of a different

	process

dos.c:

	change Fbiosdev() system call to take a pid argument

proc.h, dosfile.c:

	add per-file descriptor flags for things like "close on exec"

file.h, mem.c, *fs.c:

	new file open mode, O_EXEC, for the kernel to use in Pexec

rendez.c, dos.c:

	new file from AKP to implement a simple and fast message based

	IPC; the new system call is Pmsg. Also note that the syscall number

	of Pmsg is 0x125, which used to be used by Fbiosdev; Fbiosdev has

	been moved to 0x126.

filesys.c:

	applied Steve Henson's patches to improve path2cookie's handling of

	repeated slashes

proc.h:

	MAX_OPEN should be 32, not 20!

mem.c:

	Ignore "close on exec" flag for the standard handles (for some

	reason, bash manages to set these for 0,1,2; this is probably a bug

	in the port of bash, but on the other hand it's unlikely that

	anyone would really want to close the standard handles when doing

	an exec, anyway)

tty.c:

	Fixed RAW mode reads on terminals so that they're no longer

	terminated by '\r' or '\n' (and so that pty slaves aren't forced

	to read just 1 character at a time). Thanks to AKP for catching

	this.



PATCHLEVEL7::



*fs.c:

	Cleaned up the Dpathconf() return values to better reflect

	reality, and made the code a little easier to understand.

bios.c:

	Adjust bcostat() parameters so that V:\MIDI and V:\KBD call

	the right (wrong) device (BIOS devices 3 and 4 are mixed

	up for Bcostat).

dosmem.c:

	Made sure that Malloc(0L) always returns a NULL pointer.

dosfile.c:

	Made Fclose() of handles 0, 1, 2, and 3 restore the default

	mappings. (Apparently TOS _does_ do this, after all.)

bios.c:

	AHDI 3.1 added a new parameter to Rwabs; we now pass that

	along too.

timeout.c:

	Make canceltimeout() free the memory used by the time out

	descriptor. (another Fselect bug)

signal.h:

	Removed ABORT and ALARM from list of signals that are reported

	by the kernel.

proc.c:

	Moved checkalarms() to do_wakeup_things() so that short time outs

	will be properly recognized; this fixes a nasty bug in Fselect.



PATCHLEVEL6::



pipefs.c:

	Make writes of 1024 or fewer bytes atomic. Also, increase pipe

	buffer size to 4096.

tosfs.c:

	Make O_EXCL and O_TRUNC bits useful.

tosfs.c,pipefs.c,filesys.c:

	Fully implement file sharing modes for tosfs and pipefs. A new

	routine (denyaccess) is provided in filesys.c for checking

	file open modes and determining conflicts (if any).

pipefs.c:

	If a process writes on a broken pipe while ignoring SIGPIPE,

	the write now returns -1. (Thanks, Stephen)

debug.c, bios.c:

	Applied bammi's patches to PATCHLEVEL 5 to fix some typos.



PATCHLEVEL5::



debug.c, bios.c:

	Applied AKP's debugging output patches, to allow TRACE and

	DEBUG output to go to serial ports as well as the printer.



PATCHLEVEL4::



dos.c:

	NEW SYSTEM CALL: Fbiosdev() to control redirection of BIOS

	devices.

bios.c, proc.h:

	Added binput and boutput arrays to allow for per-process redirection

	of BIOS device input and output to GEMDOS file handles.

biosfs.c:

	Changed "mdi" to "midi".

	WARNING: this change could (I suppose) break existing code.

util.c:

	Added a umalloc() function to allocate memory in user space,

	and modified the various sfirst routines to use this to

	allocate space for patterns instead of kmalloc.

dosdir.c,file.h:

	Added an FS_CASESENSITIVE flag to control conversion of file

	names to upper case for TOS domain processes.

dosdir.c, *fs.c:

	Made sfirst/snext functions take an extra argument, the length

	of the file name field in the DTA buffer (so that we can provide

	Xsfirst/Xsnext functions that can work with longer names)

mem.c:

	Fixed exec_region so that the close-on-exec flag works.

filesys.c:

	Made path2cookie take the name of the place to store the last

	component of the path name as an argument (instead of always

	storing it in the global variable temp1).

biosfs.c:

	Added code for O_NDELAY on bios devices.

tosfs.c:

	Cleaned up garbage collection a bit -- I hope this fixes the

	problems with running out of indices.

filesys.c:

	Returned the special parsing code for CON:, AUX:, etc.

file.h:

	OOPS! The flock structure was missing an element (l_whence). It

	was added.

	WARNING: This change may break existing code.

util.c:

	Made kmalloc take a long parameter, just in case installable

	file systems need lots of memory.

file.h, atarierr.h, pipefs.c:

	Made file modes compatible with _FLK specification. Also

	added the ELOCKED and ENSLOCK errors to atarierr.h, and made

	pipefs.c use ELOCKED instead of EACCDN.

	WARNING: this *will* break existing programs. In particular, mgr

	no longer works :-( because O_NDELAY has changed. (this was

	temporarily patched)

dos.c,dosfile.c:

	Added Flock() system call.

mem.c:

	Made the initial user stack pointer low enough so that syscall.s

	won't run into the end of memory if the user makes a system call

	right away and doesn't push many parameters (the code in syscall

	always tries to copy a large chunk of the caller's stack).

dosmem.c:

	Made vfork'd processes ignore job control signals (thanks to

	Stephen for pointing out how some shells rely on BSD's similar

	behaviour).



PATCHLEVEL3::



dosfile.c, file.h, *fs.c, bios.c:

	Changed f_select to use the new timeout mechanism, and provided

	routines in device drivers to wake up selecting processes.

proc.h:

	New queue, SELECT_Q, for processes doing "select", to match above

	changes

dos.c:

	Changed t_alarm to use the new timeout mechanism.

timeout.c,proc.h:

	Added a new "timeout" mechanism, so that processes can specify

	an action to be taken when a counter expires.

various places:

	Cleaned up TRACE and DEBUG output

proc.c:

	Set current directory based on the TOS current directory

	when MiNT is starting up.

debug.c:

	Added AKP's "trace" mode patch

filesys.c:

	Replaced strcmp() for . and .. with direct comparisons, again

	per AKP.

tosfs.c:

	Improved search performance a bit (indicies are now allocated

	at the beginning of the list, instead of at the end)

main.c, version.h:

	Introduced PATCHLEVEL for alpha and beta test versions	

util.c:

	Made kmalloc() try the kernel memory region first for small

	regions, to cut down fragmentation of the user's memory space

proc.h:

	Made the system stacks bigger, to compensate for the bigger

	contexts now that there's FPU support

dosmem.c:

	Fixed bug with Pexec mode 6 (thanks again, AKP)

biosfs.c:

	Changed FD0 to STDIN, FD1 to STDOUT, etc.

	WARNING: this change could break existing code

filesys.c:

	'/' is no longer a directory separator for MiNT domain processes

	(few were using it, and it simplifies things to be able to

	assume '\' is the only such separator).

	WARNING: this change could break existing code

all over the place:

	Changed the way directories/files are stored. We now have

	"file cookies" for directories, instead of strings. We

	also now have two directories per drive per process

	(a root and current).

minixfs.c:

	Removed from the main compile, and MINIX_FS symbol was also

	removed -- this will be a loadable file system someday

	(soon, I hope).

various places:

	Added Alex Kiernan's patches to support compilation under

	Lattice C v5

proc.h, context.s:

	Added Alex Kiernan's FPU co-processor patches. WARNING: this

	changes the layout of the proc structure in memory, and so

	breaks "ps" and similar programs.

proc.c:

	Changed sleep() to take the wait condition as an argument; this

	means that fewer things need to know the internals of the

	PROC structure

various places:

	Added AKP's T_TOSTOP flag changes

minixfs.c:

	Changed the 8K buffer in do_change to a static variable; our

	stacks aren't *that* big!

intr.s:

	Fixed a typo that was causing serious problems with the bus

	error and other exception codes on the TT (thanks for

	catching this, Allan).

dosmem.c,signal.c:

	Corrected the GEMDOS termination vector code (the system stack

	was being corrupted if the user's code returned). Thanks to

	Julian Reschke for catching this error.

===========================================================================

version 0.8



biosfs.c, pipefs.c:

	fix ^C and ^Y to send the signals to the whole process group,

	and also to make sure processes don't read these keys if

	they're turned into signals

intr.s,dossig.c:

	fix exception handlers to be more careful about the distinction

	between being in or out of the kernel

intr.s, syscall.s, main.c:

	make sure interrupts are off before changing any vectors

bios.c:

	fixed the annoying problems with CTRL-ALT-Fx sometimes leaving

	keys in the buffer

signal.c:

	forced p_sigreturn() with no signal pending to unwind the

	*whole* signal stack, in case there were multiple signals

	pending at the time the user did a longjmp() (or whatever

	prompted the Psigreturn())

dosmem.c:

	p_wait3 now supports the WUNTRACED bit; if this isn't set,

	processes stopped due to job control are *not* returned

dosmem.c:

	removed dLibs kludge -- some programs rely on p_parent being

	non-zero to tell them that they're not accessories

various places:

	cleaned up job control stuff to be more Unix like

mem.c,util.c:

	added a new memory map for the kernel -- this should ease

	the problems with programs grabbing all of available memory

mem.c,dosmem.c:

	incorporated Allan's bugfixes; alternative RAM should work now

signal.c, main.c, intr.s:

	integrated signals with normal exceptions, so that e.g.

	a bus error raises SIGBUS. This improves the survivability

	of the kernel, so that a bus error resulting from a bad

	system call parameter won't kill MiNT, just the offending

	process.

proc.c:

	kludge to let low priority processes run every so often, even

	in the presence of a high priority process that is ready to run

atarierr.h:

	ENMFIL is -49, not -47 -- so much for Abacus' docs :-)

procfs.c:

	changes to allow read/write from process space

minixfs.[ch]:

	changed lots of function parameter types to avoid promotion and

	prototype problems with 32 bit code

bios.c:

	changed IOREC to IOREC_T to avoid name conflicts with some osbind.h

biosfs.c:

	made mouse driver change the line A mouse position variables, so MGR

	will work with bigscrn and similar large screen emulators

minixfs.c:

	new version from Stephen, now supports floppies and other removable

	media

mem.c, dosmem.c, dos.c:

	added code to support new TT TOS calls Mxalloc and Maddalt, plus

	program flags for loading/mallocing in alternate memory

bios.c,biosfs.c,dosfile.c:

	changed so that bios handles 0 and 1 can be redirected just like

	handle 2 (via the new file handles -3 and -2 respectively; AUX:

	and PRN: now refer to these files, and RS232 and CENTR to the

	physical devices)

dosdir.c:

	Dsetdrv() fixed to return an error indication when one happens

dos.c:

	fixed Super() bug (thanks Stephen)

minixfs.c:

	incorporated changes to handle 1K sector sizes



=============================================================================

version 0.7



minixfs.c:

	new file, courtesy of Stephen N. Henson (olorin@tardis.cs.ed.ac.uk)

	this is still "under construction"; see minixfs.doc for more details

bios.c:

	CTRL-ALT-UNDO now raises SIGQUIT, for the benefit of people with

	foreign ROMs (some have trouble with ^\)

filesys.c:

	changed pathname resolution code so that multiple slashes in a file

	name have the same effect as single slashes. POSIX mandates this,

	and some Unix programs expect it, too

dosmem.c:

	changed do_vfork() code so that the text segment of processes is

	*not* saved in a fork() if the process has separate text, data, and

	bss segments; this saves a fair bit of memory

proc.c:

	changed the process initialization code to better deal with job

	control; also changed handle 2 to be AUX: (as under TOS) rather

	than PRN:

bios.c:

	added CTRL-ALT-F5 (show memory usage) and CTRL-ALT-F6

	(show processes)

filesys.c:

	make explicit the fact the individual file names are limited to

	14 characters

everywhere:

	change FILENAME_MAX to PATH_MAX

mem.c:

	fixed up comments and debugging/trace info for load_region

dossig.c:

	NEW SYSTEM CALL: Psigpending() returns the set of signals that

	have been sent to the process, but not yet delivered.

dos.c, dosdir.c:

	NEW SYSTEM CALLS:

	Sysconf(n) returns information about the global limits of the

	currently running version of MiNT

	Dpathconf(name, n) returns information about the file system that

	the file "name" is located on

bios.c:

	allow CTRL-ALT-C, CTRL-ALT-\, and CTRL-ALT-Z to force a SIGINT,

	SIGQUIT, or SIGTSTP, respectively, even if the terminal is in raw

	mode

various places:

	call zero() instead of bzero()

context.s,intr.s:

	changes to make MiNT TT compatible. Thanks to Allan Pratt for this!

biosfs.c, tosfs.c, pipefs.c, procfs.c:

	fsfirst/fsnext return all upper case in TOS domain now, but

	lower case (or mixed) in MiNT domain; this is to try to wean

	programmers off of the habit of assuming everything is upper case

	(and converting accordingly)

biosfs.c:

	made mouse compatible with TOS ALT-cursor keys (the Y direction was

	wrong before)

intr.s:

	IPL 7 before reboot (thanks, Allan)

version.h, main.c:

	made version numbering a bit easier (big deal)

main.c:

	AARGH! The cookie jar stuff was plain wrong (the last cookie should

	have the total number of slots, not just the ones that are free).

main.c:

	pass current environment along to init.prg, instead of forcing an

	empty environment

signal.c:

	corrected killpg() bug (wasn't checking signals, so the current

	process didn't get the signal until later)

mem.c, dosmem.c:

	made sure that all sizes would always be rounded to the nearest

	longword. Just in case they aren't, Malloc(-1L) rounds down to the

        next smallest longword.

lots of places:

	memory handling was overhauled completely; kmalloc now allocates

	memory from the same space as do m_alloc and p_exec, so there is

	no artificial constraint on the number of processes

===========================================================================

version 0.6



dos.c:

	added Talarm() and Pause() system calls

bios.c, tty.c, pipefs.c:

	added real tty structures that programs can manipulate

proc.c:

	added some sanity checks for things like stack overflow

signal.c:

	revamped signal handling so that Psigreturn() no longer needs an

	argument.

dosmem.c:

	made Pexec'ing processes immune to SIGINT, SIGHUP, and SIGTSTP

intr.s:

	fixed the Psigreturn race condition bug

biosfs.c, pipefs.c, filesys.c, util.c:

	added case-insensitive string comparison routine, and modified the

	file systems to use it

bios.c, console.c:

	changed return values of status calls from 1 to -1, to be TOS

	compatible

dos.c:

	added new calls to get resource usage, and set resource limits

dosfile.c:

	added new call, f_select

signal.c:

	changed so stopped processes always have a return code of 0177

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

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



=========================================================================

version 0.5



First publically released version (made available for FTP as a beta test)




unix.superglobalmegacorp.com