Welcome to Kreative Korporation  Kreative Entertainment Kreative Software Miscellany
Mika City
High School Math
DWT
Relay Fonts
Open Source
Legacy Software
More...
Web Applets
The Language Pages
The Gender Pages
Miscellaneous Pages
About Kreative Korp About the Kreator Contact Us Terms of Use Site Map

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

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


A long time ago before I knew anything about anything, I would create all 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. Guess what it stood for? Anyway, the "font" used by HYPERBASE PROLAN was called, well, 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 started getting into programming on the Apple II. To make a long story short, I took it all the way from Applesoft BASIC to 6502 assembly language. 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 my drawing routines up to Applesoft BASIC's ampersand (&) command so I could draw text strings from BASIC programs. I was also able to hook my routines up to the Apple II's character output routine, 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. It can still be downloaded from my Apple II page.


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 is because the Sabine characters were 8 pixels wide and the regular Apple II character set was 7 pixels wide. Some parts are green or purple 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; 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.


Sabine almost made it on a round-trip back to HyperCard. An extension was created for KHyX initially called $1.25 (10 bits, get it?), but later renamed Kristen. All it ever did was store a list of the fonts on the system in a global variable. Sabine never made it back to HyperCard, but instead took an unfortunate detour.


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

Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!!!!!!!!!!!!

I once had an old 486. I downloaded a copy of QuickBasic from some web site that is now long gone. I ported the code to display Sabine text characters to QuickBasic, 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 came, however, when I started building a toolkit for a graphical user interface. 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 "operating system" was originally called SabOS, but not much later was renamed SabineOS. 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 crappy 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. Invert inverted the screen, Drop Red made the screen entirely cyan, Drop Green made the screen entirely purple, and Drop Blue made the screen entirely yellow. If you dropped red, green, and blue, the screen reverted to the default VGA colors.

The best part of SabineOS.

One 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 problem I had with this is 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 do this kind of thing even today; here's my 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 and left operating system design as something I would do after I learned C/C++. For a bit, though, I still continued on doing stuff with the Sabine 10-Bit Text System. Here's a demo application I compiled in RealBasic. Better than QuickBasic, obviously, but still crap:

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 was done with the Sabine 10-Bit Text System entirely. I had learned about Unicode, and realized 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 handwriting was defined in a TrueType font called Tenbitesch, still downloadable from my Relay Fonts 2001 page. She was also part of a cartoon idea called Inside Kreative Korp. The idea was that she was somebody who worked at Kreative Korporation who was being exploited by the software industry without knowing it. I still have a "script segment" of when her boyfriend overhears me talking about the Sabine 10-Bit Text System, and he runs off to tell Sabine about it. Sabine hacks into my computer and finds all the Sabine 10-Bit Text System files, and procedes to copy them all onto her computer. I catch her and try to stop the file transfer, but it completes just as my computer goes offline.

This is a RealBasic program I made 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, both of which can be downloaded here, it gets really freaky!

Doscbthm on Mac OS X.

Even disregarding the advantages of running on a real GUI, Doscbthm actually does more than SabineOS ever did! It implements the character chart, icon editor, and Applicat, but you'll notice 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 had to have.


SabineOS was never usable in any way, shape, or form, but it was quite a learning experience. A lot of what I know about BASIC, assembly language, and operating system design I learned from making so many mistakes.