Hallo Besucher, der Thread wurde 208k mal aufgerufen und enthält 2785 Antworten

letzter Beitrag von peo2000 am

Nachbau eines Apple 1

  • Ja die Platine meine ich, als Tastaturadapter funktioniert sie mit PS/2 Tastaturen einwandfrei. Aber da ist ja auch eine RS232 Schnittstelle drauf, sodass Eingaben auch über ein Terminal möglich sein müssten. Dazu muss man lt. Anleitung 9600 Baud und 7E1 einstellen. Wenn ich aber am Win 10 Labtop z.B. ein "b" eingebe, erscheint auf dem Apple-Bildschirm ein"q" - es kommen immer andere Zeichen als die, die ich drücke. Möglicherweise ist der MAX202 defekt, aber laut Anleitung soll der so gut wie nie kaputt gehen - ich habe sicherheitshalber einen bestellt. Ich weiß auch nicht genau, ob der ATTINY überhaupt an dem RS232 "beteiligt" ist oder ob das nur über den MAX202 läuft.

  • Hast Du es mit einer echten seriellen probiert nicht USB?

    Evtl. ist auch die Programmierung schuld.

    Geht es umgekehrt?

    Das ist doch das Wichtigste?

    Ob die PS2 korrekt angezeigt wird ist doch egal. Nicht darauf schließen das RX auch nur das Geringste mit TX zutun hat.

    Das ist bei diesem Interface nicht so.

    Der Adapter / Code an sich scheint mir nicht gerade das Beste am Markt zu sein.

    Die 9600 machen schon keinen Sinn und die 7E1 noch weniger.

    Der Apple verträgt nicht mehr als 2400, nicht mal die, weil es vom Timing "menschlich" sein muss.

    Also warum dann eine 4 Spurige Auffahrt auf eine Straße die am Ende nur einspurig ist?


    Da gibt es bessere Ansätze, habe dazu weiter oben im Thread was geschrieben.

  • Also ....


    - mit einem echten seriellen Port (auf altem IBM Thinkpad probiert, der noch kein USB hat) bleibt das Problem bestehen

    - dass die Eingaben an der PS/2-Tastatur auf dem Terminal falsch dargestellt werden, ist in der Tat unwichtig, aber

    - die Eingaben auf dem Terminal werden auch am Apple - Bildschirm falsch dargestellt (diese "Richtung" ist ja wichtig)


    Für mich wichtig ist insbesondere die Möglichkeit, über das Terminal Programme in den Apple 1 eingeben zu können und das geht ja nicht, wenn falsche Zeichen kommen.


    Zu dem Thema heißt es in der Beschreibung des Tastaturadapters (mit Translate übersetzt):


    - Sie können Terminalprogramme auf einem PC verwenden, um Befehlsskripte an die Eingabeschnittstelle der Zielcomputertastatur zu senden. Dies ist eine einfache Möglichkeit, Programme in Vintage-Computer zu laden, die ansonsten auf unzuverlässigen Medien wie einer Kassettenschnittstelle basieren müssen.

    - Kann durch Neuverdrahtung der Verbindung zum Ziel-PC an andere Vintage-Mikrocomputer angepasst werden

    - Arbeitet mit einer +5 Volt-Versorgung

    - RS232 läuft mit 9600 Baud



    Für die automatisierte Übertragung wird das Programm "Hyperterm" empfohlen. Das Programm ermöglicht nach dem Senden von Zeichen und Zeilen einen "delay" einzufügen. Es wird empfohlen, damit der Apple das geschwindigkeitsmäßig verkraftet, nach jedem Zeichen eine 20 Millisekunden Verzögerung und nach jeder Zeile eine 200 Millisekunden-Verzögerung zu machen.


    Was mir noch eingefallen ist, spielt es eigentlich einen Rolle, ob ich z.B. bei Hyperterm unter "Emulation" ANSI, TTY, VT100 oder etwas anderes einstelle ?

  • Die Terminal Emulation spielt keine Rolle, da die lediglich Sonderzeichen anders auswertet.

    Control+Buchstabe oder Zahl bzw. Esc Sequenzen.

    Entweder hat der ATTiny einen weg z.B. der interne Quarz ist da neben.

    Oder er wurde falsch programmiert.


    In der Zip sind 2 HEX Files ein mit Cal und eins ohne.

    Das deutet genau auf solche Probleme hin.

    Beim Cal muss man wohl den Cal Wert im Quellcode anpassen.

    Habe gerade in den Code geschaut wenn ich es auf die schnelle richtig verstanden habe: Wenn im im letzten Byte es EEPROM FF steht wird die Timing Loop kalibriert und dort der Kalibrierwert abgespeichert.

  • Das wäre jetzt auch mein nächster Schritt, den weiteren ATTINY zu programmieren. Das mit den HEX-Files mit und ohne Cal habe ich noch nicht verstanden - welches sollte ich verwenden ?


    Zu den Fuses habe ich auf den Seiten von Mike Willegal folgendes gefunden:


    high fuse byte should be programmed to: DB

    low fuse byte should be programmed to: E2


    Ich denke, ich werde einfach mal einen Programmierversuch mit meinem ATTINY2313-20 wagen (ist der identisch mit dem 2313A ?), sobald ich das mit dem HEX-File verstanden habe. Könnte man dem ATTINY eigentlich auch einen externen 8 MHz Quarz spendieren (dürfte ja nur der Quarz + 2 Kondensatoren sein) um diese Timing Probleme zu eliminieren ?

  • 4 MHz müsste es dann wohl sein, ja man kann einen externen Quarz benutzen wenn die Pins nicht anderweitig benötigt werden. Die Fuses müssen dann anders sein.


    Ein Hex File ist ein Text File in dem ein Hex Dump enthalten ist und kann nicht direkt von der Größe betrachtet werden.

    Ich hatte keine Zeit mir das genauer anzusehen. Ich vermute die Datei mit Cal enthält das EEPROM und die andere nicht.

    Es könnte genügen das EEPROM des ATTiny zu löschen.

    Steht den zur Kalibration nichts in der Doku?

    Also so wie ich es sehe ist der Quellcode einmal mit Kalibration und einmal ohne assembliert.

    Welche Variante ist bei dir programmiert?

    Wenn es die mit Kalibration ist vermute ich, das die Kalibration daneben liegt.

    Mir ist nicht 100% klar wie die Kalibration genau funktioniert.

    "; send square wave out in order to calibrate - 1000 cycles per iteration

    ; results in 125 usec long levels - 250 usec long wave"

    Wenn das EEPROM leer ist wird die Kalibration gestartet.

    Man muss dann wohl ein Oszilloskop nutzen um irgendeine Pin vom Port B darzustellen und auszumessen.

    Vermutlich kann man dann per Tastatur mit I (increase), D (decrease), W (wait?), Q (quit/done) die Kalibration durch führen.

    Bis man eine Rechtecksignal mit 125µs high gefolgt von 125 µs low bekommt.

  • evtl. könnte hier ebenfalls ein Projekt aus dem MFA-Bereich hilfreich sein?

    https://forum.classic-computin…d/20524-tastatur-adapter/


    ..hier wird ein einfacher Arduino Uno benutzt:

    https://github.com/petersieg/MFA/tree/master/ps2-kb

    Wenn man schon einen Arduino benutzt kann man es auch gleich richtig machen und direkt an den MC6820 gehen. Dann kann man das ohne Problem bidirektional betreiben.
    Sprich die Bildschirmausgabe kommt ebenfalls auf der Seriellen (USB Schnittstelle).
    Die Lösungen sind bereits fertig und müssen nur für das original Replica Board adaptiert werden.

  • Das HEX-File ist in der Tat, wenn ich es mit dem Programmer öffne, nur 2KB groß. Ich habe das CAL-Hex einfach mal in den anderen ATTINY geflashed, der Programmiervorgang wurde auch als "succesful" angezeigt, aber der Keyboard-Adapter funktioniert mit diesem anderen ATTINY gar nicht. Irgendwas muss ich bei der Programmierung wohl falsch gemacht haben. Vielleicht muss man auch erst das CAL-HEX flashen und dann anschließend das andere HEX ?


    In der Doku steht leider überhaupt nichts zu der Kalibierung des ATTINY, es gibt nur diesen Ordner "SWFiles", den ich schon als ZIP hochgeladen hatte.


    Auf dieser Seite ist alles, was es zu dem Adapter gibt:


    https://www.willegal.net/appleii/appleii-kb-int.htm

  • Die sind okay, habe ich wie die Lötstellen und Bauteile auf dem Interface mehrfach durchgecheckt. Der Pole ist aber wirklich nett, heute sind die beiden Proms A3+A4 gekommen (die ich ja wegen der Sache mit den Shift Registern zum halben Preis bekommen habe) und er hat noch eine ACI-Interface Platine gratis obendrauf gelegt.


    Ich habe eben in den Attiny das HEX-File ohne Calibrierung geflashed, damit funktioniert das Keyboardinterface einwandfrei, aber RS232 nach wie vor nicht. Jetzt kommt - egal was ich im Terminal (Win 10 Labtop) eingebe, immer ein "x" im Terminalfesnster und ein Sonderzeichen auf dem Apple-Bildschirm.


    Anbei das HEX-File aus dem ATTINY des Interface-Adapters so wie ich ihn gekauft habe.


    Auslesung.zip


    Das mit der Kalibrierung ist ja ohne vernünftige Anleitung wie die Suche einer Stecknadel im Heuhaufen ..... ich denke von dieser Variante werde ich mich verabschieden und es mit einer "richtigen" bidirektionalen RS232 Schnittstelle auf Arduino basierend probieren, wie es Natas vorgeschlagen hat. Könnte ich denn mit so einem Interface das machen, was mir wichtig ist, nämlich über ein PC-Terminalprogramm Programme für den Apple als TXT-File "hochladen", wie z.B. sowas: life.txt ?


    Könnte so ein Adapter zunächst auf Lochraster mit "Zwischensockel" auf dem Sockel des 6820 aufgebaut werden ?

  • Wenn es interessant ist könnte ich behilflich sein einen Arduino nano mit dem MC6820 zu verbinden der dann eine bidirektionale Serielle Schnittstelle (Tastatur und Bildschirm mit Terminal-Emulation) via USB-Mini für den PC anbietet.

    praktisch so wie in diesem Projekt: https://hackaday.io/project/26234-apple-1-mini

    Ich habe nachgeschaut, einen Arduino nano (kompatibel) habe ich sogar da.

  • Hier ist der Schaltplan des Apple 1 Mini, dort ist ja insbesondere die Verbindung des 6821 mit dem Arduino Nano interessant:


    schematic - Schematic.pdf


    Hier die Firmware von der Github-Seite:


    SerialIO.zip


    Das ist ja eine fertig kompilierte "ino" Datei, kann ich die mit der Arduino IDE einfach direkt über USB in den Arduino nano laden ?

  • So sieht es aus, das ist was ich mit fertig meinte.

    Muss nur adaptiert werden.

    Andere Lösungen haben noch einen unnötigen IO-Expander verbaut.

    Auf der Github Seite ist auch noch ein Upload Programm https://github.com/DutchMaker/…de/utilities/DataUploader

    Wenn Du den angeschlossen hast läuft der Apple auch ohne bestückten Video Terminal Teil, allerdings müsste dann der CPU Takt wie beim Apple 1 Mini eingespeist werden.

  • Ich habe jetzt mal mit der Arduino IDE die "SerialIO.ino" in den Arduino Nano (Atmega 328p) über USB-Kabel in den Nano hochgeladen, das hat ohne Fehlermeldungen funktioniert.


    Gemäß dem Schaltplan müssen zwischen dem Arduino Nano und dem 6821 folgende Pins einfach direkt verbunden werden:


    VCC, VSS

    PB0 - PB6

    PA0 - PA6

    STROBE

    RDA und DA


    Funktioniert die Verbindung zum PC dann einfach über ein USB-Kabel mit Mini-USB-Stecker für den Arduino Nano ?


    Die notwendigen "Delays" (nach jedem Zeichen 20mS, nach jeder Zeile 200mS) kann ich in Hyperterminal einstellen, sodass der spätere "upload" auch damit funktionieren sollte.

  • Genau der Arduino wird dann als Serielle Schnittstelle eingebunden.
    Es sollte sowohl die Variante Hyperterminal gehen, als auch das oben erwähnte Uploadprogramm.