Download Visopsys 0.65

Spread the love

Andy McLaughlin has been working on the Visopsys operating system since 1997 and recently released version 0.65. 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 extensive Disk Manager stands out with which partitions can be created and modified without any problems. For a complete overview of the how and what, we refer you to this page. The announcement and list of changes of version 0.65 are as follows:

Version 0.65

Overview: This is a maintenance release, with particular focus on the Disk Manager program, the USB subsystem, and the GUI. The Disk Manager can now copy and paste partitions, cancel partition move operations, format user-specified FAT subtypes, and has more user-friendly partition type selection.

  • Re-engineered the kernel’s USB subsystem and UHCI host controller driver and re-enabled basic USB support by default.
  • Implemented per-window mouse pointers, so that applications can set them appropriately according to whatever they’re doing without affecting anything else.
  • The Disk Manager can now copy and paste partitions, on the same disk or disk-to-disk.
  • The Disk Manager’s “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 using the Install or Disk Manager programs now allows the user to specify a FAT filesystem subtype (default, FAT12, FAT16, FAT32).
  • The Disk Manager’s “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.
  • Added the ability to do FPU state saves and restores (with help from Davide Airaghi and Greg).
  • Added a global window manager variable list.
  • Added “mouse enter” and “mouse exit” events for windows.
  • Added fopen(), fclose(), and strcasestr() C library functions.
  • Created a proper test suite harness program. Initial tests implemented are for text output, port I/O protection, floating-point, and some GUI operations.
  • Code improvements to the implementation of window component levels.
  • The generic window component now has some container functions built in, such as layout(), numComps(), flatten(), and setBuffer(), so that all ‘composite’ components that contain others can have their sub-components participate in various actions.
  • The processing of window events no longer tries to determine the precise component the event happened to — instead events are now cascaded down through any/all applicable containers, components, subcomponents, etc. Added an eventComp() function to window components so that they can specify whether they want some sub-component to receive a particular event, otherwise it goes to the component itself by default.
  • Added a little removeFromContainer() inline function for removing components from their parent container.
  • 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 Disk Manager’s format() function was preventing it from offering the choice ‘none’ (clobber).
  • Fixed: Creating logical partitions in the Disk Manager 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 Disk Manager 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.
  • Fixed: When changing a variable in the Configuration Editor, clicking OK caused remnants of the selected item to be erroneously drawn at the top of the window.

Version 0.64

Overview: This is a maintenance release, with extensive code grooming and bug fixes. There has been a particular focus on the GUI code, kernel debugging, the kernel API, gcc 4.x warnings, and compiler optimization problems. New user-visible features include the addition of right-click context menus and support for 32-bit bitmaps and icons.

  • Booting now works under the Bochs 2.3 emulator (failed in graphics mode under earlier versions)
  • Implemented right-click context menus.
  • Added support for 32-bit .bmp bitmap images and .ico icons
  • The Disk Manager’s canvas now responds to keyboard cursor inputs.
  • Did general, large-scale GUI re-engineering.
  • Fixed compilation errors under gcc 4.x
  • Added some API debugging
  • Moved the sysCall() inline function into a _syscall.c file to avoid problems with gcc (optimization) function inlining.
  • Dialog windows no longer appear in the window shell’s window list.
  • Multitasking/sheduling changes: Separated out the scheduler’s code for choosing the next program to run (into a subroutine), corrected the big comment that describes the scheduling algorithm, fixed a bug that might have resulted in a NULL pointer dereference, made it so the exception handler is never interrupted by another process, and added a kernelProcessingException variable that exports the exception number being processed.
  • Implemented a generic kernel debugging functionality that can be compiled in conditionally, and that can filter messages by categories (for example, there is a category for GUI debugging and a category for USB debugging), as well as filtering by source file.
  • Disabled USB support for now, since it’s broken and can cause some boots to hang
  • 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.
  • Added more debugging info to errors in the malloc() code.
  • Added a userspace flag for components that aren’t focusable by default. Subsequently, ‘canvas’ components are no longer focusable by default.
  • Creating window menus is now done more simply by passing a structure with the list of menu items, then calling the getSelected() function to find out which one was clicked. Also implemented the more-useful getData() function, which returns the objectKey of the selected item.
  • Implemented a window ‘slider’ component to wrap the scroll bar component, so that it can be focusable and accept keyboard input. (And adapted the window library color chooser dialog to use it).
  • 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.
  • The install.sh script now copies any /bootinfo or /grphmode files into the CD-ROM boot floppy images.
  • The install/imaging scripts no longer redirect useful error output to /dev/null — they now redirect to temporary log files, check exit codes, and direct the user to the log files if applicable.
  • The window manager code now has more efficient memory management, so that it isn’t allocating memory for the entire array of possible window structures at initialization time.
  • Created a top-level Makefile.include file for all the code Makefiles, added some more warning flags to it, and fixed the resulting warnings.
  • Made gcc optimization args (-00, -02, etc) a global Makefile variable
  • The objectKey type is now a ‘volatile void *’
  • Made data structures throughout properly self-referential (instead of using void * pointers) and removed all of the unnecessary casting, for (hopefully) fewer coding errors.
  • 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:

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 OS 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.
  • Added the beginnings of a 32-bit BIOS driver.
  • The file list widget and the file dialog have been reworked so that they don’t use a separate GUI thread, since that was unreliable and crashy.
  • GUI applications can now enable click-driven cursor movements in text areas.
  • 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.
  • There are now kernel functions to get and set the host and domain names, as well as UNIX-style command line functions.
  • Added a kernelSystemInfo() function, similar to the UNIX ‘uname’ syscall.
  • Added a variable list of text-string attributes to all hardware device structures.
  • The window ‘component parameters’ structure now has a ‘flags’ field to be used for all boolean values.
  • Added getWidth() and getHeight() functions for fonts.
  • Text screen saving and restoring now uses caller-supplied pointers instead of storing a single instance in kernel memory.
  • Added a text API function to enable or disable screen scrolling.
  • 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.
  • The ‘ldd’ program was really more like an ‘nm’ program, so it was renamed.
  • Fixed: PS/2 mouse driver synchronization problems on some systems.
  • Fixed: The Disk Manager’s ‘set type’ menu item was failing to bring up the dialog.
  • Fixed: After resizing a filesystem, the Disk Manager 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 the Disk Manager’s text mode, it didn’t allow you to append ‘c’ or ‘m’ for size in cylinders or megabytes.
  • Fixed: The Disk Manager 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 ‘imgboot’ 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 number 0.65
Website Visopsys
Download
License type GPL
You might also like
Exit mobile version