What the heck is Sabine? SabineOS? Sabine 10-Bit Text System?

Short answer: a bunch of crap. Long answer...


Ages and ages ago before I knew anything about anything, I would create these crappy, poorly-designed HyperCard stacks with no point. Among the most infamous of these were N-Term, OnraSyst Q, and Gammasoft BASIC. Some I tried to pass off as programming languages: Gammasoft BASIC is the obvious example; another one was called R++ and was included with a terrible HyperCard office suite called Gammasoft Office. The one we're bringing up right now, however, is called HYPERBASE PROLAN. A special "font" used by HYPERBASE PROLAN was called Sabine.

The HYPERBASE PROLAN Sabine was actually just the Apple II character set, with a bunch of patterns and other crap thrown in there. It wasn't so much a font as a set of 512 patterns (hence 9-bit) that could be displayed in 8x8-pixel blocks. Interestingly, or uninterestingly, all HYPERBASE PROLAN could ever do was display the above about box. I don't think it ever worked with 24-bit color either.


After HyperCard, I got into programming on the Apple II. This is where I started to make things that were actually useful: a painting program, a file manager, a text viewer, and a few miscellaneous utilities. Sabine, or rather, the Sabine name, was taken to the Apple II. Here the character set was actually created from scratch by me. It abandoned all the patterns and other crap and started encoding actual text characters.

I wrote all the routines to load the characters from a binary file and draw characters and whole strings. Initially the routines were written in BASIC, but later I ported them to assembly language. I figured out how to hook up my drawing routines to Applesoft BASIC's ampersand (&) command so I could draw text strings from BASIC programs. I was also able to hook up my routines to the Apple II's character output, so everything printed to the screen appeared in Sabine's font. The entire set of binary files was referred to as the Sabine 9-Bit Text System or Sabine 1.5.

The Sabine low-resolution graphics demo.

The Sabine high-resolution graphics demo. Sabine could only fit 35 columns on screen, whereas the regular text mode could fit 40; this was because the Sabine characters were 8 pixels wide and the regular Apple II text characters were 7 pixels wide. Some parts are green or purple in this screenshot because of the way the Apple II high-resolution graphics mode worked.

Here the Apple II's character output is hooked up to the Sabine routines. The character output routine was loaded in memory at location 0x409C. (I had a little trouble setting this up for the screenshot; when I tried just loading the binary files and hooking up the output routine, all I got were Cyrillic characters. To get it to work properly I ran the SABINE.409CDEMO and stopped it before it got past ASCII characters. There must have been some extra setup step I don't remember.)

Sabine 1.7 attempted to bring in some graphical user interface elements using the Apple II's vector graphics. Nothing was ever done with this, however. Sabine 2.0 was the introduction of the 10-Bit Text System, allowing 1024 characters. Sabine 2.0 for the Apple II was never actually written, except for some font loading routines.


I just hate to admit doing this. I tried to pull off what must have been the stupidest idea in the history of computer programming: writing a windowing system in Microsoft QuickBasic!

I once had an old 486. I acquired a copy of QuickBasic and ported the code to display Sabine text characters, and included a full 1024 characters. Sabine 2.0 for the Apple II never existed, but unfortunately, it existed for QuickBasic.

Here are the 1024 characters:

The first application written was a character chart for displaying all these characters. It was very rudimentary at first, looking like a typical DOS application. The trouble started, however, when I tried building the windowing toolkit. I wrote routines for using certain subsets of the 10-bit character reportaire (called "Sabine fonts"), enabling the mouse and drawing a cursor, drawing GUI controls, changing the screen colors, drawing icons, saving and restoring the VGA video buffer, and even as advanced as moving "windows" around. My creation was originally called SabOS, but not much later was renamed SabineOS (I knew nothing of the difference between an operating system and a windowing system at the time). Unfortunately, not only was I doing this in QuickBasic, but I was absolutely abysmal at designing UI code. There could only be one "window" on the screen at any one time. The screen flickered as you moved the window because it redrew the entire desktop background and laid the window over it! The code was a mess and had to be compiled into every SabineOS application.

