Wednesday, April 29, 2020

The Golden Flute IV: The Flute of Immortality

In 1994, a 12-year-old Rick Brewster made the DOS game The Golden Flute IV: The Flute of Immortality. This was a role-playing game that he learned to make from a 1984 instructional book on how to write adventure games. The game recently reappeared, and since it's a DOS game, I wanted to share it with you.


Let's remember that the game was coded by a 12-year-old, so don't expect outstanding art or special effects. Rick re-used some sounds from another program, but coded his own turn-based dungeon crawler.

I'm really impressed that 12-year-old Rick thought to randomly generate the map, so the game is different every time you play it. Great job!

Rick says you basically need to wander around the map fighting random encounters with various enemies, until you eventually discover the golden flute. It is all random encounters, but that's part of what makes the game fun to play.

You can download The Golden Flute IV or play it in your browser, at the Internet Archive: The Golden Flute IV

Monday, April 27, 2020

Compiling with GCC

FreeDOS includes several compilers to help you create your own DOS programs. If you're a C programmer, you might be interested in Bruce's C compiler, or the OpenWatcom C compiler, or the GNU GCC compiler. We actually have two versions of GCC in FreeDOS 1.3RC2: the DJGPP compiler, and the IA-16 version of GCC.

Let's look at how to compile C programs using GCC IA-16. This is a DJGPP/MS-DOS-hosted (32-bit x86) port of the GNU C and C++ compiler toolchain to the IA-16 target (16-bit Intel x86), by Rask Ingemann Lambertsen, Andrew Jenner, TKChia, and various contributors.


You can download GCC IA-16 here: DJGPP packages for GCC IA-16 toolchain. This is an excellent compiler! I used to use OpenWatcom for all my FreeDOS compiling, but I'm starting to use GCC IA-16 more and more. Thanks!

Friday, April 24, 2020

Freedoom on FreeDOS

Arguably, the most well-known DOS game is DOOM. In this first-person shooter, you play as a space marine fighting back against a demon invasion from Hell. I lost countless hours playing DOOM when it came out.

In 1997, iD software released the source code to the original DOS DOOM under a not-for-profit license. And in 1999, iD released the source code under the GNU General Public License (GNU GPL). With that, developers and modders began to create a new version of DOOM.

The result is Freedoom. It's a completely different game than DOOM, but with the same basic premise. And do you really need story anyway? Run around, shoot things, blow things up. That basic formula can make for a great first-person shooter.


In the video, I make a mistake by calling this game "BOOM" but the game is actually Freedoom. From to a comment by the Freedoom team: Boom is a source port of the Doom engine; these are merely based on the engine's source code and does not constitute a game in of itself. They are typically played with the original Doom games (Boom came out when those were the only games that ran on it, too).

The sound levels aren't quite right in this video, so you may have difficulty hearing the game sounds.

Wednesday, April 22, 2020

Games in FreeDOS

FreeDOS hasn't always included games. I'll admit that I've been the roadblock on this one. All throughout the FreeDOS history, developers have contributed new programs and utilities to make FreeDOS even better. At first, these were open source replacements for MS-DOS functionality - as you'd expect. Over time, people began contributing new commands and utilities to let FreeDOS do things that MS-DOS couldn't. That is when FreeDOS really became a modern DOS.

With that change, people also wanted to contribute games. DOS has always had a great library of professional games - while MS-DOS was king of the office throughout the 1980s and into the 1990s, lots of publishers enjoyed great success in making games for DOS. We've highlighted a few of them here.

So maybe it wasn't too surprising that people wanted to see games included in FreeDOS. After all, if FreeDOS was to be a free and open source implementation of DOS, and DOS had lots of games, then shouldn't FreeDOS have free and open source games to go with it?

We started to include games in the FreeDOS distributions. You can find a great selection of games in the FreeDOS 1.2 distribution, and in the upcoming FreeDOS 1.3 distribution. But games are not "core" like other parts of FreeDOS. It's possible that we might remove a game that was in FreeDOS 1.2 when we release the FreeDOS 1.3 Final, or maybe we'll add a new game.

Let's take a moment to look at two great games you can find in FreeDOS today:

The Flappy Bird game is very similar to the Flappy Bird game you probably played on mobile devices. This game is simple, yet challenging. Tap the space bar to make the bird "flap" and gain a little bit of altitude. You need to flap just right to navigate your bird through the pipe gates.

