Short list of differences between 1.7.0 and 1.7.1: - The BIOS driver can now operate in 286 or 386 protected mode. - Higher RS232 baud rates - More robust ethernet driver that supports the WD8003, WD8013, NE1000, NE2000, and SMC Elite Ultra. - Interface to the Boot Monitor changed so that Minix can return to it. Also support for a BIOS disk I/O call added. Minix 1.7.1 must be booted by the new Monitor. - New are the Mitsumi & Soundblaster drivers. Neither of these have been tested very well after integration in 1.7.1. Long list of differences between 1.7.0 and 1.7.1: include/errno.h ERROR changed into EGENERIC (symbol ERROR often used in user code, although all E* symbols are reserved if is included.) include/unistd.h Rebooting codes for various ways of rebooting added. include/minix/cdrom.h For the Mitsumi CD-ROM driver. include/minix/com.h Changed task number definitions of optional tasks to #define TASK (PREVIOUS_TASK - ENABLE_TASK) This replaces the former #ifdef spaghetti. The ENABLE_XXX defines must be exactly 0 or 1. include/minix/config.h Z_MAP_SLOTS upped to 32 to allow V2 file systems of up to 256 Mb. ENABLE_XXX variables for Mitsumi CD-ROM and Soundblaster drivers added. include/minix/const.h NR_IOREQS symbol introduced as the maximum size of a scattered I/O vector. Vectors used to be NR_BUFS in size, which is a potentionally large value. NR_TASKS redefined as (10 + ENABLE_XXX + ENABLE_YYY + ...). include/minix/sound.h For the Soundblaster driver. include/minix/syslib.h Declarations for all the interface functions to the system task added. include/sgtty.h Definitions for higher baud rates. (Some so high that they are not likely to even work, but you can never know.) Untested! include/sys/ioctl.h Carloads of ioctl request codes added for font loading, CD-ROM, and Soundblaster. man Various manpages updated, several new ones for new commands. The boot(8) manpage contains several new or changed boot parameters, and the TCP/IP configuration section is updated for the new ethernet driver. New manual pages: loadfont(0), isodir(1), isoinfo(1), isoread(1), mixer(1), playwave(1), cdplay(1), isoread(1), recwave(1), screendump(8). src/boot/boot.c Boot device name in boot monitor prompt. src/boot/boothead.s Allow Minix to return to the monitor. This means that Minix is just a subprocess to the monitor. The monitor either reboots Minix (this is very fast) or shows the monitor prompt (halt). Offer a support function for Minix-386 to make a BIOS int 13 call for bios_wini. src/boot/edparams.c Don't edit boot parameters unless there is a genuine Minix bootstrap on the device. Exit command to exit to Minix. src/boot/extboot.s Bootstrap that boots Minix in an logical (extended) partition. For if you really, really, need to have Minix in logical partition. (For the brave and foolish.) src/boot/installboot.c Support for extboot.s. src/boot/masterboot.s Stupid bug fixed in the "BOOT B:" trick. (Boot the other floppy if floppy 0 contains masterboot.) src/commands/aal/archiver.c Use a temp file in /usr/tmp for /tmp may not be big enough to contain a copy of the library. src/commands/ellec.c Bug fixed to make 'ellec -Profile' work. src/commands/i386/asmconv Translation of complex jmp and call targets from ACK to NCC or GNU fixed. Proper translation of CBW, CDQ, CWD, and CWDE from BAS to ACK. src/commands/i86/cc.c Give better advise than using chmem. src/commands/ibm New commands: cdplay, loadfont, mixer, playwave, recwave. Moved in from commands/simple: loadkeys, screendump, term. src/commands/ibm/fdisk.c Fixed master bootstrap included. src/commands/ibm/part.c User interface changed to make it tad more user friendly. Also fixed master bootstrap included. src/commands/ibm/readclock.c Don't complain if the machine is not an AT or PS/2. src/commands/ibm/screendump.c Mono or colour? Just look at BIOS variable 0x40:0x63 and you know. src/commands/kermit Higher baud rates. Untested! src/commands/mined/mined1.c Allow characters with bit 8 set. (KJB's idea of internationalization is that all characters with bit 8 set are letters.) src/commands/reboot/shutdown.c New flags: -R: reboot with a hard reset (old style reboot), -x "boot hd1": execute this monitor code on reboot. src/commands/scripts/DESCRIBE.sh src/commands/scripts/MAKEDEV.sh Add knowledge of /dev/cd*, /dev/audio, and /dev/mixer. src/commands/scripts/instdist.sh Added more text to make it more expert hostile. Find out what our root and usr devices are. If usr=fd0c then root is on fd0, etc. src/commands/scripts/mkdist.sh Make V1 file systems to save a few bytes. src/commands/scripts/whatis.sh Search expression fixed. src/commands/simple New command: isoread. Obsolete or useless and thus removed: fix, getlf, gres, hyphenate. Moved to commands/ibm: loadkeys, screendump, term. src/commands/simple/dd.c Added 'conv=silent' to suppress "records in/out" messages. This option is unportable, but useful in Minix specific scripts. src/commands/simple/file.c Replaced by the Minix-386vm version for it understands more executable types. (Old file didn't know Minix-386 binaries.) src/commands/simple/in.rshd.c Some port selection bug fixed. (Je ne parle pas TCP/IP.) src/commands/simple/rarpd.c Major overhaul. Checks if networks already configured, makes RARP requests, slices bread, answers RARP if /etc/ethers exists. src/commands/simple/rsh.c Proper path to rlogin. src/commands/simple/vol.c Added knowledge of tape block sizes. Very useful now for compressed backups to tape. New manual page. src/fs/cache.c::rw_scattered() Limit I/O vectors to NR_IOREQS blocks. NR_IOREQS = max(NR_BUFS, 64). src/fs/const.h FS_STACK_BYTES symbol removed. FS is now loaded with a normal crtso.s instead of the special head.s. The stack size is set with chmem. The stack is allocated by the boot monitor. src/fs/file.h Locking definitions moved to lock.h. src/fs/glo.h The fstack array removed. src/fs/lock.[hc] Locking code formerly in file.h and misc.c. src/fs/misc.c Locking code moved to lock.c. src/fs/read.c Bug with large pipe writes fixed. (Return count was wrong.) The rw_user() function removed. All calls to rw_user() are replaced by sys_copy() calls. Read ahead limited to NR_IOREQS blocks. src/fs/table.c Device table cleaned up and CD-ROM, AUDIO, and MIXER devices added. src/fs/utility.c The sys_xxx() functions moved to src/lib/syslib. src/inet Broadcast ethernet address properly recognized, and other little fixes. Stack array removed in favour of a stack created by the monitor. src/kernel/aha_scsi.c Deadly bug fixed in the CD-ROM reading code. Drives larger than 1 Gb have a fake 255x63 geometry. (This was already so in the 386vm driver. Stupid of me not to adapt this one.) Major overhaul to remove code that issues multiple commands to the same target. Hardly made a performance difference, but complicated the code leading to crashes on moon phase changes. src/kernel/*_wini.c Partititions is not speled that way. src/kernel/bios_wini.c Adapted to run in protected mode. (Both 286 and 386 protected mode!) Max number of drives set to 4. src/kernel/clock.c Code added to reprogram the clock to the BIOS rate at Minix halt. Tricks added to collect clock ticks that get lost when the BIOS driver is active. New millisecond timer primitives to aid in high speed polling of I/O registers. Various drivers adapted to use them. src/kernel/console.c Don't blank the screen when switching to software scrolling. Don't change the cursor shape. Code added to load a new font into the VGA card. There are no fonts yet though. src/kernel/dp8390.[hc] New ethernet driver for cards based on the DP8390 chip. src/kernel/driver.c Several nop_xxx functions removed. Tasks are now completely configured out of the kernel, they no longer run a dummy loop. src/kernel/ether.[hc] src/kernel/hw_conf.h Old ethernet driver. Removed. src/kernel/i8259.c Reprogram the interrupt controllers only if in protected mode. In real mode we use the normal BIOS interrupt vectors, and only reprogram those that Minix needs. src/kernel/keyboard.c CTRL-ALT-DEL now halts instead of rebooting. (The monitor would otherwise reboot Minix-386. This is usually not what the person behind the console wants.) Reboot code changed to return to the monitor for Minix-386. All devices appropriately reprogrammed for the BIOS. src/kernel/keymaps/spanish.src Modified by Javier Garcia Martin (jawa@inf.deusto.es). src/kernel/klib386.s src/kernel/klib88.s 8086 bios13 code changed to enable all unused IRQ's and to disable them afterward, so that bios_wini need not know the IRQ of the disk. 286 bios13 allows bios_wini to operate in protected mode. It steps back to real mode with a processor shutdown, makes the BIOS call, and steps back up to protected mode. The 386 version makes a call to a monitor function that makes the call using 386 ways to step in and out of real mode. Don't read this code if mentally unstable. Port_read_byte() and port_write_byte() functions added that do block port I/O in byte mode. (Needed for the NE1000 driver and the Mitsumi CD-ROM driver.) Protected mode initialization code cleaned up and calls to it removed from C code. Extended memory copy removed from klib88.s::phys_copy() for lack of use. src/kernel/main.c Stack pointers of servers initialized to the top of their address space where the monitor has made a stack. Stack guard words for the tasks added. The system now panics early if a tasks overruns its stack, instead of crashing in an adjacent task. Real mode vector initialization code removed. Minix now runs in real mode with only minimum changes to BIOS parameters. All the special case code for real mode is gone. One should be able to make BIOS calls from user programs, but that's just an unfortunate side-effect of the cleanup. (The BIOS disk driver is happy though.) src/kernel/mcd.c Mitsumi CD-ROM driver by Michel Prevenier (mrpreve@cs.vu.nl). (Andy has these fun projects for his students. :-) ) src/kernel/memory.c The RAM disk can no longer be placed in extended memory. Minix should now be able to run in protected mode on any 286 or better, so we can forget about "extended memory" being special. src/kernel/mpx386.s src/kernel/mpx88.s Flags set to tell the monitor that stacks must be made for the servers, and that Minix-386 would like to return on reboot or halt. (Requires a new boot monitor, 1.7.0 monitor won't work.) Cruft removed, protected mode initialization cleaned up. Real mode int08-16 removed. src/kernel/ne2000.[hc] NE1000 and NE2000 code for the ethernet driver. src/kernel/proc.c Stack guard check in unready(). src/kernel/ps_wini.c Writing enabled, driver otherwise nonfunctional. (See comments in the file.) src/kernel/rs2.s src/kernel/rs232.c RS232 hangup code contributed by Will Rose (cwr@cts.com). Untested. src/kernel/sb16.h src/kernel/sb16_dsp.h src/kernel/sb16_mixer.h Soundblaster driver by Michel Prevenier (mrpreve@cs.vu.nl). Hardly tested. src/kernel/start.c Several changes for the monitor return and BIOS calls. Call to sel_wini_task() removed, as the BIOS driver is now even useable in 286 protected mode. Simplyfied a bit w.r.t. real/protected mode. src/kernel/table.c New definitions, stack sizes, etc. for the new drivers. src/kernel/tty.c New font change ioctl. RS232 hangup. src/kernel/wdeth.[hc] WD8003 and WD8013 parts of the ethernet driver. src/kernel/wini.c Panic if the selected hd driver doesn't exist instead of silently failing. Sel_wini_task() folded into winchester_task(). src/lib/*/rts/head.s Removed. src/lib/other/printk.c Replaced by the Minix-386vm version that is somewhat smaller and somewhat more ANSI C compliant. src/lib/other/syslib.c Moved to src/lib/syslib and split up. src/lib/posix/_getcwd.c Initialization bug fixed. src/lib/syslib All the sys_xxx() functions from other/syslib.c and the utility.c files of MM and FS gathered here in separate files. (Much like the system call stubs in the posix directory.) The sys_copy() function is changed to look like the former mem_copy() function of MM. src/mm SIGMASK changed to SIGPROCMASK in lower or upper case. src/mm/alloc.c src/mm/main.c Get_mem() removed from main.c and built into alloc.c::mem_init(). src/mm/const.h src/mm/glo.h src/mm/table.c Stack stuff removed. src/mm/utility.c Sys_xxx() functions moved to src/lib/syslib. All calls to mem_copy replaced by sys_copy() calls. (Sys_copy has been changed to have the same interface as old mem_copy, save a few type changes.) src/tools/init.c Stack array removed. Abort signal (CTRL-ALT-DEL) now does a halt. src/tools/mkboot Delay added to 'make hdtest' to make it visible that another device is booted. The other device has its own set of boot parameters! Test and floppy boot device changed into file systems with copies of /dev and /minix. This script must now be run as root from the start, 'su root' calls removed.