Autor Thema: Gemeinschaftsprojekt?  (Gelesen 72326 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline ragnar76

  • Benutzer
  • Beiträge: 527
Re: Gemeinschaftsprojekt?
« Antwort #40 am: Fr 24.06.2011, 14:58:55 »
Mal ne dusselige frage. Wieso nicht printf(); anstelle von Cconws();?

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #41 am: Fr 24.06.2011, 18:49:48 »
Weil printf in dem Fall nicht benötigt wird und ich denke Cconws ist ein bisschen performanter.

Offline ragnar76

  • Benutzer
  • Beiträge: 527
Re: Gemeinschaftsprojekt?
« Antwort #42 am: Sa 25.06.2011, 03:31:24 »
im  grunde genomme hab ich schon kapiert was als nächstes zu tun ist. das währe dann ja wohl den autoordner auszulesen. Von php kenn ich den befehl readdir() und hab mal etwas vergleichbares gesucht.

gefunden hab ich den befehl dreaddir() der in der tos.h definiert wird aber ich bin mir nicht ganz schlüssig. im tos.hyp steht der ohne weitere einschränkungen beschrieben, im compendium wiederum steht dass das ein mint befehl währe. im profibuch hab ich nichts dergleichen gefunden.

Was ist denn nun richtig und währe das was für uns?

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.807
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: Gemeinschaftsprojekt?
« Antwort #43 am: Sa 25.06.2011, 09:47:47 »
Der Call ist Mint-only.

TOS kompatibel geht das mit Fsfirst() und Fsnext() . Das sind offizielle GEMDOS-Aufrufe seit 1984/85.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #44 am: Sa 25.06.2011, 18:09:28 »
Also ich benutze in meinem Code findfirst(), findnext() das sind PureC funktionen und die sind meiner Meinung nach einfach zu benutzen als die von Atari bereitgestellten.

AHCC stellt diese Funktionen auch bereit.


afalc060

  • Gast
Re: Gemeinschaftsprojekt?
« Antwort #45 am: Sa 25.06.2011, 19:14:03 »
wie war das mit der beschworenen portierbarkeit von c ?? ;D

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #46 am: Sa 25.06.2011, 21:19:00 »
ok, was cconws anbelangt gebe ich dir recht - das ein kleines eigentor bezüglich portierbarkeit... aber die nutzung von findfirst() / findnext() ähnelt viel mehr der Dateiauflistung unter linux / unix als die TOS variante.

Ich glaube um es auf einem Linux system zu kompilieren müsste man dann nur eine andere deklaration beachten, das war's dann schon.


afalc060

  • Gast
Re: Gemeinschaftsprojekt?
« Antwort #47 am: Sa 25.06.2011, 21:39:29 »
ich wollte nur sticheln.. das es irgendwie geht war mir schon bewusst.  ;)

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #48 am: Sa 25.06.2011, 22:09:31 »
Naja, wenn ich mich recht erinnere habe ich von anfang an gesagt das es in ANSI C keinen standard für das Verzeichnis auslesen gibt.... aber die PureC funktion kommt der Funktion aus dem POSIX standard schon sehr nahe.

Aber darum geht es ja noch garnicht.  ::)

Offline ragnar76

  • Benutzer
  • Beiträge: 527
Re: Gemeinschaftsprojekt?
« Antwort #49 am: Sa 25.06.2011, 23:14:52 »
Ob Posix kompatibel oder nicht, hier gehts doch um Atari. Was wil man mit den Bootselector auf Linux oder Windows?  Also von daher sind doch spezielle Atari only funktionen doch gestattet.

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #50 am: Sa 25.06.2011, 23:43:33 »
Natürlich, aber ich finde die nutzung von den Atari Funktionen bezüglich des Auslesens von Verzeichnissen nicht besser um die Aufgabe zu erfüllen....

Hier noch ein Beispiel für die nutzung:
void file_list( char * path)
{
        /* variable vom typ int anlegen:  */
int err;

        /* variable vom typ ffblk anlegen: */
struct ffblk blk;

        /* erstes element auslesen: */
err = findfirst( path, &blk, 0xff);
while( err == 0 ){

                /* datei name ausgeben: */
Cconws( blk.ff_name );

                /* evt. weitere elemente auslesen ... : */
err = findnext( &blk );
}
}

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.807
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: Gemeinschaftsprojekt?
« Antwort #51 am: So 26.06.2011, 09:40:29 »
TOS calls sind deutlich vorzuziehen, denn diese Pure C Calls rufen nichts anderes auf, und dazu noch mit einem unnötigen Overhead (mehr Datenstrukturen, mehr Unteraufrufe, mehr Sprünge -> langsamer als nötig)

Ausserdem sind die TOS Aufrufe auf jeden anderen Atari Compiler portierbar, z.B. auch den gcc.



Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline ragnar76

  • Benutzer
  • Beiträge: 527
Re: Gemeinschaftsprojekt?
« Antwort #52 am: Di 28.06.2011, 17:45:50 »
Roger that. Von mir aus kanns weiter gehen

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Gemeinschaftsprojekt?
« Antwort #53 am: Di 28.06.2011, 18:45:46 »
TOS calls sind deutlich vorzuziehen, denn diese Pure C Calls rufen nichts anderes auf, und dazu noch mit einem unnötigen Overhead (mehr Datenstrukturen, mehr Unteraufrufe, mehr Sprünge -> langsamer als nötig)

