ATASCII


Contributors to Wikimedia projects

Article Images

The ATASCII character set, from ATARI Standard Code for Information Interchange, alternatively ATARI ASCII, is the variation on ASCII used in the Atari 8-bit family of home computers. The first of this family are the Atari 400 and 800, released in 1979, and later models were released throughout the 1980s. The last computer to use the ATASCII character set is the Atari XEGS which was released in 1987 and discontinued in 1992. The Atari ST family of computers use the different Atari ST character set.

The entire visible ATASCII character set, both normal and inverse glyphs, upscaled to 2x to better show details

Like most other non-standard ASCIIs, ATASCII has its own special block graphics symbols (arrows, blocks, circles, line segments, playing card suits, etc.) corresponding to the control character locations of the standard ASCII table (characters 0–31), and a few other character locations.

Control characters

The main difference between standard ASCII and ATASCII is the use of control characters. In standard ASCII, a character in the range 0 to 31 is construed as a command, which might move the cursor, clear the screen, end a line, and so on. Some of these were designed for use on printers and teletypes rather than on screen (to advance the paper, overtype, and so on). In ATASCII most of the ASCII control character values produce a graphics glyph instead. ATASCII uses character values different from ASCII for cursor control.

ATASCII has a character set of only 128 characters. If the high-order bit is set on a character (i.e., if the byte value of the character is between 128 and 255) the character is generally rendered in the reverse video (also called "inverse video") of its counterpart between 0 and 127, using a bitwise negation of the character's glyph. This is done by the ANTIC chip. The two exceptions to this rule are that an "escape" character (ATASCII and ASCII 27) with its high order bit set becomes an "EOL" or "End Of Line" character (ATASCII 155; ASCII 13), and a "clear screen" character (ATASCII 125) with its high order bit set becomes a "bell" or "buzzer" character (ATASCII 253; ASCII 7).

The ATASCII control characters used by the screen editor for cursor control (arrow keys) and text editing (tab, insert, delete, backspace, etc.) have associated graphic symbols that can be displayed by preceding them by the "escape" character (ATASCII 27). For example, a right arrow can be displayed on a screen or printer by preceding it with the escape character followed by the "cursor right" character itself (ATASCII 31).

The Atari screen editor implements the text cursor by simply inverting the character at the cursor position (by XOR with $80). It does not flash.

Interoperation

The differences between character representation can cause problems during modem communication between Ataris and other computers. Cursor movement commands (and even carriage returns and line feeds) from computers not using ATASCII will be nonsense on an Atari, and vice versa. Terminal programs need to translate between ATASCII and standard ASCII.

Some Atari-based BBSs exploited this difference by asking the client to hit the "Return" key. If it got 13 (ASCII CR), then standard ASCII would be used. If it got 155 (ATASCII CR) it would switch to ATASCII, allowing full use of the ATASCII graphic set. Some Atari BBSs would also block features (or even block access completely) for non-Atari users.[1]

ATASCII animations

The control codes in ATASCII are transmissible to other computers such as BBS's, and crude animations are possible. These animations, also known as "break movies", often take the form of short cartoons, and were a popular feature of Atari BBSs in its heyday.[2]

Because cursor control operations are represented with a single character (as opposed to multi-byte 'escape' sequences that were common in other schemes, like ANSI or VT100), it is quite easy to make these animations. They can be created by a short BASIC program that captures keyboard commands, echoes them to the screen and saves them to a file.[3] The Atari also allowed commands to be typed and captured as part of its operating system. Of course this required care to get it right, but after a few attempts it normally became quite easy. The simple capture programs didn't have editing features, so ATASCII movies frequently had errors that were corrected by repositioning the cursor and printing over the mistake.

Character set

Graphic characters

The following table shows the ATASCII character set. Each character is shown with a potential Unicode equivalent if available. Space and control characters are represented by the abbreviations for their names.

ATASCII[4]
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F
0_ Template:Chset-color-graph|
2665
Template:Chset-color-graph|
251C
Template:Chset-color-graph|🮇
1FB87
Template:Chset-color-graph|
2518
Template:Chset-color-graph|
2524
Template:Chset-color-graph|
2510
Template:Chset-color-graph|
2571
Template:Chset-color-graph|
2572
Template:Chset-color-graph|
25E2
Template:Chset-color-graph|
2597
Template:Chset-color-graph|
25E3
Template:Chset-color-graph|
259D
Template:Chset-color-graph|
2598
Template:Chset-color-graph|🮂
1FB82
Template:Chset-color-graph|
2582
Template:Chset-color-graph|
2596
1_ Template:Chset-color-graph|
2663
Template:Chset-color-graph|
250C
Template:Chset-color-graph|
2500
Template:Chset-color-graph|
253C
Template:Chset-color-punct|
2022
Template:Chset-color-graph|
2584
Template:Chset-color-graph|
258E
Template:Chset-color-graph|
252C
Template:Chset-color-graph|
2534
Template:Chset-color-graph|
258C
Template:Chset-color-graph|
2514
Template:Chset-color-ctrl|/ESC[a]
241B/001B
Template:Chset-color-ctrl|[a]
2191
Template:Chset-color-ctrl|[a]
2193
Template:Chset-color-ctrl|[a]
2190
Template:Chset-color-ctrl|[a]
2192
2_ Template:Chset-color-misc|SP
0020
Template:Chset-color-punct|!
0021
Template:Chset-color-punct|"
0022
Template:Chset-color-punct|#
0023
Template:Chset-color-graph|$
0024
Template:Chset-color-punct|%
0025
Template:Chset-color-punct|&
0026
Template:Chset-color-punct|'
0027
Template:Chset-color-punct|(
0028
Template:Chset-color-punct|)
0029
Template:Chset-color-punct|*
002A
Template:Chset-color-graph|+
002B
Template:Chset-color-punct|,
002C
Template:Chset-color-punct|-
002D
Template:Chset-color-punct|.
002E
Template:Chset-color-punct|/
002F
3_ Template:Chset-color-digit|0
0030
Template:Chset-color-digit|1
0031
Template:Chset-color-digit|2
0032
Template:Chset-color-digit|3
0033
Template:Chset-color-digit|4
0034
Template:Chset-color-digit|5
0035
Template:Chset-color-digit|6
0036
Template:Chset-color-digit|7
0037
Template:Chset-color-digit|8
0038
Template:Chset-color-digit|9
0039
Template:Chset-color-punct|:
003A
Template:Chset-color-punct|;
003B
Template:Chset-color-graph|<
003C
Template:Chset-color-graph|=
003D
Template:Chset-color-graph|>
003E
Template:Chset-color-punct|?
003F
4_ Template:Chset-color-punct|@
0040
Template:Chset-color-letter|A
0041
Template:Chset-color-letter|B
0042
Template:Chset-color-letter|C
0043
Template:Chset-color-letter|D
0044
Template:Chset-color-letter|E
0045
Template:Chset-color-letter|F
0046
Template:Chset-color-letter|G
0047
Template:Chset-color-letter|H
0048
Template:Chset-color-letter|I
0049
Template:Chset-color-letter|J
004A
Template:Chset-color-letter|K
004B
Template:Chset-color-letter|L
004C
Template:Chset-color-letter|M
004D
Template:Chset-color-letter|N
004E
Template:Chset-color-letter|O
004F
5_ Template:Chset-color-letter|P
0050
Template:Chset-color-letter|Q
0051
Template:Chset-color-letter|R
0052
Template:Chset-color-letter|S
0053
Template:Chset-color-letter|T
0054
Template:Chset-color-letter|U
0055
Template:Chset-color-letter|V
0056
Template:Chset-color-letter|W
0057
Template:Chset-color-letter|X
0058
Template:Chset-color-letter|Y
0059
Template:Chset-color-letter|Z
005A
Template:Chset-color-punct|[
005B
Template:Chset-color-punct|\
005C
Template:Chset-color-punct|]
005D
Template:Chset-color-graph|^
005E
Template:Chset-color-punct|_
005F
6_ Template:Chset-color-graph|
2666
Template:Chset-color-letter|a
0061
Template:Chset-color-letter|b
0062
Template:Chset-color-letter|c
0063
Template:Chset-color-letter|d
0064
Template:Chset-color-letter|e
0065
Template:Chset-color-letter|f
0066
Template:Chset-color-letter|g
0067
Template:Chset-color-letter|h
0068
Template:Chset-color-letter|i
0069
Template:Chset-color-letter|j
006A
Template:Chset-color-letter|k
006B
Template:Chset-color-letter|l
006C
Template:Chset-color-letter|m
006D
Template:Chset-color-letter|n
006E
Template:Chset-color-letter|o
006F
7_ Template:Chset-color-letter|p
0070
Template:Chset-color-letter|q
0071
Template:Chset-color-letter|r
0072
Template:Chset-color-letter|s
0073
Template:Chset-color-letter|t
0074
Template:Chset-color-letter|u
0075
Template:Chset-color-letter|v
0076
Template:Chset-color-letter|w
0077
Template:Chset-color-letter|x
0078
Template:Chset-color-letter|y
0079
Template:Chset-color-letter|z
007A
Template:Chset-color-graph|
2660
Template:Chset-color-graph||
007C
Template:Chset-color-ctrl|🢰[a]
1F8B0
Template:Chset-color-ctrl|/BS[a]
25C0/0008
Template:Chset-color-ctrl|/HT[a]
25B6/0009
8_ Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
258A
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
25E4
Template:Chset-color-graph|
259B
Template:Chset-color-graph|
25E5
Template:Chset-color-graph|
2599
Template:Chset-color-graph|
259F
Template:Chset-color-graph|
2586
Template:Chset-color-graph|
 
