Hallo Besucher, der Thread wurde 324k mal aufgerufen und enthält 2973 Antworten

letzter Beitrag von vossi am

Nachbau eines Apple 1

  • ich habe aktuell noch die Schwierigkeit, dass zwar "Laden" von Cassette über ACI funktioniert.


    Aber das "Abspeichern" noch nicht... auf der Casette ist kein Ton zu hören,

    die "Routine" z.B. 280.fffW "läuft" aber ab....


    ich frage mich, ob der Fehler auf der "ACI-Karte" bei mir ist,.. oder ob gar keine Signale aus dem Bus kommen.
    ich werde als nächstes an PIN5 vom A2 IC (74LS74) mit Oszi schauen,

    (was ist denn so typisch, für einen "To Tape" Ausgang, ? Voltmässig?)

    danach an PIN13 vom A5.


  • Zum 6820/6520-Arduino-Nano-Adapter: Ich habe jetzt alle Lötstellen und Zwischenräume gereinigt und danach alle Sockelkontakte, Kabelverbindungen und nebeneinanderliegende Pins auf Kurzschlüsse geprüft - alles in Ordnung. Und siehe da, der Reset funktioniert wieder.


    Zur Calibrierung des PS/2 Keyboard Adapters: Bei der "MiniPro"-Software von meinem TL866CS Programmer habe ich jetzt für den Attiny 2313 die Programmiermöglichkeiten ermittelt. Es gibt 3 Programmierseiten: Einmal für das Flashrom, einmal für die 128 Bytes EEprom und einmal für die Fuse-Bits. Also die Kalibrierungsfirmare aufgespielt und das Oszi an Pin 4 des Tastatursockels angeschlossen: Es wird ein Rechtecksignal mit exakt gleichem Tastverhältnis angezeigt. Also High und Low beide mit etwas mehr als 200uS. Ich weiß jetzt nicht ob das so gemeint ist, dass man das Verhältnis dann auf 1:2 einstellen muss, also z.B. Low auf 125uS und High auf 250uS oder gemeint ist, das High und Low bei gleichem Tastverhältnis auf 125uS eingestellt werden sollen, also dementsprechend eine vollständige Welle auf 250uS. Leider reagiert das Keyboard weder auf D noch auf I bzw. es ändert sich am Oszi nichts, wenn ich die Tasten drücke. Allerdings ist mir eingefallen, dass das PS/2 - Keyboard ja erst nach einem Reset arbeiten kann. Das werde ich als nächstes probieren.


    TurboMicha : Probiere mal direkt vor dem Speichern nochmals C100R einzugeben. Und nochmal beim ans ACI angeschlossenen Klinkensteckerkabel fürs Speichern den Durchgang von der Spitze des Klinkensteckers zum 100nF Koppelkondensator auf dem ACI durchpiepsen. Und Masseverbindung durchpiepsen. Nicht das irgendwo die Audioverbindung vom ACI zum Recorder unterbrochen ist.


    Edit: Mit dem Durchgang zum Koppelkondensator ist ja Quatsch, das ist ja die "Lese"-Seite, hier gehts ja um das Speichern. Aber der entsprechende Durchgang zum dem "Write" - Ausgang (zwischen dem 10K und 100Ohm Widerstand) ist okay ?

  • Da es sich um TTL handelt an der stelle noch 0V und 5V.

    Die beiden Wiederstände teilen es auf einen Cassetten üblichen Pegel runter. Wenn ich mich nicht verrechnet habe 100:1
    Du solltest Pin 3 Eingang und Pin 5 Ausgang darstellen.

  • Es sollte 125 µs low und 125 µs high sein also eine Periode von 250 µs haben.

    Hmm, das Zeichen was verglichen wird irgendwie aus dem UDR (UART DATA Register) gelesen. Frage mich wie es da rein kommen soll.

    Möglicherweise muss das Zeichen nicht über die Tastatur sondern vom Terminal eingegeben werden.

  • Ah okay, leider reagieren die Tasten auch nicht nach einem Reset. Vielleicht funktioniert ja die Variante mit dem externen Takt. Einen 4 MHz Quarz hätte ich da. Wo müsste ich den anlöten und wie müsste ich die Fuses dann programmieren ?


    Ah habe gerade im Datenblatt gesehen zwischen Pins 4 und 5 sowie zwei Kondensatoeren 12-22pF nach GND. Bleibt nur noch die Frage nach den Fuse-Einstellungen ?

  • Ah okay, leider reagieren die Tasten auch nicht nach einem Reset. Vielleicht funktioniert ja die Variante mit dem externen Takt. Einen 4 MHz Quarz hätte ich da. Wo müsste ich den anlöten und wie müsste ich die Fuses dann programmieren ?


    Ah habe gerade im Datenblatt gesehen zwischen Pins 4 und 5 sowie zwei Kondensatoeren 12-22pF nach GND. Bleibt nur noch die Frage nach den Fuse-Einstellungen ?

    high fuse byte should be programmed to: DB

    low fuse byte should be programmed to: ED sollte es sein für 4 MHz sein also Crystal Osciallator 3.0 - 8.0 MHz


    Falls du es noch mit calibirien versuchen möchtest der Wert sollte bei etwa $62 liegen.

  • So ich habe jetzt den Quarz und die 2 Kondensatoren "quick and dirty" über einen Zwischensockel angeschlossen und auch gleich $62 ins letzte Byte des Eeproms geschrieben, das geht ganz einfach "von Hand". Low-Fuse auf ED und High-Fuse auf DB. Funktioniert leider nicht, die Tastatur - LEDs blinken dann komisch rum, ich kann weder Reset noch CLR auslösen (mit den CTRL-Tastenkombinationen). Also lasse ich das mit dem Quarz mal weg und programmiere nur das eine Byte im Eeprom ($62). Ich denke dann Fuse - Einstellungen wieder:


    high fuse byte should be programmed to: DB

    low fuse byte should be programmed to:E2


    Gesagt, getan. Das Timing scheint jetzt etwas weniger unpassend zu sein, immerhin kommen jetzt schon von den 26 Buchstaben des Alphabets 3 Zeichen richtig, nämlich A, B und C.

  • Zum 6820/6520-Arduino-Nano-Adapter: Ich habe jetzt alle Lötstellen und Zwischenräume gereinigt und danach alle Sockelkontakte, Kabelverbindungen und nebeneinanderliegende Pins auf Kurzschlüsse geprüft - alles in Ordnung. Und siehe da, der Reset funktioniert wieder.

    ... das ist doch prima :)


    ralf02 und Dein Einsatz zur Tastatur ist wirklich super !! wäre am Ende ja Toll, wenn man so , eine schöne

    Alternative zu einer Apple-II Tastatur bekommt..


    PS: kannst du jetzt auch wieder "saven",.. ?

    kannst du mir vielleicht das RAM-Test Programm als WAV/mp3 schicken.. oder hast du es irgendwo als "Sound-File" gesehen ?


    => denn ich habe jetzt auch 8k RAM im Apple :thumbsup: FREU!!

    (habe die zweite REIHE RAM ICs gesteckt und die Brücke gemacht).


    dann weiter mit der ACI "gekämpft"... irgendwas ist da noch nicht ganz "koscher".. liegt aber vielleicht auch daran,

    dass die .WAV Files von verschiedenen Quellen stammen ? Das Apple30year Demo klappt mit dem Panasonic Kassetten-Rekorder eigentlich immer / sofort.


    Ich wollte dann unbedingt das BASIC in Speicher $E000 laden, um zu gucken, ob der Speicher funktioniert.

    Vorher, eiin einfaches TEST-Schreiben von ein paar Byte mit: E000: 11 22 33 44 hat funktioniert...


    dann mal das .WAV File direkt vom PC mit AUDIO 3,5mm Klinke direkt in die ACI (die LED leuchtet wieder nicht ?)...


    ABER:


    8o:thumbsup::thumbsup:


    und dann ein paar Zeilen von Hand getippt..



    läuft: :)



    was das genau testet ,. weiß ich nicht,.. :) hatte ich hier gelesen:


    [Externes Medium: https://youtu.be/9pTyynB2Jlo]


    Jetzt kann ich das "SCHREIBEN " von Apple nach ACI Audio-Ausgabe mal unter die Lupe :search: nehmen...

  • Heute sind die Kunststoff-Unterlegscheiben gekommen. Ich muss sie etwas anschleifen, damit sie unter die Keyswitches passen:



    Bei der Dicke der U-Scheiben von 1mm ist gewährleistet, dass die Lötpins der Schalter noch knapp aus der Platinenunterseite herausragen. Bei den Tastern, bei denen ich kein Loch für den Zapfen in die Platine bohren kann, schneide ich ihn mit dem Seitenschneider bündig über der U-Scheibe ab.


    Natas : Wie bist Du auf den Kalibrierungswert von $62 gekommen ? Sollte ich den für weitere Tests erhöhen / erniedrigen / in welchen Schrittweiten ?

  • TurboMicha : Speichern geht, da ich ja jetzt wieder per Textfile "hochladen" kann. Aber wie wandle ich das Ram-Test-Programm in eine WAV-Datei um ? Auf Tape speichern und dann irgenwie vom Tape abspielen und mit dem PC "aufnehmen" ? Welches Programm nehme ich dafür ?


    Ich habe jetzt mal schnell das Ram-Testprogramm hochgeladen, das war ja auch das, was ich ursprünglich sowieso tun wollte. Wenn ich UncleBernie richtig verstanden habe, testet es die 4K Ram im Bereich $E000, weil dort auf dem Multiplex-Adressbus die schlechtesten Signale zu erwarten sind. Wenn alles okay ist, gibt das Programm einen Punkt (".") aus, ansonsten wird ein Fehlercode und eine Adresse ausgegeben. Bei mir kommt dieses Ergebnis:



    Wie man sieht, zunächst 5 Punkte (okay), und dann kommt immer der Fehlercode 08 an der Adresse ED64, dann ein Punkt, dann wieder 08@ED64, Punkt usw.


    Das Problem muss natürlich beseitigt werden. Problematisch sind wohl die beiden 74S257 Multiplexer an den Positionen B5 und B6. Dort hat UncleBernie wohl folgenden Mod vorgenommen (6 x 390 Ohm und 100nF Kerkos):



    Zum Glück habe ich ja noch ein Reserve-PCB an der Wand hängen zum Vergleichen. Ich denke aber es müsste die Unterseite von B5 und B6 sein.

  • Natas : Wie bist Du auf den Kalibrierungswert von $62 gekommen ? Sollte ich den für weitere Tests erhöhen / erniedrigen / in welchen Schrittweiten ?

    Aus dem Datenblatt, am Ende ist ein Diagramm da kann man es ablesen.

    Ohne den Signalgeneratorcode ist eine Antwort schwierig. Probier doch mal $60 und $64 ob sich die Lage verbessert oder verschlechtert.

  • Danke für die Info, werde ich morgen mal angehen. Muss mal schauen, ob ich noch so einen passenden Nullkraftsockel habe (wegen Atiny raus - rein - raus - rein ....).


    Ich habe jetzt ermittelt, dass der Mod von UncleBernie das RAM W7 (auf A11) betrifft. Er spricht bei den einzulötenden Widerständen von "Terminierung". Hier nochmal das Bild:



    Die Kerkos oben liegen zwischen -5V und GND (Pins 1 - 16), der in der Mitte liegt zwischen 12V und GND (Pins 8 - 16 - auf dem Foto ist GND am Nachbarchip angeschlossen). Bei meinen Rams habe ich die Abblock-Kerkos schon vorher abwechselnd zwischen -5V und GND (Pins 1 - 16) und zwischen 12V und GND (Pins 8 - 16) angebracht. Da es beim RAM W7 ja scheinbar besonders wichtig ist, füge ich dort den zweiten Abblock-Kerko noch hinzu.


    Die Verbindung der 6 Widerstände ist wie folgt:


    Pin 5 (A0) - Pin 8 (+12V)

    Pin 6 (A2) - Pin 8 (+12V)

    Pin 7 (A1) - Pin 8 (+12V)

    Pin 10 (A5) - Pin 8 (+12V) (Nachbarram)

    Pin 11 (A4) - Pin 8 (+12V) (Nachbarram)

    Pin 12 (A3) - Pin 8 (+12V) (Nachbarram)

  • Ich habe jetzt mal schnell das Ram-Testprogramm hochgeladen, das war ja auch das, was ich ursprünglich sowieso tun wollte. Wenn ich UncleBernie richtig verstanden habe, testet es die 4K Ram im Bereich $E000, weil dort auf dem Multiplex-Adressbus die schlechtesten Signale zu erwarten sind. Wenn alles okay ist, gibt das Programm einen Punkt (".") aus, ansonsten wird ein Fehlercode und eine Adresse ausgegeben. Bei mir kommt dieses Ergebnis:

    huch... das sieht aber nicht so gut aus.. :search::anonym


    ich habe da Gottseidank anscheinend "Glück".. (dafür musste ich das Programm gerade wieder von Hand neu eingeben :) )

    bei mir kommen nur "......"


    +

    (mit den 2000,.. hatte ich vertippt,.. und nur schnell die Zeilen von 2000.2010 ausgegeben)


    ... jetzt muss ich ACI prüfen...

  • Bei meinem Post#932 zum Einbau der 390 Ohm "Terminierungs-Widerstände" haben sich mehrere Fehler eingeschlichen. Da das ganze von der Unterseite fotographiert ist, sind die Pins des MK4027 natürlich spiegelverkehrt zuzuordnen. Demnach erfolgt die Terminierung nicht nach +12V, sondern nach +5V. Wichtig ist der 100nF Kerko von Pin 9 (5V) nach GND des Nachbarchips. Die Verbindung der 6 x 390 Ohm Widerstände erfolgt dann richtig so:


    Pin 5 (A0) - Pin 9 (+5V) (Nachbarram)

    Pin 6 (A2) - Pin 9 (+5V) (Nachbarram)

    Pin 7 (A1) - Pin 9 (+5V) (Nachbarram)

    Pin 10 (A5) - Pin 9 (+5V)

    Pin 11 (A4) - Pin 9 (+5V)

    Pin 12 (A3) - Pin 9 (+5V)


    UncleBernie schreibt zu seinem Mod: "I don't declare victory yet as my criteria for a "rock-solid" Apple-1 build is two weeks running memory test programs 24/7 without a single fault."


    Demnach will er den "Sieg" erst dann erklären, wenn sein so modifizierter Apple 2 Wochen lang ununterbrochen ohne jeden Fehler läuft. Da der Post schon vom 03.11.2020 ist und bis heute keine gegenteilige Meldung kam, hat er es wohl geschafft mit seinem "Felsenfesten" Apple 1. Mir würde schon reichen, wenn ich nach dem Mod 5 Minuten ohne Ram-Fehler erreiche .....

  • TurboMicha : Speichern geht, da ich ja jetzt wieder per Textfile "hochladen" kann. Aber wie wandle ich das Ram-Test-Programm in eine WAV-Datei um ? Auf Tape speichern und dann irgenwie vom Tape abspielen und mit dem PC "aufnehmen" ? Welches Programm nehme ich dafür ?

    ... :) früher hatte jeder PC ja einen Audio-IN,.. aber ist schon lange her...

    irgendwo habe ich auch noch einen "Walkman"-USB Wandler (vom Aldi),.. damit konnte man Musik-Casetten einfach

    durch abspielen in .mp3 wanderl... o.k. aber diese Versuche erst später :)


    Bei mir klappt das Speichern von der ACI Karte auf den "gelobten" Panasonic Kassetten-Rekorder ja nicht...


    Ich habe mir die Signale einmal auf der Karte angeschaut:


    So sieht das (laute) Signal beim Abspielen einer .WAV Datei aus,.. "HINTER" dem Kondensator,

    man sieht sehr schön, wie der Gleichspannungsanteil geblockt wird.

    aus Spass, habe ich mal die RS232 Erkennung vom coolen RIGOL Oszi (mit 1500baud) aktiviert... klar,.. kommt nur Schrott, aber die "Flanken" high/low werden offensichtlich erkannt.


    Das Gleiche hinten am AUDI-OUT von der ACI, wenn ich z.B. mit 1000.4000W (auf ACI-OUT) schreibe,,,


    => das sieht ziemlich "verwaschen" aus... vielleicht auch mal 100nF "in Reihe" vorschalten ?

    Aber immerhin... es kommt auch was raus :)


    => ich habe jetzt mal den "puren" Analog-Test gemacht. -> einen 3,5mm Klinke Kopfhörer angeschlossen :D

    => UND, man hört das Piper am Ausgang,.. :kopp hört sich aber anders an... muss ich noch mit einem Programm

    anhören, denn "leere" Computer-Zeilen (nach dem Einschalten) erzeugen einen gew. Gleichmässigkeit.. (weil viel hex FF)

  • Hier einige Screenshots, was ich am Ausgang des ACI beim Speichervorgang am Oszi gemessen habe:



    Sieht ziemlich "vernadelt" aus, aber ein ca. 100mV Rechtecksignal ist erkennbar.


    Ich habe jetzt mal den Ram-Mod von Uncle Bernie gemacht:



    Ergebnis des Ram-Tests: Jetzt kommen 29 Punkte, dann wieder wie zuvor 08@ED64, Punkt usw.


    Ich habe dann nochmal das "Oneshot-Timing" am 74123 eingestellt, und zwar auf 480nS bezogen auf 2 Volt (TTL High ist ja ab 2 Volt). Vorher war es etwas zu lang, so bei 500nS.


    Das hat es aber auch nicht gebracht. Der DRam-Test bringt jetzt nur noch 15 Punkte, dann wieder 08@ED64, Punkt, 08@ED64 u.s.w.


    Ich muss noch mal die Abblockkondensatoren an den 16 Rams und 8-pol Shift-Registern gemäß UncleBernies Empfehlungen nachsehen: "I ended up with 8 x 100nF capacitors on the -5V rails in the DRAM bank, 8x 100nF capacitors on the +12V rail in the DRAM bank, 2 x 100 nF on the +5V rail in the DRAM bank, and one 100nF capacitor at each -5V rail on each socket

    having the 8 pin shift registers."


    Zur Schnittstelle auf dem PS/2 Adapter: Ich habe jetzt den Wert $60 ins EEprom geschrieben, Ergebnis:


    $62: Vom Alphabet stimmen nur A,B,C

    $60: Vom Alphabet stimmen nun A,B,C,D,E,F,G,X,Z (ab und zu kommen bei denen aber auch falsche Zeichen)


    Die Richtung stimmt also, mal sehen was bei $5E herauskommt.

  • $60: Vom Alphabet stimmen nun A,B,C,D,E,F,G,X,Z (ab und zu kommen bei denen aber auch falsche Zeichen)


    Die Richtung stimmt also, mal sehen was bei $5E herauskommt.

    wau super... es scheint etwas zu bringen...


    Hier einige Screenshots, was ich am Ausgang des ACI beim Speichervorgang am Oszi gemessen habe:

    Danke!,.. ja man sieht ein "Rechtecksignal"... da scheint gerade der "Dauer-Piepton" zu kommen :)

    gemessen direkt am Ausgang ?


    Sieht ziemlich "vernadelt" aus, aber ein ca. 100mV Rechtecksignal ist erkennbar.

    jau.. so +-50mV,.. hmm trotzdem ein Wunder , dass es damit funktioniert (abspeichern auf Tape)

    sieht irgendwie "schon wenig" aus... und die Nadeln scheinen nicht zu stören..

    Deine Abtastrate kann ich da nicht genau raus lesen,.. ich werde aber auch noch mal weiter "rein zoomen"...


    danke bis hier hin...

    PS: wenn ich speichern könnte, könnte ich den RAM Test auch schneller mal zwischendurch machen,

    da ich ja auch noch MODs machen möchte, aber immer die Zeilen von Hand abtippen ist etwa "nervig"...

    => daher ja meine Hoffnung, dass alternativ die PS2-Schnittel irgendwann funktioniert ! :thumbsup:

  • Die Schrittweite 2 ist nur um erstmal überhaupt eine Veränderung zu sehen.

    Wenn du einen Wert guten Wert ermittelt hast passt der ausschließlich für deinen Atmel, beim nächsten kann er schon wieder total daneben liegen.