Software > Software (16-/32-Bit)

Fortran (gfortran) für ST

<< < (2/3) > >>

Thorsten Otto:

--- Zitat von: czietz am Di 26.02.2019, 08:22:15 ---Hm, also ich habe damit sowohl Dein Hello-World als auch das 1000d.f compiliert. Laufen beide.

--- Ende Zitat ---

Oh, stimmt auffallend, funktioniert bei mir auch. Seltsam. Muss ich mir mal nochmal anschauen, vlt. sind da noch irgendwelche Probleme wegen 64 vs 32bit. beim cross-compilieren.


--- Zitat ---Einziges Problem: sie machen eben nur einen Line-Feed als Zeilenumbruch, d.h. die Textdarstellung auf dem Bildschirm ist unschön.

--- Ende Zitat ---

Daß nur ein linefeed ausgegeben wird ist aber normal. Für den Rest sollte die mintlib sorgen, wenn die Ausgabe auf einen Bildschirm geht, und tut sie bei mir auch wenn ich es in einem toswin2 Fenster laufen lasse.

czietz:

--- Zitat von: Thorsten Otto am Di 26.02.2019, 12:11:49 ---Daß nur ein linefeed ausgegeben wird ist aber normal. Für den Rest sollte die mintlib sorgen, wenn die Ausgabe auf einen Bildschirm geht, und tut sie bei mir auch wenn ich es in einem toswin2 Fenster laufen lasse.

--- Ende Zitat ---

Tut sie aber nicht -- getestet unter Atari TOS und unter EmuTOS in der EmuCON.

Außerdem: Ist es wirklich normal, dass nur ein LF ausgegeben wird? Fortran arbeitet ja mit dem abstrakten Konzept von Datensätzen (Records). Es ist Aufgabe der Fortran-Laufzeitbibliothek, den passenden Datensatztrenner zum jeweiligen Ausgabestream zu generieren. Das kann eine völlig andere Aktion sein, abhängig davon ob die Ausgabe auf ein Terminal, einen Lochkartenstanzer oder auf ein datenbank-orientiertes VAX-VMS-Dateisystem geht. libgfortran hat -- soweit ich das sehen kann -- ein eigenes Define HAVE_CRLF dafür, dass der Trenner bei Textausgabe CR+LF sein soll, was imho auf dem Atari auch sein müsste.

Thorsten Otto:

--- Zitat von: czietz am Di 26.02.2019, 12:56:38 ---Tut sie aber nicht -- getestet unter Atari TOS und unter EmuTOS in der EmuCON.

--- Ende Zitat ---

Dann müsste man sich nochmal anschauen was mintlib da unter plain TOS macht.


--- Zitat ---Außerdem: Ist es wirklich normal, dass nur ein LF ausgegeben wird?
--- Ende Zitat ---

Ja, ansonsten müsstest du ja jedes Programm ändern (auch C), und dort explizit CR/LF ausgeben.

ibgfortran hat -- soweit ich das sehen kann -- ein eigenes Define HAVE_CRLF dafür, dass der Trenner bei Textausgabe CR+LF sein soll.
[/quote]

Ja, hab mittlerweile auch gesehen. Für unix aber nicht, und mintlib sollte sich da eigentlich kompatibel verhalten (gibt ja auch zb. auch kein O_BINARY für Datei Handles).


--- Zitat ---was imho auf dem Atari auch sein müsste
--- Ende Zitat ---

Wird eigentlich auch gemacht, wenn mintlib feststellt daß die Ausgabe auf ein Terminal geht.

Kannst ja mal ausprobieren, was bei einem entsprechenden C-Programm passiert.

PS.: hab zwar die Ursache noch nicht gefunden, aber die cygwin64-version des compilers hat die gleichen Probleme wie die linux-version.

czietz:

--- Zitat von: Thorsten Otto am Di 26.02.2019, 13:46:41 ---
--- Zitat ---Außerdem: Ist es wirklich normal, dass nur ein LF ausgegeben wird?
--- Ende Zitat ---

Ja, ansonsten müsstest du ja jedes Programm ändern (auch C), und dort explizit CR/LF ausgeben.

--- Ende Zitat ---

Eben nicht. In C habe ich natürlich ein Programm mit printf("...\n") und will das nicht ändern müssen, nur damit es auf einem System mit CR+LF läuft. Aber in Fortran habe ich sowieso das Konzept des abstrakten Datensatztrenners. D.h. ich muss das Programm nicht ändern, die Runtime-Bibliothek sorgt dafür, dass ich die für das jeweilige Betriebssystem bzw. Ausgabegerät korrekten Zeichen bekomme. Ob nun libgfortran oder die MinTLib darunter das CR einfügt, ist letztlich egal, Hauptsache es klappt.

Thorsten Otto:

--- Zitat von: czietz am Di 26.02.2019, 15:22:46 ---Aber in Fortran habe ich sowieso das Konzept des abstrakten Datensatztrenners. D.h. ich muss das Programm nicht ändern, die Runtime-Bibliothek sorgt dafür, dass ich die für das jeweilige Betriebssystem bzw. Ausgabegerät korrekten Zeichen bekomme.

--- Ende Zitat ---

Ja, aber dort das gleich zu veranstalten wie für MinGW wäre denke ich nicht richtig. Das würde CRLF dann auch in Dateien schreiben, was für eine eigentlich auf unix ausgerichtete Umgebung nicht richtig wäre. Ausserdem funktioniert das dort wohl nur, weil auch auf lowlevel mittels O_TEXT/O_BINARY diese Umwandlung vorgenommen wird, was bei der mintlib nicht der Fall ist. Ich hab es auf  jeden Fall erstmal so gelassen, will ich noch nicht ganz überblicke was das sonst noch für Konsequenzen hätte.

Mit dem Fehler bin ich ein bisschen weiter gekommen: die Programme funktionieren, wenn ich beim strippen der Fortran-Bibliothek -x weglasse. Warum das so ist, ist mir allerdings schleierhaft, ebenso warum das nur bei 64bit-cross-compilern ein Problem ist.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln