Junior Computer ][

  • Der Patch mit Pin 10 <> Pin 30 ist auch gleich eingelötet.


    Wie war das noch mit dem Patch, wozu war der noch mal gut? Ist irgendwie bei mir nicht haften geblieben.

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

  • Verbindung AVCC mit 5P.


    2ee


    Verhindert die Zerstörung des Atmel bei unbeschalteter AVCC Versorgung. Es gab mit einem Mega1284 da schon Rauchzeichen von der integrierten "Dampfmaschine".


    Gruß Jörg

  • Danke, auch erledigt. :thumbup:

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

  • Und somit für alle dann hier gleich der Aufruf, Pin 10 (VCC) mit Pin 30 (AVCC) noch zu brücken. Wir wollen den weltweiten Chip Mangel hier schließlich nicht noch weiter verschärfen.

    ähm,.. wie ? was ?? ist das Controller IC auf der Tastatur damit gemeint ?

    (einfach eine Brücke ? oder sonst noch was?)


    den anderen "Auto-Speed-Patch" hatte ich bisher extra nicht gemacht..

    Meine Sammlung: PET2001,CBM8032,CBM610 Apple-1 + IMSAI8080 + ALTAIR "replicas"..

  • Jetzt war ich vorhin etwas kurz angebunden, da ich noch weg musste. Daher hab ich auch gleich die Hälfte vergessen.


    Das ESP32 Terminal ist eigentlich nur ein Breakout Board für ein ESP32 Dev Board, um die wenigen noch benötigten passiven Bauteile und Anschlüsse unterzubringen. Auch die Idee ist von Fabrizio, genauso wie der gesamte Code. Die FabGL ist eine vollständige Grafik Bibliothek mit allem drum und dran (hohe VGA Auflösungen, Text, Sprites, Linien, Ovale, Rechtecke, etc). Dafür hat er dann auch gleich noch einige Demos geschrieben. U.a. einen VC20 Emulator, einen vollständigen 8080 PC Emulator,... und eben auch eine VT100 Terminal Emulation.



    Das Breakout Board habe ich eigentlich speziell für den Junior ][ gemacht. Ich verwende hier als Ein-/Ausgänge die TTL Signale des 6551 UART, die über den secondary Port der 25 poligen RS232 Schnittstelle geführt werden. Deshalb steht auch auf dem blauen Quetschstecker im Bild in mahnenden Worten "MAX232 raus", was nicht rassistisch sein soll, sondern diesen vor dem vorzeitigen Kurzschlusstod bewahren soll. Der Junior ][ wird auch direkt über das ESP32 Terminal mit Strom versorgt, so dass man da kein zweites Netzteil benötigt.

    Theoretisch könnte man das Terminal auch noch als Soundkarte nutzen, das ist allerdings im Vergleich zum auf dem IO Board eingesetzten Sound Chip natürlich eher bescheiden.

    Als Anhang noch der Schaltplan, den Ihr natürlich nach Belieben ändern und andersweitig weiter verwenden könnt.


    Die FabGL könnt ihr direkt in die Arduino IDE laden. Wie das geht, könnt ihr euch in diesem Video anschauen:

    https://www.youtube.com/watch?v=F2f0_9_TJmM


    und die Projektseite gibt es hier:

    FabGL: FabGL Library



    ähm,.. wie ? was ?? ist das Controller IC auf der Tastatur damit gemeint ?

    (einfach eine Brücke ? oder sonst noch was?)

    Genau Micha, einfach eine Brücke zwischen Pin 10 (VCC) und Pin 30 (AVCC) des ATMega32 Controllers ziehen. Ich war da bisher immer recht schlampig, was das anging, weil das bei den ATMega32 nicht besonders kritisch ist. Aber bei Martin hat das zwei unschuldigen ATMega1264P das junge Leben gekostet.


    Edit: gerade noch gemerkt, das der Schaltplan nicht dran hing.

  • Jörg, @all


    ich habe eben 10 Stück Leiterplatten bei JLC in Auftrag gegeben.... 8 werde ich gerne an Interessenten weitergeben ;)

    Sobald die hier sind, melde ich mich hier im Thread, bzw. wir können dann ja einen VT100 Terminal Thread starten um das

    alles etwas übersichtlicher zu machen.

  • Phuuu, geschafft.


    Jetzt hab ich dann doch lange beim Thema Tastatur Download prokrastiniert. Aber hier ist er nun. Das Rev. 2 Board mit ohne Quarz und PS/2, fehlerbereinigt und nicht mehr ATMega 1264P tödlich (hoffe ich), gibt es jetzt zum Download. Ebenfalls dabei ist die genaue Beschreibung der Tastatur und ein auf 2 uS verkürzter /STROBE Puls. Die unterste Tastenreihe ist, wie ich glaube schon erwähnt zu haben, hier dann auch um eine halbe Tastenbreite nach rechts gerutscht, um die Symmetrie stimmiger zu machen.

    Den zusätzlichen 2x7 pol Pin Header habe ich nun doch nicht mit auf die Platine gesetzt, da ich jetzt keinen Anschluss wirrwarr stiften wollte. Letztlich gibt es so viele verschiedene Anschlussarten, dass es sowieso immer irgendeinen gibt, den man dann nicht berücksichtigt hat. Ich hoffe das ist OK für euch. Ich denke, einen kleinen Adapter zu basteln, ist da die einfachere Lösung.


    Viel Spass


    Jörg

  • Super, danke für die Unterlagen für die Tastatur. Ich werde wohl die Adapter nutzen, von denen ich dir Fotos geschickt hatte, es sei denn, es kommt ein neue IO-Board, dann warte ich noch.

    Ein Frage noch, hast du die genaue Steckerbelegung von Port A und B des 6522 auf der linken Seite der I/O-Karte? Im Schaltbild ist das einreihig eingezeichent. Ich könnte jetzt die Leitungen nachmessen, aber dazu müßte ich wieder alles auseinander rupfen. Oder gibt es sowas schon und ich finde es nicht?


    Norbert

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

  • Danke Jörg!

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

  • Kurzes Update: Die Brücke alleine für AVCC reicht nicht. Hab es mit einem ATMEGA32PU probiert, der auch Rauchzeichen gegeben hat. Irgendwas anderes ist in der Schaltung noch schräg. Hab aber gerade keine Muße, mir das genauer anzuschauen.

  • klaly hatte mich gefragt, ob ich die KiCAD Dateien und eine Stückliste, bzw. einen Warenkorb posten könnte. Das kommt natürlich noch alles.

    Möchtest Du noch Bezugsquellen angeben, wo Du Tasten und Tastenkappen besorgt hast?


    Irgendwas anderes ist in der Schaltung noch schräg. Hab aber gerade keine Muße, mir das genauer anzuschauen.

    Ich habe mal drüber gesehen, aber kann nichts komisches entdecken. Du kannst ja mal versuchen, ob auch Rauchzeichen gesendet werden, wenn AREF über einen 100nF nach Masse gehängt wird, aber eigentlich sollte das IHMO auch ohne gehen. Ich würde eher ein Softwareproblem vermuten.

  • Möchtest Du noch Bezugsquellen angeben, wo Du Tasten und Tastenkappen besorgt hast?

    Steht in der Stückliste der Assembly Instructions die ich zum Download bereitgestellt habe. Unten nochmal als Anhang.


    Du kannst ja mal versuchen, ob auch Rauchzeichen gesendet werden, wenn AREF über einen 100nF nach Masse gehängt wird, aber eigentlich sollte das IHMO auch ohne gehen.

    Wenn der ADC nicht verwendet wird, braucht auch kein Kondensator an AREF hängen.

    Kurzes Update: Die Brücke alleine für AVCC reicht nicht. Hab es mit einem ATMEGA32PU probiert, der auch Rauchzeichen gegeben hat. Irgendwas anderes ist in der Schaltung noch schräg. Hab aber gerade keine Muße, mir das genauer anzuschauen.

    Hab gerade einen AtMega32PU und ATMega64PU ausprobiert und bei beiden läuft alles völlig normal. Ich glaube auch immer noch nicht, dass ein offener AVCC daran schuld sein kann. Dann hätte ich in der Vergangenheit da sicherlich schon Probleme gehabt. Ich tippe ja immer noch (wie von Beginn an) , dass bei dir die Fuse Bits nicht richtig gesetzt sind. Vor allem darf eben JTAG Enable NICHT gesetzt sein, da ich alle Pins benötige. Falls du das übersehen hast, kann ich mir gut vorstellen, dass es knallt.

    Lies bitte den ATMega, den ich dir zugeschickt habe erst mal vollständig ein (Mem, Data, Config), um die notwendigen Fuse Bits zu erhalten.


    Falls da kein Fehler drin war, tippe ich auch auf einen Fehler in deinem geänderten Code. Irgendwelche ursprünglichen Eingänge, die jetzt Ausgänge sind? Pullups anders gesetzt?

  • Hab gerade einen AtMega32PU und ATMega64PU ausprobiert und bei beiden läuft alles völlig normal. Ich glaube auch immer noch nicht, dass ein offener AVCC daran schuld sein kann. Dann hätte ich in der Vergangenheit da sicherlich schon Probleme gehabt. Ich tippe ja immer noch (wie von Beginn an) , dass bei dir die Fuse Bits nicht richtig gesetzt sind. Vor allem darf eben JTAG Enable NICHT gesetzt sein, da ich alle Pins benötige. Falls du das übersehen hast, kann ich mir gut vorstellen, dass es knallt.

    Lies bitte den ATMega, den ich dir zugeschickt habe erst mal vollständig ein (Mem, Data, Config), um die notwendigen Fuse Bits zu erhalten.


    Falls da kein Fehler drin war, tippe ich auch auf einen Fehler in deinem geänderten Code. Irgendwelche ursprünglichen Eingänge, die jetzt Ausgänge sind? Pullups anders gesetzt?

    Noch habe ich den Code ja gar nicht geändert. Wollte erstmal sehen, ob er so kompiliert wird und ladbar ist. Bei den Fuses habe ich erstmal, ohne groß nachzuschauen, die genommen, die Du dokumentiert hattest. Eigentlich sind die ATMEGAs auch ziemlich robust. Also auch mit falschen Fuses habe ich noch nie Brandopfer erlebt. Ich hab da noch einen Verdacht, dazu muß ich aber hier erstmal aufräumen um Platz für Messgeräte zu haben :)

    Du hast ja keine Abblockkondensatoren drauf und eventuell sind da, durch das lange Tastaturkabel, unschöne Spitzen in der Versorgung. Die würden dann natürlich bei höherer Last, wie dem von dir gelieferten Prozessor, niedriger ausfallen. Aber das ist noch nicht wirklich schlüssig.

  • Hex Monitor Version 1.0.2 / Disassembler – Bugfix


    Der Disassembler enthält 2 Fehler, die Befehle $96 und $B6 werden als STX $nn,X bzw. LDX $nn,X dekodiert.

    In beiden Fällen sollte es aber “$nn,Y” lauten.

    Bitte nicht falsch verstehen! Habe ganz großen Respekt vor “2ee”, der einen solchen komplexen Disassembler

    programmieren kann - Hut ab.

    Die Komprimierung der Tabellen ist einfach genial, da steckt viel Arbeit drin.


    Problemlösung: Bei allen 3 Hex-Ketten ADRMODE_M/C/R die letzte Spalte (E) vor die Spalte (C) setzen.


    forum.classic-computing.de/index.php?attachment/155557/


    Ich hoffe, daß ich nichts falsches geschrieben habe. Die geänderte Variante läuft jedenfalls auf meinem Original JUNIOR.

  • Hallo jet2bue ,


    vielen Dank für den Fehlerbericht! Da habe ich damals wohl echt nicht aufgepasst und irgendwie ist es mir dann bis heute nicht mal im Ansatz aufgefallen.


    Dein eingebettetes Bild wird leider bei mir (und vermutlich den anderen) nicht angezeigt. Das Problem hatte ich auch am Anfang immer wieder. Tipp: wenn du länger schreibst, vor dem Einfügen des Bildes nochmals die aktuelle Seite neu laden und dann erst einfügen, dann klappt es meines Wissens immer.


    Ich habe jetzt deine Lösung mangels Bild also wie folgt interpretiert:



    Ich werde die Änderung dann im BIOS 1.0.3 mit dem SPI und SD-Karten Code rausgeben.


    Mit dem Disassembler Code habe ich mich jetzt wirklich schon lange icht mehr beschäftigt. Wahrscheinlich hast du da gerade mehr Ahnung davon, wie mein Disassembler funktioniert als ich es gerade tue. Deshalb ebenfalls Hut ab, das du dich da durchgebissen hast.

    Meine Lösung ist leider immer noch nicht optimal. Ich weiss, dass der Apple II Assembler nochmals ein gutes Stück kürzer ist und ich war damals auch erst mal versucht da einfach zu kopieren. Aber letztlich hat die Herausforderung das selber zu machen dann doch gesiegt.

  • Ich hab jetzt gerade die Code-Änderung bzgl. des Disassembler Bugs für die kommende Version 1.0.3 eingepflegt und darin natürlich jet2bue entsprechend gewürdigt.


    Für alle, die verstehen wollen warum der falsche Address Mode decodiert wurde, hier die (möglichst kurze) kurze Erläuterung:


    Es gibt drei Listen zum decodieren der verschiedenen Adressmodi. Eine mit Masken Bytes, eine zweite mit Ergebnis Bytes und eine mit komprimierten Stringindizes. Der Opcode wird zunächst mit einer Mode Maske per AND verknüpft und dann geprüft, ob ein entsprechendes Ergebnis Byte herauskommt. Ist das der Fall, wird das zugehörige Index Byte dazu genutzt um den linken und rechten Stringteil des Mode Strings zu addressieren. Also z.B. "(" und "),Y".

    Jetzt ist es leider passiert, dass ich die zu den Opcodes ($B6) LDX ZP,Y und ($96) STX ZP,Y gehörenden Einträge ganz hinten in der List stehen hatte und ein vorheriger Eintrag bei der Verknüpfung Opcode AND Maske bereits ein entsprechendes Ergebnis geliefert hat. So wurde $96 ($B6) AND $1C = $14 statt $96 ($B6) AND $DF = $96 gefunden, sprich die Suche in der Liste wurde an der falschen Stelle abgebrochen und deshalb kam natürlich auch ein falsches String Index Byte ($00 statt $80) heraus.


    Ein simples Vertauschen der Einträge sorgt nun für das richtige Ergebnis. :)


    An dieser Stelle nochmals an alle, die hier so viel Zeit damit verbringen, das Projekt Junior Computer ][ mit ihren Beiträgen, Wünschen und Kritiken zu verbessern: Vielen Dank! :anbet:


    Scheut euch also auch in Zukunft nicht, gefundene Bugs und Design Pannen zu melden. Ich bin für alles dankbar, was den Junior voran bringt.


    Jörg

  • Hab jetzt mal einen Editor geschrieben, der den a65 Cross Assembler und das hex2bin transparent einbindet und eine gescheite Fehlerausgabe generiert um meine Nerven zu schonen.

    Nutzung natürlich für alle frei.



    Viel Spass damit


    Jörg

  • Für Bastelzwecke überlege ich noch eine kleine Zusatzplatine on the fly an die Backplane mit einem oder zwei weiteren I/O-Bausteinen (z.B. 6522) zu hängen. Die VIAs würde ich gerne auf $0C00 bis $0FFF bzw. auf $1000 bis $13FF betreiben. Welche Adressleitung muß dann an die beiden CS1-Anschlüsse, ich meine A13 wäre korrekt? Wären K3 und/oder K4 ok, wenn ich die gleiche Schaltung mit dem 74LS139 wie auf der I/O-Karte nutze?

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)

    2 Mal editiert, zuletzt von NorbertJ () aus folgendem Grund: Korrektur

  • Hallo Norbert,


    hier mal mein Vorschlag.


    Je nachdem, welche Select Leitung K2,K3 oder K4 du für das IO Board gewählt hast, wählst du dann (am Besten auch via Jumper) eine der freien K-Leitungen. Der Adressbereich wird ja durch Kx in 1KB große Bereiche unterteilt. Somit müssen noch 10 Adressleitungen A0..A9 kodiert werden.

    Schließe A9 an einen Inverter und diesen an CS1 ALLER 6522 an.

    A8 an einen Inverter und diesen an E3 eines 74LS138 3 zu 8 Decoders.

    A7 an /E2 des 74LS138.

    Kx an /E1 des 74LS138.

    A4...A6 an A0...A2 des 74LS138

    A0...A3 an RS0..RS3 ALLER 6522.

    /Q0 des 74LS138 an /CS2 der VIA1

    ...

    /Q7 des 74LS138 an /CS2 der VIA7


    Mit Kx = K2 wäre dann z.B. der Adressbereich $0800 bis $0BFF angesprochen. Da A9...A7 immer 0 sein müssen liegt somit jede VIA an einer Adresse $08V0-$08VF mit V = 0...7 für VIA0...VIA7. Die unteren vier Bit wählen dann die Register aus.


    Natürlich kannst du dir die Inverter auch sparen und die Anschlüsse CS1 und E3 einfach auf +5V legen. Dann hast du halt eine unvollständige Dekodierung, was auch nicht schlimm wäre, wenn du nicht planst, diese Adressbereiche noch für andere Bausteinchen zu nutzen.


    Ich hoffe, das hilft dir weiter.


    Jörg

  • Danke Jörg, du meinst vermutlich mit E3 K3, oder? Ich tendiere zur einfacheren Methode.

    ___________________________________________________________________________________________________

    "Traue niemals einem Computer, den du nicht aus dem Fenster werfen kannst" (Steve Wozniak)