Sunday, September 07, 2008

What is ASCII Art? What is ANSI? and more!

I added a significant amount of content to my ASCII Art Academy page on my site. I answered there in short what things are. I explain all this stuff in detail in various articles, but I think it is good to have a short and straight forward version on the main Academy home page as well.

Here are some examples:

What is ASCII Art?
ASCII stands for American Standard Code for Information Interchange and is a text format standard for computers. ASCII art is text art that was created on computers who use this ASCII standard. The text art created on the IBM PC, which use text characters beyond the ASCII standard are also called ASCII, even though it is technically incorrect. The IBM PC become the most widely used computer in the world and people called things ASCII, even if they were not. There is no sense to debate about it, because it won't change what already happened.

What is 7-Bit ASCII?
The difference between 7-bit and 8-bit ASCII is pretty simple, assuming that you have a keyboard with the latin alphabet. 7-bit only uses characters that you can find on the keyboard. 8-bit uses additional characters that you cannot find on your keyboard, but which exist in "text mode" of the old MS DOS operating system. MS DOS hat 256 characters for text mode. Some of them are control characters and not visible, such as Carriage Return, Line Feed (Line Break), the Tab character or the Escape character. The standard US-ASCII characters are the first 128 characters of the character set, where 97 of them are usable for text and ASCII art.

What is 8-Bit ASCII?
8-bit ASCII art uses primarily characters after the 128 characters of the US-ASCII character set. You cannot find those characters on your keyboard and could only generate them via programming code, special editors (like TheDraw or ACiDDraw) or by pressing the ALT-Key and then type the character code (a number between 128 and 255) on your numeric keypad, while keeping the ALT-Key pressed. Those upper or "higher" characters are suitable for basic graphical elements, such as box borders, corners. Those characters are unique to the IBM PC and MS DOS and are not compatible with other operating systems, such as UNIX, Linux or MAC OS, which might also have an extended character set beyond the 7-bit ASCII standard, for which no standards exist..

What is ANSI?
In 1979, the American National Standards Institute (ANSI) passed X3.64-1979 “Additional Controls for Use with the American National Standard Code for Information Interchange”. This standard defines a set of control sequences to manipulate the appearance of the text on the screen of computer terminals, to Bolden text, making it italic or blinking and to add some colors to your text. Microsoft added this standard to their MS-DOS operating system in a device driver called “ANSI.SYS”, which people started simply to refer to as “ANSI”. There are 16 pre-defined foreground colors, where 8 of them could also be used as background color.

The use of ANSI control sequences (called Escape sequences, because they all started with the ESC character) required special editing software, because unlike the 8-Bit upper characters, is there no easy way to generate those sequences by hand. In order for MS DOS to process and interpret those control sequences properly, a special driver had to be loaded, which came with the MS DOS operating system by default. The file for this driver was named "ANSI.SYS". This is where ANSI got his name from, which is sometimes confusing, because ANSI also stands for the American National Standards Institute, the organization who defined the US-ASCII standard.

And more...
I also added examples of the character sets 7-bit and 8-bit and the ANSI color schema. I also added a grid with the mapping of ANSI colors to HTML colors and their ESC sequence code.

New ANSI Tutorial
Another goodie that I finally added was a good and detailed ANSI tutorial by the artist Zerovision of the young ANSI art group called "Blocktronics". It uses the example of a picture that shows the movie character "Chucky" and how he re-created the picture in ANSI. It explains shading techniques and more in detail, why ZV decided to do this versus something else, etc. Very useful for beginners.

Group Update
It is funny, but I joined as of today a new computer group. Something that I didn't do for the past 10 years or so. I thought I am too old for this stuff, but then, it is a revival of an very old group by a bunch of very old guys like me (in terms of Scene life). The group is called "Canadan Pirates Inc." or CPI. A group with roots in Canada (duh) and some cracker scene history. The revived group does not do any cracking and warez anymore though. It will focus on Music, Intros, Demos and also scene history preservation, something that I already do for a few years now.

I chatted today on Facebook with Rod aka MadMax, co-founder of CPI and he asked me, if I would join. I was in touch with Rod for a while already and also had multiple lengthy phone calls about verious things, mostly whining about the lost past hehe. I said yes, so here I am... new member of CPI. :)

Well, that's some news.... I hope you will like the new content. I am out of here now.

Carsten aka Roy/SAC (and CPI)


Paul said...

Wow, this site certainly brings back memories of TheDraw on my old 8086 :)

However, you have your info on ANSI slightly wrong.

ANSI is in no way unique to ANSI.SYS, nor to MS-DOS, nor even IBM PCs for that matter.

The codes actually go back to the olden days of VAXen and Unix systems running text-based consoles.

DEC (a major text console manufacturer at the time) came up with various 8-bit 'control codes' as extensions to the existing 7-bit code. These codes allowed applications to position the cursor at various points on the screen, interrogate the terminal for its capabilities, set various options, and change character attributes using something known as a CSI (Control Sequence Introducer).

An example of which would be a simple:
^[[2J - CSI 2 J
^[[1;1H - CSI 1 ; 1 H
^[[31m - CSI 31 m
^[[?25l - CSI ? 25 1
^[[?25h - CSI ? 25 h

which would:

* clear the screen
* set the cursor point to row 1, column 1
* set the foreground text colour attribute to red
* hide the cursor
* show the cursor

This works on most modern text-based consoles (for Unix, VMS, MacOS X).

in fact, if one has access to any Unix (or Linux, BSD, whatever) or MacOS X system, one can simply open a terminal (xterm or whatever) and type:

echo "^[[2J^[[1;1H^[[?25l^[[31mHello^[[?25h"


echo -e "\033[2J\033[1;1H\033[?25l\033[31mHello\033[?25h"

where ^[[ means press control+v, then press escape, then press [... you'll see ^[[

The terminal program itself will catch the ^[[ (CSI) code and perform the operation.

Windows and MS-DOS still require ansi.sys -- which incidentally got its name from the ANSI X3.64 standard. :)

More details on what one can actually accomplish with control codes can be found at:

p.s. 7-bit and 8-bit ASCII have also existed a lot longer than MS-DOS, and continue to exist in all modern operating systems.

p.p.s. 8-bit control codes themselves are quite complex beasts, with whole 80-page manuals devoted on using them.

Carsten a.k.a. Roy/SAC said...

Thanks for you comment Paul. I made changes to the 2 paragraphs (ANSI and 8-Bit ASCII) and corrected the incorrect and unclear passages. Let me know, if you still see anything wrong with it. Thanks again.


Post a Comment

Hi, thanks for taking the time to comment at my blog.

Due to spam issues comments are not immediately posted on the site and require my manual approval first, before they become visible.

I try to approve comments as quickly as possible and usually within 24 hours.

To be notified about follow up comments that are made after yours, use the subscribe option with your email address and you will receive an email alert, if somebody else comments at this post in the future.

Also check out the rest of the website beyond this blog, visit Also see my YouTube channels, SACReleases for intros and demos.

Carsten aka Roy/SAC

Note: Only a member of this blog may post a comment.