Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

PETSCII

From Wikipedia, the free encyclopedia
Character encoding on Commodore computers
icon
This article'slead sectionmay be too short to adequatelysummarize the key points. Please consider expanding the lead toprovide an accessible overview of all important aspects of the article.(April 2025)

PETSCII
PETSCII (shifted and unshifted)
LanguageEnglish withpseudographics
Classification8-bit extended early ASCII
Based onUS-ASCII (1963 version)

PETSCII (PET Standard Code of Information Interchange), also known asCBM ASCII, is thecharacter set used inCommodore Business Machines' 8-bithome computers.

This character set was first used by thePET from 1977, and was subsequently used by theCBM-II,VIC-20,Commodore 64,Commodore 16,Commodore 116,Plus/4, andCommodore 128. However, theAmiga personal computer family instead uses standardISO/IEC 8859-1.

History

[edit]

The character set was largely designed byLeonard Tramiel (the son of Commodore CEOJack Tramiel) and PET designerChuck Peddle.[1][2][3] The graphic characters of PETSCII were one of the extensions Commodore specified forCommodore BASIC when laying out desired changes to Microsoft's existing6502BASIC to Microsoft'sRic Weiland in 1977.[4] The VIC-20 used the same pixel-for-pixelfont as the PET, although the characters appeared wider due to the VIC's 22-column screen. The Commodore 64, however, used a slightly re-designed, heavy upper-case font, essentially a thicker version of the PET's, in order to avoidcolor artifacts created by the machine's higher resolution screen. The C64'slowercase characters are identical to the lowercase characters in theAtari 8-bit computers font (released 2.75 years earlier).

Peddle claims the inclusion ofcard suit symbols was spurred by the demand that it should be easy to write card games on the PET (as part of the specification list he received).[2]

Specifications

[edit]
PETSCII Chart as displayed on the Commodore 64 in shifted and unshifted modes. (Not shown are control codes, as well as characters in the 0xC0–0xFF range, which are the standard uppercase keycodes returned from the keyboard, and which are duplicated to the range 0x60–0x7F.)

"Unshifted" PETSCII is based on the 1963 version ofASCII (rather than the 1967 version, which most if not all other computer character sets based on ASCII use). It has onlyuppercase letters, an up-arrow⟨↑⟩ instead ofcaret⟨^⟩ at0x5E and a left-arrow⟨←⟩ instead of anunderscore⟨_⟩ at 0x5F. In all versions except the original Commodore PET, it also has aBritish pound sign⟨£⟩ instead of the backslash⟨\⟩ at 0x5C. Other characters added in ASCII-1967 (lowercase letters, thegrave accent,curly braces, vertical bar, and tilde) do not exist in PETSCII. Codes 0xA0–0xDF are allotted to CBM-specificblock graphics characters—horizontal and vertical lines, hatches, shades, triangles, circles andcard suits.

PETSCII also has a "shifted" mode (also called "business mode"), which changes the uppercase letters at 0x41–0x5A to lowercase, and changes the graphics at 0xC1–0xDA to uppercase letters. Upper- and lower-case are swapped from where ASCII has them. The mode is toggled by holding one of the SHIFT keys and then pressing and releasing theCommodore key. The shift can be done byPOKEing location 59468 with the value 14 to select the alternative set or 12 to revert to standard. On the Commodore 64, the sets are alternated by flipping bit 2 of the byte 53272. On some models of PET, this can also be achieved via special control codePRINT CHR$(14) which adjust the line spacing as well as changing the character set; the POKE method is still available and does not alter the line spacing.[5]

Included in PETSCII arecursor and screen control codes, such as{HOME},{CLR},{RVS ON}, and{RVS OFF} (the latter two activating/deactivating reverse-video character display). The control codes appeared in program listings as reverse-video graphic characters, although some computer magazines, in their efforts to provide more clearly readable listings,pretty-printed the codes using their actual names in curly braces, like the above examples. This is unambiguous as PETSCII has no curly brace characters.

Different mappings are used for storing characters (the "interchange" mapping, as used byCHR$()) and displaying characters (the "video" mapping). For example, to display the characters "@ABC" on screen by directly writing into thescreen memory, one would POKE the decimal values 0, 1, 2, and 3 rather than 64, 65, 66, and 67.[6][7]

The keyboard by default provides access to the lower half of the code page. Pressing Shift and a key gives the corresponding upper half code point. Some PETSCII code points cannot be printed and are only used for keyboard input (e.g. F1, RUN/STOP).

PET 2001 keyboard layout, illustrating PETSCII graphics characters

Character set

[edit]
<?>
This article contains uncommonUnicode characters. Without properrendering support, you may seequestion marks, boxes, or other symbols instead of the intended characters.

The tables below represent the "interchange" PETSCII encoding, as used byCHR$().

Control characters are defined in the ranges 0x00–0x1F and 0x80–0x9F, although which control characters are defined and what they are defined as varies between systems. The tables below exclude control characters—the encoding of control characters in discussed in§ Control characters.

The ranges 0x60–0x7F and 0xE0–0xFF are duplicate ranges, although what they duplicate varies between systems. On the Commodore PET, they duplicate 0x20–0x3F and 0xA0–0xBF, respectively; on the Commodore VIC-20, 64, 16, and 128 they duplicate 0xC0–0xDF and 0xA0–0xBF, respectively.[6] While these characters are visually duplicates, they are semantically different; for example, on the Commodore PET, code points 0x2C and 0x6C both produce a comma character, but only 0x2C functions as a delimiter between input fields.[8]

Graphic characters are mostly identical across systems, with the exceptions of 0x5C (which is\ on the Commodore PET, and£ on other systems), 0xDE (which is U+1FB95 CHECKER BOARD FILL on the Commodore PET and VIC-20, and U+1FB96 INVERSE CHECKER BOARD FILL on other systems), and the range 0x60–0x7F (which duplicates a different range on Commodore PET). Additionally, inCommodore PET 2001's shifted character set, uppercase and lowercase letters are swapped relative to other systems'.

Unicode equivalents

[edit]

PETSCII characters are represented in theUnicode standard in various blocks:

Standard

[edit]

The following tables represent the PETSCII encoding used on the Commodore VIC-20, 64, 16, and 128.

Unshifted

[edit]
Unshifted PETSCII[6][10][7][11][12]
0123456789ABCDEF
0x
1x
2x SP !"#$%&'()*+,-./
3x0123456789:;<=>?
4x@ABCDEFGHIJKLMNO
5xPQRSTUVWXYZ[£]
6x🭲🭸🭷🭶🭺🭱🭴🭼🭽
7x🭾🭻🭰🭵🮌π
8x
9x
AxNBSP🮏🮇
Bx🮈🮂🮃🭿
Cx🭲🭸🭷🭶🭺🭱🭴🭼🭽
Dx🭾🭻🭰🭵🮌π
ExNBSP🮏🮇
Fx🮈🮂🮃🭿π
  Differs between PETSCII variants.

Shifted

[edit]
Shifted PETSCII[6][10][7][13][14]
0123456789ABCDEF
0x
1x
2x SP !"#$%&'()*+,-./
3x0123456789:;<=>?
4x@abcdefghijklmno
5xpqrstuvwxyz[£]
6xABCDEFGHIJKLMNO
7xPQRSTUVWXYZ🮌🮕/🮖[a]🮘
8x
9x
AxNBSP🮏🮙🮇
Bx🮈🮂🮃
CxABCDEFGHIJKLMNO
DxPQRSTUVWXYZ🮌🮕/🮖[a]🮘
ExNBSP🮏🮙🮇
Fx🮈🮂🮃🮕/🮖[a]
  Differs between PETSCII variants.
  1. ^abcThis is U+1FB95 CHECKER BOARD FILL on the VIC-20; and U+1FB96 INVERSE CHECKER BOARD FILL on the Commodore 64 and Commodore 128.

Commodore PET

[edit]

Unshifted

[edit]
Unshifted PETSCII (PET)[6][15]
0123456789ABCDEF
0x
1x
2x SP !"#$%&'()*+,-./
3x0123456789:;<=>?
4x@ABCDEFGHIJKLMNO
5xPQRSTUVWXYZ[\]
6x SP !"#$%&'()*+,-./
7x0123456789:;<=>?
8x
9x
AxNBSP🮏🮇
Bx🮈🮂🮃🭿
Cx🭲🭸🭷🭶🭺🭱🭴🭼🭽
Dx🭾🭻🭰🭵🮌π
ExNBSP🮏🮇
Fx🮈🮂🮃🭿π
  Differs from standard PETSCII.

Shifted

[edit]
Shifted PETSCII (PET)[6][16]
0123456789ABCDEF
0x
1x
2x SP !"#$%&'()*+,-./
3x0123456789:;<=>?
4x@abcdefghijklmno
5xpqrstuvwxyz[\]
6x SP !"#$%&'()*+,-./
7x0123456789:;<=>?
8x
9x
AxNBSP🮏🮙🮇
Bx🮈🮂🮃
CxABCDEFGHIJKLMNO
DxPQRSTUVWXYZ🮌🮕🮘
ExNBSP🮏🮙🮇
Fx🮈🮂🮃🮕
  Displayed case matches the Commodore PET 8032. The opposite case is used on the Commodore PET 2001.
  Differs from standard PETSCII.

Control characters

[edit]

While the graphic characters were mostly shared between Commodore systems, the control characters frequently varied. The follow table describes what the control characters represent on theCommodore PET 2001,Commodore PET 8032,VIC-20,Commodore 64,Commodore 16,Commodore 128 (40 and 80 column modes).

PETSCII control characters[6][17]
HexDecimalPET 2001PET 8032VIC-20C64C16C128 (40 col)C128 (80 col)
000
011
022UNDERLINE ON
033STOP
044
055WHITE
066
077BELLBELL
088LOCK CASE
099TABUNLOCK CASETAB
0A10LINE FEED
0B11UNLOCK CASE
0C12LOCK CASE
0D13RETURN
0E14LOWER CASE
0F15SET WINDOW TOPFLASH ON
1016
1117CURSOR DOWN
1218REVERSE ON
1319HOME
1420DEL
1521KILL LINE
1622ERASE TO RIGHT
1723
1824TAB SET/CLEAR
1925SCROLL UP
1A26
1B27ESCESC
1C28RED
1D29CURSOR RIGHT
1E30GREEN
1F31BLUE
80128
81129ORANGEDARK PURPLE
82130FLASH ONUNDERLINE OFF
83131RUN
84132FLASH OFF
85133F1
86134F3
87135DOUBLEBELLF5
88136F7
89137TAB SET/CLEARF2
8A138F4
8B139F6
8C140F8HELPF8
8D141SHIFT +RETURN
8E142UPPER CASE
8F143SET WINDOW ENDFLASH OFF
90144BLACK
91145CURSOR UP
92146REVERSE OFF
93147CLEAR
94148INST
95149INSERT LINE ABOVEBROWNDARK YELLOW
96150ERASE TO LEFTPINKYELLOW-GREENPINK
97151DARK GRAYPINKDARK GRAYDARK CYAN
98152MEDIUM GRAYBLUE-GREENMEDIUM GRAY
99153SCROLL DOWNLIGHT GREENLIGHT BLUELIGHT GREEN
9A154LIGHT BLUEDARK BLUELIGHT BLUE
9B155LIGHT GRAYLIGHT GREENLIGHT GRAY
9C156PURPLE
9D157CURSOR LEFT
9E158YELLOW
9F159CYAN

The colors of the VIC-20 and C64/128 are listed in theVIC-II article.

Base 128

[edit]
icon
This sectiondoes notcite anysources. Please helpimprove this section byadding citations to reliable sources. Unsourced material may be challenged andremoved.
Find sources: "PETSCII" – news ·newspapers ·books ·scholar ·JSTOR
(March 2024) (Learn how and when to remove this message)

Out of PETSCII's first 192 codes, there are 128 graphic characters: 32–127 and 160–192. This permits "base128"-style encodings in DATA statements, or perhaps between PETSCII-speaking machines. This can also include control characters, which are visible when quoted, although which control characters are defined varies between systems.

The primary application for a "Base 128" encoding is in DATA statements in Commodore BASIC. Binary data can be stored with relatively low overhead, allowing one character of data to encode seven bits of data. On a standard 80-character line, typically four characters are used for the line number, and two characters for the abbreviated DATA statement (dA). Since the comma and colon are significant to BASIC, a quote character is also needed, leaving 73 characters for data. At seven bits per character, one DATA line could store 511 bits of binary data, for 79% efficiency. If three-digit line numbers are used, efficiency increases to 80%. If two-digit line numbers are used, efficiency is 82%.

Line NumbersData chars per LineBits per LineEfficiencyMax. LinesMax. Total Data Bytes
1-9[a]765320.831259598
10-99755250.820312905,906
100-999745180.80937590058,275
1000-9999735110.79843759,000574,875
10000-65535[b]725040.787555,536[b]3.5 MB (approx.)
  1. ^Assume line 0 is a GOTO.
  2. ^abMaximum line number is probably off-by-one.

