Alles rund um 8 bit und 9 Nadeln

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.

[ICO]NameLast modifiedSizeDescription

[DIR]KC87/2013-03-17 13:43 -  
[DIR]K6320/2025-10-06 12:16 - Erweiterungsmodule für robotron-Drucker
[DIR]K6328/2025-10-06 12:19 - Erweiterungsmodule für robotron-Drucker
[DIR]Bildschirmspiel/2009-06-10 11:44 - Schaltplan sowie RGB-Buchse
[DIR]KC85/2017-06-01 11:12 - Schaltpläne DDR-Kleincomputer
[TXT]ATF22V10C Programming Algorithm.htm2025-09-24 13:00 18KATF22V10C Programming Algorithm
[   ]Eproms.zip2021-06-01 01:43 554KAlles zusammen
[IMG]SIP-Modul.gif2004-05-11 15:17 15KSchaltplan

Sonstiges, nicht in Unterverzeichnissen

Vollgrafischer Bildwiederholspeicher

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:

Der Baustein der Wahl waren zwei 74LS193 (synchron) für den Pixel- und Spaltenzähler sowie zwei 74LS93 (asynchron) für den Zeilenzähler; zwei 74LS74 für das jeweils neunte Bit. Zur Ausdekodierung diente damals ein Rudel Grundgatter (74LS00, 74LS30 u.ä.), im KC85/4 ein kleiner ROM. Nahezu perfekt lassen sich Zähler und Ausdekodierung durch drei ATF22V10 erschlagen.

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.

RAS CAS A[0..7] DI CPU DO C F P
Viel besser geht's nicht: Flackerfreier Zugriff auf Pixel- und Farbbyte mit 200-ns-dRAM sowie CPU-Zugriff

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 RAS-Adresse einmal innerhalb von 2 ms drankommt.

Als RAS-Adresse kommen nur die fünf Horizontal-Adressbits h0 .. h4 sowie die vier Vertikal-Adressbits v0 .. v3 infrage; die Vertikal-Adressbits v4 .. v7 sind zu langsam (> 2 ms Periodendauer). Um den RAM-Verbrauch des Farbspeichers zu senken, wurden so viel wie möglich Farben vertikal zusammengefasst! Für 7 RAS-Adressbits konnten dadurch nur v0 .. v1 weggelassen werden. Dadurch ergibt sich zwangsweise die Farbzuordnung von 8×4 Pixeln beim KC85/3, sowie einen Speicherbedarf von 10 K + 2,5 K = 12,5 K = 0x8000-0xB1FF. Möglich wäre auch das Weglassen nur von v0 mit einer resultierenden Farbzuordnung von 8×2 Pixeln und einer Größe des Bildwiederholspeichers von 10 K + 5 K = 15 K = 0x8000-0xBBFF.

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:

BereichA13A12A11A10A9A8A7A6A5A4A3A2A1A0Bereich
Pixel links0v7v6v5v4v1v0v3v2h4h3h2h1h00x8000 .. 0x9FFF (8 KByte)
Farbe links101v7v6v5v40xA800 .. 0xAFFF (2 KByte)
Pixel rechts100v7v6v1v0v3v2v5v4h2h1h00xA000 .. 0xA7FF (2 KByte)
Farbe rechts110 0 0v7v60xB000 .. 0xB1FF (0,5 KByte)
frei11yyyxxxxxxxxx0xB200 ..0xBFFF (3,5 KByte)
Adresszuordnung im IRM (U256) des KC85/3

Wie man sieht ist die RAS-Adresse gleich A6..A0. Für die Pixel sind zwei Verschiebungen erforderlich. Unglücklich. Besser wäre wohl:

BereichA13A12A11A10A9A8A7A6A5A4A3A2A1A0Bereich
Pixel links0v1v0v7v6v5v4v3v2h4h3h2h1h00x8000 .. 0x9FFF (8 KByte)
Farbe links1010xA800 .. 0xAFFF (2 KByte)
Pixel rechts100v1v0v7v6v5v4v3v2h2h1h00xA000 .. 0xA7FF (2 KByte)
Farbe rechts110 0 00xB000 .. 0xB1FF (0,5 KByte)
frei11yyyxxxxxxxxx0xB200 ..0xBFFF (3,5 KByte)
Bessere Adresszuordnung durch Tausch der CPU-seitigen Adressen am Multiplexer

Für mehr vertikale Farbauflösung (15 KByte genutzt), reicht dann nicht mehr für den (fragwürdigen) ASCII-Puffer:

BereichA13A12A11A10A9A8A7A6A5A4A3A2A1A0Bereich
Pixel links0v0h4h3h2h1h0v7v6v5v4v3v2v10x8000 .. 0x9FFF (8 KByte)
Farbe links10h4h3h2h1h0v7v6v5v4v3v2v10xA000 .. 0xAFFF (4 KByte)
Pixel rechts110v0h2h1h0v7v6v5v4v3v2v10xB000 .. 0xB7FF (2 KByte)
Farbe rechts111 0h2h1h0v7v6v5v4v3v2v10xB800 .. 0xBBFF (1 KByte)
frei1111xxxxxxxxxx0xBC00 ..0xBFFF (1 KByte)
Adresszuordnung für 8×2-Farbklötzchen und 8-Bit-Refresh (nee!!)

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.

BereichA13A12A11A10A9A8A7A6A5A4A3A2A1A0Adressen
Pixel linksh4h3h2h1h0v7v6v5v4v3v2v1v00gerade (modulo 2 Rest 0) (8 KByte)
Farbe links01modulo 4 Rest 1 (4 KByte)
Pixel rechtsh2h1h0v7v6v5v4v3v2v1v0011modulo 8 Rest 3 (2 KByte)
Farbe rechts1modulo 8 Rest 7 (2 KByte)
Verrückte Adresszuordnung

Die 16-Bit-Linksschiebeoperationen lassen sich ganz gut mit ADD HL,HL (11 Takte) bewerkstelligen.