DIY Grant Searle's Simple6809 selbstbau Projekt

  • Hast du intresse am Projekt? 3

    1. Würde mich an einer PCB Sammelbestellung beteiligen (3) 100%
    2. Finde ich uninteressant (0) 0%

    Wie ich im DIY Retro-Computer Kits für Einsteiger? Thread schon mal Angemerkt habe. Spiele ich mit der Idee Grant Searle's Simple6809 umzusetzen.


    Da es anscheinend nicht mehr so super teuer ist PCB machen zu lassen, bietet es sich an, das ganze gescheit zu machen ;)


    Generell erst mal die Frage: Wer hat auch Interesse daran?


    So ganz von Null muß man nicht anfangen. Hab auf die schnelle https://jefftranter.blogspot.c…ingle-board-computer.html gefunden. Sein erstelltes PCB ist online gemacht und öffentlich Verfügbar: https://easyeda.com/tranter/6809-Single-Board-Computer Anscheinend kann man es auch dort direkt bestellen?!?

    Er hat auch ein paar Verbesserungen vorgenommen:


    Zitat
    • Used a 6-pin connector for a standard FTDI USB to serial breakout board and omitted any RS-232 line driver/receiver circuitry. I also omitted the optional hardware handshaking circuit.
    • Added a simple power on reset circuit to the pushbutton reset.
    • Added a power on LED.
    • Provided a jumper to select USB or external power source.
    • Added a 32-pin header with access to most signals, for future expansion and to help with debug.


    Cool wäre IMHO wenn man ein EEPROM nutzten könnte. Damit man einfacher verschiedene ROMs zu testen... Dazu hab ich http://www.8bitforce.com/projects/simon6809/ gefunden:

    Zitat

    SiMon6809 has the following features:

    • Motorola 6809 processor, running @ 1.0MHZ
    • 8 KBytes of EEPROM (in-system writable)
    • 32 KBytes of Static RAM
    • FT245RL USB to Parallel FIFO chip
    • Powered from USB port.

    Aber ich weiß nicht ob 8KB ROM für BASIC reichen. Denn nur ein Monitor Programm möchte ich nicht haben. Ein "Microsoft Extended BASIC" muss schon sein. Also das modifizierte von Grant.



    Doofe Frage: Könnte man beim original nicht auch das EPROM einfach durch ein EEPROM austauschen? Man muß es ja nicht unbedingt auf dem PCB programmieren können.

  • Hallo,


    das EPROM sollte man einfach durch ein pinkompatibles EEPROM ersetzen können. Hab ich beim NDR Computer auch meistens gemacht.


    Die Z80 Variante von G.S. gibt es im Retrobrewforum auch schon als Layout. Hab ich letztens aufgebaut. Der 6809 wäre schon interessant, den hab ich noch nie verwendet.


    Gruß, Rene

  • Ja ich würde auch ein EEPROM vorschlagen statt des EProm.

    Und ich würde einen GAL16v8 nehmen die die Adressdekodierung.

    Ist flexibler, man kann sie später anpassen, wenn nötig.


    Prinzipiell hätte ich Interesse, wenn ich nicht schon das Board von Wichit Sirichote hätte.

    http://www.kswichit.com/6809/6809.htm


    Dieses Board wäre übrigens eine alternative zu dem von Searl.

    Es ist fortschrittlicher.


    Wenn es nach mir ginge, würde ich sowieso gleich was heftigeres machen.

    • 512kb SRAM
    • 64kb EEPROM
    • CPLD als Memory Manager
    • SD Card Interface (evt. sogar über einen ATMEGA)
    • Searle Terminal für Monitor und Keyboard
  • die Frage ist, wie einfach mal realisieren kann, das man das eeprom auch auf dem SBC programmieren kann. Also schon per PC usw... Aber halt nicht mit einem externen eeprom Brenner...


    Ich hab hier ein XT-CF-lite was auch ein EEPROM hat, welches man im Rechner programmieren kann. So viele Bauteile sind da auch nicht drauf. Kann also so mega aufwendig ja nicht sein, oder?

    Aber das übersteigt leider meine Kompetenzen. Das kann ich nicht selbst entwickeln.

  • Naja, zu einfach sollte es auch nicht sein. Ansonsten könnte ich die Emulation empfehlen, da hätte man dann gar keine Hardware mehr, also weniger geht dann wirklich nicht mehr.


    An der Minimalversion stört mich insbesondere das fehlende Hardware-Handshaking. Fehlende Zeichen bei serieller Verbindung sind einfach total nervig und machen das Leben unnötig kompliziert. Vielleicht wäre der FT245 von Simon's 6809 eine Alternative, den verwende ich auch bei einem anderen 6309-Projekt und hatte dort noch nie Ärger mit fehlenden Zeichen.

  • An der Minimalversion stört mich insbesondere das fehlende Hardware-Handshaking. Fehlende Zeichen bei serieller Verbindung sind einfach total nervig und machen das Leben unnötig kompliziert. Vielleicht wäre der FT245 von Simon's 6809 eine Alternative, den verwende ich auch bei einem anderen 6309-Projekt und hatte dort noch nie Ärger mit fehlenden Zeichen.

    Nun, falls ich mich nicht vertan habe, hat der gute Herr Searle doch ein Hardware-Handshaking vorgesehen. Der Schaltungsentwurf und wohl auch die Platine sind hinsichtlich RTS_- Funktionalität verbessert worden.

    Der Entwurf ist im übrigen auch richtig schön Retro, einfach und schnörkellos, nix USB,

    jedie: Ich wäre auf alle Fälle an zwei Platinen interessiert (habe oben abgestimmt). Mir fehlt noch eine Testumgebung für die Bändigung meines 6809-Krabbelzoos :hüpf: und dafür eignen sich diese Platinen ganz hervorragend.

    BG

    mesch

  • Nun, falls ich mich nicht vertan habe, hat der gute Herr Searle doch ein Hardware-Handshaking vorgesehen.

    Ja, Searle zeigt diese Option. Die konkrete Platine von Tranter hat diese Option allerdings nicht.

  • Zitat

    Clock speed is about 170~200kHz.


    Ich glaube nicht, dass BASIC damit viel Spaß machen würde.

    Ich hab auch den Teensy Adapter dazu genommen. Aber klar, das System taugt vor allem, die CPUs überhaupt mal anzutesten. Grant Searle, um sie wirklich zu verstehen.


    Gruß, Rene

  • Nun, falls ich mich nicht vertan habe, hat der gute Herr Searle doch ein Hardware-Handshaking vorgesehen.

    Ja, Searle zeigt diese Option. Die konkrete Platine von Tranter hat diese Option allerdings nicht.

    Ja, das stimmt. Allerdings ist mit einem BS170 oder 2N7000 und einem Widerstand das Problem in nahezu Echtzeit behoben. Tranters Platinchen verträgt sogar einen Nullkraftsockel für die CPU, wenn man C6 auf die Lötseite verlegt. Nicht übel!


    BG

    mesch

  • Dann sollte man auch auf Grant's FPGA Lösung mit dem 6809 hinweisen... Ganz wenig Aufwand, aber SD Karte, VGA und PS/2 Tastatur, serielle Schnittstellen usw.

  • Dann sollte man auch auf Grant's FPGA Lösung mit dem 6809 hinweisen... Ganz wenig Aufwand, aber SD Karte, VGA und PS/2 Tastatur, serielle Schnittstellen usw.

    Naja.

    Ein Zwischending.

    Aus Emulator und Hardware quasi.


    Nicht dass ich das ablehnen würde, ich weiß die Vorzüge zu schätzen.

    Mein primäres 6309 System ist ein FPGA Board.



    Das Ding von Searle hat aber leider nur 4KB RAM.

    Mit externem RAM ist das dann behoben, aber nicht mehr so simpel.

  • FPGA ist nun eben KEIN Emulator. Das ist echte Hardware, nur mit moderneren Mitteln.

  • FPGA ist nun eben KEIN Emulator. Das ist echte Hardware, nur mit moderneren Mitteln.

    Ja, schon klar. Aber du stimmst wohl zu, das es dennoch was anderes ist, oder?


    Das fängt schon damit an, dass es mit 3,3V läuft.


    Sobald man die Hardware irgendwie erweitern will, stößt man überall auf Probleme.

    Signale nicht vorhanden (gut das lässt sich lösen).

    Timing der internen Signale nicht 100% genau.

    5V Problem hab ich schon erwähnt, man braucht für ALLES Pegelanpassung.



    Ein FPGA System ist super, solange es alles abdeckt und ein geschlossenes System bleibt.

    Das ist genau so wie bei einem Emu ...

  • Zu der Beschaltung des 6850 habe ich mal eine Frage, bei der hier hoffentlich jemand eine Antwort darauf hat. Bei dem Schaltplan des Böhm µPROM 2001 EPROM-Programmierers wird der 6850 so angeschlossen, wie ich das vermutlich intuitiv auch gemacht hätte: RTS an RTS und IRQ an IRQ. Bei Grant Searle dagegen wird die RTS-Leitung des 6850 nicht benutzt und statt dessen der invertierte IRQ-Ausgang als RTS benutzt. An die CPU geht dann aber keine Interrupt-Leitung. Das scheint mir völlig verquer verschaltet zu sein. Gibt es dafür gute Gründe?

  • Also holt euch ::pc::dies wird etwas länger!

    Nun, Grant Searle hatte ja im ersten Schaltungsentwurf die Interrupt-Leitung garnicht verwendet. Er hat also mittels Polling-Betrieb ständig das Statusregister der ACIA (Bit1 Receive Data Register Full) auf eingehende Zeichen abgefragt. Dabei muss ihm aufgefallen sein, dass schnelle Rechner, gerade wenn ganze Zeilen gesendet wurden, seine Polling-Routine und Zeichenkettenverarbeitung aus Zeitgründen überfordert haben und es zu Zeichenverlust führte. Um Abhilfe zu schaffen hat er eine Quick und Dirty-Lösung benutzt, die nicht schlecht ist (siehe Inverter-Schaltung).


    Ohne jetzt in seine Software reingeschaut zu haben, ist aber nur folgende Schlussfolgerung vorstellbar. Der Interruptausgang wird nur für eingehende Zeichen (Receive Interrupt Enable, Bit CR7 des Control-Registers) konfiguriert. Seine Routine pollt nach wie vor das Status-Register nach eingehenden Zeichen. Sobald das Receive-Data-Register voll ist, wird umgehend die IRQ-Leitung aktiv und damit das RTS_-Signal für den angeschlossenen Rechner inaktiv gesetzt. Was soviel bedeutet, bitte kein weiteres Zeichen senden.


    Es könnte allerdings sein, dass schon ein Teil eines weiteren Zeichen unterwegs war, was aber kein Schaden ist, weil dieses ja zunächst im Receive-Shift-Register landet. Seine Polling-Routine holt sich, nach positiver Abfrage des RDRF-Bits des Status-Registers, nun das Zeichen aus dem Receive-Data-Register und damit wird die IRQ-Leitung automatisch zurückgenommen.

    Das nächste Zeichen wird nun aus dem Receive-Shift-Register in das das Receive-Data-Register übernommen und kann alsbald von der Polling-Routine ausgelesen werden. Die IRQ-Leitung klappert dabei fröhlich hin und her. Dieser Ablauf geschieht nun für alle weiteren zu empfangenden Zeichen.


    Seine IRQ/RTS_ - Lösung ist die schnellste Variante um der Gegenstelle mitzuteilen, dass diese keine weiteren Daten/Zeichen schicken soll.

    Hier sein Orginaltext dazu:


    To ensure data transfer is stopped when the 6809 is not ready for it (ie. the previous byte hasn't been read) the 6850 receive interrupt is enabled. As soon as a character is received, the IRQ on this chip will go low. This is connected, via an inverter, to the /RTS serial connection. The /RTS will therefore go high as soon as a character is received. It will remain high until the character is read (a read of the data resets the IRQ status). Once it has been read, the /IRQ will go high, so the /RTS will go low, allowing the PC to resume transfer. This is repeated as each character is received, controlling the data transfer until the 6809 is ready for it.

    Und hier das Datenblatt der ACIA zum schnellen Nachlesen:

    MC6850_Motorola.pdf


    Ich lese gerade selbst im Datenblatt der ACIA, dass der IRQ-Ausgang eine Open-Drain-Ausführung ist. Damit bedarf es dann doch zweier Widerstände und eines MOSFET-Kleinsignaltransistors um einen brauchbaren Inverter zu realisieren.



    BG mesch

  • Naja, simplifiziert halt ;)


    Aber wenn ich das richtig verstanden hab, dann hat https://jefftranter.blogspot.c…ingle-board-computer.html da auch was geändert. Oder wir kann man das verstehen:


    Zitat

    I made a few small changes in my version of the board:

    • Used a 6-pin connector for a standard FTDI USB to serial breakout board and omitted any RS-232 line driver/receiver circuitry. I also omitted the optional hardware handshaking circuit.

    Wäre natürlich schon doof, wenn man mit "verschluckten" ein/ausgabe zeichen rechnen muß :(

    Ich lese gerade selbst im Datenblatt der ACIA, dass der IRQ-Ausgang eine Open-Drain-Ausführung ist. Damit bedarf es dann doch zweier Widerstände und eines MOSFET-Kleinsignaltransistors um einen brauchbaren Inverter zu realisieren.

    d.h. es wäre nicht all zu Aufwendig eine bessere Lösung zu realisieren?


    ich meine, wenn man eh eine PCB macht, dann kann man da ruhig auch noch ein paar Kleinigkeiten dazu löten. Dann ist es ja nicht so schlimm, wenn man noch mehr Leiterbahnverbindungen hat. Also anders, als wenn man es ohne fertig PCB lösen möchte und jede Leitung zusätzliche Arbeit ist.


    Frage mich auch, ob es möglich ist, noch ein paar mehr Dioden und Buttons drauf zu packen. Jeff Tranter hat ja schon eine Power-LED und ein Reset-Button drauf gepackt. Das ist auch IMHO das mindeste, was man haben sollte.

    Aber könnte man auch ein HALT-Button/LED und ein "1-step" button realisieren?


    Oder was auch cool wäre: Ein Drehregler um den 6809 langsamer zu machen ;) Aber keine Ahnung wie aufwendig das wäre... Ich meine sowas wie flexible Taktgenerator gibt es ja, oder?



    Vielleicht wäre es eine Idee das http://www.kswichit.com/6809/6809.htm zu nehmen als Grundlage und das zu vereinfachen:

    • "tastatur" streichen und durch ein paar Buttons ersetzten (Vielleicht: NMI, HALT, IRQ, FIRQ ?)
    • keine LCD Kram

    Und Ziel für mich sollte es sein, das BASIC im ROM ist und läuft, so wie beim Grants&Jeffs Lösung. Mit einem "Monitor program" will ich weniger spielen ;)

  • Vielleicht wäre es eine Idee das http://www.kswichit.com/6809/6809.htm zu nehmen als Grundlage und das zu vereinfachen:

    "tastatur" streichen und durch ein paar Buttons ersetzten (Vielleicht: NMI, HALT, IRQ, FIRQ ?)
    keine LCD Kram

    Und Ziel für mich sollte es sein, das BASIC im ROM ist und läuft, so wie beim Grants&Jeffs Lösung. Mit einem "Monitor program" will ich weniger spielen ;)


    Ich kann das Wichit Board sehr empfehlen.

    Es funktioniert super gut

    Das BASIC habe ich da am laufen, das geht easy.



    Wenn du kein Monitor Programm willst, dann sparst du dir auch die 7 Segment Anzeige und das LCD und die Tastatur.


    Die 8 x LED Debug Anzeige würde ich behalten.

    Es ist nur ein IC und 8 LED.

    Und es ist sehr praktisch, weil man mit nur einem POKE einen Status anzeigen kann.

  • Naja, simplifiziert halt ;)

    Ich habe nichts dagegen, Dinge so einfach wie möglich zu machen.


    Leider wird es in den meisten Fällen aber verkrüppelt und stark eingeschränkt.

    Das tut einem später dann oft leid.

  • Wenn du kein Monitor Programm willst, dann sparst du dir auch die 7 Segment Anzeige und das LCD und die Tastatur.


    Die 8 x LED Debug Anzeige würde ich behalten.

    Es ist nur ein IC und 8 LED.

    Und es ist sehr praktisch, weil man mit nur einem POKE einen Status anzeigen kann.

    Ja, genau so meinte ich das. Den Beeper wäre auch noch nett...