We also have a version of the classic Tetris game called vitetris. Just like the now-familiar game, you need to rotate the shapes before they fall to the bottom of the screen. Complete a row to make it disappear and make more room.

You can install both of these games using the FDIMPLES package manager. The FDIMPLES program should be installed by default on FreeDOS 1.3RC2, and with the FreeDOS 1.2 "Full" distribution. (Not installed as part of FreeDOS 1.2 "Lite," sorry.)

Monday, April 20, 2020

Elvis - vi text editor for DOS

If you come to FreeDOS from Linux, you may find several of our commands and programs somewhat familiar. I've previously discussed FreeDOS for Linux users, where I explored a few command equivalents (TYPE for cat, and CD for cd, and DIR for ls). But we have other Linux-like programs too.

Arguably the most ubiquitous editor on Unix and Linux is vi, originally by Bill Joy (of Sun Microsystems fame). vi is a visual editor, hence "vi." But vi is operates in modes. You are either in command mode or edit mode. This is different from most DOS editors that are mode-less, where you are always in edit mode unless you activate a menu.

The vi editor has been ported to FreeDOS as elvis. The editor should be very familiar to any Linux users:

Note that elvis isn't as fully featured as vim, the common implementation of vi on Linux. But elvis provides a faithful vi editor for anyone who wants that environment on FreeDOS.

A quick hint for those of you new to vi:

To enter edit mode, you need to hit a key letter that starts editing. For example, i to start inserting text where you are, or I to start inserting new text at the start of the line.

To save, you need to exit edit mode by tapping the Esc key. Then give the command :w to write the file back to disk. To quit, tap the Esc key (if you are in edit mode) and give the command :q

Saturday, April 18, 2020

Learning how to write FreeDOS programs - new "how-to" video series!

Long post, so I'll summarize: the videos will be free and posted weekly for everyone to watch.

But because it's going to be a lot of work for me, I'll set up a Patreon tier to support it. I'm rewarding the patrons with a few extras.

Afterwards, I'll turn that into a "teach yourself C programming" book.

I asked on Twitter, on Facebook, and on Patreon about what you'd think of a new "how-to" video series about programming in C - and the response has been very positive. Thanks!

So I wanted to share an update on the new video series that I'm planning to release on the FreeDOS channel at YouTube, and on my Patreon:

I'm currently working on the "course" design for the video series (what to cover in each video, etc). I'm not sure what I'll name the video series - maybe "learning C" or "how to write programs for FreeDOS in C" or "introduction to C programming." I'm still working on the name.

Videos will get posted once per week. These will be available to Patreon supporters first, then will go public for everyone.

I'll continue posting the other FreeDOS videos about FreeDOS programs, other DOS programs, and DOS games - so maybe I'll keep posting the "usual" FreeDOS videos over the weekend, and post the "C programming" videos mid-week.

Throughout the video series, we'll learn how to write programs in C. At first, these will be pretty simple programs so you can see how things work. Later, I'll use the videos to show how you can write simple versions of FreeDOS programs like ECHO, PAUSE, CHOICE, TYPE, COPY, FIND, and MORE. And probably others like DATE, TIME, CLS, and DIR. By the end, I think we'll write a text-mode turn-based game.

Similar to how I am now writing new posts for the FreeDOS Blog about each of our FreeDOS videos, I am planning to write supporting text or "essays" about the "C programming" videos. These will mostly be extra commentary about the video content, and code that I wrote in the videos that you can copy/paste into your own editor. If I need to do a deep-dive on something that didn't really fit for the video, I'll do that in the essays. Also could include other information and "corner cases" that were too specific to make it into the videos.

I'll eventually copy the essays into the FreeDOS Wiki for everyone to see - but while the video series is running, I'll make them visible only to Patreon supporters. I'll need better formatting options than the Patreon editor gives me, so I might create these essays as web pages on the FreeDOS website, and share a protected URL on Patreon.

When I've finished the video series, I'll collect everything into a book, and make it available for purchase via Lulu.

