
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.cocopedia.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TomHarte</id>
	<title>CoCopedia - The Tandy/Radio Shack Color Computer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.cocopedia.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TomHarte"/>
	<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/Special:Contributions/TomHarte"/>
	<updated>2026-05-30T19:46:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=Emulators&amp;diff=12047</id>
		<title>Emulators</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=Emulators&amp;diff=12047"/>
		<updated>2026-05-29T00:39:10Z</updated>

		<summary type="html">&lt;p&gt;TomHarte: /* Mac (pre OS X) */ Update Virtual CoCo link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavEmulators}}&lt;br /&gt;
&lt;br /&gt;
For those who just want to relive some fond memories, an emulator is a great way to do just that.&lt;br /&gt;
&lt;br /&gt;
= Online =&lt;br /&gt;
&lt;br /&gt;
* [http://www.haplessgenius.com/mocha/ JS Mocha] - The HTML5 CoCo 2 Emulator&lt;br /&gt;
* [https://archive.org/details/basic-games-coco Vintage BASIC Games: Color Computer] - at archive.org, can be played directly in your browser&lt;br /&gt;
* [http://www.6809.org.uk/xroar/online/ XRoar Online] - Online Dragon/CoCo 1&amp;amp;2 emulator.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Raspberry Pi ==&lt;br /&gt;
* [http://www.780tech.com/cocopi3/ Ron Klein&#039;s CoCo Pi3 Project] - Use your Raspberry Pi3 as a CoCo and/or [[DriveWire]] server&lt;br /&gt;
* [http://coco-pi.com/ CoCo-Pi project] - a site dedicated to providing a complete CoCo 1,2,3 emulating environment on Raspberry 3 and 4 devices.&lt;br /&gt;
** [https://www.facebook.com/groups/748644118674047 CoCo-Pi] Facebook Group&lt;br /&gt;
&lt;br /&gt;
== Adapters and peripherals==&lt;br /&gt;
* [[CoCo Joystick2USB  Deluxe]] - An adapter to connect a TRS-80 Joystick (5/6-pin DIN) to a modern USB-capable computer&lt;br /&gt;
* [[CoCo Keys2USB Kit]] - Kit includes custom PCB, micro-controller, and connectors to build an encoder for connecting TRS-80 Color Computer 3/2 keyboard to USB port&lt;br /&gt;
&lt;br /&gt;
= Emulators by Platform =&lt;br /&gt;
&lt;br /&gt;
==Browser Based==&lt;br /&gt;
These emulators you can run directly from a web browser without needing to install anything:&lt;br /&gt;
* [http://www.haplessgenius.com/mocha/ Mocha], by Brad Grier, is a CoCo 1/2 emulator written in Java that runs from a web browser. This emulator has been running online for 10 years now and has a vast collection of disk and cassette programs to run.&lt;br /&gt;
* [https://www.6809.org.uk/xroar/online/ XRoar Online]&lt;br /&gt;
&lt;br /&gt;
==Cross-platform==&lt;br /&gt;
* [http://rbelmont.mameworld.info/?page_id=163 MAME], the current version of MESS has been merge into MAME. MAME runs on Linux/Unix, Mac OS X, and other SDL-supported operating systems.&lt;br /&gt;
* [http://www.6809.org.uk/dragon/xroar.shtml XRoar] is a CoCo 1/2/3, MC-20 and [[Dragon]] emulator for Linux/Unix, Mac OS X, Windows, and other platforms.&lt;br /&gt;
* [http://www.github.com/TomHarte/CLK Clock Signal] is an emulator of various computers including the CoCo 1/2 for macOS and Linux/Unix.&lt;br /&gt;
&lt;br /&gt;
== GNU/Linux==&lt;br /&gt;
* [[OVCC|The portable and open Virtual Colo(u)r Computer (OVCC)]] by [[Walter Zambotti]] aims to provide a native VCC version for GNU/Linux and macOS. Based on VCC by [[Joseph Forgione]].&lt;br /&gt;
* The Windows-based [[VCC]] emulator has also been shown to work under Linux using the WINE virtualization software.&lt;br /&gt;
* XRoar (see above under cross-platform).&lt;br /&gt;
* Clock Signal (see above under cross-platform).&lt;br /&gt;
&lt;br /&gt;
==Mac (pre OS X)==&lt;br /&gt;
* [https://colorcomputerarchive.com/repo/Emulators/MacOS/Virtual%20Coco/ Virtual CoCo] - A CoCo 2 emulator for the Macintosh. Not much is known of this emulator.&lt;br /&gt;
&lt;br /&gt;
==Mac OS X==&lt;br /&gt;
* [http://www.macmess.org/ MacMESS] - Multi-platform emulator that has a CoCo 1, 2 and 3 module. It is a front-end for [[SDLMESS]].&lt;br /&gt;
* OVCC (see above under GNU/Linux).&lt;br /&gt;
* XRoar (see above under cross-platform).&lt;br /&gt;
* Clock Signal (see above under cross-platform).&lt;br /&gt;
&lt;br /&gt;
== PalmOS ==&lt;br /&gt;
* [http://www.colorcomputerarchive.com/coco/Emulators/Coco%201-2/Coconut/ CoCoNut] - CoCo 1/2 emulator for PalmOS v5 devices.&lt;br /&gt;
&lt;br /&gt;
== MS-DOS ==&lt;br /&gt;
* Jeff Vavasour&#039;s CoCo emulator.&lt;br /&gt;
&lt;br /&gt;
== Microsoft Windows ==&lt;br /&gt;
&lt;br /&gt;
* [[MESS]] - Based on the MAME arcade emulator code, this project emulates various classic home computer systems.&lt;br /&gt;
* [[AdvanceMESS]]&lt;br /&gt;
* [[VCC]] - CoCo 3 emulator for Windows. (originally called &amp;quot;Bjork&amp;quot;)&lt;br /&gt;
* XRoar (see above under cross-platform)&lt;br /&gt;
&lt;br /&gt;
= Using Emulation (Tutorials) =&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
* [[Working With Emulator Disk Images]]&lt;br /&gt;
* [[Using OS-9 on an Emulator]]&lt;br /&gt;
* [[Using XRoar]]&lt;br /&gt;
&lt;br /&gt;
= ROM Resources =&lt;br /&gt;
Some places on the internet to download ROM and Disk images.&lt;br /&gt;
* A functional set of ROM images is included with the VCC emulator.&lt;/div&gt;</summary>
		<author><name>TomHarte</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=Emulators&amp;diff=12046</id>
		<title>Emulators</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=Emulators&amp;diff=12046"/>
		<updated>2026-05-29T00:37:56Z</updated>

		<summary type="html">&lt;p&gt;TomHarte: Expanded scope for XRoar, added Clock Signal.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavEmulators}}&lt;br /&gt;
&lt;br /&gt;
For those who just want to relive some fond memories, an emulator is a great way to do just that.&lt;br /&gt;
&lt;br /&gt;
= Online =&lt;br /&gt;
&lt;br /&gt;
* [http://www.haplessgenius.com/mocha/ JS Mocha] - The HTML5 CoCo 2 Emulator&lt;br /&gt;
* [https://archive.org/details/basic-games-coco Vintage BASIC Games: Color Computer] - at archive.org, can be played directly in your browser&lt;br /&gt;
* [http://www.6809.org.uk/xroar/online/ XRoar Online] - Online Dragon/CoCo 1&amp;amp;2 emulator.&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== Raspberry Pi ==&lt;br /&gt;
* [http://www.780tech.com/cocopi3/ Ron Klein&#039;s CoCo Pi3 Project] - Use your Raspberry Pi3 as a CoCo and/or [[DriveWire]] server&lt;br /&gt;
* [http://coco-pi.com/ CoCo-Pi project] - a site dedicated to providing a complete CoCo 1,2,3 emulating environment on Raspberry 3 and 4 devices.&lt;br /&gt;
** [https://www.facebook.com/groups/748644118674047 CoCo-Pi] Facebook Group&lt;br /&gt;
&lt;br /&gt;
== Adapters and peripherals==&lt;br /&gt;
* [[CoCo Joystick2USB  Deluxe]] - An adapter to connect a TRS-80 Joystick (5/6-pin DIN) to a modern USB-capable computer&lt;br /&gt;
* [[CoCo Keys2USB Kit]] - Kit includes custom PCB, micro-controller, and connectors to build an encoder for connecting TRS-80 Color Computer 3/2 keyboard to USB port&lt;br /&gt;
&lt;br /&gt;
= Emulators by Platform =&lt;br /&gt;
&lt;br /&gt;
==Browser Based==&lt;br /&gt;
These emulators you can run directly from a web browser without needing to install anything:&lt;br /&gt;
* [http://www.haplessgenius.com/mocha/ Mocha], by Brad Grier, is a CoCo 1/2 emulator written in Java that runs from a web browser. This emulator has been running online for 10 years now and has a vast collection of disk and cassette programs to run.&lt;br /&gt;
* [https://www.6809.org.uk/xroar/online/ XRoar Online]&lt;br /&gt;
&lt;br /&gt;
==Cross-platform==&lt;br /&gt;
* [http://rbelmont.mameworld.info/?page_id=163 MAME], the current version of MESS has been merge into MAME. MAME runs on Linux/Unix, Mac OS X, and other SDL-supported operating systems.&lt;br /&gt;
* [http://www.6809.org.uk/dragon/xroar.shtml XRoar] is a CoCo 1/2/3, MC-20 and [[Dragon]] emulator for Linux/Unix, Mac OS X, Windows, and other platforms.&lt;br /&gt;
* [http://www.github.com/TomHarte/CLK Clock Signal] is an emulator of various computers including the CoCo 1/2 for macOS and Linux/Unix.&lt;br /&gt;
&lt;br /&gt;
== GNU/Linux==&lt;br /&gt;
* [[OVCC|The portable and open Virtual Colo(u)r Computer (OVCC)]] by [[Walter Zambotti]] aims to provide a native VCC version for GNU/Linux and macOS. Based on VCC by [[Joseph Forgione]].&lt;br /&gt;
* The Windows-based [[VCC]] emulator has also been shown to work under Linux using the WINE virtualization software.&lt;br /&gt;
* XRoar (see above under cross-platform).&lt;br /&gt;
* Clock Signal (see above under cross-platform).&lt;br /&gt;
&lt;br /&gt;
==Mac (pre OS X)==&lt;br /&gt;
* [http://www.colorcomputerarchive.com/coco/Emulators/Coco%201-2/Virtual%20Coco/ Virtual CoCo] - A CoCo 2 emulator for the Macintosh. Not much is known of this emulator.&lt;br /&gt;
&lt;br /&gt;
==Mac OS X==&lt;br /&gt;
* [http://www.macmess.org/ MacMESS] - Multi-platform emulator that has a CoCo 1, 2 and 3 module. It is a front-end for [[SDLMESS]].&lt;br /&gt;
* OVCC (see above under GNU/Linux).&lt;br /&gt;
* XRoar (see above under cross-platform).&lt;br /&gt;
* Clock Signal (see above under cross-platform).&lt;br /&gt;
&lt;br /&gt;
== PalmOS ==&lt;br /&gt;
* [http://www.colorcomputerarchive.com/coco/Emulators/Coco%201-2/Coconut/ CoCoNut] - CoCo 1/2 emulator for PalmOS v5 devices.&lt;br /&gt;
&lt;br /&gt;
== MS-DOS ==&lt;br /&gt;
* Jeff Vavasour&#039;s CoCo emulator.&lt;br /&gt;
&lt;br /&gt;
== Microsoft Windows ==&lt;br /&gt;
&lt;br /&gt;
* [[MESS]] - Based on the MAME arcade emulator code, this project emulates various classic home computer systems.&lt;br /&gt;
* [[AdvanceMESS]]&lt;br /&gt;
* [[VCC]] - CoCo 3 emulator for Windows. (originally called &amp;quot;Bjork&amp;quot;)&lt;br /&gt;
* XRoar (see above under cross-platform)&lt;br /&gt;
&lt;br /&gt;
= Using Emulation (Tutorials) =&lt;br /&gt;
&lt;br /&gt;
== General Information ==&lt;br /&gt;
* [[Working With Emulator Disk Images]]&lt;br /&gt;
* [[Using OS-9 on an Emulator]]&lt;br /&gt;
* [[Using XRoar]]&lt;br /&gt;
&lt;br /&gt;
= ROM Resources =&lt;br /&gt;
Some places on the internet to download ROM and Disk images.&lt;br /&gt;
* A functional set of ROM images is included with the VCC emulator.&lt;/div&gt;</summary>
		<author><name>TomHarte</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=PIA&amp;diff=12043</id>
		<title>PIA</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=PIA&amp;diff=12043"/>
		<updated>2026-05-18T15:25:58Z</updated>

		<summary type="html">&lt;p&gt;TomHarte: Expand details on connections.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Peripheral Interface Adapter&#039;&#039;&#039;, formally the Motorola 6821, is a chip that provides two ports of parallel input and output plus control lines and interrupts. There are two in your CoCo, usually referred to as PIA0 and PIA1, and they&#039;re responsible for keyboard and joystick input, sound output and video mode selection and interrupt generation, amongst other tasks.&lt;br /&gt;
&lt;br /&gt;
== Connections ==&lt;br /&gt;
&lt;br /&gt;
=== PIA0 ===&lt;br /&gt;
&lt;br /&gt;
Port A:&lt;br /&gt;
* b7: joystick comparison input;&lt;br /&gt;
* b0–b6: keyboard rows (b0 = row 0);&lt;br /&gt;
* b0 and b2: right joystick buttons (b0 = primary);&lt;br /&gt;
* b1 and b3: left joystick buttons (b1 = primary)&lt;br /&gt;
* CA1: the 6847&#039;s horizontal sync output;&lt;br /&gt;
* CA2: LSB of the MUX selection.&lt;br /&gt;
&lt;br /&gt;
Since both keyboard rows and joystick buttons are connected to the low four bits, pressing joystick buttons can interfere with keyboard input.&lt;br /&gt;
&lt;br /&gt;
Port B:&lt;br /&gt;
* b0–b7: keyboard column;&lt;br /&gt;
* CB1: the 6847&#039;s field sync output;&lt;br /&gt;
* CB2: MSB of the MUX selection.&lt;br /&gt;
&lt;br /&gt;
PIA0&#039;s interrupt output is connected to the 6847&#039;s IRQ input.&lt;br /&gt;
&lt;br /&gt;
=== PIA1 ===&lt;br /&gt;
&lt;br /&gt;
Port A:&lt;br /&gt;
* b2–b7: DAC output level;&lt;br /&gt;
* b1: RS232 data output;&lt;br /&gt;
* b0: tape input;&lt;br /&gt;
* CA1: RS232 data carrier detect;&lt;br /&gt;
* CA2: tape motor control.&lt;br /&gt;
&lt;br /&gt;
Port B:&lt;br /&gt;
* b7: 6847 alpha/graphics selection (0 = alphanumeric);&lt;br /&gt;
* b4–b6: 6847 graphics mode selection;&lt;br /&gt;
* b3: 6847 colour set selection;&lt;br /&gt;
* b2: RAM size;&lt;br /&gt;
* b1: 1-bit sound output;&lt;br /&gt;
* b0: RS232 data input;&lt;br /&gt;
* CB1: cartridge interrupt input;&lt;br /&gt;
* CB2: sound enable.&lt;br /&gt;
&lt;br /&gt;
Cartridges short one of the clock pins onto their interrupt pin, which feeds into CB1 and therefore pulses every clock cycle; this is used by the machine to detect cartridge presence.&lt;br /&gt;
&lt;br /&gt;
=== The MUX ===&lt;br /&gt;
&lt;br /&gt;
The multiplexer selects both which joystick axis is enabled for comparison with the current DAC value and which source is currently selected for audio generation (if audio is enabled).&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
&lt;br /&gt;
The keyboard can be scanned through PIA0 via addresses $FF00 (PIA0 port A data) and $FF02 (port B data). The first address ($FF00) represents keyboard rows as well as joystick buttons, and the second address ($FF02) keyboard columns; programs will normally set one of these as output and one of these as inputs, most normatively configuring $FF02 as output and using it to select which columns to scan and then reading $FF00 as input to very which rows on those selected columns had keys pressed. [[Color Basic]], when running a prompt, converts these to ASCII values to be printed to the screen at cursor position.&lt;br /&gt;
&lt;br /&gt;
These two value correspond to ASCII values according to the following table:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|@&lt;br /&gt;
|H&lt;br /&gt;
|P&lt;br /&gt;
|X&lt;br /&gt;
|0&lt;br /&gt;
|8&lt;br /&gt;
|Enter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|I&lt;br /&gt;
|Q&lt;br /&gt;
|Y&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|Clear&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|B&lt;br /&gt;
|J&lt;br /&gt;
|R&lt;br /&gt;
|Z&lt;br /&gt;
|2&lt;br /&gt;
|:&lt;br /&gt;
|Break&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|K&lt;br /&gt;
|S&lt;br /&gt;
|Up&lt;br /&gt;
|3&lt;br /&gt;
|;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|D&lt;br /&gt;
|L&lt;br /&gt;
|T&lt;br /&gt;
|Down&lt;br /&gt;
|4&lt;br /&gt;
|,&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|E&lt;br /&gt;
|M&lt;br /&gt;
|U&lt;br /&gt;
|Left&lt;br /&gt;
|5&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|F&lt;br /&gt;
|N&lt;br /&gt;
|V&lt;br /&gt;
|Right&lt;br /&gt;
|6&lt;br /&gt;
|.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|G&lt;br /&gt;
|O&lt;br /&gt;
|W&lt;br /&gt;
|Space&lt;br /&gt;
|7&lt;br /&gt;
|/&lt;br /&gt;
|Shift&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Keyboard layout is one of the few areas of hardware difference between a CoCo and a Dragon, other than video standard; the Dragon has the same physical layout as the CoCo but changes the column numbering — columns 6 and 7 are the same as the CoCo but everything else is off by 2. E.g. the CoCo&#039;s column 0 is the Dragon&#039;s column 2, the Coco&#039;s column 4 is the Dragon&#039;s column 6 and the CoCo&#039;s column 5 is the Dragon&#039;s column 0.&lt;br /&gt;
&lt;br /&gt;
(under construction)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>TomHarte</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=PIA&amp;diff=12042</id>
		<title>PIA</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=PIA&amp;diff=12042"/>
		<updated>2026-05-18T14:46:01Z</updated>

		<summary type="html">&lt;p&gt;TomHarte: /* Keyboard */ These are columns, not rows.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Peripheral Interface Adapter&#039;&#039;&#039;, formally the Motorola 6821, is a chip that provides two ports of parallel input and output plus control lines and interrupts. There are two in your CoCo, usually referred to as PIA0 and PIA1, and they&#039;re responsible for keyboard and joystick input, sound output and video mode selection and interrupt generation, amongst other tasks.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
&lt;br /&gt;
The keyboard can be scanned through PIA0 via addresses $FF00 and $FF02. The first address ($FF00) represents keyboard rows as well as joystick buttons, and the second address ($FF02) keyboard columns; programs will normally set one of these as output and one of these as inputs, most normatively configuring $FF02 as output and using it to select which columns to scan and then reading $FF00 as input to very which rows on those selected columns had keys pressed. [[Color Basic]], when running a prompt, converts these to ASCII values to be printed to the screen at cursor position.&lt;br /&gt;
&lt;br /&gt;
These two value correspond to ASCII values according to the following table:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|@&lt;br /&gt;
|H&lt;br /&gt;
|P&lt;br /&gt;
|X&lt;br /&gt;
|0&lt;br /&gt;
|8&lt;br /&gt;
|Enter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|I&lt;br /&gt;
|Q&lt;br /&gt;
|Y&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|Clear&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|B&lt;br /&gt;
|J&lt;br /&gt;
|R&lt;br /&gt;
|Z&lt;br /&gt;
|2&lt;br /&gt;
|:&lt;br /&gt;
|Break&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|K&lt;br /&gt;
|S&lt;br /&gt;
|Up&lt;br /&gt;
|3&lt;br /&gt;
|;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|D&lt;br /&gt;
|L&lt;br /&gt;
|T&lt;br /&gt;
|Down&lt;br /&gt;
|4&lt;br /&gt;
|,&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|E&lt;br /&gt;
|M&lt;br /&gt;
|U&lt;br /&gt;
|Left&lt;br /&gt;
|5&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|F&lt;br /&gt;
|N&lt;br /&gt;
|V&lt;br /&gt;
|Right&lt;br /&gt;
|6&lt;br /&gt;
|.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|G&lt;br /&gt;
|O&lt;br /&gt;
|W&lt;br /&gt;
|Space&lt;br /&gt;
|7&lt;br /&gt;
|/&lt;br /&gt;
|Shift&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Keyboard layout is one of the few areas of hardware difference between a CoCo and a Dragon, other than video standard; the Dragon has the same physical layout as the CoCo but changes the column numbering — columns 6 and 7 are the same as the CoCo but everything else is off by 2. E.g. the CoCo&#039;s column 0 is the Dragon&#039;s column 2, the Coco&#039;s column 4 is the Dragon&#039;s column 6 and the CoCo&#039;s column 5 is the Dragon&#039;s column 0.&lt;br /&gt;
&lt;br /&gt;
(under construction)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>TomHarte</name></author>
	</entry>
	<entry>
		<id>https://www.cocopedia.com/wiki/index.php?title=PIA&amp;diff=12041</id>
		<title>PIA</title>
		<link rel="alternate" type="text/html" href="https://www.cocopedia.com/wiki/index.php?title=PIA&amp;diff=12041"/>
		<updated>2026-05-18T14:44:51Z</updated>

		<summary type="html">&lt;p&gt;TomHarte: Add some more detail, add keyboard map.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Peripheral Interface Adapter&#039;&#039;&#039;, formally the Motorola 6821, is a chip that provides two ports of parallel input and output plus control lines and interrupts. There are two in your CoCo, usually referred to as PIA0 and PIA1, and they&#039;re responsible for keyboard and joystick input, sound output and video mode selection and interrupt generation, amongst other tasks.&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
&lt;br /&gt;
The keyboard can be scanned through PIA0 via addresses $FF00 and $FF02. The first address ($FF00) represents keyboard rows as well as joystick buttons, and the second address ($FF02) keyboard columns; programs will normally set one of these as output and one of these as inputs, most normatively configuring $FF02 as output and using it to select which columns to scan and then reading $FF00 as input to very which rows on those selected columns had keys pressed. [[Color Basic]], when running a prompt, converts these to ASCII values to be printed to the screen at cursor position.&lt;br /&gt;
&lt;br /&gt;
These two value correspond to ASCII values according to the following table:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0&lt;br /&gt;
|1&lt;br /&gt;
|2&lt;br /&gt;
|3&lt;br /&gt;
|4&lt;br /&gt;
|5&lt;br /&gt;
|6&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|@&lt;br /&gt;
|H&lt;br /&gt;
|P&lt;br /&gt;
|X&lt;br /&gt;
|0&lt;br /&gt;
|8&lt;br /&gt;
|Enter&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|A&lt;br /&gt;
|I&lt;br /&gt;
|Q&lt;br /&gt;
|Y&lt;br /&gt;
|1&lt;br /&gt;
|9&lt;br /&gt;
|Clear&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|B&lt;br /&gt;
|J&lt;br /&gt;
|R&lt;br /&gt;
|Z&lt;br /&gt;
|2&lt;br /&gt;
|:&lt;br /&gt;
|Break&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|C&lt;br /&gt;
|K&lt;br /&gt;
|S&lt;br /&gt;
|Up&lt;br /&gt;
|3&lt;br /&gt;
|;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|D&lt;br /&gt;
|L&lt;br /&gt;
|T&lt;br /&gt;
|Down&lt;br /&gt;
|4&lt;br /&gt;
|,&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|E&lt;br /&gt;
|M&lt;br /&gt;
|U&lt;br /&gt;
|Left&lt;br /&gt;
|5&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|F&lt;br /&gt;
|N&lt;br /&gt;
|V&lt;br /&gt;
|Right&lt;br /&gt;
|6&lt;br /&gt;
|.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|G&lt;br /&gt;
|O&lt;br /&gt;
|W&lt;br /&gt;
|Space&lt;br /&gt;
|7&lt;br /&gt;
|/&lt;br /&gt;
|Shift&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Keyboard layout is one of the few areas of hardware difference between a CoCo and a Dragon, other than video standard; the Dragon has the same physical layout as the CoCo but changes the column numbering — columns 6 and 7 are the same as the CoCo but everything else is off by 2. E.g. the CoCo&#039;s row 0 is the Dragon&#039;s row 2, the Coco&#039;s row 4 is the Dragon&#039;s row 6 and the CoCo&#039;s row 5 is the Dragon&#039;s row 0.&lt;br /&gt;
&lt;br /&gt;
(under construction)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;/div&gt;</summary>
		<author><name>TomHarte</name></author>
	</entry>
</feed>