MOS Technology TED

The 7360/8360 TExt Display (TED) was an integrated circuit made by MOS Technology, Inc. It was a video chip that also contained sound generation hardware, DRAM refresh circuitry, interval timers, and keyboard input handling. It was designed for the Commodore Plus/4 and 16. Packaging consisted of a JEDEC-standard 48-pin DIP.

The only difference between models 7360 and 8360 is the manufacturing technology used; model 8360 is more common.

Video capabilities
The video capabilities provided by the TED were largely a subset of those in the VIC-II. The TED supported five video modes:


 * Text mode of 40 × 25 characters with 8 × 8 pixels
 * Multicolor text (4 × 8 pixels per character, double pixel width in the x-direction)
 * Extended background color mode (8 × 8 pixels per character)
 * Multicolor Graphics 160 × 200 pixels
 * Hi-Res Graphics 320 × 200 pixels
 * $46 μs$ of the $52 μs$ long visible part of the scan lines is filled with pixels

These modes were largely unchanged from the corresponding VIC-II modes aside from different register and memory mappings (see the article on the VIC-II for information on graphics modes). However, the TED lacked the sprite capabilities of the VIC-II, and so game animation had to be done exclusively with custom character sets like on the VIC-20. This restricted the graphics of C16/Plus 4 games versus the C64. On the VIC-II, sprites used two thirds of the die area pushing the transistor count over that of the CPU. In contrast, the TED caches the color attributes on-chip, increasing the SRAM from $40 bytes$ and does away with the external color RAM.

The TED did include two features that the VIC-II lacked: luminance control and blinking text.

