Lots of improvements to the USB subsystem, the UHCI controller driver, and the USB SCSI disk driver.
Added support for USB mice and keyboards
Implemented a driver for USB hubs.
Extensive tuning of the FAT filesystem driver, and the scanning of the FAT at mount time is much faster. Also fixed a small fragmentation bug, and turned a bunch of extraneous error messages into debug messages.
The FAT filesystem driver no longer stores the entire FAT in memory.
Added basic hardware detection for OpenHCI (OHCI) USB controllers so that they're at least indicated correctly at boot time.
Improved checks for removable (CD, floppy, flash, etc.) media changes, invalidating the disk cache when the media changes.
The 'filebrowse' program now shows the name of the current directory, and remembers any selection from the parent directory so that it's still selected if the user goes back up.
Re-wrote much of the PS/2 mouse driver, primarily to deal with out-of-sync situations that could cause the mouse pointer to jump around.
Re-added the 'logout' program to the basic installation -- without it there's no 'logout' option in the shutdown menu.
Added a "linked list" implementation to the kernel for generic management of lists of pointers.
Replaced bzero() calls in the kernel with kernelMemClear() calls.
Updated the kernel's exception handler so that it will print exception address/symbol information even if multitasking isn't yet enabled.
Added a '-n' option to the 'format' program, for specifying the volume name (label).
Added a kernelDebugHex() function for doing simple hex dumps.
Renamed the kernelKeyBoardDriver to the kernelPs2KeyboardDriver and the kernelPS2MouseDriver to the kernelPs2MouseDriver
Got rid of the kernelMemoryReleaseSystem() function -- the regular kernelMemoryRelease() function can now handle releasing system memory blocks.
The printf() and family %x format specifiers now print only unsigned values.
Fixed: The Disk Manager showed partitions with the starting and ending cylinders determined from information in the partition table. This could be inconsistent (particularly in the case where geometries are guessed) with the geometry of the disk as seen by the kernel.
Fixed: Using the Disk Manager with a hotplugged USB disk caused a divide-by-zero exception because the geometry values were zeros. The kernel SCSI disk driver now determines/guesses a geometry, and the Disk Manager now ensures that the values are non-zero.
Fixed: Using the Configuration Editor to open a config file with no predefined variables resulted in a window with no 'list' component.
Fixed: The text editor couldn't create a new file.
Fixed: The 'filebrowse' program could crash when you using the 'del' key to delete files.
Fixed: An occasional problem with ejecting ATAPI (CD-ROM, etc) devices in the kernelIdeDriver code.
Fixed: Spurious interrupts could cause the kernelPicGetActive() function call to hang in the driver.
Fixed: Command line option processing for the 'format' and 'rm' commands.
Fixed: Calling the component 'set visible' function didn't work for containers.
Fixed: USB "can't enable port" messages.
Fixed: Error messages were being double-printed on the screen when console logging was in effect.
Fixed: The USB UHCI driver was not returning the number of bytes transferred for transactions with a data phase.
Fixed: Some window ops were generating error messages because they were trying to malloc() 0 bytes when the root window contained no components.
Fixed: The _xpndfmt() function was causing an exception when printing pointers in hex using the %p format specifier.
Fixed: The _xpndfmt() function was causing a divide-by-zero fault when printing GUIDs in the Disk Manager.
Fixed: The kernelDiskGetMediaState() function wasn't locking the disk before accessing the disk structure.