For storing binary data in Commodore BASIC, it appears that two- or three-digit line numbers are typically the best choice.

Base 164

[edit]

164 PETSCII characters are representable in quoted strings; theoretically, then, Base 164 is possible. This adds in the color values, the function keys, and cursor controls.

See also

[edit]

References

[edit]
  1. ^Reunanen, Markku; Heikkinen, Tero; Carlsson, Anders (22 November 2018)."PETSCII – A Character Set and a Creative Platform"(PDF).Replay. The Polish Journal of Game Studies.5 (1):27–47.doi:10.18778/2391-8551.05.02.
  2. ^abBagnall, Brian (2007).On the Edge: The Spectacular Rise and Fall of Commodore. Winnipeg: Variant Press. pp. 43,54–55.ISBN 978-0-9738649-0-8.
  3. ^Tramiel, Leonard (27 December 2021)."Creating PETSCII".Vintage Computer Stories. Blogspot.
  4. ^"A Conversation with Chuck Peddle, Bil Herd, Jeri Ellsworth - part 3 - BIOS - blip.tv".blip.tv. 5 September 2010 [2009]. 6:30. Archived fromthe original on 9 January 2011. (mirror)
  5. ^Andersson, Larry (25 November 2000)."THE COMMODORE PET COMPUTER FREQUENTLY ASKED QUESTIONS FILE".Zimmers.net. 1.7.
  6. ^abcdefgOy, Aivosto (2014),"Commodore PETSCII character sets"(PDF),Aivosto
  7. ^abcEwell, Doug; Bettencourt, Rebecca; Bánffy, Ricardo; Everson, Michael; Marín Silva, Eduardo; Mårtenson, Elias; Shoulson, Mark; Steele, Shawn; Turner, Rebecca (4 January 2019),"ReadMe.txt",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF), The Unicode Consortium
  8. ^Brain, Jim (16 March 1996)."Commodore Trivia Edition #26 Answers for February 1996".Commodore Trivia (Mailing list). Brain Innovations, Inc. – via Zimmers.net.Q $195) On CBM machines prior to the VIC-20, what chr$ code outputs the same character as chr$(44), the comma.
    A $195) 108.
    Q $196) Is the character described in $195 of any use?
    A $196) To put commas in strings read via INPUT. Remember, INPUT treats a comma (chr$(44)) as a delimiter between input fields, but chr$(108) does not produce the same effect, so you could replace 44 with 108 in data written to disk, and read it in with INPUT.
  9. ^Ewell, Doug; Bettencourt, Rebecca; Bánffy, Ricardo; Everson, Michael; Marín Silva, Eduardo; Mårtenson, Elias; Shoulson, Mark; Steele, Shawn; Turner, Rebecca (4 January 2019),L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF), The Unicode Consortium
  10. ^abBettencourt, Rebecca G."PETSCII to Unicode Mapping".KreativeKorp.
  11. ^Bettencourt, Rebecca (20 April 2018),"CVICIPRI.TXT",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF)
  12. ^Bettencourt, Rebecca (20 April 2018),"C64IPRI.TXT",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF)
  13. ^Bettencourt, Rebecca (11 October 2018),"CVICIALT.TXT",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF)
  14. ^Bettencourt, Rebecca (11 October 2018),"C64IALT.TXT",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF)
  15. ^Bettencourt, Rebecca (20 April 2018),"CPETIPRI.TXT",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF)
  16. ^Bettencourt, Rebecca (11 October 2018),"CPETIALT.TXT",L2/19-025: Proposal to add characters from legacy computers and teletext to the UCS(PDF)
  17. ^Commodore 128 Programmer's Reference Guide(PDF). Commodore Business Machines, Inc. February 1986. pp. 666–668.ISBN 0-553-34292-4.

External links

[edit]
Early telecommunications
ISO/IEC 8859
Bibliographic use
National standards
ISO/IEC 2022
Mac OSCode pages
("scripts")
DOS code pages
IBM AIX code pages
Windows code pages
EBCDIC code pages
DEC terminals (VTx)
Platform specific
Unicode /ISO/IEC 10646
TeX typesetting system
Miscellaneous code pages
Control character
Related topics
Retrieved from "https://en.wikipedia.org/w/index.php?title=PETSCII&oldid=1296970106"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp