KC 85

The KC 85 ('KC' meaning "Kleincomputer", or "small computer") were models of microcomputers built in East Germany, first in 1984 by VEB Robotron (the KC 85/1) and later by VEB Mikroelektronik "Wilhelm Pieck" Mühlhausen (KC 85/2, KC 85/3 and KC 85/4).
Due to huge demand by industrial, educational as well as military institutions, KC 85 systems were virtually unavailable for sale to private customers.
Technical information.
They were based on the U880 CPU (an East German clone of the Z80), with clock speeds of 1.75 and 2 MHz.
There were two main lines in the KC 85 series, the KC 85/2 (project name "HC 900") to /4 and the KC 85/1 (project name "Z 9001") by Robotron, which was a different system (only the CPU and the name were the same, but later the format of saving the programs on tape cassettes and the BASIC were also made compatible). In 1989, VEB Mikroelektronik Mühlhausen came up with the KC compact, but due to the GDR collapse very few units were actually produced and sold and—being a CPC clone—it was a KC in name only; thus it is usually not counted among the KC family.
Unlike the Pravetz series 8 personal computers, manufactured in Bulgaria, which were equipped with dedicated displays, floppy discs and good quality keyboards, the entire series used a TV set as display (by standard TV-UHF via coaxial cable, composite video, or RGB) and a standard tape recorder as data storage. 
The KC 85/1 used an integrated calculator-style keyboard with small "keys" of hard plastics, while KC 85/2-4 used a separate keyboard driven by a remote control IC.
The KC 85/2 was the first computer made in Mühlhausen and had only font ROMs for capital letters, and no BASIC in ROM. Later, the KC 85/3 was introduced and this one had a BASIC interpreter in ROM, freeing the user from having to load the BASIC interpreter from a cassette every time. Both systems typically had 16 KB of RAM, but could be expanded with add-on modules. (The module sockets feature prominently on photos, as they occupy the upper 50% of the casing.)
The KC 85/4 had 64 KB of RAM (not counting the video ram of more than 40 KB) and better graphics capabilities. In fact the KC85/2 and KC85/3 were practically indistinguishable in board design except for a different ROM. The KC85/4 board was redesigned, but featured the same digital-to-analog video PCB as the previous generation.
All KC-series computers from Mühlhausen were capable of displaying graphics at a resolution of 320×256 pixels. But the color possibilities were limited (each 4×8-pixel cell had a single foreground (out of 16) and background color (out of 8, slightly darker than foreground equivalents). 
This limitation was brought down to 1×8 on the KC 85/4, which also featured a video RAM addressing mode and a special 4-color (black, white, red, cyan) mode which could color every pixel independently. The colors were not paletted in any KC before the KC compact. There was no "text mode", everything had to be painted; this combined with the video RAM layout described above and ROM code made the KC 85/2-3 rather slow at printing and scrolling (improved very much on KC 85/4). There were no blitters, and the video subsystem was developed in-house and implemented entirely with a few dozen 7400 series ICs (the KC compact used a 6845 as the CPC did). With the KC85/2 and KC85/3 CPU access to video memory would interfere with screen redraw and cause visual distortions as pixel data could not be read from VRAM and the previously loaded pixel was simply drawn again. This issue was fixed in the KC85/4 too - one video period of 8 horizontal pixels is divided evenly into 3 phases: (1) an 8 bit wide CPU access (r/w), (2) fetch 8 bits of pixel data and (3) fetch 8 bits of color data. The KC85/4 was also the first capable of switching between 2 independent locations in video ram, allowing double buffering.
Sound and tape output was implemented by CTC channels driving flipflops to generate square waves. A 0 was represented by one period of a 2400Hz tone, a 1 by a 1200Hz tone. There was also a sync tone of 600Hz prefixing each 8 bit byte. The signal from the tape was read back, passed through a band pass filter and an interrupt would be generated each time the audio signal crossed the 0V base line.
Data was stored on tape in blocks of 128 byte. Each block was prefixed by brief silence and a
series of 1 bits. Approximately 8000 (7 seconds) for the first block and 160 (133 msec) for each
subsequent block. Following that was the 1 byte block number, 128 data bytes and 1 byte checksum.
The tape could be rewound in case a block was not read correctly and loading would continue at
that block offset. The first block of the file contained metadata: filename, file type, load address,
entry point address and so forth.
Memory bank-switching was common since the total address space was only 64 KB. When running Mühlhausen's BASIC, the video RAM (at 0x8000) was banked in only during video operations, thus the maximum BASIC free RAM was about 47 KB instead of 32 KB. The module extension system also used bank-switching and made it theoretically possible to extend to megabytes of RAM (even more modules could be used by adding expansion devices, yielding sort of a tower), however neither BASIC nor most of the applications were prepared to use this as free space.
The keyboard of the KC85/2-4 was based on the U807D, a clone of the Mullard SAB3021 used in TV infrared remote controls. The U807D scanned the 63 regular keys with its 8+8 drive/sense pins and produced a 7 bit pulse width modulated signal (0: 5ms, 1: 7ms). The main computer would detect the presence of pulse delineating bursts (150us) and generate interrupts. The main CPU would thus be interrupted 7 times for each keystroke and could measure the time between the interrupts to recover the serial data word. A special shift key made the U807D produce keycodes 64-127. To the computer the keyboard appeared as a device with 126 keys.
The KC 87 was a better KC 85/1 with BASIC also in ROM. There was a color option (the 85/1 was only monochrome), but no real graphics apart from ROM pseudographic characters.
The wiring diagrams are freely available and there were also a lot of different (and often home-made) schemes and hardware parts. Various magazines published programs and hardware diagrams and also instructions on how to build them.
Programming languages.
The KC 85 could be programmed in assembly language and BASIC (the KC 85/2 had to load BASIC from tape), but it was possible to use various modules (sold by VEB Mikroelektronik Mühlhausen) or load software from tape, thus allowing programming in Forth and Pascal. The operating system was CAOS ("Cassette Aided Operating System"). It was a simple monitor where one could run different "system services" like LOAD (load a program), JUMP (into extension module ROM), MODIFY (memory cells) or BASIC (if it had been built into the ROM or had been loaded from tape). New commands could be added to the menu by magic numbers (standard: codice_1) anywhere in the memory space.
In the last years of the GDR, a floppy attachment ("tower"-style, too) was produced. It featured a 4 MHz CPU and a 5¼" Floppy drive (you could have up to four of them). These (literally: the U 880 A in the attachment did) were able to run CP/M, which was called MicroDOS. (One had to JUMP from the base system to the floppy system and boot from a floppy—another CAOS or MicroDOS). There was also a disk extension mode for CAOS.
Hobby projects.
There were a lot of different projects for the KC 85: