I wish I could use the DOS / IBM PC style smileys in terminal games. They were, in fact, designed for "ansi art" style fixed width character games. However, there isn't the convention in fonts that it should fit into a single character with a monospace font, so you can't use this or a lot of the lovely characters that DOS games would use.

Also look at them! They have such nice, minimalist character!

And yes, they WERE intended for games: https://www.vintagecomputing.com/index.php/archives/790/the-ibm-smiley-character-turns-30

From the article above:

> 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 — see “Snipes” if you can still find a copy.
>
> [...]
>
> Now, what to do about the first 32 characters (x00-x1F)? ASCII defines them as control codes, carriage return, line feed, tab… These characters originated with teletype transmission. But we could display them on the character based screens. So we added a set of “not serious” characters. They were intended as display only characters, not for transmission or storage. Their most probable use would be in character based games.

@cwebber
I was recently digging around the early Smalltalk systems and they did this too.

@cwebber
Here's an example from Smalltalk-76 with the characters converted to unicode.

printon: strm | t [
strm append: [self≡nil⇒ ['nil']; ≡false⇒ ['false']; ≡true⇒ ['true']
t ← self class title.
strm append: ['AEIO' has: t∙1⇒ ['an '] 'a '].
t]]

Edit: Sorry if it wraps badly.
Edit2: Switch to quote since Smalltalks have always used proportional fonts 
Edit3: ≡ ⇒ ← ∙ are the custom chars they used in this sample.

@cwebber did they not survive into Unicode?

The apple // "running man" is in there.

@mcc They are "there" but most terminals aren't sure enough about them fitting in the size of a single character, and sometimes they can shift the spacing of the line, I have found
@cwebber @mcc I'm guessing their unicode counterparts are U+263A (☺) and U+263B (☻), which usually look quite different than the DOS faces, and are sometimes substituted with color emoji

@aeva @cwebber @mcc wikipedia claims all of cp437 is in unicode.

The smiley faces can be either color or not, and that can be explicitly specified with Variation Selector 15/16 (U+FE0E and U+FE0F)

e.g. the sequence U+263A U+FE0E is "☺︎", while U+263A U+FE0F is "☺️"

@mcc @cwebber hah, always nice to see references to the legacy computing characters. My name is on the Unicode document that added it. 😀

Those missing characters was a gap that needed addressing.

@loke @mcc thank you for your hard work ☺☻
@cwebber Hey, I remember them from DOS games in the early to mid Eighties! Mostly small ones which I had on some floppies my dad got from Somewhere not entirely clear.
@cwebber the ascii control characters have "official" forms, although I've never seen anything use the MIL-STD-188-100 glyphs
@th @cwebber I have GOT to use these somehow!
@attoparsec @th @cwebber Those taste like some sort of alternate universe milspec PETSCII.
@NF6X @attoparsec @th @cwebber That's what I was thinking! Now I want to go back and decipher why those symbols were chosen.
@attoparsec @th @cwebber bookmarked for the same reason. They do seem to have a system behind them, though I’d need to look more for the difference between outer shape is circle vs. square, the rest is clear.
@th @cwebber Looks like a copy protection for an Amiga game
@th I have to know more about this but the closest I found was https://dn720001.ca.archive.org/0/items/MIL_STD_188_110B/MIL_STD_188_110B.pdf which does not contain this chart....
@jwz the ASCII control character chart appears Appendix B in the 1972 edition of MIL-STD-188-100, but not the newer ones. https://everyspec.com/MIL-STD/MIL-STD-0100-0299/MIL-STD-188-100_16264/
@th @jwz these symbols all exist in Unicode, and I'm using some of them in my programming language.

@jwz @th
This poster came with my 1993 copy of the C Programmer's Guide to Serial Communications by Joe Campbell.

At the bottom it says "Extra copies of this poster may be ordered from Campbell Productions", with a PO Box and phone number, which I won't provide here.

@th @cwebber The Amstrad CPC character set has glyphs for them, clearly based on this standard though with some differences. Many can be typed directly with CTRL-[char], others (like CTRL-M which is usually interpreted like a press of the ENTER key) need a little trickery to display. This allowed you do things like embed them in BASIC "PRINT" statements to produce various display effects. I also used to embed them in filenames using a disk editor to confuse anyone doing a directory listing :-)
@th @cwebber oh no, 0x0A is the hamburger menu 😩
@th The character generator of the Sol-20 displayed those glyphs in a 5x7 pixel font. A few Sol games (Trek-80, Target) used them in imaginative ways.
@[email protected] @[email protected] I seem to remember them being hidden away in the character set of the Amstrad CPC/PCW series.

@th @cwebber

Unicode has a block for symbols for control characters, but only DEL has a glyph at all like those, and DEL gets two entries, a lettered form and a symbol.

https://en.wikipedia.org/wiki/Control_Pictures

signed, sponsor of character ␗

Control Pictures - Wikipedia

@th @cwebber
Some of the masked ROM character generator chips that appeared in the 1970s had those. Examples include the MCM6574 and MCM66740.
Some other variants put two-letter abbreviations for the controls.
@cwebber did Amiga have any like that?
@cwebber To this day I legit love and miss ANSI art.
@cwebber good olde code page 437
@cwebber I think when was like 8 I used DEBUG on MS-DOS to go through a whole byte and draw a ASCII table by hand. Wish I still had that.
@cwebber my favorite was the 2048x8 masked ROM that the Commodore PET used as its character generator. It didn’t use the ctrl character range, rather 0x60-0xbf for lines and blocks that could be zero-width joined. (When using lowercase you only got 0xa0-0xbf). The fun part was you could burn your own 2716 EPROM and swap it into the socket and draw your own extended characters on the screen.
@cwebber While I remember DOS games using those faces thanks to Dwarf Fortress I will always see these characters as "dorf"

@cwebber You can type those characters using Unicode numbers, like this: ☺ ☻ etc. See https://en.wikipedia.org/wiki/Code_page_437 (especially the table) for what Unicode numbers to enter.

╔═════╗
║SMILE║
║♥♦♧♨║
╚═════╝

(I know these are not exactly monospaced, but I think there is a way to get that.)

Code page 437 - Wikipedia

@cwebber I mean you can... you just have to write your own "terminal"
(which should really be a tile-based engine anyways, there are no technical advantages to the terminal...). Yes, I know some of the "magic" is lost, but hey...
This guy even added other alphabets to the font, look:
https://int10h.org/blog/2015/12/bigblue-terminal-oldschool-fixed-width-font/
BigBlue Terminal: An Oldschool Fixed-Width Pixel Font

VileR's blog: old school PCs, games, graphics, programming, fonts, demos, and so on.

@cwebber I still remember playing several DOS games that used these. Most were from before my time, but they were still fun. I think my favorite was MegaZeux, which was more or less based on ZZT/SuperZZT (which I had played before it. They had their own OOP language for making custom games.

Technically MegaZeux is still around.

I'm not sure though, some of these things still have terminal versions for modern systems I think. I think they must be using something that still works? Then again, most use SDL, GL, or etc, so I'm really not sure I guess... Maybe there really isn't. I just am not sure.

@cwebber I once wrote a text-based platformer where I used those as part of the "sprite". I wonder whether I still have the quickbasic files around...
@cwebber What's keeping you from that?

@cwebber if you use xterm or the Linux text console, and if you manage to get it to output the glyph instead of run the control, I do have a font for you.

In the dist tarball https://mbsd.evolvis.org/MirOS/dist/mir/Foundry/FixedMisc-20200214.tgz there’s a font mirf16v8 (and its hiDPI version mirf32vd that maps to precisely that, with a slight exception (&hFF maps to U+23B5 ‘⎵’, see mirf437v.map). It’s available as BDF font for X11 (can be compiled to PCF for your endianness with standard X utilities) and PSF(U) for tools that can load them (Linux text console, but also some DOS tools). It’s a strict 8×16 (hiDPI 16×32) font. (The hiDPI version is mostly mechanically scaled up, with only some glyphs and diagonals improved.)

Enjoy!

@cwebber
eyes on top of the head, though? it's unrealistic!