Junior Computer ][

  • Hallo Jörg, sieht auf den ersten Blick sehr gut aus. Ganz schön umfangreich ist die Interfaceplatine geworden :thumbup::thumbup::thumbup: .


    Ich war nie in der C64-Fraktion, hatte gleich einen Apple ][+ . Spult eigentlich eine Datasette, und testet zwischendurch bis man an der gewünschten Stelle ist? Oder einfacher, welchen Vorteil besitzt sie gegenüber einem einfachen Kassettenrekorder? Ich habe mich noch nie damit befaßt, werde ich jetzt wohl aber tun.


    Die laufenden Pac-Men unter deinen Grüßen lassen mein Herz höher schlagen. Mein absolutes Lieblingsspiel, immer noch. :) . Vielleicht kommen wir ja eines Tages mit Grafik usw. auch noch dorthin.

  • Die Commodore Datasette spult nicht selbst und findest auch nix selbst im Schnelldurchlauf - der einzige Vorteil ggüber einem Kassettenlaufwerk ist, daß das Band nach dem Laden gestoppt werden kann. Der andere Vorteil ist, daß es einfach aufrgund vorhandener Masse relativ einfach ist, so ein Laufwerk noch zu bekommen und die im wesentlichen auch alle baugleich sind.


    Problematisch sind darin nur verstellte Tonköpfe, wofür es aber eigentlich auf allen Systemen Software gab, um die Spurlage einzustellen. Es gibt dafür auch Hardware-"Hacks", wo man über eine einzelne LED die Signalstärke anzeigt und dann am Tonkopf die Spurlage so lange einstellt, bis man da optisch ein Maximum bekommt.

  • Hallo.. was Cassetten-Betrieb angeht, habe ich bisher nur "oberflächlich" mit gelesen...


    den Beitrag aus der Elektor kennt Ihr sicherlich dazu: http://retro.hansotten.nl/uplo…/articlesde/198106007.pdf


    hatte den Link hier nur noch nicht entdeckt (sorry.. oder überlesen ;) )


    VG M.

    Meine Sammlung: CBM4032,CBM610,VIC20, C16, Cplus, C64, SX64,C128D, LT286-C, Amiga 1000, C= PC1+10+20+40

  • Ein paar Fragen ...


    Gibt es einen Grund, warum für den I2C Teil und die RTC Clock die Bits 7 und 0 (PD7 und PD0) benutzt werden ?

    Würden nicht Bit 1 und Bit 0 des 6522 ICs genausogut verwendbar sein ?

    Oder auch z.B. gleich Bit 7 und Bit 6 ? (PD7 und PD6)



    Wird im SD-Card Teil CD1 tatsächlich zweimal an verschiedenen Stellen benutzt (?), und wenn ja, warum benutzt dann der Kassettenport CC1 und nicht CC0, was ja eigentlich dann noch frei sein müßte (wenn ich es nicht übersehen habe) ?




    Und Anmerkungen, zum Tapeport ...


    da die 5V für den Motor ja sowieso über das Relais laufen, könnte doch eigentlich auch der Chip für die Spannungsanpassung auf 6V (s.o.) mit "eingeplant" werden. Wer den dann nicht haben will, kann da ja auch einfach ein Kabel ziehen und hat dann nur 5V. Ich wollte ja auch nochmal nachschauen, wo genau das mit den 6V für die Datasette überhaupt herkommt ??



    und zum Sound ...


    was ich gefunden habe (für alle, die das, wie ich, noch nicht kennen, aber auch evtl. so ganz interessant)


    https://en.wikipedia.org/wiki/Texas_Instruments_SN76489

    SN76489.pdf

    https://www.smspower.org/Development/SN76489

    https://www.instructables.com/SN76489-Synthesizer/


    So wie es aussieht, ist da beim Takt zu beachten, daß 4MHz die Maximal-Obergrenze ist. Normalerweise wird dafür direkt der Videotakt benutzt und dafür muß der Quarz irgendwas um 3.5MHz haben. Außerdem sollte der Takt so sein, daß man daraus auch "passende" Noten ableiten kann, sonst klingt es schief.


    Evtl. will man auch zumindest die Verstärkerschaltung als Extraplatine haben, dann lassen sich da evtl. noch nachträglich Klangverbesserungen/-änderungen erzielen.


    Der Rechtecktakt, den der Soundchip herstellt ist nur genähert ein solcher, evtl. läßt sich aber ja mit ein klein bißchen Aufwand daraus auch ein eher sinusförmiger Sound machen, dann hätte der JC2 gleich auch noch eine eigene Klangfarbe.

  • da die 5V für den Motor ja sowieso über das Relais laufen, könnte doch eigentlich auch der Chip für die Spannungsanpassung auf 6V (s.o.) mit "eingeplant" werden. Wer den dann nicht haben will, kann da ja auch einfach ein Kabel ziehen und hat dann nur 5V. Ich wollte ja auch nochmal nachschauen, wo genau das mit den 6V für die Datasette überhaupt herkommt ??

    Vermutung: der Motor ist derselbe wie in Standard Kassettenrekordern, welche damals mit 6V (4 Batteriezellen) liefen.

    Diese Motoren hatten typischerweise einen Fliehkraftregler drin und damit ist die Spannung relativ egal, solange sie ausreicht um bei Belastung die Drehzahl zu halten.

    5V könnten daher knapp sein. Andererseits liefen die auch noch mit fast leeren Batterien, ggf. aber jaulend ;)

  • Ich wollte ja auch nochmal nachschauen, wo genau das mit den 6V für die Datasette überhaupt herkommt ??

    Ich hab's direkt aus einem C64-Schaltplan...


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


    Ausgangsspannung an Pin "C,3" ist hierbei die 6,8V der Zenerdiode abzüglich der Spannung, die über der Basis-Emitter-Diode von Q1 abfällt. Also so überschlagsmäßig sind das denn 6V.



    Ich hätte hier auf die Schnelle einen kleinen Verbesserungsvorschlag für die IO-ROM-CARD:


    Der Jumper JP4 (Language Select) sollte besser nur zweipolig ausgeführt werden. Und zwar folgendermaßen: Pin 1 von U8 über ein 10k-Widerstand gegen Vcc, Pin 1 über einen Jumper gegen GND. Bei der jetzigen Ausführung besteht nämlich die Gefahr, dass (wenn kein Jumper gesteckt ist) Pin 1 offen in der Luft hängt. Und unbeschaltete Eingänge sollte man bei CMOS-ICs vermeiden...



    2ee : Wie denkst du generell über Anmerkungen und Verbesserungsvorschläge zu der Hauptplatine? Ist die Entwicklung für dich mit dieser Version "3b" beendet oder bestünde die Möglichkeit, Verbesserungen am Layout vorzuschlagen (keine neuen Funktionalitäten)? Ich könnte da auch gerne unterstützen...



    Gruß

    Thomas

  • Hallo zusammen,


    vielen Dank für die vielen Rückmeldungen. Ich versuche mal von Oben nach Unten durchzugehen.


    ACHTUNG das wird leider etwas länger !!!! Ihr könnt das ja überfliegen und nur das lesen, was euch an Fragen und Antworten interessiert

    Spult eigentlich eine Datasette, und testet zwischendurch bis man an der gewünschten Stelle ist?

    Die Datasetten werden vom Rechner mit der Motorspannung versorgt. Somit kann per Programm das Band gestartet und gestoppt werden. Voraussetzung hierfür ist, dass PLAY, REC, REW oder FWD gedrückt sind. Über eine Signalleitung kann der Rechner auch erkennen ob eine Taste (aber nicht welche) gedrückt ist. Den Rest macht die Software. Also z.B. nach dem geforderten Namen auf Band suchen, Daten dann laden und Band stoppen.


    den Beitrag aus der Elektor kennt Ihr sicherlich dazu: http://retro.hansotten.nl/uplo…/articlesde/198106007.pdf

    Ja, das ist eigentlich ein Auszug aus dem Junior Computer Buch 3, Kapitel 11 (klingt irgendwie biblisch). Aber trotzdem vielen Dank für den Link. Ich mag es sehr gerne, das nochmal als Einzelartikel zu haben.

    Gibt es einen Grund, warum für den I2C Teil und die RTC Clock die Bits 7 und 0 (PD7 und PD0) benutzt werden ?

    Das war eine Software Entscheidung. Bit 7 kann ich schnell über einen BIT oder BPL Befehl abfragen, daher liegt dort SDA. Bit 0 dient als CLOCK, weil ich da, wenn ich mit Bit 0 = 0 starte einen Clock-Puls ganz simpel mit einem INC und einem darauf folgenden DEC Befehl erzeugen kann.

    Wird im SD-Card Teil CD1 tatsächlich zweimal an verschiedenen Stellen benutzt (?), und wenn ja, warum benutzt dann der Kassettenport CC1 und nicht CC0, was ja eigentlich dann noch frei sein müßte (wenn ich es nicht übersehen habe) ?

    Also zunächst einmal habe ich die Schaltung bezüglich meiner Skizze von früher etwas geändert. Ich nutze jetzt Modus 2 der VIA - Shift In Under Phi2 Control.

    Hierbei wird CD2 (heißt bei mir so, weil ich mit der zweiten VIA arbeite, ist sonst CB2) zum seriellen Eingang (MISO - Master In, Slave Out). Die eingetakteten Daten werden im internen Shift Register eingetaktet. CD1 gibt in dem gewählten Modus den halbe Phi2 Takt aus (SCK - Serial Clock). Dieser (Pin CD1) hängt auch am externen Schieberegister, das mit dem gleichen Takt Daten zum SPI Ausgang (MOSI - Master Out, Slave In) schiebt. Nach acht Takten generiert die VIA einen Interrupt und ich kann am Port PC0..7 die nächsten Ausgangsdaten anlegen, sie durch einen Puls an PD3 in das externe Schieberegister laden und dann das interne Schieberegister lesen. Danach geht der Taktvorgang wieder von vorne los.


    Soweit (die leider sehr ausführliche Beschreibung) zum SPI Port.


    Die VIA hat vier Handshake Leitungen, CA1, CA2, CB1 und CB2 (die bei mir CCx bzw. CDx heißen weil eben zweite VIA). Diese sind aber von der Funktion nicht identisch.

    Das Kassettenteil nutz CC1 (CB1) als Dateneingang - CC0 gibt es nicht, s.o. Hierbei wird (da Handshake Leitung) bei einer Steigenden Flanke ein Interrupt ausgelöst. Ich kann also z.B. einen internen Timer stellen und auf die nächste steigende Flanke warten. Dann weiss ich, wie lang der Puls war und muss nicht mit irgendwelchen "Clock Cycles per Opcode" rumoperieren.

    da die 5V für den Motor ja sowieso über das Relais laufen, könnte doch eigentlich auch der Chip für die Spannungsanpassung auf 6V (s.o.) mit "eingeplant" werden.

    Ich hab das tatsächlich bereits schon angedacht. Ich werde einen Pin-Header für einen Step Up Wandler mit auf die Platine packen und dann die per Relais geschaltete Spannung über eine Brücke wählbar machen. Bin aber sicher, das 5V reichen müssten.

    So wie es aussieht, ist da beim Takt zu beachten, daß 4MHz die Maximal-Obergrenze ist. Normalerweise wird dafür direkt der Videotakt benutzt und dafür muß der Quarz irgendwas um 3.5MHz haben. Außerdem sollte der Takt so sein, daß man daraus auch "passende" Noten ableiten kann, sonst klingt es schief.

    Der Sound Chip generiert aus dem externen Takt die höchste erzeugbare Frequenz. Die neuen Chips sind für 4MHz gemacht und können - weil der externe Takt durch 32 geteilt wird - eine Maximalfrequenz von 125KHz erzeugen. Diese ist natürlich nur für den Rauschgenerator zu gebrauchen, ich bin schließlich schon froh, wenn ich noch 15KHz höre. :cry2:

    Nehme ich z.B. Phi2 (1MHz) als Takt, komme ich nur noch auf 31,25 KHz was sehr niedrig wäre. Das irgendwelche nicht passenden Töne bei "krummen" Frequenzen ausgegeben werden, kann ich dem Datenblatt nicht entnehmen. Ausserdem nutzte der BBC Micro den Chip meines Wissens auch mit 4MHz, und da war der Ton ziemlich gut.

    Evtl. will man auch zumindest die Verstärkerschaltung als Extraplatine haben, dann lassen sich da evtl. noch nachträglich Klangverbesserungen/-änderungen erzielen.

    Ich werde da einfach einen Abgriff am Chip-Ausgang bereitstellen, dann kann jeder da auch seinen eigenen Verstärker anschließen. Die Bereiche der einzelnen "Module" werde ich auf der Platine auch kennzeichnen, so dass man weiß, was man weglassen kann, wenn man es nicht braucht.

    5V könnten daher knapp sein. Andererseits liefen die auch noch mit fast leeren Batterien, ggf. aber jaulend

    Ich hab wie gesagt, den Motor bei mir mit 5V und eingelegter (seeeehr alter, klebriger) Kassette getestet. Mein Laufwerk war da genauso schnell und laufruhig wie mit 6V. Bei 4,3V war dann aber Schluß.

    Der Jumper JP4 (Language Select) sollte besser nur zweipolig ausgeführt werden. Und zwar folgendermaßen: Pin 1 von U8 über ein 10k-Widerstand gegen Vcc, Pin 1 über einen Jumper gegen GND. Bei der jetzigen Ausführung besteht nämlich die Gefahr, dass (wenn kein Jumper gesteckt ist) Pin 1 offen in der Luft hängt. Und unbeschaltete Eingänge sollte man bei CMOS-ICs vermeiden...

    Vielen Dank für den Hinweis. Ich hatte das in meinem Schaltplan auch schon so drin, aus genau den von dir genannten Gründen. Nur die PDF die ich vorhin hochgeladen habe hatte noch diesen 3 pol Jumper. Ich weiss auch nicht mehr genau, was ich da vor hatte, einen Miniatur Umschalter glaube ich. War wie gesagt schon recht spät, als ich den Plan heute Nacht geändert habe. :grübel:

    Evtl. werde ich die ROM/RAM Umschaltung auch nochmal etwas umbauen. Bisher muss ich auf die Annunciator Adresse entweder eine 0 (RAM) oder 1 (ROM) schreiben. Ich werde das vielleicht dahingehend ändern, dass ein (R/W) Zugriff auf Adresse X das RAM und ein (R/W) Zugriff auf Y das ROM schaltet. Mal sehen.

    2ee : Wie denkst du generell über Anmerkungen und Verbesserungsvorschläge zu der Hauptplatine? Ist die Entwicklung für dich mit dieser Version "3b" beendet oder bestünde die Möglichkeit, Verbesserungen am Layout vorzuschlagen (keine neuen Funktionalitäten)? Ich könnte da auch gerne unterstützen...

    Bin dann natürlich beleidigt - aber was solls 8o. Nee, Spaß bei Seite, wenn es da Vorschläge gibt, immer her damit. Ich hätte ja auch noch die eine oder andere Idee - aber eher Richtung funktionalität. Es wird halt für mich bloß ziemlich teuer, wenn ich bei jeder neuen Idee von mir das Board neu machen lasse und bestücke. Aber Rev. 3B ist jetzt erst mal soweit (hoffentlich) frei von Fehlern, deshalb war das für mich jetzt erst mal der vorläufige Schlusspunkt.


    Kurz: Ja! Vorschläge erwünscht. Immer! Und beim Board Layout kann man immer was verbessern.:thumbup:


    Edit: Hier noch das Commodore Datasetten Service Manual mit Schaltplänen für verschiedene Revisionen.

  • Nochmal eine Version, mit geänderter ROM/RAM Umschaltung. Jetzt wird bei z.B. gesetzten Jumper K2 (Basisadresse $0800) bei Zugriff auf $0A00 das RAM und bei Zugriff auf $0B00 das ROM selektiert. Finde ich besser, weil ich dann keine falschen Werte schreiben kann.


    Der offene Adresseingang A2 des 74LS137 liegt jetzt auch auf GND, vorher hatte ich A1 und A2 aus Versehen offen gelassen.


    Und der Language Select Jumper ist hier wie bereits gesagt, sowieso schon mit Pullup Widerstand versehen.

  • Kurz: Ja! Vorschläge erwünscht. Immer! Und beim Board Layout kann man immer was verbessern. :thumbup:

    Okay, dann lege ich mal mit meinen Vorschlägen los. Bitte verstehe sie nicht als Kritik!



    Folgende Verbesserungen für eine Überarbeitung des Layouts möchte ich vorschlagen:


    Vorschlag A) Befestigungslöcher von 5,3 mm auch 4,2 mm reduzieren.

    Begründung: Abstandshalter für M5 sind sehr schwer zu bekommen. Abstandshalter für M4 gibt es z.B. bei Reichelt für kleines Geld (DI4 20MM) und derart massiv müssen die Abstandshalter meiner Meinung nach gar nicht sein.


    Vorschlag B) Mittleres Befestigungsloch: Leiterbahnen in einer größeren Entfernung zum mittleren Befestigungsloch verlegen.

    Begründung: Auf beiden Seiten der Platine gehen Leiterbahnen derart dicht am mittleren Befestigungsloch vorbei, so dass ein Schraubenkopf (auf der Oberseite) oder der Abstandshalter (auf der Unterseite) bei beschädigtem Lötstopplack leicht eine Verbindung zu diesen Leiterbahnen haben kann. Deshalb wäre mein Vorschlag, um alle Befestigungslöcher eine "Restricted"-Zone zu haben, in der keine Leiterbahnen verlaufen (von der Größe eines Schraubenkopfes oder etwas größer...).


    Vorschlag C) Die Löcher für die Schalter "Display" und "Step" auf "nicht durchkontaktiert" ändern.

    Begründung: Die Löcher sind zur Zeit als großes Lötpad ausgeführt, inklusive einer Metallisierung der Bohrung zwecks Durchkontaktierung. Dies ist hier jedoch nicht notwendig. Deshalb könnten diese Löcher als "Non-Plated-Through-Holes" ausgeführt werden.


    Vorschlag D) Copper-Pouring auf der Unterseite.

    Begründung: Nicht zwingend notwendig, jedoch muss dann nicht so viel Kupfer weggeätzt werden. Neben leichten elektrischen Vorteilen also eher ein kleiner positiver Umweltaspekt...


    Vorschlag E) Den Hauptschalter etwas von Rand wegrücken.

    Begründung: Wenn man für den Hauptschalter die zweipolige Version mit 5,08 mm Pinabstand einsetzen möchte, dann steht dieser derzeit leicht über die Platine über. Wenn man den Schalter leicht vom Rand wegrückt, dann befindet sich der Schalter vollständig auf der Platine.


    Vorschlag F) Den 25-poligen SubD-Stecker etwas von Rand wegrücken.

    Begründung: Auch wenn man die schon etwas kürzere EU-Version verwendet (wie in deiner Anleitung vorgeschlagen), so steht der SubD-Stecker derzeit noch ca. 1 mm über den Rand raus und schließt nicht bündig mit der Platine ab. Ein leichtes Verrücken weg vom Platinenrand würde dazu führen, dass der SubD-Stecker vollständig auf der Platine aufliegt. Die genauen Abstände stehen meiner Meinung nach im Datenblatt.


    Vorschlag G) Jumper für die oberen beiden Adressleitungen des ROMs

    Begründung: Zur Zeit sind beide Adressleitungen fest mit 5V verbunden und lassen so 3/4 des ROMs ungenutzt. Mit Jumpern (und zwei Pullup-Widerständen) hätte man die Möglichkeit, verschiedene ROMs manuell einblenden zu können, falls man z.B. selbst an der Firmware was ändern möchte.


    Vorschlag H) Eigentlich nur eine fixe Idee: Zusätzliche Lötpads für kleine SMD-Taster als Ersatz/Provisorium zu den Marquardt-Tastern.

    Begründung: Zur Zeit sind die vorgesehenen Marquardt-Taster nicht überall zu bekommen. Mein Vorschlag wären Lötpads (oder vielleicht zusätzliche Bohrungen, müsste man mal ausprobieren) auf den Tasterflächen, auf denen sich kleine billige 6mm-SMD-Taster (Reichelt: TASTER 9315) löten lassen. Diese kann man dann leicht wieder entfernen, sobald man über die Marquardt-Taster verfügt. Und auch wenn dann ein paar Lötreste auf der Platine verbleiben, sieht man diese später nicht, da sie dann durch die großen Taster verdeckt werden. Mit kleinen Tastern hätten die Beschriftungen auf der Platine dann auch eine Verwendung... :)


    Vorschlag J) Das Routing generell überarbeiten.

    Begründung: Ich glaube, du hast teilweise beim Routing die Leiterbahnführung KiCAD überlassen. So sind viele Stellen vorhanden, wo Leiterbahnen nicht direkt von einem IC weggehen, sondern erst nochmal ein Stück in Richtung des benachbarten Pins. Da könnte man das Layout verbessern. Ebenso würde ich das Routing bei den Kondensatoren beispielsweise nahe U5, U6, U7 und U8 so ändern, dass diese Kondensatoren im Pfad zu den VCC-Pins der einzelnen ICs liegen. Im Moment sind alle VCC-Pins der ICs miteinander verbunden und die Kondensatoren nur "in der Nähe" angeschlossen. Das Routing sollte aber so aussehen: VCC-Pfad -> Pluspol einzelner Elko -> direkt zum VCC-Pin eines einzelnen ICs. Das sind nur zwei Beispiele, wo ich beim Routing Potenzial zur Verbesserung sehe. Generell sollten meiner Meinung nach auch die VIAs etwas größer sein und die Leiterbahnen nicht so viele Knicks haben. Ich glaube aber, das liegt an der KiCAD-Unterstützung im manuellen Routing-Modus...



    Ich verstehe, das du den Schaltplan 1:1 vom Original übernommen hast. Dort waren an vielen Stellen die 1 µF-Elkos als Abblockkondensatoren vorgesehen. Das war damals auch aufgrund der damaligen Stromversorgung okay. Damals hatte man einfach eine Vollgleichrichtung mit Ladeelko und Linearregler. Da waren die Störungen im "niederfrequenten" Bereich. Heutzutage sind überall Schaltnetzteile, die ein größeres Störspektrum aussenden und weswegen man für die höheren Frequenzen dann kleinere Kapazitäten verwendet. Ich habe in meinen Nachbau - dort wo es möglich war - gedrehte Fassungen mit eingebautem 100 nF-C eingesetzt. Nicht falsch verstehen. Das Design ist so rubust, dass es natürlich auch ohne geht. Aber konsequenterweise müsste man den Junior II auch mit dem entsprechenden Retro-Netzteil versorgen...



    Bitte obiges nicht als Kritik verstehen. Wie ich im vorherigen Posting schon schrieb, würde ich da gerne unterstützen, falls bei dem einen oder anderen Punkt Konsens besteht.



    Gruß

    Thomas

  • Vorschlag D) Copper-Pouring auf der Unterseite.

    Begründung: Nicht zwingend notwendig, jedoch muss dann nicht so viel Kupfer weggeätzt werden. Neben leichten elektrischen Vorteilen also eher ein kleiner positiver Umweltaspekt...

    Das stimmt so nur bei Selbst-Ätzen.

    Professionell werden Leiterplatten anders hergestellt. Da wird eine 17µm Kupferschicht galvanisch auf 35µm aufgedickt (dort wo nachher Kupfer sein soll) und verzinnt/vergoldet/usw. Danach wird der Photolack entfernt und das freiliegende 17µm Kupfer ebenso galvanisch entfernt. Ganz am Ende muss dann, wenn die Kupferschicht nicht mehr durchgängig leitet, der Rest tatsächlich chemisch entfernt werden.

    Dann ist noch zu Bedenken, dass einseitig Copper Pour dazu führen kann, dass sich die Leiterplatte verzieht.

  • Hallo Thomas,


    vielen Dank für deine vielen konstruktiven Vorschläge, die ich nicht als Kritik (und wenn dann eben als sehr konstruktive) sehe. Bei einigen Dingen muss ich mich da aber zu äußern, um das Layout zu entschuldigen.


    Der Junior war tatsächlich erst mein zweites KiCAD Projekt, ich bin da immer noch ein ziemlicher Newbee, weil ich jetzt nicht dauernd Platinen baue. Deshalb waren da z.B. auch die VIAs sehr klein, da ich schlicht die Einstellungen nicht gefunden hatte. In diese Kategorie fallen dann auch so Dinge wie Durchkontaktierung bei den Schalternbohrungen, Ausserdem habe ich mein letztes Platinenprojekt glaube ich mitte der 90er noch von Hand auf Millimeterfolie geklebt.


    Das Routing habe ich nicht von Hand gemacht, sondern einen externen Autorouter genommen. Das werde ich ganz sicher auch nicht manuell anfangen, weil mir da meine Zeit auch zu schade ist. Die Leiterbahnführung des Autorouters hat mich da aber zum Teil auch sehr genervt. Vor allem die von dir kritisierte sehr seltsamen Winkelungen die bei jedem Pin noch gemacht wird, stört mich auch sehr. In der ersten Version der Platine hatte ich das alles noch von Hand nachbearbeitet. Aber irgendwann war es mir dann einfach wurscht, weil zu viel Aufwand.


    Genauso die Sache mit den Kondensatoren. Auch hier hatte ich immer nachgearbeitet. Eigentlich hatte ich bei der Rev. 3 Platine die Leiterbahnen für die Kondensatoren auch schon vorgegeben und gesperrt. Irgendwie hab ich die dann aus Dummheit aber aus versehen gelöscht und nicht mehr bemerkt. Die Rev. 3A und 3B Platinen sind also wieder ein Werk des Autorouters (was meine Schuld daran nicht mindern soll).


    Bei den Schraublöchern muss ich gestehen, dass ich da einfach auf das zurückgegriffen habe, was bei mir gerade in Masse rum lag - M5 Schrauben mit Schraubabstandshaltern. M4 war aus. Und da das ganze ja ursprünglich ein Projekt nur für mich war...::heilig::...der Rest ist Geschichte.


    Das ich bei der Rev 3A, die ich vollständig neu hab routen lassen, bei der Mittelbohrung nicht aufgepasst habe ist voll und ganz meine Schuld. Bei der Rev. 3 war noch eine kleine Sperrfläche drum herum. Auch da keine Ahnung warum ich die dann rausgeschmissen habe. :nixwiss:


    Beim Schalter habe ich bei mir einen mit seitlichen Schieber genommen, der bei mir in der Schublade lag. Der schließt ziemlich bündig (+1/4mm) ab. Die anderen Schalter mit Top Schieber habe ich da leider nicht geprüft und auch die Datenblätter wohl nur bezüglich der Pin-Abstände herbeigezogen.


    Beim DB25 bin ich tatsächlich sehr weit draußen. Punkt.


    Kondensatoren. Ja, einfach eine alte Gewohnheit aus den 80ern. Da hatte ich es auch immer wie Garfield gehalten - better save than sorry - 10uF passt. Und ja, ich hab da wohl mehr oder minder das Original Junior Konzept übernommen. Bei der Extension Platine sollte ich da auch noch kleinere Blockkondensatoren vorsehen. Zum Glück ist das aber ja noch ein MHz Projekt, das verzeiht noch vieles.


    Dein Vorschlag mit den Jumpern entspricht ziemlich dem, was ich vor ein paar Wochen wegen des schwindenden ROM Platzes noch dachte - "hättest du da mal A13 und 14 nicht fix auf +5V gelegt, sondern einen Jumper oder Brücken vorgesehen". Schön das dir diese Eselei auch aufgefallen ist. Rev. C wird das mit Sicherheit so drin haben.


    Ebenfalls eine super Idee, ist das mit den SMD Schaltern. Gefällt mir sehr gut. klaly hatte da ja auf dem Rev. 2 Board mit Lochrasterplatine und Minitastern was gebastelt, mangels Marquard Taster. Von den Minitastern habe ich auch noch hunderte rumfahren. Und wenn man den Junior später eh nur noch mit Terminal betreibt, ist die Tastatur eigentlich nur noch (wenn auch eine sehr geile) Zierde.


    Was ich auf der nächsten Revision noch drauf machen würde, wäre ein 2 zu 1 Decoder, um bei Anschluss des ESP32 Terminals automatisch den Max232 von TxD und RxD zu "entkoppeln". Den muss man nämlich zur Zeit dann immer rausziehen, um einen Kurzschluss zu vermeiden.


    Du siehst also, vieles war einfach das Werk von Unwissenheit (KiCAD) und schlichter Faulheit. Daher Danke für die vielen Vorschläge, die ich beim nächsten mal sicherlich beherzige. Aber ich weiss ja jetzt, an wen ich mich da für ein Review wenden kann. :thumbup:

  • Ich muß auch nochmal was fragen (auch wenns wieder eine Anfängerfrage sein sollte) ... und zwar wieso PD3 an der Cassette und am SDCard Reader sein kann und ob da nicht ständig der Motor an der Kassette an und aus geht, wenn der SD-Card Chip aktiv (?) geschaltet wird.



    Mittenloch ist mit auch aufgefallen, daß das gfährlich aussieht. Sollte man evtl. sogar mit in die Anleitung schreiben, daß man da vorsichtig sein muß oder besser drauf verzichtet, das zu benutzen.

  • Ich muß auch nochmal was fragen (auch wenns wieder eine Anfängerfrage sein sollte) ... und zwar wieso PD3 an der Cassette und am SDCard Reader sein kann und ob da nicht ständig der Motor an der Kassette an und aus geht, wenn der SD-Card Chip aktiv (?) geschaltet wird.

    SUPER !!!! Vielen Dank! Das muss PD6 heißen. Ein Fehler weniger. :):thumbup:


    An sonsten gibt es auch keine Anfängerfragen. Du lebst ja (zum Glück! 8o) nicht in meinem Kopf und kannst da jede eventuell schräge Design Entscheidung von mir nachvollziehen.


    Edit: Bzgl. mittleres Schraubloch. Bei mir waren die Boards eh leider immer ein wenig nach unten gewölbt, und daher ist die mittlere Schraube etwas zu lang, so dass das Board kippelt. Ich hab da einfach eine Kunststoffscheibe unter den Schraubkopf gelegt um das auszugleichen. Auf der Anderen Seite ist ein Kunststoff-Schraub-Abstandshalter. Daher hat da bei mir kein Metallteil der Schraube Kontakt mit der Platine.

  • Da liest man mal ein paar Tage nicht mit - und dann das!

    Ich gratuliere zu der Superarbeit! :applaus:

    Zu den Schraublöchern möchte ich nur anmerken, dass es meiner Meinung nach sowieso eine gute Idee ist metallene U-Scheiben oder Schrauben weit von

    Leiterbahnen entfernt zu halten. Ich verwende meist U-Scheiben aus Kunststoff. Das senkt die Gefahr von Kurzschlüssen gewaltig.

  • Was macht eigentlich "CassSense" im Kassettenteil so ? Und warum hängt das an einem "Output" ? Ich kann mich auch nicht errinnern, daß die C64 / +4 Kassette irgendwas sense'd - höchstens vielleicht einen gefundenen Startblock, und das natürlich auch nur, wenn PLAY gedrückt ist. Nicht beim Schnellvorlauf.

  • Was macht eigentlich "CassSense" im Kassettenteil so ?


    Im Laufwerk ist ein Federkontaktschalter (Cassette Sense oder Cassette Status), der geschlossen wird, sobald der Motor mit den Transportspulen mechanisch gekoppelt ist. Und das ist der Fall, wenn du PLAY, REW oder FWD gedrückt hast. Damit erfährt dann das Lade-/Speicherprogramm, dass es jetzt loslegen kann, weil die Kassette gespult wird.

  • Hintergrund der Frage ist nämlich auch Folgendes:


    so wie ich das verstanden habe, benutzt Du ja den zweiten 8Bit Port (PD0-PD7) in dem 6522 als "Schalter", um Dinge an-/abzuschalten oder irgendwie zu steuern. Gleichzeitig wird damit dann auch festgelegt, welches Gerät gerade aktiv sein darf, um Daten vom ersten 8Bit Port (PC0-PC7) zu empfangen. Da sich das vermutlich auch nicht groß ändern wird, weil man da bestimmt kein großes Busprotokoll oder sowas benutzen können wird (wg. Aufwand) bleiben also 8 Bit Datenport + 8Bit zum Steuern und jeweils die beiden als Inputports von außen gedachten Eingänge mit je 2 Bit (CC1,CC2 und CD1,CD2).


    Wenn man also nun beim Tape Interface auf ein Steuerbit verzichten könnte, weil es ja ein "sense" ist, dann ließe sich in die "Ports" da auch sowas wie eine interessante Struktur reinbringen. Man könnte dann immer den 8Bit Datenbus haben + zzgl. 2 Bit für Inputs, wobei sich diese immer zwei Geräte teilen müßten, außerdem hätte man zum Steuern (an-/abschalten der ICs vom "Bus") je 2 Bit für jeden Anschluß. Wenn das vmtl. meist für solche einfacheren Schaltungs-Module ausreicht, kommt man da ja sicher gut mit 2Bit hin, sollte man aber doch mal mehr Steuerschalter benötigen, ließen sich daraus ja auf dem Minimodul auch 4 Bit draus machen und die Software (Treiber) zum jeweiligen Modul weiß natürlich wie das gemeint sein muß.


    Die Grundidee wäre nun, vorausgesetzt das paßt beim Tape Interface und auch die Input-Lines sind so frei benutzbar, daß man auf der Platine 4 Bereiche vorsieht, auf denen die 4 Funktionen vorhanden sind. Am hinteren Ende jedes dieser Bereiche kommt aber zusätzlich eine Pfostenleiste dazu, wie die bei den anderen normalen Ports aus dem VIA No. 1 (Port A und B) auch schon. Allerdings wird diese an einer Seite noch um zwei separate Steuer-Bits erweitert. Und diese sind dann den "Plätzen" fest zugeordnet.


    Da Du ja für den einen Port Bit 0 und Bit 7 mit guten Gründen haben wolltest (PD0, PD7) folgen die anderen Plätze diesem Schema und benutzen [PD1 und PD6], [PD2 und PD5] sowie [PD3 und PD4] als Steuerleitungen.

    Die Treibersoftware/Ansteuerung muß dann halt zusätzlich jeweils ein Bitmuster bekommen, aus dem sie die Bit auslesen kann, also letztlich sowas wie ein Bitmaske und die der Nutzer festlegen kann, je nachdem, wo er das Modul installiert (das wird mit AND $FF verknüpft, oder kann auch fix gelegt werden, wenn die "Karte" z.B. nur im ersten Platz betrieben werden darf/kann).


    Die Inputleitungen weden je halb und halb auf die Plätze aufgeteilt. Also benutzen die Ports EP1 (Expansion Port 1) und EP2 die Leitungen CC1 und CC2. Die beiden Ports EP3 und EP4 können CD1 und CD2 belegen.


    Wichtig wäre halt nur, daß die Plätze der Port EP1 bis EP4 auf der Platine jeweils die gleiche Größe/Fläche haben. Außerdem sollte der Anschluß nach hinten bzw. vom Platinenrand her möglich sein, also Anschlüsse von außen gesteckt werden können.


    Der Charme der Sache läge v.a. darin, daß man dann auch auf eine Funktion verzichten könnte (durch Nichtbestücken der Platine an diesem Platz / ExpansionPort) und stattdessen eine kleine Platine mit gleichen Abmessungen wie der Platz von oben in den "Slot" (d.h. die Pfostensteckerleiste) und beliebig anderer Funktion einstecken könnte.





    Die Größe der Plätze, also die Abmessungen, könnte sich dabei evtl. an einem gängigen kleinen Platinenformat orientieren und natürlich auch den Platzbedarf für die Originalpläne berücksichtigen. Ich vermute mal so die Größe von dem ESP32 Terminalplatinchen könnte evtl. eine gute Größe für sowas sein.

  • Also beim C64 Schaltplan geht Anschluss 6 des Kassetten Ports auf den Port Ein-/Ausgang P4 der 6510 (bzw. 8500).



    Bei den Laufwerken gab es ja etliche verschiedene, teils für andere Anschlüsse. Also z.B. C16 (hab ich auch erst gelernt, dass der und seine Familienmitglieder einen Rundanschluss für die Datasette hatten).

    Z.B. bekommt bei diesem Schaltplan das Laufwerk über Anschluss 3 (BLUE) nicht den Motorstrom (also die 6V Spannungsversorgung) vom Rechner, sondern offensichtlich Masse geliefert. Die liegt dann über den Schalter SW2 am Motor und an Anschluss 6 (Cass Sense). Der Motor selber wird über die 5V Leitung (Anschluss 2) versorgt. Hier hatte man wohl bemerkt, dass der Motor auch mit 5V gut läuft.



    Aber in der original Datasette für den C64 war Cass Sense wohl einfach auf Masse geschaltet, wenn SW2 geschlossen wurde. Im C64 hing die Leitung dann noch mit einem Pull Up Widerstand über +5V eben am CPU Port 4.

  • Ahh, sorry, das mit der VIA beziehst du auf den Junior. Dann muss ich erst mal deine (gleichzeitig mit meiner Antwort reingekommene) Nachricht durchlesen.


    Edit: Werde ich morgen machen müssen. Ich bin gerade zu müde um noch was aufzunehmen. Sorry.

  • Gestern sind meine Frau und ich, Nachmittags in den Neckarpark in Stuttgart, unseren Lieblingsbiergarten auf einen Flammkuchen und ein Bierchen besuchen gegangen. Dabei sind wir in Stgt-Cannstatt aus der S-Bahn gestiegen und am Wasen vorbei gekommen. Da ist uns dann aufgefallen, dass das Ramstein Konzert, dass vor zwei Jahren hätte stattfinden sollen, nun nachgeholt wurde. Wird haben dann Abends mit hunderten anderen ein "Schmarotzerkonzert" mitgemacht :tüdeldü:. Die sehr freundlichen Polizisten haben irgendwann aufgegeben und die Menge halb auf der Strasse stehen lassen und lieber den Verkehr abgeriegelt.

    Sound war super, Großleinwand in 50m Abstand zur Strasse hin und die Feuershow war sowieso noch 10km weit zu sehen. :thumbup:




    Spektakulär!!!

  • Z.B. bekommt bei diesem Schaltplan das Laufwerk über Anschluss 3 (BLUE) nicht den Motorstrom (also die 6V Spannungsversorgung) vom Rechner, sondern offensichtlich Masse geliefert. Die liegt dann über den Schalter SW2 am Motor und an Anschluss 6 (Cass Sense). Der Motor selber wird über die 5V Leitung (Anschluss 2) versorgt. Hier hatte man wohl bemerkt, dass der Motor auch mit 5V gut läuft.

    Aber in der original Datasette für den C64 war Cass Sense wohl einfach auf Masse geschaltet, wenn SW2 geschlossen wurde. Im C64 hing die Leitung dann noch mit einem Pull Up Widerstand über +5V eben am CPU Port 4.

    Nee, nee, nicht ganz so schnell...


    Der Anschluss 3 vom Datasetten-Schaltplan geht auf die geschaltete Seite vom "PLAY SW" (die anderen Seite ist fest auf GND). Daraus folgt, dass dieser Anschluss auf den Sense-Eingang am Computer (und damit auf einen Eingang) geht.


    Der Anschluss 2 vom Datasetten-Schaltplan ist die positive Motorseite (andere Seite ist fest mit GND verbunden) und bekommt vom Computer IMMER ca. 6V, egal ob C64, C16, Plus4 oder VC20. Ich habe mir gerade nochmal die Schaltpläne der einzelnen Rechner angesehen, da gibt keiner nur 5V raus. Das war Commodore wohl zu unsicher... :)


    Du siehst also, vieles war einfach das Werk von Unwissenheit (KiCAD) und schlichter Faulheit. Daher Danke für die vielen Vorschläge, die ich beim nächsten mal sicherlich beherzige. Aber ich weiss ja jetzt, an wen ich mich da für ein Review wenden kann.


    Die Unwissenheit sei verziehen, die zweite erstellte Platine in KiCAD kann nicht perfekt sein... Ich habe vor einigen Jahren von Eagle zu KiCAD gewechselt, weil ich für eine große Platine die notwendige Lizenz nicht bezahlen wollte (irgendwas vierstelliges wollten die damals dafür haben). Ich habe mir gesagt, das investiere ich lieber in Elektronikbauteile... Ich habe dann mich wirklich intensiv mehrere Monate mit KiCAD beschäftigt. Zuerst ist der Workflow noch gewöhnungsbedürftig, aber wenn man dann auch ein paar Tricks kennt, kann man super mit dem Programm arbeiten...


    Du kannst dich gerne für ein Review an mich wenden, das Angebot steht. Ich könnte auch die eine oder andere kleinere Aufgabe hier übernehmen. Beispielsweise würde ich für eine Bestückungsmöglichkeit mit alternativen Tastern nicht nochmal 23 Taster in den Schaltplan zeichnen, sondern den einfach so lassen, wie er ist. Man könnte dann relativ einfach den Footprint des Tasters mit den zusätzlichen Pads versehen. So wird der Schaltplan dann nicht so unübersichtlich...


    Was ich auf der nächsten Revision noch drauf machen würde, wäre ein 2 zu 1 Decoder, um bei Anschluss des ESP32 Terminals automatisch den Max232 von TxD und RxD zu "entkoppeln". Den muss man nämlich zur Zeit dann immer rausziehen, um einen Kurzschluss zu vermeiden.

    Das ESP32-Terminal ist bis jetzt noch an mir vorbeigegangen, das werde ich mir mal anschauen...


    Ich denke aber nebenbei auch über eine Möglichkeit nach, den Junior "automatisiert" mit Programmen zu beschicken, um Softwareentwicklung zu vereinfachen. Ich habe da eine USB-Transfer-Lösung für den C64 im Hinterkopf: XLink von Henning Liebenau. Geänderte Firmware für dem Junior (deswegen einen Jumper für die Kernal-Auswahl) und ein Kommandozeilenprogramm auf dem PC. Quelltext auf dem PC schreiben, assemblieren und dann mit einem Befehl zum Junior schicken und automatisch dort starten. Ich finde die Idee ganz sexy, da sie sehr schnelle Turnaround-Zeiten zulässt. Assemblieren und Übertragen zusammen in unter zwei Sekunden (je nach PC)...


    Wie bekommt ihr ansonsten Programme auf den Junior? Nur über den PM mittels XModem?



    Gruß

    Thomas

  • Und noch einen Nachtrag zu meinen Verbesserungsvorschlägen:


    Von dem 74LS01 werden bei dir 3 Gatter verwendet, beim Original Junior werden zwei Gatter verwendet. Das Layout des Original-Junior hat die Eingänge der unbenutzten Gatter mit GND verbunden. Das ist merkwürdigerweise nicht im Schaltplan zu erkennen, nur beim Verfolgen der Leiterbahnen auf der Platine.



    Schaltungstechnisch gesehen ist das auch richtig so. Zwar bei LS-Schaltkreisen nicht zwingend notwendig (da sie mittels internem Pullup auf log. 1 gezogen werden), aber guter Stil...


    Du hast bei deinem Junior II drei Gatter vom 74LS01 verwendet. Das vierte Gatter hängt jedoch vollständig in der Luft.


    Es wäre guter Stil, das vierte Gatter (sofern nicht verwendet) bei der nächsten Revision ebenfalls eingangsseitig auf GND (oder 5V) zu legen...



    Gruß

    Thomas

  • Der Anschluss 3 vom Datasetten-Schaltplan geht auf die geschaltete Seite vom "PLAY SW" (die anderen Seite ist fest auf GND). Daraus folgt, dass dieser Anschluss auf den Sense-Eingang am Computer (und damit auf einen Eingang) geht.

    Ich habs gerade gesehen, bei dem Laufwerkstyp muss die Steckerbelegung wohl vollkommen ander sein. GND ist da auch sicherlich nicht auf Pin1 wie bei der "normalen" Datasette. Wie gesagt, war spät und ich war müde. Ausserdem hatte die Antwort auch wirklich gar nichts mit der Frage von ThoralfAsmussen zu tun. Vollständige neuronale Fehlleitung. :wacko:


    Von dem 74LS01 werden bei dir 3 Gatter verwendet, beim Original Junior werden zwei Gatter verwendet. Das Layout des Original-Junior hat die Eingänge der unbenutzten Gatter mit GND verbunden. Das ist merkwürdigerweise nicht im Schaltplan zu erkennen, nur beim Verfolgen der Leiterbahnen auf der Platine.

    Eben weil die Eingänge auf High gezogen werden, lasse ich sie auch gerne offen. Für den Fall, dass ich eine Änderung machen möchte, und ich dann ein solches Gatter noch benötige, brauche ich da nicht irgendwelche Masseverbindungen wieder abkratzen (sie Problem A13/A14 am ROM) und kann auch mal fliegend was anbasteln. Für mich ist der Junior diesbezüglich ja eine Dauerbaustelle :). Schöner Stil ist mir da eher egal.

    OK. Ist auch eh nur ein Vorschlag, der vielleicht ein wenig schräg anmuten mag und wahrscheinlich viel zu kompliziert beschrieben ist. ;)

    Bin gespannt, hat aber auch gut Zeit und eilt nicht. Schon gar nicht muß es um diese Zeit noch ein Statement dazu geben.

    Nein, alles Gut. Ich hatte deinen Vorschlag aber heute Nacht wirklich nicht mehr verstanden. War auch 10 Minuten später im Bett und im Tiefschlaf.


    Die Idee ist schon echt Interessant. Letztlich aber soz. ein Slot in Slot Konzept. Der Junior hat ja schon einen Erweiterungsport, weshalb ich - ich nenne es jetzt mal so - Erweiterungsmodule auch gerne darüber handhaben möchte.

    Wenn ich jetzt alles samt Rechner auf einer Platine hätte (CPU, RTC, Audio...), wäre dein Konzept super, eben weil es dann ja Expansion Slots bereitstellen würde. Somit wären die einzelnen Port D Leitungen der VIA die Slot-Select Leitungen. Aber so, wie es jetzt gerade ist, kaskadiere ich dann immer mehr Modularität nach unten und mache es damit eher komplizierter. Ausserdem müsste ich dann für die einzelnen Module wieder extra Platinen anfertigen, was wiederum alles teurer macht...

  • Ich denke aber nebenbei auch über eine Möglichkeit nach, den Junior "automatisiert" mit Programmen zu beschicken, um Softwareentwicklung zu vereinfachen. Ich habe da eine USB-Transfer-Lösung für den C64 im Hinterkopf: XLink von Henning Liebenau. Geänderte Firmware für dem Junior (deswegen einen Jumper für die Kernal-Auswahl) und ein Kommandozeilenprogramm auf dem PC. Quelltext auf dem PC schreiben, assemblieren und dann mit einem Befehl zum Junior schicken und automatisch dort starten. Ich finde die Idee ganz sexy, da sie sehr schnelle Turnaround-Zeiten zulässt. Assemblieren und Übertragen zusammen in unter zwei Sekunden (je nach PC)...


    Wie bekommt ihr ansonsten Programme auf den Junior? Nur über den PM mittels XModem?

    Klingt spannend. Bisher mache ich das tatsächlich nur via XModem, was für mich akzeptabel war, da der Junior dann einfach via Tera Term sowieso am Entwicklungsrechner hängt. Wenn es da eine einfachere Lösung gibt, bin ich aber immer begeistert.


    Das ESP32 Terminal hatte ich in einer Nacht- und Nebelaktion gebastelt. Software Kernel/Library von Fabrizio Di Vittorio. Das ganze ist bei mir allerdings (noch) nicht zum Download bereit gestellt, eben weil es noch nicht wirklich sauber durchdacht ist. Für mich funktioniert es aber. Wenn man kein echtes Terminal (mehr) hat, (weil man wie ich so blöd war, das vor 10 Jahren zu entsorgen), ist es echt klasse mit VGA Monitoren oder LCDs nutzbar.

  • Hallo Jörg,

    mir ist da gerade eine Frage aufgekommen. Du hast vor kurzem ein JPG mit der Auflösung des Expansionsboards gepostet.

    Dazu habe ich eine Frage. Wie steckt man die Boards zusammen und wie kommt man dann noch an die Verbindungen wie die RS232?


    Schönes Wochenende.

  • Hallo orion7 . Die Boards sollen schlußendlich erst mal über Schraubabstandshalter übereinander gesetzt werden. Junior oben, Expansion unten. Die Verbindung der zwei Rechner ist dann bisher über zwei Quetschstecker mit 64 poligen Flachbandkabel geplant. Man kann natürlich auch mal eine Busplatine dafür machen, um mehrere Platinen zu "stacken". Vorne wird dann noch eine kurze Flachbandkabelverbindung vom 20 poligen I/O Port von oben nach unten geführt (Parallel Port Interconnect), um die Anbindung an den Parallel Drucker, den ASCII Tastatur- und den Paper Tape Reader Anschluss zu bekommen.

    Die DB25 Buchse des Parallelports liegt dann direkt unterhalb des DB25 Steckers der Seriellen Schnittstelle, so dass man auch mal ein Gehäuse planen könnte, welches rechts hinten die Peripherieanschlüsse hätte.