M6800 , die CPU vor der 6502

  • Aus dem Apple-1 Laberthread heraus, habe ich mal bißchen was dazu gesucht, u.a. auch zur


    Motorola M6800 CPU



    https://en.wikipedia.org/wiki/Motorola_6800 (!)

    https://de.wikipedia.org/wiki/Motorola_6800


    https://archive.org/details/sccs_v1n2/page/n7/mode/2up


    https://archive.org/details/sccs-v-1n-3/page/n47/mode/2up



    eines der wenigen Homecomputer-artigen Geräte - und eigentlich schon auch sowas in der Art wie ein Apple-1 - ist der DREAM Computer aus Australien


    http://www.mjbauer.biz/DREAM6800.htm

    https://maggi9295.github.io/pr…/dream6800/dream6800.html



    Bitsavers kennt auch bißchen was

    http://bitsavers.informatik.un…components/motorola/6800/




    Die Weiterentwicklung 6809 war/ist wohl wesentlich verbreiteter

    Motorola 6809 Microprocessor Kit

    http://www.vtda.org/pics/Ads/Computers/Swtpc-6809.jpg

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • M6800 war, wie die 6500, eine größere Familie. So gab es z.B. den M6802/M6808 als Weiterentwicklung vom M6800. Der M6802 hat 128Byte internes RAM, das sogar gepuffert werden kann. Ein in Deutschland bekannter Rechner mit dem M6802 ist der Eurocom 1 von Eltec. Mit kleiner Adapterplatine konnte man einen M6809 einsetzen. Serienmäßig gab's den M6809 danach beim Eurocom 2.


    Die größten Stückzahlen in populären Rechnern gab's mit dem TRS-80 Color Computer. Und genau für den gab's als Betriebssystem OS-9.


    Die größten Stückzahlen gab's vermutlich mit dem M6805 in IBM-Tastaturen für die MS-DOS-Welt [1].


    Ansonsten machte die M6800-Familie Karriere in Flippern. Dort waren sie "zuhauf" eingebaut. In Flippern ungefähr ab 1980 waren häufig mehrere davon eingebaut. Z.B. im "Eight Ball Deluxe" gab's drei M6809, AFAIR.


    Hitachi übernahm zunächst den Nachbau von CPUs und Peripheriechips. Diese nannten sich 63xx. Später entwickelte Hitachi die Baureihe eigenständig weiter. Motorola entwickelte mit der 68HC11-Familie eine bedeutende Mikrocontroller-CPU in den 1990er Jahren.


    Gruß, Ralf


    [1] "Seitenhieb": Während IBM in den Tastaturen auf die Motorola-Welt setzte (irgendwas am PC muß ja funktionieren ;) ), entschied sich Apple beim Mac für den 8021 von Intel.

  • Ich wollte gerade meine Webseite den DREAM 6800 bewerben, aber ich sehe, dass du den Link schon in der Liste hast! :S

  • Ja, das Teil ist irgendwie witzig und dort (maggie9295) auch wirklich schön dokumentiert. Nur die Bildschirmauflösung von dem Teil ist natürlich schwierig ... 64x32 Pixel .


    Beim Lesen zur 6800 hat man auch bißchen die Idee, daß der Chuck Peddle auch mal was anderes machen wollte, als nur die Zubehörbausteine. Vielleicht ist das ja schon einer der Beweggründe für den 6502. Vermutlich hat sich Motorola mit dem Beharren darauf, daß sie bei MOS gefälligst nichts nachzubauen haben, deutlich selbst geschadet. Wahrscheinlich wären ja sonst Platinen mit wahlweise 6500 oder 6800 möglich gewesen und evtl. auch gebaut worden. In der professionellen Variante dann mit dem großen Chip und Floppyanschluß, sonst mit dem MOS Chip und Tapeinterface.


    Mir gefällt ja dieser doppelte Akkumulator und der 16 Bit Stackpointer. Damit kann man dann wahrscheinlich auch sowas wie "Stackbereiche" machen, immer 256 Bytes auf einmal und je nach Routine wechselt man das durch.


    Irgendwo stand auch, daß der Motorola Chip 179$ kam und nach Vorstellung des 6502 dann bis auf 35$ runterging. Der war also eigentlich auch völlig "overpriced". 6502 gab es anfangs angeblich für 25$ - im Hotel neben der Messe, direkt vom Anbieter und seiner Frau.




    6800 :


    https://davidwadesalon.com/pic…-6502-instruction-set.jpg (schönes 6800 CPU Bild)



    (Prinzipskizze von WikiP, User Swtpc6800, Michael Holley, gemeinfrei)




    6500 :


    http://blog.3b2.sk/igi/image.axd?picture=2016%2f1%2f6502Chip.gif


    (Prinzipskizze, optisch erstmal bißchen komplexer als oben, dabei eigentlich eher einfacher)

    ( "The breakthrough that permitted this cost reduction, says Bill Mensch, who created the 6502 with Peddle, was a minimal instruction set combined with a fabrication process that “yielded 10 times, Motorola 6800." )



    von http://blog.3b2.sk/igi/post/1975-MOS-6502.aspx


    und da ein Bild von der Entwicklergruppe und vom IC

    https://archive.archaeology.or…02_computer_chip_cpu.html

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

    Einmal editiert, zuletzt von ThoralfAsmussen ()

  • Beim Lesen zur 6800 hat man auch bißchen die Idee, daß der Chuck Peddle auch mal was anderes machen wollte, als nur die Zubehörbausteine. Vielleicht ist das ja schon einer der Beweggründe für den 6502.

    Die Peripheriechips hatten ein identisches Bus-Interface, d.h. die waren austauschbar: ein 6520 durch den 6820 (siehe Commodore PET und CBM), ein 6521 durch den 6821, 6545 durch den 6845 (-> Herkules-Karte für MS-DOS-PCs). Die 6522 und 6551 gab's dagegen nicht in der 6800-Welt, den 6850 nicht in der 6500-Welt. Macht nix, die waren "beidseitig" verwendbar :)


    Wahrscheinlich wären ja sonst Platinen mit wahlweise 6500 oder 6800 möglich gewesen und evtl. auch gebaut worden.

    Schau Dir die originale Apple 1-Platine an und dort den obersten Sockel der Reihe C! Woz hatte irgendwas mit einem 6800 im Blick. Ich kenne den Apple 1 zu wenig, das kann vielleicht jemand anderes interpretieren. Ich habe den Verdacht, daß der dort verlangte 7404 nur bei der (externen) Takterzeugung für den 6800 benötigt wird.


    Mir gefällt ja dieser doppelte Akkumulator und der 16 Bit Stackpointer. Damit kann man dann wahrscheinlich auch sowas wie "Stackbereiche" machen, immer 256 Bytes auf einmal und je nach Routine wechselt man das durch.

    Dafür fehlt dem 6800 das zweite Index-Register.


    Ich habe vor Jahrzehnten den Befehlssatz der 6500-Familie kennen und optimieren gelernt, vor wenigen Jahren erst den 6802. Das Registermodell der ersten 6800-Varianten ist mir weniger "angenehm". Ob ich mit dem Registermodell vom 6500 besser zurechtkomme, weil ich den viel länger kenne, weiß ich (noch) nicht. Ich habe durch die Beschäftigung mit dem Code der Eurocom 1-Firmware den Eindruck, daß der 6802 etwas umständlicher ist, d.h. mehr Zyklen und Variablen im RAM braucht.


    Den "großen" Stack Pointer vom 6800 halte ich für vorteilhaft. Multitasking wird auf dem 6502 mit dem kleinen Stack-Bereich deutlich anspruchsvoller zu implementieren. Aber interessanterweise reichen 256Byte Stack trotzdem für komplexe Betriebssysteme wie das p-System.


    Gruß, Ralf

  • X und Y Index sind schon wirklich sehr schön, quasi ein Killerfeature. Habe mich mal um eine Skizze ananlog der obigen bemüht. Sind bestimmt auch paar Fehler drin, dürfen bitte gern mitgeteilt werden.



    M6800MOS6502

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

    Einmal editiert, zuletzt von ThoralfAsmussen ()

  • Vor 2 Jahren habe ich ein kleines System /SBC entwickelt das auf 6800 basiert

    Eckdaten : Eurocard, wahlweise 6800 oder 6802 einsetzbar, 64 K Sram, 6850 basiertes RS232, decodierung mittels GAL. Hier lauft Tektronix Basic drauf.

    Nicht fertig entwickelt ( software fehlt ) ist ein 7-segment Display mit Keyboard, das uber das CPU gestackt wird.


    Ich habe noch Leerplatinen uebrig ! ( 20 Euro / set ink. Versand )


  • Die größten Stückzahlen gab's vermutlich mit dem M6805 in IBM-Tastaturen für die MS-DOS-Welt [1].

    Nicht nur. Der M6805 wurde auch im MünzFW 21 zur Steuerung eingesetzt:


    Und bevor ihr was sagt: Die Lithium-Zelle auf dem Board hat den Datecode 07/88 und hat immer noch sagenhafte 3,8V. Das 2Kbyte große NV-RRAM ist demnach ein echtes Zeropwer-RAM...

  • Die größten Stückzahlen gab's vermutlich mit dem M6805 in IBM-Tastaturen für die MS-DOS-Welt [1].

    Nicht nur. Der M6805 wurde auch im MünzFW 21 zur Steuerung eingesetzt:

    Dort hätte ich intuitiv Siemens-Chips vermutet, also irgendwas aus der 80xx-Ecke (xx= 51 oder 80, 85)


    Und bevor ihr was sagt: Die Lithium-Zelle auf dem Board hat den Datecode 07/88 und hat immer noch sagenhafte 3,8V.

    Ich würde die trotzdem und baldmöglichst austauschen, bevor sie ausläuft. Ich habe gestern Abend wieder einen undichten Akku ausgelötet und Bestandsaufnahme seiner Umgebung gemacht. Es ist frustrierend.

  • Dort hätte ich intuitiv Siemens-Chips vermutet, also irgendwas aus der 80xx-Ecke (xx= 51 oder 80, 85)

    Siemens (genau so SEL) hat die Platinen nach Maßgabe der Deutschen Bundespost gebaut. Deswegen hatte Siemens keinen Einfluss auf die verwendete CPU... ;)


    Ich würde die trotzdem und baldmöglichst austauschen, bevor sie ausläuft. Ich habe gestern Abend wieder einen undichten Akku ausgelötet und Bestandsaufnahme seiner Umgebung gemacht. Es ist frustrierend.

    Das sind drei MünzFW21 und eine 64Kbyte NVRAM-Karte von Siemens, wo die drauf sind. Sie werden regelmäßig von mir kontrolliert und solange sie Optisch und funktional I.O. sind, bleiben die drauf. ;)

    Sind ja keine Akkus. :D

    Einmal editiert, zuletzt von Norbert-97801 () aus folgendem Grund: Flüchtigkeitsfehler beseitigt...

  • Aber interessanterweise reichen 256Byte Stack trotzdem für komplexe Betriebssysteme wie das p-System.

    Den 6502 Stack verwendet ja nur der P-Code Interpreter selbst. Der Stack der P-Machine wird im normalen RAM gebildet.

  • Aber interessanterweise reichen 256Byte Stack trotzdem für komplexe Betriebssysteme wie das p-System.

    Den 6502 Stack verwendet ja nur der P-Code Interpreter selbst. Der Stack der P-Machine wird im normalen RAM gebildet.

    Stimmt. Es ist lange her, daß ich zum letzten Mal p-Interpreter-Code angeschaut habe. Aus der fernen Erinnerung: der Interpreter selbst nutzt relativ viel Stack in der Emulation seiner p-Maschine. Immerhin gibt's dort keine Rekursionen :)


    Auf meiner Aufgabenliste fürs nächste Mal p-Maschinen-Häcking steht Stack-Anschauen, also irgendwas einbauen, um rauszufinden, wieviel 6502-Stack zur Laufzeit jemals verwendet wurde und ggf. etwas Code, um festzustellen, wann das passiert.

  • https://sourceforge.net/p/pasc…/ci/c-asm-int/wip/~/tree/

    Hier findest Du einen in "C" geschriebenen Assembler und Interpreter für P-Code.

    Der zugehörige PASCAL Compiler erzeugt symbolischen P-Code als Ausgabe, welcher dann assembliert und interpretiert wird.


    Der Kompiler ist ISO 7185 vollständig und kann sich selbstverständlich selbst übersetzen.


    Unklarheiten in der Implementation von als Parameter übergebenen Funktionen mit Seiteneffekten auf Variablen übergeordneter Blöcke konnten bisher nicht geklärt werden, ob dazu der Kontext des neuesten passenden Blockes oder der Kontext des Blockes, in dem die Funktion übergeben wurde zu nehmen ist...


    Mit Mühe müsste dies auch auf einem 6502 mit extended RAM laufen können.

  • Danke, jetzt steht es dort auch

  • Hier findest Du einen in "C" geschriebenen Assembler und Interpreter für P-Code.

    Den Link hatte ich bereits unter "p-System" bei den Bookmarks einsortiert. Danke trotzdem.


    Mit Mühe müsste dies auch auf einem 6502 mit extended RAM laufen können.

    Ich hatte "damals" die meisten Quelltexte vom Apple Pascal 1.1, die zudem auf dem Apple II übersetzbar sind. Daher hatte ich auch ein "geringfügig"[tm] optimiertes BIOS für den CMOS-Befehlssatz vom 65C02 und besonders schnelle Treiber für die I/O.


    Mal schauen, was ich bastle, wenn ich irgendwann zur Apple-II-Welt komme, um sie zu reestaurieren und bewahren.

  • Die 6802 hat 128 Byte RAM integriert an der Adresse 0000 bis 007F.


    Wenn man nun externes RAM angeschlossen hat, wie beim 6802 Board von Wichit Sirichote, wie geht das dann?


    Bus Konflikt?

    Muss man das dann bei der Selektion des externen RAM berücksichtigen?

    In dem Schaltplan von Sirichote sehe ich da nichts davon ...

  • Die 6802 hat 128 Byte RAM integriert an der Adresse 0000 bis 007F.


    Wenn man nun externes RAM angeschlossen hat, wie beim 6802 Board von Wichit Sirichote, wie geht das dann?

    Er hat das so gelöst, daß der Pin 36 ("RE") auf GND gehalten wird. Dadurch ist das interne RAM "disabled". Die Alternative ist einen 6808 statt dem 6802 einzubauen. Aber auch bei dem muß Pin 36 auf GND sein.

  • Die 6802 hat 128 Byte RAM integriert an der Adresse 0000 bis 007F.


    Wenn man nun externes RAM angeschlossen hat, wie beim 6802 Board von Wichit Sirichote, wie geht das dann?

    Er hat das so gelöst, daß der Pin 36 ("RE") auf GND gehalten wird. Dadurch ist das interne RAM "disabled". Die Alternative ist einen 6808 statt dem 6802 einzubauen. Aber auch bei dem muß Pin 36 auf GND sein.

    Oder man hat die 128-pufferfähigen Bytes mit einem 74LS260 (A7-A15) und nachgeschaltetem AND/NAND Gater ausdekodiert und damit einen adressmäßig darüberliegenden RAM/ROM-Baustein bei Zugriffe auf diese Page deaktiviert.


    BG mesch

  • Oder man hat die 128-pufferfähigen Bytes mit einem 74LS260 (A7-A15) und nachgeschaltetem AND/NAND Gater ausdekodiert und damit einen adressmäßig darüberliegenden RAM/ROM-Baustein bei Zugriffe auf diese Page deaktiviert.

    Von den 128 Byte internem RAM im 6802 sind nur 32 Byte bei geeigneter Außenbeschaltung pufferbar. Frag mich nicht, was Motorola damals nicht gemacht hat! :)


    Wenn man die derart nutzen möchte, muß man Klimmzüge machen. Man kann auch das drüberliegende (meist) RAM auf $1000 bis $8FFF legen oder kleinere geeignet ohne Dekodierklimmzüge.

  • Oder man hat die 128-pufferfähigen Bytes mit einem 74LS260 (A7-A15) und nachgeschaltetem AND/NAND Gater ausdekodiert und damit einen adressmäßig darüberliegenden RAM/ROM-Baustein bei Zugriffe auf diese Page deaktiviert.

    Abgesehen davon, dass 32 Byte Puffer fähig sind ...

    ... ist der Zugriff auf das CPU interne RAM schneller als auf externem RAM?


    Wenn nein, dann sehe ich da keinen Vorteil das interne RAM zu verwenden, also ist ausblenden eh das richtige.

  • ... ist der Zugriff auf das CPU interne RAM schneller als auf externem RAM?


    Wenn nein, dann sehe ich da keinen Vorteil das interne RAM zu verwenden, also ist ausblenden eh das richtige.

    Es sind dieselben Befehle für das interne wie das externe RAM. Der Bus ist nicht asynchron wie beim 68000, d.h. die Anzahl der Zyklen muß dieselbe sein. Bleibt als einziger Haken, wie erwähnt, das NVRAM-Gimmick.


    BTW der Eurocom 1 mit seiner 6802-CPU hat den RE-Pin fix auf 5V gelegt, also dauerhaft EIN. Blöd ist, daß die Leiterbahn auf der Bestückungsseite unter dem Sockel verläuft. D.h. diese aufzutrennen ist doof.


    Gruß, Ralf

  • Oder man hat die 128-pufferfähigen Bytes mit einem 74LS260 (A7-A15) und nachgeschaltetem AND/NAND Gater ausdekodiert und damit einen adressmäßig darüberliegenden RAM/ROM-Baustein bei Zugriffe auf diese Page deaktiviert.

    Von den 128 Byte internem RAM im 6802 sind nur 32 Byte bei geeigneter Außenbeschaltung pufferbar. Frag mich nicht, was Motorola damals nicht gemacht hat! :)


    Wenn man die derart nutzen möchte, muß man Klimmzüge machen. Man kann auch das drüberliegende (meist) RAM auf $1000 bis $8FFF legen oder kleinere geeignet ohne Dekodierklimmzüge.

    In 128 Byte passt der Stack und ein Variablenbereich bestens rein. Bleiben knapp 64Kbyte für Code, Tabellen etc.


    Für diese Art Dekodierung kam man früher vor PAL und GAL (und die CPU ist ja schon eine älteres Semester) nicht um NOR-Gatter drum herum.

    Ein Baustein und ein freies Gatter waren Ende der siebziger und Anfang der Achtziger wahrlich kein Klimmzug.


    Habe zum Beispiel selbst auf 68000er Platinen um 1984 rum 74LS133 (13 fach NAND) zur Vordekodierung eingesetzt.


    Beste Grüße

    mesch

  • Wenn noch mal jemand ein 6800er System entwickeln möchte:





    Wurde zuerst an eine ASR33 angeschlossen.

    Einwenig später an ein leiseres Terminal aber immer an einem

    Lochstreifenleser- u. schreiber.

    Die selbstentwickelte Software konnte noch nicht selbst in ein Rom geschrieben werden.

    Dazu wurde der Lochstreifen "eingeschickt" .

    So der Erstbesitzer