Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » UDOS C-Compiler » Themenansicht

Autor Thread - Seiten: -1-
000
28.06.2025, 22:54 Uhr
Early8Bitz

Avatar von Early8Bitz

Ich lehne mich jetzt mal aus dem Fenster und halse mir für die nächsten Wochen etwas Arbeit auf, um Wort zu halten.

2025 tauchten in einem Diskettenkonvolut drei UDOS Disketten mit einem C-Compiler für UDOS auf.
RT Beitrag https://www.robotrontechnik.de/html/forum/thwb/showtopic.php?threadid=22806 von alberich
Ich habe mich intensiv mit dem Compiler beschäftigt und einiges damit programmiert und will hier in loser Folge meine Erkenntnisse zu Fehlern, Fallen und meinen Korrekturen dazu mitteilen.

Heute: Bestandsaufnahme

Die drei Disketten sind im Diskettenformat 80 Spuren, 2 Köpfe, 16 Sektoren pro Kopf und Seite, Sektorlänge 256 Byte (640kB pro Diskette).
Dieses Format wird von UDOS 5 bzw. P8000 UDOS verarbeitet (Treiber $NDOS oder $DDOS).

Die Disketten (im weiteren dann immer mit Kurzform D1, D2 und D3 referenziert) identifizieren sich wie folgt:

Quellcode:

D1   Label: MUTTERSYSTEM
D2   Label: CC ZUR NACHNUTZUNG
D3   Label: C - Programme


D1 ist zugleich eine UDOS 1715 Systemdiskette mit den gängigen UDOS Dienstprogrammen.

Hier erstmal die C relevanten Dateien auf den jeweiligen Disketten

Quellcode:

Dateiname     D1   D2   D3   Bemerkung
=====================================================================================
Binaries:
CC            X    X         UDOS-C-Compiler V 8.11 Hauptprogramm
CC1           X    X         C-Compiler Overlay Pass 1
CC2           X    X    X!   C-Compiler Overlay Pass 2+3
LL            X              Library Link Utility V 8.9
OML           X              Object Module Librarian V 8.9
CCF                          Gleitkommamodul für Direktausführung (fehlt!)

Object Files:
C.INT.OBJ          X         Interger Arithmetik und Basisfunktionen
C.STR.OBJ          X         Stringfunktionen
C.IO.OB            X         C- und UDOS-spezifische I/O-Funktionen
C.FLOAT4.OBJ  X    X         4 Byte Floating Point Artihmetik
C.FLOAT3.OBJ  X    X         3 Byte Floating Point Artihmetik
TERM.OBJ      X              Vermutlich PC1715 Bildschirmfunktionen

Libraries:
libc.a        X

Header Files:
assert.h      X    X
attr.h        X    X
errno.h       X    X    X!
math.h        X    X         Headerfile für 4 Byte Floating Point Artihmetik
math3.h       X    X         Headerfile für 3 Byte Floating Point Artihmetik
stdio.h       X    X    X!
stdlib.h      X    X
tinit.h       X              Headerfile für gerätespezifische Bildschirm und Tastatursteuerung

Sonstige Dateien:
CLINK         X    X         Commandfile zum Linken gegen die libc
UDOSC.B            X         Dokumentation V 8.10

Demoprogramme (C-Source):
SAMP[1..5].C       X
TASTENTEST.C       X
diverse                 X
CC2 Sources             X!


CC, CC1 und CC2 sind auf den Disketten D1 und D2 binär identisch.
Das Hauptprogramm CC beinhaltet die Laufzeitumgebung ab Ladeadresse 0xC000, die auch von den Overlays CC1 und CC2 referenziert wird.
Die binär identische Laufzeitumgebung erhält man, wenn man die C.IO.OBJ, C.INT.OBJ und C.STR.OBJ (in dieser Reihenfolge) auf Adresse 0xC000 linkt.

