Junior Computer ][

  • Hallo Norbert,

    ich weiss nicht, ob das mit der Freilaufdiode dann noch ein Problem darstellt. Auf der neuesten IO Platine ist die ja nun direkt vorgesehen. Ich hatte es aber jetzt tatsächlich noch nicht ausprobieren können, da bei meiner letzten Reichelt Bestellung die Reed Relais nicht verfügbar waren.

    Ein ähnliches Relais zu dem von dir gefundenen wäre dann dieses hier, die Schaltleistung liegt hier bei 5A, kostet nur 71 cent, ist aber auch anders belegt. Wäre tatsächlich besser gewesen, ich hätte so ein Relais genommen :tüdeldü: . Alternativ dann bitte auf dem Lochrasterfeld ein anderes Relais (Solid State?) einlöten.

    Hallo Jörg,

    das konntest du vorher nur bedingt absehen. Ich halte Solid State für sinnvoll. Der einzige Nachteil bei meinem ist, dass das Schalten gut hörbar ist.

    Ich habe schon eines auf dem Lochrasterfeld verdrahtet und es funktioniert prima. Ein Ästhet könnte sich ja zu Not auch ein Lochraster-Zwischenplatinchen basteln und das dann in die eigentliche Fassung stecken, das sollte nicht schwer sein.

    ___________________________________________________________________________________________________

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

  • Hallo Jörg,

    hast du mich auch schon für einen Bausatz notiert? Hatte ihn ja schon angemeldet:

    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)

  • Ich weiß, ich bin spät dran mit dem Vorschlag. Platinen hast Du ja schon bestellt. Meine alte Tastatur hatte oben eine Reihe Funktionstasten, die man im EPROM mit Zeichenfolgen belegen konnte. Hat man die gedrückt, wurde dann halt einfach die Zeichenfolge gesendet. Sparte beim Programmieren einiges an Aufwand beim Tippen. Wäre geneigt, etwas ähnliches aber ohne die ganzen Tasten einzubauen. Also nur eine FN-Taste oder so zu haben, die dann in Verbindung mit einer anderen Taste bestimmte Sequenzen auslöst.


    Da das Layout jetzt steht und Platinen bestellt sind (und ich sowieso Y und Z tauschen würde), würde ich mal schauen ob ich eine der anderen Tasten "umfunktionieren" kann, zum Beispiel die F1 oder F2, die ich im Layout sehe.

    Hallo Martin,

    die Tastatur war ja von vorne herein auf das AIM65 Keyboard Design hin geplant. Deshalb war klar, mehr als die drei Funktionstasten kommen da nicht drauf. Die Idee, diese Tasten direkt im Microcontroller als Makro belegbar zu machen, ist mir auch bereits durch den Kopf gegangen. Die Überlegung war, mit Ctrl-Fx das Makro zu starten und genauso wieder zu beenden und den eingegebenen String zu speichern. Also z.B. Ctrl-F1 P R I N T Ctrl-F1. Mit der Shift Taste zusammen könnten dann also 6 Funktionstasten belegt werden. Allerdings ist diese Methode natürlich nicht mehr so flexibel, weil ich das nicht kontextabhängig wieder ändern kann. Wenn ich die Tastatur an dem Junior ][ betreiben will, geht das sowieso nur mit dem IO Board. Hier könnte ich im gepufferten Uhren RAM dann auch solche Makros speichern, dann aber z.B. für BASIC andere als für den Monitor, etc. Letztlich ist das aber natürlich Geschmackssache.

    Die Tastatur wird sowieso vollständig Open Source, bzw. CC. Dann kann hier natürlich jeder den Code oder das Platinenlayout nach seinem Geschmack ändern.


    CAPS LOCK:
    ich favorisiere ebenfalls die linke Tastenkappe :thumbup:

    Hallo Thomas,

    ich dachte mir schon, dass die linke Tastenkappe den meisten hier besser gefällt. Ist einfach mehr Old School. Es ist aber wie gesagt, mit der aktuellen Platine möglich beide Tastenkappen zu nutzen, da die Taste entsprechend versetzt in beide Positionen eingebaut werden kann. Ob du dann die LED in der Taste haben möchtest, bleibt dir auch überlassen. Die alternative Position rechts oben ist dann für alle Interessant, die die Tastenkappe nicht durchlöchern möchten.


    hast du mich auch schon für einen Bausatz notiert? Hatte ihn ja schon angemeldet:

    Hallo Norbert, natürlich stehst du schon auf der Liste :) .


    Bisher habe ich da NorbertJ , deleted_01_24 , Thilo, HansOtten , 286Micha , felge1966 und zwei mal tante ju stehen. Eine ist natürlich erst mal für mich, und eine weitere hatte ich für meinen Apple 1 geplant gehabt. Allerdings werde ich da wohl nochmal irgendwann Platinen, evtl. in Grün und ohne JC2 Logo, machen lassen. Deshalb wäre Stand jetzt noch eine im Junior ][ Design zu vergeben.

  • So, es ist so weit. Die Tastatur ist schon mal aufgebaut. Funktion zwar noch minimal, aber ich bin dran.



    Ich hatte mich jetzt übrigens dazu entschieden, die Space Taste doch linksbündig zu "C" zu stellen, damit man sich die Finger nicht zu sehr verbiegen muss. Daran hat zwar die Symmetrie etwas gelitten, ich finde aber, das ist ganz OK so.


    Weitere Bilder hab ich mal im Thread An was bastelt ihr gerade ... gestellt.

  • hast du mich auch schon für einen Bausatz notiert? Hatte ihn ja schon angemeldet:

    Hallo Norbert, natürlich stehst du schon auf der Liste :) .


    Bisher habe ich da NorbertJ , deleted_01_24 , Thilo, HansOtten , 286Micha , felge1966 und zwei mal tante ju stehen. Eine ist natürlich erst mal für mich, und eine weitere hatte ich für meinen Apple 1 geplant gehabt. Allerdings werde ich da wohl nochmal irgendwann Platinen, evtl. in Grün und ohne JC2 Logo, machen lassen. Deshalb wäre Stand jetzt noch eine im Junior ][ Design zu vergeben.

    Hallo Jörg, dann würde ich mal für die letzte Tastatur die Hand heben.

  • Hallo Jörg, dann würde ich mal für die letzte Tastatur die Hand heben.

    Ist notiert :) .


    Übrigens hatte ich auf fast allen Bildern, auf denen ich die Tasten mal zur Veranschaulichung angeordnet hatte, vier jeweils verkehrt herum (~ `, " ', + = und | \) . Das ist dann leider auch auf der Platinenbeschriftung so drauf. Mittlerweile ist das aber geändert, so dass neue Platine da nicht irritieren. Aufgefallen war mir das, als ich gestern die PS/2 Make- und Break-Codes durchgegangen bin.


    Ausserdem musste ich mich mal mit den Pfeil Tasten auseinandersetzen, da es ja hierfür keine offiziellen ASCII-Codes gibt. Ich hab mir deshalb mal den Schaltplan des Apple //e und dessen Keyboard Encoder 3600 Pro angeschaut. Apple hat hier im ROM Rechts-Pfeil mit ASCII 21 (NAK), Links mit 8 (BS), Abwärts mit 10 (LF) und Aufwärts mit 11 (VT) belegt, was natürlich Sinn macht.

    Da ich mit Ctrl+Rechts-Pfeil noch TAB emulieren wollte, wird hier nun ASCII 9 (HT) erzeugt. Für Ctrl+Abwärts-Pfeil hab ich mich für ASCII 12 (FF) Ctrl+Links-Pfeil für 6 (ACK) und Ctrl+Aufwärts-Pfeil für 24 (CANCEL) entschieden.

    Bei den Funktionstasten hab ich folgende Control Codes genommen F1 = 17 (DC1), F2 = 18 (DC2), F3 = 19 (DC3) und Shift+F1, F2, F3 = 28, 29, 30.

    Letztlich bleiben dann noch PRINT und HOME übrig. Bei PRINT konnte ich mich nicht wirklich entscheiden, letztlich ist es dann ASCII 20 (DC4) geworden (war von den F-Tasten noch übrig).

    Bei HOME wird ja auf dem Apple 1 kompatiblen Stecker die Extraleitung CLS ausgelöst. Diese ist aber auf dem Junior nicht belegt, und auch nicht wirklich irgendwie Standard. Ich generiere jetzt deshalb zusätzlich einen ASCII-Code 1 (SOH). Das war für mich bzgl. Bedeutung noch am nähesten dran.


    Apropo 3600 Pro: Ich versuche mal das Timing auf der Tastatur, dem des 3600 anzugleichen, da dieser Baustein (bzw. 9600 und AY5-3600 oder PIC1650A) doch so ziemlich auf den meisten ASCII Tastaturen zu finden war (außer natürlich dem 8048). D.h. die Debounce Time liegt hier bei etwa 10ms, auch wenn aktuelle Cherry Tasten da bereits bei 1ms liegen. Strobe ziehe ich jetzt 100us auf Low. Das sollte auch für alle ältere Rechner mehr als genug sein.

  • Hi Jörg,

    Dein Tastaturprojekt ist Dir mal so richtig saustark gelungen, Respekt! :thumbup:

    Vorfreude steigt ... :sabber:

    Gruß

    Thilo

    Das Wissen ist das einzige Gut, das sich vermehrt, wenn man es teilt. (Marie von Ebner-Eschenbach)

  • Hier ist jetzt mal der C Code für die erste Fassung der Firmware mit folgenden Features:


    - Auto Repeat mit wählbarer Delay Länge vor dem Auto Repeat und konfigurierbarer Typematic Rate (Zeichen pro Sekunde).

    - Reset der Tastatur bei einkommenden Reset vom Computer.

    - Senden eines Reset an den Computer via Ctrl-Shift+DEL.

    - Home Taste sendet ASCII 1 (SOH) und setzt CLS Anschluss für 25ms auf HIGH. Diese Taste ist vom Auto Repeat ausgenommen.

    - Mit Ctrl+Pfeiltasten kann Horizontaler Tab, Horizontaler Backtab, Page Up und Page Down emuliert werden.

    - Bei eingerasteter Caps Lock Funktion dreht Shift wie erwartet die Funktion für die Alpha Tasten wieder um, macht also aus einem großen A ein kleines a.

    - Strobe Länge liegt bei 100us.

    - Debounce Time von 10ms, mit dynamischer Verlängerung, wenn weitere Tasten gedrückt werden.

    - Tasten Scan Rate von 50 kHz

    - N-Key Rollover. D.h. es können mehrere Tasten gleichzeitig gedrückt werden.


    Der PS/2 und der RS232 Anschluss müssen noch warten. Genauso wie der Anschluss an meinen Junior, weil ich mir leider beim Quetschen der Tastatur Stecker meinen letzten DIL Flachbandquetschstecker zerdrückt habe. :wand: . Jetzt heißt es auf die nächste Bestellung bei Reichelt warten :(, oder mit einem Präzisionssockel was löten.


    Da jetzt alles soweit funktioniert, würde ich auch die Bauteile bestellen.

    Platine, Tasten, Tastenkappen, Stabilisierer, Sockel, Microkontroller (ATmega32A), Widerstände, Kondensatoren, LEDs (5mm), und Quarz (12MHz) kosten mich dann pro Set 58,50. Inkl. Porto und Verpackung an euch liegt das ganze dann bei 65€.


    Bei Reichelt sind leider gerade nur die HC49U-S Quarze (kurze Bauhöhe von 3,6mm) erhältlich. Man könnte deshalb auch 16MHz Quarze nehmen, dazu muss im Code nur eine Kleinigkeit geändert werden. Falls jemand bestimmte Bauteile nicht benötigt, sagt mir bitte Bescheid, dann bestelle ich da dann weniger.

    Da ich somit mit fast 600€ in Vorkasse gehen würde, möchte ich alle Besteller entgegen meiner sonstigen Gepflogenheiten bitten, mir das Geld dann bereits vor meiner Bestellung zu überweisen. Ich hoffe das ist für alle OK. Ich melde mich aber nochmal vorher bei jedem Einzelnen.

    Bei den Tastenkappen wird mir gerade ein voraussichtliches Lieferdatum von 24 Februar angezeigt. Ich hoffe natürlich dass es nicht wirklich so lange dauern wird, aber geht einfach mal vom Worst Case aus.


    Gerber Dateien, Schaltplan, Aufbauanleitung, Firmware und Bauteilliste mit Bestell-Links werde ich bis Mitte nächster Woche dann auf meiner Internetseite gebündelt bereitstellen.


    Cheers


    Jörg

  • Hallo Jörg,

    super Arbeit, ich habe gerade das Geld überwiesen. Wird der Baustein schon programmiert sein?


    Liebe Grüße

    Norbert

    ___________________________________________________________________________________________________

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

  • Hallo Norbert,


    ja, ich würde die ATmegas dann bereits programmieren und mit meiner Tastatur ausprobieren, so dass ihr da möglichst wenig Probleme habt.

    Ihr könnt mir dann auch gleich sagen, ob ihr eine QWERTZ oder QWERTY Tastatur haben wollt.

    Ich hab meinen mit dem Minipro TL866A programmiert. Ihr braucht da also nichts besonderes, falls ihr den Code noch (mit dem MicroChip Studio) selber ändern möchtet. Wie die Fuses gesetzt werden müssen, werde ich natürlich auch in die Beschreibung mit reinpacken.

  • Hallo Jörg,


    super, das ist prima. Ich hätte gerne QWERTY, dann bleibt es etwas stilechter, finde ich. Der Rest ist ja auch nicht nach deutscher Norm.

    ___________________________________________________________________________________________________

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

  • Hallo Jörg,


    für mich bitte auch QWERTY Layout.

    Sendest Du mir bitte auch die PayPal / Bankdaten für die Vorkasse per PN.


    Könntest Du auch mit DHL versenden ?


    Grüße

    Helmut

  • Gerber Dateien, Schaltplan, Aufbauanleitung, Firmware und Bauteilliste mit Bestell-Links werde ich bis Mitte nächster Woche dann auf meiner Internetseite gebündelt bereitstellen.

    Wie lautet denn die Adresse deiner Internetseite?

  • Nun hab ich gestern beim Aufräumen meines Elektronikarbeitsplatzes doch noch einen DIL 16 Qutschstecker gefunden und konnte somit das Kabel für die Tastatur fertig machen. Ich hab dann natürlich gleich mal ein kleines Programm schreiben müssen, das die Tastatur abfragt. Und was soll ich sagen, die Tastatur hat auf Anhieb funktioniert :kafeee: .


    Allerdings war dann doch noch ein kleiner Show Stopper drin: Wegen der noch fehlenden Key-Up-Erkennung löste eine losgelassene Shift Taste sofort den zuvor ausgegebenen Großbuchstaben nochmals als Kleinbuchstaben aus also z.B. sowas hier: Ddas ist ein Ttest.

    Sah irgendwie nach stottern aus.

    Da ich ja sowieso für die PS/2 Schnittstelle noch Make- und Break-Codes benötige, hab ich das Problem dann gerade eben beseitigt. Jetzt läuft alles wie gewünscht und verhält sich (fast) wie eine PC-Tastatur.



    Die obere "THE QUICK BR..." Zeile ist mit eingerasteter Caps Lock Taste geschrieben, die zweite dann mit Caps Lock und gedrückter Shift-Taste. Hier kann man schön sehen, dass Caps Lock eigentlich wie eine Alpha Lock Taste funktioniert und die Tastatur dann statt !"§... eben 123... ausgibt. Ich fand das gerade für Programmiersprachen wie COMAL nützlich, das ja für die Schlüsselwörter Großbuchstaben fordert.


    Auf der Platine hab ich dann auch noch einen kleinen Fehler gefunden, der allerdings seltsamerweise die Funktion nicht beeinträchtigt hat. Einer der beiden 22pF Kondensatoren des Schwingkreises war nicht an Masse angeschlossen, weil ich im Schaltplan die Leitung nicht ganz runter gezogen hatte (sah man erst bei mehrfacher Vergrößerung des Schaltplans). Das hat den Quarz aber offensichtlich nicht davon abgehalten loszuschwingen. Ich hab jetzt einfach eine kleine Drahtbrücke von C1 nach C2 gezogen, um die Masseverbindung herzustellen. Ich werde allen, die eine Tastatur bestellt haben, dann gleich die Kondensatoren einlöten und das Massebeinchen von C1 an C2 löten. Dann müsst ihr meinen Fehler nicht ausbügeln.


    Jedenfalls hab ich wegen der beiden Bugs auch noch nichts zum Downloaden bereitgestellt, weil ich noch keine Zeit hatte, den Fehler im Platinenlayout zu ändern.


    CJa


    Jörg

  • Super Arbeit, danke Jörg!

    ___________________________________________________________________________________________________

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

  • Heute hab ich mal den Treiber für die Tastatur geschrieben. Hier hat sich mein kleines Treiberkonzept wirklich gut bewährt, weil nun ein Umschalten zwischen verschiedenen Ein-/Ausgaben wirklich einfach ist. Zuerst sah jedenfalls alles recht gut aus. Als ich dann aber ein Hex-Listing mit ESC abbrechen wollte, war klar, dass die 100uS für den Strobe Pulse nicht ausreichen, um zwischen den Ausgabezeilen das Drücken der ESC Taste zu erfassen. Das gleiche Problem gab es in EhBasic beim Versuch ein laufendes Programm mit CTRL-C abzubrechen. ;(


    Beim Terminal wird das Ankommen eines Zeichens in der ACIA mit einem Buffer-Full Flag angezeigt, das solange bestehen bleibt, bis das Zeichen gelesen wird. Das funktioniert natürlich bei einer ASCII Tastatur nicht, da der Strobe Pulse nur eine gewisse Zeit stehen bleibt. Da der Eingang PB7 (also STROBE) des 6532 RIOT leider keine Edge Erkennung besitzt, dachte ich zuerst, ich müsste jetzt wieder die bestehende Hardware patchen :wegmuss: O===*#X


    Dann sind mir aber zum Glück zwei Dinge ein- und aufgefallen.


    Erstens: Der für die Dateneingabe genutze Port A besitzt an PA7 eine Edge Detection.

    Zweitens: Das achte Datenbit wird bei der ASCII Tastatur sowieso nicht benötigt (7 Bit ASCII).


    Also habe ich jetzt das Daten Handshake mit dem Junior Computer folgendermaßen gestaltet



    Beim Setzen des Ausgabe Bytes wird das MSB gleich auf High gesetzt. Dann wird das MSB (also PA7) auf Low gezogen und nach 5uS wieder auf High gesetzt. Hiermit wird das Edge Detect Flag des 6532 getriggert. Nach einer Settle-Time von 2uS wird dann STROBE auf Low und nach weiteren 20uS wieder auf High gesetzt, womit der Strobe Puls nun so lange wie beim Apple //e dauert. Wird die Tastatur an einem Apple 1 betrieben, ist also das Daten MSB wie gefordert bei der Steigenden Flanke von Strobe High. Wird die Tastatur an einem Rechner betrieben der die fallende Flanke des STROBES abfragt, funktioniert das ebenfalls.

    Bei der CGet Routine wird jetzt einfach auf ein gesetztes PA7 Edge Flag geprüft. Das kann nun natürlich auch mehrere Millisekunden nach dem Strobe Puls noch geschehen. Beim Lesen des Flags wird dieses dann automatisch vom 6532 gelöscht und somit erkannt, ob das Zeichnen bereits eingelesen wurde.


    Den Treiber hab jetzt erst mal als extra Programm gestartet, womit der der Junior dann schon vollständig mit der Tastatur bedient werden kann. Wie man unten sieht, funktioniert nun auch CTRL-C in Basic. Beim Drücken von CTRL-G auf dem ASCII Keyboard wird dann übrigens auch ein Beep auf dem lokalen Lautsprecher ausgegeben 8-) .



    Morgen integriere ich das dann in das BIOS.

  • So, jetzt wird die ASCII Tastatur vollständig im BIOS unterstützt. Es gab leider noch etwas Knatsch mit den XModem Routinen, da hier bei angeschlossener Tastatur kein ESC zum Abbrechen mehr empfangen wurde. Das geht jetzt aber auch.


    Was leider nicht mehr mit angeschlossener Tastatur funktioniert, ist der Ursprüngliche original Junior Monitor. Besser gesagt, die Ein-/Ausgabe. Es gäbe zwar eine Lösung, dazu müsste aber ein Pull-Down Widerstand am Port B Anschluss PB5 angeschlossen werden und PB5 vor dem Umschalten in den original Monitor als Eingang gesetzt werden. Ich werde das aber nicht in den Code integrieren, da bei nicht angeschlossenem Widerstand, geschriebene Daten der 6532, mit gleichzeitig am Port liegenden Tastatur Daten kollidieren. Sprich es gäbe einen Kurzschluss, was den RIOT dann zerstören könnte.

    Wer also den originalen Junior Monitor noch nutzen möchte, muss das bei nicht angeschlossener Tastatur machen.


    Apropos Tastatur. Ich hatte letzte Woche von Reichelt u.a. die DIL Flachbandkabelstecker bekommen. Ein schlauer Mitarbeiter hatte die so verpackt


     


    sprich alle Quetschstecker waren durch die Gummis zusammengepresst und eingerastet :fp:. Nach telefonischer Reklamation kamen dann die neuen heute an und waren nun so verpackt



    Das ist doch mal schön zu sehen, dass man bei Reichelt so schnell dazu lernt.


    Die Tasten, Tastenkappen und Stabilisierer sind übrigens auch bereits unterwegs.

  • Meine Güte, das war aber ein Versandspezialist! :neinnein:

    ___________________________________________________________________________________________________

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

  • Was leider nicht mehr mit angeschlossener Tastatur funktioniert, ist der Ursprüngliche original Junior Monitor. Besser gesagt, die Ein-/Ausgabe. Es gäbe zwar eine Lösung, dazu müsste aber ein Pull-Down Widerstand am Port B Anschluss PB5 angeschlossen werden und PB5 vor dem Umschalten in den original Monitor als Eingang gesetzt werden. Ich werde das aber nicht in den Code integrieren, da bei nicht angeschlossenem Widerstand, geschriebene Daten der 6532, mit gleichzeitig am Port liegenden Tastatur Daten kollidieren. Sprich es gäbe einen Kurzschluss, was den RIOT dann zerstören könnte.

    Wer also den originalen Junior Monitor noch nutzen möchte, muss das bei nicht angeschlossener Tastatur machen.

    Das finde ich schade, aber wenn es sich denn nicht ändern läßt, kann ich damit leben. :) Heißt das denn, - wenn ich das richtig verstanden habe - dass, wenn der Widerstand eingelötet ist, man nur noch PB5 als Eingang setzen muß und der muß auch so bleiben? Oder ist PB5 danach wieder benutzbar. wenn man im alten JC Monitor ist?

    ___________________________________________________________________________________________________

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

  • Guten Morgen Norbert,

    ich arbeite tatsächlich noch an dem Problem. Ich muss mir erst mal den original Junior Monitor nochmal genau ansehen, um zu verstehen, welche Port Bits wann und wo gesetzt werden. Eine Änderung der Monitor Codes wäre aber vermutlich nicht möglich, da ich dann ja eventuell Routine verschieben würde. Ich sag euch auf alle Fälle Bescheid, wie und ob das Problem lösbar ist.