CDC display code explained
Display code is the six-bit character code used by many computer systems manufactured by Control Data Corporation, notably the CDC 6000 series in 1964, the 7600 in 1967 and the following Cyber series in 1971. The CDC 6000 series and their successors had 60 bit words. As such, typical usage packed 10 characters per word. It is a six-bit extension of the four-bit BCD encoding, and was referred to as BCDIC (BCD interchange code.)
Overview
There were several variations of display code, notably the 63-character character set, and the 64-character character set. There were also 'CDC graphic' and 'ASCII graphic' variants of both the 63- and 64-character sets. The choice between 63- or 64-character character set, and between CDC or ASCII graphic was site-selectable. Generally, early CDC customers started out with the 63-character character set, and CDC graphic print trains on their line printers. As time-sharing became prevalent, almost all sites used the ASCII variant - so that line printer output would match interactive usage. Later CDC customers were also more likely to use the 64-character character set.
A later variation, called 6/12 display code, was used in the Kronos and NOS timesharing systems in order to support full ASCII capabilities. In 6/12 mode, an escape character (the circumflex, octal 76) would indicate that the following letter was lower case. Thus, upper case and other characters were 6 bits in length, and lower case characters were 12 bits in length.
The PLATO system used a further variant of 6/12 display code. Noting that lower case letters were most common in typical PLATO usage, the roles were reversed. Lower case letters were the norm, and the escape character preceded upper case letters.
The typical text file format used a zero-byte terminator to signify the end of each record. The zero-byte terminator was indicated by, at least, the final twelve bits of a 60-bit word being set to zero.[1] The terminator could actually be anywhere from 12- to 66-bits long - depending on the length of the record. This caused an ambiguity in the 64-character character set, when a colon character needed to be the final character in a record. In such cases a blank character was typically appended to the record after the trailing colon.
Display code characters
64-character character set version
| | | ASCII | CDC | |
---|
Binary | Decimal | Octal | Graphic | Graphic | Name |
---|
000 000 | 0 | 00 | | | colon[2] | 000 001 | 1 | 01 | A | A | | 000 010 | 2 | 02 | B | B | | 000 011 | 3 | 03 | C | C | | 000 100 | 4 | 04 | D | D | | 000 101 | 5 | 05 | E | E | | 000 110 | 6 | 06 | F | F | | 000 111 | 7 | 07 | G | G | | 001 000 | 8 | 10 | H | H | | 001 001 | 9 | 11 | I | I | | 001 010 | 10 | 12 | J | J | | 001 011 | 11 | 13 | K | K | | 001 100 | 12 | 14 | L | L | | 001 101 | 13 | 15 | M | M | | 001 110 | 14 | 16 | N | N | | 001 111 | 15 | 17 | O | O | | 010 000 | 16 | 20 | P | P | | 010 001 | 17 | 21 | Q | Q | | 010 010 | 18 | 22 | R | R | | 010 011 | 19 | 23 | S | S | | 010 100 | 20 | 24 | T | T | | 010 101 | 21 | 25 | U | U | | 010 110 | 22 | 26 | V | V | | 010 111 | 23 | 27 | W | W | | 011 000 | 24 | 30 | X | X | | 011 001 | 25 | 31 | Y | Y | | 011 010 | 26 | 32 | Z | Z | | 011 011 | 27 | 33 | 0 | 0 | | 011 100 | 28 | 34 | 1 | 1 | | 011 101 | 29 | 35 | 2 | 2 | | 011 110 | 30 | 36 | 3 | 3 | | 011 111 | 31 | 37 | 4 | 4 | | |
| | | | ASCII | CDC | |
---|
Binary | Decimal | Octal | Graphic | Graphic | Name |
---|
100 000 | 32 | 40 | 5 | 5 | | 100 001 | 33 | 41 | 6 | 6 | | 100 010 | 34 | 42 | 7 | 7 | | 100 011 | 35 | 43 | 8 | 8 | | 100 100 | 36 | 44 | 9 | 9 | | 100 101 | 37 | 45 | + | + | | 100 110 | 38 | 46 | - | - | | 100 111 | 39 | 47 | | | | 101 000 | 40 | 50 | / | / | | 101 001 | 41 | 51 | ( | ( | | 101 010 | 42 | 52 | ) | ) | | 101 011 | 43 | 53 | $ | $ | | 101 100 | 44 | 54 | = | = | | 101 101 | 45 | 55 | | | blank | 101 110 | 46 | 56 | , | , | | 101 111 | 47 | 57 | . | . | | 110 000 | 48 | 60 | | ≡ | equiv | 110 001 | 49 | 61 | [|| [ ||
|-
| 110 010 || 50 || 62 || ] || ] | | 110 011 | 51 | 63 | % | % | [3] | 110 100 | 52 | 64 | " | ≠ | not eq | 110 101 | 53 | 65 | _ | → | concat[4] | 111 010 | 58 | 72 | < | < | | 111 011 | 59 | 73 | > | > | | 111 100 | 60 | 74 | @ | ≤ | | 111 101 | 61 | 75 | \ | ≥ | | 111 110 | 62 | 76 | ^ | ¬ | NOT | 111 111 | 63 | 77 | | | | |
| |
- CDC often used the term byte to refer to 12-bit quantities, even though characters were only 6-bits long.
- Display code 00 has no associated graphic in the 63-character set
- Display code 63 (octal) is a : (colon) in the 63-character set
- In CDC PASCAL, this is the left brace,, character
6/12 display code
The NOS 6/12 display code is one of the character sets used on CDC Cyber NOS computers to represent all ASCII characters.
ASCII | display code |
---|
Dec | Hex | Abbr | Dec | Oct | 6/12 |
---|
0 | 00 | | 62 32 | 76 40 | ^5 | 1 | 01 | | 62 33 | 76 41 | ^6 | 2 | 02 | | 62 34 | 76 42 | ^7 | 3 | 03 | | 62 35 | 76 43 | ^8 | 4 | 04 | | 62 36 | 76 44 | ^9 | 5 | 05 | | 62 37 | 76 45 | ^+ | 6 | 06 | | 62 38 | 76 46 | ^- | 7 | 07 | | 62 39 | 76 47 | ^* | 8 | 08 | BS | 62 40 | 76 50 | ^/ | 9 | 09 | | 62 41 | 76 51 | ^( | 10 | 0A | LF | 62 42 | 76 52 | ^) | 11 | 0B | | 62 43 | 76 53 | ^$ | 12 | 0C | FF | 62 44 | 76 54 | ^= | 13 | 0D | | 62 45 | 76 55 | ^ | 14 | 0E | | 62 46 | 76 56 | ^, | 15 | 0F | | 62 47 | 76 57 | ^. | 16 | 10 | | 62 48 | 76 60 | ^# | 17 | 11 | | 62 49 | 76 61 | ^[|-
| style="background:#CFF;"| 18 ||style="background:lightblue;"| 12 || DC2 ||style="background:#CFF;"| 62 50 ||style="background:lightblue;"| 76 62 || ^] | 19 | 13 | DC3 | 62 51 | 76 63 | ^% | 20 | 14 | DC4 | 62 52 | 76 64 | ^" | 21 | 15 | | 62 53 | 76 65 | ^_ | 22 | 16 | | 62 54 | 76 66 | ^! | 23 | 17 | | 62 55 | 76 67 | ^& | 24 | 18 | | 62 56 | 76 70 | ^' | 25 | 19 | | 62 57 | 76 71 | ^? | 26 | 1A | | 62 58 | 76 72 | ^< | 27 | 1B | | 62 59 | 76 73 | ^> | 28 | 1C | | 62 60 | 76 74 | ^@ | 29 | 1D | | 62 61 | 76 75 | ^\ | 30 | 1E | | 62 62 | 76 76 | ^^ | 31 | 1F | | 62 63 | 76 77 | ^; | |
| ASCII | display code |
---|
Dec | Hex | Glyph | Dec | Oct | 6/12 |
---|
32 | 20 | | 45 | 55 | | | 33 | 21 | | 54 | 66 | ! | 34 | 22 | | 52 | 64 | " | 35 | 23 | | 48 | 60 | | 36 | 24 | | 43 | 53 | $ | 37 | 25 | | 51 | 63 | % | 38 | 26 | & | 55 | 67 | & | 39 | 27 | ' | 56 | 70 | ' | 40 | 28 | | 41 | 51 | ( | 41 | 29 | | 42 | 52 | ) | 42 | 2A | | 39 | 47 | | 43 | 2B | + | 37 | 45 | + | 44 | 2C | | 46 | 56 | , | 45 | 2D | | 38 | 46 | - | 46 | 2E | . | 47 | 57 | . | 47 | 2F | | 40 | 50 | / | 48 | 30 | 0 | 27 | 33 | 0 | 49 | 31 | 1 | 28 | 34 | 1 | 50 | 32 | 2 | 29 | 35 | 2 | 51 | 33 | 3 | 30 | 36 | 3 | 52 | 34 | 4 | 31 | 37 | 4 | 53 | 35 | 5 | 32 | 40 | 5 | 54 | 36 | 6 | 33 | 41 | 6 | 55 | 37 | 7 | 34 | 42 | 7 | 56 | 38 | 8 | 35 | 43 | 8 | 57 | 39 | 9 | 36 | 44 | 9 | 58 | 3A | | 60 4 | 74 04 | @D | 59 | 3B | | 63 | 77 | | 60 | 3C | | 58 | 72 | < | 61 | 3D | | 44 | 54 | = | 62 | 3E | | 59 | 73 | > | 63 | 3F | | 57 | 71 | ? | |
| |
ASCII | display code |
---|
Dec | Hex | Glyph | Dec | Oct | 6/12 |
---|
64 | 40 | | 60 1 | 74 01 | @A | 65 | 41 | | 1 | 01 | A | 66 | 42 | | 2 | 02 | B | 67 | 43 | | 3 | 03 | C | 68 | 44 | | 4 | 04 | D | 69 | 45 | | 5 | 05 | E | 70 | 46 | | 6 | 06 | F | 71 | 47 | | 7 | 07 | G | 72 | 48 | | 8 | 10 | H | 73 | 49 | | 9 | 11 | I | 74 | 4A | | 10 | 12 | J | 75 | 4B | | 11 | 13 | K | 76 | 4C | | 12 | 14 | L | 77 | 4D | | 13 | 15 | M | 78 | 4E | | 14 | 16 | N | 79 | 4F | | 15 | 17 | O | 80 | 50 | | 16 | 20 | P | 81 | 51 | | 17 | 21 | Q | 82 | 52 | | 18 | 22 | R | 83 | 53 | | 19 | 23 | S | 84 | 54 | | 20 | 24 | T | 85 | 55 | | 21 | 25 | U | 86 | 56 | | 22 | 26 | V | 87 | 57 | | 23 | 27 | W | 88 | 58 | | 24 | 30 | X | 89 | 59 | | 25 | 31 | Y | 90 | 5A | | 26 | 32 | Z | 91 | 5B | []] ||style="background:#CFF;"| 49 ||style="background:lightblue;"| 61 || [|-
| style="background:#cff;"| 92 ||style="background:lightblue;"| 5C || [[Backslash|\]] ||style="background:#CFF;"| 61 ||style="background:lightblue;"| 75 || \|-| style="background:#cff;"| 93 ||style="background:lightblue;"| 5D || ]]] ||style="background:#CFF;"| 50 ||style="background:lightblue;"| 62 || ]|-| style="background:#cff;"| 94 ||style="background:lightblue;"| 5E || ^ ||style="background:#CFF;"| 60 2 ||style="background:lightblue;"| 74 02 || @B|-| style="background:#cff;"| 95 ||style="background:lightblue;"| 5F || _ ||style="background:#CFF;"| 53 ||style="background:lightblue;"| 65 || _|}|ASCII | display code |
---|
Dec | Hex | Glyph | Dec | Oct | 6/12 |
---|
96 | 60 | | 60 7 | 74 07 | @G | 97 | 61 | | 62 1 | 76 01 | ^A | 98 | 62 | | 62 2 | 76 02 | ^B | 99 | 63 | | 62 3 | 76 03 | ^C | 100 | 64 | | 62 4 | 76 04 | ^D | 101 | 65 | | 62 5 | 76 05 | ^E | 102 | 66 | | 62 6 | 76 06 | ^F | 103 | 67 | | 62 7 | 76 07 | ^G | 104 | 68 | | 62 8 | 76 10 | ^H | 105 | 69 | | 62 9 | 76 11 | ^I | 106 | 6A | | 62 10 | 76 12 | ^J | 107 | 6B | | 62 11 | 76 13 | ^K | 108 | 6C | | 62 12 | 76 14 | ^L | 109 | 6D | | 62 13 | 76 15 | ^M | 110 | 6E | | 62 14 | 76 16 | ^N | 111 | 6F | | 62 15 | 76 17 | ^O | 112 | 70 | | 62 16 | 76 20 | ^P | 113 | 71 | | 62 17 | 76 21 | ^Q | 114 | 72 | | 62 18 | 76 22 | ^R | 115 | 73 | | 62 19 | 76 23 | ^S | 116 | 74 | | 62 20 | 76 24 | ^T | 117 | 75 | | 62 21 | 76 25 | ^U | 118 | 76 | | 62 22 | 76 26 | ^V | 119 | 77 | | 62 23 | 76 27 | ^W | 120 | 78 | | 62 24 | 76 30 | ^X | 121 | 79 | | 62 25 | 76 31 | ^Y | 122 | 7A | | 62 26 | 76 32 | ^Z | 123 | 7B | | 62 27 | 76 33 | ^0 | 124 | 7C | | 62 28 | 76 34 | ^1 | 125 | 7D | | 62 29 | 76 35 | ^2 | 126 | 7E | ~ | 62 30 | 76 36 | ^3 | 127 | 7F | | 62 31 | 76 37 | ^4 | | |}External links
- Web site: Computer Arithmetic . The Early Days of Hexadecimal . John J. G. . Savard . 2018 . 2005 . quadibloc . 2018-07-16 . live . https://web.archive.org/web/20180716102439/http://www.quadibloc.com/comp/cp02.htm . 2018-07-16.
- Web site: Charsets for CDC machines . Francois Pinard . 1999-04-27 . dead . https://web.archive.org/web/20110623004850/http://www.informatik.uni-hamburg.de/RZ/software/gnu/utilities/recode_9.html . 2011-06-23.
]
|
|