Junior Computer ][

  • Interessante Idee MMU faults mit einem zweiten Prozessor zu bearbeiten.

    Ich hatte jetzt tatsächlich vorgehabt, Abort bei einem Page fault oder einer Zugriffs Verweigerung zu verwenden, schon allein deshalb weil der aktuelle Befehl dann wiederholt werden kann.

  • SRAM MMU, sowas ist verbaut im MC-68000-Computer.

    Auszug MC11/1984: MC-68000 Teil 1_Schaltung.pdf
    diese "MMU" ist auf Seite 123 zu finden.
    Leider hab ich so noch immer nicht verstanden.
    Vermutlich müsste ich länger drüber nachdenken.

    Habs damals auch interessiert angeschaut :))


    Und jain. Die Schwierigkeit beim Verständnis dürfte darin liegen, dass es keine MMU sondern ein programmierbarer Adressdekoder ist.


    Die Aufgabe des 1Ki x 4 RAM ist nicht das 'Umschaufeln' von RAM auf andere Adressen, sondern festlegen welche Bausteine auf welche Adressen reagieren.


    Input ins RAM sind die oberen 10 Adressbits (A14..23), Output vom RAM sind 4 bit mit einem 'Selektionscode', welcher dann per stino 138er in 16 Chipselect-Leitungen dekodiert wird. Für jeden 16 Ki (14 bit) Block im Adressbereich kann man so festlegen ob sich RAM, ROM, I/O oder Slots angesprochen fühlen soll. Was diese dann wiederum mit der (ganzen) 24 Bit Adresse machen oder nicht ist deren Sache.


    Der Clou ist dass halt einige der CS Codes verwendet werden um spezielle Funktionen zu erzeugen:


    - Busfehler

    - Automatisches DTACK


    Mit Busfehler kann man Speicherbereiche gegen Zugriff schützen, mit dem automatischen DTACK kann man auch auf Adressen zugreifen die es (möglicherweise) nicht gibt - hilfreich um zu schauen of irgendwo ein Zusatz-ROM eingesteckt ist oder nicht.


    Könnte man auch alles mit einem schnellen PROM bzw. PAL machen, oder halt einem TTL-Bergwerk.


    Im Sinne einer MMU kann eigentlich nur den Speicherschutz verwenden indem man während der Laufzeit eines Tasks alles was der nicht haben darf auf gesperrt setzt. Aber 1024 transfers bei jedem Taskwechsel ist teuer.


    Was man natürlich machen könnte ist das RAM breiter machen (bis 16 bit geht problemlos) und da dann auch eine Adressübersetzung reinmachen - verändert aber das Dekodertiming. Da könnte man dann auch Adressen rumschieben und/oder sinnvolle Bits wie 'read only' und 'no Execute' einführen.


    Bei 65816 würde das auch gut gehen, wobei ich da gleich mit 64 Ki Blöcken arbeiten würde. Das ist der für die CPU am besten passende Kompromiss zwischen feiner Stückelung und wenig Overhead. Kommt auch ganz natürlich, da die 65816 den Speicher eh als 256 64 KiB Blöcke sieht.

  • Ich schaue gerade die historie vom junior2 an und ja der Eintrag #209 ist schon etwas angestaubt

    aber der file BANDIT.TXT ist im kim-1 paper tape / MOS format siehe:

    Load papertape format – Retro Computing

    srec_mos_tech


    Vor einiger Zeit habe ich einen fix für den sbasm geschrieben der das format erzeugen kann.

    Da wurde die letzte Zeile, die eine ende kennung der Übertragung ist,

    falsch generiert womit der kim-1 hängen blieb.

  • Heute klingelte es an die Tür.. packen von jlcpcb.com.


    Der anfang ist gemacht. Und Lesefutter gibt's auch!


    Gruss,


    Edzard





  • Nachdem ich den Floppy Treiber soweit fertig programmiert hatte, dass das Lesen der Sektoren fehlerfrei funktioniert, bin ich erst mal dazu übergegangen, an der Hardware weiter zu machen um endlich etwas voran zu kommen.

    Die Schaltung für Floppy-/Grafik-Controller ist nun soweit fertig, so dass jetzt nur noch der ROM-Teil fehlt. Ich hab heute mal angefangen, die Platine ansatzweise zu gestalten, wobei sich mir gerade die Frage stellt, ob ich auf der linken Seite der Platine Platz lassen soll, um eine 3,5" Floppy darauf zu montieren.

    Als Anschlüsse für Monitore, würde ich Composite, S-Video und eine 9-pol Buchse mit R, G, B, Video, H-Sync, C-Sync und Masse unterbringen. Bei letzterem kann man sich dann an den vorhandenen Signalen bedienen und beliebige Adapter für z.B. SCART basteln.


    Sobald ich die Platine soweit fertig designed habe, melde ich mich wieder.

  • Hallo André, ich hab den SD-Adapter von AZ-Delivery genommen. Auf der neuen IO-Board Version werde ich aber darauf verzichten und einen SD-Karten Sockel mit Pegelwandlern direkt auf der Platine unterbringen.

    Gibt es einen Schaltplan von AZ-Delivery?


    Welchen SD-Karten Sockel willst Du nehmen? Ich suche einen der noch 'von Hand' lötbar ist. D.h. auch smd, aber ohne 'versteckte' pins.

  • Hallo André, ich hab den SD-Adapter von AZ-Delivery genommen. Auf der neuen IO-Board Version werde ich aber darauf verzichten und einen SD-Karten Sockel mit Pegelwandlern direkt auf der Platine unterbringen.

    Gibt es einen Schaltplan von AZ-Delivery?


    Welchen SD-Karten Sockel willst Du nehmen? Ich suche einen der noch 'von Hand' lötbar ist. D.h. auch smd, aber ohne 'versteckte' pins.

    Schaut mal hier: https://www.we-online.com/de/c…wr-crd_card_connectors_sd

  • Gibt es einen Schaltplan von AZ-Delivery?


    Welchen SD-Karten Sockel willst Du nehmen? Ich suche einen der noch 'von Hand' lötbar ist. D.h. auch smd, aber ohne 'versteckte' pins.

    Einen Schaltplan hab ich nicht gefunden. Die Pegelanpassungen sind aber natürlich einfach mit Open Collector Treibern zu machen. Zur Not würde natürlich

    auch ein Spannungsteiler seinen Dienst verrichten.

    Ich werde auf der neuen Revision einen normal großen Push-Push Sockel von Pollin nehmen. Die Micro SD Sockel will ich nicht mehr einsetzen, weil mir die SD-Karten da einfach zu blöd zu handhaben sind. Heb mal eine flach auf dem Tisch liegende Micro SD-Karte hoch, dann weist du was ich meine X/ .

  • Ich hab heute mal angefangen, die Platine ansatzweise zu gestalten, wobei sich mir gerade die Frage stellt, ob ich auf der linken Seite der Platine Platz lassen soll, um eine 3,5" Floppy darauf zu montieren.

    Wenn man den Floppy-Anschluss auch per Kabel nach außen führen kann, sollte man mal einen Gehäuseeinbau des Rechners planen, dann bin ich eher für die Platinenversion.

    ___________________________________________________________________________________________________

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

  • Wenn man den Floppy-Anschluss auch per Kabel nach außen führen kann, sollte man mal einen Gehäuseeinbau des Rechners planen, dann bin ich eher für die Platinenversion.

    Hallo Norbert, ich würde evtl. zwei Anschlüsse - einmal für On-Platinen Floppy und einmal extern - drauf packen. Man könnte aber natürlich auch mit den üblichen Floppykabeln mit zwei Anschlüssen das Gleiche erreichen.

  • Hier mal der erste grobe Entwurf der Platine. Da wird letztendlich noch einiges hin und her geschoben.



    Ich habe jetzt noch einen 8255A PIA mit drauf gepackt, um TTLs einzusparen. Hier hängt dann der DIP Switch zum Wählen der Laufwerkstypen, das Bank Switching der ROM Seiten und ein Standard Joystick Port.


    Da ich noch Port A und eine Leitung von Port B an der PIA frei habe werde ich wohl noch einen ATMega328P für den Anschluss einer PS/2 Tastatur hinzufügen. Somit benötigt man dann nicht unbedingt das ASCII Keyboard wenn der Junior ohne Terminal direkt an der Grafikkarte betrieben betrieben wird.


    Den S-Video Anschluss hab ich jetzt mal gestrichen.


    Das Floppy Laufwerk auf die Platine zu packen macht dann doch keinen Sinn. Erstens müsste ich alle Bauteile von der linken auf die rechte Seite verschieben, was dann definitiv eng wird. Zweitens ist ein 3,5" Laufwerk auch zu hoch um zwischen zwei Platinen an der Backplane gepackt zu werden. Ich hab jetzt statt dessen eine Aussparung hinter dem Floppy Konnektor in die Platine gesetzt. Somit kann das Kabel nach unten durchgeführt werden und das Laufwerk z.B. auf einer Montageplate unterhalb des Platinen Stacks geschraubt werden.


    Der RGB Video Anschluss ist Pin Kompatibel mit einem Commodore Farbmonitor


    Edit: Hier noch der bisher ungeprüfte Schaltplan.

  • RGB per Kondensator gekoppelt :grübel:

    Ist das echt so vorgeschlagen?

  • RGB per Kondensator gekoppelt :grübel:

    Ist das echt so vorgeschlagen?

    In den Original Datenblättern wird nur ein NPN mit Emitter Widerstand angegeben. Die Schaltungen für R,G,B,CSync hab ich so 1:1 aus dem Schaltplan eines MSX Rechners übernommen. Ich werde das jetzt mal in der ersten Revision so ausprobieren. Testen kann ich es im Vorfeld leider schlecht, weil der V9938 einen 1,78mm Pin-Pitch hat, sprich auf kein Breadboard o.ä. passt.

  • Naja, es geht darum, dass die Signale an sich nicht gleichstromfrei sind. Manche Monitore kommen damit vielleicht klar, da sie mit der Austastlücke (Schwarzpegel) einen Referenzpegel finden.

  • Der V9938 wird bestimmt beim Aufbau für die meisten der Showstopper sein - oder hast du da eine lieferfähige Quelle, falls es zu einem späteren Nachbauprojekt kommt.

    Ich hab meinen über UTSource bekommen https://www.utsource.net/de/sch/V9938C.html

    Da hab ich auch den Floppy Controller recht günstig bekommen und die 8255er haben sie auch noch in Mengen.

  • Den S-Video Anschluss hab ich jetzt mal gestrichen.

    Schade, wenn man nur einen 'normalen' Monitor hat... Einen Wandler von S-Video auf VGA besitze ich ja, aber keinen von RGB auf VGA. Oder liege ich da falsch, dass RGB-Video nicht identisch mit VGA ist?

    ___________________________________________________________________________________________________

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

  • Hallo Norbert. Nein RGB Video ist leider kein VGA. Aber SCART können ja auch noch einige alte Fernseher. Ich bin aber auch gespannt, welche meiner Monitore da dann was anzeigen können.


    Edit: Es gibt aber glaube ich auch SCART zu VGA Wandler.

  • Hallo Jörg, geschieht der Wegfall aus Platzgründen?

    ___________________________________________________________________________________________________

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

  • @2ee,
    Hallo Jörg, hier mal ein "blöde" Idee, wie wäre es mit einem Parallel Port, Pin kompatibel zum PC.
    Dann könnte man so Sachen wie ein Zip Laufwerk, oder ähnlich Zeug anschließen, dass es früher für den PC Parallelport gab.

    Das ist nur so eine spontan Idee.
    Du hast ja einen 8255.
    Klar es gäbe natürlich keinerlei Treiber für sowas.
    Außerdem ist der Nutzen gering.

    Nachtrag:
    Hab mir erst jetzt deinen Schaltplan angeschaut.
    Echt cooles Design, Respekt.
    8255 ist ja schon ziemlich belegt, also vergiss meine Idee.

    mfG. Klaus Loy

  • Hallo Jörg, geschieht der Wegfall aus Platzgründen?

    Um aus dem RGB Signal, welches vom V9938 geliefert wird ein S-Video Signal zu mischen benötigt man noch einen Baustein wie zum Beispiel den CXA2075 von Sony, welcher aus den CSync und RGB Signalen ein Composite und die Y/C (also das was man so üblicherweise S-Video nennt) Signale Codieren kann.

    Auch die gibt es recht günstig bei UTSource. Allerdings liefert der V9938 im Gegensatz zum V9958 bereits ein Composite Signal und das war mir erst mal wichtiger als Y/C. Ich dachte, noch einen CXA2075 zu haben, was sich aber als falsch rausgestellt hat, deshalb der Wegfall.

    Platz genug hab ich auf der Platine aber auch noch, ich kann das also auch schon eventuell mit planen, so dass man sich den Sony Encoder dann selbst nachträglich draufsetzen kann.


    Hallo Jörg, hier mal ein "blöde" Idee, wie wäre es mit einem Parallel Port, Pin kompatibel zum PC.
    Dann könnte man so Sachen wie ein Zip Laufwerk, oder ähnlich Zeug anschließen, dass es früher für den PC Parallelport gab.

    Einen Parallel Port gibt es schon auf der IO Platine. Da sind bis auf /ACKNLG und /AUTO_FEED alle notwendigen Signal drauf. Treiber kann man natürlich dafür schreiben. Ich hab im Junior ][ sowieso ein mehr oder minder flexibles Treiberkonzept eingesetzt.

  • Um aus dem RGB Signal, welches vom V9938 geliefert wird ein S-Video Signal zu mischen benötigt man noch einen Baustein wie zum Beispiel den CXA2075 von Sony, welcher aus den CSync und RGB Signalen ein Composite und die Y/C (also das was man so üblicherweise S-Video nennt) Signale Codieren kann.

    Auch die gibt es recht günstig bei UTSource. Allerdings liefert der V9938 im Gegensatz zum V9958 bereits ein Composite Signal und das war mir erst mal wichtiger als Y/C. Ich dachte, noch einen CXA2075 zu haben, was sich aber als falsch rausgestellt hat, deshalb der Wegfall.

    Platz genug hab ich auf der Platine aber auch noch, ich kann das also auch schon eventuell mit planen, so dass man sich den Sony Encoder dann selbst nachträglich draufsetzen kannleider .

    Das wäre klasse! Die CXA2075 wären allerdings SOP-24, was löttechnisch aber kein Problem darstellen sollte. In DIP finde ich die leider nicht.

    ___________________________________________________________________________________________________

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

  • Die CXA2075 wären allerdings SOP-24, was löttechnisch aber kein Problem darstellen sollte. In DIP finde ich die leider nicht.

    Ja, die gibt es leider nur als SOP-24. Das ist aber noch gut lötbar.


    Ich hab jetzt lange rumüberlegt, was ich machen soll. Der CXA2075 mischt ja nicht nur die Signale, sondern enthält ja auch alle Ausgangstreiberstufen für R, G, B, CSync, Chroma, Luminanz und Composite, womit man sich natürlich das Transistor Grab zum Teil spart (es sind immer noch eine Menge Kondensatoren und Widerstände nötig). Ausserdem kann auch zwischen PAL und NTSC wählen. Somit erhält man alle relevanten Signaltypen. Der CX2075 benötigt noch ein 3,58MHz Taktsignal, das der V9938 bereits aus seinem Takteingang erzeugen kann (21,47727MHz/6). Das ist wohl auch der Grund, warum die MSX Rechner meist (?) mit genau den 3,58MHz getaktet waren.

    Kurz und gut, ich werde jetzt wohl doch den Encoder Baustein einsetzen und die bisherigen Treiberstufen fallen weg.


    Ich hatte gestern noch 10x 21,47727MHz Quarze bei AliExpress bestellt. Die sollen am 17. Dezember kommen. Ich hoffe, das dauert nicht wirklich so lange, aber ich hab jedenfalls noch genügend Zeit bis dahin die Platinen fertig zu machen.


    Übrigens Reinhard : Beim CX2075 sind in der Referenzschaltung die RGB Ausgangssignale ebenfalls mit 220uF gekoppelt.

  • Für PAL brauchste aber irgendwas mit einem Vielfachem von 4,4361875 MHz