“No matter how certain its eventual coming, an event whose exact time and form of arrival are unknown vanishes when we picture the future. We tend not to believe in the next big war or economic swing; we certainly don’t believe in the next big software revolution.” – David Gelernter
INTRODUCTION
Visopsys (VISual OPerating SYStem) is an alternative operating system for PC-compatible computers, written “from scratch”, and developed primarily by a single hobbyist programmer since 1997.
Visopsys is free software and the source code is available under the terms of the GNU General Public License. The libraries and header files are licensed under the terms of the GNU Lesser General Public License.
The bulk of Visopsys is a fully multitasking, 32-bit, virtual-memory, massively-monolithic-style kernel. Added to this is a bare-bones C library and a minimalist suite of applications — together comprising a small but reasonably functional operating system which can operate natively in either graphical or text modes. Though it’s been in continuous development for a number of years, realistically the target audience remains limited to operating system enthusiasts, students, and assorted other sensation seekers. The ISO and floppy images available from the download page can install the system, or operate in ‘live demo’ mode.
Other operating systems can do more than Visopsys; it doesn’t include many applications. Needless to say, it’s not as good as Linux or even SkyOS or Syllable. On the other hand, it’s still primarily a one-person project.
From the perspective of a user — the “but what the heck is it good for?” perspective — its primary selling point is a reasonably functional partition management program (the ‘Disk Manager’) in the vein of Symantec’s Partition Magic. Visopsys and its Disk Manager comprise the popular Partition Logic system. It can create, format, delete, resize, defragment, copy, and move partitions, and modify their attributes. It supports both DOS/MBR and UEFI partition tables. It can also copy hard disks, and has a simple and friendly graphical interface. A basic version can fit on a bootable floppy disk, or you can use the entire system from a ‘live’ CD/DVD.
GOALS
The primary goal of Visopsys is to cherry-pick the best ideas from other operating systems, preferably contribute a few new ideas, and hopefully avoid (re-) introducing some of the more annoying elements.
However many ideas Visopsys borrows from other products, it is not a Windows or UNIX lookalike, nor a clone of any other system. On the other hand, much of what you see in Visopsys will be familiar. There are a number of command line programs that are superficially UNIX- or DOS-like, so you shouldn’t have too much trouble finding your way around. It is compatible with existing filesystems, file formats, protocols, and compression/encryption algorithms (among other things).
Some of the higher-level conceptual goals are as follows:
1. “Native” Graphical environment
- The base-level graphics server (analogous to an ‘X’ server in Unix, but not X) is integrated into the kernel. A default GUI environment runs “straight out of the box”, with no setup procedure.
- At a later stage, a new metaphor for the GUI environment. While not intended to be revolutionary, the planned interface will eventually try to put a new spin on graphical shell design — without making it unfamiliar or non-intuitive. The ideas are formed, but the code is not written.
- To the greatest extent possible, the user should be able to perform all tasks, including administrative ones, using this “point and click” interface — no need to edit mysterious configuration files by hand.
2. Strong command line capabilities (text windows and scripting)
- Users must be given the ability to operate in a text-based environment if they prefer to do so.
- To the greatest extent possible, the user should be able to perform all tasks, including administrative ones, using the text interface. Configuring mysterious configuration files by hand is, therefore, optional.
3. Compatible. Visopsys will conform to existing standards to the greatest extent possible. It is not a goal for Visopsys to define new formats (such as a new filesystem type). Examples of such standards include:
- Filesystem types
- Executable/object/library file formats
- Image, sound, font, compression and text file formats
- Encryption algorithms
- Network protocols
- Software development environment conventions
- Hardware interface standards (e.g. VESA)
- Some level of POSIX compliance, where possible.
STATUS
Visopsys now feels somewhat like the ‘real’ operating system modern users have come to expect. There’s still a long way to go before Visopsys might be useful to the average person, but it’s getting there little by little.
Coding work was begun as a part-time operation in late 1997. The large majority of the code is written in C, with small portions in x86 Assembly Language. Following is a list of some of the implemented and unimplemented functionality.
Implemented Features: | Currently unimplemented: |
|
|
The primary developer of Visopsys is Andy McLaughlin, a now 40-something programmer originally from Calgary, Canada. A number of years ago, I relocated to London, UK, after a year in Boston and 2 years in San Jose, California. Like many other hobby OS writers, I build Visopsys in my spare time.
I am not actively seeking other programmers to assist in the development of Visopsys, but I do gladly accept code submissions and suggestions.
An operating system kernel is a big enough challenge to be discouraging at times. In comparison, the Pascal compiler I wrote over an eight month period is trivial. On the other hand, since I do most of the work by myself I am able to keep the development on a unified path. The architecture that develops is — I hope — consistent (for better or worse) and thus the end product reflects the vision of a single programmer. It could be argued that this is the good, old-fashioned way of producing software.
APPLICATIONS
The included Disk Manager does most of what you’d expect from your basic ‘fdisk’ tool, whilst maintaining safety through MBR backups and ‘undo’ functionality. The slightly more sophisticated features, such as copying disks, resizing, and moving partitions, are the beginnings of a project to create a free alternative to certain proprietary tools such as Partition Magic, Drive Image, and Norton Ghost; the same user-friendly GUI environment, yet still small enough to fit on a boot floppy.
A few other applications are provided. These include:
- Archive Manager: viewing, creating, and modifying Gzip and Tar files
- Computer Browser: browsing and mounting logical disks
- Configuration Editor: modifying the system’s configuration files
- Devices: browsing a tree of detected hardware
- Display Properties: setting graphical boot, screen resolution, colours, background, etc.
- File Browser: browsing the filesystem
- Font Editor: viewing and editing font glyphs, and creating fonts
- Image Editor: simple pixel-level editing, drawing, and basic lines and shapes
- Keyboard Mapping: selection, creation, and editing of various international keyboard layouts
- Network Connections: viewing information about open connections
- Packet Sniffer: detailed viewing of incoming and outgoing packets
- Program Manager: monitoring performance and managing processes
- Software: viewing, downloading, and installing add-on software packages
- System Diagnostics: disk and memory testing
- Telnet: a telnet client
- Text Editor: pretty trivial and buggy, but there you go
- User Manager: administering user accounts and passwords
- Virtual Keyboard: touch- or mouse-driven keyboard input
Additionally there are little games, a calculator and calendar, programs for installing Visopsys, viewing images, and making screen shots, as well as a simple command line shell and assorted other programs.
HARDWARE SUPPORT
Hardware support is generally limited to devices that conform to popular hardware interface standards, such as VESA, PCI, PS2, USB, ATA/ATAPI (IDE), SATA, plus all of the other standard PC chipset components. Graphics are provided through the (non-performant, but reasonably standard) VESA linear framebuffer interface. At present there aren’t any vendor-specific video drivers provided, though this is not so much a design choice as it is the result of limited manpower and time. Memory requirements are small: approximately 5 MB in text mode, and generally less than 20MB in graphics mode depending on screen resolution, etc.
Visopsys supports all variations of FAT filesystem (12, 16, 32/VFAT) as well as read-only EXT2/3/4, ISO, and UDF. Planned features include support for read-only NTFS, and writable EXT2/3/4.
Supported hardware: | Currently unsupported: |
|
|
DEVELOPMENT ENVIRONMENT
Visopsys is developed using Linux Mint 18.3 and CentOS (Red Hat) 6, built with the included GNU C compiler and the NASM assembler (use the command “apt-get install nasm” in Mint/Ubuntu/Debian, or “yum install nasm” in CentOS).
ACKNOWLEDGEMENTS
I’d like to thank the following sources and individuals who contribute (with or without their knowledge) to the success of this project:
- All icons are from (or adapted from) the Oxygen icon set redistributed under the GNU Lesser General Public License, with thanks to the Icon Archive website for packaging them up in .ico format.
- Desktop wallpaper ‘background’ is a colourized version of “Subtle Website Background” from the website Tile-able, redistributed under the Creative Commons Attribution 3.0 Unported license.
- Desktop wallpaper ‘mountain’ (“snow capped mountain near body of water during daytime”) uploaded by Unsplash user Kerensa Pickett, redistributed under the Unsplash licence.
- Desktop wallpaper ‘rainbow’ (“green grass field”) uploaded by Unsplash user James Wheeler, redistributed under the Unsplash licence.
- Desktop wallpaper ‘wave’ (“gold and blue wave abstract painting”) uploaded by Unsplash user Vidar Nordli-Mathisen, redistributed under the Unsplash licence.
- The Visopsys logo image visopsys.jpg uses the icon “Monitor icon” from “3D BlueFX Desktop Icons by WallpaperFX” found at the Icon Archive, redistributed under the Creative Commons Attribution 4.0 International license.
- The ‘libmono’ fonts are adapted from Liberation Mono, by Ascender Corp., redistributed under the SIL Open Font License.
- Turkish translation by Doga Özkaracaabatlioglu <doga.ozkaraca@gmail.com>.
- Russian translation by Liss <liss8608@list.ru>.
- Spanish translation by ap0r <marianopbernacki@gmail.com> and Jens Leon Wagner <nikski280@gmail.com>.
- German translation by Jens Leon Wagner <nikski280@gmail.com> and Proxma AG.
- ap0r <marianopbernacki@gmail.com> added password length checking to the ‘Users’ program.
- espectalll123 <espectalll123@yahoo.es> fixed up the Spanish keyboard map.
- Giuseppe Gatta <tails92@gmail.com> wrote the PPM (portable pixmap) image support, and the ‘calc’ calculator program.
- Jonas Zaddach <jonaszaddach@gmx.de> has made a number of contributions including early ‘Lance’ network driver support, the foundations for PCI support, and German keyboard layouts and ‘Alt-Gr’ key support.
- Davide Airaghi <davide.airaghi@gmail.com> provided some initial work on FPU state saves, an Italian keyboard mapping, and implementations of I/O privilege mapping and RAM disks.
- Bauer Vladislav <bauer@ccfit.nsu.ru> contributed the original ‘cal’ calendar program.
- Jens Leon Wagner <nikski280@gmail.com> helped out with ideas for improving slider and scrollbar dragging.
- Grzesiek (Greg) <reqst@o2.pl> contributed an FPU exception handler fix to the multitasker.
- Graeme McLaughlin <graememc@gmail.com> contributed the original ‘mines’ game.
- Some of the descriptions in fcntl.h are Copyright © 1997 The Open Group from http://www.opennc.org/onlinepubs/7908799/xsh/fcntl.h.html
- The values float.h are intelligent guesses based on reconciling the float.h files from Linux and Solaris on i386 machines, and based on the ‘Standard C’ specification Copyright © 1989-1996 P. J. Plauger and Jim Brodie.
- Pseudorandom number generation in kernelRandom.c inspired by Nick Galbreath’s <nickg@modp.com> re-implementation of the PRNG from Sun’s java.util.Random.
- sqrt.c is Copyright © 1996-2004 Paul Hsieh. Paul’s square root page is here: http://www.azillionmonkeys.com/qed/sqroot.html
- cos.c, cosf.c, sin.c, and sinf.c use algorithms adapted from the Advanced Mathematical Functions in Flash page.
- JPEG inverse discrete cosine transform (IDCT) algorithm is Copyright (C) 1996, MPEG Software Simulation Group.
- Hugh Anderson <hugh@comp.nus.edu.sg> for debugging installation issues on Fedora FC5.
- Leency <leency@mail.ru> for his icon contributions.
- Thomas Kreitner for all his testing and interest, and for finding the weird bugs. Only an evil genius would discover some of these things.
Bibliography:
- Ralf Brown’s <ralf@pobox.com> indispensable Interrupt List.
- David Jurgens’ HelpPC.
- Frank van Gilluwe’s “The Undocumented PC” (Addison-Wesley, ISBN# 0-201-47950-8);
- Tom Shanley’s “Protected Mode Software Architecture” (Addison-Wesley/Mindshare ISBN# 0-201-55447-X)
- Lots of other sources, many of them online; See the “OS Dev” page for links.
Andy McLaughlin
21/09/2023