Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » P8000 Echtzeituhr next generation » Themenansicht

Autor Thread - Seiten: -1-
000
05.08.2009, 00:01 Uhr
Olli

Avatar von Olli

Da ich nich schlafen konnte, habe ich mir mal das Datenblatt fuer den RTC-72421 reingezogen.
Liest sich ja gar nicht so schwer - schoene Register-Table fuer die Programmierung usw.usw. Ich glaube das bauen wir uns mal! Das ist ja auch alles so schoen integriert - Bustreiber, Komperator, RTC72421, Irgend was Batteriemaessiges von 2-4.5V fuer den Standby Dioden, Kond.... und der Rest ist dann C-Code. Wie der Spass intialisiert werden will Softwaretechnisch und so ist auch beschrieben. Klingt nach einem schoenen Projekt.
Ich wuerde vorschlagen, ich schraube die Tage mal an einer Schaltung, dann guckt Ihr (holm? ) Euch die mal an ob die so OK ist - da fehlt mir ja noch der absolute Durchblick, und dann setze ich mich mal an sa.timer2 - das Kernel Modul kommt danach, aber das ist dann eh nur noch ein Abklatsch des sa.timer2. Och jo - darauf haette ich glaube ich erstmal Lust

Dann koennt Ihr Euch Euer Streamergedoens auskaspern und die RAM-Karte ans fliegen bringen

Ideen?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 06:27 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
05.08.2009, 00:53 Uhr
Enrico
Default Group and Edit


Prima Idee, Hau rein!

Edit:

Sollte Sicherheitshalber aber wohl auf andere I/Os als die Org. Uhr gehen?
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 00:54 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
05.08.2009, 06:27 Uhr
Olli

Avatar von Olli

Ja, logo - wird eine andere Adresse als die Originaluhr.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
05.08.2009, 07:05 Uhr
holm

Avatar von holm

Na klar doch, ist doch meine Rede seit vorigem Jarhundert.
Checke aber mal das Datenblatt der RTC wegen Y2K und ähnlichen Frazenfallen, den Chip gibts auch schon eine ganze Weile und damit Du Dich nicht ärgerst wähle die richtige Version aus (A oder B?), da kann man keinen Trimmer anschließen damit das Ding genau geht, ist alles schon im IC.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
05.08.2009, 08:29 Uhr
Olli

Avatar von Olli

Ja doch holm - Die Erkentniss muss halt erst rueberwachsen und reifen
Kessler hat die A mit der hatte ich "gerechnet" - die ist auch genauer als B
Im Datenblatt lese ich Jahreszahlen bis 2400 in ner Beispieltabelle... aber ich schaue nochmal genauer hin.

EDIT:
http://www.foxonline.com/leapyear.htm
kuemmert sich also nur um die letzten 2 Stellen - muss man dann sich also selber ums Jahrhundert kuemmern. Stellt sich nur die Frage ob das mit den Schaltjahren klappt - alle 100 Jahre ist ja keins aber alle 400 schon... Naja - wird schon.. alles >=70 ist dann 1900, alles kleiner <70 ist 2000 und alle 100 Jahre passen wir die... ach mist, dann bin ich wohl schon tot
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 11:18 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
05.08.2009, 11:27 Uhr
Olli

Avatar von Olli

RTC7301 von Epson nimmt das Jahr vierstellig an - aber der macht neben Alarm/Timer auch noch Temperaturmessungen usw - sicherlich overkill fuer unseren kleinen Wecker... ich denke mit dem 72421 fahren wir schon OK
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
05.08.2009, 12:03 Uhr
Enrico
Default Group and Edit


Der 72421 hat eine ziemlich genaue UHr. Jedefalls weichen die beim PC westnlich stärker ab. Da Sind ja die Dallas mit der Huckepackbatterie, bzw. die Nachfolger davon drin.

Sollte also reichen.

Oder wäre was eine Anwendung denkbar, wo der Timer brauchbar ist?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
05.08.2009, 12:52 Uhr
Olli

Avatar von Olli

unter WEGA sicherlich nicht - dort habe ich Softwaretimer - ggf. fuer (andere) Hardwareprojekte - faellt mir jetzt aber auch nix ein
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
05.08.2009, 13:14 Uhr
Enrico
Default Group and Edit


Ein Benchmarkprogramm ?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
05.08.2009, 13:17 Uhr
Olli

Avatar von Olli

Bzgl. Adressen

Die Original-Uhr wird unter 0xFEF1 - 0xFEFF angesprochen. Die Portadresse fuer die 8086 CPU Karte ist 0xFF1F (Ab da nur eine Adresse zur Ansprache fuehrt oder auch ein Raum weiss ich nicht - da fehlt mir die Schaltung - laut Kernel wird aber nur diese einzelne Adresse angesprochen). Was ich mir vorstellen koennte ist, ich packe die neue Uhr in den Adressraum 0xFF00 - 0xFF0F
Dabei fuehrt dann 0xFF00 - 0xFF08 zur Generierung des /CS fuer den Uhrbaustein (A0-A3) bei aktiv Werden von A4 (0xFF09-0F) wird dann die Uhr nicht aktiv, aber der Bustreiber trozdem (aehnlich wie bei der alten Uhr). Bei der neuen Uhr brauche ich ja nur 4 Bit des Bustreibers. Die verbleibenden 4Bit wuerde ich dann auf High oder Low ziehen am Bustreiber. Dann wuerde ich mit gesetztem A4 den Bustreiber "abfragen" - die Uhr ist ja still - und bekomme somit einen fest definierten Wert zurueck. Damit koennte ich dann aehnlich wie bei der alten Uhr feststellen, ob die Uhr steckt oder nicht.
Beim auslesen der Uhr shifte ich die letzten 4 Bit einfach weg - dann stoeren sie mich auch nicht.

Klingt doch ok - oder?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 13:19 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
05.08.2009, 13:27 Uhr
Enrico
Default Group and Edit


eine 8086iger Karte gibt es auch noch?

Adresse ist bestimmt ok. Da müsste man wohl bald ne Liste machen.
Aber mehr als die I/Os der P8000 selber, alte Uhr, neue UHr, 3. CPU und später SCSI, gibts doch bestimmt nicht?

Was ist mit der Streamerkarte für CM5300? Auch wenn die ev. keiner mehr hat, sollte man die Adressen freihalten.

Mit A0-A3 belegst Du aber alle 16 I/Os, wie es die RTC haben will.
Auf den Bustreiber kannst Du warscheinlich sogar verzichten. Aber um das sauber zu trennen ist das andererseits auch nicht verkehrt.
Beim GIDE (Z80) ist auch keiner dazwischen.
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 13:28 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
05.08.2009, 14:56 Uhr
Olli

Avatar von Olli

naja - ich meinte die 3. CPU Karte 8086...80286 - is doch alles das gleiche

Bzgl. alten Streamer... halte ich gerne frei wenn mir einer den Treiber gibt oder die Adresse sagt

Den Bustreiber wuerde ich nehmen um zu erkennen das die Karte auch steckt indem ich da 4 Bits definiert auf High oder Low ziehe.

Und du hast recht. der RTC braucht ja A0-A3 und nicht A0-A2. Also werde ich mich dann eher auf die Adresse FF20 - FF3F verziehen.
FF20 - FF2F steuert RTC + /OE des Bustreibers an - FF30 - FF3F nur /OE des Bustreibers - auf vorhandensein der Uhr wird dann mit Abfrage auf FF30 geprueft.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
05.08.2009, 15:02 Uhr
Enrico
Default Group and Edit


Ich dachte, Du hättest mir zu der Karte schon mal ein Stück Programm gezeigt.

Na, Du willst vielleicht Platz verbraten.

Übrigens, Da Du mit 8 Bit rangehen musst, belegst Du automatisch das doppelte an I/Os. Du musst ja D0-D7 benutzen, die anderen 8 bleiben frei.
Macht für 16 Adressen also 32, und die geraden bleiben frei.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
05.08.2009, 15:17 Uhr
Olli

Avatar von Olli

verstehe ich nicht so ganz. Ich habe A0-A3 an der Uhr. Ich packe das was rein oder raus geht auf D0-D3 - was auf D4-D7 ist, ignoriere ich immer. Ausser bei der Abfrage ob die Uhr da ist. Wiso brauche ich dann das doppelte an I/Os?
So habe ich mir das mit der Selektierung vorgestellt.

Quellcode:
.
               74688
              +-------+
+5V--/\/\/----+       |                                                      7402             7404
+5V--/\/\/----+       |              7402                                   +-----+          +-----+
+5V--/\/\/----+       |             +-----+                         A04-----+     +o---------+  !  +o----/CS0 RTC
+5V--/\/\/----+       |     A05-----+     +o-------+     7408        +------+     |          +-----+
+5V--/\/\/----+       |     A06-----+     |        |    +-----+      |      +-----+
+5V--/\/\/----+       |             +-----+        +----+  &  +o-----+
+5V--/\/\/----+       |              7402          +----+     |      |
+5V--/\/\/----+       |             +-----+        |    +-----+      +----------------------------------/OE Bustreiber
              |       +o------------+     +o-------+
A15-----------+       |     A07-----+     |
A14-----------+       |             +-----+
A13-----------+       |
A12-----------+       |
A11-----------+       |
A10-----------+       |
A09-----------+       |
A08-----------+       |
              |       |
/I/O---------o+       |
              |       |
              +-------+

Besser zeichnen geht auf Arbeit nicht

EDIT: R/W- muss wohl auch noch mit auf das CS der Uhr usw... ist ja nich vollstaendig - nur wie ich mir das Grundsaetzlich so vorstelle.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 15:24 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
05.08.2009, 15:28 Uhr
Enrico
Default Group and Edit


Im Prinzip schon, aber der Z8000 ist ja 16 bitig.
A0-A3 der RTC kommen auf A1-A4 des Rechnerbusses.
A0 macht in Verbindung mit B/W- die Unterscheidung des gereaden/ ungeraden Bytes bei Byte Zugriffen.

Ausserdem steht dazu was in der CPU-Doku drin.
16 Bitiig geht bei allen, Bei Standart und Spezial- E/A wird bei Byte Zugriffen auf geraden und ungeraden Adressen aufgeteilt.

Da muss ich nochmal nachsehen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
05.08.2009, 15:30 Uhr
Olli

Avatar von Olli

Hm - ok - aber bei der "alten" Uhr scheren die sich auch nicht um B/W-... is ja keine RAM-Karte.... da muessen ja nur 4 Bit rueber....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 15:50 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
05.08.2009, 15:34 Uhr
holm

Avatar von holm

Der mt Treiber existiert im WEGa, guck mal genauer nach Olli, da gibts sogar einen Stub der scheinbar eingebunden wird, wenn der Treiber selbst nicht in den Kern gezogen wird.

Rest gucke ich mir später an,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
05.08.2009, 15:36 Uhr
Olli

Avatar von Olli

Enrico - wie kommst du eigentlich darauf, das A0 an der CPU als A1 ankommt?

http://pofo.de/P8000/notes/plaene/eigene/16-Bit-Rechner/Stromlaufplan.pdf

Seite 13 - A0 laeuft ueber 5D22 auf LAD0.
LAD0 laeuft auf Seite 2 ueber 1D25 auf IAD0
IAD0 geht direkt an A0 der Z8001.


@Tape-Driver..
http://cvs.laladev.de/index.html/WEGA/src/uts/dev/mt.c?rev=1.1&content-type=text/x-cvsweb-markup
schwer dort die Adresse zu erkennen - sieht fuer mich erstmal so aus, als ob das zwar ein Tape-Driver ist, aber wo ist der Treiber fuer den Controller?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 15:41 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
05.08.2009, 15:49 Uhr
Enrico
Default Group and Edit


Nein. A0 der RTC geht auf A1 des Busses.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
05.08.2009, 15:50 Uhr
Olli

Avatar von Olli

wo siehst du das? A0 der RTC ist doch an C23 des Steckers angeschlossen. und C23 ist A0? Verstehe auch nicht, wenn A0 auf A1 geht, wie FEF1-FEFF womit auf dem Rechner zugegriffen wird zu der Dekodierlogik auf der RTC passt - wie ich das lese passt das nur wenn A0 auch A0 geht...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 15:52 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
05.08.2009, 16:08 Uhr
Enrico
Default Group and Edit




Gar nicht. Dass ist einfach so, dass mit A0 bei Byte-Zugirffen unterscheiden wird.
Bei der org. RTC wird A0 ja auch fest als /CS mit dekodiert. Auch wenn die die B/W- Unterscheidung nicht drin ahben.
Dadurch geht zwar 16 und 8 Bit Zugriif, aber die Daten kriegst Du deswegen generell nur über D0-D7, also immer ungerade Adressen.
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 16:13 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
05.08.2009, 16:09 Uhr
holm

Avatar von holm

@ Olli: guck doch mal rein in den Treiber..


Quellcode:
mt_init()
{
    outb(0xd001, 0);    /* Segment-Nr an DMA-Karte */
    outb(0xffb3, 0x03);    /* CTC 1 Kanal 1 auf ext. Int */
    outb(0xffb3, 0xd7);
    outb(0xffb3, 0x01);
}

mtcopy(bp, count)
register struct buf *bp;
register count;
{
    struct segd mmuout;

    /* Programmierung MMU-Segment fuer Uebertragung */
    mmuout.sg_base = (int)(bp->b_paddr >>8);
    mmuout.sg_limit = 0xff;
    mmuout.sg_attr = 0;
    loadsd(mmut, MTSEG, &mmuout);

    if (bp->b_command == MT_RCOM)
        /* Zwischenpuffer zur physischen Adresse kopieren */
        bcopy(mtbuf, ((int)bp->b_paddr)&0x00ff, MTSEG<<8, count);
    else
        /* von physischer Adresse zum Zwischenspeicher kopieren */
        bcopy(((int)bp->b_paddr)&0x00ff, MTSEG<<8, mtbuf, count);
}

mtsend(unit, command, count)
register unsigned unit;
register unsigned command;
register unsigned count;
{
    mtcom[0] = command | (unit & 1);
    mtcom[1] = (unsigned)mtbuf & 0xff;    /* low Adresse */
    mtcom[2] = (unsigned)mtbuf >> 8;    /* high Adresse */
    mtcom[3] = count;            /* Laenge low */
    mtcom[4] = (count | (command & 0x8000)) >> 8;
    outb(0xd003, 0);            /* Start DMA */
    outb(0xffe1, 0);            /* M1 ausgeben */
}

Das rädelt schon an der HW herum. Die frage ist, wo jetzt mtcom definiert ist.

Interessant für mich ist übrigens die Geschichte mit dem CTC1, die nehmen den als Interruptgenerator, an sowas hatte ich auch gedacht, ich weiß nur nicht wie ich da einen Draht hin kriege... (habe mir aber den Systembus jetzt nicht angeguckt)

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
05.08.2009, 16:54 Uhr
Olli

