Change Log

VERSION 0.92
25/09/2023

Overview: This maintenance release introduces usability and stability improvements, fixes RAM disk boot support, adds sparse file and 64-bit support to the EXT filesystem driver, and includes a number of bug fixes.

  • Added support for 64-bit EXT filesystems (read-only, as before).
  • Added support for sparse files to the EXT filesystem driver.
  • Fixed some problems with the RAM disk boot feature, first introduced in version 0.85.
  • Updated the ‘edit’ Text Editor program to add ‘New’ and ‘Save As’ menu items, bringing it more in line with conventions used by other editors. When invoked without a filename or creating a ‘New’ document, the ‘Save’ menu item is disabled. Use of a temporary file for unsaved documents has been discontinued.
  • Updated the administration.conf files for German, Spanish, Russian, and Turkish.
  • Factored some code in the BIOS OS loader and fixed some rounding errors.
  • Added a lock to the freeEntries list in kernelFile.c.
  • Added locking to directory fileEntry structures when adding to or removing from their lists of entries.
  • Renamed the floppy image file to include the word ‘floppy’.
  • Fixed: A SATA driver problem with VmWare’s virtual SATA disks. There was an error in the setting of SATA AHCI DMA modes during initial disk enumeration.
  • Fixed: Problems with Jpeg loading and/or image resizing when creating thumbnails or clicking on multiple images. In a number of cases, thumbnails were created, but the View program would report an error trying to load them.
  • Fixed: When booted from a read-only filesystem (CD), pressing PrtScn could cause a page fault, and error messages on the console saying “Filesystem is read-only” and “Unable to open [file] for writing”.
  • Fixed: When mounting a new filesystem, it would appear before the other, alphabetically-sorted, items in a directory listing. The most recently mounted filesystem was always being inserted as the first entry in its mount point’s parent directory, because the file name had not yet been set.

VERSION 0.9
20/04/2020

Overview: This major release offers substantial upgrade of the underlying Visopsys operating system, a subtly updated look, Unicode support, and VMware mouse integration.

      • All of the background wallpaper images are new, the colours have changed slightly, and a number of the GUI components have had their appearances updated.
      • Menus have been updated for the German, Spanish, Russian and Turkish languages.
      • Added wide-character and multibyte character (UTF-8) support throughout the operating system – to the fonts and charsets, the GUI, the C library, etc. It has replaced the ISO-based internationalization schemes. Although some knowledge of ISO codepages was kept, things have been more-or-less entirely switched over to Unicode.
      • Added VMware mouse integration, so that a Partition Logic guest coordinates with the host to automatically grab or ungrab the mouse cursor as it enters or leaves the window. Requires the option to be enabled in VMware.
      • Added a computer chip icon, ‘chip.ico’. To start with, the Computer Browser will use it for RAM disks.
      • Did some tidy-up of the translated .po files – mostly updating c-format strings’ parameters, punctuation, and newlines.
      • Fixed: The Computer Browser program could show mismatches between disks and icons, if it didn’t have an icon for a particular hardware type (specifically, RAM disks). Made it more robust, with a default icon.
      • Fixed: The Disk Manager’s creation and resize dialogs were full-screen, and looked all messed up.
      • Fixed: Several of the programs didn’t have .pot translation files.
      • … Plus dozens of other improvements to the Visopsys operating system (see https://visopsys.org/download/change-log/)

VERSION 0.85
23/01/2020

Overview: This major release offers an updated look, touchscreen support, better widescreen viewing, and improved performance. It includes FAT filesystem resizing, mouse scroll-wheel integration, better EXT4 filesystem handling, RAM disk boot support, improved internationalization including Russian and Turkish translations, and an OHCI (USB 1) driver.

      • The Disk Manager now has the option to write a new, empty partition table, of any supported type (currently DOS/MBR and GPT).
      • The Disk Manager can now copy disks and partitions even when there are read or write errors; this way it can be used to recover data from a failing disk. If a large read or write operation fails, after prompting the user about whether to continue, it will restart from the failure point and attempt each sector of the failed operation individually.
      • The Disk Manager now has a checkbox in graphics mode, to show or hide removable disks. It is un-checked by default.
      • The Disk Manager now offers a way to view ‘raw’ partition table data via the new ‘Disk info’ item in the Disk menu.
      • The Disk Manager now shows slices for reserved areas, instead of showing all un-partitioned space as empty.
      • Added FAT filesystem resizing capability.
      • All of the desktop background (wallpaper) images are new.
      • There are new default colours, making for a slightly darker theme.
      • The welcome screen has had a facelift; it’s now a full-screen window with a new splash image.
      • Window title bars are thicker, and checkboxes and radio buttons have been enlarged.
      • Added a System Diagnostics (‘sysdiag’) program for testing memory and disks.
      • Added support for deep EXT4 extent inodes.
      • The operating system loader now attempts to select a video mode that matches the hardware’s native/best aspect ratio, for wide-screen displays. The user can override this in the Display Settings window, or at boot time by pressing ‘Esc’ during kernel loading, and selecting a mode from a menu.
      • Added RAM disk booting for coreboot/SeaBIOS support in Qemu, and potentially PXE booting in the future. Create an empty file named ‘ramdisk’ in the root directory of the boot floppy image to trigger this feature.
      • Significantly re-engineered the ‘Edit’ text editor program. It’s much more realistically usable now: it mostly works, supports the Home, End, and PgUp, and PgDown keys, and no longer does automatic line-wrapping, although it doesn’t yet support horizontal scrolling.
      • The USB 3 XHCI driver now supports 64-bit contexts.
      • Updated translation strings in the kernel message files, and in the Disk Manager’s German message file.
      • Increased the SCSI USB disk driver’s read/write timeout so that it’s proportional to the number of sectors being operated upon.
      • The floppy disk driver now has a workaround to handle broken emulation software (VMware) that always sets the ‘media changed’ bit. Previously the filesystem layer would interpret this as the media having been removed.
      • Added a Virtual Keyboard (‘keyboard’) program for touchscreen input, which can also be clicked with the mouse. It is started automatically in an iconified mode when touchscreen hardware has been detected. The icon shows in the right corner of the top taskbar menu, and can be tapped/clicked to show or hide the virtual keyboard.
      • The ‘clock’ program has been updated so that it shows as a label in the top taskbar menu, rather than a small window at the bottom of the screen.
      • The mouse pointer can now be hidden (for touch operation).
      • Added USB touchscreen support and a touchscreen abstraction layer, akin to but distinct from the generic mouse functionality.
      • Added an OHCI (USB 1) host controller driver. All 4 USB controller types are now supported.
      • The XHCI (USB 3) driver is now aware of extra ‘scratchpad buffer’ bits introduced in the 1.1 specification.
      • Added a new Russian translation, and fonts and character set data for iso-8859-5 (Russian).
      • Added a new Turkish translation, and fonts and character set data for iso-8859-9 (Turkish).
      • Added Russian and Turkish keyboard mappings.
      • Added scrolling to the text-mode vshCursorMenu so that we can use it to do things like partition type selection for MS-DOS labels in the Disk Manager (has way too many choices for the current vshCursorMenu).
      • Fixed: The Disk Manager now checks for mounted partitions before doing ‘delete all’.
      • Fixed: The ‘clock’ program was was showing the weekday (+1) and day of the month (-1) incorrectly since 0.77.
      • Fixed: The EXT filesystem driver’s interpretation of the inode ‘blocks’ field was incorrect.
      • Fixed: EHCI handling of full-speed USB 2.0 hubs was incorrect due to an error in the specification.
      • Fixed: A small issue in the setting of endpoint contexts while configuring XHCI device slots.
      • Fixed: A bug in the XHCI driver in which certain class-specific device requests could be confused with standard USB requests. In particular, setting keyboard lights would cause keyboard devices to be erroneously re-configured.
      • Fixed: When installed in ‘basic’ mode, the Disk Manager would emit a spurious error message attempting to load its icon image.
      • Fixed: When installed in ‘basic’ mode, all filesystem format operations were failing, since libntfs was being dynamically linked to the format program. Both the Disk Manager and the format program now use dlopen()/dlsym() to check whether ntfsFormat() is available, and act accordingly (i.e. NTFS formatting is not available in ‘basic’ installations, but formatting other filesystem types is supposed to work).
      • Fixed: The kernel API and EXT filesystem driver were returning 64-bit values incorrectly. The userspace filesystemGetFreeBytes() function wasn’t working for values of > 32 bits.
      • Fixed: The AHCI SATA driver no longer calls the multitasker to wait for I/O when multitasking is not enabled (e.g. during initial disk enumeration).
      • Fixed – The FAT filesystem driver no longer refuses to read a directory if it can’t count the clusters of every file. A corrupt file could render whole directory trees inaccessible, or if in the root directory, could cause the filesystem to become unmountable, and the system unbootable.
      • … Plus dozens of other improvements to the Visopsys operating system (see https://visopsys.org/download/change-log/)

VERSION 0.77
29/06/2015

Overview: This maintenance release provides performance and quality improvements, rather than new features. Improved boot time and reliability, GUI performance, support for composite USB devices, and fixes to several hardware drivers.

      • Added proper support for composite USB devices, treating each interface as a separate device at the kernel level.
      • The CPU driver no longer determines the CPU frequency using the RTC, but rather using the system timer and a short countdown. This shortens the boot time by 1-2 seconds.
      • It is now possible to drag scrollbars and sliders without keeping the mouse pointer strictly within the component or window.
      • Added language-specific kernel configuration files for Spanish and German
      • Improved the window system graphics performance.  A sequence of drawing and updating operations can happen without the visible screen data needing to be updated every time.
      • Improved the performance of the PS2 mouse driver. It was very laggy on some systems.
      • Added basic functionality for virtual keyboards. A virtual keyboard device is now created by default, and key strokes can be sent to it.
      • In the Display Settings program, the desktop wallpaper sample is now scaled to the screen aspect ratio, and if no wallpaper is chosen, the sample is filled with the desktop color.
      • The command window no longer requires typing a space character before or after special symbols, such as an ampersand.
      • Fixed and standardized command-line option processing for most of the included programs.
      • Re-engineered the GUI ‘canvas’ component for better drawing performance.
      • The window system’s icon code that formats labels has been re-written, and will now split the text label with newlines.
      • The window ‘canvas’ component will now auto-fill with a custom background color, if one is specified.
      • Made the thickness of slider bars and scroll bars configurable in the window.conf file.
      • The USB subsystem now adds kernelDevice entries for USB devices that aren’t supported (aren’t claimed by device drivers) so that the device listing is more complete.
      • USB work: updated the hub definitions to make USB version compatibility more obvious, split the keyboard and mouse drivers into separate files, and removed the combined HID one. Improved the collection of interface and endpoint data. Improved support for composite (multi-interface) devices by requiring drivers to ‘claim’ individual interfaces, instead of the whole device. Reduced the overhead of setting EHCI static endpoint characteristics+capabilities, and fixed the setting of USB 2.0 hub address and port for low- and full-speed devices.
      • Changed the USB drivers so that a physical device will only have its configuration set once, in the case where drivers are claiming and using multiple interfaces.
      • Added a longer ready timeout to the USB disk driver.
      • The XHCI (USB3) driver no longer disables I/O and memory decoding in PCI when detecting controllers.
      • The kernel loader’s gzip file classification no longer requires the file to qualify as binary; it’s possible to have uncompressed text blocks/members inside the archive, which can cause the gzip file to be considered text by the loader.
      • Reduced reliance on the system timer, particularly in the disk drivers, in favour of the kernelCpu functions that measure time in milliseconds.
      • The IDE disk driver’s ‘identify device’ code now uses the data structure used by the AHCI SATA driver.
      • When locating the boot device, the kernel no longer relies on the OS loader to pass the LBA of boot sector. Identification is now based strictly on the boot sector signature.
      • The floppy disk driver has been updated so that it won’t attempt to support ‘type 16’ (removable ATAPI/USB) drives.
      • The window library’s functions for making thumbnail images have been updated to allow images to be stretched to the maximum size, and to fill any unfilled area with a background color.
      • Fixed: The kernel’s fileStream code was not correctly handling streams opened in ‘append’ (write-only) mode.
      • Fixed: The kernel’s file stream code was not keeping track of/setting the file size correctly.
      • Fixed: The EXT filesystem driver had a bug in its readFile() functionality. When the inode uses block lists, and the starting block number is greater than the number of ‘direct’ blocks, the driver was simply reading the first sequence of indirect blocks, without regard to the starting block number.
      • Fixed: The AHCI SATA driver could fail to detect disk(s) with the error message “AHCI port %d BSY or DRQ set – skipping device detection”.
      • Fixed: Incorrect status and error register writing functions in the USB1 UHCI driver.
      • Fixed: The IDE driver wasn’t dealing well with individual controllers and channels operating in ‘compatibilily’ mode (alongside others that may be native). Now, we examine each controller and channel, whether it has PCI I/O ports and interrupts, and whether it should continue to stay in compatibility mode or be switched to native.
      • Fixed: Added PCI definition for class:subclass FF:00 to suppress spurious warnings about unknown subclasses.
      • Fixed: Removed the automatic USB Mass Storage reset during device enumeration of USB disks. Some devices, on some controllers, stop responding, and it seems unnecessary.
      • Fixed: The EHCI (USB2) unregisterInterrupt() function was incorrectly unlinking interrupt queue heads.
      • Fixed: The middle and right mouse buttons were swapped for all USB boot-protocol mice.
      • Fixed: XHCI (USB3) interrupt handling to allow concurrent interrupt and non-interrupt communication between multiple endpoints.
      • Fixed: In the window library’s file browser widget, some of the default icon names were wrong, not up to date.
      • Fixed: The window library’s windowCenterDialog() function, so that it won’t place a window at negative coordinates (off the top or left edges of the visible screen).
      • Fixed: In the Disk Manager, when resizing a partition in graphics mode (and other sliders generally) merely mousing over the slider could cause the text field to be changed.
      • Fixed: When setting the video resolution in the Display Settings program, the video mode file was not having its size set correctly, and an error message “File has not been opened for writing” would appear on the command line.

VERSION 0.76
16/01/2015

Overview: This maintenance release is focused on improved quality, rather than new features.  The EXT (Linux) filesystem driver has been re-engineered, the main Partition Logic program has been fixed in numerous ways, and hardware drivers and subsystems such as USB, APIC, and RTC have been tuned.

      • Did a fairly major overhaul of the EXT filesystem driver, adding more adaptive feature support, plus support for EXT4 flexible block groups and basic support for EXT4 extent-based files.  Also fixed a little bug in the formatting functionality (setting the EXT_INCOMPAT_FILETYPE flag in the superblock).
      • Improved the new APIC driver so that it considers the correct priority order when returning the number of the active interrupt.  This fixes failures when using the VirtualBox emulator, and some failures seen with the Qemu emulator.
      • Partition Logic is slowly transitioning away from the notion of ‘cylinders’, and towards showing the user units of sectors, megabytes, etc.
      • Some modern systems don’t allow manual control the A20 address line, but work anyway.  The OS loader will still print an error message, but it will no longer terminate booting with a fatal error in such cases.
      • Added a extra support for multi-interface (composite) USB devices.
      • Improved the EHCI (USB 2.0) driver and the way it manages queue heads and the periodic schedule.  Interrupt queue heads for devices are no longer placed directly into the periodic schedule; instead linked, interval-specific queue heads are used.  Linked lists of queue head items are now chained correctly.
      • All USB device drivers now check to make sure a device hasn’t already been ‘claimed’ by another driver.
      • All USB transaction creators now specify timeout values as appropriate, and all of the USB host controller drivers now pay attention to those.
      • Added kernel locking to the XHCI (USB 3.0) driver.
      • Added a short delay to the XHCI (USB 3.0) controller driver, after setting the port reset bit, before reading it back to check for the ‘clear’.  In some cases it can read clear straight away, but the reset hasn’t completed yet, resulting in device detection failures.
      • Fine-tuned the PS2 mouse and keyboard timeouts, and the USB keyboard typematic repeat timing.
      • Improved the layout code of the window library dialog boxes.
      • Got rid of the checks/warnings about disk geometry errors when performing a partition table check.  We want to reduce reliance on legacy disk geometry, and frequent mismatches meant a lot of scary-looking warnings that probably didn’t amount to anything anyway.
      • The code for specific disk label types (MS-DOS, GPT) now specifies the first and last available sectors for data, and the starting and ending values for new/moved/resized partitions are adjusted to accommodate these.
      • Pasting a partition now requires committing changes, as with format operations, erases, filesystem resizes, etc.
      • When disks or partitions are erased, it now checks for mounted filesystems, and the kernel is now told to re-scan the filesystem types, the same as after a format operation.
      • Now checks for a mounted filesystem before deleting a partition.
      • No longer enables the ‘set active’ button/menu item when working with a GPT partition table.  The option is meaningless for this disk label type.
      • Fixed: The VirtualBox emulator was not cooperating with the RTC driver, and the boot would fail/crash.
      • Fixed: A double-fault would occur if an exception was triggered before multitasking was enabled.
      • Fixed: ALT-TAB only worked for activating the top menu bar if at least one window existed (i.e. something in the ‘Windows’ menu).  It now tries to activate the first menubar menu that has some menu items in it.
      • Fixed: Automounting filesystems (from mount.conf) failed if no mount point was set.  The filesystems program doesn’t force the user to specify one.  The kernel now attempts to use a default (/<diskname>).
      • Fixed: The data moving threads could calculate incorrect sector numbers when copying/moving data from the start of the disk, toward the end of the disk.
      • Fixed: Copying and pasting partitions between MS-DOS disks and GPT disks wasn’t working.
      • Fixed: An incorrect partition diagram with certain MS-DOS logical partitions.  Empty spaces were being calculated using cylinder values, which aren’t necessarily set for logical partitions, by other software.
      • Fixed: Pasting a partition into an empty disk would clobber the first track, disk label, etc. of the empty disk.
      • Fixed: MS-DOS extended partitions were not having their logical sizes calculated correctly (Parted would complain about ‘overlapping partitions’).
      • Fixed: Corrected the numbers shown when querying the user for partition size, when creating or resizing.
      • Fixed: The horizontal sliders used for moving, resizing, and creating partitions didn’t update their associated text fields when moved with keyboard presses.
      • Fixed: The VSH cursor menu was corrupting memory by attempting to set the text cursor row to a negative number, when there were too many items to fit in the text area/screen.  Also added better parameter checking to the kernelText.c code.
      • Fixed: a divide-by-zero error in the window library’s windowNumberDialog code, that would cause it to crash when the minimum and maximum values were the same.
      • Fixed: 2 bugs related to GUID generation; The structure was not being defined as ‘packed’, and separately, the kernelGuidGenerate() function was over-writing the end of the structure by 2 bytes when writing the node ID.
      • Fixed: The file browser program would crash when passed a relative directory name on the command line.

VERSION 0.75
29/10/2014

Overview: This hardware-focused maintenance release adds USB 3.0 support, improved USB 2.0 and USB hub support, an APIC interrupt controller driver, plus several bug fixes and general quality improvements.

      • Added USB3 (XHCI) support.
      • Greatly improved USB2 (EHCI) and hub support.
      • Added APIC interrupt controller support.
      • Added support for detecting and parsing the Intel multiprocessor table.
      • The USB layer code no longer sets device configurations by default. It is now left up to the individual device drivers, when they determine that a given device is supported. Configuring some unknown, built-in, proprietary devices can cause other devices to stop responding.
      • USB hub removal now triggers a recursive device removal for all downstream things connected via the hub.
      • If a mounted removable disk (such as a USB stick) is removed from the system, a call to kernelFilesystemRemoved() will now act like a forced umount – unbuffering files and removing the filesystem – without attempting further accesses to the physical disk.
      • Updated some definitions and things in the PCI driver.
      • Fixed: In the computer browser, when clicking to mount a CD-ROM for the first time, from a cold boot, the file browser that was launched sometimes wouldn’t start in the CD-ROM’s mount directory.
      • Fixed: In the file browser and the file dialog, the current directory field started off disabled (greyed-out), but changing the directory caused it to be redrawn as enabled (not greyed out). Components weren’t being re-rendered when their setData() functions were called.
      • Fixed: A bug in the USB driver subsystem, in which a device disconnection could cause the USB thread to go into an infinite loop.
      • Fixed: Increased timeout values for SCSI ‘start unit’ commands, to support various USB-attached disks (hard disks and CD/DVD drives that need time to spin up).
      • Fixed: An IDE disk controller driver bug where an unhandled interrupt could result from selecting a nonexistent slave drive on certain controllers.
      • Fixed: Timing issues in the AHCI SATA driver related to CD/DVD drives.

VERSION 0.74
12/07/2014

Overview: This maintenance release features enhanced internationalization support, with German (and partial Spanish) translations, native SATA and USB CD/DVD support, and extensive usability, stability, and performance improvements, most notably to the kernel memory, user input, disk I/O, and GUI subsystems.

      • Added Spanish and German translations for many of the user programs and GUI features. The user can select their language at the initial splash window.
      • Implemented a full SATA (AHCI) driver.
      • Implemented an ATAPI-over-USB driver for USB CD/DVD drives.
      • The code that detects GPT partition tables now checks whether the MS-DOS “guard table” is really a guard table, for more reliable GPT detection.
      • Improved SCSI disk initialization and fixed USB mass storage error detection.
      • Improved timing precision for IDE port polling timeouts and channel resets.
      • The USB 2 (EHCI) driver now handles controller-level error interrupts (host system errors).
      • The disk caching code now does more combining of cache entries for improved performance, reducing the number of disk writes.
      • Some memory management code has been reworked.
      • Changed the ‘bootmenu’, ‘copy-mbr’, and main Partition Logic programs to preserve the ‘disk signature’ field when installing a new MBR sector. This solves the problem of Windows requiring a ‘repair’ after installing the basic MBR or MBR boot menu. Also removed a warning/confirmation message about the repair thing from the ‘bootmenu’ program.
      • Part of the GUI system has been re-written, and GUI menus have been changed so that when the topmost menu item is selected, pressing cursor-up removes the selection.
      • The file dialog window now shows the current path the way the file browser program does.
      • Implemented mouse and keyboard threads to process input outside of the interrupt context, for improved stability.
      • The keyboard system has been redesigned.
      • Added typematic key repeats for USB keyboards.
      • Interrupt handlers are now disallowed from allocating or freeing memory, or changing the page tables/directories. This is a stability improvement.
      • Separated the window shell thread from the main GUI system
      • In the computer browser, inapplicable context menu items are now greyed out, such as ‘mount’ when a disk is already mounted.
      • Window menu items are now set to the same width as their parent menu, so that they’re all the same length when highlighted/selected.
      • Fixed: espectalll123 gave us a corrected Spanish keyboard map.
      • Fixed: Modified the USB 2.0 (EHCI) and SATA (AHCI) drivers so that they don’t fail if PCI bus mastering can’t be enabled.
      • Fixed: SCSI protocol command sizes and status packet handling for USB mass storage devices.
      • Fixed: On some systems, the NTFS code was not detecting the filesystem due to a debug-mode stack corruption issue.
      • Fixed: When clicking on the CD-ROM icon in the Computer Browser, there was an error message “Can’t mount disk on” (even though the CD could be mounted from the command line).
      • Fixed: USB 2.0 (EHCI) hot-plugging of USB mass-storage devices would tend to fail. The devices were being detected, but were generating communication errors.
      • Fixed: Dismissing a dialog box could cause the mouse pointer to disappear, when the mouse was somewhere within the parent window.
      • Fixed: Window resizing was very difficult and the correct mouse position to do so didn’t really correspond with the point where the mouse cursor would change to a resize cursor.
      • Fixed: Right-clicking in a menu would cause the menu item to show selected. Right-clicks aren’t currently relevant for menu items, so now we just ignore them.
      • Fixed: If a CD-ROM is mounted, the computer browser would access it continually. Made this better, but getting the disk properties causes the kernel to check the removable media status, so it’s not entirely avoidable.
      • Fixed: Right-clicking anywhere in the computer browser would bring up the context menu for the selected disk. That should only happen when right-clicking on an actual item. Added a getData() and eventComp() functions to the windowList component, to return the objectKeys of all the windowListItems, and to let windowListItems receive right-click context menu events, respectively.
      • Fixed: Moving the PS/2 mouse around during hardware initialization of its driver could cause a cascading boot failure.
      • Fixed: When there were windows on the screen, pressing ALT-TAB 2-3 times could cause a major GUI crash.
      • Fixed: When resizing images in the ‘view’ program, the window title bar didn’t update (with the correct zoom percentage) until the window focus changed.
      • Fixed: In graphics mode, the File Browser only noticed directory changes when a file is added or removed, but not sub-directories.
      • Fixed: The interpretation of the Linux swap fileystem header.
      • Fixed: Support for using images inside of GUI buttons
      • Fixed: Improved the stability of the Screenshot program.
      • Fixed: Pressing backspace at position (0,0) would cause the Edit program to crash.
      • Fixed: Clicking on the kernel binary in the file browser program would cause a crash in the kernel’s runtime loader

VERSION 0.72
10/09/2013

Overview: This release consists of hardware support updates and bug fixes, with particular focus on USB. Support for USB 2 controllers and devices has been added.

      • Added initial USB2 (EHCI) support.
      • Added a stub USB3 (XHCI) driver.
      • Improved the output of the Devices program so that it’s a little bit more readable.
      • Improved the collection and recording of the CPU vendor string.
      • Did a bit more development of the simple ACPI driver.
      • Fixed: USB hub detection could happen twice – once during the controller’s initial device connection detection, and again when device driver detection happened for hubs.
      • Fixed: The first (number 1) USB port didn’t work on many systems.
      • Fixed: Certain USB hard disks not working, and/or causing boot failure.
      • Fixed: The AHCI driver no longer fails to initialize if PCI bus mastering can’t be enabled.
      • Fixed: ACPI (soft) power off could cause some systems not to boot the operating system on the next attempt.
      • Fixed: Removed possible infinite loop condition in the ‘real time clock’ driver.
      • Fixed: When installed somewhere via the native installer (for example on a USB stick) with a FAT32 filesystem type, the volume label was not being set properly.
      • Fixed: The graphical native installer would often skip the password setting box (flashing up and then disappearing).
      • Fixed: The TAB key was not working when using a USB keyboard.

VERSION 0.71
20/11/2011

Overview: This maintenance release consists of general bug fixes, and improvements to hardware detection and device drivers, with particular focus on USB. New features include the ability to boot from a USB device (a new USB image is available for download) and the ability to power down the system.

      • Implemented USB booting.
      • Added a USB blank-image file and a script for installing into it.
      • Improved detection of USB devices by always separating hotplug behaviour from coldplug detection at boot time.
      • USB 2.0 (EHCI) controllers are detected and disabled (reset) so that they don’t interfere with access to the legacy USB 1.1 UHCI ports.
      • Search all 255 possible PCI buses, not just the first 10. It’s slower to search them all, but some devices have been seen to reside on e.g. the 17th bus.
      • Improved recognition of PCI device classes and subclasses.
      • Added support for multiple buses of any type (such as PCI and USB)
      • Implemented a partial ACPI power management driver, so that the shutdown command can power off the system.
      • Updated GPT GUIDs for partition types, and moved the definitions and descriptions into the header file src/include/sys/guid.h
      • The boot menu installer now shows a warning that Windows 7 (and maybe Vista) will require the installation CD, in order to ‘repair’ its boot configuration.
      • The OS loader now passes a boot sector ‘signature’ found on the boot device (such as in the MBR) to the kernel in order to help the kernel figure out for itself which device it should mount as the root filesystem.
      • We now mark the logical disks of non-partitioned physical disks as being ‘primary’ partitions.
      • The kernel’s disk management code now recycles disk numbers, so that for example, inserting a USB stick which gets named sd0, then removing it and reinserting, doesn’t result in the disk being named sd1
      • Reformatted the output of the disks command.
      • The EXT 2/3 driver can now mount filesystems with variable-sized inode structures.
      • The filesystem ‘resize constraints’ call (such as to the kernel or NTFS) now passes a ‘progress’ parameter just like a real resize, so that error messages, etc., can be presented to the user.
      • Fixed: USB endpoint enumeration no longer discards the 0x80 bit of the endpoint address, since some devices require it in order for the endpoint address to be unique.
      • Fixed: A number of USB sticks would fail to enumerate, because port reset timings/logic were not technically correct.
      • Fixed: Pulling a USB stick that hadn’t been successfully configured by the SCSI USB code would cause the USB thread to page fault in kernelDeviceHotplug().
      • Fixed: An EXT 2/3 symbolic link was showing up as an empty icon in the file browser.
      • Fixed: FAT volume label entries stored in the root directory were not being re-created when the directories were written.
      • Fixed: The kernel’s GPT partition table code was not correctly reading partition table entries; it was failing to correctly calculate the buffer size and number of sectors of the entries.
      • Fixed: The Disk Manager program was incorrectly calculating the ending sector of entries in GPT partition tables.

VERSION 0.7
22/02/2011

Overview: More than four years in the making, this is a major new release offering an updated look and a number of new features, including 64-bit disk support, UDF (DVD) filesystem support, and GPT partition table support, as well as file browsing functionality. New administrative applications and functionality have been added, and the ATA/IDE driver has been enhanced, including the ability to better support backwards-compatible SATA controllers, and a number of tweaks and bug fixes are also included.

      • Updated the appearance of windows and several types of widgets.
      • Added 64-bit disk support.
      • Added UDF (DVD-ROM) filesystem support.
      • Added GPT disk label support to the kernel and to the Disk Manager program.
      • Included a quantity of new icons based on contributions provided by Leency <leency@mail.ru>, including the folder icon, and all of the file browser icons for different file types.
      • Implemented keyboard navigation of the GUI menus using ‘Alt’ to activate them, and the cursor and ‘Enter’ keys to navigate and select.
      • Alt-Tab now raises the root window’s ‘window’ menu for keyboard navigation between open windows, in a way somewhat analogous to the way Windows and other GUIs do it.
      • Added loader file class support for the ability to recognise GIF and PNG images, Zip, Gzip, and Ar archives, and PDF and HTML documents. Also added file browser icons for PDF, HTML and archive files.
      • New splash image for the 0.7x series.
      • Added support for some new (non-4:3 aspect) graphics modes.
      • Improved the IDE driver so that it can detect and operate multiple controllers, correctly use PCI I/O port remappings, and PCI interrupts, as well as adding improved support for things like backwards-compatible SATA disks/controllers.
      • Added initial, very basic detection of AHCI SATA controllers (operating in native AHCI mode) and their disks.
      • Added more efficient power management, idling the processor during spare cycles.
      • Added basic internationalization library support (libintl), modeled on the GNU gettext system.
      • Added new keyboard mappings: French, Belgian, and Spanish.
      • Added some extra error checking in the filesystem detection code.
      • Added right-click context menus to the disk icons in the computer browser. The menu currently contains ‘Browse’, ‘Mount as…’, ‘Unmount’, and ‘Properties’ choices.
      • The computer browser now shows the filesystem label, if applicable, in its icon text.
      • When displaying an image, the ‘view’ program now scales large images down by default so that they use no more than 2/3 of the screen.
      • The ‘view’ program now has a right-click context menu to zoom in and out on images, or show them actual size.
      • The boot menu installer program ‘bootmenu’ now checks for previous installations and remembers the old entries.
      • Added mouse support for scroll wheels.
      • Fixed: The OS loader could hang during disk detection (divide by zero error) if the BIOS ‘get drive parameters’ function returned success despite there being no such drive.
      • Fixed: The PS/2 mouse driver has been reworked to deal properly with mouse interrupts from various types of mouse hardware.
      • Fixed: The FAT filesystem driver no longer sets the size of the file to a multiple of the block (cluster) size on every write. Only if the number of blocks changed.
      • Fixed: Clicking on a filename with embedded spaces failed to open the file in the file browser, because it wasn’t quoting the name.
      • Fixed: The ‘cdrom’ program was crashing with a page fault during device scanning.
      • Fixed: The partition diagram in the Disk Manager was showing extra border lines when clicked, that didn’t appear until moused over and made stranger-looking by the phantom redrawing of invisible menu items at the same theoretical coordinates that caused them to be discontiguous. The superclass image component was unhelpfully drawing its border when focused.
      • Fixed: Detecting USB mice and keyboards at boot time could fail and prevent other devices such as PS/2 mice and keyboards from working properly.
      • Fixed: Opening the edit program when running from a read-only filesystem produced the following error in the window:
        “Error:edit:kernelFile.c:kernelFileGetTemp(3304) Filesystem is read-only”
      • Fixed: When running the edit program from a read-only filesystem, specifying a non-existent file would close the program without any message.
      • Fixed: Recursive copying of a directory into another directory using the ‘cp -R’ command did not create the destination top-level directory, but instead merely copied the contents of the source directory.
      • Fixed: A disk caching bug wherein the cachePrune() function could be called in the middle of a mult-part cache read or write operation.
      • Fixed: A page fault exception that could occur when starting the ‘filebrowse’ File Browser program.
      • Fixed: The ‘edit’ program was creating temporary files that weren’t being deleted on exit.
      • Fixed: A number of components were creating error messages and/or crashing when certain files (such as mouse pointer images and icons) aren’t present.
      • Fixed: When using a FAT12 filesystem, writing any FAT sector after the first one was causing 2 sectors to be written – resulting in a write of the last FAT sector overwriting the first root directory sector.
      • Fixed: The FAT filesystem driver was under-calculating the correct size for the free-cluster bitmap in the case where the data clusters were not a multiple of 8.
      • Fixed: Passing an empty string to the kernelFilesystemMount() command was resulting in the new filesystem being mounted over top of the current directory.

VERSION 0.69
25/09/2007

Overview: Four months in the making, this is a maintenance release comprising the final round of tweaks and bug fixes to the 0.6x series of Partition Logic, featuring lots of work on the USB subsystem including support for USB mice/keyboards and hubs, tuning of the FAT filesystem driver, usability fixes for various user programs, and loads of Visopsys operating system kernel and C library improvements and bug fixes.

      • 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 file browsing 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.
      • Added a ‘-n’ option to the ‘format’ program, for specifying the volume name (label).
      • Fixed: Partitions were shown 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 operating system.
      • Fixed: Using a hotplugged USB disk caused a divide-by-zero exception because the geometry values were zeros. The SCSI disk driver now determines/guesses a geometry, and Partition Logic now ensures that the values are non-zero.
      • Fixed: The file browsing program could crash when you using the ‘del’ key to delete files.
      • Fixed: An occasional problem with ejecting ATAPI (CD-ROM, etc) devices.
      • Fixed: Spurious interrupts could cause a hang in the interrupt controller driver.
      • Fixed: Command line option processing for the ‘format’ and ‘rm’ commands.
      • Fixed: USB “can’t enable port” messages.
      • Fixed: The USB UHCI driver was not returning the number of bytes transferred for transactions with a data phase.
      • Fixed: The _xpndfmt() function was causing exceptions when printing pointers in hex using the %p format specifier, and a divide-by-zero fault when printing GUIDs in Partition Logic.

VERSION 0.68
11/05/2007

Overview: This is an important maintenance release, with a focus on disk I/O performance, secure deletion (shredding) of files/partitions/disks, and bug fixes, including a data corruption problem, and changes to the OS loader resulting in more reliable booting on more systems.

      • Re-implemented software 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.
      • Turn off software disk caching when doing disk copy, partition paste, and resize operations; vastly improves I/O throughput for faster finishes.
      • Implemented new A20 address line code in the ‘vloader’ OS loader, for successful booting on more systems.
      • Implemented secure deletion of disk data with an ‘erase’ operation 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 heap memory management for more efficient memory usage.
      • Updated some partition type descriptions.
      • Added a ‘-R’ option to the ‘cp’ command 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 ‘Devices’ tool now contains an attribute with the system memory size.
      • The ‘Program Manager’ tool now shows disk performance stats.
      • Added a kernel call that allows, among other things, disabling the software cache for a disk.
      • 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: 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 they make more sense.
      • Fixed: The mouse was leaving tracers at the rightmost and bottommost edges of the screen (1 pixel width).
      • Fixed: Most of the file system data allocated in the FAT filesystem driver was not deallocated, simply discarded.
      • Fixed: Recursive file copying caused a page fault when it encountered an empty directory.
      • Fixed: The ‘move partition’, ‘copy disk’, and ‘paste partition’ progress indicators would show the correct remaining time, but the percentage could overflow (going back to a smaller number and then climbing again).

VERSION 0.67
04/04/2007

Overview: This is a maintenance release, including a number of bug fixes and a significant re-engineering and modularization of the Partition Logic application, support for moving logical partitions and creating ‘preceding’ and out-of-order logical partitions, and the addition of new capabilities to the IDE disk driver including PCI, DMA (resulting in up to 700% performance improvement for raw disk I/O), and 48-bit addressing support (for disks larger than ~130GB).

      • Added PCI, DMA, and 48-bit addressing support to the IDE disk driver.
      • Did some touchups and corrections to the Visopsys I/O code in the libntfs (NTFS resizing) library.
      • Implemented the ability to move logical partitions.
      • Implemented the ability to create ‘preceding’ logical partitions.
      • Modularized the Partition Logic application for better organization, and so that it will be better suited for working with different types of disk labels in future releases.
      • Cleaned up new compilation warnings generated by GCC 4.1.1.
      • Progress dialogs that show time remaining no longer zero-pad the values, and specify the time in “X hours X minutes” format.
      • Fixed: The FAT filesystem driver’s “get unused clusters” function was not properly returning an error if no free clusters were found.
      • Fixed: Using the cursor keys in Partition Logic’s 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.  Sometimes resulted in a ‘hang’ during EXT filesystem formatting.
      • Fixed: When creating a new logical partition in between two others, Partition Logic 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: Lines of only whitespace in configuration files halted processing.
      • Fixed: The progress dialog didn’t layout properly when resized, and also fixed the layout of a few dialogs and windows vis. resizing.

VERSION 0.66
02/02/2007

Overview: This is a maintenance release, featuring the ability to resize Windows Vista partitions, more reliable loading on various systems, better progress indication when resizing NTFS filesystems, better error handling, some small but important GUI improvements, and a number of bug fixes.

      • Ported ntfsprogs 1.13.1 (including ntfsresize 1.13.1.1) so that the Partition Logic can successfully resize Windows Vista NTFS partitions.
      • Improved the confirmation/warning message before resizing a partition.
      • When the progress dialog’s ‘Cancel’ button is disabled, the mouse cursor shows ‘busy’.
      • The progress indicator more accurately represents the actual times of the different stages of an NTFS resize.
      • The “Resetting $Logfile” stage of an NTFS resize shows progress indication.
      • Modified the vloader OS loader so that it only uses int 15 to move data into high memory. Improves reliability of loading on more systems.
      • The exception handler is now a separate task, for proper debugging and better reliability (in case of stack corruption, etc)
      • Implemented proper color text output in both text and graphics modes.
      • The boot sector code was further groomed and streamlined, though the work highlighted a bug in the GRUB bootloader that will always prevent chain-loading Visopsys from the second hard disk.
      • The MBR bootmenu code no longer has the number of sectors to load hardcoded into it. It now reads a tracks’ worth. Also changed some of the memory locations used, since there might have been conflicts there.
      • The GUI “menu bar” component is no longer a container. It now *has* a container, so that it can also have state information about which menu is visible. Previously, raising a right-click menu in the Disk Manager could cause the corresponding menu bar title to draw itself raised when it shouldn’t.
      • It is now possible to ‘focus’ the root window (without it going over top of the other windows, obviously).
      • Fixed: FAT32 bug in which the vloader OS loader was looking for the wrong terminating cluster number.
      • Fixed: When a window was bigger than the screen dimensions, moving the left side of it off the screen, then moving the mouse around the right side of the window caused mouse tracers (and perhaps a GUI crash).
      • Fixed: Dragging the initial splash window off the left side of the screen caused a system crash.
      • Fixed: When a list component was disabled, the list items did appear greyed-out.
      • Fixed: If the ‘iconwin’ program can’t find the icon, it will try to use the standard ‘executable’ one instead of the generic visopsys one.
      • Fixed: The ‘iconwin’ program could still show an icon for a program that wasn’t available. Also changed the config file format so that a list of icon names is not required to be specified before the individual specs
      • Fixed: In text mode, the ‘more’ command could leave its reverse characters on the last line if you’re scrolling with any other key than [space].
      • Fixed: Printing a legitimately-escaped format sequence such as %%d in user space using printf() and friends didn’t work, as the kernel’s print routines would try to format their input again.
      • Fixed: The C library memcmp function was comparing one too many bytes.
      • Fixed: When the text was a different color (such as an error) and the screen scrolled, the cursor could remain the color of the previous line.
      • Fixed: When booting from a CD there was an error message:
        Error:kernel process:kernelFile.c:fileCreate(614):
        Filesystem is read-only.
      • Fixed: Broken CD-ROM emulation was not recognized on some systems.

VERSION 0.65
19/12/2006

Overview: This is a maintenance release, with new features including partition copy/paste (same disk or disk-to-disk), canceling of partition move operations, formatting of user-specified FAT subtypes (default, FAT12, FAT16, FAT32), and more user-friendly partition type selection.  Additional work has been done on the USB subsystem and the GUI.

      • Copy and paste partitions, on the same disk or disk-to-disk.
      • The “move partition” operation now allows the user to press the ‘Cancel’ button as long as no data from the original partition location has (yet) been overwritten.
      • Formatting FAT filesystems now allows the user to specify a FAT filesystem subtype (default, FAT12, FAT16, FAT32).
      • The “list types” and “set type” dialogs now display the partition types in a clickable list box selection; The user no longer has to type a hex code to set the type.
      • Lots of GUI enhancements including “mouse enter” and “mouse exit” events for windows, per-window mouse pointers, code improvements to the implementation of window component levels, and improved event handling.
      • Re-engineered the Visopsys kernel’s USB subsystem and UHCI host controller driver and re-enabled basic USB support by default.
      • Added the ability to do FPU state saves and restores (with help from Davide Airaghi <davide.airaghi@gmail.com> and Greg <reqst@o2.pl>).
      • The floppy disk driver now does better memory management of its list of disks, devices, driver data, etc.
      • Fixed: Divide-by-zero fault in the kernel’s random number code, caused by any call to the rand() C library function.
      • Fixed: The ‘cat’ and ‘more’ commands were crashy.
      • Fixed: Closing the Command Window program could occasionally cause system crashes.
      • Fixed: Booting could fail (system crash) when the (FAT) root filesystem was nearly full.
      • Fixed: A bug in the formatting function was preventing it from offering the choice ‘none’ (no filesystem/clobber).
      • Fixed: Creating logical partitions could cause page fault exceptions when writing the changes.
      • Fixed: Formatting a too-large disk as FAT12 caused a divide-by-zero fault.
      • Fixed: Clicking on a context menu item that didn’t fall within the bounds of its parent window had no effect.
      • Fixed: When resizing the Partition Logic window, the partition diagram didn’t completely redraw its entire width.
      • Fixed: When the Display Settings program was used to set the global colors, there were some window components whose colors were changing incorrectly including icons, lists, and menu items/list items.

VERSION 0.64
25/10/2006

Overview: This is a maintenance release, with extensive code grooming and bug fixes.  There are a handful of new, user-visible features, such as right-click context menus on the disk list and partition diagram/list, and 32-bit bitmap image/icon support. The real focus of this release has been stability, quality, and large scale re-engineering of the graphical interface code.

      • Implemented right-click context menus.
      • Added support for 32-bit .bmp bitmap images and .ico icons
      • The partition diagram now responds to keyboard cursor inputs.
      • Did general, large scale GUI re-engineering.
      • Dialog windows no longer appear in the window shell’s window list.
      • Disabled USB support for now, since it’s broken and can cause some boots to hang
      • Booting now works under the Bochs 2.3 emulator (failed in graphics mode under earlier versions)
      • The window border component only ever drew when it was called to draw the top border, since it could only draw the entire border. Now the ‘draw gradient border’ function can draw individual lines of a border and the border component draws the parts individually.
      • Did some cleanup of the vloader OS loader code
      • Added a function to redraw all the windows, and another one that resets all of the (non-custom) colors of all the windows’ components. Setting the colors in the ‘Display Settings’ program uses this to change all of the window colors immediately.
      • Window canvas components now show a visual change when they are focused.
      • GUI menu components now have their own graphic buffers, so that regardless of what window they come from they can stay on top, extend outside the window, etc.
      • Fixed: The vloader OS loader was being written to the *second* free cluster by the Fedora VFAT driver when not using FAT32. Made a hack to adjust it when installing from Fedora, and generally streamlined the copy-boot program.
      • Fixed: A slight bug in the FAT code in that it relied too strictly on the Microsoft definition of FAT-type detection. Now it takes into account a couple of extra hints.
      • Fixed: The ‘view’ program wasn’t showing tab characters properly in text files.
      • Fixed: The ‘vsh’ shell would crash if the user entered a line containing only whitespace.
      • Fixed: A bug in the copyArea() function of the framebuffer graphic driver in that it wasn’t checking to see whether the areas were outside the buffer.

VERSION 0.63
23/08/2006

Overview: This is a maintenance and bugfix release, with numerous small tweaks throughout the entire system. New features include the ability to format and resize Linux swap partitions, more reliable loading, more detailed CPU detection, and a simple text editor.

      • Added formatting and resizing support for Linux swap partitions.
      • Added a basic, simple text editor (currently only works in graphics mode).
      • The OS loader now does improved memory moves to high memory for better reliability on more systems.
      • Added improved CPU detection to the kernel ‘system’ driver.
      • The file list widget and the file dialog (for example in the ‘Computer Browser’) have been reworked so that they don’t use a separate GUI thread, since that was unreliable and crashy.
      • Removed the hard limit on the maximum number of window components.
      • The kernel now records and uses a network domain name, both via DHCP and via the kernel’s config file.
      • Window resize events now go into the window’s event stream so that applications can catch them.
      • The scrollbar slider now has a minimum size, so that it’s clickable even when there’s lots of data to scroll through.
      • The makefile variables for $CC, etc., are now settable from the top-level makefile.
      • Fixed: PS/2 mouse driver synchronization problems on some systems.
      • Fixed: Partition Logic’s ‘set type’ menu item was failing to bring up the dialog window.
      • Fixed: After resizing a filesystem, Partition Logic no longer shows the warning “Can’t write partition table backup in read-only mode” (if booted from a CD, for example). This just scared people.
      • Fixed: When entering the filesystem resizing value in Partition Logic’s text mode, it didn’t allow you to append ‘c’ or ‘m’ for size in cylinders or megabytes.
      • Fixed: Partition Logic no longer continually pesters users about incorrect CHS values in partition entries; one ‘no’ answer now turns it off.
      • Fixed: The FAT filesystem driver now ensures that items it’s processing (when it’s constructing short filenames, or writing directories) belong to its own filesystem (as opposed to mount points for other filesystems, for example).
      • Fixed: If the ‘iconwin’ program’s config files contained commands with arguments, the icons weren’t shown because the program didn’t separate off the arguments and therefore couldn’t locate the commands.
      • Fixed: Using the ‘view’ program to view a really small or really large image caused GUI crashiness.

VERSION 0.62
02/06/2006

Overview: This is a maintenance release.  New features include basic USB controller support, a USB mass-storage driver, device hotplugging, and Qemu support.

      • Implemented basic USB support for UHCI controllers.
      • Implemented a SCSI driver that can support USB mass storage devices.
      • Added basic hot-plugging support for devices.
      • Implemented a proper kernelBus top-level infrastructure for use by the PCI driver, USB driver, etc.
      • The display devices and text console drivers are now initialized separately and before other hardware, so that hardware detection messages can be shown while detection is going on.
      • The ‘computer’ program now continuously scans for new disks.
      • The ‘iconwin’ and ‘filebrowse’ programs now change the mouse pointer when they’re busy loading up a file or program.
      • The ‘iconwin’ program now continues silently when programs or icons specified in the config file are missing.
      • The boot menu now has a default selection and timeout period (settable by the ‘bootmenu’ program).
      • There is now an ‘active menu’ global window system variable so that the focused menu can always be on top, and always go away then it loses focus.
      • Fixed: Booting failed on Qemu due to a PS/2 mouse driver hang.
      • Fixed: The ‘bootmenu’ program failed to run from a read-only media.
      • Fixed: The boot menu timer was counting down too quickly.
      • Fixed: The ‘defrag’ program was giving “can’t defrag filesystem type ‘unknown'” messages for things like floppies that hadn’t been mounted.
      • Fixed: The kernelDiskGetMediaState() function was returning 0 for flash disks

VERSION 0.61
01/02/2006

Overview: This is a maintenance release.  New features include support for resizing NTFS filesystems and arbitrary partitions, IDE block mode I/O, Linux swap detection and clobber, and improvements to the operating system, plus assorted bug fixes.

      • Partition Logic can now resize Windows XP (NTFS) partitions, as a result of porting Linux ntfsprogs NTFS resizing code.
      • Allows partition-only resizing regardless of the filesystem type (with appropriate warnings).
      • Improved IDE/ATA hard disk driver performance by implementing block-mode I/O.
      • Added basic ‘stub’ NTFS filesystem support (detection and clobber).
      • Added basic ‘stub’ Linux swap filesystem support (detection and clobber).
      • Added a kernel disk function for rescanning the partitions of a single disk.
      • Add a kernel filesystem function for getting statistics about a filesystem (whether it’s mounted or not, or indeed, properly supported or not).
      • Added a kernel filesystem function for getting resizing constraints.
      • Added a kernel filestystem function for requesting specific detection of filesystem type (useful for removable media and such).
      • Text mode now shows the operations/commands in two columns.
      • The ‘move partition’ and ‘copy disk’ functions now use standard progress dialogs and show time estimates.
      • Fixed: After formatting FAT32, Linux and older Windows installers would show the filesystem as 100% full.
      • Fixed: Errors with IDE/ATA hard disks as secondary masters.
      • Fixed: Unformatting (clobbering) a partition in the didn’t seem to convince the kernel to un-detect the previous filesystem until reboot.

VERSION 0.6
06/12/2005

Overview: This release introduces new functionality including tools for browsing the computer, file systems, and administrative tasks, FAT defragmenting, a built in chain-boot loader and simple MBR formatting, file browsing widgets and dialogs, ELF dynamic linking, Windows .ico icon file support, and Italian keyboard support.  It represents a major upgrade of the underlying Visopsys operating system, and also includes a number of important bugfixes.

      • Added a ‘Computer browser’ toolbar item, equivalent to ‘My Computer’ in Windows.  It shows the different disks, auto-mounts them (if applicable) when clicked, and launches a file browser.
      • Added a ‘File browser’ toolbar item.
      • Added an ‘Administration’ toolbar item which brings up a window with icons for various other programs.
      • Added defragmenting capability to the FAT filesystem driver.
      • Implemented a simple, chain-loading MBR boot menu for loading from different partitions and operating systems.  It lets the user edit the menu strings and set parameters.  ** Note that this will NOT load any Linux installation that uses an initrd.
      • Implemented simple MBR code, which can for example be used to rescue a system from a deleted or corrupt GRUB installation.
      • Implemented shared libraries and dynamically linked executables.  All included libraries and programs are now dynamic.
      • Added .ico icon file format support and converted many existing icons to that format.
      • Created file browsing widgets/dialogs.
      • Added Davide Airaghi’s Italian keyboard mapping.
      • Some preliminary networking support has been added, but for the moment it is disabled by default.
      • The text-mode formatting now shows a progress bar in text mode.
      • Refuse outright, or warn/confirm before moving, formatting, or deleting mounted partitions.
      • The ‘disks’ command now shows mount points.
      • Implemented a ‘progress’ data structure that can be passed to (for example) long filesystem operations such as format, check, resize.  Based on that, a ‘progress dialog’ window library feature that utilizes the ‘progress’ structure and shows a progress bar and status messages.
      • Fixed: Canceling a new partition creation at the label type stage caused 2 changes to show as pending.
      • Fixed: The partition reordering menu didn’t display changes properly in text mode.  It worked but the changes weren’t reflected in the menu.
      • Fixed: The lost+found directory created by the EXT2 formatting code was not readable when we mounted the filesystem.  Also, the permissions are now set to the same values as Linux mke2fs.
      • Fixed: Selecting partition/list types could crash the program.
      • Fixed: The Program Manager was associating some child threads with the wrong parents in the process list.

VERSION 0.58
03/11/2005

Overview: This is a maintenance and bugfix release. Some new features include support for EXT2 filesystem formatting, German keyboard layouts, GUID (Globally-Unique Identifier) generation, and filesystem clobber.  Also includes a number of important bugfixes.

      • Implemented EXT2 formatting.
      • Added Jonas Zaddach’s German keyboard layout
      • Added GUID-generating capability.
      • Filesystem drivers that support ‘format’ functionality now also support ‘clobber’ functions, so that for example when a format is done, the filesystem doesn’t still get detected as the previous type.
      • The filesystems code now has a proper array of all the different filesystem drivers, that can be iterated through (for example, when doing filesystem detection).
      • Implemented a “multi choice dialog” that shows buttons with user-specified text strings and returns the index of the specified choice.
      • Fixed: When creating partitions, it wasn’t possible to create logical partitions. When choosing primary, no primary/logical attribute was shown.
      • Fixed: The EXT filesystem code would fail to mount small filesystems with only a single block group, where the number of blocks was less than the maximum blocks per group.
      • Fixed: In graphics mode, after specifying start and end values for a new partition, pressing ‘Cancel’ in the tag type dialog didn’t stop the partition from being created.
      • Fixed: The ‘move partition’ function check for empty space on either side of a partition could produce a false error
      • Fixed: The partition table was being reread too frivolously (especially in between writing main and extended partition tables).

VERSION 0.57
29/08/2005

Overview: This is a maintenance and bugfix release.  There are various GUI touch-ups, and disk geometry information is updated in FAT partitions after disk copy operations.  Important fixes include the elimination of boot hangs due to faulty mouse initialization and full kernel variable lists, a fix to the detection of secondary hard disks, and a fix to faulty mounting of EXT2/3 filesystems.

      • Now ensures that the disk geometries stored in any FAT partitions are correct.
      • Window lists components now have multi-column mode implemented, are now capable of showing various combinations of icons, text, or both, and they are now able to resize successfully, so that more rows can become visible and multi-column lists get extra columns.
      • Back-ported the 0.6 branch multitasker changes (to do with processImage structures and argument passing).
      • The exception handler process now displays a dialog box when a program crashes, so that they don’t simply disappear (requiring the user to look at the console output for the reason)
      • Changed the FAT, EXT, and ISO filesystem drivers to take more advantage of packed structures for better efficiency.
      • Fixed: The system could fail to boot in graphics mode due to faulty mouse initialization
      • Fixed: The kernel’s symbol variable list was becoming full and causing various boot initializations to fail. The kernel’s variableList code has been changed so that it automatically manages list memory.
      • Fixed: “ID or target sector not found” messages during boot when a second (slave, for example) hard disk was present.
      • Fixed: EXT2 mounting had become generally broken
      • Fixed: The ‘format’ function was inadvertently ignoring the ‘-t’ filesystem type option.
      • Fixed: When a mount attempt failed, it was possible to end up with a rogue ‘/’ entry added to the root directory, which could render the whole directory tree useless until reboot.
      • Fixed: Depending on screen contents, the icon layout in the kernel window shell could allow the text of the bottom-most icon to wrap off the screen.
      • Fixed: The console window’s scroll bar was not being added to windows when the rest of the text area was added; thus the scroll bar did not appear.
      • Fixed: The ‘wallpaper’ function failed to set the wallpaper if the file name supplied in the file dialog was an absolute path.

VERSION 0.55
19/05/2005

Overview: This is a maintenance release, with some additional capabilities including installation support for all FAT filesystems, primitive PCI driver support, parallel I/O for disk copy operations, and better multitasking and interrupt handling performance.  In addition, GUI window layout and resizing has been reimplemented and generally fixed.

      • The system can now install to and boot from any kind of FAT filesystem (FAT12, FAT16, and FAT32/VFAT).
      • Updated the IDE disk controller locking, so that each now have their own locks; thus I/O can be done in parallel between disks on different controllers.
      • Back-ported large numbers small changes and improvements from the 0.6 development branch, including improvements to the operating system’s disk layer.
      • The bootable floppy image for the ISO distribution now contains only the OS loader and the kernel, because only these are used. This shrinks the (zipped) ISO image size.
      • Fixed window relayout when windows are sized.
      • Added a basic PCI bus driver, the initial implementation of which was provided by Jonas Zaddach. Only logs a bus device scan, for the moment.
      • Fixed: Copying a big file such as an .iso image could fail because the copy code tried to allocate enough memory for the whole file. Now it allocates as much as possible and does multiple reads/writes
      • Fixed: Typing and using the mouse at the same time was causing funny things to go on. The interrupt handlers for the two devices needed to be better synchronized.
      • Fixed: Interrupts are now disabled during the pause before reboot, so that for example the operating system is not still processing I/O interrupts and such.
      • Fixed: In the install program, installing on a freshly-inserted floppy. could produce the error message “can’t install a boot sector for filesystem type ‘unknown'”.
      • Fixed: When installing from a ‘basic’ install, there was a spurious error message resulting from attempting to look for the ‘full’ install file.
      • Fixed: When dragging an icon, one pixel-width of the icon title wasn’t being erased properly.

VERSION 0.53
02/02/2005

Overview: This is a maintenance release, with numerous small improvements and bug fixes and some additional features, such as improved disk-to-disk copies, filesystem display, and partition table reordering.  A number of unnecessary files and programs have been removed.

      • Implemented threaded, double-buffered disk IO for the ‘copy disk’ operation.
      • The slice list now indicates the disk name and file system type (if available), and it is now possible to change the partition table ordering – i.e., changing drive names/letters.
      • Re-engineered the file handling code
      • The format operation causes a re-scan of the partitions, so that the new filesystem type is shown in the menu
      • The Program Manager now shows overall memory usage totals.
      • The shutdown program now attempts to eject the CD-ROM a second time if required, since it seems that some drives will fail on the first attempt but succeed on the second.
      • The FAT boot sectors no longer rely on the disk geometry they get from the DOS BPB block. They get it from the BIOS instead.
      • Removed the ‘move’ command (there’s already a ‘mv’ command)
      • The ‘disks’ command now reports the filesystem type, if known, and not just the partition label.
      • Fixed: Showing 1MB total size for all disks
      • Fixed: The ‘copy disk’ failure was leaving the dialog box on the screen.
      • Fixed: Formatting operation could hang when doing a large FAT32 filesystem.
      • Fixed: In the ‘create partition’ function, if you supplied bad start/end values, the logical/primary choice would be disabled when the dialog box came back.
      • Fixed: In the ‘create partition’ function, specifying a megabyte size value overflowed at 4096m.
      • Fixed: When copying a file, if the destination was a directory (rather than a fully-specified file name), it would fail and there was a spurious error message
      • Fixed: when the text mode menu scrolled the screen, it looked funny.
      • Fixed: ‘ls’ an unknown file, hang!
      • Fixed: The ‘rmdir’ functionality was broken, because the ‘.’ and ‘..’ entries were not being removed correctly.
      • Fixed: The ‘umount’ command failed when a following / was after the mount point name.

      VERSION 0.51
      30/12/2004

      Overview: This is primarily a maintenance/bugfix release for the base operating system. New features include the ability to fix small partition table inconsistencies and the ability to take screenshots. It is now easier to toggle between text and graphics modes.

        • Enhanced the bootstrap code so that it is possible to boot on some trickier hardware platforms, such as Toshiba laptops.
        • Now offers to fix errors turned up by the partition table check.
        • When the shutdown program is attempting to eject the disk, it now shows a banner dialog since sometimes it takes a couple of seconds.
        • Fixed: The Program Manager wasn’t really putting threads under their correct process parents; it merely put them in order as received from the kernel.
        • Fixed: Broken CD-ROM floppy disk emulations no longer trick the loader into detecting nonexistent floppies.
        • Fixed: On some hardware, the kernel’s hardware detection could be tricked into detecting nonexistent fixed disks with NULL geometry.
        • Fixed: The ‘megabytes’ value being printed for hard disks by the loader was severely wrong.

Disk partitioning and data management