It generated 16 base colors by variations of Pb and Pr chroma signals (with 8 possible steps, ranging from 0, +-0.3826834, +-0.7071068 to +-1.0). Fifteen of these 16 colors (black being the exception) could be assigned one of 8 Y luma values (0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0), thus making the TED capable of displaying a far wider array of colors than the VIC-II. The full palette of 121 YPbPr colors is shown below.
 * {| class="wikitable toccolours"

! rowspan="2" | hue #!! rowspan="2" | Pb (rel.) ! rowspan="2" |Pr (rel.) ! colspan="8" | Y !0.125 !0.25 !0.375 !0.5 !0.625 !0.75 !0.875 !1.0 ! 0 — black ! 1 — white ! 2 — red ! 3 — cyan ! 4 — purple ! 5 — green ! 6 — blue ! 7 — yellow ! 8 — orange ! 9 — brown ! 10 — yellow-green ! 11 — pink ! 12 — blue-green ! 13 — light blue ! 14 — dark blue ! 15 — light green
 * 0 || 0
 * style="color:white; background:#000;" | 0,0
 * style="color:white; background:#000;" | 0,1
 * style="color:white; background:#000;" | 0,2
 * style="color:white; background:#000;" | 0,3
 * style="color:white; background:#000;" | 0,4
 * style="color:white; background:#000;" | 0,5
 * style="color:white; background:#000;" | 0,6
 * style="color:white; background:#000;" | 0,7
 * 0 || 0
 * style="color:white; background:#202020;" | 1,0
 * style="color:white; background:#404040;" | 1,1
 * style="color:white; background:#606060;" | 1,2
 * style="color:white; background:gray;" | 1,3
 * style="color:white; background:#9f9f9f;" | 1,4
 * style="color:black; background:#bfbfbf;" | 1,5
 * style="color:black; background:#dfdfdf;" | 1,6
 * style="color:black; background:#fff;" | 1,7
 * −0.3826834 || 0.9238795
 * style="color:white; background:#580902;" | 2,0
 * style="color:white; background:#782922;" | 2,1
 * style="color:white; background:#984942;" | 2,2
 * style="color:white; background:#b86962;" | 2,3
 * style="color:white; background:#d88882;" | 2,4
 * style="color:black; background:#f7a8a2;" | 2,5
 * style="color:black; background:#ffc8c2;" | 2,6
 * style="color:black; background:#ffe8e2;" | 2,7
 * 0.3826834 || −0.9238795
 * style="color:white; background:#00373d;" | 3,0
 * style="color:white; background:#08575d;" | 3,1
 * style="color:white; background:#27777d;" | 3,2
 * style="color:white; background:#47969d;" | 3,3
 * style="color:white; background:#67b6bd;" | 3,4
 * style="color:black; background:#87d6dd;" | 3,5
 * style="color:black; background:#a7f6fd;" | 3,6
 * style="color:black; background:#c7ffff;" | 3,7
 * 0.7071068 || 0.7071068
 * style="color:white; background:#4b0056;" | 4,0
 * style="color:white; background:#6b1f76;" | 4,1
 * style="color:white; background:#8b3f96;" | 4,2
 * style="color:white; background:#aa5fb6;" | 4,3
 * style="color:white; background:#ca7fd6;" | 4,4
 * style="color:black; background:#ea9ff6;" | 4,5
 * style="color:black; background:#ffbfff;" | 4,6
 * style="color:black; background:#ffdfff;" | 4,7
 * −0.7071068 || −0.7071068
 * style="color:white; background:#004000;" | 5,0
 * style="color:white; background:#156009;" | 5,1
 * style="color:white; background:#358029;" | 5,2
 * style="color:white; background:#55a049;" | 5,3
 * style="color:white; background:#74c069;" | 5,4
 * style="color:black; background:#94e089;" | 5,5
 * style="color:black; background:#b4ffa9;" | 5,6
 * style="color:black; background:#d4ffc9;" | 5,7
 * 1 || 0
 * style="color:white; background:#20116d;" | 6,0
 * style="color:white; background:#40318d;" | 6,1
 * style="color:white; background:#6051ac;" | 6,2
 * style="color:white; background:#8071cc;" | 6,3
 * style="color:white; background:#9f90ec;" | 6,4
 * style="color:black; background:#bfb0ff;" | 6,5
 * style="color:black; background:#dfd0ff;" | 6,6
 * style="color:black; background:#fff0ff;" | 6,7
 * −1 || 0
 * style="color:white; background:#202f00;" | 7,0
 * style="color:white; background:#404f00;" | 7,1
 * style="color:white; background:#606f13;" | 7,2
 * style="color:white; background:#808e33;" | 7,3
 * style="color:white; background:#9fae53;" | 7,4
 * style="color:black; background:#bfce72;" | 7,5
 * style="color:black; background:#dfee92;" | 7,6
 * style="color:black; background:#ffffb2;" | 7,7
 * −0.7071068 || 0.7071068
 * style="color:white; background:#4b1500;" | 8,0
 * style="color:white; background:#6b3409;" | 8,1
 * style="color:white; background:#8b5429;" | 8,2
 * style="color:white; background:#aa7449;" | 8,3
 * style="color:white; background:#ca9469;" | 8,4
 * style="color:black; background:#eab489;" | 8,5
 * style="color:black; background:#ffd4a9;" | 8,6
 * style="color:black; background:#fff4c9;" | 8,7
 * −0.9238795 || 0.3826834
 * style="color:white; background:#372200;" | 9,0
 * style="color:white; background:#574200;" | 9,1
 * style="color:white; background:#776219;" | 9,2
 * style="color:white; background:#978139;" | 9,3
 * style="color:white; background:#b7a158;" | 9,4
 * style="color:black; background:#d7c178;" | 9,5
 * style="color:black; background:#f6e198;" | 9,6
 * style="color:black; background:#ffffb8;" | 9,7
 * −0.9238795 || −0.3826834
 * style="color:white; background:#093a00;" | 10,0
 * style="color:white; background:#285900;" | 10,1
 * style="color:white; background:#487919;" | 10,2
 * style="color:white; background:#689939;" | 10,3
 * style="color:white; background:#88b958;" | 10,4
 * style="color:black; background:#a8d978;" | 10,5
 * style="color:black; background:#c8f998;" | 10,6
 * style="color:black; background:#e8ffb8;" | 10,7
 * 0 || 1
 * style="color:white; background:#5d0120;" | 11,0
 * style="color:white; background:#7d2140;" | 11,1
 * style="color:white; background:#9c4160;" | 11,2
 * style="color:white; background:#bc6180;" | 11,3
 * style="color:white; background:#dc809f;" | 11,4
 * style="color:black; background:#fca0bf;" | 11,5
 * style="color:black; background:#ffc0df;" | 11,6
 * style="color:black; background:#ffe0ff;" | 11,7
 * 0 || −1
 * style="color:white; background:#003f20;" | 12,0
 * style="color:white; background:#035f40;" | 12,1
 * style="color:white; background:#237f60;" | 12,2
 * style="color:white; background:#439e80;" | 12,3
 * style="color:white; background:#63be9f;" | 12,4
 * style="color:black; background:#82debf;" | 12,5
 * style="color:black; background:#a2fedf;" | 12,6
 * style="color:black; background:#c2ffff;" | 12,7
 * 0.7071068 || −0.7071068
 * style="color:white; background:#002b56;" | 13,0
 * style="color:white; background:#154b76;" | 13,1
 * style="color:white; background:#356b96;" | 13,2
 * style="color:white; background:#558bb6;" | 13,3
 * style="color:white; background:#74abd6;" | 13,4
 * style="color:black; background:#94cbf6;" | 13,5
 * style="color:black; background:#b4eaff;" | 13,6
 * style="color:black; background:#d4ffff;" | 13,7
 * 0.9238795 || 0.3826834
 * style="color:white; background:#370667;" | 14,0
 * style="color:white; background:#572687;" | 14,1
 * style="color:white; background:#7746a7;" | 14,2
 * style="color:white; background:#9766c6;" | 14,3
 * style="color:white; background:#b786e6;" | 14,4
 * style="color:black; background:#d7a6ff;" | 14,5
 * style="color:black; background:#f6c5ff;" | 14,6
 * style="color:black; background:#ffe5ff;" | 14,7
 * −0.3826834 || −0.9238795
 * style="color:white; background:#004202;" | 15,0
 * style="color:white; background:#086222;" | 15,1
 * style="color:white; background:#278242;" | 15,2
 * style="color:white; background:#47a262;" | 15,3
 * style="color:white; background:#67c282;" | 15,4
 * style="color:black; background:#87e2a2;" | 15,5
 * style="color:black; background:#a7ffc2;" | 15,6
 * style="color:black; background:#c7ffe2;" | 15,7
 * }