Avatar von Olli

ich hatte das mit dem CTC und ffe1 am Ende gesehen - das wird am dressdecoder auf Seite 12 des Plans ausgewertet und ffe1 ist nicht angeschlossen. Deswegen hatte ich diese Adressen ausgeschlossen
Die Frage ist aber, wie bp->b_paddr definiert ist.

@Enrico - ok. Aber das koennte man bei der neuen Uhr genauso machen, oder? Macht das ganze doch wesentlich einfacher. Oder hast du Angst um die freien Adressen?
So ganz verstehe ich es aber glaube ich noch nicht.

Beim Zugriff auf 0x0000 wird erwartet, das 16 Bit Daten und zwar von 0x0000 - 0x0001 anliegen, beim Zugriff auf 0x0001 nur die 8 Bit von diesem einen Speicherort und 0x0002 erwartet dann wieder 16 Daten von wiederum 2 8Bit-Speicherorten 0x0002-0x0003
oder wie darf ich mir das vorstellen?
Und wie spielt B/W- da jetzt mit rein? Kann ich dann auch bei 0x0000 nur auf 0x0000 zugreifen fuer 8 Bit Daten?
Was passiert denn wenn ich auf 0x0000 Zugreife und nur die ersten 4 Bit der Daten auswerte, und dann auf 0x0001 Zugreife und dort auch nur die ersten 4 Bit der Daten abgreife? Mir also quasi voellig egal ist, das beim 0x0000 Zugriff eigentlich 16 Bit anliegen? Und wenn dann die Bytes beim 16 Bit Zugriff geswappt werden (Was glaube ich der Fall ist), kann ich doch die ersten 8 Bit wegschmeissen und dann die folgenden 4 nehmen?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 17:11 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
05.08.2009, 17:06 Uhr
holm

Avatar von holm

Doppelt gemoppelt..
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 05.08.2009 um 17:32 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
05.08.2009, 17:30 Uhr
holm

Avatar von holm

Vorsicht, der Kommetar dahinter ist "M1 ausgeben"... das kann genau so eine Mimik sein wie für ED 4D die nichts adressiert, aber die Z80 Zyklen nachbildet.
das ganze Gerülle das Du suchst scheint in einem Header zu stehen, den Du und ich noch nicht gefunden haben...

Alles Mögliche wird dort Decodiert, aber dieses eine Ding ist frei.
Da es hier um irgend eine ominöse DMA Karte geht, kann es sein, das diese ihre eigene Decodergeschichte hat, aber das M1 Signal benötigt.

Olli zum Verständnis der b/w Geschichte und den Adressen schaue Dir soch einfach die Schaltung der RAM Karten an, da hast Du die Logik auf einen Blick.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 05.08.2009 um 17:34 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
05.08.2009, 17:40 Uhr
Olli

Avatar von Olli

Vielleicht kann Tom Nachdenk auch was dazu sagen - er hatte ja mal einen Tape Controller fuer die P8000.
Eigentlich schweifen wir aber auch schon wieder von der Uhr ab

EDIT:@holm - ja ich kenne die RAM Schaltung vom Papier her - aber das bedeutet ja nicht, das ich sie verstehe Sonst wuerde ich ja nicht fragen - ich sehe das dort mit B/W- wahrscheinlich die Baenke umgeschaltet werden so das die eine Bank das LowByte speichert und die andere das HighByte. Aber so richtig weiterhelfen um das grosse ganze zu verstehen tut es auch nicht. Deswegen hatte ich ja oben in 022 versucht ein Beispiel zu beschreiben und frage mich ob das nun korrekt ist oder nicht. Und an der RAM Karte sehe ich ja nun auch nicht, wan B/W- mal H und wann L ist, muss man das haendisch machen, passiert das automagisch......

Also was passiert denn nun mit meinen Daten die ich auf D0-D3 anlege wenn ich auf eine gerade Adresse zugreife. Diese doch recht konkrete Frage kann ich mir mit meinem heutigen Wissensstand eben nicht beantworten. Landen die auf D0-D3 an der CPU.. oder an D8-D10 oder innerhalb des Bytes geswappt... oder landen die nirgens... keine Ahnung
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 17:45 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
05.08.2009, 17:43 Uhr
holm

Avatar von holm

Du hattest nach den Adressen gefragt, nicht ich :-)
Der Rest kam von selber hinterher. Die Tatsache das Tom den Controller hatte
(und soweit ich weiß leider nicht mehr hat) sagt noch nichts darüber aus, ob er die Adressen weiß. Es ist aber im Großen und ganzen egal, Du hast 64Kbyte IO Adreßraum frei so weit ich weiß. Such Dir doch irgendwo was aus, von mir aus 0xa000 oder so...
Das muß ja nicht unbedingt bündig zu was anderem liegen.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
05.08.2009, 17:44 Uhr
Enrico
Default Group and Edit


Olli, jetzt weis ich nicht was Du meinst.
Weniger als 8 Bit geht doch gar nicht.
Davon mal abgesehen, hatte ich nun nicht alles dazu geschrieben.

Beim 16Bit Zugriff ist B/W- L, A0 generell L.
Beim Byte-Zugriff muss B/W- H sein.
A0 unterscheidet ob , gerade oder ungerade.

Bei ungeraden ist A0 H, Daten auf D0-D7.
Bei geraden A0 L, Daten auf D8-D15.

Man könnte also schon B/W- weglassen, da es in dem Fall eindeutig ist.
Ist die Frage, ob man das sollte, und sich ev. Probleme reinholt.
1 Gatter sparen brauch man wie früher ja nun wirklich nicht.


Dass da Daten geswappt werden glaube ich so erstmal nicht. Von der CPU her jedenfalls geht das nicht, und darf auch nicht sein.

SIO / PIO des Rechners sind auch generell ungerade Adressen ab FF81h
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 17:50 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
05.08.2009, 17:49 Uhr
Olli

Avatar von Olli

Also - das heisst dann wenn ich 0xFF20 abfrage, und die daten auf D0-D3 ablege, muss ich beruecksichtigen das ich das ganze geswappt bekomme (Also als D8-D11), und wenn ich 0xFF21 abfrage bekomme ich es richtig....
Dann spare ich mir doch das ganze komplizierte rumshiften und benutze einfach nur ungerade Adressen. Ich kann dann ja noch mit einbauen, das sicherheitshalber B/W- immer H sein muss beim Zugriff.

EDIT: aber die Z800X ist doch big endian? (bzgl. Byte swapping)
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 17:51 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
05.08.2009, 17:52 Uhr
Enrico
Default Group and Edit


Genaugenommen würdest Du bei FF20 D0-D7 und Bytezugriff gar nichts gelesen bekommen.

ebenfalls Edit:
Der swappt nix.

Kann mal gucken was zum RAM steht.
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 17:53 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
05.08.2009, 17:55 Uhr
Olli

Avatar von Olli

Ok, dann nehmen wir einfach ungerade Adressen fuer den Zugriff auf den RTC....

Edit: und natuerlich ists geswappt. In meinem U8000 Programmierbuch:

Das hoeherwertige Byte (High-Byte) eines Worts steht im Speicher stets auf einer geraden Adresse (AD0 = 0). Das niederwertige Byte (Low-Byte) steht auf der darauffolgenden ungeraden Adresse (AD0=1). Die Adresse eines Worts zeigt auf das hoeherwertige Byte.

Das bedeutet - Big Endian - im Gegensatz zum x86 wo es genau anders herum ist - Little Endian.

Heisst also, wenn ich mit einem Byte Zugriff auf eine gerade Adresse zugreife, bekomme ich D8-D15 praesentiert. Greife ich mit einem Wort-Zugriff auf eine Gerade Adresse zu, finde ich mein Low-Byte am Ende der Daten....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 17:59 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
031
05.08.2009, 17:55 Uhr
Tom Nachdenk



Ja, derzeit ist von der Tape-ansteuerung nur ein Loch im Gehäuse auffinbar :-/ allerdings war das nur einer Steckkarte, ohne weitere Kabel dran. Allerdings ist hier auch die Frage was es da mit dem DMA auf sich hat, eine DMA-Platine im K1520 Format müsste mir doch aufgefallen sein. Aber evtl. ist der CTC 'irgendwie' auf dem 5. Steckverbinder verfügbar, oder ganz fies zusätzlich verdrahtet worden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
032
05.08.2009, 18:10 Uhr
Enrico
Default Group and Edit


Olli,

da haben wir wohl aneinander vorbeigeredt.
Für mich heisst swappen, dass ich beim 8 Bit Zugriff auf D0-D7 alle geraden und ungeraden Adressen ansprechen kann.
Also D7-D15 auf D0-D7 geswappt werden.

Holm,

diew DMA müsste dann ja auf der CPU auf diese Leisten gesteckt sein, oder?
also die DTC?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
033
05.08.2009, 18:12 Uhr
Enrico
Default Group and Edit


Das ganze im Bild:








--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 18:13 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
034
05.08.2009, 18:14 Uhr
Enrico
Default Group and Edit


Und nur zur Erinnerung; I/Os sollen nur im System-Modus gehen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
035
05.08.2009, 18:18 Uhr
holm

Avatar von holm

Wir machen mit dem DMA Kram mal im Thread SCSI Interface für P8000 weiter,
den ich gleich aufmache...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
036
05.08.2009, 18:41 Uhr
Olli

Avatar von Olli

Also - wenn ich jetzt A0 sein lasse, muss ich ja um 4 Adressbits ansteuern zu koennen, mir z.B. den Adressbereich FDE0 - FDFF krallen. Koennte man z.B. folgendes machen:

1. Ich verwende sowohl ungerade wie auch gerade Adressen
2. Ich habe 2 Bustreiber, einer geht auf D0-D7, der andere auf D8-D15
3. Abhaengig von A0(?) schickt der eine Bustreiber die Daten der RTC auf D0-D7 oder auf D8-D15

-> Dann kann ich doch sowohl die geraden wie auch die ungeraden Adressen byteweise auslesen und bekomme immer meine Uhrdaten praesentiert - oder habe ichs immer noch nich geschnallt?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
037
05.08.2009, 18:47 Uhr
Enrico
Default Group and Edit


Ich glaub, Du machst es schon gerne kompliziert.
Entweder 16 Bit, oder 8 BIt I/O. Das mit Register auf die Dtanbuss rumschalten wird warscheinlich nicht gehen, da die CPU was dagegen hat.
Standart I/O auf ungerade Adressen, Spezial I/O auf gerade Adressen, wie Z.B MMU und was es da so gibt.

Dekodier die Adresse aus, plus A0 = H, und nimm jede 2 Adresse.
Das funktioniert auf jeden Fall.
D.H. die RTC geht mit deren Adressen auf die Adressen vom Bus A1-A4.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
038
05.08.2009, 18:50 Uhr
holm

Avatar von holm

Ja. Die Frage ist, ob sich der zusätzliche Aufwand lohnt oder ob Du gleich 32 Adressen nimmst und z.B. nur mit den untersten 4 Bit herumoperierst.

Ich denke nicht, das wir die P8000 mal mit IO Adressen überfüllen werden...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
039
05.08.2009, 18:51 Uhr
Olli

Avatar von Olli

Gut - also Adressbereich FDE0 - FDFF.
Ich wollt ja nur Adressen sparen - haben doch nur 16 Bit Adressraum!
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
040
05.08.2009, 19:01 Uhr
Enrico
Default Group and Edit


Weis ich schon. Ich glaueb aber nicht dass es auf die art geht.
I/O Befehele und Spezial I/O Befehle sind glaube ich 2erlei
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
041
05.08.2009, 19:52 Uhr
Enrico
Default Group and Edit



Zitat:
Enrico schrieb
Weis ich schon. Ich glaueb aber nicht dass es auf die art geht.
I/O Befehele und Spezial I/O Befehle sind glaube ich 2erlei

Das sind getrennte Befehle.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
042
05.08.2009, 20:04 Uhr
Olli

Avatar von Olli

So... dann will ich mich mal wieder ganz behutsam vorwagen
Hier mein 1. Wurf des Schaltplanes.

http://files.pofo.de/Stromlaufplan_ng.pdf

- Ich wollte nun nich noch einen ganzen Adressbereich mehr in Anspruch nehmeen, daher werde ich das Vorhandensein der Uhr durch Abfragen von 0xFDE1 abfragen. Danach werde ich dann die ersten 4 Bytes (von der Uhr) wegshiften und dann pruefen ob ich 0x0C anliegen habe (HHLL - die letzten 4 Bytes).
- Beim Lesen der Daten werde ich die Hoeheren 4 Bits einfach immer verwerfen.
- CS1 soll ja bei Power-Off auf 0V gehen damit der I/O Part des Chips deaktiviert wird. Das denke ich erreiche ich einfach dadurch, das ich CS1 direkt an die 5V Versorgung der P8000 haenge - Rechner aus, 5V => 0V.
- bei der /WR /RD Generierung fuer den RTC bin ich mir unsicher. Reicht das so, oder muss ich mein /CS auch noch mit verdrahten? Was ist mit /DS von der Z8001 - auch mit rein verdrahten?
- Habe mal die '04er alle an den Widerstand gehangen - dann kann man alle drei 74er mit HCT bestuecken.
- Adressdekodierung richtig?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 20:54 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
043
05.08.2009, 20:14 Uhr
Enrico
Default Group and Edit


Guck DIr mal die Schaltung vom GIDE an
Wenns die nicht hast, kann ich Dir die schicken
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
044
05.08.2009, 20:20 Uhr
Olli

Avatar von Olli

Hoe? Was mach ich denn jetzt mit der GIDE Schaltung hier? Habe sie nicht...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
045
05.08.2009, 20:43 Uhr
holm

Avatar von holm

http://www.gaby.de/gide/

Auf der GIDE ist eine 72421...

Ansonsten einverstanden.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
046
05.08.2009, 21:04 Uhr
Olli

Avatar von Olli

Hm - sieht doch so aehnlich aus wie bei mir?
Die Spannungsversorgung fuer den RTC kann ich wohl noch n bissel entschlacken - wie beim GIDE nur 2 Dioden und gut is.

Warum liegt dort CS1 an /RES? Im Handbuch steht, CS1 = High, /CS0 steuert, wenn CS1=Low, RTC ist on Standby, wenn CS1=0V, HOLD und RESET Bits des RTC werden auf 0 gesetzt.

Die /WR und /RD Generierung beantwortet mir die Schaltung aber auch nicht.....
Soll ich /WR und /RD nur anlegen wenn auch /CS0 anliegt? Soll ich Data-Strobe der Z8001 mit verwenden in der Schaltung?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
047
05.08.2009, 21:19 Uhr
holm

Avatar von holm

Nein RD und WR dürfen per Definition wackeln wenn CS inaktiv ist.
mit AS kannst Du mal gucken ob Du mit ALE was anfangen kannst, sollte das Selbe sein, nur invertiert.
DS kommt spät soviel ich noch weiß, es kommt darauf an, ob die Zugriffszeit dann noch reicht.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 05.08.2009 um 21:19 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
048
05.08.2009, 21:32 Uhr
Enrico
Default Group and Edit


PLan sieht nicht verkehrt aus.
2Vd1 kannst Du weglassen, C1 muss Tantal sein (selbstentladung)
Schottky (BAT43 o.ä.) sollten es natürlich sein.

Beim GIDE kommt CS1 - /RES vom Reset-IC. Weils beim Einschaltvorgang unmotivierte Vorgänge gibt die die RTC durcheinander bringen und verstellen.
Damit wird das das verhindert.

/DS könnte sein dass es auch ohne geht, bei /AS stellt man ja sicher, dass die Adressen auch ttsächlich anlegien.
Der Z8000 hat ja einen Multiplexbus, welcher aber auf den Steckplätzen schon auseinandergedröselt ist.
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 21:35 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
049
05.08.2009, 21:34 Uhr
Olli

Avatar von Olli

Wenn ALE hochomig ist, werden die Adressdaten und /CS0 in den RTC eingelesen. Wenn ALE abfaellt, werden die Adressdaten und /CS0 wie zu diesem Zeitpunkt gehalten. Waerend ALE Low ist, werden die Daten "bearbeitet".

/AS - wenn /AS low wird sind die angelegten Adressen valid - koennte man also wirklich negieren.

Naja - ich kann ja erstmal ohne /AS - und wenn das dann laeuft kann das ja mit ran - wenns immer noch laeuft lassen wirs so... oder jumperbar auf dem Board

EDIT
Habe die Stromversorgung im Plan nochmal aktualisiert.

/RES -> CS1 beim GIDE ist mir noch unklar.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 05.08.2009 um 21:36 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
050
05.08.2009, 21:35 Uhr
Enrico
Default Group and Edit


Jede Menge LEDs sind da nie verkehrt.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
051
05.08.2009, 21:47 Uhr
Olli

Avatar von Olli

LEDs? Ich seh da dann ja nicht wirklich viel auf den LEDs wenn die Daten da durchhuschen...

Das mit dem Reset is ne gute Idee Da haenge ich CS1 auf /BUS RESET- (C7)
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
052
05.08.2009, 21:49 Uhr
Enrico
Default Group and Edit


Ja das schon
Aber wenigstens sieht Du dass Du da richtig bist, und sich überhaupt was tut

Ist die Frage, wie frühzeit das Busreset kommt. Der Resetchip auf dem GIDE hat nochmal ne ordentliche Verzögerung durch den Elko.

Probiers aber erst mal aus.
--
MFG
Enrico

Dieser Beitrag wurde am 05.08.2009 um 21:51 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
053
05.08.2009, 21:52 Uhr
Olli

Avatar von Olli

Naja - wann der BUS MRESET- kommt, ist auf Seite 11 des 16-Bit Plans beschrieben. Habe die Schaltung nochmal aktualisiert.... LEDs pflanze ich dann so rein... wird dann eh erstmal ne miniatur-Lochrasterplatine... is ja nix drauf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
054
05.08.2009, 23:50 Uhr
Enrico
Default Group and Edit


Wo isser denn?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
055
06.08.2009, 06:22 Uhr
Olli

Avatar von Olli

Steht in 042
http://files.pofo.de/Stromlaufplan_ng.pdf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
056
06.08.2009, 11:22 Uhr
Enrico
Default Group and Edit


Sieht doch prima aus. Nun muss es nur noch funzen, wie Du dir das so vorstellt.
Abblock-Cs sind im PLan ja Wurscht, bei der RTC solltest Du aber Sicherheitshalber auch 100 nF reinmachen. Sicher ist sicher.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
057
06.08.2009, 11:25 Uhr
Olli

Avatar von Olli

jo - abblock Cs packe ich immer unter die ICs in die Sockel mit rein - sind ja so schoen klein die Teile - nehme sie aber dann auch noch in den Plan mit auf - gehoeren ja eigentlich schon mit rein.
n Elko kann ich ja auch noch mit draufpacken... die Platine wird aber eh erstmal so linealbreite haben Stecker drauf, 3cm Lochraster an den Stecker und fertig.... is ja nix an Bauteilen.
Danach dann erstmal n rudimentaeres sa.timer2 welches alle Uhr-Adressen ausliest und mal gucken was da so ankommt. Dann muss ich mich mal mit der richtigen Initialisierung befassen... aber is ja alles dokumentiert

Bei RN1 habe ich 3+4 auf die gleiche Datenleitung gehauen sehe ich gerade
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 06.08.2009 um 11:30 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
058
06.08.2009, 11:51 Uhr
Olli

Avatar von Olli

Schade das der 74677-74679 nicht mehr zu bekommen ist, mit nem 16 oder 12 Bit Comperator koennte man sich noch den '30 sparen.... aber Bauteile einsetzen die es nich mehr so ohne weiteres im Laden gibt is auch doof... also egal
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
059
06.08.2009, 12:09 Uhr
holm

Avatar von holm

Bei Kessler als 74ALS zu haben, kosten aber Geld die Dinger:

74ALS677 5,79€
74ALS678 4,98€
74ALS679 3,89€

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
060
06.08.2009, 12:41 Uhr
Olli

Avatar von Olli

Ahjo... ich glaub das lassen wir aber... dann doch lieber n '30 mit drauf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
061
06.08.2009, 12:43 Uhr
Olli

Avatar von Olli

Apropos Beschaffbarkeit hat einer ne 72421 den er mir borgen koennte? Ansonsten muesste ich fuer den jetzt extra bestellen.....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
062
06.08.2009, 13:06 Uhr
Enrico
Default Group and Edit


Ja, müsste da sein.

Ich dachte, Du bestellst sowieso bei Kessler / Reichelt?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
063
06.08.2009, 14:14 Uhr
Olli

Avatar von Olli

Erstmal halt nicht - deswegen fragte ich.... die on-hold AC1 Projekte haben schon alle benoetigten Bauteile
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
064
06.08.2009, 19:52 Uhr
Olli

Avatar von Olli

Naja - ehe sich jemand erbarmt schreibe ich schonmal am Treiber, erstmal das U130 Geraffel entzerren und modularisieren und dann ein 72421 Modul dazu...ggf. Bestelle ich dann naechste Woche doch mal bei Reichelt.

faengt schon gut an haha - dieser onBoard-C-Praeprozessor is echt ne Nuss...

./timer.h: 33: TIMERTYP redefined
./timer.h: 39: ADR_U130 redefined
./timer.h: 40: ADR_U130 redefined

nur 8 Stellen - argh! Deswegen sind die alten Sourcen alle so kryptisch mit ihren #define's hehe
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 06.08.2009 um 20:04 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
065
06.08.2009, 20:15 Uhr
holm

Avatar von holm

Ok, ich gucke nach...
IMHO habe ich nochwas aber nur B Version.
Sagmal, machst du Deine Schaltplänne mit Kicad?
Wen ja, ich könnte ein paar Bibliotheken gebarauchen in denen das hier übliche so drin ist, (CTC, PIO und Geraffel)


Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
066
06.08.2009, 20:30 Uhr
Olli

Avatar von Olli

Noe... mit gschem unter FreeBSD /usr/ports/cad/gschem*
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
067
06.08.2009, 22:01 Uhr
Enrico
Default Group and Edit


So, hab ihn gefunden. So schnell geht das ja nun auch nicht.
Wohin damit, oder solls sonst noch was sein?
--
MFG
Enrico

Dieser Beitrag wurde am 06.08.2009 um 22:02 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
068
06.08.2009, 22:13 Uhr
Olli

Avatar von Olli

@Enrico
dahin am besten:
http://pofo.de/impressum.shtml

Glaube brauche sonst erstmal nix?

sa.timer schonmal soweit modularisiert, das ich nun ein C-Teil habe welches die reine Interaktion mit dem User macht und ein u130.c welche init, set, get, start funktionen hat der man einfach nix, n unix timestamp uebergibt oder n unix timestamp zurueck geben.
Je nach gefundener Uhr werden dann funktionspointer auf die u130 oder die 72421 funktionen (die noch zu schreiben sind) gesetzt. Die wird man dann auch so in den kernel einbinden koennen.... (deswegen hab ichs gleich so gemacht das sie UNIX Timestamps verarbeiten koennen bzw. liefern)
Der U130 Teil klappt schonmal ganz gut....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
069
07.08.2009, 00:04 Uhr
Enrico
Default Group and Edit


Gut, dann tüte ich mal ein.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
070
07.08.2009, 20:43 Uhr
Olli

Avatar von Olli

oh man - ich such mir hier n Wolf wiso bei
clktime->tm_mon++;
nur Mist rauskommt... dachte schon "ok, haste irgendwo mit Pointer Mist gebaut" - schreib das ganze um auf +=1 usw... und dann denke ich mal "ok, compilierst du mal ohne Optimizer Aufruf" - Aaargh... der Optimizier optimiert meinen Code kaputt. Der Base-Compiler is echt fuer die Tonne... mal sehn obs geht wenn ich clktime->tm_mon klammer.... *sigh*

EDIT: Klammern geht auch nicht...
outtime
year 109
month 7
day 7
hour 20
min 46
sec 54
Date is: 0/7/2009
Time is: 20:46:54 GMT

Klar den 7.0. haben wir... wir haben den 7.8.! Dummer Optimizier... mal sehn ob man den irgendwie austricksen kann....

Und wiso sind optimierte Binaries (2) groesser als nicht optimierte (3)? omg...

#8 /sa.timer*
-r-------- 1 wega system 3940 Aug 7 22:49 /sa.timer2
-r-------- 1 wega system 3856 Aug 7 22:51 /sa.timer3
#9
EDIT 2:

: md(0,16000)sa.timer2

RFT U130X RTC found
u130_get
year 109
month 7
day 7
hour 20
min 52
sec 42
outtime
year 109
month 7
day 7
hour 20
min 52
sec 42
Date is: 19957/7/2009
Time is: 20:52:42 GMT

: md(0,16000)sa.timer3

RFT U130X RTC found
u130_get
year 109
month 7
day 7
hour 20
min 52
sec 56
Date is: 8/7/2009
Time is: 20:52:56 GMT
Enter new Date (MM/DD/YY) :

Dann wird halt kein Code optimiert... grr
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 07.08.2009 um 20:58 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
071
07.08.2009, 21:03 Uhr
Enrico
Default Group and Edit


Assembler wäre bestimmt kleiner
Sorry
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
072
07.08.2009, 21:07 Uhr
Olli

Avatar von Olli

Oh man.. der C-Compiler treibt mich noch auf die Palme...

cc -DDEBUG -c rtc72421.c
Fatal error: line 134: Invalid operand combination
Abort because of syntax errors
Assembler Abort
Compiler error in file rtc72421.c: assembler error


Nu erzeugt er invaliden ASM Code... gibts doch nich...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
073
07.08.2009, 21:10 Uhr
Olli

Avatar von Olli

Moment! ich habe ja noch Enricos RAM in der Kiste... vielleicht liegts auch daran!

EDIT: produziert auch mit Original-RAM Schrott....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 07.08.2009 um 21:18 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
074
07.08.2009, 22:00 Uhr
holm

Avatar von holm

... komme gerade von einer Feier..

Es ist nach dem was Du erzählst ja fast unglaublich, das die ein halbwegs funktionierendens System zusammen bekommen haben. Das kann ja heiter werden...
Gruß
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 07.08.2009 um 22:00 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
075
07.08.2009, 22:05 Uhr
Olli

Avatar von Olli

vielleicht bin ich auch nur mal wieder zu doof fuer C
Vielleicht benutze ich das Pointer Zeugs auch falsch...

Kannst ja mal n Blick drauf werfen - is ja nich viel:

Mist ausgegeben wird in outtime() bei der Datumsausgabe am ende (sa.timer.c)

sa.timer.c
timegm.c
gmtime.c
u130.c

Irgendwie habe ich gerade das Gefuehl es is alles putt.... ich glaub ich sollte in Bett
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 07.08.2009 um 22:06 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
076
10.08.2009, 17:34 Uhr
Olli

Avatar von Olli

Uhr ist angekommen Enrico.
Ich werde jetzt die Tage erstmal versuchen den Treiber zu stabilisieren....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
077
10.08.2009, 18:39 Uhr
holm

Avatar von holm

Uh, habe irgendwie jetzt erst gemerkt, das hier Arbeit für mich steckt.
Ich gucke mal drüber, bin aber derzeit überhaupt nicht vertraut mit der Materie.
Ich muß mir erst mal den Schaltplan des originalen Weckers reinziehen.

Gruß,
Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
078
10.08.2009, 19:37 Uhr
Olli

Avatar von Olli

Ahjo... ich geh jetzt nochmal Schritt fuer Schritt von den Originalsourcen aus bis die ersten Fehler auftreten - hatte auch schon MMU TRAP... wird wohl irgendwas mit meinen Pointern putt sein...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
079
10.08.2009, 20:23 Uhr
Olli

Avatar von Olli

*kopfkratz* - So ganz komm ich da noch nich hinter....
: md(0,16000)sa.timer3

MMU TRAP ID= 0485
*

habe jetzt meine beiden gmtime und timegm Funktionen an den Anfang vom Original sa.timer gepackt und gettime() angepasst. Die beiden Funktionen werden aber gar nicht aufgerunfen - nehme ich die Funktionen weg gehts wieder.... muss evtl. der Programmstart innerhalb einer bestimmten KB Grenze liegen? hm.....

EDIT: in der Tat - main() einfach vor die 2 Funktionen gelegt und es klapppt wieder - das kann doch nicht sein.....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 10.08.2009 um 20:28 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
080
10.08.2009, 20:41 Uhr
holm

Avatar von holm

