Junior Computer ][

  • Die Frage bleibt aber, ob man 65816 überhaupt mit einer MMU kombinieren muss

    Hallo André, vielen Dank für den Link. Ich muss mir das dann daheim mal ansehen, hier hab ich gerade nur mein Handy zum drauf schauen.


    Die MMU war für mich eben auch ein Anreiz, um den Tasks mehr als 64KB linearen Speicher zu bieten. Das dadurch mögliche schnelle Task Switching ist da eher noch eine schöne Dreingabe. Ich möchte dafür ein SRAM mit 16 Bit Datenbus nehmen, dann hätte ich bei 4KB Seitengröße auch noch 4 Bit für einen rudimentären Speicherschutz (read/write) und Unterstützung für Paging (available, dirty) frei.

    Die Idee mit der SRAM MMU hatte ich vor einigen Jahren mal irgendwo als Ersatz für eine Motorola 68xx MMU gesehen. Seither schwirrt der Gedanke einer etwas Erweiterten Version bei mir durch den Kopf. Ist also auch für mich soz. einer der Antriebs Punkte für den neuen Rechner.


    Die 74LS610 hatte 12 bit. 8 habe ich für Adresserweiterungen genutzt, und 3 weitere für:

    - page valid

    - write protect

    - no-execute


    Details siehe hier: http://www.6502.org/users/andre/csa/cpu/index.html


    Da die 6502 aber kein ABORT kennt wird im Fehlerfall die 6502 nur via RDY (geht grundsätzlich damit nur mit CMOS, da writes in NMOS nicht halten) angehalten, und die Auxiliary CPU übernimmt den Bus (siehe hier http://www.6502.org/users/andre/csa/auxcpu/index.html )


    Wäre sicher interressant, das ganze via ABORT und nur einer CPU zu lösen. Bei ABORT müsste man die MMU dann z.B. in einen "Default" Config setzen - entweder per HW (z.B. kernel in top page einblenden) oder einfacher per SW wenn der kernel / top page mit den Vektoren eh immer gemappt ist.

  • 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.

    __________________________________

    Bitte Diskette 4 von 9 einlegen!

  • 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?

    __________________________________

    Bitte Diskette 4 von 9 einlegen!

  • 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.

  • @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.

    __________________________________

    Bitte Diskette 4 von 9 einlegen!