Visopsys 自从1997年以来就已经开始开发,目前最新版本为0.69,它非常小巧,光盘版的才5MB左右,而软盘版的也700KB不到。并且它运行起来非常快,而 且还是开源软件。它虽然小,但是提供了功能齐全的图形界面,支持实时可占先多任务和虚拟内存。Visopsys尽力与多方兼容,但是它不是任何其他操作系统的一个克隆版本。
下载:
CD-ROM版本:http://visopsys.org/files/visopsys/visopsys-0.69-iso.zip
软盘版本:http://visopsys.org/files/visopsys/visopsys-0.69-img.zip
源代码:http://visopsys.org/files/visopsys/visopsys-0.69-src.zip
Vmware镜像:http://visopsys.org/files/visopsys/visopsys-0.62-vmware.zip
Visopsys 0.69的主要更新:
改善了USB子系统包括对USB mice/keyboard和shubs的支持, 调整了FAT相关驱动程序, 并对用户程序模块,OS内核,C语言库进行了修复以及改进。
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.