Junior Computer ][

  • Ich denke ich mache es jetzt so: Wenn gewünscht, verbindet man den Ausgang Q3 des 74LS145 mit einer Diode mit PB0. Ich lege dann bei der Initialisierung an PB1..PB4 den Wert %0011 an und frage PB0 ab. Bei PB0 gleich LOW läd dann die Initialisierungsroutine den Baud Wert wie gehabt aus Adresse $FFF9. Wenn die Tastatur und das Display dann nicht benötigt werden, kann ich dann einfach PB1..P4 auf $1111 legen, da dann alles Ausgänge des LS145 offen, bzw. High sind. Das Schema ist also das gleiche wie das aufgezeigt Beispiel von Commodore mit dem CA2 Signal.

    Bei der vorher von mir überlegten Methode hätte ich leider wieder das Problem, dass bei einem angelegten Datum an PA0..PA6 bei einer gedrückten Taste Rückkopplungen auf PB0 möglich sind.

    Mal sehen, ob ich am Wochenende dazu komme den Patch anzupassen, sollte aber nicht allzu aufwändig sein.

  • Hallo zusammen,


    lange hat es gedauert, aber nach einigen Monaten des Lötens und Programmierens ist jetzt die erste vorzeigbare Version des XLink-Adapters für den Junior-Computer 2 fertig!


    Die Features sind exakt dieselben, wie schon vor einigen Monaten vorgestellt. Es wird jedoch wie geplant anstelle der AVR-CPU die China-CPU CH552 von WCH verwendet. Dies macht den Adapter wesentlich preiswerter, wenn auch etwas schwieriger nachzubauen, da es den CH552 nur als SMD gibt und ich hier sogar auf die kleinste Version im TSSOP20-Gehäuse angewiesen bin, da nur diese Version zwei zwingend benötigte Port-Pins rausführt.



    Ich habe mir vor einigen Wochen ein paar Adapter gebaut, um diese dann direkt an der Erweiterungsplatine für den Junior Computer 2 zu testen.




    Ich brauchte im Quelltext meines JC2-Kernals nur die Basisadresse des VIAs auf $0800 anpassen und schon funktionierte alles wie schon zuvor mit meinem eigenen VIA-Adapter und dem originalen XLink-Adapter für den C64. Die Funktionalität ist sogar derart kompatibel, dass ich inzwischen den eingebauten Benchmark laufen lassen kann:



    Der "-M C128"-Parameter ist notwendig, um die Menge an Daten auf 8kByte zu begrenzen. Der Standard-Benchmark für den C64 überträgt wesentlich mehr Daten. (u.a. auch an Stellen, an denen der Junior Computer 2 kein RAM hat. Da funktioniert dann das Vergleichen zwischen gesendeten und empfangenen Daten nicht mehr...)



    Mal schauen, wie es in den nächsten Monaten weitergeht. Jetzt steht erstmal Weihnachten vor der Tür, da wird sich zum Basteln nicht so viel Zeit finden. Ich habe aber schonmal eine ganze Menge Infos auf meinen Github-Account abgelegt, den ich hier und hier verlinke.


    Falls ich im neuen Jahr mit diesem Projekt fortfahre, möchte ich die Software (sowohl die Firmware als auch den Kernal) nochmal ein wenig überarbeiten. Sie läuft zwar störungsfrei, aber vielleicht kann ich ja beispielsweise noch eine Watchdog-Funktionalität integrieren, damit sich der Adapter bei gegebenenfalls auftretenden Übertragungsstörungen selbst zurücksetzt. Die Adapterhardware halte ich für ausgereift. Man könnte zwar noch das ein oder andere Bauteil weglassen, aber die jetzige Version ist für mich absolut vorzeigbar und wird so bleiben...


    Vor ein paar Tagen habe ich auch noch ein wenig mit KiCAD gespielt und den Adapter auf ein kleines Panel gesetzt. Damit könnte man die Platinenkosten noch ein wenig reduzieren. :)




    So, das war es erstmal von mir.


    Gruß

    Thomas

  • für Dumme, ...
    was mach xlink, bzw. wie funktioniert das ?
    Was muss auf der JC2 Seite in der Firmware vorhanden sein.

    Sorry für die Frage, aber ich habe keine Ahnung worum es da geht.


    mfG. Klaus Loy

  • ich hatte mir zunächst nur den ersten GitHub Link angeschaut.
    OK, es gibt da noch den zweiten.
    Aber so ganz erschließt sich mir nicht was das xlink Zeug so macht.

    Interessant ist, dass der CH552 ein 8051 Chip ist, ich dache immer das wäre "einfach nur ein USB/UART Chip" .

    mfG. Klaus Loy

  • Aber so ganz erschließt sich mir nicht was das xlink Zeug so macht.

    XLink ist eine komfortable Möglichkeit, vom PC aus auf den Speicher eines 6502-Systems zuzugreifen, um z.B. Programme zu übertragen, welche auf dem PC assembliert wurden. Oder auch um einzelne Speicherstellen zu beschreiben oder auszulesen.


    Wurde ursprünglich vom Forum64-User "henning" vor einigen Jahren entwickelt und sehr gut dokumentiert: Klick mich an!


    Ich war damals davon echt begeistert und benutze es heute noch. Und finde, dass es sich auch gut für andere Systeme eignet...


    Ich verlinke nochmal mein Video, das ich im August gemacht habe: Youtube-Video


    Interessant ist, dass der CH552 ein 8051 Chip ist, ich dache immer das wäre "einfach nur ein USB/UART Chip" .

    Da ist ein vollwertiger 8051 mit drin, der sich über USB programmiren lässt. Außerdem braucht der Chip keinen externen Quarz um über USB zu kommunizieren. Das finde ich schon sehr attraktiv! Letztlich spielt der CH552 Schnittstelle zwischen dem über USB angeschlossenem PC und dem Parallelport des Zielsystems...


    Gruß

    Thomas

  • Hallo Thomas,
    sehr interessantes Projekt, sehr interessantes Video.
    Hast du so eine Platine übrig, das gefällt mir.
    Falls die Frage mit Ja beantwortet werden kann, wievile würde es kosten so eine Platine, am besten gleich mit Chip ?

    mfG. Klaus Loy

  • Hallo Thomas,


    super, dass du mit dem XLink Adapter weitergemacht hast. Ist einfach ein super Projekt! Und dein Platinenlayout ist mal wieder spitze. Hat mich auch gleich wieder daran erinnert, auf der Junior Platine JLCJLCJCLJLC zu setzen. Mal schauen, ob ich mich in einer Woche noch dran erinnere. :)



    Beim geänderten Baud Rate Patch kann ich leider noch keinen Vollzug melden, bei mir ist vor Weihnachten gerade einfach zu viel los. Ich werde es mal für den 26. anvisieren, bin aber gerade noch nicht sicher, ob es zeitlich 100% klappt.

  • Diesen guten Wünschen schliesse ich mich gerne an!


    Norbert

    ___________________________________________________________________________________________________

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

  • Hallo Zusammen,

    ich hoffe ihr hattet alle ein paar schöne und erholsame Tage.


    Heute hab ich jetzt die (hoffentlich) endgültige Lösung für klaly s Seelenheil fertig gestrickt.

    Letztlich, ähnlich der alten Lösung.


    Beim Start wird jetzt durch PB1..PB4 = %0100 am 74LS145 (U9) der Ausgang Q4 (Pin4) aktiviert, wobei dieser dann auf Low geht. Dann wird PB0 als Eingang geschaltet und abgefragt, ob dieser nun auf Low liegt und wenn ja, auf die automatische Baudraten Erkennung verzichtet.

    Das ist nur dann der Fall, wenn Q4 mit PB0 verbunden wurde. Ich hab das jetzt durch eine Diode gemacht (Kathode an Pin4 des 74LS145 und Anode an z.B. Port Connector J4 Pin 11). Man kann eigentlich auch auf die Diode verzichten und Q4 direkt mit PB0 verbinden, da Q4 im Normalfall immer open collector ist.



    Wie von Klaus vorgeschlagen, könnte man den Display Schalter SW25 durch einen mit zwei Wechselschaltkontakten ersetzen und bei Stellung "Display On" die Verbindung Q4-PB0 unterbrechen, um den Junior dann noch im Originalzustand ohne Terminal nutzen zu können. Wenn zusätzlich ein Schalter in Reihe eingebaut wird, kann man auch bei gewünschter automatischer Baudrate Erkennung (Verbindung Q4-PB0 unterbrochen) das Display noch dauerhaft ausschalten, was ich schon als wichtig erachte.


    Anbei wie gehabt eine 8K und eine 32K Version des BIOS.


    Viel Spass


    Jörg

  • Ich hab jetzt mal für den Junior eine schöne kleine ASCII-Tastatur, auf Basis von bei AliExpress erhältlichen Tastenkappen, für Cherry Tasten designed.


    Beim Controller habe ich mich für einen ATmega32-16 entschieden. Das Layout lehnt sich stark an den AIM 65 an, ist aber wegen ein paar anders beschrifteter Tastenkappen, sowie zusätzlichen Tasten nicht vollständig kompatibel. Ich hab allerding die Tastenmatrix 1:1 nach dem AIM 65 gestaltet und einen zusätzlichen passiven Anschluss mit AIM kompatibler Belegung vorgesehen. Für den Fall, dass man die Tastatur also an einen AIM 65 anschließen möchte, kann dann der aktive, obere Teil auch einfach abgesägt werden.

    Zusätzlich zum Apple 1 und natürlich Junior ][ kompatiblen ASCII-Anschluss hab ich auch noch einen PS/2 Ausgang vorgesehen, um die Tastatur eventuell an eine Terminal Elektronik anzuschließen. Da muss ich aber erst mal schauen, wann und ob ich das in den uC programmiere.

    Ich werde mich jetzt erst mal an die uC Programmierung setzen und dann die Platinen machen lassen. Wer interesse hat, kann sich dann einfach bei mir melden.

    Die Tastenkappen haben mich etwa 28€, 100 x Cherry MX Brown Switches etwa 16€ und die Stabilisatoren etwa 7€ gekostet. Bei der Platine werden es wohl etwa 8€/Stk werden. Alles zusammen mit ATmega also um die 65€ (bei einer Sammelbestellung der Tastenkappen, etc. natürlich weniger).


    Hier mal das Layout...


    ...und die Platine


    Rechts unten, neben den Pfeiltasten sitzt noch eine Power Anzeige. Ich denke da an so etwas wie bei der Apple ][ Tastatur. Falls jemand weiss, wo man ein Status-LED Modul im Cherry Tastenformat herbekommt, meldet sich bitte bei mir. Ansonsten müsste man da eventuell was für 3D Druck konstruieren.


    Edit: Reset gibt es dann mit der Tastenkombi Ctrl-Shift-Del

  • Hallo Thomas,


    ich bin da mit Bestellungen erst mal vorsichtig, bis ich eine Tastatur dann auch wirklich am Junior zum Laufen gebracht habe. Meine einzige ASCII Tastatur hatte ich mir ja blöderweise geschrottet, als ich sie vom Junior erst mal wieder an meinen Apple 1 gesteckt und dort leider den Stecker verdreht hatte. Deshalb konnte ich erst mal keine weiteren Funktionstest am Junior mehr machen. Ich werde jetzt erst mal eine kleine Breadboard Version machen und damit ein wenig rumspielen. Wenn ich erfolgreich war, bist dann du aber natürlich fest eingeplant. :)

  • Hallo Jörg,


    cooles Projekt!


    Wenn das ganze funktioniert und es zu einer Bestellung kommt, bin ich wie Thomas ebenfalls an einer Komplettversion mit allen Teilen und Platine interessiert.

    ___________________________________________________________________________________________________

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

  • Da mir die Space Taste zu weit rechts von den Alpha Tasten lag, hab ich jetzt das Tasten Layout der untersten Reihe nochmal etwas geändert. Die linke Ctrl Taste ist nun weg, und Space und alle folgenden Tasten sind nach links gerutscht. Die Tilde-Taste befindet sich jetzt ganz rechts, womit das ganze Tastaturbild symmetrisch wird. Die Power LED konnte somit nach ganz rechts oben, neben den Microcontroller wandern, da ich sie dann nicht mehr als Symmetrieausgleich da unten benötige.



    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. Aber jetzt bin ich noch ein wenig in der Anfangsphase, weshalb ich Änderungen eben noch nicht ausschließen kann. Ich denke, dass ich in spätestens 14 Tagen den Controller soweit fertig habe und dann die Platinen bestellen werde. Ich melde mich aber natürlich noch vorher. Eine Sammelbestellung macht dann sicherlich Sinn, um die Versandkosten da nochmal zu drücken.

  • Links keine Ctrl-Taste zu haben sieht für mich völlig falsch aus.


    Warum nicht wieder eine zweite Ctrl-Taste, unter der linken Shift-Taste, links von den Pfeil-Tasten?

  • Vorschlag: Die beiden überzähligen Tasten ( Tilde und Backslash) kommen nach rechts neben das rechte Shift Key in die zweite Reihe (von unten), also ganz außen. Das Shift Key wird bißchen kleiner (wie links ungefähr) und wandert dorthin, wo der Vielschreiber das erwartet: 3 Tasten rechts vom M. Die untere Reihe bekommt: Ctrl Left Right SPAAAACE Ctrl Up Down. Das Ganze symmetrisch zum eigentlichen Schreibfeld. Space muß dabei eine Mindestlänge haben von ca. Mitte des "C" bis Mitte "<"



    edit1:

    Hier mal wegen der Optik noch ein "Verschub" (Space nach Mitte "X"), aber mittlerweile wohl schon obsolet



    edit2:

    Die Platine könnte im Bereich des Space Key Aufnahmen für Federn haben. Also einfach Metallpunkte (ca. 5mm o.ä.) und einen Durchkontakt am Punktradius. Davon jeweils 2 in regelmäßigem Abstand links vom SpaceTaster und 2 rechts davon. Und zwar unterhalb der Taste.

    Dort lassen sich dann an einer Seite abgeschnittene Kugelschreiberfedern einlöten, die das Space Key stützen. Wer mehr Federspannung haben will, baut alle 4 ein; für weniger gibt es halt nur 2; nach Wahl und Geschmack. Denn eine Fürhrung braucht so eine Taste und was Aufwändiges ala Drahtgebilde und Plastikclips scheidet wohl aus (und ist auch nicht nötig).

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Ja, die Cursortasten hätte ich eben auch gerne links und rechts verteilt gehabt.

    Ich werde wohl die Pfeiltasten lassen und die Ctrl Taste einfach ganz nach recht unter Shift schieben. Für mich spricht eigentlich nichts dagegen, rechts Ctrl zu haben. Die wurde ja früher auch nicht so oft benötigt. Bei meiner abgerauchten Cherry G80 war die Control Taste noch da, wo heute TAB sitzt.

  • Ich hätte das so verstanden, daß angemahnt wurde, daß man ( for(;;) ) auf beiden Seiten ein Ctrl haben möchte.


    (mein aktuelles Keyboard hat z.B. nur Ctrl links und klein. dafür ganz außen = gut zu finden ; Nachteil: Ctrl+C oder Ctrl+Q oder Ctrl+S sind immer mit Fingerverrenkungen verbunden.)


    Für links und rechts würde auch sprechen, daß man - wenn das mit den Cursortasten so bleibt - dann jeweils einen Switch für die andere Seite hätte, der aus dem Up / Down z.B. ein PageUp / PageDown machen könnte. Und für links analog aus - mit der rechten Ctrl zusammen - Left / Right ein LineStart / LineEnd. Macht die Sachen gleich viel verwendbarer.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Die Tilde-Taste rechts unten finde ich ungewöhnlich. Ansonsten für mich in Ordnung. :thumbup:

    Die Pfeiltasten rechts und links verteilt finde ich 'gamer-freundlicher'.

    Wer weiß, was noch alles an Hardware/Software kommt...

    ___________________________________________________________________________________________________

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

  • Die Pfeiltasten rechts und links verteilt finde ich 'gamer-freundlicher'.


    Nicht nur das. Aber dafür tatsächlich "essentiell". :)

    Spielt mal mit 4 Cursortasten nebeneinander.



    Hier mal noch ein CTRL Mod der einfachen Art. Ist aber nicht wirklich gut, weil man vmtl von der Schreibposition nach links unten auf die Pfeiltasten rutschen können will. D.h. Space muß dann Mitte C enden und dort muß dann Right sitzen. Einfach mal probieren - Zehnfingerkeyposition ist mit Zeigefinger links auf "F", dann Hand schräg links runterziehen.



    edit: Nachteil - es sieht irgendwie nicht mehr aus wie das AIM-65 Vorbild. Zuviel "Key" links unten. Space Key einkürzen hilft optisch evtl., darf aber nicht zu extrem sein, weil ein zu kurzes Space jede Benutzbarkeit killt.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Hier ist noch was, was nicht direkt dazupaßt, aber dann eben irgendwie doch. Es geht anscheinend um C64Tape Port und den Anschluß einer PS/2 Tastatur daran. Könnte ja evtl mal einen Blick wert sein. Kein Ahnung, ob und wie das geht bzw., ob das wirklich wünschenswert ist (einmal Keyboard abgezogen Rechner hinüber, oder soetwas evtl.).


    GitHub - mist64/ps2keyboard
    Contribute to mist64/ps2keyboard development by creating an account on GitHub.
    github.com

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Y und Z wird man sicherlich auch nachträglich austauschen können.


    Das ist eher eine Softwarefrage. Und die Tastenkappen kann man ja sowieso wechseln. Ähnliches gilt sicherlich auch für die eckigen Klammern, die bestimmt einige Leute eher nebeneinander sehen wollen, wobei das da so schon auch irgendwie witzig ist. Macht man ja immerhin damit einen Block auf (oben) und schließt ihn (unten).

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries