15

Is there a well documented or well understood explanation for what was the intended purpose for the more haphazard glyph choices in the control code range of the original IBM PC character set? Maybe a design document? It would also be great to understand how the extended character set glyphs were chosen, but that's less important as those (mostly) have an obvious meaning.


The control code (< 32) range in the original IBM PC character set (what we today call codepage 437) is home to an odd mixture of displayable characters. Formally these characters are not displayable in ASCII, but if you put them in the screen buffer most of them display a special character of some sort. It's easy to imagine why you would want to take advantage of otherwise unused character codes for useful characters that they couldn't fit in the extended character (> 127) range.

Many of them have obvious purposes. For example:

  • 0x01, 0x02: Smiley faces
  • 0x03 - 0x06: Card suits, useful for text-based card games
  • 0x18 - 0x1B: Arrows
  • 0x14, 0x15: Paragraph marker (Pilcrow) and Section marker, seen in certain types of documents.

However some of them seem (to me) to have been strange choices. For example 0x13 is a double exclamation point which is not something you would normally see in text. 0x17 is a vertical double-arrow with some kind of baseline. There are also an assortment of "bullets" and "reverse bullets" for lack of a better description.

I have to assume someone had a good reason to pick those glyphs specifically. One hypothesis I have is that some of the obscure symbols might have been commonly used by terminal for their status lines (so, useful for terminal emulation), but I don't really have experience with terminals and that's just speculation on my part. Or maybe they are present in older IBM computer equipment and they copied them forward to the IBM-PC? (but that just shifts the question to "what use did that older equipment have for these characters?")

Note that I'm not asking about what common uses were given to those symbols given that they were available, but what was the intended purpose for which they were included in the first place.

(For bonus, 0xFE "black square" is in the extended character range but also doesn't seem to have an obvious purpose to me)

1
  • 1
    the purpose of the double exclamation mark is clearly to tell you that things are !!on fire!!
    – user253751
    Feb 25, 2021 at 9:16

1 Answer 1

22

The first 32 characters in code page 437 were apparently mostly chosen in a single, four-hour “meeting” in a plane, with three people: David J. Bradley, who developed the PC ROM-BIOS, Andy Saenz, who was responsible for the PC’s video card, and Lew Eggebrecht, the IBM PC’s chief engineer. An email conversation with David J. Bradley mentions that

If you look at the first 32 characters in the IBM PC character set you’ll see lots of whimsical characters — smiley face, musical notes, playing card suits and others. These were intended for character based games

(A later email does say that the four-hour meeting is somewhat of a joke, and that the character selection was a little more involved, but not much more.)

Many games did make use of those characters; see for example Snipes (mentioned in one of the emails), ZZT...

Some of the graphical characters were also used in Wang word processors, so it’s possible that they were inspired by those; for example the double exclamation point was used to signify a note (not the musical kind), and the double-headed arrow with an underline meant “don’t merge”.

IBM’s code page registry describes them as

01 SS000000        Smiling Face
02 SS010000        Smiling Face, Reverse Image
03 SS020000        Heart Suit Symbol
04 SS030000        Diamond Suit Symbol
05 SS040000        Club Suit Symbol
06 SS050000        Spade Suit Symbol
07 SM570000        Bullet
08 SM570001        Bullet, Reverse Image
09 SM750000        Open Circle
0A SM750002        Open Circle, Reverse Image
0B SM280000        Male Symbol
0C SM290000        Female Symbol
0D SM930000        Musical Note
0E SM910000        Two Musical Notes
0F SM690000        Sun Symbol
10 SM590000        Forward Arrow Indicator
11 SM630000        Back Arrow Indicator
12 SM760000        Up-Down Arrow
13 SP330000        Double Exclamation Points
14 SM250000        Paragraph Symbol (USA)
15 SM240000        Section Symbol (USA)/Paragraph Symbol (Europe)
16 SM700000        Solid Horizontal Rectangle
17 SM770000        Up-Down Arrow, Perpendicular
18 SM320000        Up Arrow
19 SM330000        Down Arrow
1A SM310000        Right Arrow
1B SM300000        Left Arrow
1C SA420000        Right Angle Symbol
1D SM780000        Left-Right Arrow
1E SM600000        Solid Triangle
1F SV040000        Solid Triangle, Inverted

and 0xFE is

FE SM470000        Solid Square/Histogram/Square Bullet

Wang’s 2200 Programmer’s Guide to Word Processing features the following characters in common with the above:

↑ Superscript
↓ Subscript
↕ Merge
► Tab
◄ Return
→ Indent
∟ Dec Tab
‼ Note
↨ Don’t Merge

(Other Wang characters have equivalents elsewhere in the IBM code page.)

11
  • 2
    It sort of surprises me that IBM would send three of the key engineers together on the same flight ☺ Feb 24, 2021 at 22:18
  • 4
    Ahh, those characters. As an 8-year-old, I remember getting so frustrated trying to figure out how to get QBasic to display them when all I had was the ASCII chart from the IBM PC BASIC manual, a bunch of 8-bit BASIC books, and a QBasic book focused on business applications.
    – ssokolow
    Feb 25, 2021 at 1:49
  • 2
    @GregHewgill: At the time, it was not expected that the IBM PC would become a world-dominating platform. It was just intended to compete at the bottom end of the business market. Feb 25, 2021 at 11:55
  • 3
    @StephenKitt: Fair 'nuf. If the symbol was well known in Europe, the fact that American magazine columnists wouldn't be able to ascertain its meaning shows how much less well connected the world used to be.
    – supercat
    Feb 26, 2021 at 21:01
  • 4
    I grew up in Latin America and was just obvious. But I won't judge too harshly any American columnist for not knowing about ; localism was truly endemic in technology at the time. Still: the fact that was right after to ¢, £ and ¥ should have been a clue to look it up. I will give a pass for not noticing that it is in fact wholly sandwiched between currencies because it's also followed by ƒ (florin) and that one is slightly more obscure (to me?) and also passes for a "function" symbol. The one that stumped me was the ¤ "not-really-a-currency currency" in CP1252. Feb 27, 2021 at 7:46

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .