Die GIF-Schaltpläne haben 16 Graustufen, erforderlich wegen der schlechten Vorlagen.
Die Schaltpläne liegen in zwei Auflösungen vor, in 75 dpi für den Bildschirm (der auch ca. 75 dpi hat), und in 150 dpi für den Drucker (der zum korrekten Aufrastern der Grauwerte 600 dpi braucht). Fast alle haben so exaktes A4-Format, und davon die meisten Querformat.
| Name | Last modified | Size | Description | |
|---|---|---|---|---|
| Bildschirmspiel/ | 2009-06-10 11:44 | - | Schaltplan sowie RGB-Buchse | |
| K6320/ | 2025-10-06 12:16 | - | Erweiterungsmodule für robotron-Drucker | |
| K6328/ | 2025-10-06 12:19 | - | Erweiterungsmodule für robotron-Drucker | |
| KC85/ | 2017-06-01 11:12 | - | Schaltpläne DDR-Kleincomputer | |
| KC87/ | 2013-03-17 13:43 | - | ||
| ATF22V10C Programming Algorithm.htm | 2025-09-24 13:00 | 18K | ATF22V10C Programming Algorithm | |
| Eproms.zip | 2021-06-01 01:43 | 554K | Alles zusammen | |
| SIP-Modul.gif | 2004-05-11 15:17 | 15K | Schaltplan | |
Implementierung: Für quadratische Pixel auf einem konventionellen Fernseher (BAS oder RGB via Scart) benötigt man etwa 7 MHz Pixeltakt sowie (unter Vermeidung von Zeilensprung) reichlich 200 Zeilen. Während (für 1 Bit pro Pixel) 8 KByte für 320×200 Pixel genügen, erschwert sich die Ansteuerung wegen eines zweiten Adresszählers. Für 320×256 Pixel (KC85-Bild) werden 10 KByte benötigt. Die Farbauflösung darf kleiner ausfallen. So verwendet der KC85/3 eine Farbzuordnung für 8×4 Pixel = 2,5 KByte, der KC85/4 eine von 8×1 Pixel = 10 KByte. Letzteres ist mit (damals üppigen) 64-KByte-RAM-Chips verbunden und ermöglicht alternativ eine 2-Bit-pro-Pixel-Farbdarstellung. Üblicherweise wird dynamischer RAM (dRAM) verwendet.
Adresszähler: Ausgehend von einem 7-MHz-Takt für einigermaßen quadratische Pixel benötigt man:
Multiplexer: Für den dRAM benötigt man einen Adressmultiplexer mit typisch 4 Eingängen:
Der Baustein der Wahl waren vier(!) 74LS153, heute 74HC153. Anders als beim normalen dRAM, der zwei 74LS157 benötigte.
Zugriffsregime:
Für einen flackerfreien und waitstate-armen Zugriff benötigt man ein
ausgeknobeltes Zeitregime für den Zugriff.
Der damals übliche „schnelle“ dRAM U2164-20 mit 200 ns Zugriffszeit
lässt sich im Pixeltakt unter Verwendung des schnellen Page-Mode-Read erschlagen.
Optimieren lässt sich hier nur tRLCL (45 ns) zu halbieren.
Der eigentliche Knackpunkt für mehr als 2 Bit pro Pixel sind tCHCL (80 ns)
und tCLCH (120 ns) im Page-Mode-Read.
Oben im Diagramm beträgt die Bitzeit (Slotzeit) rund 140 ns.
Waitstates für den CPU-Zugriff ergeben sich:
Das Refresh erledigt sich von selbst durch das zyklische Auslesen,
nur die Adressen muss man dazu geschickt verteilen,
damit jede
Als
Die chaotische Pixeladressierung des HC900 bzw. KC85/3 ist unvermeidlich: Die „angenehme“ Adressierung beim KC85/4 ist nur mit einer Farbzuordnung von 8×1 Pixeln realisierbar und erfordert 64-KBit-Chips oder (damals unbezahlbar) zwei parallele 16-KByte-Bänke. Allerdings ließe sich der Grad des Chaos verringern durch:
Erfordert Umverdrahtung der Multiplexer-Steuerung und macht den KC85/3 (für Spiele) inkompatibel.
Zur Erinnerung: Die Byteadresse war wie folgt:
| Bereich | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | Bereich |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pixel links | 0 | v7 | v6 | v5 | v4 | v1 | v0 | v3 | v2 | h4 | h3 | h2 | h1 | h0 | 0x8000 .. 0x9FFF (8 KByte) |
| Farbe links | 1 | 0 | 1 | v7 | v6 | v5 | v4 | 0xA800 .. 0xAFFF (2 KByte) | |||||||
| Pixel rechts | 1 | 0 | 0 | v7 | v6 | v1 | v0 | v3 | v2 | v5 | v4 | h2 | h1 | h0 | 0xA000 .. 0xA7FF (2 KByte) |
| Farbe rechts | 1 | 1 | 0 | 0 | 0 | v7 | v6 | 0xB000 .. 0xB1FF (0,5 KByte) | |||||||
| frei | 1 | 1 | y | y | y | x | x | x | x | x | x | x | x | x | 0xB200 ..0xBFFF (3,5 KByte)
|
Wie man sieht ist die
| Bereich | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | Bereich |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pixel links | 0 | v1 | v0 | v7 | v6 | v5 | v4 | v3 | v2 | h4 | h3 | h2 | h1 | h0 | 0x8000 .. 0x9FFF (8 KByte) |
| Farbe links | 1 | 0 | 1 | 0xA800 .. 0xAFFF (2 KByte) | |||||||||||
| Pixel rechts | 1 | 0 | 0 | v1 | v0 | v7 | v6 | v5 | v4 | v3 | v2 | h2 | h1 | h0 | 0xA000 .. 0xA7FF (2 KByte) |
| Farbe rechts | 1 | 1 | 0 | 0 | 0 | 0xB000 .. 0xB1FF (0,5 KByte) | |||||||||
| frei | 1 | 1 | y | y | y | x | x | x | x | x | x | x | x | x | 0xB200 ..0xBFFF (3,5 KByte)
|
Für mehr vertikale Farbauflösung (15 KByte genutzt), reicht dann nicht mehr für den (fragwürdigen) ASCII-Puffer:
| Bereich | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | Bereich |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pixel links | 0 | v0 | h4 | h3 | h2 | h1 | h0 | v7 | v6 | v5 | v4 | v3 | v2 | v1 | 0x8000 .. 0x9FFF (8 KByte) |
| Farbe links | 1 | 0 | h4 | h3 | h2 | h1 | h0 | v7 | v6 | v5 | v4 | v3 | v2 | v1 | 0xA000 .. 0xAFFF (4 KByte) |
| Pixel rechts | 1 | 1 | 0 | v0 | h2 | h1 | h0 | v7 | v6 | v5 | v4 | v3 | v2 | v1 | 0xB000 .. 0xB7FF (2 KByte) |
| Farbe rechts | 1 | 1 | 1 | 0 | h2 | h1 | h0 | v7 | v6 | v5 | v4 | v3 | v2 | v1 | 0xB800 .. 0xBBFF (1 KByte) |
| frei | 1 | 1 | 1 | 1 | x | x | x | x | x | x | x | x | x | x | 0xBC00 ..0xBFFF (1 KByte)
|
Wie man's auch dreht, für die unteren Vertikalbits muss man eine Extrawurst braten.
Etwa srl h; rr l; jrnc 1f; set h,4; 1: (≈ 35 Takte).
Es sei denn, man lässt eine „löchrige“ IRM-Adressierung sowie nur rechts eine Farbauflösung von 8×1 zu.
Der RAM wird komplett aufgebraucht.
| Bereich | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | Adressen |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pixel links | h4 | h3 | h2 | h1 | h0 | v7 | v6 | v5 | v4 | v3 | v2 | v1 | v0 | 0 | gerade (modulo 2 Rest 0) (8 KByte) |
| Farbe links | 0 | 1 | modulo 4 Rest 1 (4 KByte) | ||||||||||||
| Pixel rechts | h2 | h1 | h0 | v7 | v6 | v5 | v4 | v3 | v2 | v1 | v0 | 0 | 1 | 1 | modulo 8 Rest 3 (2 KByte) |
| Farbe rechts | 1 | modulo 8 Rest 7 (2 KByte)
|
Die 16-Bit-Linksschiebeoperationen lassen sich ganz gut mit ADD HL,HL (11 Takte) bewerkstelligen.