MFA Gedanken für eine Cosmac Elf = 1802 CPU Karte

  • Gleich vorweg: Das werden evtl. nur Gedankenspiele bleiben - ob ich das jemand umsetze..?? Hängt wohl auch davon ab, ob daran überhaupt Interesse besteht (bei mir schon - sonst würde ich daran keinen Gedanken verschwenden).


    Die CDP1802 CPU ist 'wierd'! Ich hatte einen Cosmac Elf bereits schon einmal als Einplatinenrechner nachgebaut:

    https://github.com/petersieg/cosmac-elf


    Das Design stammt von Mike Riley und hat gut/auf Anhieb funktioniert.


    Allgemeine Info's zum Cosmac Elf:

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

    http://www.cosmacelf.com/


    ---


    Die 1802 hat 4 Inputsignale (EF1-4) zum lesen von Daten. 3x Signale für IO-Module (N0-N2) und spezielle OUT/INP Befehle dazu.

    IO wird auch geschrieben ohne MWR aktiv zu setzen..? Und D0-D7 sind wenn ich das richtig verstanden habe niemals Tri-State?! Dann ginge es nicht den Bus-Signalgeber zu nutzen! (Lektüre sollte das Datenblatt zur CPU sein)


    ---


    Nun im MFA Gehäuse sollte man damit - wenn alles so klappt wie angedacht - ein kleines Programm über die Toogle Schalter eingeben und laufen lassen können.

    Die Bus-Signalanzeige zeigt dabei Daten+Adressen an. Ein Eingabeport steht dabei ebenfalls über die Schalter zur Verfügung.

    Ggf. ließen sich weitere I/O Teile nutzen über D0-D7 und N0+N1. Evtl. sollte ich noch EF1/2/3 auf den Bus legen..? Pin c14+c24 sollte noch unbelegt sein.

    (Dazu müssten dann aber die IO Baugruppen lernen daraus/damit zu arbeiten!)


    ---


    Ich habe also mal die Eagle Dateien von Tom genommen und die TIL311 rausgeschmissen.

    Die Anzeige der Daten und der Adressen soll hier dann natürlich die Bus-Signalanzeige übernehmen.

    JP2 Pinreihe ist ebenfalls raus. Dafür ist die VG64 Busleiste reingekommen. An der liegen A0-A15, D0-D7, MRD, MWR, N0+N1.


    Die Toogle Switches habe ich so drin gelassen - sie dienen dazu:

    1. Das Ram mit einem Programm zu laden (das sollte ggf. auch mit einen Bus-Signalgeber möglich sein?)

    2. Input Port über EF4


    An einer Busverlängerung könnte man das so betreiben - ansonsten müssten die Schalter (+ Q-LED) auf die Frontblende.


    Ich hänge mal den original Schaltplan (sch-org.png) und das Ergebnis mach obigen Operationen (sch.png) hier an.

    Ebendso das Ergebnis des Autorouters mit 0,25mm Leiterbahnbreite.


    Nun die gute Nachricht ist: Passt auf 80x100mm und der Autorouter hat fertig zu 100%.


    Peter

  • interessanter Ansatz. Weißt Du ob so was schon mal in Verbindung mit einem anderen "Oldie" als MFA Karte realisiert wurde?

    Übrigens kam gestern dein micro-elf an. Nach den ersten Programmierversuchen kam mir sofort die Idee irgendwas dranzubauen.

    Zwei externe Hex Kodier-Drehschalter (ist ja auch Retro) von BCD und via I Retro IC auf Binär wären gut, dann schont man die Finger und ist etwa schneller beim Programmieren.

    Das Ding macht richtig Spaß.


    Grüße


    Gerd

  • Nein. Ist mir nichts bekannt. Die CDP1802 CPU ist halt schon etwas spezielles und etwas anderes als 6502, 6809 oder Z80.


    Viel Freunde. Hermes ist z.Z. richtig fix.

    DHL dagegen braucht deutlich länger als sonst.


    Sind halt besondere Zeiten.


    Ich habe übrigens noch Platinen und Teile für 3 weitere Microelf Bauten.


    Schöne Ostern.


    Peter

    github.com/petersieg

  • Nette Idee,


    beim jetzigen Layout wird es aber mit den Einschubführungsschienen Probleme geben, da die Bauteile zu sehr am Rand positioniert sind. Und die LED liegt auch irgendwie Suboptimal...

    Gruß Torsten

    BFZ MFA, ZX80Core, AX81, ZX81, ZX81NU, Spectrum+, Harlequin, MSX VG8010, Amstrad NC100, Cambridge Z88, C64, C128D, Amiga 500 & 1200, Atari Portfolio, HP200LX, IBM PC5155, TP755c, TP755cx, T20, T41, T61, PS/2 (Model 40SX), PS/2E, Accura 101, Apple //e, Sharp PC1401 & PC1403H, TI59 m. PC-100c, HP48SX & HP48GX


    An die Person, die meine Schuhe versteckt hat, während ich auf der Hüpfburg war: Werd' erwachsen! :motz:


    ::matrix::

    • Offizieller Beitrag

    Da müsste man dann selber Assembler spielen und byte für byte programmieren,

    Das ist dann richtig Retro. Well done, nennt das der Antivegetarier. :)

  • Ich hatte mich kürzlich auch mal für den 1802 interessiert und dabei ein paar Links abgespeichert ...


    http://home.earthlink.net/~schultdw/1802/microdos/


    https://groups.google.com/foru…c/comp.os.cpm/cm2Bx2MCqTI


    https://groups.google.com/foru…c/comp.os.cpm/81SZxrMcPa8


    https://www.emma02.hobby-site.com/


    http://www.retrotechnology.com/memship/memship.html


    Ich bin allerdings noch nicht dazu gekommen, mich weiter damit zu beschäftigen.


    Gruß

    Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Ich war mal von Elf/OS total begeistert: http://www.elf-emulation.com/elfos.html


    Ich habe mir dann auch einen Selbstbau-Computer zusammen gelötet, der aber total empfindlich und fehleranfällig war. Auf eine Stunde Fehlersuche in der Software kamen etwa zwei Stunden Fehlersuche in den total empfindlichen Fädeldrähten.


    Im weiteren Verlauf fand ich ein paar Dinge heraus:


    - Elf/OS ist nicht wirklich open source. Es ist mir nie gelungen, es selbst zu bauen und auch auf Nachfrage hat der Programmierer kein Makefile raus gegeben

    - Vom Editor von Elf/OS habe ich Jahre später gelesen, dass es einen Bug-Report gab, dass er nicht mehr als 256 Zeilen lange Dateien bearbeiten konnte. So richtig viel gemacht schein mir damit offenbar also nicht gemacht worden zu sein

    - Die 1802 CPU ist absolut grausam in Assembler zu programmieren. Es gibt praktisch keine Adressierungsarten, man muss alle Adressberechnungen über den Akku in nur 8 Bit selbst erledigen. Es gibt ja noch nicht einmal Anweisungen zum Unterprogrammaufruf, selbst das muss man sich in Makros zusammenstellen. Am Ende hatte ich Code, der mehr aus Macros bestand als aus 1802-Befehlen. Alles ist total aufwändig, da ist selbst eine Intel 8008 speicherplatzsparender.


    Mein Bedarf an 1802 war danach jedenfalls erst mal gedeckt.

  • Die größten Mankos dieser CPU sind aus meiner Sicht:

    • der fehlende Stackpointer
    • schlechte innere Struktur, keine Pipeline (8 Takte = 1 Zyklus, Befehle brauche zwei bis drei Zyklen)
    • wenig Befehle - es erinnert eher an Mikrocode eine CISC CPU


    Sie ist halt eher einfach gestrickt, es ist ja auch die allererste richtige 8 Bit CPU in einem Chip.


    Wenn man von 4 Bitter absieht, ist es wohl die einfachste CPU dieser Zeit, irgendwann kommt ein 6502 und am Ende dieser Entwicklung sehe ich den 6309.

    --- 1802 --- … --- 6502 --- … --- … --- 6309 / 65816 ---



    Auf der anderen Seite hat sie auch Pluspunkte die wieder viele Nachteile wett machen:

    • 16 Stück 16 Bit Register
    • variable Aufteilung der Register Funktionalität!!! (das gibt es sonst nur in Bit Slice Systemen)
    • Schattenregister für Interrupt Bearbeitung!!! (das gibt es sonst nur in sehr viel neueren Systemen)


    Höchst interessant finde ich auch, wie diese Nachteile in 1802 Code umschifft werden.

    Bemerkenswert finde ich das C Compiler Backend für den LCC, der ausgeworfene Code ist, - sensationell.


    Bei linearem Code ist der Compiler Output jeder anderen CPU dieser Klasse überlegen!


    Eng wird es bei lokalen Variablen, Rekursion, großer Strukturiertheit und hoher Kapselung.

    Das ist nicht verwunderlich, wenn kaum Adressierarten und kein Stack zur Verfügung stehen.

    Diese Strukturen werden bei der 1802 quasi "emuliert", und das kostet!

    Das kostet Code Größe und Performance sowieso.

  • ja, der Instruction Set ist nicht lustig. Vergleichbar mit einem rauchigem Whisky. Man liebt ihn oder man hasst ihn 😀

    Die eingebaute DMA-Funktionalität ist auch recht selten bei 8-Bit Micros zu sehen. Die Compiler und Interpreter muß ich mir mal genauer anschauen. Bis jetzt bin ich noch beim 1802 in Native Code unterwegs.
    Für mich immer noch ein hochinteressanter Prozessor.