Beiträge von Gnatz

    Hallo "Otto",

    Und den CP3F Befehl "dar" (bei dir ADR / 1110 RRRR) habe ich zugegeben noch nicht 100% verstanden ...

    zu dieser Fragestellung arbeite ich derzeit noch an einer möglichst umfassenden Erklärung. Die Schwierigkeit dabei ist, dass es schon bei der binären Subtraktion mehrere Möglichkeiten der Komplementbildung gibt. Beim Einerkomplement werden die Bits einfach invertiert und das höchste Bit gilt als Vorzeichen mit dem Nachteil, dass es dann eine positive und eine negative Null gibt. Der Telefunken Großrechner TR440 rechnete mit dieser Komplementdarstellung. Das ermöglichte es, dass er bei bestimmten Anwendungen deutlich schneller als vergleichbare Rechner war, da man den Betrag einer Zahl besonders einfach ermitteln konnte (Sign-und Magnitude in der Zahlendarstellung getrennt voneinander).
    Durchgesetzt hat sich das Rechnen mit dem Zweierkomplement. Dadurch, dass es hier nur eine Null gibt, ist der Wert der negativen Zahlen um eine Zahl größer (positive Zahlen von 0 bis 127, negative von -1 bis -128). Will man hier subtrahieren, muss man für den Subtrahenten den Carry setzen (bei der Addition löschen) und die Zahlen invertieren. Das geht auch bei der BCD-Subtraktion sehr ähnlich. Durch das Invertieren erfolgt die Verschiebung "nach oben", die bei der Addition durch das Addieren von Hex 66 gemacht wurde, automatisch (aus einer Null wird HexF .... aus einer 9 wird Hex6). Damit klappt dann auch die Korrekturaddition beim Dezimal-Additions-Befehl abhängig vom Status des Intermediate-Carrys (zwischen den beiden im Byte abgelegen Ziffern) und dem Carry wieder.

    Beim Intel Mikroprozessor 8048 musste man das mit dem Befehl DAA (Dezimal adjust Accumulator) händisch machen. Die Beschreibung dieses Befehls hilft eventuell, die internen Abläufe des CP3F bei der Dezimaladdition zu verstehen.

    Leider ist es mit nicht gelungen, das Ganze noch verständlicher darzustellen. Ich werde mir wohl ein paar erklärende anschauliche Beispiele ausdenken müssen. Aber schnell geht das leider nicht.

    Ich habe abhängig von der jeweiligen Aufgabe auch noch bei anderen Prozessoren wahlweise im BCD-Format oder binär gerechnet und bei einigen Regelaufgaben sogar auf die Zahlendarstellung im Einerkomplement zurückgegriffen. Bei der Assemblerprogrammierung hat man da ja alle Möglichkeiten.

    Viele Grüße
    Günter

    Bei Rechner mit dem CP3F bestand der Nachteil, dass der CP3F keinen Timer und auch keine Interruptmöglichkeit hatte. Da der Multiplex der Anzeigen und der Tastenabfrage (mit Entprellzeit) per Software gemacht wurde, mussten die einzelnen Programmteile genau definierte Zeiten einhalten (notfalls wurden Dummy-Befehle zum Zeitausgleich eingeführt). Deshalb war es hier sinnvoll, immer über die volle Stellenzahl BCD zu rechnen. Da nun aber beispielsweise die Rechnung 8+3 den Zahlenbereich 0 bis 9 überschreiten würde ohne einen Überlauf in die nächste Stelle zu erzeugen, wurde folgende Sequenz verwendet:

    LTK x Anwahl 1. Summand
    LAR * lade Akku mit einer der Zahlen (enthält 2 Ziffern)
    ABL Hex'66' damit wird die Zahl an die Grenze des Aussteuerbereichs geschoben, aus 0 wird 6 ... und 9 wird Hex 'F'
    LTK y Anwahl 2. Summand
    ADR * 2. Zahl dazuaddieren
    Das Ergebnis ist jetzt im Akku, der Überlauf ist für den Übergang auf die nächsten 2 Ziffern gesetzt,
    die ggf. notwendige Korrekturaddition von Hex'A' (um die 6 aus dem ABL-Befehl zu kompensieren,
    macht der ABL-Befehl automatisch abhängig vom Carry und dem Intermediate Carry (zwischen den beiden
    Ziffern der Zahl).
    Das Ergebnis noch speichern - wohin auch immer es gewünscht wird.

    Zur Frage der BCD-Rechnung: Ich habe bei allen meinen verschiedenen Prozessoren die Eingabe ins Binärformat gewandelt, dort binär gerechnet und das Ergebnis für die Anzeige zurückgewandelt. Das macht es einfacher. Die CP3-F kann (wie auch andere Prozessoren) auch im BCD-Zahlenraum rechnen, aber das ist sehr mühsam und benötigt viel mehr Programmplatz.

    Der CP1-F war ein etwas besserer Rechnerchip mit einer rudimentären Programmierbarkeit. Einen CP2-F gab es nach meinen Informationen nicht. Dafür kam der CP3-F, der ein echter Mikroprozessor war.

    Dass Prof. Varchmin gestorben ist, tut mir echt leid. Das war ein sehr netter Mensch. Fachliche Kompetenz haben viele, aber er verband sie mit Hilfsbereitschaft (und nötigenfalls Geduld). Seine Studenten haben Glück gehabt, ihn kennenzulernen.

    Hallo "Otto",

    Du hast die Benutzung des Z-Registers genau verstanden. Aber noch ein Hinweis: Wenn das Z-Register geladen wurde, führt natürlich jeder Unterprogrammsprung - egal aus welcher Ebene - dazu, dass der Registerinhalt verloren geht. Man musste also bei der Programmerstellung die Register im Hinterkopf behalten - und das übrigens auch bei dem F8-Mikroprozessor von Faichild. Deshalb mochte ich die Assembler-Programmierung. Da hatte man alle Register im Zugriff und konnte Impulse mikrosekundengenau ausgeben (wenn man Interrupts gesperrt hat).

    Bei der objektorientierten Programmierung hat man noch nicht einmal mehr Kontrolle darüber, welches Objekt in welcher Reihenfolge abgearbeitet wird. Bei unserer TomTom-Navi wird bei schneller Fahrt die Entfernung zu Kreuzungen oft ungenau angegeben. Wenn man dann langsamer wird, stimmt die Entfernung wieder. Da kommen sich halt die einzelnen Objekte für Positionsbestimmung, Mapmatching, Erzeugung der Fahrempfehlung und deren Ausgabe in die Quere und man merkt die Task-Umschaltzeiten des Betriebssystems. Und das ist nicht die einzige Falle bei der objektorientierten Programmierung. Bei embedded-Systemen mit begrenztem RAM, wird dieses (ähnlich wie eine Festplatte) fragmentiert. Wenn dann das Betriebssystem wegen hoher Systemauslastung das Defragmentieren nicht mehr schafft, scheitert der Aufruf eines großen Objektes daran, dass nicht genügend zusammenhängender Speicher mehr vorhanden ist. Es gibt dann eine Exception - oftmals ein Reboot. Das habe ich mal selbst erlebt, als eine mit modernsten Programmiermethoden vertraute Gruppe uns "Alten" mal zeigen wollte, wie man richtig programmiert. Das Programm lief etwa 45 Minuten, dann kam ein Absturz gefolgt von einem Neustart und das Spiel wiederholte sich. Mein (richtiger) Hinweis auf die mögliche Ursache wurde abgetan nach dem Motto: "Wir haben schon so viel objektorientiert programmiert und wissen genau, wie man das macht." Sie kriegten das Gerät nicht zum Laufen und der Kunde zog seinen Auftrag zurück. Arroganz und Ignoranz gehen oft Hand in Hand. In seinem Buch "Inside C#" (Microsoft Press) beschrieb Tom Archer später genau dieses Problem bei objektorientierter Programmierung von embedded Systemen.....

    Viele Grüße
    Günter

    Hallo "otto",

    ich habe die Abläufe mal etwas breiter (für eventuell andere Interssierte) dargestellt. Hier mein Text:

    Ich musste tief in alten Unterlagen (und meinem Gedächtnis) kramen, um mehr über die Datenablage bei dem CP3F Mikroprozessor herauszufinden. Hier ein Überblick: Ich verwende die damalige Zählweise 1 bis 8 für die Benennung der einzelnen Bits eines Bytes (heute ist 0 bis 7 entsprechend der Wertigkeit üblicher). Auch nutze ich die deutschen Bezeichnungen für die Befehle und Bausteine (SGS und General Instruments haben dafür teilweise in ihren Datenblättern englischsprachige Begriffe eingeführt).

    Der Adressumfang des CP3F war 16KByte groß entsprechend 14 Adressbits. In jedem Systembaustein waren der Programmzähler Q, der Stack mit den Rückkehradressen RA und RB und das Datenregister Z enthalten. Bei einem Unterprogrammaufruf wurden die Adressen wie folgt abgelegt: RB -> Z, RA -> RB, Q -> RA. Dann wurde das Adressregister Q mit der Sprungadresse geladen. Der Befehl SUP (Sprung ins Unterprogramm) führte somit zum Verlust des Inhaltes des Datenregisters Z. Beim Rücksprungbefehl RSP war der Ablauf in umgekehrter Richtung RA -> Q, RB -> RA, Z -> RB.

    Der Adressbereich war in Blöcke der Größe 2KByte aufgeteilt und umfasste 8 Blöcke. Der Adressbus der RSE (Rechensteuereinheit = CPU) war 6 Bit breit, die obersten 3 Bit betrafen die Auswahl des jeweiligen Blocks, die unteren 3 Bit entsprachen den oberen 3 Bit der Adressierung in dem jeweiligen 2K Block. Das ist wichtig, um die RAM- und Tabellenadressierung zu verstehen.

    Im internen Arbeitsspeicher der RSE waren 2 Register für die Adressierung von besonderer Bedeutung. Es waren das Y-Register (Adresse 15) und das X-Register (Adresse 14). Die unteren 6 Bit dieser Register wurden für die Adressierung der externen Bausteine benötigt, die höheren der 6 Bit für die Blockauswahl und die unteren 3 Bit für die Adressierung einer der 8 je 256 Byte großen Pages im 2K Block. Die Adressierung innerhalb der Page erfolgte über die unteren 8 Bit des Z-Registers, die mit den Befehlen SZX oder SZY geladen wurden (je nach Befehl erfolgte die Auswahl des jeweiligen Z-Registers über das X bzw. Y Register).

    Der Befehlsablauf für einen Datenzugriff war folgendermaßen:

    LTK1, LSK6 (oder LSK7). Damit wurde das X- (oder Y-) Register ausgewählt.>

    LAL Wert, der in das Register für die Adressierung geschrieben werden sollte

    SZX (SZY) der Wert (untere 8 Adressbits) wird in das Z-Register geladen

    mit den Befehlen LIX (LIY) wird ein Datenbyte aus dem Speicher in den Akku geladen oder

    mit dem Befehl SIX wird der Akkuinhalt in das RAM gespeichert.

    Das Y-Register muss dabei mit Vorsicht benutzt werden, da die Bits 4 bis 6 für die Auswahl des jeweiligen 2K Blockes bei einigen Sprüngen genutzt wird und so eventuell falsch gesprungen wird, wenn das Y-Register für einen Datenzugriff genutzt werden soll. Deshalb wurde der Befehl LIY meist genutzt, um Tabellen im Programm-ROM auszulesen und so macht naturgemäß auch ein möglicher Befehl SIY (speichern ins ROM) wenig Sinn.

    Wie du siehst, habe ich den Befehl "SAX" nicht genutzt, weil der mir gerade nicht "über den Weg gelaufen" war. Es gibt halt mehrere Möglichkeiten, den Zugriff zu gestalten.

    Das Z-Register selbst kann man (nach meiner Erinnerung) nicht lesen, ebenso wie die unteren Bits des aktuellen Programmcounters. Man sollte den Inhalt deshalb vor dem Setzen als Kopie in einer der RAM-Zellen in der CPU ablegen. Aber ich werde da noch einmal nach Ostern nachforschen. So allmählich macht mir der CP3F-Prozessor wieder richtig Spaß. Ich kenne ja auch einige Erweiterungstricks, mit denen man den so richtig "aufblasen" kann. Im Konzept war ja viel mehr angedacht, was aber damals in den Chips (noch) nicht untergebracht werden konnte. Und weil die Konzernmutter AEG damals in finanzielle Schieflage gekommen war, fehlt das Geld für diese Weiterentwicklungen.

    Ich wünsche dir und allen anderen Lesern frohe Ostern.

    Günter

    Da war mal was, ist aber sehr lange her. Vom System her war anfangs nur eine "DSE" 128 Byte RAM und 1 I/O_Port geplant. (Das System war ja für "Calculator-Printer" geplant. Dann kamen schon nach kurzer Zeit noch elektronische Schreibmaschinen und wenig später Textautomaten dazu. Damit stieg der RAM-Bedarf. Ich selbst habe am Konzept einer DSE2 mit 4K RAM mitentwickelt. Das waren aber nur Arbeitsspeicher für die Ablage von Daten - nicht von Programmcode. Weil aber das Brennen vom PROMs bei der Softwareentwicklung zu ömmelig wurde, haben wir mit relativ wenig externer Logik es geschafft, ein RAM als Datenspeicher in 256-Byte Blöcken (wegen des 8 Bit Adressregisters) zu beschreiben, 8 Blöcke davon dann aber als den typischen 2KByte Programmcode ablaufen zu lassen. Mal sehen, was ich davon immer noch an Unterlagen habe - dauert aber einige Zeit. Ich war garnicht lange bei Olympia, aber damals ging die Weiterentwicklung rasant voran und aus dem einfachen System wurde schon bald eine Rechnerarchitektur, was anfangs so nicht geplant war. Die Firma Pantron Instruments in Braunschweig hatte damals sogar auf dem CP3F ein eigenes Entwicklungssystem auch für externe Kunden geschrieben. Die Programmentwicklung bei Olympia lief dagegen auf einem IBM /370 Großrechner und nur der HEX-Code wurde in die RAMs der Entwicklungsboards heruntergeladen oder in PROMs gebrannt.

    Gruß Günter

    Naja die Bauteile findest du immer noch einzeln in jedem Gerät. Die ersten 3 in jedem Netzteil, Hallsensoren z.B. beim Zuklappen des Laptops

    In der Lehre werden diese Bauteile aber ziemlich vernachlässigt. Schon wie ein Transistor aufgebaut ist und funktioniert, ist vielen Studenten auch am Ende des Studiums noch fremd. Wie man Temperaturen über die Dioden-Schwellspannung (Band-Gap-Referenz) messen kann, übersteigt die Vorstellung der Meisten (wird aber in den meisten CPUs so gemacht). Hall-Bausteine ermöglichen auf einfachste Weise eine analoge Mulitplikation, was sehr verschiedene Anwendungsmöglichkeiten erschließt. So kann einfach eine Wirkleistungsmessung realisiert werden (die Hallspannung ist das Produkt aus dem Strom durch das Element und dem Magnetfeld dem das Element ausgesetzt wird). Der Strom durch das Hallelement wird von der Spannung erzeugt und der Strom durch den Verbraucher wird durch eine Spule geleitet und erzeugt das Magnetfeld.

    Dieses Wissen wird nur wenigen Studenten vermittelt. Hinzu kommt, dass Hall-Plättchen ohne Elektronik praktisch nicht mehr erhältlich sind (gab es vor etlichen Jahren von Siemens). So kann man den Hall-Effekt kaum noch vorführen.

    Übrigens kann man mit einem Hallplättchen einen simplen Amplitudenmodulator (mit unterdrücktem Träger) aufbauen. Der Steuerstrom durch das Plättchen ist die Trägerfrequenz und die Modulation wird über eine Spule auf das Plättchen gegeben. Der Innenwiderstand des Plättchens hat etwa die Größe des Wellenwiderstandes einer Antenne. Will man auch den Träger dabei haben, kann man die Trägerspannung auf einen der Anschlüsse für die Hallspannung geben oder dem Magnetfeld einen Gleichanteil zufügen. Das ist Physik zum Anfassen - eine einfache Lösung ohne weitere Elektronik nur aus dem physikalischen Verständnis des Bauelements.

    Alte Technik stößt durchaus noch auf viel Interesse. So ziehen die Dampfzugfahrten im Harz und anderswo viele Touristen an und auch Windmühlen, Dampfschiffe und alte Flugzeuge werden bestaunt und bewundert. Bei meinem letzten der wiederholten Besuche im Deutschen Museum in München habe ich mir speziell die alten Werkzeugmaschinen angesehen. Es ist schon beeindruckend welche Genauigkeiten mit so "einfachen" Maschinen erzielbar sind. Auch alte Computern werden viel Aufmerksamkeit bekommen, wenn diese Besuchern leicht zugänglich sind und Fachpersonal deren Funktionsweise den Besuchern verständlich nahebringen. Das "technikum29" ist ein lobenswertes Beispiel dafür, ist aber auf Privatinitiative angewiesen. Eine größere Unterstützung durch öffentliche Stellen könnte die Bekanntheit in der "breiten Öffentlichkeit" verbessern und größere Besucherströme ermöglichen.

    Bedauerlich finde ich, dass das Arbeiten mit Einzelbauteilen wie Transistoren, Dioden, NTCs, Hallsensoren o.ä. und das Wissen um deren phasikalischen Grundlagen in der Ausbildung immer mehr in den Hintergrund tritt. Das ist Grundlagenwissen, das so verloren geht. Das Wissen um die Physik hinter diesen Bauteilen ist das Fundament, auf dem auch die modernen Bauteile basieren. Vernachlässigt man das Fundament, gerät die Stabilität des "Überbaus" leicht in Gefahr. Auch fehlen ohne bteites Grundlagenwissen die Fachleute, die später die neuen Bauteile und Technologien entwickeln können.

    1977 brachte Blaupunkt das erste "Tennis"-Videospiel auf den Markt. Beschrieben ist das im Bild 8/53 unter:

    https://www.spiegel.de/fotostrecke/vi…cke-109033.html
    Damals hatte Blaupunkt mit dem FM100-Chassis den ersten Fernsehempfänger mit Netztrennung auf den Markt gebracht, wodurch der Anschluss von externen Geräten über eine Video-/Ton-Schnittstelle problemlos möglich wurde. In dem Spiel war ein Baustein von General-Instruments (heute Microchip) verbaut, der aus dem Fernseher mit 12V versorgt wurde. So konnte das Spiel sehr preiswert hergestellt und vom Kunden einfach an den Fernseher angeschlossen werden.

    Ungefähr 2 Jahre später bot Fairchild den Fernsehherstellern eine Spielekonsole mit einsteckbaren Spielekassetten an. Die Spielesoftware lief auf einem Fairchild F8 Mikroprozessor. Damit waren neben den Ping-Pong-Spielen auch Kartenspiele, TicTacToe und andere verfügbar. Die Auswahl an Spielen war damals mangels Software noch sehr begrenzt und so wurde dieses System lediglich von SABA vertrieben.

    Der IEEE488 ist ein Bus, dessen Datenübertragung wie bei der Centronics-Druckerschnittstelle funktioniert. Deshalb kann man die Daten mit einem Centronics-Drucker "mithören". Dabei entspricht das "NRFD"-Signal (NotReadyForData) dem Busy bei Centronics, das "DAV"-Signal (DataAvailable) bei Centronics dem Datenstrobe und das "NDAC"-Signal (NotDataAccepted) dem Centronics Acknowledge. Wenn ich mich richtig erinnere, waren sogar die Pegel gleich. Will man aber den Drucker gezielt ansprechen, muss man diesem eine Adresse zuweisen und prüfen, wann diese auf dem Bus angewählt wird. Ob auf dem Bus Adressen oder Daten übertragen werden, wird mit der ATN-Leitung angezeigt. Dafür gab es sogar spezielle ICs, deren Bezeichnungen ich bei Bedarf (etwas mühsam) bei meinen Altlasten heraussuchen müsste. Ich habe die Logik aus ein paar Standard-CMOS-ICs zusammengelötet. Auch da müsste ich - ebenfalls bei Bedarf - in meinen Altlasten kramen.

    Ich war mal für den Einsatz von (zugekauften) CD-Laufwerken im KFZ zuständig. Die waren mit einem speziellen Fett geschmiert, das auch bei Kälte seine Gleiteigenschaften behielt. Ich hatte mal damit einen Fleck auf meine Kleidung gemacht, der weder mit Waschmitteln noch durch Kochen oder mit Lösungsmitteln zu entfernen war. Solche Eigenschaften haben nach meinen Erfahrungen nur Silikonfette. "Normale" Fette und Öle werden bei Kälte steif und - auch die besten - verharzen mit der Zeit.

    Mal aus eigener Erfahrung gesprochen: Ich hatte auch eine Menge alter Unterlagen eingescannt, Weil durch Vergilben des Papiers die Schrift ohnehin etwas gelitten hatte, dachte ich, dass 300 dpi viel besser als die Auflösung des Originals wäre. Das war ein Irrtum. So habe ich später das Ganze noch einmal - dieses Mal mit 600 dpi - eingescannt. Da hätte der Hinweis von fritzeflink mir eine Menge Zeit gespart.

    Außerdem hat fritzeflink ja geschrieben:
    " Sehr schön." und erst danach kam der Hinweis, dass eine noch höhere Auflösung die Nutzung noch einfacher machen würde. Als Gemecker würde ich das besonders nach meinen eigenen oben beschriebenen Erfahrungen nicht verstehen.

    Überhaupt finde ich den Ton hier im Forum sehr freundlich und hilfsbereit. Ich sehe auch oft in die Seiten von Microcontroller.net rein. Auch da werden Fragen meist sachlich kompetent und bemüht beantwortet. Daneben artet es manchmal aber auch in heftige Pöbelei aus. Das ärgert mich zwar, weil ich solchen Umgangston nicht schätze, aber es schreckt mich nicht ab, weil die echten Hilfen es wert sind, die Beiträge zu lesen und - wenn ich helfen kann - auch einige Antworten zu geben.

    Der Austausch von Wissen und Erfahrungen ist so wichtig, dass es sich lohnt, dabei nach Kräften mitzumachen.

    Der Grund für die "besseren" Masseverbindungen zum Gehäuse und die Abschirmung der Laufwerkskabel lag einzig in den strenger gewordenen EMV-Grenzwerten. Die Reserven bei den Laufzeiten wurden durch die höheren Kapazitäten sogar etwas schlechter. Das ursprüngliche Design war aber so solide, dass dadurch keine Probleme entstanden.

    Der 7 MHz Grundtakt des Apple wird durch 6 geteilt und ergibt so den CPU-Takt von etwas mehr als 1 MHz. Die Teilung durch 6 ist notwendig, um die Takte für die dynamischen RAMs zu liefern. Das RAS-(RowAdressStrobe) Signal ist einen Takt lang auf HIGH und 2 Takte lang auf LOW. Mit der negativen Flanke dieses Signals übernimmt das RAM die erste Hälfte der gemultiplexten Adresse. Das CAS-(ColumnAdressStrobe) Signal ist 2 Takte auf HIGH und 1 Takt auf LOW. Mit dessen negativer Flanke wird die zweite Hälfte der Adresse übernommen und die Datenübertragung kann während der LOW-Phase stattfinden. Damit findet in 3 Taktzyklen des Grundtaktes eine Datenübertragung statt.

    Die erste Datenübertragung (wenn der CPU-Takt LOW-Pegel hat) liest den Bildschirminhalt auf und "refreshed" das dynamisch RAM. Bei der nächsten Datenübertragung können Daten von der CPU ins RAM geschrieben oder Daten aus dem RAM ausgelesen werden. Während dieser Zeit ist der CPU-Takt HIGH.

    Ein 4-zu-1 Multiplexer schaltet die Adressen für das RAM um. Er hat nacheinander die 4 Zustände: 1. ROW-Adresse von der Bildspeicher-Ausleselogik ans RAM, 2. COLUMN-Adresse von der Bildspeicher-Ausleselogik ans RAM, 3. erster (ROW-) Adressteil von der CPU ans RAM, 4. zweiter (COLUMN-) Adressteil von der CPU ans RAM. Während des Auslesens der Bildspeicherinformation ist das RAM immer selektiert, während des CPU-Zugriffs natürlich nur, wenn auf das entsprechende RAM zugegriffen wird.

    Wenn ich die Zeit dazu finde, werde ich mal Zeitdiagramme aufzeichen und beschreiben, welche Bausteine die Funktion übernehmen. Aber vielleicht hift diese Beschreibung schon bei der Fehlersuche.

    Die meisten Informationen habe ich in dem Siemens Datenbuch "Integrierte Halbleiterschaltungen 1970" gefunden. Weitere Informationen habe ich aus anderen Datenbüchern damals abgeschrieben und teilweise - bei kompatiblen Bausteinen - in das Datenbuch geschrieben. Daneben gibt es noch etliche "fliegende Blätter" mit Daten. 1970 war Kopieren halt noch nicht so einfach und Kopierer waren selten und störanfällig. Da musste man viele interessante Dinge einfach abschreiben. Viele Kopierer arbeiteten noch mit einem Spezialpapier (XEROX kam erst etwas später) und diese Kopien sind heute - im Gegensatz zu meinen Aufzeichnungen - kaum noch zu lesen.

    In meinem Beitrag #27 habe ich geschrieben: "Die Basis dieses Transistors ist bei einigen Bausteinen nach draußen geführt.". Dieser Anschluss laut Angaben im Datenbuch ist für den Anschluss einer Integrierkapazität vorgesehen, die eine Verlängerung der Schaltzeiten und dadurch eine Erhöhung der Störsicherheit bewirken kann. Während ohne zusätzliche Kapazität die Schaltzeit trising (positive Flankendauer) etwa 200 ns, tfalling (negative Flankendauer) 500 ns die "Paarlaufzeit" tp für ein Gatter etwa 300 ns beträgt, steigen bei einer Kapazität von 110 pF tr auf 11us, tf auf 3 us und tp auf 9 us ("u" steht hier für mikro). Ein wenig hängen die Zeiten von der internen Komplexität der Gatter ab. Interessant ist noch die Abhängigkeit von der Versorgungsspannung. Bei einem NAND-Gatter betragen die Laufzeiten bei einer Versorgung mit 12V ohne zusätzliche Kapazität beispielsweise:

    tr min 210 ns, typ 350 ns und max 490 ns,

    tf min 70 ns, typ 120 ns und max 170 ns,

    tp typ 350 ns .

    Bei einer Versorgung mit 15 V ändern sich die Zeiten wie folgt:

    tr min 250 ns, typ 410 ns und max 580 ns (diese Zeit wird größer),

    tf min 50 ns, typ 85 ns und max 120 ns (diese Zeit wird kleiner),

    tp typ 350 ns (die Paarlaufzeit bleibt praktisch unverändert).

    Ich habe noch ein altes Datenbuch von 1970 gefunden. Darin sind die FL-Bausteine als TTL-Bausteine mit 5V Versorgungsspannung aufgeführt.

    Dann steht da die FY100-Reihe mit vorläufigen Daten. Das sind ECL-Bausteine mit einer negativen Versorgungsspannung von -5V. Aber mehr als die NOR/OR-Bausteine FYH104 (8 Eingänge), FYH124 und FYH134 (2 NOR/OR mit je 4 Eingängen) war da nicht zu finden, wobei der Unterschied zwischen FYH124 und FYH134 nicht ausgeführt war. Danach scheint Siemens die ECL-Technik nicht weiter verfolgt zu haben.

    Dann kommt auch die "störsichere" FZ-Serie mit einer Versorgungsspannung von typisch 15 V, minimal 13,5 V und maximal 17 V. Kurioserweise können diese Bausteine auch im 12 V- Bereich betrieben werden und haben dann eine Versorgung von min. 11,4 V, typ. 12 V und maximal 13,5 V. Intern ist die Logikverknüpfung dieser Bausteine als Dioden-Widerstands-Logik ausgeführt, die über eine Zenerdiode auf einen Transistor geht. Die Basis dieses Transistors ist bei einigen Bausteinen nach draußen geführt. Die Ausgangsstufe ist wie bei TTL-Bausteinen üblich aufgebaut.

    Auch erwähnt sind Bausteine in (P-)MOS-Technik der Serie GD100, die mit einer Drain-Spannung von -20 V und einer Gate-Spannung von -30 V betrieben werden. Das waren Gatter mit nur wenigen MOS-Transistoren. Benutzt wurden diese beispielsweise um PMOS-Mikroprozessoren aus Einzelgattern aufzubauen, um die Logik zu testen ehe erste Muster des Schaltkreises als Ganzes gefertigt wurden.

    Von einem anderen Hersteller (vermutlich Telefunken) gab es auch eine langsame DIoden-Transistor-Logik "DTL", mit der Bezeichnung FPJ, die mit 12 V betrieben wurde und vermutlich mit den FZ-Bausteinen von Siemens kompatibel ist. Da gibt es die beiden Bausteine FPL 101 und 103, die 5V- TTL-Pegel auf 12 V - Pegel konvertieren und FPL 111 und 113, die 12-V-Signale in TTL-Signale wandeln. Leider fehlen mir dazu nähere Daten.

    Die Takterzeugung beim Apple ist auch sehr trickreich. Ausgehend vom 7 MHz Mastertakt (der Doppelten der NTSC-Farbträgerfrequenz) werden alle anderen Takte hergeleitet, die auch noch miteinander synchronisiert sein müssen. Es sind dieses die RAS / CAS -Signale für die Ansteuerung der dynamischen RAMs, die zwischen CPU-Zugriff und Auslesen / Refresh des Speichers für die Anzeige auf dem Bildschirm zeitlich aufgeteilt werden müssen. Aus diesen Takten wird auch der CPU-Takt abgeleitet. Wenn dieser fehlt, muss man beim 74S175 "rückwärts" gehen. Der Ausgang Q3 ist das Ergebnis des Eingangssignales an D3. Dieser kommt aus dem Ausgang Q2, der seinen Zustand (synchronisiert mit dem Eingangstakt CP) von D2 bezieht. Dessen Wert stammt von dem Ausgang Zb von IC C1 74LS153. Dass die Auswahl des Einganges auch vom Zustand Q2 vom IC B1 abhängig ist, macht die Verfolgung der Signale kompliziert. In solcher Situation greife ich zu einem Blatt kariertem Papier und zeichne die Taktverläufe ausgehend vom Mastertakt auf. Es ist mühsam, aber danach hat man die gesamte Takterzeugung verstanden.

    Wenn man die obere Schaltung (eine Stromquelle) durchrechnet, fließt von der Versorgungsspannung durch die beiden Dioden und den 10 kOhm Widerstand bei der Versorgungspannung von 12 V ein Strom von 1 mA (wenn man den Basisstrom vernachlässigt). An der Basis des Transistors liegt die Durchlassspannung von 2 Dioden (etwa 1,2 V). Davon subtrahiert man eine für die Basis-Emitterspannung des BC557B. Dann bleiben für den Emitterwiderstand von 1 kOhm noch 0.6 V übrig. Durch den Widerstand fließen dann 0,6 mA. Dafür benötigt selbst ein extrem schlechterTransistor mit einer Stromverstärkung von nur 10 einen Basisstrom von 0,06 mA. Damit ist sichergestellt, dass der Strom durch die Dioden kaum belastet wird und deren Durchlassspannung als eingeprägte Spannung an der Basis "steht". Durch die Reihenschaltung von Zener- und normaler Diode fließt ein konstanter Strom von etwa 0,6 mA, wodurch die Spannung stabil ist. Die Belastung durch das 100 kOhm Poti ist vernachlässigbar, solange die Spannung am Schleifer auch nur sehr hochohmig abgegriffen wird.

    Die Schaltung ist sehr aufwändig. Bedenkt man aber, dass die Referenz der Stromquelle mit 2 Durchlassspannungen sehr ungenau und wenig temperaturstabil ist, hätte ich ein anderes Konzept vorgezogen.

    Üblicherweise sind Schaltungen so ausgelegt, dass eine höhere Stromverstärkung nicht stört. Wenn beispielsweise ein Typ -B vorgesehen ist, so stört die Verwendung eines -C Transistors normalerweise nicht, aber bei einem Transistor ohne Strombegrenzungskennung oder einem -A Typ könnte die Schaltung nicht mehr sicher funktionieren. Dann gibt es teilweise noch die Stromverstärkungskennzeichnung -16 oder -40. Das sind Transistoren mit besonders hoher Stromverstärkung.

    Ich würde Gossen höflich und mit dem Hinweis, dass man aus "historischen" Gründen dieses Gerät reparieren möchte, um einen Schaltplan bitten. Gossen gibt solche Unterlagen nur ungern heraus, da darin viel Know-How steckt und man darf die Unterlagen auch nicht weitergeben. So habe ich jedenfalls vor einigen Jahren mal Unterlagen zu einem ganz alten Multimeter (mit Zeigermesswerk) bekommen und konnte das Gerät dann auch wieder reparieren. Also meine Erfahrungen mit Gossen sind sehr gut, man muss sich nur an die Spielregeln halten.

    Und dann im Studium hatte ich diesen Rechenschieber

    von Aristo:

    Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen.

    Den Aristo Studio Log habe ich im Studium genutzt und bin damit sehr gut ausgekommen. Logarithmen, e-Funktion, Sinus und co. - alles kein Problem. Auch die durch einfaches Drehen verfügbaren Skalen auf der Rückseite fand ich genial. Übersicht und Funktionalität passten sehr gut. Ich habe zwar noch 2 Rechenschieber, aber den Studio Log habe ich schon vor Jahren nicht mehr auftreiben können. Inzwischen sind meine Kopfrechenkünste so sehr eingerostet, dass ich einen Rechenschieber leider nicht mehr nutzen könnte. Der Übergang auf die so einfach nutzbaren Taschenrechner hat meine geistigen Kopfrechen-Fähigkeiten mit der Zeit immer mehr verkümmern lassen. Noch vor einigen Jahren habe ich Studenten, die ich damals betreut habe, durch recht gute und schnelle Abschätzungen verblüfft. Dass man so schnell Größenordnungen auf Plausibilität abschätzen kann, war vielen neu.

    Huch... Da sind 2732 EPROMs drin. Ist schlecht zu erkennen, sind da Adapter drunter? Sonst passt das Pinout nämlich nicht. 2532 passen direkt.

    Ich habe noch einmal in ein altes Datenbuch geschaut. Beim Auslesen (und das ist ja hier der Betrieb) sind die beiden EPROMs danach gleicht. Der Unterschied ist beim Programmieren. Und das wird auf dem Board ja nicht gemacht.

    Finde mal ein gutes Heim, ich spreche aus Erfahrung. Ein normaler Heimplatz kostete hier in der Region schon 4-5000 EUR vor Pflegekasse und es liegen Erhöhungen an aktuell von mehreren 100 EUR bis 1000 EUR für den Eigenanteil. Da wird sogar ein kleiner, pensionierter Beamter zum 'Aufstocker', vermute ich.

    Einen Grundbetrag (abhängig von der Pflegestufe) zahlt die Pflegekasse. Hier im Raum Hannover muss man mit einer Zuzahlung von etwa 2500.- EUR rechnen - und das für nur eine Person. (Eine Ehefrau, die in der Vergangenheit weniger verdiente, hat da noch schlechtere Karten.) Die Rente reicht dafür nicht, auch wenn man gut (über der Bemessungsgrenze) verdient hat. Ein Lehrerehepaar hätte da durchaus ausgesorgt. Ein "kleiner" pensionierter Beamter bekommt auch nicht soviel, wohl aber ein Studienrat (ein Bekannter von mir ist einer) - und ein Professor dürfte noch darüber liegen.

    Als ich 2020 als Lehrbeauftragter aufhörte, bekam ich 35,- EUR pro Unterrichtsstunde. Ein Professor, der nach seinem Ausscheiden als Lehrbeauftragter weiter unterrichtete, bekam für die gleiche Arbeit das Doppelte.

    Ich war mehr als 30 Jahre lang nebenberuflich als Lehrbeauftragter an der Hochschule Hannover tätig. Das Grundgehalt scheint zwar niedrig, aber es gab die Möglichkeit von Zuverdiensten in Form von selbständigen Tätigkeiten, Patenten o.ä.. Gut wird es dann beim Renteneintritt. Während "normale" Arbeitnehmer wegen der Deckelung des anrechenbaren Einkommens an der Bemessungsgrenze eine Rente bekommen, die nur ein Bruchteil der Bezüge in der aktiven Zeit ausmacht, bekommen Beamte (und das sind die Professoren im Allgemeinen) eine Pension in Höhe von etwa 70% der letzten Bezüge. Und wenn jemand Rücklagen gebildet hat, so werden diese oft durch die inzwischen steigende Inflation aufgezehrt. Wer heute die Möglichkeit hat, sollte Beamter werden. Nur die können sich später die Heimplätze in guten Altenheimen leisten.

    Wie kam denn Motorola auf eine solche Einschränkung?

    Der Chip dürfte eine Sparversion des 6845 sein. Der 6845 kann viel viel mehr, wurde z.B. in CGA- und Herkules-Karten für PCs verbaut. In der Olivetti M24 erreicht er mit Hardware-Tricks 640x400 in 16 Farben. Und der 6845 beherrscht gleich mehrere Codepages (Zeichensatz-Seiten)

    Der 6847 hatte im Gegensatz zum 6845 den Zeichengenerator mit auf dem Chip. Damit wurde er unflexibel, wenn beispielsweise Umlaute dargestellt werden sollten. Das schränkte (wie bei den ersten Videotext-Bausteinen) die Verbreitung regional ein. Beim 6845 musste man den Zeichengenerator extern anschließen, was erst einmal teurer war, aber mehr Flexibilität brachte. Die Breite der Buchstaben von 6 Dots war damals üblich, da sich die meisten Buchstaben so "schön" darstellen ließen. Bei Kleinbuchstaben machten die Unterlängen Probleme. Da sahen die Buchstaben meist gestaucht aus, was störend wirkte, oder es war eine Leerzeile zwischen den Buchstaben nicht möglich, wodurch Unterlängen an die Großbuchstaben der folgenden Zeile anstoßen konnten.

    Noch ein kurzer Kommentar zur anfangs gestellten Frage, ob der Dragon ein "wichtiger" Computer war: Ich hatte einen Dragon und auch einen AppleII. Damals hatte der Apple schon ein Diskettenlaufwerk, für den Dragon war solch ein schneller Massenspeicher damals noch nicht erhältlich. So habe ich einige wenige Versuche mit dem Dragon gemacht, meine ganzen Arbeiten aber mit dem Apple erledigt. Bei einem Umzug 1990 musste ich dann "überflüssige" Hardware entsorgen. Und so fand mein Dragon seinen Weg zum Wertstoffhof. Den Apple habe ich noch lange Zeit genutzt und besitze ihn noch heute.

    Für die Auswahl der CPU spielte ein einfacher doppelter Zugriff auf den Arbeitsspeicher - einmal von der CPU aus und zweitens von den Bausteinen für die Bildschirmanzeige aus, eine entscheidende Rolle, besonders wenn die Zugriffe sich nicht gegenseitig beeinflussen sollten. Die von Apple im AppleII verwendete 6502 CPU teilte den angelegten Takt im Gegensatz zu den meisten anderen CPUs intern nicht mehr herunter, sondern erledigte die internen Vorbereitungen für den Bustransfer während der LOW-Phase des Taktes und führte den Transfer dann während der HIGH-Phase durch. Das nutzte Apple aus, indem während der LOW-Phase die Ausleselogik für die Anzeige auf das RAM zugriff. Während der HIGH-Phase konnte dann die CPU auf das RAM zugreifen. Das zyklische Auslesen für die Anzeige sorgte auch dafür, dass der Refresh für das RAM mit erfolgte. Eine kleine Schwachstelle war in dem Konzept, dass zwischen dem Eingangstakt der CPU und dem Zeitschlitz für den Datentransfer eine kleine Verzögerung lag. Diese musste bei dem Design mit berücksichtigt werden.

    Besser als beim 6502, der für diese Aufteilung des Zugriffs nicht konzipiert war, löste das Motorola mit dem 6809E. Während der 6809 den Takt intern in einzele Verarbeitungstakte unterteilte und deshalb einen 4-fach höheren Arbeitstakt benötigte, konnten beim 6809E die internen Verarbeitungszeitschlitze über 2 gegeneinander phasenverschobene Takte festgelegt werden. Damit war es einfach, den Zugriff zum Arbeits-RAM zwischen einem Zeitschlitz für die Anzeige und einen für den CPU-Zugriff aufzuteilen. So war es beispielsweise bei Bildschirmtext-Decodern möglich, Grafiken mit voller Auflösung im RAM des Prozessors abzulegen, in dem auch alle Arbeitsvariablen und Stackpointer abgelegt waren.

    Die Intel-CPUs der 8080 und 8086 Architektur hatten diese Möglichkeit nicht.

    Der User Port wird direkt vom Baustein 6522 zum Stecker geführt. Für jemanden, für den Hardware nicht so wirklich sein Ding ist, kann das problematisch sein. Zuerst einmal ist der 6522 empfindlich gegen Überspannungen und Aufladungen. Bei ungeschicktem Handling geht der leicht kaputt. Dann hat er ein DataDirectionRegister, mit dessen Hilfe man festlegen sollte, ob der jeweilige Datenpin ein Eingang oder ein Ausgang sein soll. Abhängig von der Information in diesem Register verhalten sich die Pins unterschiedlich. Bevor man mit dem Port arbeitet, sollte man sich erst das Datenblatt dieses Bausteins ansehen. Für Leute, die mit solchen Bausteinen Erfahrung haben, ist das Ganze einfach, aber gerade wenn man mit Steckbrettern arbeitet, kann schnell mal ein Fehler auftreten, der das Ende des 6522 bedeutet.