CP/M-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Memberlist || Home || Statistik || Kalender || Staff Willkommen Gast!
[ Unofficial CP/M Website ] [ Z80 Family Support Page ] [ Forum-Regeln ] [ Impressum/Kontakt ]

CP/M-Forum » CP/M-Emulatoren » Ich hab's schon wieder getan. » Threadansicht

Autor Thread - Seiten: -1-
000
25.07.2010, 14:50 Uhr
timetube

Avatar von timetube

Diese Emulator hat aber was, das die anderen nicht haben

Er lässt die wirklichen Hartware-Signale in der korrekten Reihenfolge raus hängen - anstelle solcher Read/Write/In/Out .... Funktionen.

OK, der Simulator selber ist nicht von mir, da habe ich mir einen passenden aufgesaugt. Aber der Port schon, und das ja mal auch schon was

Ich habe mal ein CP/M 2.2 beigepackt, damit Ihr auch was zum rumspielen habt.

Das ganze natürlich für LINUX (Eclipse) )


Da Da Da

mfg
j.
--
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt." Ein Stein.

Dieser Post wurde am 25.07.2010 um 15:08 Uhr von timetube editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
001
27.07.2010, 18:02 Uhr
proof80




Zitat:
timetube postete
Er lässt die wirklichen Hartware-Signale in der korrekten Reihenfolge raus hängen - anstelle solcher Read/Write/In/Out .... Funktionen.

Wo?
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
002
28.07.2010, 22:51 Uhr
timetube

Avatar von timetube


Zitat:
proof80 postete

Zitat:
timetube postete
Er lässt die wirklichen Hartware-Signale in der korrekten Reihenfolge raus hängen - anstelle solcher Read/Write/In/Out .... Funktionen.

Wo?

Da Da Da )))

http://www.nadine-software.com/ftp/workspace.tar.gz
--
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt." Ein Stein.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
003
29.07.2010, 08:54 Uhr
proof80



Meine Frage war eher, wo denn die "hardware-Signale" beim Emulieren 'rauskommen.

Gruß, Wolfram
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
004
29.07.2010, 20:13 Uhr
timetube

Avatar von timetube


Zitat:
proof80 postete
Meine Frage war eher, wo denn die "hardware-Signale" beim Emulieren 'rauskommen.

Gruß, Wolfram

Ich befürchte, wenn ich da nun wirklich in Prosa drauf einginge, dass wir ins philosophische abrutschen könnten, oder es gibt eben wieder Krieg )

Lass es mich daher in C++ versuchen:

Um eine CPU zu instaziiren reicht es aus die folgenden Ableitung zu erschaffen (gekürzt):
Mann, Frau auch, überschreibt einfach die virtuellen Funktionen, das Interface zur CPU also wie folgt.


Quellcode:
class MyZ80 : public CZ80
{
public:
    MyZ80()
    {
    m_stat.memreq=false;
    m_stat.busack=false;
    m_stat.m1=false;
    m_stat.rd=false;
    m_stat.wr=false;
    m_stat.ioreq=false;
    }
protected:
...
...
    struct s_stat {
    unsigned char
     memreq:1
    ,busack:1
    ,m1:1
    ,rd:1
    ,wr:1
    ,ioreq;
    }m_stat;

    virtual void busack(bool stat)  { m_stat.busack = stat; }
    virtual void memreq(bool level) { m_stat.memreq = level;}
    virtual void ioreq(bool level) { m_stat.ioreq = level;}

    virtual void rd(bool x) { m_stat.rd = x;}
    virtual void wr(bool x) { m_stat.wr = x;}
    virtual void m1(bool x) { m_stat.m1 = x;}

    virtual void halt(bool x) {}

    virtual void addr(word Addr) { m_abus = Addr;}
    virtual void data(byte data)
    {
        if(m_stat.memreq && m_stat.wr)
            ::ram[m_abus] = data;
        else if( m_stat.ioreq && m_stat.wr)
            Out( m_abus, data);
    }

    virtual byte data(void) const
    {
        if(m_stat.memreq && m_stat.rd)
            return ::ram[m_abus];
        else if( m_stat.ioreq && m_stat.rd)
            return In(m_abus);
        return 0xFF;
    }

};


Wie man sehen kann, werden die Zustände der Pins ausgegeben von der Simulation und zwar in der von Zilog für diese CPU (Z80) spezifizierten Reihenfolge. Inklusive Refresch u.s.w.

Eine Mitschnitt dieser Zustandsänderungen ergibt also ein Timing-Diagramm, wie es von Zilog in seinen Manuals für die verschiedenen Zyklen angegeben ist.

Gibt man die Zustandsänderungen nun anstelle sie in irgend welchen Bits zu speichern das System-Environment zu emulieren auf einen 40 poligen Port aus (z.B. Profibus) und hängt an diesem Port ein Kabel mit einem 40 Poligen DIL Sockel, welcher der der Z80 Pinbelegung entspricht, dann kann man möglicherweise mit wenig Aufwand die Z80 eines wirklichen Systems damit von einem PC oder so simulieren lassen. Könnte mir vorstellen das kann bei z.B. Reparaturen oder einfach nur so eine spaßige Sache sein.

Jedenfalls ist es mal was Neues, nicht nur die OpCodes so genau wie möglich zu simulieren sondern als Interface quasi die CPU-PINS (deren Zustände) auch.

j.
--
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt." Ein Stein.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
005
29.07.2010, 21:29 Uhr
proof80



Jetzt macht das Sinn - das mit dem Profibus hat mir irgendwie gefehlt.

Danke Dir, Jürgen.
Gruß Wolfram
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
006
29.07.2010, 21:41 Uhr
timetube

Avatar von timetube


Zitat:
proof80 postete
Jetzt macht das Sinn - das mit dem Profibus hat mir irgendwie gefehlt.

Danke Dir, Jürgen.
Gruß Wolfram

Och, doch kein Krieg, nur gutes, einvernehmliche Verständnis

Wir können so friedlich aber nicht ewig weiter machen, sonst machen uns die Systemrelevanten Fix und Fertig.

j.
--
"Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt." Ein Stein.

Dieser Post wurde am 29.07.2010 um 21:41 Uhr von timetube editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
007
30.07.2010, 06:01 Uhr
proof80



Krieg ist so sinnlos.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
Seiten: -1-     [ CP/M-Emulatoren ]  



gaby.de

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek