Internally the CoCo 1 and CoCo 2 models are functionally identical. The core of the system is virtually identical to the reference design included in the Motorola MC6883 data sheet and consists of five
LSI chips: • MC6809E Microprocessor Unit (MPU) • MC6883/SN74LS783/SN74LS785 Synchronous Address Multiplexor (SAM) •
MC6847 Video Display Generator (VDG) • Two
Peripheral Interface Adapters (PIA), either MC6821 or MC6822 chips
SAM The SAM is a multifunction device that performs the following functions: • Clock generation and synchronization for the 6809E MPU and 6847 VDG • Up to 64 KB dynamic random access memory (DRAM) control and
refresh • Device selection based on MPU memory address to determine if the MPU access is to DRAM, ROM, PIA, etc. • Duplication of the VDG address counter to "feed" the VDG the data it is expecting The SAM was designed to replace numerous small LS/
TTL chips into one integrated package. Its main purpose is to control the DRAM but, as outlined above, it integrates several other functions as well. It is connected to a crystal at 4 times the television
color burst frequency (14.31818 MHz for NTSC countries). This is divided by 4 internally and is fed to the VDG for its own internal timing (3.579545 MHz for NTSC). The SAM also divides the master clock by 16 (or 8 in certain cases) for the
two phase MPU clock; in NTSC this is 0.89 MHz (or 1.8 MHz if divided by 8). Switching the SAM into 1.8 MHz operation gives the CPU the time ordinarily used by the VDG and refresh. As such, the display shows garbage; this mode was seldom used. However, an unusual mode available by the SAM is called the Address Dependent mode, where ROM reads (since they do not use the DRAM) occur at 1.8 MHz but regular RAM access occurs at 0.89 MHz. In effect, since the BASIC interpreter runs from ROM, putting the machine in this mode would nearly double the performance of a BASIC program while maintaining video display and DRAM refresh. Of course, this would throw off the software timing loops and I/O operations would be affected. Despite this, however, the "high speed
POKE" was used by many CoCo BASIC programs even though it
overclocked the hardware in the CoCo, which was only rated for 1 MHz operation. The SAM has no connection to the MPU data bus. As such, it is programmed in a curious manner; its 16-bit configuration register is spread across 32 memory addresses (FFC0-FFDF). Writing even bytes sets that register bit to 0, while writing odd bytes sets it to 1. The value (D7-D0) that is written is ignored. Due to limitations in 40-pin packaging, the SAM contains a duplicate of the VDG's internal 12-bit address counter. Normally this counter's settings are set to duplicate the VDG's display mode. However, this is not required and results in the creation of some new display modes not possible when the VDG is used in a system alone. Instead of the VDG requesting data from RAM by itself, the VDG is "fed" data by the SAM's internal copy of the VDG address counter. This process is called "Interleaved Direct Memory Access" (IDMA) by Motorola and ensures that the processor and VDG always have full access to this shared memory resource with no wait states or contention. There are two versions of the SAM. The early one is labeled MC6883 and/or SN74LS783; the later version is labeled SN74LS785. There are some minor timing differences, but the major difference is the support of an 8-bit refresh counter in the 785 version. This allowed for use of inexpensive 16K by 4-bit and certain 64K by 1-bit DRAMs. Some third-party
bank-switching memory upgrades that used 256K DRAMs needed this 8-bit refresh counter to work.
VDG The
Motorola 6847 is a display generator capable of displaying text and graphics contained within a roughly square display matrix 256 pixels wide by 192 lines high. It can display 9 colors: black, green, yellow, blue, red, white, cyan, magenta, and orange.
Alphanumeric/Semigraphics display In alphanumeric mode, each character is a 5 dot wide by 7 dot high character in a box 8 dots wide and 12 lines high. This display mode occupies 512 bytes of memory from $400-$5FF and is a 32 character wide screen with 16 lines. The ROM character generator only holds 64 characters, so no lowercase characters are provided. "Lowercase" characters are rendered as uppercase with inverted color. On most CoCo generations it is green on very dark green.
Semigraphics is a mode where alphanumerics and low resolution graphics can be mixed together. The 8th bit of a character determines if it is alphanumeric or treated as a 2 × 2 pixel grid. When the 8th bit is set, the next three bits determine the color and last 4 bits specify which quadrants of the character box are either the selected color or black. This allows a 64 × 32 graphics mode with 9 colors, the only mode where it is possible to display all 9 colors simultaneously. There are two color sets. The default has black characters on a green background. The alternate has black characters on an orange background. The color set selection does not affect semigraphics characters. The border is always black. The 6847 is capable of a Semigraphics 6 display mode, where two bits select a color and 6 bits determine which 1/6 of the character box is lit. Only 4 colors are possible, but the colorset bit of the VDG selects two groups of 4 colors. Only two colors are available in graphics blocks when using Semigraphics 6 on the CoCo. The default alphanumeric display for the CoCo is Semigraphics 4.
Additional Semigraphics modes By setting the SAM such that it believes it is displaying a full graphics mode, but leaving the VDG in Alphanumeric/Semigraphics 4 mode, it is possible to subdivide the character box into smaller pieces. This creates the "virtual" modes Semigraphics 8, 12, and 24. In these modes it was possible to mix bits and pieces of different text characters as well as Semigraphics 4 characters. These modes were an interesting curiosity but not widely used, as the Semigraphics 24-screen consumed 6144 bytes of memory. These modes were not implemented on the CoCo 3. A programmer's reference manual for the CoCo states that due to a fire at Tandy's research lab, the papers relating to the semigraphics modes were shuffled, and so some of the semigraphics modes were never documented. CoCo enthusiasts created experimental programs to try to
reverse engineer the modes, and were able to reconstruct the missing documentation.
Bitmap modes Bitmap display modes are divided into two categories:
resolution and
color. In resolution modes, each pixel is addressable as either on or off. There are two color sets available: black dots on a green background with a green border, and white dots on a black background with a white border. In color modes, each pixel uses two bits to select one of four colors, with the overall colors determined by the colorset: • a green border with the colors green, yellow, red, and blue; • a white border with the colors white, cyan, magenta, and orange. Resolution graphics store 8 pixels per byte and are available in 128×64, 128×96, 128×192, and 256×192 modes. Color graphics have 4 pixels per byte and are available in 64×64, 128×64, 128×96, and 128×192. The maximum size of a bitmap screen is 6144.
Artifact colors The 256×192 two color graphics mode can display four colors due to a quirk in the NTSC television system. It is similar to the Apple II's DHGR graphics but slightly lower resolution and with four rather than six colors. These are called
composite artifact colors. Two 6k pages can be used and the location of them differs depending on whether the disk controller is in use or not. If it is plugged into the expansion port, the graphics page begins at $E00 and at $600 if not (cassette software that utilizes the hi res mode would require the disk controller to be removed to ensure the graphics page is where the software expects it to be in). In the first color set, where green and black dots are available, alternating columns of green and black appear as a muddy green color. With the white and black color set, the result is either orange or blue. Reversing the order of the alternating dots gives the opposite color. In effect, this mode is 128×192 with four colors: black, orange, blue, and white. On
PAL televisions, instead of solid orange and blue, artifacts appear as vertical stripes of green and peach with soft edges and a width of almost four pixels. On a CoCo 3 with an analog RGB monitor, the black and white dot patterns do not artifact. The bit patterns that represent orange and blue can be different each time the system is powered up. Most Color Computer games start with a title screen and ask the user to press the reset button until the colors are correct. This is fixed on the Color Computer 3 and the other color set can be chosen by holding during reset.
Lowercase and the 6847T1 The 6847 is capable of using an external character generator. Several third-party add-on boards allow the CoCo to display real lowercase characters. Late in the CoCo 2 production run, the enhanced 6847T1 VDG was used. It includes a lowercase character generator and the ability to display a green/orange or black border on the text screen. Radio Shack sold two audio devices to attach to the expansion port. The Speech/Sound Pak includes an
AY-3-8913 programmable sound generator and a
SPO256-AL2 text to speech digital narrator. The Orchestra-90 Pak includes two 8-bit digital-to-analog converters.
Disk interface The CoCo uses an external floppy disk controller that plugs into the side expansion port. The controller uses a WD 1791 FDC and a ROM-based disk operating system which is immediately available at power-on and does not require an OS disk (the CoCo 2-3 controller also supports booting alternative RAM-resident DOSes in place of the ROM one by typing the DOS command in BASIC). The CoCo 1 uses Shugart SA-400 full-height 5.25" drives which are 35 track single-sided units and formatted disks to 160k. They are similar to the TRS-80 Model I disk drives except for the custom modification of a power switch in the front faceplate. The CoCo 2-3 replaced these with 40 track half-height drives, two per unit (the existing 35 track 160k format was retained for compatibility purposes with the CoCo 1). The stock drives can be replaced by any Shugart-standard 34 pin interface units for additional storage space although the ROM DOS only supports default 160k format. The CoCo 1 controller has an older version of the WD 1791 FDC chip manufactured in enhancement load
NMOS that needs three voltages to operate: 12V, 5V, and -5V. The CoCo 2 switched to a newer FDC that used a single 5V power line, and the 12V line was removed from the expansion port. Consequently the CoCo 1 controller will not work on the CoCo 2-3 nor will the latter's controller work on the CoCo 1. The ROM DOS functions as part of BASIC and all disk commands are implemented as BASIC statements. BASIC programs can be loaded from disk by the LOAD command and LOADM for machine language programs.
PIAs There are two
Peripheral Interface Adapter chips in all CoCo models. The PIAs are dedicated to I/O operations such as driving the internal 6-bit digital-to-analog converter, controlling the relay for the cassette motor, reading the keyboard, controlling the VDG mode pins, and accessing the
RS-232 serial I/O port. The earliest CoCo models have two standard 6821 chips. Later, after changes in the keyboard design, the 6822 IIA (Industrial Interface Adapter) was used instead. The 6822 was eventually discontinued by Motorola, but was produced for Tandy as an
application-specific integrated circuit with the part number SC67331P.
CoCo 3 hardware changes In the CoCo 3, a new VLSI ASIC called (officially) the Advanced Color Video Chip (ACVC) or (unofficially) the Graphics Interrupt Memory Enhancer (GIME), integrated the functions of the SAM and VDG while enhancing the capabilities of both. The CoCo 3 supports 40- and 80-column text and the ability to run at 1.8 MHz without loss of video. The processor was changed to the 68B09E and the PIA was changed to the 68B21, which are 2 MHz parts. ==Discontinuation==