Auf Diskette D3 sind mehrere Quellprogrammmodule für das Overlay CC2 zu finden. Anhand eines Commandfiles zum Linken von CC2 sieht man, dass
die Overlays gegen die drei Objektfiles der Laufzeitumgebung gelinkt werden. Allerdings ist das Binary von CC2 auf D3 nicht identisch mit
CC2 von den Disketten D1 und D2. Stichproben ergaben, dass Funktionsaufrufe, die CC2 zum Laufzeitpart in CC tätigt, bei der CC2 Version von Diskette D3
nicht zu den richtigen Adressen führen. CC2 von D3 ist daher nicht fähig, mit CC und CC1 aus D1 und D2 zusammen zu laufen.

Versucht man, auf D3 CC2 mit dem vorhandenen drei Objektfiles der Laufzeitumgebung (von Diskette D2) zu linken, meckert der Linker sowohl
über doppelt definierte GLOBALS als auch nicht nicht aufgelöste EXTERNALS.
Die beiden Headerfiles stdio.h und errno.h auf D3 unterscheiden sich auch von denen auf D1 und D2.
Es sind in errno.h weniger Fehlercodes definiert und der in der stdio.h ist der Datentyp long als int definiert, was in der Kompilerversion auf D1/D2 und den Laufzeitmodulen aber definitv getrennt behandelt wird.
int = 16bit, long = 32bit
Es ist daher anzunehmen, dass der CC2 Quellcode auf D3 aus einer anderen, wahrscheinlich älteren Versionsschiene stammt.

C.FLOAT3.OBJ und C.FLOAT4.OBJ unterscheiden sich auf D1 und D2 während die zugehörigen Headerfiles math3.h und math.h auf beiden Disketten identisch sind. Die Analyse dazu steht auf der ToDo Liste

Es fehlt eine Datei CCF, das ist ein gelinktes FloatingPoint Modul, welches von CC aufgerufen wird, wenn man beim Kompilieren eines Anwenderprogramms die direkte Ausführung wählt (Kompileroption -R (Run)) und das Programm Gleitkommaarithmetik benutzt.

Man findet in dem ganzen Dateisalat keinerlei Hinweise auf einen Entwickler, weder als Personenname noch eine Firmenbezeichnung.
Allerdings benutzt der ganze Compiler weder selbst, in der Laufzeitumgebung noch in den damit erstellten Programmen den Alternativregistersatz oder die Indexregister.
Ausnahme: UDOS spezifische I/O-Funktionen in der Laufzeitumgebung verwenden IY für den I/O-Vector und IX als Index für das Feld mit den Dateieigenschaften, welches beim open() vom Dateidescriptor eingelesen wird.
Ich gehe daher davon aus, das dieser Compiler eine Vorgeschichte in der i8080 Welt hat (ob CP/M oder was proprietäres lässt sich nicht erkennen) und auf UDOS portiert wurde.

Wer anhand der heutigen oder den folgenden Beschreibungen einen Wiedererkennungseffekt verspürt, um welchen ursprünglichen C-Compiler es sich handeln könnte, der hebe die Hand.
Ebenso bin ich an weiteren Disketten(-images) interessiert, wenn darauf etwas zu finden ist, was mit dem C-Compiler in Zusammenhang stehen könnte.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 28.06.2025 um 22:58 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
29.06.2025, 10:45 Uhr
jute-tom



Da ich auch seit einiger Zeit Compiler programmiere, wollte ich fragen, ob die Quellen irgendwo zugänglich sind?
--
Viele Grüße,
Thomas
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
29.06.2025, 11:09 Uhr
kaiOr

Avatar von kaiOr

Hallo, nach "C" sucht es sich schlecht in Disketten-Abbildern.

rfe 9/85 S.548


Gruß,
Kai
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
29.06.2025, 11:38 Uhr
ralle



maleuma könnte dazu was beisteuern. Zu mindestens gibt es einen Port nach MicroDOS. Und damit zu CP/M 2.2

Ich habe aber spasseshalber mal die Ente gefragt:
http://www.cpm.z80.de/develop.htm
http://www.z80.eu/c-compiler.html
http://www.cpm.z80.de/small_c.html
https://8bitlabs.ca/Posts/2023/06/15/hi-tech-c-compiler

Das HiTech-C dürfte vermutlich die wahrscheinlichste Quelle für diesen Port sein.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
29.06.2025, 12:24 Uhr
Early8Bitz