Sound capabilities
The TED featured a simple tone generator that produced two channels of audio. The first channel produced a square wave, and the second could produce either a square wave or white noise. Between the two channels you could hear either two tones or one tone plus noise. This tone generator was designed for business applications, and did not provide the extensive sound features found in the SID chip.

Other features
The TED includes three 16-bit interval timers, which consist of down counters operating at the master clock frequency. They can generate IRQs on underflow as can a raster register on equality with the current scan line. The chip also contains an I/O port, which is used on the Plus/4 and 16 to scan the keyboard and joystick. In addition, it handles bank switching, used by the operating system to maximize the amount of RAM available to Commodore BASIC.

TED has a higher priority on DRAM access than the CPU. Thus in the borders the CPU is able to run at full speed, but in the active display area it is throttled down to half the clock rate. An undesirable feature of the chip is its well-known tendency to destroy itself through overheating. To preserve a computer which employs this chip in working order, it is recommended to improve its cooling.

As TED chips are not produced anymore, its internal architecture has been investigated and replicated by Hungarian developer Istvan Hegedus using verilog HDL in a project called FPGATED. The source code of this project has been made open source which lead to a C16 implementation on the MisTer platform and a working prototype drop-in chip replacement by the original code developer.

There is another TED replacement in development based on the original source code by the "ThED project".