Download Visopsys 0.68

Spread the love

Andy McLaughlin has been working on the Visopsys operating system since 1997 and recently released version 0.68. The operating system has a full implementation for multitasking, 100% protected mode and virtual-memory and, according to the developer, has a massively monolithic style kernel. There is a small selection of applications available for this platform, of which the comprehensive Disk Manager stands out that allows for hassle-free partition creation and modification. For a complete overview of the how and what, we refer you to this page† The announcement and the list of changes from version 0.68 look like this:

Version 0.68:

Overview: This is a maintenance release, with a focus on disk I/O performance (fixed the kernel’s disk cache, and added IDE lookahead and write caching), secure deletion (shredding) of files/partitions/disks, and bug fixes, including important changes to the OS loader resulting in more reliable booting on more systems.

  • Re-implemented the kernel’s disk caching. Previously, performance was generally bad but could be horrendous under heavy I/O, as well as evidence that it was buggy and could occasionally cause data corruption.
  • Added read caching (lookahead) and write caching ability to the IDE disk driver. Write caching necessitated a flush() disk driver function to be called from the higher-level sync() function.
  • In the Disk Manager, turned off software disk caching when doing a disk copy operation; vastly improves I/O throughput for faster copies.
  • Implemented new A20 address line code in the ‘vloader’ OS loader, for successful booting on more systems. New A20 enabling methods include a BIOS call and a write to port 92h.
  • Implemented secure deletion of disk data with a kernelDiskEraseSectors() function that does passes of overwriting the raw disk sectors. Added an ‘erase’ operation to the Disk Manager to enable this for partitions and whole disks.
  • Implemented secure deletion for files, which does passes of overwriting the file data. Added a command line option to the ‘rm’ command to invoke it.
  • Reorganized some of the malloc() code and added debugging output.
  • Added logic to the malloc() code (used both the kernel and user programs) for deallocating heap memory when it is no longer being used, rather than keeping it all indefinitely. Each block now keeps a record of its allocation, and when the whole allocation is unused it is freed.
  • Updated some partition tag descriptions in the kernel disk code (will show up primarily in the Disk Manager).
  • Added a ‘-R’ option to the ‘cp’ program for recursive directory copying.
  • Added regular write-protect checking to the floppy driver, so that by the time a filesystem is mounted we should already know if we can’t write to it.
  • The kernelDevice for system memory now contains an attribute with the memory size. Viewable from the ‘lsdev’ (Devices) program.
  • Removed the kernelDiskSyncDisk() function, made kernelDiskSync() a call for specific disks, and added a kernelDiskSyncAll() function for syncing all the disks.
  • Add a kernelDiskGetStats() function for getting disk performance data, and add that info to the Program Manager’s display.
  • Added a set of software flags to the ‘disk’ and ‘kernelDisk’ structures to indicate changeable things like media state, door state, read-only, ‘sync’ flag, etc. The previous ‘flags’ fields was really an indication of the hardware type, so was changed to a ‘type’ field.
  • Added a kernelDiskSetFlags() function to allow changing user-settable values ​​in the new flags field, and added a DISKFLAG_NOCACHE flag to disable the software cache for the disk.
  • Added the optional-argument-option support to the getopt() C library function.
  • Added a “file ops” test to the test program.
  • Added a basic “disk I/O” test to the test program.
  • Removed the redundant vshCopyFile() function from the vsh library.
  • Fixed: The floppy disk version was too full, crashed during boot when it subsequently couldn’t write log files, etc., and otherwise spewed too many error messages.
  • Fixed: When an IDE disk had a small multi-sector value like 16, reading large files could fail with an error message about too many PRD entries.
  • Fixed: In the Disk Manager, when NTFS resizing failed (for example with the unclean journal message) control didn’t return – it just hung.
  • Fixed: With large IDE disks, on some systems, the kernel seemed to be getting 28-bit-limited geometry and size values ​​from the BIOS. The IDE driver replaces BIOS values ​​with ones from the device/controller wherever the BIOS values ​​make more sense.
  • Fixed: Doing a ‘full’ Visopsys install on a ~80mb partition, after choosing to format as FAT16, could totally crash/hang the system.
  • Fixed: The mouse was leaving tracers at the rightmost and bottommost edges of the screen (1 pixel width).
  • Fixed: The kernelFileCopy() function now allocates memory for its copy buffer using kernelMemoryGet() rather then kernelMalloc().
  • Fixed: Most of the file system data allocated in the FAT filesystem driver was not deallocated, simply discarded.
  • Fixed: The kernelFileCopyRecursive() function caused a page fault when it encountered an empty directory.
  • Fixed: Though the Disk Manager’s ‘move partition’ and ‘copy disk/partition’ progress indicators would show the correct time, but the percentage could overflow. going back to a smaller number and then climbing again.

Version 0.67:

Overview: This is a maintenance release, including a number of bug fixes and the addition of new capabilities to the IDE disk driver including PCI, DMA, and 48-bit addressing support; a significant re-engineering of the Disk Manager program to modularize it for new disk label types, plus support for moving logical partitions and creating ‘preceding’ logical partitions.

  • Added PCI, DMA, and 48-bit addressing support to the IDE disk driver.
  • Did some touchups and corrections to the Visopsys IO code in the libntfs library.
  • Implemented the ability to move logical partitions in the Disk Manager.
  • Implemented the ability to create ‘preceding’ logical partitions in the Disk Manager.
  • Modularized the Disk Manager so that it will be better suited for working with different types of disk labels.
  • Added a debug_io category to the kernelDebug.c functions.
  • Added itoux() and lltoux() pseudo-C library functions for printing unsigned hexadecimal strings.
  • Commands specified for menu items in the desktop configuration file are now checked to make sure they exist.
  • Corrected the ‘%p’ specifier printf() and family format strings, so that it is printed as an unsigned value.
  • Cleaned up new compilation warnings generated by GCC 4.1.1.
  • Fixed: Lines of only whitespace in configuration files used by the kernel configuration reader/writer functions stopped processing.
  • Fixed: Launching a new window failed to reset the global “focused component” until the mouse was moved.
  • Fixed: When a process was killed, the text input stream’s ‘echo’ attribute was not being reset.
  • Fixed: The FAT filesystem driver’s “get unused clusters” function was not properly returning an error if no free clusters were found.
  • Fixed: In the Disk Manager, using the cursor keys in the disk list or partition list did not change the selection.
  • Fixed: The kernel’s GUID generation routine could hang because it was using an uninitialized lock structure.
  • Fixed: When creating a new logical partition in between two others, the Disk Manager didn’t set the disk order correctly.
  • Fixed: IDE disk driver now properly checks for sector number overflow. Previously it could fail to detect attempts at >28-bit addressing, causing overflow at the ~130GB mark.
  • Fixed: A bug in the ‘lsdev’ program printing devices when the number of attributes was less than 2.
  • Fixed: The progress dialog didn’t layout properly when resized, and also fixed the layout of a few dialogs and windows vis. resizing.
  • The Disk Manager’s progress dialogs that show time remaining no longer zero-pad the values, and specify the time in “X hours X minutes” format.

Version number 0.68
Website visopsys
Download
License type GPL
You might also like