Avatar von Early8Bitz

Danke für die Hinweise. Es gibt aber im Code oder den Hilfsdateien keine Hinweise auf die TH Karl-Marx-Stadt oder eine andere Institution. Wollte der Entwickler anonym bleiben?

HiTech-C spricht ANSI-C. Der UDOS C-Compiler kommt nur mit K&R Syntax zurecht.

Quellcode:

int func(char c, int i)
{
....
}


ANSI like will er nicht.

Quellcode:

int func(c, i)
char  c;
int   i;
{
...
}


Funzt.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 29.06.2025 um 12:25 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
29.06.2025, 15:59 Uhr
ralle



Bitte das ich dir helfen konnte. Hast du auch die Mikroprozessortechnik? Also alle Jahrgänge?
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
29.06.2025, 16:17 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
ralle schrieb
Bitte das ich dir helfen konnte. Hast du auch die Mikroprozessortechnik? Also alle Jahrgänge?


Von den Zeitschriften habe ich nur wenige Exemplare.

Die Linksammlung in <003> zu Z80 C-Compilern kenne ich. Das Problem ist, man müsste einen nach dem anderern runterladen und sich anschauen, ob bzgl. Programmstruktur, Features, Aufrufkonventionen etc. einer dabei ist, der als Vorfahr des UDOS C-Compilers in Frage kommt.
Das muss man sich in seiner Restlebenszeit nicht antun.

Daher die Hoffnung auf einen Zufallsfund aus der Masse, dass einer ein konkretes "Vorbild" auf Grund seiner früheren Erfahrungen wieder erkennt.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
29.06.2025, 16:41 Uhr
ralle



Frag ambrosius. Die Heftreihe gibt es digital.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
29.06.2025, 17:04 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
ralle schrieb
Frag ambrosius. Die Heftreihe gibt es digital.


Gabs da einen Artikel drin zu genau diesem C-Compiler? Wenn ja, weißt Du/weiß wer, in welchem Heft? Gezielte Suche geht schneller als ganze Jahrgänge sichten.

Ich will ja nicht C lernen, das kann ich schon, sondern diesen Compiler ordentlich benutzen.
Erstens ist er nicht fehlerfrei, wie ich bei meinen Tests feststellen musste (ich berichte später darüber),
zweites stimmt die beiligende Beschreibung nicht vollständig mit dem Verhalten des Compilers überein
und drittens weiß ich ja noch nicht einmal, ob das, was auf den zufällig gefundenen Disketten drauf ist, wirklich vollständig und konsistent ist. Also vollständig nicht, hatte ja schon eine fehlende Datei identifiziert; und konsistent auch nicht, verschiedene Dateiversionen der Gleitkommabibliotheken.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
29.06.2025, 23:59 Uhr
Bert



Diese 3-Byte-Float-Bibliothek fällt mir hier zum ersten Mal auf.
Kannst Du die Dateien irgendwie zur Verfügung stellen?
--
Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
30.06.2025, 09:05 Uhr
ralle



Naja, als Vergleich des Dialekt sollte die MP reichen. Der Rest ist durchwälzen auf sonstige Veröffentlichungen. Zumal es nur 4 Jahrgänge gibt, die interessant sind.
--
Gruß Ralle

Wenn Sie dazu neigen, Bedienungsanleitungen zusammen mit dem Verpackungsmaterial wegzuwerfen, sehen Sie bitte von einem derart drastischen Schritt ab!...
... Nachdem Sie das Gerät eine Weile ausprobiert haben, machen Sie es sich am besten mit dieser Anleitung und ihrem Lieblingsgetränk ein oder zwei Stunden lang in Ihrem Sessel bequem. Dieser Zeitaufwand wird Sie dann später belohnen...

aus KENWOOD-Bedienungsanleitung TM-D700
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
30.06.2025, 11:28 Uhr
Dresdenboy




Zitat:
Bert schrieb
Diese 3-Byte-Float-Bibliothek fällt mir hier zum ersten Mal auf.
Kannst Du die Dateien irgendwie zur Verfügung stellen?


Das fand ich auch und schließe mich gern an. Gerade für 8-bit-Systeme könnte das ein guter Kompromiss sein, v.a. die Systeme mit Z80, die auch ein paar 16-Bit-Operationen können, was hier vllt. die Mantissengröße ist.
--
___________________________________
Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos
Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC
HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
30.06.2025, 17:32 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Bert schrieb
Diese 3-Byte-Float-Bibliothek fällt mir hier zum ersten Mal auf.
Kannst Du die Dateien irgendwie zur Verfügung stellen?


Hallo Bert, hallo Dresdenboy,

Irgendwie geht bestimmt.

Die Floatingpointmodule sind als UDOS Objekt-Files auf den Disketten.
Jetzt muss ich fragen, was Ihr braucht bzw. verarbeiten könnt.

Variante 1:
Eine UDOS Objektdatei als isolierte Datei alleine ist offline nicht besonders gut nutzbar.
Die Dateien einzeln zu schicken ist daher eher unproduktiv.

Variante 2:
Ihr habt einen UDOS-Rechner.
Dann schicke ich Euch die UDOS-Disketten mit dem ganzen C-Geraffel einfach als Image.
Ihr macht richtige Disketten draus und macht dann in Eurem UDOS Rechner damit, was ihr wollt.

Variante 3:
Ihr habt gar kein UDOS und wollt die FP-Funktionen für allgemeine Zwecke begutachten.
Dann könnte ich die Objects zu einem Binary linken und Euch die entstandenen Binärfiles schicken.
Die könnt Ihr über einen Disassembler jagen und Euch am Quellcode ergötzen.

Wie solls ich's machen?

@Bert, kann ich Deine Frage so verstehen dass Du den UDOS C-Kompiler sogar hast und dort nur die 3-Byte Version der Gleitkommaarithmetik fehlt? Oder ist es nur 'UDOS-freies' Interesse an den Algorithmen?
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
30.06.2025, 18:11 Uhr
DL
Default Group and Edit


lt. obigen Link liegen die Abbilder ja mit in meiner Cloud, ich hab mal eine UDOS1715_Inhalt.zip mit hinzugefügt, die enthält die Einzeldateien
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
30.06.2025, 18:20 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
DL schrieb
lt. obigen Link liegen die Abbilder ja mit in meiner Cloud, ich hab mal eine UDOS1715_Inhalt.zip mit hinzugefügt, die enthält die Einzeldateien


Richtig, die Verteilung der Images ist ja damals über Deine Cloud gegangen. Das hatte ich gar nicht mehr auf dem Schirm. Danke für die Erinnerung.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
01.07.2025, 07:59 Uhr
Bert



@Ralf:
Bei mir ist es eher 3.
Ich habe (noch) kein UDOS-System, wollte mir gern die alten C-Quellen mal anschauen und sehen, ob die sich heute noch übersetzen lassen.

Die Bildschirmsteuerung wird über Steuercodes gemacht. Z.B. Cursor setzten geht über Set (-11) + Zeile + Spalte, siehe tinit.h. Für die konkrete Umsetzung müste ich noch in die TERM.OBJ schauen und PUT_C dekodieren.

Witzig ist die Mischung der Firmennamen in TRADE.C:

Quellcode:

...
   "PEGASUS OIL COMPANY",
   "QUASAR UNLIMITED",
   "ROBOTRON DRESDEN",
   "SATURNUS GMBH",
   "TRABANT WERKE ZWICKAU",
   "UNIVERSUM AG",
   "VEB AUTOTRANS",
   "WARTBURG WERKE",
   "XENON STARWAYS",
...



Interessant ist auch der Copyrightverweis in SPELL.C:

Quellcode:

/* Copyright Dr. Edgar Huckert, 8758 Goldbach    */
/* Version 9.2.86                                */



Außerdem verwenden viele Programme z.T. deutsche Bezeichner und sehen nach fortgeschrittener Programmiererfahrung aus.

Und ja, es ist altes C, aber ich kann noch nicht sagen, welcher C-Compiler unter CP/M damit was anfangen kann.
--
Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
01.07.2025, 11:12 Uhr
Dresdenboy



@Ralf:
Ich bin bei Variante 3. Mir würden schon die Obj-Files und Header reichen. Das lässt sich auch auseinandernehmen.

Idealerweise auch gleich float4 und int.

Was man mal kompilieren könnte, wäre ein simpler Benchmark zw. Float3 u. Float4.
--
___________________________________
Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos
Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC
HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ...
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
01.07.2025, 13:43 Uhr
Early8Bitz

Avatar von Early8Bitz

Wie DL gestern schon schrieb, liegen die bekannten drei Diskettenimages sowie eine ZIP Datei mit allen von den Disketten extrahierten Files in seiner Cloud zum runter laden.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
01.07.2025, 21:24 Uhr
Bert




Zitat:
Early8Bitz schrieb
Man findet in dem ganzen Dateisalat keinerlei Hinweise auf einen Entwickler, weder als Personenname noch eine Firmenbezeichnung.



Die Copyright-Hinweise wurden alle getilgt:


Nur ein PLINK wurde vergessen und beim ASM steht das 'C' noch da
--
Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
01.07.2025, 21:49 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Bert schrieb

Zitat:
Early8Bitz schrieb
Man findet in dem ganzen Dateisalat keinerlei Hinweise auf einen Entwickler, weder als Personenname noch eine Firmenbezeichnung.



Die Copyright-Hinweise wurden alle getilgt:


Nur ein PLINK wurde vergessen und beim ASM steht das 'C' noch da