Ausserdem sind die TOS Aufrufe auf jeden anderen Atari Compiler portierbar, z.B. auch den gcc.

Du möchtest also lieber den kleinsten gemeinsamen Nenner nehmen damit die Portierbarkeit erhalten bleibt und es auch auf Uraltcompilern noch läuft? Ich finde M0n0 wählt einen guten Mittelweg da wir ja Pure C oder AHCC nehmen. Als Hausaufgabe kann man das Programm ja noch mit den alten TOS Calls parallel schreiben...

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.807
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: Gemeinschaftsprojekt?
« Antwort #54 am: Di 28.06.2011, 19:01:24 »
Wenn TOS so uralt ist, wieso benutzt ihr dann alle so selbstverliebt seinen Nachfahren Mint, der auch noch erstaunlicherweise komplett kompatibel ist?  :-*

Treibt was ihr wollt, aber sich auf einen Compiler und eine Library festzulegen ist unabhängig vom System immer schlecht. Das macht später nur Arbeit...wenn mal irgendetwas nicht mehr geht.

Ausserdem ist es eine gute Übung, sich mit den TOS Aufrufen vertraut zu machen. Für ein anständiges Atariprogramm (bei euch allen sehe ich ja das Wort GEM und GUI immer groß leuchten) kommt ihr nicht darum herum, systemkonform zu bleiben.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #55 am: Di 28.06.2011, 19:19:49 »
Was mich an den TOS funktionen stört:

Zitat
Nach Abschluß der Funktion steht der Verzeichniseintrag unter der Diskettenübertragungsadresse DTA, die mit Fgetdta und Fsetdta ermittelt bzw. festgelegt werden kann. Die Informationen können dann der Struktur DTA entnommen werden.

Es macht also Probleme wenn es Rekursiv aufgerufen wird. Das ein Verzeichnisbuam Rekursiv abgerufen werden soll, ist ja nicht nicht-selte.

Also ich persönlich muss mir das nicht geben, zumal das portieren der purec funktion einfach ist...(Falls es denn jemals gemacht werden sollte.)  Wenn jemand diesbezüglich einen Beispielcode posten kann, dann würde ich die evt. auch verwenden. Das würde den Code aber aufblaehen und nicht unbedingt leichter verständlich halten.

Und davon abgesehen halte ich die PureC Funktion für einfache - insbesondere wenn es darum geht novizen etwas zu zeigen. Bei der PureC version muss ich mich nicht um den DTA kram kümmern. bei der TOS Funktion schon.
« Letzte Änderung: Di 28.06.2011, 19:24:39 von m0n0 »

afalc060

  • Gast
Re: Gemeinschaftsprojekt?
« Antwort #56 am: Di 28.06.2011, 19:42:10 »
irgendwie fehlt hier so ein klein wenig die planung  8)

was soll das programm können?
zusammenstellen mögliche funktionen/prozeduren (pseudo-code)
erklärung der nötigen datenstrukturen (systemintern)
mögliche erweiterbarkeit?
usw

zudem sollte doch lieber basic gewählt werden

also das ist zumindest meine meinung  ::)

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: Gemeinschaftsprojekt?
« Antwort #57 am: Di 28.06.2011, 22:29:04 »
Was das programm können soll ist doch eigentlich schon besprochen:

- Bestimmte Programme / ACC / CPX beim booten de/aktivieren und im besten fall auch die Bootreihen folge verändern. Ausserdem muss es Coldfire kompatibel sein.

Zitat
zudem sollte doch lieber basic gewählt werden

Welches ist denn Coldfire kompatibel?

Ich meine, wenn die leute lieber was anderes Programmieren wollen, dann gerne - aber ich bin dann raus. ;)

Zitat
mögliche erweiterbarkeit?

Sowieso - immer - ist ja open-source ;)
« Letzte Änderung: Di 28.06.2011, 23:12:58 von m0n0 »

Offline simonsunnyboy

  • Moderator
  • *****
  • Beiträge: 1.807
  • Rock'n'Roll is the thing - Jerry Lee is the king!
Re: Gemeinschaftsprojekt?
« Antwort #58 am: Mi 29.06.2011, 17:18:34 »
Die Rekursion ist C ist kein Problem. Mach die DTA in die du die Daten reinholst, immer lokal, auf dem Stack.

D.h. du deklarierst den Speicherplatz innerhalb deiner Funktion. Diese C-Funktion ist i.d.R. dann wieder reeentrant und kann regulär sich selbst aufrufen.
Paradize - ST Offline Tournament
Stay cool, stay Atari!
1x2600jr, 1x1040STFm, 1x1040STE 4MB+TOS2.06+SatanDisk, 1xF030 14MB+FPU+NetUS-Bee

Offline Arthur

  • Benutzer
  • Beiträge: 10.311
  • Mein Atari erinnert mich an die gute alte Zeit..
Re: Gemeinschaftsprojekt?
« Antwort #59 am: Mi 29.06.2011, 17:24:43 »
Hast Du mal ein Beispiel-Code dazu?