VIS, Video Interface System
The TMC-600 uses the RCA-CDP1869 and CDP1870 Video Interface System (VIS), consisting of the CDP1869 address and sound generator and the CDP1870 colour video generator. Not all details of these two chips are described here but can be found in the data sheets available on the COMX Club ppages
The VIS is using 2 CDP 1802 output instructions, OUT 7 to select the register and OUT 5 for actual data output. Note that for VIS register 4, 5, 6 and 7 the CDP1802 address lines are used and NOT the data bus. For VIS register 2 and 3 the data bus is used.
Video Memory and resolution
Connected to the CDP1869/1870 the TMC-600 has 1KB page RAM, 1024*4 bit colour RAM and 4KB character ROM.
The page RAM stores the ASCII code for each character position on the screen. The screen has 960 characters where position 0 (left top corner) can be accessed by memory location @F800 (before scrolling).
The character ROM stores the character definition for each of the 256 characters (6x9 pixels) and can be read via memory location @F400-@F7FF. Character memory can be accessed via different methods see also the VIS data sheet.
The colour RAM stores the colour definition and blink status. Colour definitions (bit 0 - 2): 0 = black, 1 = green, 2 = blue, 3 = cyan, 4 = red, 5 = yellow, 6 = magenta, 7 = white, Blink status (bit 3) indicates if a character is 'blinking' or not. Each location on the screen (in page RAM) has a equivalent colour/blink definition (4 bits in colour RAM).
Only 6 bits of the character ROM are used for the 6 pixels on the screen. Each character can be shown in the above 8 different colours. The colour RAM is written with the value of VIS register 2 when a character is placed in the page RAM. A total of 8 background colours are available, defined for the whole screen.
The screen is build up of 40 columns x 24 lines, alternatively the width and/or height of the characters can be doubled to generate 20x24, 40x12 or 20x12 all using a lower screen resolution. BASIC supports 20x12 by using statement RES 1.
Timing
The VIS runs on 5.626 MHz. This frequency is divided by 2 and output via the CPUCLK (pin 38), this could be used for timing of the CPU (2.813 MHz) but as far as I understand is NOT done in the TMC-600. Instead the TMC-600 runs on 3.579 MHz but it is not clear to me from where this frequency is derived. The VIS is also responsible for the timing of the non display period via PREDISPLAY (pin 1). Video memory can only be accessed during the non display period which allows for execution of 2160 machine cycles based on a CPU running on 2.813 MHz and VIS running on 5.626 MHz. Any program need to be paused by waiting for a non display period (by checking EF1) before accessing the video memory.