Hallo Bert, lass dich nicht in die Irre führen. UDOS ist das eine, der C-Compiler ist das andere.
Der C-Compiler erzeugt entweder eine UDOS-konforme Objektdatei source.obj aus der C-Quelle (bei Aufruf mit CC -o source oder eine Quellprogramm in Zilogs Z80-Mnemonic source.s beim Aufruf mit CC -s source.

Die entstehende Objektdatei wird dann mit dem Standard UDOS-(RIO-) Linker PLINK mit anderen Quellmoduln o/u Bibliotheken zum fertigen (ausführbaren) Programm zusammen gelinkt.
Im Falle, dass Du dir "nur" ein Quellprogramm vom Compiler hast erzeugen lassen, musst Du dieses erst mit dem Standard UDOS-(RIO-) Assembler ASM zu einer Objektdatei übersetzen und dann kannst Du es mit PLINK linken.

ASM und PLINK gehören nicht zur Compiler Suite, sie sind Standard UDOS-(RIO-) Dienstprogramme, die auf jeder Stino Systemdiskette drauf sind.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 02.07.2025 um 21:28 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
01.07.2025, 21:59 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Dresdenboy schrieb
Was man mal kompilieren könnte, wäre ein simpler Benchmark zw. Float3 u. Float4.


Dann brauchst Du aber letzlich den lauffähigen Compiler, denn die Gleitkommafunktionen, die in den beiden Bibliotheken stecken, müssen ja von einen C-Programm aufgerufen werden, was entsprechende arithmetische Ausdrücke für Deinen Benchmark benutzt.

Auch die die Übergabe von (Gleitkomma) Zahlen an die Bibliothek und die Verarbeitung der Rückgabewerte (z.B. speichern in einer Variable oder weiter verarbeiten bei komplexen Ausdrücken) gehören mit zur Laufzeitbetrachtung.

In der beiligenden Dokudatei UDOSC.B stehen schon Laufzeitvergleiche für beide Genauigkeiten.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 01.07.2025 um 21:59 Uhr von Early8Bitz editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
01.07.2025, 22:14 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Bert schrieb
Interessant ist auch der Copyrightverweis in SPELL.C:

Quellcode:

/* Copyright Dr. Edgar Huckert, 8758 Goldbach    */
/* Version 9.2.86                                */


Der ganze Eintrag lautet

Quellcode:

/* Spellchecker Deutsch                          */
/* Copyright Dr. Edgar Huckert, 8758 Goldbach    */
/* Version 9.2.86                                */
/*         Haupt WB kompr. ausgeben und einlesen */

/* Version fuer UDOS C-Compiler ab Version 8.4   */


Der/die Entwickler des UDOS C-Compilers (oder ein Nachnutzer, wir wissen es nicht) hat hier die Software eines westdeutschen Programmieres aus Unterfranken (Goldbach, PLZ heute 63773) genommen und auf den UDOS C-Compiler portiert.

Dr. Edgar Huckert hat mit der Enwicklung dieses Compilers nichts tun. Er hat auch eine eigene Webseite.


--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
01.07.2025, 22:41 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Bert schrieb
Und ja, es ist altes C, aber ich kann noch nicht sagen, welcher C-Compiler unter CP/M damit was anfangen kann.


Meine Bibel hat mir sehr geholfen, mich wieder mit der vorzeitlichen Syntax zurecht zu finden.

--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
02.07.2025, 15:59 Uhr
Dresdenboy




Zitat:
Early8Bitz schrieb
Wie DL gestern schon schrieb, liegen die bekannten drei Diskettenimages sowie eine ZIP Datei mit allen von den Disketten extrahierten Files in seiner Cloud zum runter laden.


Ja, danke. Ich hab es mittlerweile. Bert half mir dankenswerterweise nochmal auf die Sprünge mit dem Link, den ich nur nicht finden konnte.

P.S.: Im normalen Browsermodus der Magentacloud konnte ich nichts herunterladen (FF, Chrome, Edge), aber mit Mobilansicht (auf Handy u. im FF mit Strg+Shift+M) ging es. Komisch.


Zitat:
Early8Bitz schrieb

Zitat:
Dresdenboy schrieb
Was man mal kompilieren könnte, wäre ein simpler Benchmark zw. Float3 u. Float4.


Dann brauchst Du aber letzlich den lauffähigen Compiler, denn die Gleitkommafunktionen, die in den beiden Bibliotheken stecken, müssen ja von einen C-Programm aufgerufen werden, was entsprechende arithmetische Ausdrücke für Deinen Benchmark benutzt.

Auch die die Übergabe von (Gleitkomma) Zahlen an die Bibliothek und die Verarbeitung der Rückgabewerte (z.B. speichern in einer Variable oder weiter verarbeiten bei komplexen Ausdrücken) gehören mit zur Laufzeitbetrachtung.

In der beiligenden Dokudatei UDOSC.B stehen schon Laufzeitvergleiche für beide Genauigkeiten.


Super, danke für die Hinweise. Dann schau ich da mal. Und die Konvertiererei gehört natürlich dazu, je nachdem, wie lange man in einem Datentyp unterwegs bleiben kann.
Aber die Konvertierungsroutinen können auch profitieren.

In den Obj-Files finde ich übrigens die komplexeren Mathe-Funktionen, die auch im Header stehen, aber auch MUL, DIV, MOD usw. Hier sind offenbar in den meisten Fällen 3-6fach schnellere Funktionen und Grundrechenarten drin mit Ausnahme SQRT mit Faktor scheinbar min. 18x.

Gut, es sind natürlich schon genug optimierte Funktionen v.a. für MUL u. DIV (8x8, 8x16, 16x16, 16x8) oder SQRT bekannt. Aber nicht in so einem schönen, in C integrierten Paket.

Quellcode:
Vergleich der beiden Gleitkommapakete:

Ungefaehre Rechenzeiten in ms:

        Funktion        4-Byte-Arithmetik       3-Byte-Arithmetik

        sin, cos        < 20                    < 6
        tan, cot        < 40                    < 6
   asin,acos, atan      < 50                    < 8
   exp, log, log10      < 20                    < 5
        pow             < 35                    < 10
        sqrt            < 18                    < 1

Grundrechenarten:
        +,-             0.4                     0.2
        *               1.5                     0.4
        /               3.2                     0.6


Zahlenbereiche:
                +/- 3E-38...2E+38               +/- 1E-18...1E+18

                Mantisse 23 Bit                 Mantisse 16 Bit
                Exponent  8 Bit                 Exponent  7 Bit
                Vorzeich. 1 Bit                 Vorzeich. 1 Bit

Ablage im Speicher bzw. in Registern:
Reg.  Speich.
L      +0      Mantisse (LS-Byte)              Mantisse (LS-Byte)
H      +1      Mantisse                        Mantisse (MS-Byte)
C      +2      Mantisse (MS-Byte, Bit 0-6)     ohne Bedeutung
                Vorzeichen (Bit 7)
B      +3      Exponent                        Exponent (Bit 0-6)
                                                Vorzeichen (Bit 7)




Zitat:
Early8Bitz schrieb
Dr. Edgar Huckert hat mit der Enwicklung dieses Compilers nichts tun. Er hat auch eine eigene Webseite.



Da war ich unabhängig auch schon dran, mal zu recherchieren. Der Compiler sieht schon nach Eigenentwicklung aus. Man könnte bisschen über die integrierten Fehlermeldungen nach Äquivalenten suchen. Aber an sich eher nicht. Eine Idee zu Herrn Huckert: Es gibt ja die Bücher von ihm, z.B.
https://huckert.com/ehuckert/Programmierung/Prog1.html

Auch online, wie das Amiga-C-Buch:
https://www.retrozone.ch/docs/amiga/Amiga_C_in_Beispielen.pdf
Die Adresse in Goldbach findest du auch im Buch.

Hier wäre mal interessant, inwieweit sich der C-Code aus seinem Buch "C-Toolbox Textverarbeitung. Vollständige Textverarbeitung inklusive Spellchecker und Silbentrennung in C-Quellcode für IBM-PC und Kompatible" von dem auf den UDOS-Disketten unterscheidet.

VG,
Matthias
--
___________________________________
Produktionen im Rahmen der "The Computer Art Community" (Demoszene): https://demozoo.org/sceners/64936/, YT-Kanal: https://www.youtube.com/@4lpha0ne/videos
Programmierung seit '86 in BASIC: KC85/3, C64, A1200, PC | ASM: LC-80, C64, KC87, A1200, NeoGeo, PC, Mega 65, µC | Turbo Pascal: BIC, PC | C: RS/6000, Alpha, PC, µC | C++, Java, Javascript, Rust, Lua, Perl, PHP u.a. auf PC
HW: LC-80, BIC A5105 komplett, KC87, KC85/2-4, KCC, C64s, C16, Plus/4s, A500s, A1200, Mega 65, ESP32s, RasPis, PCs, Laptops, MR 610, ...

Dieser Beitrag wurde am 02.07.2025 um 16:02 Uhr von Dresdenboy editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
02.07.2025, 16:13 Uhr
Early8Bitz

Avatar von Early8Bitz

Dr. Huckert hat mir bestätigt, dass er nicht der Entwickler irgendeines C-Compilers ist. Er hat in seinem Leben nur viel in C und C++ programmiert und Bücher darüber geschrieben.

Vermutlich ist sein 1987 erschienenes Buch irgendwie in die DDR gelangt und darin enthaltener Code wurde von den sozialistischen Werktätigen genutzt.

Das von Dir erwähnte Buch scheint es noch vereinzelt auf Altbücherportalen zu geben. Wenn Dir der Vergleich der Quellcodes wichtig ist, investiere die Kohle.
Und die Power-Scanner hier im Forum werden sich sicher über neues Futter freuen.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
02.07.2025, 19:00 Uhr
ambrosius




Zitat:
Early8Bitz schrieb
...
Und die Power-Scanner hier im Forum werden sich sicher über neues Futter freuen.



Sehr gern sogar.
--
viele Grüße
Holger
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
026
02.07.2025, 21:00 Uhr
Olli

Avatar von Olli

Interessant auf jeden Fall!!
Bin immer wieder fasziniert nach wie langer Zeit noch Dinge auftauchen.

leicht anderes Thema:
Der unter WEGA lauffähige "bessere" C-Compiler (also nicht die non-segmented und segmented C-Compiler die mit WEGA mitkamen) stammt von einer frühen Version des pcc ab, welche für den z8000 portiert wurden - das allein + Optimizer ist schon ne ganze Menge Arbeit denke ich - auch wenn das "Grundgerüst" drumrum vom pcc stammte.

Hier sind die Sourcen + einige Fixes die ich damals in der Nutzung fand:

https://github.com/OlliL/P8000/tree/master/WEGA/contrib/lcc

Aber eigentlich gings ja hier um den UDOS-C-Compiler - von daher kann mein Beitrag auch gerne "überlesen" werden. Ich wollte es nur einfach mal loswerden
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
027
02.07.2025, 21:44 Uhr
Bert



Was mich noch etwas umtreibt: Kann man das UDOS irgendwie simulieren oder emulieren?
Schade, daß der jkcemu (noch?) keinen PC1715 kann, sonst wäre es vermutlich relativ einfach dort UDOS (inkl. C-Compiler) laufen zu lassen.
--
Viele Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
028
02.07.2025, 21:54 Uhr
Olli

Avatar von Olli

Ich meine der auf MAME basierende P8000 Emulator hat ne UDOS Emulation quasi zwangsweise dabei. Ob man damit gut arbeiten kann? Ob der überhaupt noch tut? Keine Ahnung - ich hab den nie wirklich genutzt, da halt das Original vorhanden.

Quellcode wurde nie veröffentlicht, und so gibt es nur n recht alten Windows-Installer - wenn man ihn noch irgendwo findet
--
P8000 adventures: http://pofo.de/blog/?/categories/1-P8000
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
029
02.07.2025, 21:56 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Olli schrieb
Interessant auf jeden Fall!!
Bin immer wieder fasziniert nach wie langer Zeit noch Dinge auftauchen.


Geht man von verschiedenen Informationen aus, die man in den Dateien auf den Disketten findet, hat der Compiler ja eine Versions-Vorgeschichte.

V8.x - klingt sowieso schon nach früheren Versionen
V8.11 - Die Versionsnummer meldet er selbst
Text "Diese Beschreibung gilt ab Kompilerversion 8.10" in der Datei UDOSC.B
Text "Version fuer UDOS C-Compiler ab Version 8.4" im Demoprogramm SPELL.C

Trotzdem scheint von dieser Software nur dieses eine Exemplar zu existieren.
Gut, UDOS war nie so der Renner, da hat wahrscheinlich insgesamt weniger überlebt, als von CP/M und seinen Abkömmlingen.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
030
02.07.2025, 22:09 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Olli schrieb
Ich meine der auf MAME basierende P8000 Emulator hat ne UDOS Emulation quasi zwangsweise dabei. Ob man damit gut arbeiten kann? Ob der überhaupt noch tut? Keine Ahnung - ich hab den nie wirklich genutzt, da halt das Original vorhanden.

Quellcode wurde nie veröffentlicht, und so gibt es nur n recht alten Windows-Installer - wenn man ihn noch irgendwo findet


Doch, der Quellcode war im Download mit dabei. Ich habe den Emu nur für UDOS genutzt (mal kurz für OSM), aber musste CTC und SIO im MAME bereinigen, damit es vernünftig ging.
WEGA bootet, friert aber immer irgendwann ein, da habe ich schon vor 10 Jahren aufgegeben, da den Fehler zu finden.

Ich habe P8000emu noch laufen und wollte demnächst mal die C-Compiler Diskette in ein CQM Image konvertieren und den Compiler auf dem P8000 UDOS testen.
Eigenlich sollte es kein Problem sein, sowohl der PC1715, wo die Disketten herstammen als auch der P8000 nutzen das gleiche physische Disk Layout (80x16x2x256) und $NDOS als Dateisystemtreiber.
Ich vermute mal, auch auf dem A5120 UDOS-5 ($DDOS als Treiber) läuft die Software.
Das einzige nicht kompatible dürften Programme sein, die Bildschirmsteuercodes benutzen.
Da müsste die TERM.OBJ durch eine gerätespezifische Version (beim P8000 ADM31 Steuercodes) ersetzt werden.

Meine Hardware, auf der ich permanent arbeite, ist ebenfalls kompatibel zu diesen UDOS'en. Nur brauche ich ANSI Escape Sequenzen (VT100) bei meinem Terminal.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?

Dieser Beitrag wurde am 02.07.2025 um 22:13 Uhr von Early8Bitz 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