Junior Computer ][

  • Hallo Jörg..... wie schon mal per PN angesprochen...


    ich bin gerne auch wieder mit einem KIT dabei..

    vielen Dank für deinen Einsatz,... (Zoll und weitere Kosten können wir sicher gerne auf alle umlegen../bzw auch gerne aufrunden!)


    Vielen Dank Micha

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

  • Zoll und weitere Kosten können wir sicher gerne auf alle umlegen../bzw auch gerne aufrunden!

    Sehe ich ebenso!

    ___________________________________________________________________________________________________

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

  • Hobi hat mir angeboten 8255er für 1,50€ das Stk. abzugeben. Wer von euch hätte da Bedarf, weil er keine mehr in irgendeiner einer Kiste rumfahren hat. Ich würde dann von ihm eine entsprechende Anzahl (wenn so viel vorhanden) abnehmen.

  • kann ich die Platine direkt mit dem Junior verbinden oder brauche ich noch die IO Platine?

    Hallo Marco, direkt kannst du die Karten nicht am Junior anschließen. Du benötigst da dann die Backplane. Man könnte auch Quetschstecker für Flachbandkabel nehmen. Das ist dann aber wesentlich teurer.

    Ich würde sowieso jedem dann raten, den an der Backplane dafür vorgesehenen Spannungsversorgungsanschluss zu nutzen und dort ein Netzteil mit +5V und +12V für ein Floppy Laufwerk anzuschließen. Ich selber würde ein Pico PSU vorziehen, dass dann einfach hinten an die Backplane geschraubt wird. Das Pico PSU benötigt dann ein 12V Notebook oder Steckernetzteil, das dann natürlich entsprechend dimensioniert sein sollte.


    Wenn noch Bedarf für Backplane Platinen besteht meldet euch, dann lasse ich nochmal welche machen.


    Ich möchte auch noch rechtzeitig vor der Platinenbestellung versuchen, die ROM-/IO-Platine so umzubauen, dass ein normal großer SD-Karten Slot direkt auf die Platine gelötet werden kann. Ausserdem wollte ich ja nun doch bei der Motoransteuerung der Datasette einen Transistor statt des Reed Relais nehmen.

    Ich werde mir dann auf alle Fälle ein neues IO Board aufbauen, weil meines jetzt doch schon ziemlich verbastelt ist. Falls da also auch noch jemand eines haben möchte, kann er schon mal die Hand heben.

    Edited once, last by 2ee ().

  • Wenn an dem Teil mit der Datasette nochmal was geändert werden soll, wäre es evtl auch eine Idee, da eine DIN Buchse für Kassettenrecorder mit vorzusehen. Dafür gibt es in einer 64'er einen ganz einfachen Umbauvorschlag, der aus dem normalen Kassettenton was macht, womit der Rechner klarkommen sollte beim Einlesen. Wie steht in Ausgabe Juni 1984, Seite 32.


    . https://archive.org/details/64er_1984_06/page/n31/mode/2up


    (evtl. zusätzlich mit irgendeiner Art von "Schutz" so daß man das Kabel auch mal im Betrieb umstöpseln kann ohne gleich den IC dahinter zu zerstören)




    Ansonsten wollte ich noch was anregen: ist mal wieder so eine Idee, die nicht umgesetzt werden muß (vielleicht auch gar nicht geht, wer weiß), aber über die der Herr Platinendesigner zumindest vielleicht mal kurz nachdenken könnte.


    Folgendes: der VideoChip sitzt da ja so einzeln extra und bedient sein Videoram komplett unabhängig von der CPU. Damit macht man sich aber gerade im Homecomputerbereich schon ein paar Optionen kaputt, die evtl doch hilreich sein könnten - nämlich wenn die CPU da auch hineinschreiben dürfte ins RAM. Die Idee ist jetzt gar nichtmal, daß das sofort eingebaut wird, aber daß die Option vielleicht offen bleibt, indem die Daten und Adressleitungen für das VideoRAM nach unten verlängert werden und dort dann optional für weitere Basteleien vorhanden sind. So könnte man da evtl. später eine Platine aufsetzen auf die auch die CPU dann Zugriff hat.

    Keine Ahnung , ob das sinnvoll ist oder elektrisch überhaupt geht, oder ob man die "freien Enden" dann irgendwie terminieren muß und ob der Videochip sowas überhaupt mag ohne komische Lesefehler o.ä. zu haben. Aber so als potentielle Stelle, wo man von außen doch noch auf einfache Art ans VideoRAM kommt, wäre das evtl schon witzig. Wer weiß, was dann draus wird.

  • Hobi hat mir angeboten 8255er für 1,50€ das Stk. abzugeben. Wer von euch hätte da Bedarf, weil er keine mehr in irgendeiner einer Kiste rumfahren hat. Ich würde dann von ihm eine entsprechende Anzahl (wenn so viel vorhanden) abnehmen.einen 8255

    Einen 8255 nehme ich gerne ab und das neue I/O-Board ebenso.

    ___________________________________________________________________________________________________

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

  • Da ich ja nicht so firm bin mit all diesen benötigten Komponenten fand ich das KIT für den Junior ideal. Gibts so etwas auch für die IO Platine? Oder „nur“ eine Stückliste? Ich will damit sagen: Ich nehme alles was dazugehört ☺️

    Ich suche: Atari 800, MPF-IP

  • geht mir (leider) genauso.. kein eigner 8255 vorhanden.. und beim IO-Board würde ich auch auf Nr. Sicher gehen... gerne auch neu


    Vielen Dank

    MIcha

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

  • Dann wäre also ein 5er Satz IO-Boards schon mal weg. Ich bestelle dann auch gleich nochmal Backplanes, dann hat Marco alles zusammen.

    Ich werde Hobi mal fragen, ob er 5x 8255er für uns übrig hat, dann muss man die nicht aus China bestellen.


    Da ich ja nicht so firm bin mit all diesen benötigten Komponenten fand ich das KIT für den Junior ideal. Gibts so etwas auch für die IO Platine? Oder „nur“ eine Stückliste? Ich will damit sagen: Ich nehme alles was dazugehört ☺️

    NorbertJ hatte mich auch schon gefragt, ob ich für den Floppy-/Grafik-Controller wie bei der Tastatur ein Kit zusammenstelle. Das Kit für das Junior ][ Mainboard kam ja von mesch , der damals so lieb war und sich diesbezüglich angeboten hatte.

    Ich hoffe ihr seid mir nicht böse, wenn ich selber keine vollständigen Kits zur Verfügung stelle. Die Zusammenstellung der Tastaturbauteile hatte mich damals schon ziemlich gestresst, weil es ja doch auch familiär und beruflich noch genügend Anderes zu tun gibt. Bei der Bestellung der heiklen Bauteile bin ich aber jederzeit gerne bereit die dann auch im größeren Stil zu tätigen.

    Wenn an dem Teil mit der Datasette nochmal was geändert werden soll, wäre es evtl auch eine Idee, da eine DIN Buchse für Kassettenrecorder mit vorzusehen. Dafür gibt es in einer 64'er einen ganz einfachen Umbauvorschlag, der aus dem normalen Kassettenton was macht, womit der Rechner klarkommen sollte beim Einlesen.

    Auf der IO-Platine gibt es neben dem Datasetten Platinenstecker noch die Möglichkeit über J14 die gleichen Signale abzugreifen um dort dann noch eine wie auch immer geartete Schaltung zur Signalumsetzung von Standardkassettenrekordern anzuschließen. Diese kann dann auch auf dem Lochrasterfeld der IO-Platine aufgebaut werden. Ich glaube, das ist die individuellste Lösung.


    Ansonsten wollte ich noch was anregen: ist mal wieder so eine Idee, die nicht umgesetzt werden muß (vielleicht auch gar nicht geht, wer weiß), aber über die der Herr Platinendesigner zumindest vielleicht mal kurz nachdenken könnte.


    Folgendes: der VideoChip sitzt da ja so einzeln extra und bedient sein Videoram komplett unabhängig von der CPU. Damit macht man sich aber gerade im Homecomputerbereich schon ein paar Optionen kaputt, die evtl doch hilreich sein könnten - nämlich wenn die CPU da auch hineinschreiben dürfte ins RAM. Die Idee ist jetzt gar nichtmal, daß das sofort eingebaut wird, aber daß die Option vielleicht offen bleibt, indem die Daten und Adressleitungen für das VideoRAM nach unten verlängert werden und dort dann optional für weitere Basteleien vorhanden sind. So könnte man da evtl. später eine Platine aufsetzen auf die auch die CPU dann Zugriff hat.

    Das Problem dabei ist, dass der V9938 mit seinem eigenen Speicher-Controller auf die DRAMs zugreift und natürlich auch einen entsprechenden Refresh durchführt. Die Unterscheidung, wann der Controller die Refresh-Zyklen macht, wann er auf das VRAM zugreift um die Daten auf dem Bildschirm auszugeben, und wann ein "gefahrloser" CPU-Zugriff durchführbar wäre, mag evtl. möglich sein. Aber vermutlich ginge das Ganze mit einer Menge Aufwand einher, schon allein deshalb, weil es eben DRAMs sind. Ein direkter Zugriff auf die Adress- und Datenleitungen verbietet sich daher im Wesentlichen.


    Eine Möglichkeit, trotzdem direkt auf das VRAM zuzugreifen, besteht aber dennoch über Block Move/Copy Befehle der V9938. Damit könnte man evtl. das Extra RAM (64KB) mit eigenen Daten beschreiben. Bei kleineren Auflösungen sind von den insgesamt 192KB VRAM natürlich noch mehr ungenutze Bereiche verfügbar.

  • 1 komplettes IC-Kit bitte auch für mich! Hatte ich ja bereits weiter oben 'bestellt'.

    ___________________________________________________________________________________________________

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

  • Ich hab jetzt am Sonntagabend je 5x neue IO-Platinen, Backplanes und Floppy-/Grafik-Controller Platinen bestellt.

    Die Floppy Karte wollte ich jetzt noch nicht in größerer Stückzahl bestellen, da ich ja noch nicht weiß, ob sich im Layout noch irgendwo der Fehlerteufel versteckt. Ich würde da dann erst nach erfolgreichen Tests nochmal welche bestellen, so dass jeder der sich jetzt gemeldet hatte eine bekommen kann.


    Die Bauteilbestellung mache ich auch erst, wenn klar ist, dass alles funktioniert. for(;;) hatte mir eine Anzahl CXA2075 und 21,47727 MHz Quarze aus seinem Bestand zugeschickt, die aber leider bisher nicht angekommen sind und wohl auch auf dem Postweg verschollen bleiben. Leider hat er von den Encodern nun auch keine mehr übrig, so dass ein zweiter Versuch mir welche zu schicken nicht mehr möglich ist. Ich bin aber zufälligerweise bei mir noch auf einen CXA2075 gestoßen, den ich erfolgreich von einer Platine löten konnte. Ich werde es mal mit diesem Bausteinchen dann ausprobieren. Von den Quarzen hatte ich ja bereits auch schon 10 Stück bestellt, fragt sich nur, wann die bei mir eintreffen. Die 4,4336 MHz Quarze gibt es zum Glück bei Reichelt, so dass eine lange Lieferzeit hier nicht besteht.


    Solange ich jetzt zum Warten verdammt bin, werde ich mir wohl mal wieder den DOS Code ansehen und dort ein wenig weiter programmieren.


    Apropos Betriebssystem. Dietrich ist mittlerweile ziemlich weit mit der CPM-65 Portierung gekommen. Ich konnte jedenfalls schon erfolgreich einige seiner Tools und auch fig-Forth ausprobieren





    Ich hoffe ich greife ihm da jetzt nicht zu weit voraus, zumal er gerade im Urlaub ist. Aber ich fand jetzt einfach mal, dass seine Arbeit mal wieder Erwähnung finden sollte :anbet: . Haupttester war übrigens nicht ich, sondern NorbertJ , dem da neben Dietrich das Hauptlob gebührt :):thumbup::thumbup: .


    Übrigens, weiß jemand, ob es bei fig-Forth normal ist, dass bei der Variablendeklaration so seltsame Messages geworfen werden, statt mit OK zu antworten?

  • Quote

    Übrigens, weiß jemand, ob es bei fig-Forth normal ist, dass bei der Variablendeklaration so seltsame Messages geworfen werden, statt mit OK zu antworten?

    Ja, das liegt an der Implementierung des Blocktreibers. Bei mir ist das eine kleine RAM-Disk ohne die Blöcke 1&2, auf denen die Volltextfehlermeldungen liegen, um maximal viel Diskspace zu haben. Also kommen nur die Fehlernummern, die der User ja sicher im Kopf hat 😇. Und natürlich machen FORTH-Programmierer auch nie Fehler….

    Spass beiseite - mittelfristig plane ich, das Massenspeicherkonzept meiner FIG-Forth implementierung zu ändern und dann wird Massenspeicher in Disk-Größe verfügbar sein und dabei passen dann auch die Seiten 1&2 rein.


    Nach meinem Urlaub werde ich die Benutzerfreundlichkeit meiner CPM-65 Implementierung noch etwas erhöhen und dann die Software veröffentlichen. Wenn alles klapt, dürft ihr euch auf Weihnachten freuen. 🎅🏻


    Danke an Jörg und NorbertJ für die Unterstützung


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Heute sind die Platinen eingetrudelt.

    Den Floppy-/Grafik-Controller hab ich mal so weit wie möglich schon bestückt. Den 64 pol. Sockel mit 1,77mm Pinabstand muss ich noch bestellen. Der wird dann aber in der einfachen Ausführung sein, der gedrehte Sockel kostet beim einzigen Anbieter den ich gefunden habe 12,50€ - Wucher !!! Die Billigausführung liegt dann bei 2,50€. Ich würde dann einfach für alle, die eine Controller Platine haben wollten, gleich einen Sockel mitbestellen.

    Die Quarze sind leider auch noch nicht aus CN eingetroffen. Dafür hat mir gestern Hobi eine Stange 8255er mitgebracht, so dass da wenigstens keine mehr bestellt werden müssen. Nächste Woche werde ich mal versuchen, den Floppy Controller von der Platine aus in Gang zu bringen.



    Die neuen IO-Platinen sind natürlich auch da. Ich hab als erstes mal den SD-Karten Sockel aufgelötet, den ich bei Pollin bestellt hatte, um zu schauen, ob der Footprint den ich in KiCAD dafür neu erstellen musste auch passt. Tut er!



    Die Pegelanpassung für die SD-Karte hab ich nun über einen 4050 gestaltet, das war das einfachste. Beim SMD 3,3V Regler hab ich leider vergessen, den Wert mit aufrucken zu lassen (NCP1117-3,3), da steht jetzt erst mal nur U20. Das ist aber auch schon in KiCAD geändert. Die Motoransteuerung für die Datasette hab ich nun über einen TIP125 - seines Zeichens einfach nur ein Darlington Transistor - bewerkstelligt. Ansonsten haben sich hier nur Kleinigkeiten geändert.

    Den geänderte Schaltplan hab ich unten angehängt.


    Zwischenzeitlich konnte ich ja am DOS weiter arbeiten. Da gibt es dann nächste Woche mal die ersten Ergebnisse.


    Wünsch euch ein schönes Wochenende

  • > Die Pegelanpassung für die SD-Karte hab ich nun über einen 4050 gestaltet


    Hallo Jörg,

    welchen 4050 Chip nimmst du da ?
    Gibt es da welche die mit 3,3V arbeiten können ?

    mfG. Klaus Loy

  • Hallo Klaus,


    welchen 4050 Chip nimmst du da ?
    Gibt es da welche die mit 3,3V arbeiten können ?

    der CD4050BC lässt sich an VDD zwischen 3V und 15V betreiben (eigentlich sogar -0,5V - 18V) und verträgt an den Eingängen die gleichen Spannungen. Der Eingangs High Pegel liegt bei typ. 2,75V, womit er wunderbar im 3,3V als auch 5V TTL Bereich liegt.



    Vorhin hab ich mal die ersten Bausteinchen auf den Floppy Controller bestückt, mit dem Ergebnis, dass sich garnichts tat 8| . Den ersten (peinlichen) Fehler konnte ich dann recht schnell identifizieren: Der FDC Baustein hatte keinen Takt am CLK1 Eingang. Ich hatte im Schaltplan den Oszilator per zwei mal Drehen ausgerichtet, statt das Bauteil zu spiegeln. Somit war GND des Oszillators oben und VCC unten und GND an +5V und VCC an Masse angeschlossen :fp: .

    Den Oszillator wieder von der Platine zu bekommen hat sich als das schwierigste rausgestellt. Spoiler: ging nicht zerstörungsfrei.

    Als fix lässt sich der Osillator einfach um 180 Grad gedreht einbauen und Pin 8 (Clk Out) wird auf der Platine mit einem Patchkäbelchen mit Pin 1 (N.C.) verbunden.

    Neuere Platinen werden den Fehler dann natürlich nicht mehr haben.


    Leider lief der Controller nach dem Fix aber immer noch nicht. :ball:


    Als ich dann schon zum Logic Analyzer greifen wollte, hab ich dann einfach als letzten Versuch mal die Reset Leitung am FDC gemessen. Und siehe da, die war hochohmig!!!

    Die Invertierung des /RES Signals vom Junior in des RST Signal des GM82C765 ist in den zweiten GAL U4 ausgelagert. Die Funktion des ersten GAL U3 hatte ich gleich zu Beginn vollständig getestet, die des zweiten aber nicht. Als ich den GAL dann nochmal programmieren wollte, brachte der Programmer eine Kurzschlussabschalt Meldung, was er beim ersten Programmiervorgang nicht angezeigt hatte. Der GAL war also vollständig tot.


    Mit einem neuen GAL funktioniert jetzt alles zu mindest so weit, wie es die Breadboard Schaltung zuvor auch schon getan hatte. :tanz:

    Morgen setzte ich mich mal an die ATMega Programmierung für das PS/2 Keyboard Interface.

  • Ist schon entschieden, welches Diskettenformat für die Floppy zum Einsatz kommt? FAT12?


    Dietrich

    Meine Computer: Elektor Junior, EPSON HX-20, Robotron PC1715, Poly-Computer 880, Schneider CPC464, APPLE II+, VIKTOR V386PX

    Mein Betriebssystem: CPM-65

  • Hallo Dietrich,


    ja die Disketten bekommen FAT12 in meinem DOS. Aber letztlich kann man natürlich auch jedes andere Format mit seinem eigenen Bootloader unterstützen.

  • Neuere Platinen werden den Fehler dann natürlich nicht mehr haben.

    Ich brauch' meist 3 Revisionen, bis ich es alles so habe wie ich es will. Zum Glück kostet ein Batch jetzt ja nicht mehr um die 100 $, sondern nur noch so 20 $ bis 30 $. Das macht es einem einfacher.

  • Quote

    der CD4050BC lässt sich an VDD zwischen 3V und 15V betreiben (eigentlich sogar -0,5V - 18V) und verträgt an den Eingängen die gleichen Spannungen. Der Eingangs High Pegel liegt bei typ. 2,75V, womit er wunderbar im 3,3V als auch 5V TTL Bereich liegt.


    Danke Jörg, again what learned.

    Ich hatte in alten CMOS Datenblätter geschaut, da war natürlich nichts mit 3V ...

    Klar dachte ich, dass es da auch was modernes geben kann aber wie lautet die Bezeichnung.



    Da werd ich gleich bei der nächsten Reichelt Bestellung mal so ein paar "Pegelwandler" mit bestellen. Bzw. ich hab mir auf ebay eben 10x CD4050BCN bestellt.

  • So, jetzt musste ich doch noch ein paar Änderungen auf der Platine vornehmen, die sich aber mit wenigen Handgriffen patchen lassen.


    Zuerst hab ich natürlich vergessen am Joystick Port Pullup Widerstände anzubringen. Die kann man aber als Widerstandsarray leicht nachrüsten und das Problem ist dann auch auf der Rev. 1a Platine behoben.


    Der Zweite Punkt war die Auslösung des Motor On/Off Watchdog Timers. Das ganze bisher von mir erdachte Prozedere war mir dann doch zu Umständlich.


    Jetzt läuft es so: Die beiden Ausgänge des FDC /MO1 und /MO2, welche die Motoren der Laufwerke schalten, haben jetzt einfach direkt Verbindungen mit den /MOTOR1 und /MOTOR2 Ausgängen des ATMega328.



    Diese waren vorher nur dazu da, den aktuellen Motorstatus (1 Motor an / 0 Motor aus) über den IC U2 anzuzeigen. Jetzt ist das ganze invertiert, spiegelt also den echten Status der Leitungen wieder und die ATMega Ausgänge /MOTOR1 und /MOTOR2 hängen direkt am Floppyanschluss und können nun die Laufwerksmotoren direkt ein- und ausschalten. Das geht, weil am FDC /MO1 und /MO2 Open Collector Ausgänge sind.


    Der ATMega328 hat eigentlich keine O.C. Ausgänge. Ich hab das hier genauso gemacht, wie am I2C Port der IO-Platine. /MOTOR1 und /MOTOR2 sind als Eingänge geschaltet und somit hochohmig. Wenn ein Motor geschaltet werden soll, wird dann der entsprechende Pin auf LOW und als Ausgang gesetzt.

    Dieser bleibt dann für 3 Sekunden auf LOW.


    Gestartet wird das durch einfaches Lesen oder Schreiben der Adressen BASIS+4 ... BASIS+11, was dem Microcontroller über die Eingänge DA0, DA1 und DA2, sowie DSTRB ein Steuerwort übergibt. Also z.B. LDA $804 setzt DA0...DA2 auf 000, LDA $805 auf 001 usw.Das Steuerwort wird im GAL gelatcht, weshalb ich Pin 1 (CLK) noch mit dem Register Select Pin 2 verbinden musste. Das geht natürlich auf der Platine einfach.


    Man kann dem Microcontroller also 8 Funktionen übergeben. 000 und 001 stehen für MOTOR1 und MOTOR2 für 3 Sekunden anschalten. D.h. am FDC muss das Motor Register nun nicht mehr entsprechend gesetzt werden, man könnte aber darüber die Motoren auch dauerhaft einschalten.


    Die restlichen der möglichen 8 Steuerwort Funktionen werde ich wohl nutzen, um der PS/2 Keyboard Routine zu sagen, welches Tastaturlayout sie nutzen soll. Die von mir genutzte Code Library kann US, UK, FR, SP, IT und DE, was also genau passen würde. Wer etwas anderes braucht muss sich da einfach nur den Code ändern. Eventuell streicht man auch eine der Layouttabellen und gibt bei Funktion 7 dann die direkten Scan Codes der Tastatur aus. Dann könnte man über ein Betriebssystem auch beliebige Layouttabellen bereitstellen.


    Wärend der 3 Sekunden LOW Phase von /MOTOR1 oder /MOTOR2 kann die jeweilige Leitung jederzeit nachgetriggert werden, so dass der Motor so lange läuft, wie eben auf die Floppy-Laufwerke zugegriffen wird.


    Sind beide Motor Timer abgelaufen, wird zum Abschluss ein IRQ ausgelöst, womit eine in einer Pollingschleife hängende Lese- oder Schreibroutine wieder befreit werden kann. Das ist dann z.B. sinnvoll, wenn im Laufwerk keine Diskette eingelegt ist. Ohne einen zusätzlichen Schleifenzähler würde die CPU dort ewig hängen. Das kostet aber wieder Zeit, welche ich wegen des engen Timings nicht wirklich habe. Der Interrupt vereinfacht das wesentlich.


    So weit erst mal die letzten Fortschritte.

  • Gibts bitte auch noch den kompletten Plan ? Als Bild ?


    Mir war noch was zum Joystick eingefallen. Da müßte man aber gucken, ob das überhaupt geht. Die Idee ging so in die Richtung, daß man da ja noch genug Anschlüsse frei hat (dort an dem IC wo der Joystick anlandet), um einen zweiten Port bereitzustellen. Man müßte dafür aber die Joystickleitung BCD codieren - also von 6 Einzelleitungen auf 3 "eindampfen" (2^3 =8), bevor sie in den IO Chip gehen. Der Software dürfte es ja relativ egal sein, ob sie da jetzt Zahlen oder Einzelbits abfragt. Könnte man evtl. auch als Option auf der Platine vorsehen, so daß man entweder den/die beiden BCD ICs aufsetzt oder eben einfach den Direktanschluß und dann eben nur den einen hat. Für Mehrspieler macht das aber durchaus viel Sinn. ;)

  • Hallo ThoralfAsmussen ,

    unten der aktuelle Plan als PDF. Ich hab jetzt noch am ATMega den Port Pin PD0 als Interrupt Request auf das Lese Register (U2 Pin 4) gelegt. Nach Auslösen des Watch Dog Interrupts geht dan IREQ auf High, so dass die Interrupt Routine die Quelle der Unterbrechung erfragen kann.


    Mir war noch was zum Joystick eingefallen. Da müßte man aber gucken, ob das überhaupt geht. Die Idee ging so in die Richtung, daß man da ja noch genug Anschlüsse frei hat (dort an dem IC wo der Joystick anlandet), um einen zweiten Port bereitzustellen. Man müßte dafür aber die Joystickleitung BCD codieren - also von 6 Einzelleitungen auf 3 "eindampfen" (2^3 =8), bevor sie in den IO Chip gehen. Der Software dürfte es ja relativ egal sein, ob sie da jetzt Zahlen oder Einzelbits abfragt.

    Ursprünglich wollte ich tatsächlich zwei Joystick Ports drauf machen. Ich hatte dann aber leider keinen Portanschluss für die Umschaltung mehr frei (der nicht angeschlossene Pin PC3 des 8255 ist im Modus 1 als IntA Ausgang geschaltet). Sonst hätte man zwei 74LS157 2 zu 1 Selektoren nehmen können.


    Nach deiner Idee müsste ich zwei 8 zu 1 Datenselektor (z.B. den 74LS251) nehmen, an dem ich die 6 Eingangssignal nacheinander über die Selektor Adressleitungen abfrage. Dann könnte man mit insgesamt 5 Anschlüssen die beiden Joystick Ports abfragen (A0,A1,A2 für die Auswahl einer der 6 Joystick Leitung und jeweils Q (1,2) als Biteingang der gerade aktuerll abgefragten Joystickleitungen. Eigentlich eine gute Idee, aber leider lässt sich der 8255 nicht so nutzen, dass ich frei wählbare Ein- und Ausgänge habe. Das ginge an einer 6522. Der 8255 kann immer nur ganze 8 Bit, bzw. 4 Bit Ports als Ein- oder Ausgänge schalten. Alles Umstellen, würde heißen, das die jetzigen Platinen mit den neuen nicht mehr kompatibel wären. Deshalb lass ich das lieber mal.

    Eine andere Möglichkeit einen zweiten Joystickanschluss zu erhalten, wäre, die User IO Leitungen der 6522 VIA auf der IO Platine zu nutzen.


    Der nächste Rechner hat dann auf alle Fälle zwei Anschlüsse drauf. Da müsst ihr euch aber noch ein wenig gedulden. :)


    Edit: Hmmm, man könnte natürlich auch die Select Leitung an U21 doppelt nutzen...

  • OK. Dank für den "Vollplan" - da kommt man besser hinterher nachzuverfolgen, was wohin verbunden ist. Und wenn man, wie ich z.B., alles immer wieder nachschlagen muß (was z.B. ICs betrifft), ist das schonmal extrem hilfreich. Man bekommt dann immerhin eine Ahung, wie es gehen könnte :)


    Nach deiner Idee müsste ich zwei 8 zu 1 Datenselektor (z.B. den 74LS251) nehmen, an dem ich die 6 Eingangssignal nacheinander über die Selektor Adressleitungen abfrage. Dann könnte man mit insgesamt 5 Anschlüssen die beiden Joystick Ports abfragen (A0,A1,A2 für die Auswahl einer der 6 Joystick Leitung und jeweils Q (1,2) als Biteingang der gerade aktuerll abgefragten Joystickleitungen. Eigentlich eine gute Idee, aber leider lässt sich der 8255 nicht so nutzen, dass ich frei wählbare Ein- und Ausgänge habe. Das ginge an einer 6522. Der 8255 kann immer nur ganze 8 Bit, bzw. 4 Bit Ports als Ein- oder Ausgänge schalten. Alles Umstellen, würde heißen, das die jetzigen Platinen mit den neuen nicht mehr kompatibel wären. Deshalb lass ich das lieber mal.


    Das mit dem 8255 war mir so nicht klar, und den 6522 wollte ich auch gar nicht mit anfassen. Die Variante mit dem 74LS251 war aber nicht das, was mir so vorschwebte. Mir war nämlich v.a. aufgefallen (um die Ideengeschichte mal zu erläutern), daß an dem 8255 Port B das siebte Bit (PB7)(Pin25) ja so überhaupt gar nicht benutzt wird. Und dann ist mir irgendwie aufgefallen, daß man ja für 5 Joystick Ereignisse gar nicht unbedingt 5 Leitungen oder wie hier für 7 Joystick Ereignisse (o+u+l+r +3Fire) nicht 7 Leitungen braucht. Voraussetzung wäre, daß man die Joystickinfos als BCD Codes und nicht binär am Chip "abgibt". D.h. noch einen binär-nach-BCD Wandler davor hat. Mit so einem zusätzlichen Codierstufe kann man dann an 8 Eingängen sehr schön 2x 4Bit als BCD codiertes Datum eingeben. Der einzige Chip der des wirklich per-se zu können scheint, heißt DM74185A . (Recherche der letzten halben Stunde)(, bin gerade noch am Knobeln wie das eigentlich funktioniert).

    Damit sollte das aber auch mit den 8 Input Pins am 8255 klappen, ohne andere/weiter Chips "zu mißbrauchen" und das System zu stören.


    Ein alternative Variante wäre so eine Art Takt, der einen De-Multiplexer immer so umschaltet, daß entweder die sieben Info von Joy 1 oder die von Joy 2 durchgestellt werden und außerdem an Pin PB7 vom 8255 eine Info anliegt welcher Joystick gerade "durchgereicht" wird. Auch hier wäre der 8255 reiner Input auf Port B.


    Nachteile bei beiden Varianten sind ein Zeitverzug: bei der langatmig beschriebenen Ursprungsidee (DM74185A bzw. Binär-zu-BCD Encoder) sind das 25ns. Bei der zweiten Geschichte hängt es vom Takt ab und halbiert sich im Vergleich zu nur Ein-Joy Variante. Beide müssen in der Abfrage Software immer noch zusätzlich mehr machen, als nur die Leitungen "auszählen". Bei Var1 wäre das eine maskieren mit AND#00001111 bzw maskieren mit AND#11110000 und 4x LSR. Bei Var2 muß das Bit von PB7 ausgewertet werden.



    Ganz generell: Ist eh nur so eine Idee. Ich glaube kaum, daß es wirklich relevant ist, ob da jetzt ein oder Joyports da sind, aber wenn die Idee da ist, kann evtl die Platine das schon können.




    Es gibt da auch noch ganz andere lustige Sachen, die einem so einfallen, wenn man sich das Ganze so anschaut.


    Sowas z.B.

    Ich hab jetzt noch am ATMega den Port Pin PD0 als Interrupt Request auf das Lese Register (U2 Pin 4) gelegt. Nach Auslösen des Watch Dog Interrupts geht dan IREQ auf High, so dass die Interrupt Routine die Quelle der Unterbrechung erfragen kann.


    ist auch ein Super Idee, weil sie einfach viel Spielraum läßt, wo man vorher nie weiß, wofür der mal gut sein kann.




    PS: ursprünglich hätte ich ja gedacht, daß es zu soetwas wie diesem Chip https://www.ti.com/product/CD4028B einfach eine Invers-Variante gibt (also nicht BCD-to-Binary, sondern andersherum). Scheint aber keinen Bedarf gegeben zu haben. Wobei man denken könnte, daß das schon durchaus sinnvoll sein könnte, bzw. hätte sein können.