Der MC-68000-Computer

  • Wenn Du ein Oszi hast, dann bist Du ja schon gut dran ...

    Geht sie auf HALT und kriegst einen BusError?


    einen 4 bit zahler anschliessen, der nur 16 Zugriffe zuläst, und dann einen Reset gibt?

    So kannst Du ein stabiles Bild auf dem Oszi kriegen, und die Leitungen durchklingeln ...

    Oder HALT & RESET kurschliessen?

  • hab keinen BusError... nur Halt Low...


    ein reset einsprung ist nicht der gleiche wie bei power ON..

    mir ist absolte nich klar wo nach einem power on es im Code los geht....


    Rolf

  • Nach einem Reset holt er sich die Adressen aus den Zellen 0 bis 4 hier: 00 ff c4 00 00 ff 00 20. FF0020 ist die Einsprungadresse in den Monitor. Diese initiert den Start mit Adresse FF4BB2 --> RESET Entry im Monitor Listing. Da wird dann alserstesderAdressdecoder 2149 Initialisiert. Hier der Ausschnitt (siehe Handbuch):

    RESET: LEA $00000001,A0 ;A0 = Zähler

    LEA $00004000,A1 ;A1 = Schrittweite 16k

    LEA $01000001,A2 ;A2 = Abbruch

    MOVEQ #$F6,D0 ;#$F6 = BERR

    set2149: MOVE.B D0,(A0) ; schreiben

    ADDA.L A1,A0 ;16k weiter

    CMPA.L A2,A0 ;Ende erreicht?

    BCS set2149 ;nein Schleife

    MOVE.B #$f3,$00ff0001 ;Monitor Teil 1

    MOVE.B #$f3,$00ff4001 ;Monitor Teil 2

    MOVE.B #$f2,$00fe8001 ;CP/M Sockel setzen

    MOVE.B #$f2,$00fec001 ;Teil 2

    MOVE.B #$f0,$00ff8001 ;Graphikseite

    MOVE.B #$f0,$00ffc001 ;Systemspeicher

    LEA $00fe4000,A0 ;I/O Pointer

  • nicht nach einem Reset ! nach Power ON !

    Der 68000 kennt nur den RESET. I.a. wird das RESET nach dem Power On von einem Baustein o.ae. generiert.


    Beim 68000 muessen aber m.W. HALT und RESET gleichzeitig low sein.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • hmmm... auf dem Blat 4 gibt es Boot und Reset correct, Boot activiert ueber die IC' IC48 und IC42 den CS low fuer die Eproms und der CPU Addrescounter startet bei 000000... also FF0000... richtig ???

  • Die 68000er liest nach dem RESET den Stackpointer von Adr 0 und den PC von Adresse 4. Danach geht's beim PC weiter, in deinem Fall wohl FF0020 oder so.


    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Ja, o.k ahora das ist jetzt verstaendlich 1 ich sehe es jetzt im Listing , da ist in der Sprung Tabelle am letzten Platz BRA.W RESET OOOO.KKKK

    danke danke ! das heisst auch schreiben in den Adress Decoder besagt in A0 = 0 also alle Addressen von A14 bis A23 muessen Low sein...


    das kann ich jetzt mal pruefen,,, +)

  • das heisst auch schreiben in den Adress Decoder besagt in A0 = 0 also alle Addressen von A14 bis A23 muessen Low sein...

    Ich kenne die Schaltung nicht und kann dir daher nicht folgen.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • part1 ist lower (D8-D15), part2 ist upper (D0-D7)

    Da bin ich mir nicht mehr sicher.


    Ich bin von folgender Speicherzuordnung ausgegangen:


    Richtig ist somit part1 enthaelt D15-D8, part2 D7-D0.

    Nach meinem Verstaendnis sind die Adressen fuer D15-D8 lower (+0) und fuer D7-D0 upper (+1).


    Jetzt bin ich im 68000 UserManual auf den Buszugriff gestossen:


    Im 2. und 3. Zugriff sind Bytezugriffe dargestellt und wie mal klar sieht bezieht sich das LowerDS auf D7-D0 und das UpperDS auf D15-D8.

    Motorola bezieht sich auf die Datenbushaelfte und nicht auf Adressen.


    Also part1 EPROM in den Sockel an dem D15-D8 angeschlossen sind und part2 an D7-D0.

    Egal ob Lower oder Upper.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • einen 4 bit zahler anschliessen, der nur 16 Zugriffe zuläst, und dann einen Reset gibt?

    So kannst Du ein stabiles Bild auf dem Oszi kriegen, und die Leitungen durchklingeln ...

    Gute Idee. Werde ich mir mal merken.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Hallo Rolf,


    muß das trotz allem noch mal in den Ring werfen. Im Handbuch ist eine Schaltung beschrieben mit der man den Reset Vorgang im Einzelschritt verfolgen kann. Dazu wird das DTACK (IC20 Pin 5) Signal abgehängt und der DTACK per Taster ausgeführt. Dann muß nach dem RESET zunächst die Adresse 0 anliegen, also alle Adressleitungen 0. Auf den Datenleitungen liegt dann das erste Datumaus dem Listing. Nach dem 1. DTACK muß die Adresse dann 4 sein, das Datum 00FF0020. Das muß funktionieren, sonst läuft die CPU nicht.

  • Nach dem 1. DTACK muß die Adresse dann 4 sein

    Jetzt übertreib mal nicht. ;)

    Der 68000 hat "nur" einen 16bit Datenbus, also kommt nach dem 1. DTACK die Adresse 2. Wobei man das imaginäre A0 mitrechnen muss.

    Aber ausser meinem Besserwisser-Modus bin ich bei dir.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Auszug aus dem Datenblatt:

    When RESET and HALT are driven by an external device, the entire system, including the processor, is reset. Resetting the processor initializes the internal state. The processor reads the reset vector table entry (address $00000) and loads the contents into the supervisor stack pointer (SSP). Next, the processor loads the contents of address $00004 (vector table entry 1) into the program counter.

  • Hinweis zu dem Sourelisting so wie ich es beim Abtippen erlebt habe:


    Ich weiß nicht welcher Assembler urpünglich zum Einsatz gekommen ist. Bei Verwendung des „Easy68K“ Assemblers werden Fehler ausgegeben. Diese umfassen zunächst Label die im Original groß- oder kleingeschrieben sind aber unterschiedliche Aufgaben erfüllen. Beispiel: „ctrlTAB“ bzw. „ctrltab“ oder „nochange“ und NOCHANGE“ welche unterschiedliche Aufgaben abarbeiten. Der „Easy68K“ gibt hier Fehler aus (ist nicht case sensitiv). Auch finden sich im Original Source Codelisting in einigen Labels Sonderzeichen wie z.B. „>„, „§„, „^“ etc. Auch diese werden vom „Easy68K“ Assembler als Fehler interpretiert.


    Mittlerweile vermute ich, das VASM als Assembler in der Vergangenheit bei der ursprünglichen Erstellung zur Anwendung kam. Das ist aber nicht bestätigt.

    Habe bezüglich verwendeten Assembler noch mal bei Herrn Völzke nachgefragt, seine Antwort:

    Der Monitor wurde damals mehr oder weniger im Bootstrap-Verfahren mit sich selbst programmiert.

    Wir hatten damals ein Motorola Entwicklungsboard - es könnte sein, dass es dieses hier war: https://en.wikipedia.org/wiki/Motorola_68000_Educational_Computer_Board

    Ein Apple-II-Clone diente als Terminal.

    Der Assembler des Entwicklungsboards war aber so fehlerhaft, dass wir zunächst eine rudimentäre Version der Monitorsoftware gebaut hatten und dann mit dieser selbst weiter entwickelt haben. Das nennt man dann eben das Bootstrap-Verfahren.

  • Super, Danke für diese Information... wieder ein Stück Geschichte erhalten :)

    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::

  • hallo,


    ich will nur mitteilen das ich das Projekt MC68000-2 nach mehr als 6 Monate aufgebe. Meine Zeit ist leider Endlich.

    Ich werde mich statdessen einem eigenen Project zuwenden Habe leider nur noch das alte Brot MC68010 aber ebenfalls 12 mhz

    Version. Der Vorteill ist ich habe alles ( Hard und Softw. ) 100 Prozenr unter meiner Kontrolle.

    Ich werde auch weiterhin posten bezeuglich meiner Arbeit aus leidenschaft. BTW habe schon als 13 Jaehriger meinen ersten Dedector

    Emfaenger gebaut und Musik gehoert.


    also weiterhin viel Spass,

    Rolf

  • Gib nicht so schnell auf.

    Ich würde mal den 68000 im 'freerun' testen. Eproms raus. Alle Datenleitungen auf Gnd. Dtack abhängen und auf GND.
    Dann sollte die CPU einfach nur die Adressen hochzählen. Das kann man wunderbar mit dem Oszilloskop messen.
    Danach weißt du ob die CPU läuft. Danach würde ich den Single Step Taster probieren.

  • Hallo Rolf,


    kann mich da nur trazom anschließen. Lass doch mal wissen, was Du schon alles probiert hast.


    Gruß Uwe

  • Hallo Rolf,


    bin jetzt ein paar Tage in Urlaub wo ich keinen Zugriff habe, danach wieder dabei (Rückkehr 5.5.). Noch eine Frage: läufst Du durch die MONITOR Software zu der 2149 Programmierung, oder ist das abgeklemmt?

  • ja, das ist das Erste was nach einem Rest/Halt passiert....

    Ich verstehe gerade nicht was da passiert.

    Kannst du mal die Oszillogramme erklären und unter welchen Bedingungen?

    Normales EPROM oder "free-run"?

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Unten ist immer ( Rset/Halt ) . Das erste Photo zeigt dann in der Mitte Write/Low auf das Decoder Ram.

    im naechsten Photo unten Reset/Halt, in der Mitte write/low auf den Decoder und oben Monitor EEprom's CS -(