Friday, September 15, 2017

Who wants to improve the kernel?

This article has changed since it was originally posted
I made an error when I originally posted this, so wanted to clarify. I thought the kernel was the only remaining part of FreeDOS that requires a non-open source software toolchain (Borland C). And in fact, I mentioned Borland in the Q&A from my FreeDOS talk at Kieler. From the FreeDOS kernel build.txt file:

This kernel compiles with Turbo C 2.01, Turbo C++ 1.01 (now freely available!), Turbo C 3.0, Borland C 4.51 & 5.01. It should work with other Borland and Microsoft compilers and (Open)Watcom C. GCC can compile the kernel but the result does *not* work (no 16-bit x86 support).

(emphasis mine)

I interpreted that the kernel "should" compile with OpenWatcom as being uncertain. But Rugxulo reached out to me and confirmed that "The FD kernel can already compile fine with OpenWatcom."

So thanks to Rugxulo for clearing that up for me! I haven't been involved in kernel programming since Pat died, so I didn't realize we now compiled on OpenWatcom.

I've edited this post to reflect this update.

Wednesday, September 13, 2017

Attending Kieler Open Source und Linux Tage

Over the next few days, I will be in Kiel, Germany to attend the Kieler Open Source und Linux Tage. I'm giving two talks while I'm there: one about usability testing in open source software, and one on the past and future of FreeDOS. You can find links to both in the conference program.

Are you planning to attend Kieler? If so, please email me so I can meet you!
Update: If you want to download a copy of my slides, you can find them on my personal page. The presentations are available under the Creative Commons Attribution.

Saturday, September 9, 2017

23 Years of FreeDOS

On June 29th, 2017, FreeDOS turned 23 years old. There’s nothing special about "23," but I thought it would be great to celebrate the anniversary by having a bunch of past and current users share their stories about why they use FreeDOS. So, I made a call for users to write their own FreeDOS stories.

These stories are written from different perspectives, such as: "How did you discover FreeDOS?" "What do you use FreeDOS for?" and "How do you contribute to FreeDOS?" In short, I requested users to answer the question: "Why FreeDOS?"

This eBook contains the voices of many of the users who contributed their stories, as well as the history of FreeDOS. Many individuals have helped make FreeDOS what it is, but this eBook represents only a few of them. I hope you enjoy this collection of 23 years of everything FreeDOS!

You can find the free ebook at 23 Years of FreeDOS (ebook) on the FreeDOS website.

Thanks to Lauren Holly, Ben Norrman, and Shane Rose for serving as co-editors on the ebook. And special thanks to Shane Rose for the ebook design.

23 Years of FreeDOS is available for free, under the Creative Commons Attribution 4.0 International Public License (CC BY 4.0).

Tuesday, August 22, 2017

How to get involved in FreeDOS

Interested in getting involved in FreeDOS, but aren't sure where to start? We have several ways for new developers to get engaged. Here are two starting points:

Port FreeDOS utilities to OpenWatcom
When we created FreeDOS in 1994, there weren't a lot of Free software or open source software C compilers for DOS. The few that existed were subsets of C, or so limited in their functionality that they weren't useful in creating the FreeDOS utilities. The most popular C compilers of the era were Borland's C Compiler and Turbo C Compiler. (A few years after FreeDOS, Borland released the Turbo C Compiler at no charge as part of their "Museum" collection of old DOS software.) It's not surprising that a lot of FreeDOS utilities were written using one of Borland C or Turbo C.

Since then, the folks over at OpenWatcom have released an open source software C compiler for DOS. But many FreeDOS utilities must still be built using the closed source compilers. We prefer to be able to compile all code in a compiler we can distribute in FreeDOS itself.

I encourage any new developer to pick up a FreeDOS utility, and port it to the OpenWatcom C Compiler for DOS. The difficulty level here is variable. For simple file tools, this is likely straightforward and may require little work other than writing a new Makefile instruction. For other utilities, such as disk tools, there may be much more work involved.

If you take on this challenge, I also encourage you to reach out to the program's developer or maintainer. The FreeDOS utility may not be abandoned; more likely, the developer may not have needed to make new releases if their utilities are feature complete and haven't had bugs reported in years.
Port GNU Utilities for FreeDOS
Years ago, the "GNUish" project ported many GNU utilities to DOS. But eventually the project stalled. Before GNUish shut down, they asked us to mirror their files. You can find them at gnuish on ibiblio. As far as I know no one has created a comprehensive update to GNUish.

I think it would be great for someone to pick up the GNUish project again. Port the GNU Utilities to FreeDOS using OpenWatcom, or DJGPP. This is likely challenging, as it will require creating wrappers for different functionality, and workarounds for other functionality that doesn't exist on DOS.

If you're interested in contributing to FreeDOS, but you aren't sure what to work on, you might consider porting the GNU Utilities or other Unix utilities to FreeDOS. We'd love to add them to our archive. Read more at Unix utilities for FreeDOS

Saturday, August 5, 2017

FreeDOS for OEM

Jerome Shidel contributed this article for the FreeDOS summer coding blog challenge, about how to use FreeDOS for OEM PCs.
Different computer manufacturers will sometimes include FreeDOS as a pre-installed operating system option. This is always great to see! And FreeDOS, like any DOS, is pretty easy to set up as a pre-installed operating system.

When creating the FreeDOS 1.2 installer, I thought it would be good to keep this subject in the back of my mind. How can we make FreeDOS easier for original equipment manufacturers (OEMs) to include as a pre-installed operating system?

All of those computers, the ones that ship with their only installed operating system being FreeDOS, they should be considered. Yes, I do realize that mostly they are sold outside of the United States as a low cost option. And, users will most likely just be installing a copy of Windows or Linux onto them. But, I figured there may be some people that get them to run FreeDOS. So, I kept that in mind while designing how the installer handles certain things. Nearly always, I attempted to maintain an OEM PC compatible and extensible design. I knew it should work. But, I was very busy prior to the 1.2 release and never got around to testing it.

Now that FreeDOS 1.2 has been out for a while, I wanted to come back to the subject. I finally have tested it, and wow—it is awesome!

So, here is the quick way I made an OEM PC style setup with FreeDOS 1.2:
  1. Create a USB fob drive using the USB "Full" installer (FD12FULL.img).
  2. Boot that USB fob drive on the PC.
  3. When the installer launches, select the language then exit to DOS.
  4. Run FDISK 2
  5. Create your FreeDOS Recovery Partition. In my test, I used 1024MB.
  6. Exit FDISK and reboot the computer.
  7. When the installer launches again, select the language then return to DOS.
  8. Run FORMAT D: /q/u/v:FD-RECOVERY
  9. Run XCOPY /E C:\*.* D:
  10. Run SYS D:
  11. Run FDISK 2
  12. Activate the Recovery Partition on the D: drive.
  13. Create the user's big main FreeDOS partition, but do not activate it.
  14. Shutdown, then clone the drive a couple million times.
Once done, it has a couple really cool effects:
  • The first time the PC is booted, the user gets to install FreeDOS. They even get to pick their language and keyboard settings for their install. Afterwards, when the system reboots, it boots into their install.
  • The C: drive is that big user partition and the D: drive is the Recovery Partition. The Recovery Partition has all of the packages from the FreeDOS 1.2 distribution. So, you can use FDIMPLES to install and remove more packages with out needing to insert any additional media.
  • OEM vendors could add additional packages. Vendors might do this for networking and sound drivers. Those custom packages could be configured to be automatically installed.
There was only one issue of note that I found. If the user wishes to reinstall over their existing installation, using the Recovery Partition, they will need to change their active partition using FDISK to the Recovery Partition. Otherwise, the SYS transfer will fail. This actually has to do with force-updating of the MBR code, and not the simple SYS transfer. You can also avoid this problem by running the FreeDOS Installer in Advanced mode and “Not transferring the system files.” But, it is easier just to re-activate the Recovery Partition and reboot.​

Thursday, July 20, 2017

The FAST and SOFA compilers

As part of the FreeDOS Summer Coding Blog Challenge, Bruce Axtens writes on his blog about the history of the FAST and SOFA compilers for FreeDOS.

If you don't know about FAST and SOFA, FAST is loosely based on Basic, Pascal, C and Assembler. The programs produced by FAST are very small and very fast. SOFA is an 8088 (and semi-80386) assembler, with syntax based somewhat on A86 and CHASM.

Both FAST and SOFA were created by Peter Campbell, who passed away in 2007. FAST and SOFA have since been released under the GNU GPL.

Thursday, July 6, 2017

How to compile bwBASIC from source

Dr Owain Kenway recently wrote about a problem he discovered with Bywater BASIC, one of the BASIC interpreters we include in the FreeDOS 1.2 distribution. Looks like we made a mistake on our end by including the Win32 version, but Owain shows how to recompile a native DOS version. You can read his how-to on his blog:

Fixing bwBASIC on FreeDOS »

While this isn't necessarily part of the FreeDOS Summer Coding Blog Challenge, I'd like to include it as such because it shows the power of open source software: you can always compile it yourself.

(We'll also update the bwBASIC package on our end. Thanks, Owain!)