Fortunately, the only SabineOS applications ever written were the character chart, icon editor, screen saver, Color control panel, and a Program Manager type program called Applicat.

This is Applicat. It's about as bad as the Windows 3.1 Program Manager. The only advantage is that Applicat files can refer to any other Applicat file, so you can have hierarchical program groups. Everything else is a disadvantage, obviously. Shown here are icons for several programs that don't exist, thankfully.

At the bottom of the Programs list is a link to another Applicat file, Utilities. These programs actually exist.

Here is the Sabine character set again.

Here's the icon editor. Before I made this, I used a thrown-together DOS console application called ICONHACK. Since no menu code was ever written, the menu commands are on the menu bar. Clicking Open or Save didn't bring up a file selection dialog or anything; where "Editing file UNTITLED" appears in the screenshot, a prompt would appear asking for the file name and you had to type the path in, extending the line of text past the window border if you had to!

This is what happens when a SabineOS application crashes. 53 is a QuickBasic error code. It occured at "0" because the BASIC program had no line numbers. (Interestingly, pressing Continue worked on this one.)

This is the SabineOS control panel, which is actually just another Applicat file. The only one of these that works is Color.

Here's SabineOS's Color control panel. It allowed you to change the 16-color palette of the VGA mode. Four precomposed palettes were available: Uncorrected (the default VGA colors), Corrected, Grayscale, or Black & White.

The best part of SabineOS.

One other thing I did with Sabine that isn't shown here was loading the Sabine character bitmaps into the VGA character set. I had a little program called SABFONT.EXE that would do this. I often used the MS-DOS prompt with the small-caps font. One common problem I encountered was when the characters would remain at 8x12 instead of switching to 8x8, and I would get Sabine characters with the bottom third of the corresponding VGA character underneath! I still occasionally do this kind of thing even today; here's a Mac OS X Terminal window in the serif Sabine font.

The mouse driver SabineOS used was obviously flawed. While it runs fine on genuine PC hardware, it just does this under Virtual PC. Also, while SabineOS ran at an acceptable speed on my old 486, it's slow as heck on Virtual PC. I think it's because it accessed the hard disk a lot.

Update: SabineOS is confirmed to be working under DOSBox, without the mouse trails observed above:


Thankfully, I dropped the SabineOS project before it got any worse. For a little bit, though, I still continued doing stuff with the Sabine 10-Bit Text System. Here's a demo application I compiled in RealBasic:

Sabine 3.0 was defined as a text encoding, and had a completely new character set. The last 256 characters were filled with Extended Latin characters I found in Times New Roman by looking at the Insert Symbol dialog in Microsoft Word. Nothing was ever done with Sabine 3.0 except a character chart. Thankfully, by that time I dropped the Sabine 10-Bit Text System entirely. I learned about Unicode, and I realized that what I was doing was totally insane, and that anything less than 16-bit was dead. DEAD! Thankgawd!

The Sabine 10-Bit Text System even had a mascot, a girl named Sabine Tenbitesch.

Sabine's alleged handwriting was made into a TrueType font called Tenbitesch, still downloadable from my Relay Fonts 2001 page.

This is a RealBasic program I made shortly after called Doscbthm. Doscbthm stands for Dead Operating System Coming Back To Haunt Me! With the help of a Kaleidoscope scheme and a custom system font, it gets really freaky!

Doscbthm on Mac OS X.

Doscbthm was created just for irony's sake, but it actually does more than SabineOS ever did! It implements the character chart, icon editor, and Applicat, but it also has a file browser, which SabineOS never had. Doscbthm uses the same icon and Applicat files that SabineOS did, but there's none of the VGA memory dumps, mouse drivers, or other crap that SabineOS used.


SabineOS was never usable in any way, shape, or form, but it was quite a learning experience. A lot of what I know about software engineering now I learned from making so many mistakes.