Template:Chset-color-graph|
259C
9_ Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
25D8
Template:Chset-color-graph|
2580
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|
2590
Template:Chset-color-graph|
 
Template:Chset-color-ctrl|NBSP/LF
00A0/000D
Template:Chset-color-ctrl|
 
Template:Chset-color-ctrl|
 
Template:Chset-color-ctrl|
 
Template:Chset-color-ctrl|
 
A_ Template:Chset-color-graph|
2588
Template:Chset-color-punct|!
 
Template:Chset-color-punct|"
 
Template:Chset-color-punct|#
 
Template:Chset-color-graph|$
 
Template:Chset-color-punct|%
 
Template:Chset-color-punct|&
 
Template:Chset-color-punct|'
 
Template:Chset-color-punct|(
 
Template:Chset-color-punct|)
 
Template:Chset-color-punct|*
 
Template:Chset-color-graph|+
 
Template:Chset-color-punct|,
 
Template:Chset-color-punct|-
 
Template:Chset-color-punct|.
 
Template:Chset-color-punct|/
 
B_ Template:Chset-color-digit|0
 
Template:Chset-color-digit|1
 
Template:Chset-color-digit|2
 
Template:Chset-color-digit|3
 
Template:Chset-color-digit|4
 
Template:Chset-color-digit|5
 
Template:Chset-color-digit|6
 
Template:Chset-color-digit|7
 
Template:Chset-color-digit|8
 
Template:Chset-color-digit|9
 
Template:Chset-color-punct|:
 
Template:Chset-color-punct|;
 
Template:Chset-color-graph|<
 
Template:Chset-color-graph|=
 
Template:Chset-color-graph|>
 
Template:Chset-color-punct|?
 
C_ Template:Chset-color-punct|@
 
Template:Chset-color-letter|A
 
Template:Chset-color-letter|B
 
Template:Chset-color-letter|C
 
Template:Chset-color-letter|D
 
Template:Chset-color-letter|E
 
Template:Chset-color-letter|F
 
Template:Chset-color-letter|G
 
Template:Chset-color-letter|H
 
Template:Chset-color-letter|I
 
Template:Chset-color-letter|J
 
Template:Chset-color-letter|K
 
Template:Chset-color-letter|L
 
Template:Chset-color-letter|M
 
Template:Chset-color-letter|N
 
Template:Chset-color-letter|O
 
D_ Template:Chset-color-letter|P
 
Template:Chset-color-letter|Q
 
Template:Chset-color-letter|R
 
Template:Chset-color-letter|S
 
Template:Chset-color-letter|T
 
Template:Chset-color-letter|U
 
Template:Chset-color-letter|V
 
Template:Chset-color-letter|W
 
Template:Chset-color-letter|X
 
Template:Chset-color-letter|Y
 
Template:Chset-color-letter|Z
 
Template:Chset-color-punct|[
 
Template:Chset-color-punct|\
 
Template:Chset-color-punct|]
 
Template:Chset-color-graph|^
 
Template:Chset-color-punct|_
 
E_ Template:Chset-color-graph|
 
Template:Chset-color-letter|a
 
Template:Chset-color-letter|b
 
Template:Chset-color-letter|c
 
Template:Chset-color-letter|d
 
Template:Chset-color-letter|e
 
Template:Chset-color-letter|f
 
Template:Chset-color-letter|g
 
Template:Chset-color-letter|h
 
Template:Chset-color-letter|i
 
Template:Chset-color-letter|j
 
Template:Chset-color-letter|k
 
Template:Chset-color-letter|l
 
Template:Chset-color-letter|m
 
Template:Chset-color-letter|n
 
Template:Chset-color-letter|o
 
F_ Template:Chset-color-letter|p
 
Template:Chset-color-letter|q
 
Template:Chset-color-letter|r
 
Template:Chset-color-letter|s
 
Template:Chset-color-letter|t
 
Template:Chset-color-letter|u
 
Template:Chset-color-letter|v
 
Template:Chset-color-letter|w
 
Template:Chset-color-letter|x
 
Template:Chset-color-letter|y
 
Template:Chset-color-letter|z
 
Template:Chset-color-graph|
 
Template:Chset-color-graph|-
 
Template:Chset-color-ctrl|🢰/BEL
    /0007
Template:Chset-color-ctrl|/DEL
    /007F
Template:Chset-color-ctrl|
 

  Letter  Number  Punctuation  Symbol  Other  Undefined

  1. ^ a b c d e f g h Characters 1B-1F and 7D-7F had a dual use as graphics characters and control characters.

Note the asymmetry in the selection of graphics characters: There are lower triangles but no upper triangles, a left half block but no right half block, and a lower half block but no upper half block. These missing characters could be displayed by using inverse video.

The glyph representation in ROM used by ANTIC for display are assigned in different order from ASCII/ATASCII. For example, to display the characters "@ABC" on screen by writing directly to the screen memory, one would write the decimal values 32, 33, 34, and 35 rather than the ASCII/ATASCII values 64, 65, 66, and 67.

The arrangement of glyphs seems to make little sense in ATASCII order, however the arrangement of many make sense when the QWERTY keyboard layout is taken into consideration -- for example, ┌, ┬, and ┐ are the control graphics characters found on the top left Q, W, and E keys.

Control characters

ATASCII control characters [5]
Hex Decimal Function Keystroke
1B 27  Escape key ESC
1C 28  Cursor Up CTRL+-
1D 29  Cursor Down CTRL+=
1E 30  Cursor Left CTRL++
1F 31  Cursor Right CTRL+*
7D 125  Clear Screen CTRL+< or ⇧ Shift+<
7E 126  Delete ← Backspace
7F 127  Tab Tab ↹
9B 155  End of line RETURN
9C 156  Delete Line ⇧ Shift+← Backspace
9D 157  Insert Line ⇧ Shift+>
9E 158  Clear Tab stop CTRL+Tab ↹
9F 159  Set Tab stop ⇧ Shift+Tab ↹
FD 253  Buzzer CTRL+2
FE 254  Delete Character CTRL+← Backspace
FF 255  Insert Character CTRL+>

International Character Set

Atari 8-bits, via the ANTIC coprocessor, supported indirection of the character set graphics, allowing a program to redefine the graphical glyphs that appear for each ATASCII character. This can be used as a new font for text, and/or tile graphics in a video game or other application. Cycling between multiple redefined character sets can provide simple animation at very little CPU cost (in exchange for memory used to store the character set data). Altering a character set in RAM can also be used for animation.

Starting with the Atari 1200XL, the first in the XL line of computers that followed the original 400 and 800 models, the Atari OS ROM included a so-called "international" character set, that replaced 29 of the graphical glyphs with Latin alphabetical characters containing diacrtics, such as e-acute (é). The OS built into 1200XL, the one and only Atari 8-bit model with function keys, allowed users to switch between the standard and alternate character sets by pressing CTRL+F4. Later XL and XE models required the user to update a register in RAM (e.g., via a POKE command in BASIC).

ATASCII international characters
Hex Decimal Symbol Keystroke
00 á CTRL+,
01 ù CTRL+A
02 Ñ CTRL+B
03 É CTRL+C
04 ç CTRL+D
05 ô CTRL+E
06 ò CTRL+F
07 ì CTRL+G
08 £ CTRL+H
09 ï CTRL+I
0A 10  ü CTRL+J
0B 11  ä CTRL+K
0C 12  Ö CTRL+L
0D 13  ú CTRL+M
0E 14  ó CTRL+N
0F 15  ö CTRL+O
10 16  Ü CTRL+P
11 17  â CTRL+Q
12 18  û CTRL+R
13 19  î CTRL+S
14 20  é CTRL+T
15 21  è CTRL+U
16 22  ñ CTRL+V
17 23  ê CTRL+W
18 24  å CTRL+X
19 25  à CTRL+Y
20 26  Å CTRL+Z
60 96  ¡ CTRL+.
7B 123  Ä CTRL+:

See also

References

  1. ^ Lewis, Arthur (2014). ASCII 87 Success Secrets - 87 Most Asked Questions On ASCII - What You Need To Know. Emereo Publishing. ISBN 1488597693, 9781488597695.
  2. ^ https://breakintochat.com/collections/atascii/
  3. ^ https://www.atarimagazines.com/v4n4/toons.html
  4. ^ "ATARI8IG.TXT" (PDF), L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS, 2019-01-04
  5. ^ atariarchives.org - Mapping The Atari Appendix 10 - ATASCII And Internal Character Code Values