..normalerweise nicht.
Ein schrottiger C-Compiler ist aber so ziemlich zu Allem in der Lage.
Beim blanken Drübergucken ist mir jetzt nichts aufgefallen. Ich würde an Deiner Stelle
die physischen Transferfunktionen zur Hardware erst mal durch stubs ersetzten die einfach nur irgend eine vor dem compilieren gesetzte Zeit über die definierten Interfaces liefern (#if standalone i..else...) so das Du erst mal das "userland" normal entwanzen kannst.
So hast Du ja kaum eine Möglichkeit zu debuggen. Der MMU Trap sagt Alles oder Nichts...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
081
10.08.2009, 22:08 Uhr
Olli

Avatar von Olli

Sieht aktuell alles danach aus, das ihn folgender Code aus dem Haeuschen hat:


Quellcode:
for( i = 0 ; i < sizeof(clock_devs) / sizeof(clock_devs[0]); i++, t++) {
        if((inb(t->clock_addr)&~t->clock_det_msk) == t->clock_det_str) {
            printf("%s found\n",t->clock_name);
            timer_found=1;
            /* function poregisterers here */
            break;
        }
    }

Wohl zu sophisticated.... naja, mehr dazu morgen... jetzt erstmal Heia...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
082
11.08.2009, 00:03 Uhr
holm

Avatar von holm

Keine Ahnung mit was für Strukturgrößen Du da hantierst, ich weiß was Du willst, aber die Größen:

http://de.wikibooks.org/wiki/C-Programmierung:_Komplexe_Datentypen

können variieren.

Die Division ist da Käse. Warscheinlich wolltest Du mit den Größen der Pointer rechnen..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
083
11.08.2009, 06:55 Uhr
Olli

Avatar von Olli

Naja, dann ist es aber in den ein oder anderen FreeBSD Treibern auch Kaese - da wirds naemlich genauso gemacht

EDIT:

er scheint auch damit irgendwelche Probleme zu haben:


Quellcode:
void
u130_set(time)
long time;
{
    struct tm *clktime;

    clktime = gmtime(&time);

so laeufts zuverlaessig:


Quellcode:
void
u130_set(time)
long time;
{
    struct tm *clktime;
    long time2;
    
    time2=time;

    clktime = gmtime(&time2);

schon strange....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.08.2009 um 07:13 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
084
11.08.2009, 08:51 Uhr
holm

Avatar von holm

Bochmal zum sizeof(struct):

"Die Größe einer Variable vom Typ struct datum kann mit sizeof(struct datum) ermittelt werden. Die Gesamtgröße eines struct-Typs kann mehr sein als die Größe der einzelnen Komponenten, in unserem Fall also sizeof(int) + sizeof(char[10]) + sizeof(int). Der Compiler darf nämlich die einzelnen Komponenten so im Speicher ausrichten, dass ein schneller Zugriff möglich ist."

D.h. man rechnet mit unbekannten und je nach alignment ist das ein Moving Target...

Das der Compiler nicht der Weisheit letzter Schluß ist, wissen wir doch schon :-)

Probiere mal in gmtime einen expliziten Cast auf Adresse von (long) time...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
085
11.08.2009, 09:34 Uhr
Olli

Avatar von Olli

Najo - ich weiss noch nicht obs wirklich an dem sizeof() geraffel liegt... ich setz da heute einfach mal 2 ein - ich weiss ja das es nur 2 Uhren sind
Ich hatte in der Vergangenheit mit
if((inb(t->clock_addr)&~t->clock_det_msk) == t->clock_det_str)
viel probleme das er &~ falsch gemacht hat... naja, muss ich noch etwas rumtesten. Wenn es dann gut laeuft schwinge ich den Loetkolben
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
086
11.08.2009, 12:09 Uhr
holm

Avatar von holm

Hmm, &(~t->clock_det_msk) ?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
087
11.08.2009, 18:00 Uhr
Olli

Avatar von Olli


Zitat:
holm schrieb
Probiere mal in gmtime einen expliziten Cast auf Adresse von (long) time...

Verstehe ich jetzt nich.... wie meineen?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
088
11.08.2009, 18:25 Uhr
lori2



Mit

Quellcode:
sizeof(clock_devs) / sizeof(clock_devs[0])

soll eigentlich die Anzahl der Elemente in dem clock_devs-Array gemeint sein.
Problem:
Sollte im Hintergrund die Defintion wie folgt aus sehen:

Quellcode:
Datentyp* clock_devs;
clock_devs = (..)malloc(..);

Dann bestimmt sizeof(clock_devs) mit definitiver Sicherheit die Größe eines Zeigers! (2 Byte)
Bei:

Quellcode:
Datentyp clock_devs[100];

Hier liefert sizeof(clock_devs) ggf. 100*sizeof(Datentyp). Sollte dieser Aufruf in einer anderen Funktion, oder gar einer anderen Datei erfolgen, kann es wieder nur eine Zeigergröße geben.
Die Division liefert also entweder 0,1,2 oder die Anzahl der Elemente.
Hängt vom Compiler ab.

"Nur C"-Compiler, der hier wahrscheinlich benutzt wird, mögen es, wenn die Funktionen, die benutzt werden sollen vorher mindestens deklariert und später definitiert, oder vorher sofort definiert sind.
Bsp:

Quellcode:
void f();
void g()
{
}
int main()
{
  f();
  g();
}
void f()
{
  ...
}


Dieser Beitrag wurde am 11.08.2009 um 18:32 Uhr von lori2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
089
11.08.2009, 19:06 Uhr
Olli

Avatar von Olli

Also - an sizeof liegts nicht - auch mit 2 spielt das Programm verrueckt. Es scheint an der Operation zu liegen - das inb() &~ aufgedroeselt in a und b scheint zu laufen...


Quellcode:
int a,b;
    t = clock_devs;
#define foo 1
#ifdef foo
    for( i = 0 ; i < 2; i++, t++) {
        a = inb(t->clock_addr);
        b = t->clock_det_str;
        a = a&~t->clock_det_msk;
        if(a == b) {
            printf("%s found\n",t->clock_name);
            timer_found=1;
            /* function pointers here */
            break;
        }
    }

Das Funktionen deklariert sein sollten ist schon klar - ansonsten nehmen die fruehen C-Compiler einfach int als Return value an - klappt solange auch wirklich int returned wird.... void und int returnende Funktionen muessen daher nicht zwingend deklariert werden. Bei heutigen Compilern sieht das anders aus - die sind da strikter...

Die Definition von clock_devs steht uebrigens hier:
http://cvs.laladev.org/index.html/WEGA/src/cmd/standalone/sa.timer/timer.h?rev=1.1&content-type=text/x-cvsweb-markup

Na da bin ich ja mal gespannt - eigentlich will ich in dem Struct noch function pointer speichern und mit diese dann globalen function pointern zuordnen um dann damit zu arbeiten..... ob der Compiler das schnallt....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.08.2009 um 19:24 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
090
11.08.2009, 19:36 Uhr
lori2



Ging es mit mehr Klammern in der vorherigen Variante auch nicht?
Was für einen Compiler benutzt Du?

Dieser Beitrag wurde am 11.08.2009 um 19:36 Uhr von lori2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
091
11.08.2009, 20:09 Uhr
Olli

Avatar von Olli

es geht schon nicht wenn ich a mit (int)(t->clock_det_str) vergleiche.
Compiler... keine Ahnung was auch immer bei ZEUS/WEGA dabei war... vielleicht eine uralte Version des PCC?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
092
11.08.2009, 20:20 Uhr
holm

Avatar von holm

@vertehe ich jetzt nicht:

Du sollst simpel mal das AND und die Negation durch eine Klammer trennen.

Der Compiler stammt aus einer Zeit zu der C noch keineswegs irgrgendwie standardisiert war, Vieles ist implementationsabhängig und das ist hier das Problem.
Selbst der LCC macht ja seltsame Sachen, zumindest hinsichtlich der Casts die er
eigentlich autmatisch hinkriegen sollte. Du kannst Dich hier also auf gar Nichts verlassen sondern mußt dem Ding wirklich eintrichtern was es tun soll.
Klar soll der Code mit sizeof(struct clock_dev) ... die Anzahl der Einträge ermitteln,
also die Pointer zählen, aber was der Compilerbauer hier wirklich reingesetzt hat,
ist eine ganz andere Frage. Die Wega Leute werden das sicher damals gewußt haben :-)

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
093
11.08.2009, 20:27 Uhr
Olli

Avatar von Olli

@holm
also,
folgendes geht:

Quellcode:
a = inb(t->clock_addr)&~t->clock_det_msk;
b = t->clock_det_str;
if(a == b) {

folgendes geht nicht:


Quellcode:
a = inb(t->clock_addr)&~t->clock_det_msk;
if(a == (int)(t->clock_det_str)) {

Bist du sicher, das ich da noch irgendwas klammern sollte?

EDIT: Function pointer innerhalb von STRUCTs deklariert, und dann globalen function pointern zugewiesen scheint problemlos zu funzen.....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 11.08.2009 um 20:33 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
094
11.08.2009, 21:48 Uhr
holm

Avatar von holm

Was soll ich da noch sagen? Vielleicht "Ach Du Schieße ..?

Mannomann, der Compiler ist ja noch richtig grasgrün, dem sind die Ausdrücke einfach zu komplex.

Du solltest das oben klammern:

a = inb(t->clock_addr)&(~t->clock_det_msk);

Mal was Anderes:

1. warum habe ich von Dir keine Telno?
2. Du hast gesagt, das Du mal versucht hast den 16Bit Monitor zu assemblieren und zu linken aber was Anderes rausbekommen hast als EAW.
Was hast denn Du in p.dummy.s stehen gehabt?
Wie war das Ergebnis anders?

Um die Sache mit den CTC Interrupts ausprobieren zu könne brauche ich eine Ladeliste des Monitors, wegen Programmstatusarea usw...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
095
11.08.2009, 22:11 Uhr
Olli

Avatar von Olli

Nur schnell weil ich nu ins bett husche...

Quellcode:
#16 ls
MON16         p.boot.o      p.comm.s      p.gesa.o      p.ram.o
makefile      p.boot.s      p.crc.o       p.gesa.s      p.ram.s
mon.uu        p.boot.s.orig p.crc.s       p.init.o      p.term.o
mon16.crc.doc p.brk.o       p.disk.o      p.init.s      p.term.s
mon16.doc     p.brk.s       p.disk.s      p.init.s.orig p.test.o
mon16.kp.doc  p.brk.s.orig  p.dummy.o     p.ldsd.o      p.test.s
mon16.uu      p.comm.o      p.dummy.s     p.ldsd.s
#17 cat p.dummy.s
dummy module

$SECTION PROM

  internal
        array [%630 byte]        !auffuellung auf %1f0 byte!
        
end dummy
#18 cat makefile
OBJS=   p.init.o p.term.o p.comm.o p.brk.o p.test.o p.gesa.o \
        p.ldsd.o p.boot.o p.dummy.o p.disk.o p.crc.o

all:    MON16

clean:
        rm -f MON16 ${OBJS}

MON16:  ${OBJS}
        ld ${OBJS} -o MON16
        strip -h MON16
#19

Versuche mal damit dein Glueck.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
096
12.08.2009, 06:56 Uhr
Olli

Avatar von Olli

so langsam..... irgend ein Mist muss mit den Pointern und den time* Funktionen sein....


Quellcode:
: md(0,16000)sa.timer2

RFT U130X RTC found
Date is: 4/5/2009
Time is: 19:41:29 GMT
time: 1238960489
year 9
month 4
day 5
hour 19
min 41
sec 29
Enter new Date (MM/DD/YY) :
Enter new Time in GMT (HH:MM) : 10:10
year 9
month 4
day 5
hour 10
min 10
sec 0
time: 65482654686455065440

http://cvs.laladev.org/index.html/WEGA/src/cmd/standalone/sa.timer/sa.timer.c?rev=1.6
dort: settimer() angucken.... ich sehe dort nichts was dazu fuehren koennte, das time2 da unten so einen Mist enthaellt... Die Uhr wird nun natuerlich gestellt bis zum Sankt-Nimmerleinstag......
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
097
12.08.2009, 13:24 Uhr
holm

Avatar von holm

In Deinem Monitor makefile fehlt p.ram.s und die Arraysize in p.dummy.s muß 6b0 und nicht 630 sein sonst landen die Prüfsummen auf 3f70...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
098
12.08.2009, 14:15 Uhr
Olli

Avatar von Olli

Hm - kann durchaus sein, das ich es mal testweise rausgehauen hatte.... Hast du noch ne Idee wiso mein time-long da mist enthaellt?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
099
12.08.2009, 14:57 Uhr
lori2



Ob es wirklich der Fehler ist glaube ich nicht, aber besser wäre es alle mal:

Quellcode:
printf("time: %02d%02d%02d%02d\n",(int)(time1/100L),(int)(time1%100L),(int)(time3/100L),(int)(time3%100L));


Dieser Beitrag wurde am 12.08.2009 um 14:58 Uhr von lori2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
100
12.08.2009, 15:04 Uhr
Olli

Avatar von Olli

lori2 - hier wird nicht die standard libc printf funktion verwendet sondern eine abgeruestete Version. Ansonsten haette ich gleich %dl verwendet und mir das ganze dividiren gesparrt
Die time-Ausgabe stimmt schon - lasse ich mir time z.B. gar nicht mittels printf ausgeben, steht auch in dem struct muell - irgendwas mit 1970 usw... wird also oben dann schon falsch gefuellt - lasse ich mir mittels printf time ausgeben kommt es "nur" zu dem Fehler am Ende.... alles sehr suspekt - ich vermute halt das irgendein Pointer falsch ist....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
101
12.08.2009, 15:35 Uhr
lori2



Leider habe ich kein WEGA.


Quellcode:
65482654686455065440

sieht fuer mich nach

Quellcode:
65482 65468 64550 65440

aus.

Bekommt der Compiler dies hin?

Quellcode:
a = inb(t->clock_addr)&~t->clock_det_msk;
if(a == ( (int)(t->clock_det_str) ) )

Gibt der Compiler auch Warnungen?


In outtime hast Du stehen:

Quellcode:
long time2;
time2=time;
clktime = gmtime(&time2);

damit es, wie Du es vorher erwähntest, zuverlaessig laeuft. In settimer aber nicht.

Funktioniert es, wenn eine zusätzliche Funktion das Ausgeben von time übernimmt?

Dieser Beitrag wurde am 12.08.2009 um 16:02 Uhr von lori2 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
102
12.08.2009, 16:17 Uhr
holm

Avatar von holm

Wo gibts denn libb.a ?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
103
12.08.2009, 16:29 Uhr
Olli

Avatar von Olli

libb.a setzt sich zusammen aus
http://cvs.laladev.org/index.html/WEGA/src/uts/conf/bmisc.c?rev=1.1&content-type=text/x-cvsweb-markup
und
http://cvs.laladev.org/index.html/WEGA/src/cmd/standalone/sa.function.s?rev=1.1&content-type=text/x-cvsweb-markup

EDIT: bmisc.c nicht bconf.c
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.08.2009 um 16:47 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
104
12.08.2009, 16:45 Uhr
holm

Avatar von holm

Ok, ich habe das Zeuch indessen gefunden und umständlich eine libb.a gebastelt.
Ich mache gerade 4-5 Sachen zu gleich...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
105
12.08.2009, 17:26 Uhr
holm

Avatar von holm

Wie jetzt:


Quellcode:
Boot
: ud(0,0)sa.timer

RFT U130X RTC found
Date is: 8/12/2009
Time is: 17:24:16 GMT
time: 125097856
year 9
month 8
day 12
hour 17
min 24
sec 16
Enter new Date (MM/DD/YY) : 08/12/09
Enter new Time in GMT (HH:MM) : 15:26
year 109
month 7
day 12
hour 15
min 26
sec 0
time: 125090760
Enter Return to start time :
Date is: 8/12/2009
Time is: 15:26:0 GMT
Exit called



Boot
:

Nach dem Hochfahren:

...
Wed Aug 12 17:29:19 MES 2009
...
Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 12.08.2009 um 17:30 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
106
12.08.2009, 17:36 Uhr
Olli

Avatar von Olli

Hi lori,


Zitat:
lori2 schrieb
Bekommt der Compiler dies hin?

Quellcode:
a = inb(t->clock_addr)&~t->clock_det_msk;
if(a == ( (int)(t->clock_det_str) ) )


Ja das funktioniert. Folgendes uebrigens auch:
if((((int)inb(t->clock_addr))&((int)(~((int)(t->clock_det_msk))))) == ( (int)(t->clock_det_str) ) ) {

Das hier aber schon nicht mehr (na, wer findet den Unterschied? )
if(((int)inb(t->clock_addr))&((int)(~((int)(t->clock_det_msk)))) == ( (int)(t->clock_det_str) ) ) {

Mal sehn wie weit man das noch minimieren kann.....


Zitat:
lori2 schrieb
Gibt der Compiler auch Warnungen?

Ja - aber sehr selten



Zitat:
lori2 schrieb
In outtime hast Du stehen:

Quellcode:
long time2;
time2=time;
clktime = gmtime(&time2);

damit es, wie Du es vorher erwähntest, zuverlaessig laeuft. In settimer aber nicht.

Ja, das hatte ich erst probiert - das Ergebniss war aber das gleiche. Dieses time2=time stellt mich generell auch nicht wirklich zufrieden - sieht nach einem dreckigen Workaround fuer ein mir noch unbekanntes Problem aus...


Zitat:
lori2 schrieb
Funktioniert es, wenn eine zusätzliche Funktion das Ausgeben von time übernimmt?

Das war wirklich mein Fehler - ich habe das Jahr bei > 100 nochmal mit 100 subtrahiert was aber an der Stelle falsch war - somit hat die Timestamp Funktion versucht den Timestamp fuer 1909 zu errechnen was ja nicht wirklich geht wie wir alle wissen...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
107
12.08.2009, 17:40 Uhr
Olli

Avatar von Olli


Zitat:
holm schrieb
Wie jetzt:


Quellcode:
Enter new Date (MM/DD/YY) : 08/12/09

Nach dem Hochfahren:

Jo - einfach hier mal kein Datum eingeben - dann sollte er das alte Datum nehmen (es soll quasi nur die Uhrzeit korrigiert werden) - und dann das ganze beobachten

Aber ich habe den Fehler ja inzw.gefunden.... neue sa.timer.c ist hochgeladen....

http://cvs.laladev.org/index.html/WEGA/src/cmd/standalone/sa.timer/sa.timer.c.diff?r1=1.6&r2=1.7&f=h
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
108
12.08.2009, 17:45 Uhr
holm

Avatar von holm

Nichts desto trotz habe ich die Version 1.6 compiliert..

Muß das so sein, das das ding einen off by one Glitch mit dem Monat hat?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
109
12.08.2009, 17:45 Uhr
Olli

Avatar von Olli

Zu frueh gefreut bzgl a == b Vergleich - ich gehe wohl doch erstmal wieder auf den a == b Vergleich zurueck.... mit der Mega-Cast-Version die ich ja nun am Start habe, habe ich komische unberechenbare Fehler...


Quellcode:
: md(0,16000)sa.timer2

RFT U130X RTC found
Date is: 12/10/2009
Time is: 15:40:56 GMT
Enter new Date (MM/DD/YY) :
Enter new Time in GMT (HH:MM) : 15:42
Enter new Time in GMT (HH:MM) : 15:21
Enter new Time in GMT (HH:MM) : 15:42
Enter new Time in GMT (HH:MM) : <Leereingabe um den Mist abzubrechen>
Date is: 12/10/2009
Time is: 15:42:1 GMT
Exit called



Boot
: md(0,16000)sa.timer2

RFT U130X RTC found
Date is: 12/10/2009
Time is: 15:42:8 GMT
Enter new Date (MM/DD/YY) :
Enter new Time in GMT (HH:MM) : 15:43
<nichts passiert mehr, Uhr wird auch nicht gestellt>

Gott lass n guten C-Compiler regnen!

EDIT:

wieder mit a == b Vergleich (1.8er Version) geht wieder alles:


Quellcode:
: md(0,16000)sa.timer2

RFT U130X RTC found
Date is: 12/10/2009
Time is: 15:50:24 GMT
Enter new Date (MM/DD/YY) :
Enter new Time in GMT (HH:MM) : 15:51
Enter Return to start time :
Date is: 12/10/2009
Time is: 15:51:1 GMT
Exit called


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.08.2009 um 17:51 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
110
12.08.2009, 17:47 Uhr
Olli

Avatar von Olli


Zitat:
holm schrieb
Nichts desto trotz habe ich die Version 1.6 compiliert..

Muß das so sein, das das ding einen off by one Glitch mit dem Monat hat?

Gruß,

Holm

Ja die 1.6er geht ja auch wenn du beim Datum auch ein Datum eingibst - gibst du keins ein, geht sie eben nicht
Monat beginnt bei 0 zu zaehlen..... Frag mich nich wiso nur dort, is aber komischerweise so... aus man gmtime


Quellcode:
int tm_mon;     /* month of year (0 - 11) */


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
111
12.08.2009, 17:56 Uhr
holm

Avatar von holm

Naja, das Teil hat es halt 2 mal unterschiedlich angezeigt, /siehe oben) deswegen fragte ich. Ein Monat 7 hätte mich nicht wirklich gestört.

Dein Cast Anfall sah aus wie Lisp :-)

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
112
12.08.2009, 18:07 Uhr
Olli

Avatar von Olli


Zitat:
holm schrieb
Naja, das Teil hat es halt 2 mal unterschiedlich angezeigt, /siehe oben) deswegen fragte ich. Ein Monat 7 hätte mich nicht wirklich gestört.

Jo, das weil ich ich in settimer() am Anfang vom Jahr den Wert 100 abzog und zum Monat eins dazuaddierte - was falsch war 109 und 7 ist richtig, 9 und 8 sind falsch
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.08.2009 um 18:08 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
113
12.08.2009, 19:17 Uhr
Olli

Avatar von Olli

Hier mal eine Gegenueberstellung des ASM Zeugs.

1. Hier macht das Programm Zicken

Quellcode:
//              a = inb(t->clock_addr)&~t->clock_det_msk;
        .line   54      "sa.timer.c"
        ld      r7,~L1(fp)
        ld      r6,@r7
        ld      r7,r6
        callr   _inb
        ld      r3,~L1(fp)
        ld      r4,2(r3)
        com     r4
        and     r2,r4
        ld      ~L1+2(fp),r2
//              if(a == ( (int)(t->clock_det_str) )) {
        .line   55      "sa.timer.c"
        ld      r3,~L1(fp)
        ld      r2,~L1+2(fp)
        cp      r2,4(r3)
        jpr     ne,L30

2. das alt bewaehrte mit a und b als Zwischenvarianten

Quellcode:
//              a = inb(t->clock_addr)&~t->clock_det_msk;
        .line   54      "sa.timer.c"
        ld      r7,~L1(fp)
        ld      r6,@r7
        ld      r7,r6
        callr   _inb
        ld      r3,~L1(fp)
        ld      r4,2(r3)
        com     r4
        and     r2,r4
        ld      ~L1+2(fp),r2
//              b = t->clock_det_str;
        .line   55      "sa.timer.c"
        ld      r3,~L1(fp)
        ld      r2,4(r3)
        ld      ~L1+4(fp),r2
//              if(a == b) {
        .line   56      "sa.timer.c"
        ld      r4,~L1+2(fp)
        cp      r4,~L1+4(fp)
        jpr     ne,L30

Wenn ich das richtig sehe, macht er im Grunde auch nix anderes....

1. Code Schnipsel.
- in ~L1(fp) steht "t"
- in ~L1+2(fp) steht "a"
- zum Vergleich laedt er dann nach r3 "t" und nach r2 "a". Danach vergleicht er r2 mit dem 4. Byte(?) von "t".

2. Code Schnipsel
- in ~L1(fp) steht "t"
- in ~L1+2(fp) steht "a"
- in ~L1+4(fp) steht "b" wobei b gefuellt wird, indem nach r3 wieder "t" geladen wird, dann nach r2 das 4. Byte(?) von "t". Und das dann nach ~L1+4(fp)
- Zum Vergleich werden einfach die beiden Stacks verglichen.

Sehe jetzt vom Ergebniss erstmal keinen Unterschied?
Der eigentliche Vergleich scheint auch zu funktionieren....

Ich glaube ja bald, das einfach in irgend einem Register noch Mist drinn steht was in der einen Version nix bewirkt, in der anderen aber schon... vielleicht sollte ich mal alle meine "register" Variablen auf den Stack packen....

EDIT: solange ich b befuelle, kann ich auch a mit t->clock_det_str Vergleichen - also b unbenutzt lassen - loesche ich die b Zuweisung haengt er sich beim Uhr-Stellen wieder auf... schon witzig... evtl. mal n paar hunder printf's einbauen wo er genau stehen bleibt.... ich vermute immer doller irgendwelche Register-Weiterverwendungen die dann mist enthalten in der einen Konstallation.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.08.2009 um 19:40 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
114
12.08.2009, 20:21 Uhr
Olli

Avatar von Olli

http://cvs.laladev.org/index.html/WEGA/src/cmd/standalone/sa.function.s?rev=1.1&content-type=text/x-cvsweb-markup


Quellcode:
_printf procedure
      entry
    ex    r2, @r15
    push    @r15, r3
    push    @r15, r4
    push    @r15, r5
    push    @r15, r6
    ld    r6, r15
    push    @r15, r2
    call    _printfv
    ld    r2, @r15
    inc    r15, #12
    jp    @r2
    end _printf


Kann es sein, das mir das PUSH des printf da irgendwas in meinen Registern verhunzt?

z.B. - was auch immer vorher in r6 stand - danach habe ich doch in r6 meinen Stack-Pointer - oder?
Oder - was ist wenn ich nur 2 Parameter an printf uebergabe - was steht dann in den ganzen anderen Registern?

So ganz passt das was dort passiert nicht zu meiner Erklaerung von PUSH in meinem ASM Buch...

Das eigentliche "Aufhaengen" passiert naemlich in der getdat() Funktion. Baue ich da printf's mit ein zum debuggen laeufts wieder... reduziere ich sie laeufts wieder nicht, oder ich bekomme Schrott (nicht-ASCII7-Zeichen) auf meinem Bildschirm durch die printf's ausgegeben....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 12.08.2009 um 20:26 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
115
12.08.2009, 21:04 Uhr
Olli

Avatar von Olli

Ich dachte ich haette den Fehler jetzt - ich hatte in settimer() eine "register i" Variable deklariert welche aber gar nicht verwendet wurde. Scheinbar kam der Compiler da mit seinen zur Verfuegung stehenden Registern durcheinander - was weiss ich.
Nun haengt sich der Spass auch nicht mehr auf - aber was haben wir jetzt? Genau, nun wird Schrott in die Uhr programmiert.... ich weiss nicht was man da noch sagen soll...


Quellcode:
RFT U130X RTC found
Date is: 8/12/2009
Time is: 0:2:53 GMT
Enter new Date (MM/DD/YY) :
Enter new Time in GMT (HH:MM) : 18:58
Enter Return to start time :
Date is: 8/12/2009
Time is: 0:0:1 GMT
Exit called

Ich wette, wenn ich mir nun wieder irgendwo die Uhrzeit ausgeben lasse welche ich eingegeben habe wird wieder alles funktionieren... langsam zum k***
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
116
15.08.2009, 12:48 Uhr
Olli

Avatar von Olli

So - nun habe ich alles zusammengeloetet... und irgendwie geht nix

Ich habe ein paar LEDs aufgeloetet zum debuggen.....
Wenn ich 0xfde1 auslese, kommt aus D2-Pin2 High, D3-Pin2-5 liegen auch auf High, D3-Pin1 habe ich wie D3-Pin11+12 auf 5V gesetzt. Aus D3-Pin-8 kommt aber zu keinem Zeitpunkt Low! ich habe da eine LED drann - die ist immer an. Ich habe auch Pin8 nochmal an einen 7404 angeschlossen und dort noch ne LED drann... die ist immer aus....

Ich habe B/W- jetzt noch nicht angeschlossen - deswegen Pin 1 des '30 auf 5V... irgendwie peil ichs nicht. Ich habe es mit nem LS und nem HCT versucht.... ohne Erfolg....

http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/Stromlaufplan_ng.pdf

Ich bekomme immer E1 ausgelesen - auch wenn die Uhr gar nicht steckt.....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 12:54 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
117
15.08.2009, 13:13 Uhr
Enrico
Default Group and Edit


Wenn alle Eingänge von D3 H haben, kommt auch L raus.
Um das anhand der LED zu sehen, müsstest Du schon ständig drauf
zugreifen. Nimm doch das Oszi.

UNd wenn Du den Bustreiber rausziehst, kommt dann FFh?
--
MFG
Enrico

Dieser Beitrag wurde am 15.08.2009 um 13:20 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
118
15.08.2009, 13:32 Uhr
Olli

Avatar von Olli

Ich greife in ner Endlosschleife drauf zu - also so schnell hintereinander wie nur irgend moeglich.... Die Eingangs-LEDs (A0,A5,A6,A7,Comperator-negiert) sind quasi dauerhaft an. A0 leuchtet etwas schwacher.
Ganz ohne Uhr kommt auch E1 - glaube also nicht, das ohne Bustreiber FF kommen sollte.....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 13:33 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
119
15.08.2009, 13:38 Uhr
Enrico
Default Group and Edit


Mach mal am Ausgang vom D1 einen Pullup-R rein.
Mit IO- schaltest Du ja den Ausgang von dem hochohmig.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
120
15.08.2009, 14:28 Uhr
Olli

Avatar von Olli

hm - aber auf der Originaluhr ist doch auch kein Pullup-R? Und am Negator Liegt doch High an beim Zugriff?
http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/Stromlaufplan.pdf

Ich kann ja mal nach und nach an dem '30 die Eingaenge mit +5V verbinden... mal sehn wann er reagiert....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
121
15.08.2009, 17:15 Uhr
Olli

Avatar von Olli

Nujo... mit einer Adressleitung drann sieht man den Low-Pegel des '30-Ausgangs... mit der 2. schon nicht mehr. Werde ich das Teil wohl doch mal in Keller schleppen zum Oszi....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
122
15.08.2009, 18:13 Uhr
Olli

Avatar von Olli

Also - laut Oszi is /CS wie ich schon mittels LED-Anzeige meinte ununterbrochen High.... das kann ja eigentlich nur bedeuten, dass die Adressdekodierung nich stimmt.
Das meine Adress-LEDs blinken is logisch... der macht ja auf dem Adressbus eh rum wie doof - allein schon fuer die seriellen Schnitties fuer meine Ausgabe, oder auch im RAM.... aber genau meine eine Adresse wird wohl scheinbar nicht richtig anliegen.... frage mich ob ich nun Mist geloetet habe, oder die Dekodierung grundsaetzlich faul ist....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
123
15.08.2009, 18:21 Uhr
Olli

Avatar von Olli

hehe - den Vergleichspin fuer A9 habe ich nicht an Masse angeloetet sondernan den gegenueber liegenden Pin.... immer diese spiegelverkehrten Geschichten

EDIT - aber nun is mein 688 ganz still.... grrrr
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 18:30 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
124
15.08.2009, 18:37 Uhr
Enrico
Default Group and Edit


D.h. vom Prinzip her ist er jetzt schon richtig besxchlatet?
Was ist mit IO und A1?

Läuft das Prog auch im Systemmodus?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
125
15.08.2009, 18:45 Uhr
Olli

Avatar von Olli

Nun ists richtig verdrahtet...

Prog laeuft "natuerlich" im Systemmodus... seid Ihr euch Sicher, das der Enable-Input des DL8121 Low-Active ist genauso wie der 74688? Ansonsten haue ich I/O- einfach nochmal durch einen Negator und schaue was dann dabei rauskommt.
Habe nochmal den Plan mit der aktuellen Beschaltung aktualisiert (Widerstandsnetzwerke etwas anders) - aber nix grundlegendes

http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/Stromlaufplan.pdf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 18:45 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
126
15.08.2009, 18:49 Uhr
Enrico
Default Group and Edit


Sagt das DDR Buch jedenfalls. Du kannst es aber mal asuprobieren.

Oder einfach alles festverdrahten, wie es sein muss, und dann mal ohne Rechner probieren.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
127
15.08.2009, 18:49 Uhr
Olli

Avatar von Olli

Und - A1 haengt ja nur an der Uhr.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
128
15.08.2009, 19:00 Uhr
Olli

Avatar von Olli

So... mit Negator bringts auch nicht... ich werde nun mal n Stecker so verdrahten wie es sein sollte... kann ich die Ein-/Ausgaenge einfach fest auf +5V und/oder GND schalten oder muss ich da noch irgendwas an Widerstaenden mit ranbasteln?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
129
15.08.2009, 19:15 Uhr
Enrico
Default Group and Edit


Wenn schon, nur die Eingänge
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
130
15.08.2009, 19:19 Uhr
Olli

Avatar von Olli

Logo nur die Eingaenge
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 19:22 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
131
15.08.2009, 19:26 Uhr
Olli

Avatar von Olli

Also - wenn allles so anliegt wie geplant:

A9 = Low
I/O- = Low
A0-A15 = High (A1-A4 egal, A9 natuerlich Low)

Dann bekomme ich mein /CS.... fragt sich also nun - was laeuft bei der P8000 anders wenn ich FDE1 abfrage....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
132
15.08.2009, 19:43 Uhr
Olli

Avatar von Olli

So... geht nun - ich nehme mal an, die /CS Flanke war einfach zu schnell fuers Oszi. Ich habe meinen Logikpruefer an das /CS Signal angeloetet und die 2 LEDs welche mir den Pegelwechsel signalisierten leuchten nun beide "immer".... klappt also.

Beim auslesen der Adresse bekomme ich nun 3F zurueckgelesen...
Passt also - D6+D7 hatte ich ja auf low gezogen

War also echt nur der eine Loetfehler mit dem A9-Vergleichspin der nicht auf Masse lag....



nun gehts ans Treiber schreiben... Der wieder etwas leichtere Teil hehe

EDIT: und nun muss ich erstmal rausfinden wiso die Kommunikation mit der RTC nicht funktioniert.... eigentlich sollte ich sie nun korrekt initialisiert haben, n Datum gestellt und "GO" - aber immer nur noch 3F 3F 3F.... mal schaun....

EDIT2: nun bin ich schonmal soweit, das sie mir immer mit 31 antwortet wenn ich die Sekunden abfrage Weiss zwar noch nich so genau, wiso er sich nicht stellen lassen mag, aber das bekomme ich auch noch raus
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 21:36 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
133
15.08.2009, 22:45 Uhr
Olli

Avatar von Olli

gestellt bekomme ich sie schonmal... nur loslaufen will sie noch nicht


Quellcode:
: md(0,16000)sa.test

01.01.00 -  01:00:01  (D:6 / E: 0 /F: 0)
01.01.00 -  01:00:01  (D:6 / E: 0 /F: 7)
12.04.89 -  15:43:21  (D:6 / E: 0 /F: 7)
12.04.89 -  15:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  15:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  15:43:21  (D:6 / E: 0 /F: 4)

Sekunden steigen nicht... naja, muss ich wohl noch was probieren... laut Doku muesste es eigentlich funzen mit dem loslaufen.... nich das noch irgend ne Schaltungsproblematik die Uhr am losrennen hindert.... *kopfkratz*
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 15.08.2009 um 22:46 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
134
15.08.2009, 23:41 Uhr
Enrico
Default Group and Edit


Lt Datenblatt würde ich mal sagen, da gibt es ein Bit, mit der man der Uhr sagt, dass sie ab Jetzt loslaufen soll.
Rüberkopieren gng leider nicht.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
135
16.08.2009, 07:34 Uhr
Olli

Avatar von Olli

genau - das sind das STOP und RESET bit im Register F was ich erst zum stellen setze (F=7 - 24_12|STOP|RESET) und dann wieder wegnehme zum loslaufen (F=4 - 24_12).... hilft aber nix
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
136
16.08.2009, 09:16 Uhr
Olli

Avatar von Olli

Nu laeuft alles - ich hatte 2VD1 falschrum eingeloetet... das bemerkte ich aber erst als ich 1VD1 einloetete und keine Batteriespannung an der Uhr ankam


Quellcode:
04.10.72 -  21:07:10  (D:2 / E: F /F: 6)
04.10.72 -  21:07:10  (D:2 / E: 0 /F: 7)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 7)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:21  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:22  (D:2 / E: 0 /F: 4)
12.04.89 -  05:43:23  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:23  (D:6 / E: 0 /F: 4)
12.04.89 -  05:43:23  (D:6 / E: 0 /F: 4)


--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
137
16.08.2009, 09:48 Uhr
holm

Avatar von holm

Nur mal Kommentar für "zu schnell für das Oszi":

Mit Sicherheit nicht.
Die CPU Taktfrequenz liegt bei 4 Mhz, das Oszi geht bis 50Mhz..
Nach meinen Erfahrungen mit der CTC mußt Du ca. 600µs lange
L singale sehen, die Frage ist nur, ob das Oszi triggert. Dazu würde ich vorschlagen
den automatikmodus der Ablenkung auszuschalten, also nur dann die Zeitablenkung zu triggern wenn auch ein /CS kommt. dann hast Du bei periodische Abfrage eine Chance da was zu sehen.
Für einzelne Vorgänge bräuchtest Du ein (digital-) Speicheroszi um den einmaligen Vorgang abzubilden.

Ich kann mich erinnern, das ich auch eine Weile gedallt hatte als ich mal diese RTC eingesetzt habe. Kann mich auch noch erinnern das anfangs das lesen der Uhr die Zeit verstellte. Schaue Dir doch mal den Code zur GIDE an, ist doch entweder Z80 Assembler oder Pascal..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

Dieser Beitrag wurde am 16.08.2009 um 09:49 Uhr von holm editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
138
16.08.2009, 10:34 Uhr
Olli

Avatar von Olli

Jo... habe verschiedenste Sourcen hier... die einen machen es mit Busy-Bit - die anderen ohne... dann hab ich hier was in C++ welches mit dem Busy bit in Reg-F rummacht (totaler Humbug)... aber wird so langsam....

laaangsam


Quellcode:
Seiko Epson RTC-72421 found
Date is: 2/11/1988
Time is: 0:55:33 GMT
Enter new Date (MM/DD/YY) : 01/01/01
Enter new Time in GMT (HH:MM) : 01:01
Enter Return to start time :
Date is: 1/31/2000
Time is: 0:0:0 GMT
Exit called

ganz langsam hehe
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.08.2009 um 10:36 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
139
16.08.2009, 10:45 Uhr
Olli

Avatar von Olli

so... klappt nun alles wunderhuebsch


Quellcode:
: md(0,16000)sa.timer2

Seiko Epson RTC-72421 found
Date is: 1/1/2001
Time is: 1:7:40 GMT
Enter new Date (MM/DD/YY) : 08/16/09
Enter new Time in GMT (HH:MM) : 08:43
Enter Return to start time :
Date is: 8/16/2009
Time is: 8:43:0 GMT
Exit called



Boot
: md(0,16000)sa.timer2

Seiko Epson RTC-72421 found
Date is: 8/16/2009
Time is: 8:43:15 GMT
Enter new Date (MM/DD/YY) :
Enter new Time in GMT (HH:MM) :
Date is: 8/16/2009
Time is: 8:43:20 GMT
Exit called

Nun noch das Kernel Modul... aber das wird ja leicht - is ja nur n Abklatsch
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.08.2009 um 10:45 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
140
16.08.2009, 11:10 Uhr
Olli

Avatar von Olli

erwaehnte ich schonmal, das der C-compiler nervt?

sld -Ns -o wega -e start -X -i -Ms62 wpar.o event.o mch.o u.o ver.o fpe.o conf.o ../sys/LIB1 ../dev/LIB2
sld: ../sys/LIB1(rtc72421.o): Warning - only 8 characters of name are significant
_rtc7242 sld: ../sys/LIB1(rtc72421.o): - warning: symbol redefined in archive
_rtc7242 sld: ../sys/LIB1(rtc72421.o): - warning: symbol redefined in archive
_rtc7242 sld: ../sys/LIB1(rtc72421.o): - warning: symbol redefined in archive
_rtc7242 sld: ../sys/LIB1(rtc72421.o): - warning: symbol redefined in archive


benenne ich meine Funktionen halt kuerzer...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
141
16.08.2009, 11:43 Uhr
holm

Avatar von holm

Ist das eigentlich der Compiler selber oder der cpp der da nervt?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
142
16.08.2009, 11:46 Uhr
Olli

Avatar von Olli

Der Linker (sld) in dem Fall nervt...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
143
16.08.2009, 12:02 Uhr
holm

Avatar von holm

Ja klar, werl lesen kann ist klar im Vorteil.
Es währe höchstens noch zu untersuchen ob der CPP, der Compiler oder des Assembler die symbole einkürzt oder ob es der Linker selbst ist.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
144
16.08.2009, 12:11 Uhr
Olli

Avatar von Olli

Jo... bin hier gerade wieder mit mysterioesen Dingen beschaeftigt...
Nun gehts naemlich auf in den Kernel...
Die Function Pointer werden nicht mehr aufgerufen...
Das auslesen der Uhr liefert schrott wenn man direkt in n Struct schreibt
faengt wieder gut an - was in sa.timer geht, muss im kernel nicht gehen
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.08.2009 um 12:11 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
145
16.08.2009, 12:53 Uhr
Olli

Avatar von Olli


Quellcode:
swap space              = offset 13000, 3000 blocks
file system /           = offset 16000, 7000 blocks
file system /tmp        = offset 23000, 4000 blocks
file system /z          = offset 27000, 146376 blocks
-------------------------------------------------------------------------------
                                                                              
1
2
r421get
year 109
month 7
day 16
hour 10
min 52
sec 19
3    

STATE @3E00FD14 eventid=F33A, fcw=D88A, pcseg=8000, pcoff=D850
r0:8000 r1:D898 r2:2102 r3:E03 r4:300 r5:D7F6 r6:0 r7:2      
r8:300 r9:D7F6 r10:2102 r11:DE9 r12:0 r13:E26 r14:0 r15:FF00
System sp= 3E00FCF6                                          
Last VI serviced: clock
Pending VIs:          
Scheduler- st: 1 fl: 3 wchan: FE3A
Non-Segmented programm, Real user id= 0
Proc ptr: 300DF7C  Break addr: 38  tsize: 0  dsize: 0
Code seg  base:0 size:0 attr:14                      
Data seg  base:2C0 size:37 attr:0
Stack seg base:2F8 size:0 attr:14
Trap Code-MMU PC: D84E, Vaddr: 21000E03, Vtyp/BCS: 1C18
panic: Kernel seg. violation                          

sieht irgendwie lustig aus....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.08.2009 um 12:53 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
146
16.08.2009, 14:12 Uhr
Olli

Avatar von Olli

Mit der Quick&Dirty Version laeuft der Kernel mit beiden Uhren erfolgreich.... stellt mich nur ueberhaupt nicht zufrieden - totale Code-Duplizierung - und auch keine Moeglichkeit zum Uhrstellen was ich ja mal spaeter bauen wollte....

http://cvs.laladev.org/index.html/P8000/WEGA/src/cmd/standalone/sa.timer/timer.c?rev=1.2&content-type=text/x-cvsweb-markup

Sobald man da irgendwie modularisiert laeuft nix mehr.... hatte schon gedacht den Struct evtl. mit malloc() zu reservieren... dann bootet die Kiste zwar aber ein "date" liefert dann ne segmentation violation usw... schon doof das alles
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
147
16.08.2009, 16:55 Uhr
Olli

Avatar von Olli

So leicht gebe ich ja nicht auf
ich habe jetzt meine gmtime() neu gemacht - sie bekommt nun kein struct mehr als argument, sondern das Datum und die Uhrzeit als einzelne Integer.... nun laeuft es auch im kernel wundschoen modular... Nur function pointer mag er nach wie vor nicht - aber damit kann ich im Kernel erstmal leben.
Fragt sich nur warum er struct als Parameter nicht mag... muss doch woanders auch schon im Einsatz sein. Naja - da forsche ich noch weiter.... noch gebe ich mich nicht geschlagen

http://cvs.laladev.org/index.html/P8000/WEGA/src/cmd/standalone/sa.timer/timer.c?rev=1.4&content-type=text/x-cvsweb-markup

Aber mal was anderes - nun wo alles im Grunde steht - wie solls nun weitergehen? Ich kann eine Platine zeichnen - aber lohnt das mit den 6 Bausteinen? Wird ja nicht mehr als n Stecker mit nen fitzelchen Leiterplatte drann....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.08.2009 um 17:00 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
148
16.08.2009, 18:55 Uhr
holm

Avatar von holm

Wir sollten drüber nachdenken, was man sonst noch so brauchen könnte...eine Parallele Schnitte? Centronics?

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
149
16.08.2009, 19:08 Uhr
Tom Nachdenk



Na das musste doch selber wissen was _Du_ willst und wie schnell Du Deiner erste eigene Platine in den Händen halten willst. Sonst gehts Dir so wie Kasi .
Aber mal so ein paar Ideen: Den Rest banal mit Lötaugen zum selber tüdeln füllen, Holm sucht nämlich in den P8000 passende Prototypenleiterkarten. Noch einen 2. 16er Adressblock mit bidirektionalen Datenbustreibern vorsehen und die auf einen Stecker führen der zufällig das Layout eines IDE-Steckers hat. 1,2 oder 3 PIO,CIO,8255, CTC dekodieren und den Rest auf Pfostenstecker führen. Wahlweise gepufferte 'Busanschlüsse um die Chips nach eigener Wahl vorzusehen.
Letzteres ist aber heikel weil entweder jeder seinen eigenen Kernel je nach eigener Bestückung realisieren müsste oder für jeden Baustein separate Adressbereiche definiert werden müssten und der Kernel dann nur testet und durchzählt. Allerdings ist der Kernel wohl in seiner Größe begrenzt ...
Zwei weitere Ideen wären noch falls jemanden ein passender Typ einfällt ein Microcontroller mit Hostport Interface oder ein Dualportram mit Z80/Z8 oder was auch immer auf der 'anderen Seite'
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
150
16.08.2009, 20:34 Uhr
Rainer



und wenn ich irgendwie brauchbare Daten aus deiner Platine erhalte könnte ich sogar den Prototypen fräsen... Sonst müsste ich sie hier selbst neu erstellen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
151
16.08.2009, 20:40 Uhr
Olli

Avatar von Olli

@Tom - naja - Lochraster habe ich ja nu schon

@Holm - und dann? Drucker anschliessen?
Problem mit den Schnittstellen ist ja immer - wie bekommt man die am sinnvollsten aus der P8000 hinaus....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
152
16.08.2009, 20:49 Uhr
Enrico
Default Group and Edit


Da gibts ja viele Möglichkeiten und Ideen.

Wirklich nur die RTC auf einer Platine machen, irgendwas anderses noch mit drauf.

Es jeden selber auf Lochraster häckeln lassen, und wenn es mal soweit ist, zusammen mit SCSI auf eine Platine drauf.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
153
16.08.2009, 20:59 Uhr
Olli

Avatar von Olli

naja, ich mach mal n Miniaturlayout - auf so wenig Platz wie moeglich quasi - kann sich dann ja jeder ueberlegen ob man dann da was machen laesst oder nicht - wird quasi ein Stecker mit Uhr
Wenn dann mal das SCSI-Board rauskommt, kann man die ja dort mit uebernehmen.

Hier mal Bildchen:

http://pics.pofo.de/gallery/v/P8000/P8000_boards/P8000_clock/DiY/P1070897.JPG.html
http://pics.pofo.de/gallery/v/P8000/P8000_boards/P8000_clock/DiY/P1070898.JPG.html

Batterien sind noch etwas provisorisch - habe keinen Halter und keine 3V Knopfzelle
Die Debugging-LEDs und Widerstaende sind wieder runter.... dank Hartpapier ist dabei die Rueckseite etwas ramponiert

Das geht noch etwas optimierter und dichter beisammen alles
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 16.08.2009 um 21:02 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
154
17.08.2009, 00:33 Uhr
Enrico
Default Group and Edit


Das ist wirklich nicht viel.

Platine extra klein machen, wäre aber auch nicht gut.
Die machanische Führung sollte schon sein.

Also doch RTC und SCSI zusammen, oder irgendwie anders?
Aus Platzgründen wäre es ja schon besser.

Netzwerk oder 286iger sollen ja vielleicht auch mal werden.
--
MFG
Enrico

Dieser Beitrag wurde am 17.08.2009 um 00:35 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
155
17.08.2009, 06:25 Uhr
Olli

Avatar von Olli

Naja, aber ne grosse Karte mit 6 Bauteilen drauf waere auch Verschwendung... weiss auch nicht ob sich das nicht auf geldlich bemerkbar macht... mein Stecker steckt eigentlich ganz gut
286er waere schoen... aber da muesste mal jemand (paulotto?) n Plan machen oder mir die Karten ausleihen
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
156
17.08.2009, 08:09 Uhr
Rainer



ich glaube der 286er ist da schon mächtig kompliziert, da sind wohl auch Bauteile drauf die man so nicht mehr erhält. Ist also mit der Uhr nicht zu vergleichen. Das Festplattenproblem sehe ich da als wichtiger und dringender an. Also erst mal die Uhr routen und schauen was dabei an Platz rauskommt. Und die kann man dann ja später vielleicht mit auf ein anderes Projekt mit übernehmen, oder auch nicht. Ich bin da mehr für kleine Schritte, und die Uhr ist erst mal fertig gedacht. Durch die Ram-Karte spart man ja auch schon Platz und das SCSI-Interface ist ja auch erst mal nur ein Gedanke. Wenn dann zu viele Projekte auf einer Platine landen gibt es ganz schnell das Problem bei 4 oder 6 Lagen zu sein, das will doch dann niemand mehr bezahlen. Und so klein wie auf Lochraster wirst du das auf einer Platine nicht bekommen, denn die Drähtchen die du da übereinander legst müssen dann ja nebeneinander... Also, erst mal das fertig erprobte bauen ist besser als zu warten und zum Schluß nichts zu haben. Selbst so eine Lochrasterfreifläche, ich war erst begeistert von der Idee, habe die mir dann aber selbst wieder mies gemacht. Das liegt aber daran das ich absoluter Lochrastergegner bin, mir gefällt das zwar immer wenn ich eure sauber gehäkelten Projekte sehe, bei mir sah das immer aus wie Sau, so schlimm das es mir selbst nicht gefallen hat. Aber wer will denn sich eine sauber auf Platine gebaute Uhr mit Übungen auf Lochrasterfreifläche versauen? Zum spielen kann man dann ja wirklich ein Stück Lochraster nehmen, auf ein endgültiges Projekt gehört kein Lochrasterdrahtverhau!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
157
17.08.2009, 08:48 Uhr
Olli

Avatar von Olli

Jo... 286er ist natuerlich weit komplexer als die schnoede Uhr. Einige der nicht mehr beschaffbaren Bauteile haben Enrico und ich uns schon gesichert - was halt so auf Fotos von dem Ding erkennbar war...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
158
17.08.2009, 09:41 Uhr
holm

Avatar von holm

...und liegt bei Anderen noch im Ramsch :-)
Ihr meint wohl hauptsächlich den Memory Controller, so ein Ding habe ich noch.
Ich weiß noch nicht ob ich auch eine 286er CPU im LCC Gehäuse habe..
Ich wollte mal die eventuell existierenden (oder auch nicht) Differenzen der Anschlußbelegung der Fassungen ermitteln, habe ich aber noch nicht gemacht.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
159
17.08.2009, 11:47 Uhr
Olli

Avatar von Olli

Naja - es gab irgend ne Fassung in der man die 286er leichter bekommt - weiss ich nicht mehr genau - ich weiss nur, das Enrico und ich damals beide bestellt hatten... und dann sind da auch noch intel Schaltkreise im DIP Format verbaut....

Ich route jetzt noch ne Platine fuer die Uhr, mache eine ordentliche Installationsfloppy fuer die Kernel Module und den neuen sa.timer und dann haette ich Zeit - Wenn mir also jemand die Platinen leiht, wuerde ich den Plan aufnehmen. Faellt mir aber nur paulotto ein der die hat

Aber zum 286er kann man ja auch nochmal n extra Thread aufmachen
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 17.08.2009 um 11:47 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
160
17.08.2009, 11:52 Uhr
holm

Avatar von holm

in PLCC gab es den 286er Massenweise.
die anderen ICs sind sciherlich bei Demotronic zu finden..

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
161
17.08.2009, 17:37 Uhr
Enrico
Default Group and Edit


Ja, PLCC und PGA gibts wesentlich häufiger.
Ich hatte aber auch nur die 286iger als Bsp. eingebracht, was da eben noch so alles im Rechner fehlt. Man muss ja den Platz vorher schon mal einplanen.
Es gibt es ja nur 5 Steckplätze.

286iger ist ja ein ganz andres Preblem. Wenn man irgendwann erstmal den Plan hat, kann man sich mal Gedanken über einen Probe-Nachbau mit org ICs machen. Dann, wenn machbar, die Controller in einen CPLD stecken.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
162
18.08.2009, 19:40 Uhr
Olli

Avatar von Olli

Hier mal mein erster Wurf:

http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/P8000_Uhr_ng.png

Habe versucht so viel wie moeglich auf der Leiterseite zu bleiben - bei den Versorgungsleitungen musste ich dann aber kapitulieren hehe.... evtl. vor den Chip noch ein Via setzen und dann auf der Leiterseite an den Chip rangehen - macht sich besser bei Fassungen oder was meint Ihr?

Edit: die 45° Leiterbahnen sehen im PNG etwas komisch aus - nicht iritieren lassen
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 18.08.2009 um 19:45 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
163
18.08.2009, 22:29 Uhr
Enrico
Default Group and Edit


Das hängt natürlich davon ab, wie die Platinen später hergestellt werden sollen.
Obs beim Platinenbelichter, gefräst, oder von einer prof. Firma gemacht werden soll.

Ein wenig kann man das dann schon noch in die eine oder andere Richtung optimieren. Ein paar Teile fehlen ja noch (bist ja auch noch nicht fertig), sieht aber sonst ziemlich gut aus.


Zitat:
Olli schrieb
evtl. vor den Chip noch ein Via setzen und dann auf der Leiterseite an den Chip rangehen - macht sich besser bei Fassungen oder was meint Ihr?

Das brauchst Du nicht. Bei gedrehten Fassungen kommt man da ganz gut ran. Im Gegenteil, es ist besser möglichst viele einzelne Vias zu vermeiden, das möglichst nur über die Bauteile selber zu machen.
Bei NDK macht es ziemlich viel Arbeit überall ein Stück Draht extra durchzustecken, und zu verlöten.
--
MFG
Enrico

Dieser Beitrag wurde am 18.08.2009 um 22:33 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
164
19.08.2009, 08:35 Uhr
Olli

Avatar von Olli


Zitat:
Enrico schrieb
Das hängt natürlich davon ab, wie die Platinen später hergestellt werden sollen.
Obs beim Platinenbelichter, gefräst, oder von einer prof. Firma gemacht werden soll.

Ein wenig kann man das dann schon noch in die eine oder andere Richtung optimieren. Ein paar Teile fehlen ja noch (bist ja auch noch nicht fertig), sieht aber sonst ziemlich gut aus.

Jo.. Die Dioden und das "Experimentierfeld" fuer den Batteriehalter fehlen noch
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 19.08.2009 um 08:35 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
165
20.08.2009, 19:47 Uhr
Olli

Avatar von Olli

So,

habe nun nochmal Plan und PCB aktualisiert. Ich denke nun sollte der Teil fertig sein - es sei denn es findet jemand einen Fehler auf dem Board

http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/P8000_Uhr_ng.pdf
http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/Stromlaufplan_ng.pdf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
166
21.08.2009, 19:58 Uhr
Olli

Avatar von Olli

neue Verzeichnisstruktur - leider darf ich nicht mehr editieren...
http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/RTC72421/Leiterplatte.pdf
http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/RTC72421/Stromlaufplan.pdf
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 21.08.2009 um 19:59 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
167
21.08.2009, 22:05 Uhr
Olli

Avatar von Olli

Sollte doch als Installation ausreichend sein, oder?


Quellcode:
#16 make
        cd standalone ; make all
        cc -O -I../common -c sa.timer.c
        cc -c -O -I../common ../common/u130.c
        cc -c -O -I../common ../common/rtc72421.c
        cc -c -O -I../common ../common/gmtime.c
        cc -c -O -I../common ../common/timegm.c
        ld -s -o sa.timer sa.timer.o u130.o rtc72421.o gmtime.o timegm.o libb.a
        chmod 400 sa.timer
        cd kernel ; make all
        scc -O -I../common -c timer.c
        scc -c -O -I../common ../common/rtc72421.c
        scc -c -O -I../common ../common/u130.c
        scc -c -O -I../common ../common/gmtime.c
        scc -c -O -I../common ../common/timegm.c
        touch kernel
#17 make instsa
        cd standalone ; make install
A backup of the old sa.timer can be found here: /sa.timer.orig
        sh -c 'if test ! -f /sa.timer.orig ; then \
                cp /sa.timer /sa.timer.orig ; \
        fi'
        cp sa.timer /sa.timer
#22 make instkern
        cd kernel ; make install
I will now include the new objects in the kernel library LIB1.
A backup of the old LIB1 can be found here: /usr/sys/sys/LIB1.orig
        sh -c 'if test ! -f /usr/sys/sys/LIB1.orig ; then \
                cp /usr/sys/sys/LIB1 /usr/sys/sys/LIB1.orig ; \
        fi'
        ar rv /usr/sys/sys/LIB1 timer.o rtc72421.o u130.o gmtime.o timegm.o
r - timer.o
r - rtc72421.o
r - u130.o
r - gmtime.o
r - timegm.o
You should now go and build a new WEGA kernel to get the RTC up and running
#23 cd /usr/sys/conf
#24 make -f make.wega
        chkout  ver.c+
        Version 3.2
        4 lines
        scc  -c ver.c
        sld -Ns -o wega -e start -X -i -Ms62 wpar.o event.o mch.o u.o ver.o fpe.o conf.o ../sys/LIB1 ../dev/LIB2
        rm -f ver.o ver.c
#25 mv wega /wega
#26 chmod 400 /wega
#27 halt

Auf die Floppy kommt dann ne README (wie baue ich standalone, wie kernel), die Sourcen, die Makefiles und libb.a fuer das Standalone Programm.... sollte reichen, oder? Objekte wollte ich jetzt bis auf libb.a nicht ausliefern - kann ja jeder selber compilieren.
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
168
21.08.2009, 22:31 Uhr
Enrico
Default Group and Edit


Keine Ahnung, sagt mir nix.
Die Abblock-Cs hast Du nun doch vergessen?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
169
21.08.2009, 22:45 Uhr
Olli

Avatar von Olli

hm? Die sind doch mit dabei? Jeder IC hat einen bekommen - nur die Uhr nicht. Habe nur keinen Elko auf dem Board... muss ja auch nicht unbedingt. Sieht man auf Seite 8 des PDF schoen - die senkrechten Dinger....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
170
21.08.2009, 23:47 Uhr
Enrico
Default Group and Edit


Da sehe ich nur Widerstände.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
171
22.08.2009, 08:26 Uhr
Olli

Avatar von Olli

http://pofo.de/P8000/notes/plaene/eigene/Echtzeituhr/RTC72421/Leiterplatte.pdf

Auf der Platine sind 2 Widerstaende (horizontal), 2 dioden (vertikal) und 4 Abblockkondensatoren......
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
172
22.08.2009, 09:18 Uhr
holm

Avatar von holm

...haste fein gemacht!

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
173
22.08.2009, 14:09 Uhr
Enrico
Default Group and Edit


Ach so. Auf Seite 8 Habe ich nur Widerstände gesehen. Auf Seite 10 sieht man ja, dass die an Plus und Masse gehen.

Wie willst Du nun weiter machen?
--
MFG
Enrico

Dieser Beitrag wurde am 22.08.2009 um 14:09 Uhr von Enrico editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
174
22.08.2009, 14:33 Uhr
Olli

Avatar von Olli

- Ich erstelle eine Installationsfloppy und packe ein Image online
- Ich werde mir eine Platine beim Platinenbelichter machen lassen um zu testen das alles laeuft.

Danach kann man ja mal ueberlegen ob da fuer mehr Leute bedarf besteht, oder die 3...4.. Leute lieber die 6 ICs faedeln wollen - oder man bis irgendwann wartet wo die Uhr dann mit integriert wird...
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
175
22.08.2009, 18:44 Uhr
Olli

Avatar von Olli

Wie soll ich die Floppy machen... WEGA Filesystem zum mounten oder TAR?

EDIT: ich mache einfach Beides....
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 22.08.2009 um 18:52 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
176
22.08.2009, 19:41 Uhr
Olli

Avatar von Olli

So... hier gibts jetzt die Quellen um seinem Kernel RTC-72421 Support beizubringen und auch ein standalone-Programm. Die Originaluhr wird weiterhin unterstuetzt (Welche Uhr gefunden wurde, wird beim Boot und beim Aufruf von sa.timer ausgegeben).

http://pofo.de/P8000/misc/releases/

Irgendwann release ich dann mal eine Version welche die Originaluhr auch ueber das Jahr 2019 laufen laesst, und irgendwann gibts auch eine settime() Funktion inkl. syscall Interface und libc call + date Anpassung, damit man die Uhrzeit auch unter WEGA stellen kann...

Aber erstmal sehen wie weit sich das hier verbreitet
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
177
18.12.2011, 11:25 Uhr
Olli

Avatar von Olli

so... gestern Nacht hats mich mal wieder überkommen und ich habe meine P8000 mal wieder angemacht... die Uhr laeuft immer noch - geht "nur" 5 Minuten nach... aber keine Ahnung wie genau ich sie vor 2 Jahren gestellt hatte

Langzeittest also bestanden

Gerade eigentlich auch noch irgendwer anders mit Hardwareprojekten am P8000 beschaeftigt oder alles eingeschlafen? (SCSI Controller @Holm, Tape @Enrico?)
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
178
18.12.2011, 12:58 Uhr
Enrico
Default Group and Edit



Zitat:
Olli schrieb

Gerade eigentlich auch noch irgendwer anders mit Hardwareprojekten am P8000 beschaeftigt oder alles eingeschlafen? (SCSI Controller @Holm, Tape @Enrico?)

Ich z:Z gerade nicht. Bin gerade bei anderen Bändern bei.
Ich würde aber schon mal vorschlagen (wenn es dann mal soweit ist) Uhr und SCSI auf einer Platine unterzubringen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
179
18.12.2011, 19:40 Uhr
Micha

Avatar von Micha

ich bin noch nicht soweit. P8000 ist schon im irgendwie in meinem Fokus, es fehlt einfach an Freizeit und Kenntnis. Wenn ich meinen K1000-Nachbau demnächst mit SD-Card und Drucker ausgestattet habe geht es irgendwann ans P8000 Basteln
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
180
18.12.2011, 23:00 Uhr
otto11




Zitat:
Olli schrieb
so... gestern Nacht hats mich mal wieder überkommen und ich habe meine P8000 mal wieder angemacht... die Uhr laeuft immer noch - geht "nur" 5 Minuten nach... aber keine Ahnung wie genau ich sie vor 2 Jahren gestellt hatte

Langzeittest also bestanden

Gerade eigentlich auch noch irgendwer anders mit Hardwareprojekten am P8000 beschaeftigt oder alles eingeschlafen? (SCSI Controller @Holm, Tape @Enrico?)

Da ist nichts eingeschlafen!
Hab mich die letzten Wochen durch die WDC 4.2 Firmware gekämpft und diese geändert um die ST251-... anzukoppeln. Leider bisher mit keinen besseren Ergebnissen: Format-> OK. Verify-> OK. Bei Install WEGA früher oder später ein Fehler :-( Sogar im Block schreiben WR... gibt es ein Timout. Hier sehe ich einen Ansatzpunkt. Falls der Fahrweg zu lang wird, gibt es ein Timeout.
Werde dafür aber erstmal einen Hardware Debugger zusammen"schrauben" müssen, um da weiter zu kommen. Material ist da. Das ist ja ev. ein Hardwareprojekt :-)
Und wenn das dann auch keine Erkenntnisse bringt, ist eine IDE-HD Ankopplung an den WDC Stecker dran...

MFG
Jürgen

PS: Die original P8000compact - Uhr hat die Ofenbehandlung bei 120°C gegen die Feuchte in der Vergußmasse auch nur seit März 2011 bis jetzt überstanden? Jedenfalls waren die Batterien jetzt wieder leer. Da muß ich auch noch mal ran..
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
181
18.12.2011, 23:36 Uhr
kaiOr

Avatar von kaiOr

Hallo Jürgen,

der Stromverbrauch ist schaltungsbedingt immer gleich bzw. was der Uhren-IC nicht futtert genehmigen sich die beiden LEDs.

Ich habe auch eine ST251-1 auf Halde, aber nachdem Rüdiger der Platte schlechte Gesundheit bescheinigt hat und die auch extrem laut ist hab ich noch nicht weiter probiert mit P8000-Einsatz.

Mein Ansatzpunkt war die sa.format neu zu compilieren (einfach tc = 0 auf tc = 1 setzen), damit man die Timingparameter anpassen kann. Für die NEC-Festplatten unter den vordefinierten Typen gelten unter der Haube ja auch schon andere Parameter als für Robotron-Platten. Oder hat das bereits jemand probiert?

MfG
Kai
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
182
19.12.2011, 00:07 Uhr
holm

Avatar von holm

@Kai: IMHO findet der Timeout deshalb statt, weil sich die WDC Frimware weghängt, d.h. die kommt nie wieder.
@otto: Höre auf. Schade um die Arbeit, da die Hardware eh kaum noch zu bekommen ist und wenn dann in fragwürdigem Zustand.
Der bessere Weg wäre hier IMHO wirklich sich GIDE vorzunehmen und eine kompatible Software/
Hardware zur Kopplung an die P8000 zu basteln. Da muß auch kein Z80 drin sein, ein Atmel mit SD Card tut es sicher auch...
@Olli: Ich habe derzeit anderen Kram auf dem Tisch, die Platine mit dem eigentlich fast fertigen SCSI Controller ist mir aber letztens in die Hände gefallen, ich hab geseufzt...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
183
19.12.2011, 00:48 Uhr
Olli

Avatar von Olli

Jo, ne SD-Karte+Hardware-Dongle zum "hinten an die P800 steck" wäre sicherlich chic
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
184
19.12.2011, 13:50 Uhr
Micha

Avatar von Micha

das hört sich sehr interessant an. Ist die Host-Schnittstelle des WDC Beistellers irgendwo dokumentiert? Im P8000 Hardwarehandbuch hab ich nichts genaueres dazu gefunden.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
185
19.12.2011, 18:12 Uhr
Enrico
Default Group and Edit


Meint Ihr nicht, das AVR und SD-karte etwas langsam wären?
Nach Anleitung vom Olli hatte ich mal die Geschwindigkeit gemessen.
Das waren inrgendwas zwischen 150 und 180 kB/sek.
Ob das der AVR schafft?
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
186
19.12.2011, 18:17 Uhr
Olli

Avatar von Olli

Wenns doch heute ein Z80 schafft?
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
187
19.12.2011, 18:20 Uhr
Enrico
Default Group and Edit


Jein. Da steckt noch eine selbstgehäckelte DMA drin.
Z80 würde nicht viel mehr als 10-20 kb /sek schaffen.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
188
19.12.2011, 18:48 Uhr
otto11



@Kai

>der Stromverbrauch ist schaltungsbedingt immer gleich bzw. was der Uhren-IC nicht futtert genehmigen >sich die beiden LEDs.

Das ist falsch! Siehe Dein Beitrag 020 vom 10.11.2010, 22:58 Uhr :-)

Auf die Änderung der Timingparameter bei sa.format ohne Neucompilierung hatte Olli schon mal hingewiesen. Habe aber damit noch nicht experimentiert.
Jedenfalls habe ich auch begonnen, die WDC-Firmware 3.2, mit der die ST251... ja laufen sollen, zu disassemblieren. Es fiel mir als erstes die andere Sektorversatztabelle auf( komplett ohne Versatz ). Nach Übernahme in die 4.2-er Firmware funktionierte die überhaupt nicht mehr. Eine Änderung des Sektorversatzes auf andere Werte funktionierte ebenfalls nicht. Ich dachte eigentlich, das so eine Tabelle genau das macht, was der Name sagt? Scheint hier nicht zu funktionieren.

Na, jetzt hat man ja bald wieder etwas mehr Zeit für dieses Vergnügen...

Gruß Jürgen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
189
19.12.2011, 19:10 Uhr
Olli

Avatar von Olli

Mh....

http://www.dharmanitech.com/2009/01/sd-card-interfacing-with-atmega8-fat32.html

Data transfer rate: 1 raw data block (512 bytes) takes 4.15ms for reading or writing (123.37 KBytes/s) at current 4 MHz SPI clock rate. If you have flash more than 8k, you can declare the SPI_receive() and SPI_transmit() functions as 'inline' functions. This will increase the transfer rate to 140 KBytes/s. These transfer rates can be further increased by using a 16MHz crystal (8 MHz SPI clock).
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
190
19.12.2011, 19:51 Uhr
Enrico
Default Group and Edit


Na, gut. Schneller als im Original wäre aber besser.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
191
19.12.2011, 20:47 Uhr
holm

Avatar von holm

...Vorsicht, schneller ist nicht immer besser. War da nicht mal irgendwas mit einer Race Condition im Zusammenhang mit dem WDC? ...Ja, doch, bei dem Emulator der hier mal vorgestellt wurde. Also den Fred besser nochmal ausgraben und nachlesen...

Ich habe eh das Gefühl bei der WDC Firmware das das Zeug noch lange nicht fertig ist. Die ganze Mimik ist ziemlich grauenhaft. Ich bin mir relativ sicher dass die Jungs bei EAW von den Problemen gewußt haben. Es ist ja nicht nur, das der Controller mit einer ST251 abkackt, die unerklärlichen Lesefehler mit anderen Plattentypen sind ja gleich das nächste Problem, obwohl die Platten auch mit mehr Sektoren an anderen Controllern einwandfrei tun. Das sind seltsame Probleme für eine digitale PLL...

Die DMA sorgt nur von Transfer eines Sektors in den RAM des WDC da die 4Mhz CPU da sonst nicht hinterher kommt, von dort aus geht es dann gemütlich per polled IO über den PIO byteweise ins 16 Bit System... Es ist wahrscheinlich völlig Rille welcher Interleave da zum Einsatz kommt, wesentlich schneller wird das Ding wohl nicht werden.

Der SCSI Controller am Memory Bus, wie ich ihn für ein Bandlaufwerk vor hatte (Backup auf 720k Disketten oder über die Serielle ist ja nicht das Nonplusultra, schon gar nicht bei 2 Platten wie in einer Compact von mir) ist da auch nicht die Lösung. Das Ding soll ja irgendwie booten,
dass hieße entweder die Z8000 bekommt irgendwo einen passenden Bootloader in der Firmware oder das UDOS muß den vorher in den RAM schaffen. Spätestens an dieser Stelle wird es vergriesgnaddelt. Natürlich könnte der NCR Chip direkt am Bus mehr Transferleistung bringen als diese PIO Mimik. Wie man da einen CTC als Vekorgenerator für Interrupts dran pfriemelt hatte ich ja schon ermittelt.
In sofern ist so ein Ding hinten an der Buchse zweifellos der kompatiblere Weg, auch wenn das Ding dann nicht rast. Ausreichend Probleme wird aber auch diese Lösung haben (ab welcher Größe kommt aus sa.* der Maschinist raus usw....)

Gruß,

Holm.
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
192
19.12.2011, 21:44 Uhr
Olli

Avatar von Olli

so rein aus der Theorie und den vorliegenden Quellen...

U8000 Firmware:
Blocknummer = 32-Bit-Register
Drivenummer = 16-Bit-Register

WEGA Kernel (und min. sa.mkfs):
Blocknummer = (signed) long = 32 Bit

aber der Teufel liegt dann eh im Detail... und ich glaube nicht an 1023 GByte die sich aus den 31 Bit (+1 Bit Vorzeichen) ergeben wuerden
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000

Dieser Beitrag wurde am 19.12.2011 um 21:46 Uhr von Olli editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
193
19.12.2011, 22:24 Uhr
kaiOr

Avatar von kaiOr

Auf irgend einer Webseite stand das die ST251-1 nicht nur auf gepufferte Suchzugriffe optimiert ist, sondern sogar mit Fehler reagiert, wenn Controller zur Sicherheit eine zu langsamere Schrittrate fahren. Das wär ja'n Ansatzpunkt.

Wie dem auch sei, hab meine ST-251-1 bissl getestet und final auch reingeschaut. Der Lesekopf hat schon mehrfach geklebt oder aufgesetzt.


Zitat:
otto11 schrieb
Das ist falsch! Siehe Dein Beitrag 020 vom 10.11.2010, 22:58 Uhr :-)

Hast Recht, R9 hab ich größer in Erinnerung.


Zitat:
Olli schrieb
glaube nicht an 1023 GByte die sich aus den 31 Bit (+1 Bit Vorzeichen) ergeben wuerden

Backup über seriell dauert dann 40Jahre?

Dieser Beitrag wurde am 19.12.2011 um 22:44 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

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