Because this is a new "how-to" video series about a specific topic, I'm thinking about creating a new Patreon level to support it. The new tier (probably $40/month - that's only $10/week) will get these extra benefits:
  • Early access to the "C programming" videos
  • Exclusive access to the "C programming" essays, with more detail and information that didn't make it into the videos
  • A weekly Patreon forum to ask questions about that week's "C programming" topics (if you are following along with the videos and need help, this is the place to ask)
  • After the video series is done, these patrons can purchase the "C programming" book at cost (probably $3 to $5, depending) - that's a big savings from the general cover price for the finished book, which will probably be around $20

The goal is that everyone who wants to learn C to write FreeDOS programs can do that by watching the videos - but to get extra material to help you, you can join at the higher level.

Friday, April 17, 2020

Galaxy word processor

The most popular DOS word processor in the 1980s was probably WordPerfect. This was an extremely powerful word processor with a deceptively simple user interface. You were basically presented with a blank screen to type your document. There was no "menu" interface per-se, but you accessed all the word processor functions using the function keys on your keyboard. Each function key had different variations, like F3 (Help), Shift-F4 (Indent), Alt-F5 (Mark Text), or Ctrl-F6 (Tabs).

WordPerfect was great, once you got past the steep learning curve. But those features came at a price; WordPerfect was was $300+ per copy, or $200 for a student edition.

So when I was at university and needed to upgrade my copy of WordPerfect, I looked for less expensive options. I had already started to explore shareware, where you got to try a version of the program (usually for a certain amount of time) and if you liked it, you needed to register it. Shareware was typically less expensive than most "off the shelf" software like WordPerfect.

And that's how I found great programs like As-Easy-As (shareware spreadsheet from TRIUS Inc). I also discovered a powerful word processor called Galaxy. At $95, Galaxy was much less expensive than WordPerfect. It was also much easier to use, with a more traditional menu.

Let's take a look at using Galaxy:

Even today, Galaxy stands up well as a distraction-free word processor. If you're looking for something to make your writing easier, try out Galaxy.

I don't know how to register Galaxy anymore; as far as I know, the company no longer exists. You can find copies of Galaxy on various DOS shareware archives.

Wednesday, April 15, 2020

DOS games - Dark Forces

I have been a huge Star Wars fan since I saw the original in the theaters in 1977. After Return of the Jedi in 1983, it seemed we wouldn't see more installments of the franchise.

As a big fan, you can imagine my excitement at the release of Dark Forces in 1995. More than just another first-person shooter like DOOM, Dark Forces had an actual story attached to it. And even better, you got to experience the Star Wars universe first-hand.

Let's play the demo, which is the first level from the game:

The music, the effects - it's all awesome to me! I loved picking up the E11 blaster one more time, and taking down stormtroopers.

The general story of Dark Forces is you are Kyle Katarn, a former stormtrooper who left the Empire to go independent. You team up with the Rebels and fight your way into a base to capture the Death Star plans. (A note about the Death Star plans - there's a common saying that if everyone who stole the Death Star plans from the Star Wars Expanded Universe got together for a party, you'd need a huge banquet hall to hold everyone. There are a lot of stories about who stole the Death Star plans. This is one of them.)

Throughout the rest of the game, you are following up on other missions issued to you by Mon Mothma and the Rebels. The overall story is the Empire has a new weapon project called Dark Trooper, a new kind of unstoppable stormtrooper. You jump from planet to planet to learn more about them, and along the way blast through innumerable stormtroopers, guards, bounty hunters, and even Dark Troopers.

It's a great game!

Monday, April 13, 2020

DOS games - Blood episode 1

DOS was known for a lot of great games. The most popular DOS game was probably DOOM, and due to its popularity, many other game companies spawned other first-person shooter games.

Blood was one of those other first-person shooter games. Blood was developed by Monolith and distributed by GT Interactive. And when it came out in 1997, I spent a fair amount of time in it.

As you might guess from the name, Blood was a very violent game. I think there was a general trend of each first-person shooter trying to "out-do" each other in terms of gore. There's a lot of that in Blood. If you are sensitive to that content, you may want to avoid this video:


I apologize for the audio quality on this one. I didn't have my levels set correctly. So it's a little hard to hear me in some parts.

Thursday, April 9, 2020

Using FreeDOS - BAT files

FreeDOS is primarily a command line interface. You type all your commands on the command line, and FreeDOS executes them. Most of the time, you probably use the command line to change to a different working directory (CD) and then run an application or game.

But sometimes it is helpful to stack up several frequently-used commands, to avoid typing them all the time. This is called a "batch" of commands—and not surprisingly, you put these into a "batch file." Batch files always have a BAT extension.

Let's look at a few examples of writing batch files:


You can use batch files for many things. I often use them as shortcuts for a group of commands, such as defining something in my DOS environment before I run a certain program or game.

Batch files are so important in DOS that the startup of FreeDOS is controlled in part by a special batch file called AUTOEXEC.BAT. The FreeDOS kernel reads a different file called CONFIG.SYS to define how the kernel should be configured. When the kernel is finished with that, it starts the command line shell (usually FreeCOM, or COMMAND.COM). The shell reads AUTOEXEC.BAT to set up its own environment. You can view or edit CONFIG.SYS and AUTOEXEC.BAT using your favorite editor.

Tuesday, April 7, 2020

The FED editor

We include a wide selection of programming tools in the FreeDOS distribution. FreeDOS is made possible by everyone being empowered to be a co-developer, and we encourage you to create and share your own programs that run on FreeDOS.

I'll cover the compilers in another video, but today I wanted to share an editor that programmers may find interesting:

FED is a folding editor. "Folding" means that you can hide or "fold" sections of a file, so you can focus on the rest of it. That's a great feature for programmers. You might fold loops that you know work, so you can see more of the code around it.

Here is a demo of using FED to write some sample C code:

FED is also very configurable. For example, if you don't like the standard "black text on a white background," you can change that. You can also set the color for keywords, numbers, values, folds, and other things. In the demo video, I changed every code in FED, to use white text on a blue background.

FED is included as part of the FreeDOS distribution. You can install it by running FDIMPLES and selecting FED from the Editors package group.

Thursday, April 2, 2020

DOS spreadsheets - building a work plan

I love spreadsheets and the myriad things you can do with them. Spreadsheets are excellent at crunching numbers. When you're presented with a problem that requires updating numbers as you go, there's no better tool than a spreadsheet.

Let's apply spreadsheets to a staple of project management: the work plan. I like to plan ahead by three months at a time (a business quarter). I used work plans in previous organizations when I needed to plan staff time across multiple projects. And I teach work planning as part of the IT Management training program that I offer as part of my consulting practice.

The DOS spreadsheet As-Easy-As is my favorite DOS spreadsheet. So in this video, let's walk through how to create a work plan in As-Easy-As:


The concept of building a work plan is this:

1. Create a list of projects you plan to work on
These tasks should not be so small that they are individual work items, nor so large that they are "projects." For example: building a new website involves identifying the message and content, crafting the design, generate the artwork, and create the web pages. Each of those might take multiple days or a few weeks to complete, so you would list each as a task on the work plan.

Don't forget about non-project items, as well. How many meetings do you attend in a given week? Do you plan to take advantage of holidays or vacation time? I like to track those at the bottom of the work plan.
2. Build a list of weeks for the next quarter
I like to have my weeks start on a Monday. That seems to be how most people think. For example: someone might say "Let's meet the week of March 30" and most people understand that to be "anytime from Monday, March 30 to Friday, April 3." That makes for a good standard in a work plan.
3. Estimate the time per week for each task
My rule is that time should be no shorter than half a day per week. It's tempting to write down a task that you know will take an hour; maybe you can plan for that short of a time in the first week or two of a quarter, but by week ten, you can't make the estimate that precise. Enter your times in units of 0.5 (half a day in a week). Note that there are five working days in a standard work week, so your time estimates should not be above 5.0.
As you enter the time for each task in each week, keep track of the total for each week, also at the bottom of the work plan. The @SUM function will do this for you, calculating the sum of a range (the cells above it).

Once you enter your estimates, look more closely at the sum for each week. Most organizations plan for a five-day work week, so make sure your weekly totals are exactly 5.0. The need to adjust time is most obvious when you take vacation or holidays, but you'll need to adjust time for most weeks to accommodate multiple projects.

Spreadsheets do all the calculations for you, and As-Easy-As handles the work easily.

If you're interested in the As-Easy-As spreadsheet, TRIUS Inc. has released As-Easy-As 5.7 for free (gratis). You can find it on the TRIUS website: AS-EASY-AS for DOS - Free!