amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > Global Vektor [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

23.06.2018, 09:22 Uhr

jolo
Posts: 110
Nutzer
Global Vektor - das AmigaDOS der ersten Stunden.

Ich habe mich mehr oder weniger mit dem in BCPL verfassten AmigaDOS beschäftigt und stelle mir gerade die Frage, ob es irgendwo halbwegs offizielle Bezeichner der Funktionsindexe und Variablen gibt, also die Positiven, im Bereich von 0 bis 133, evtl. auch die Bezeichner für die CLI-Struktur von 134 bis 149, obschon ich deren Bezeichnung als unwichtig erachte.

Hintergrund ist der, dass ich nur anhand der Funktionen bzw. der benutzen Variablen-Einträge Mutmaßungen für die Bezeichnung anstellen kann.

Ich glaube mich zu erinnern, dass die Indexe mit "g_" eingeleitet wurden, bin mir aber nicht mehr sicher, da ich auf keiner Entwickler-CD irgendwelche Beispiele, die diese verwenden, finde. Vielleicht narrt mich hier auch mein Gedächtnis.
Und bitte nicht auf AROS verweisen; dort ist die Tabelle (Vektor) massiv fehlerhaft, und wenn die Indexe fehlerhaft sind, gehe ich davon aus, dass es die Bezeichner erst recht sind.

Hintergrund warum ich mich eigentlich mit der Materie beschäftigt habe ist der, dass ich ein OS2+ CLI-Programm auf OS1.2 zurück portieren wollte, dabei aber eine Funktion wie ReadArgs() benötigte, diese wiederum im BCPL geschriebenen AmigaDOS existiert, die ich somit auch verwenden konnte, jedoch so neugierig wurde, dass ich das halbe in BCPL geschriebene AmigaDOS disassembliert habe und mittlerweile recht geübt im Schreiben von OS1.2 CLI Kommandos bin, inklusive Schreiben eines Startup-Codes der diesen globalen Vektor "privatisiert".

Aus sentimentalen Gründen möchte ich nun mein erlangtes Wissen auf Aminet "sichern", dabei stehen mir aber die Bezeichner im Weg.

Hat irgendjemand eine Quelle für mich?


Grüße

--
Stupid mistakes are always made by others -
we only make unavoidable errors

[ - Antworten - Zitieren - Direktlink - ]

26.06.2018, 16:59 Uhr

o1i
Posts: 42
Nutzer
@jolo:

Schade, wollte gerade auf AROS verweisen ;-).

Aber wenn dort Fehler sind, waere es natuerlich schoen, wenn du die meldest, auch wenn ich nicht glaube, dass aktuell jemand bei AROS aktiv ist, der sich damit richtig auskennt.

Aber vielleicht hilft ja das archivierte Wissen ebenfalls. Dokumentation hier ist jedenfalls sicher hilfreich.

Im Idealfall kannst du die Fehler in AROS ja selbst beheben, Hilfe ist da immer willkommen.

[ - Antworten - Zitieren - Direktlink - ]

27.06.2018, 19:56 Uhr

jolo
Posts: 110
Nutzer
@o1i:

Ich sehe keinen Bedarf der AROS-Entwickler dort nachzubessern; keiner verwendet heutzutage noch diesen globalen Vektor ( außer den OS1.2/1.3 CLI-Kommandos und meiner Wenigkeit! ;-) ).

Fehler im AROS Kernel werde ich nicht beheben, da ich dafür keine Zeit und auch keinen GCC installiert habe.
Mein GCC (3.3.0) für AROS x86 beschränkt sich darauf, Programme übersetzen zu können; dieser kann aber kein Betriebssystem erstellen - dazu müsste ich die Konfiguration nochmals überarbeiten und ein komplett neues GNU-C Toolchain bauen. Dazu fehlt mir aber schlichtweg die Muße.

Eine kleine, oberflächliche Dokumentation zu den verwendeten BCPL-Funktionen werde ich aber beifügen - diese ist aber eher für Nostalgiker wie mich gedacht denn fürs seriöse programmieren neuerer Betriebssysteme.

Grüße

--
Stupid mistakes are always made by others -
we only make unavoidable errors

[ - Antworten - Zitieren - Direktlink - ]

03.07.2018, 04:45 Uhr

wawa
Posts: 314
Nutzer
>jemand bei AROS aktiv ist, der sich damit richtig auskennt.

toni wilen?

[ - Antworten - Zitieren - Direktlink - ]

03.07.2018, 04:53 Uhr

wawa
Posts: 314
Nutzer
@jolo:
>Ich sehe keinen Bedarf der AROS-Entwickler dort nachzubessern; keiner verwendet heutzutage noch diesen globalen Vektor ( außer den OS1.2/1.3 CLI-Kommandos und meiner Wenigkeit! ;-) ).

wäre aber eventuell von bedeutung, um aros68k kompatibilität gegebüber kick 1.x zu verbessern. zugegeben ich habe keine ahnung davon.

>Mein GCC (3.3.0) für AROS x86 beschränkt sich darauf, Programme übersetzen zu können;

besser wäre es in form von source. aros linux x86 basierten crosscompiler ist ziemlich einfach aufzusetzen, ich spielte schon mit gedanken ein vmware image anzubieten. verstehe aber wenn du keine lust und zeit hast. falls du aber code oder testcases hast, kann ich sie vielleicht kompilieren, zumindest für abi v1 x86, ppc oder 68k.

[ - Antworten - Zitieren - Direktlink - ]

04.07.2018, 21:45 Uhr

jolo
Posts: 110
Nutzer
@wawa:
Wirklich, man braucht den ganzen Kram heutzutage nicht mehr. Ich hab ja auch nur nach den Bezeichnern gefragt, bzw. ob evtl. jemand da etwas halb-offizielles in petto hätte.

Der globale Vektor unter Kickstart 1.x wird ja nur darum verwendet, weil BCPL keinen Linker einsetzte, sondern Module als Segmente eines Programms betrachtete, ergo mussten irgendwo diese globalen Funktionen seitens der Module (Segmente) bereitgestellt, um letztendlich dem Programm zugänglich gemacht zu werden. Also ist ein globaler Vektor unter BCPL nichts weiter als eine Krücke für den fehlenden Linker, über den sich die Segmente austauschen, wobei das Programm selber auch nur ein weiteres Segment ist.

Das Ganze ist aber auch nicht soooo einfach wie es sich anhört, sondern basiert auf BCPL-Richtlinien, die irgendwann in den 60er Jahren des letzten Jahrhunderts spezifiziert wurden. Demnach muss der "BCPL Loader" ein Haufen Arbeit übernehmen, damit BCPL-Programme überhaupt gestartet werden können (globalen Vektor erstellen, Segmente laden (falls diese weder im ROM noch RAM gefunden wurden) damit diese sich in den bereitgestellten globalen Vektor eintragen können, dann das eigentliche Programm laden und dieses den globalen Vektor bekannt machen; schauen welche Initialisierung seitens des Programmes gewünscht wird und vieles mehr).

Wir benutzen dafür heutzutage einen linearen, geraden Weg und entweder statische Linker-Bibliotheken oder Betriebssystemfunktionen in sogenannten Shared-Libraries, was bedeutend einfacher ist.

Um AROS Kickstart 1.x Kompatibilität beizubringen, müsste erst einmal der BCPL-Loader geschrieben und alle DOS-Segmente ins BCPL-Modul-Format konvertiert werden, scheitert dann aber trotzdem, weil das ROM zwingend ab 0xFC0000 im Speicher eingeblendet werden müsste, weil BCPL-Segment-Initialisierung Stunts benutzt, um herauszufinden, ob Segmente im ROM oder RAM liegen. Und das ist nicht das einzige Kunststück, das sich das AmigaDOS der alten Schule leistet, ganz zu schweigen von den CLI-Kommandos der ersten Stunde...

Fazit: Nicht über eine Neuimplementierung nachdenken und abhaken.

--
Stupid mistakes are always made by others -
we only make unavoidable errors

[ - Antworten - Zitieren - Direktlink - ]

09.07.2018, 03:57 Uhr

wawa
Posts: 314
Nutzer
@jolo:
aros 68k kann soweit ich mich erinnere generell ks1.x software ausführen.
ich teste hin und wieder auch was altes von aminet, aber die uhr von wb1.3 (?) war glaube ich eins der ersten vorzeigenummer.

[ Dieser Beitrag wurde von wawa am 09.07.2018 um 04:00 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

09.07.2018, 11:42 Uhr

thomas
Posts: 7716
Nutzer
@wawa:

Die Uhr ist sicher in C geschrieben und nicht in BCPL.
--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

09.07.2018, 14:11 Uhr

wawa
Posts: 314
Nutzer
@thomas:
gibt es irgendwelche amiga bcpl binaries die ich unter aros ausprobieren könnte?

[ - Antworten - Zitieren - Direktlink - ]

09.07.2018, 19:27 Uhr

jolo
Posts: 110
Nutzer
@wawa:
BCPL kompilierte Programme befinden sich im C:-Verzeichnis der Workbench Diskette.
Allerdings gibt es auch da einige, die in C verfasst wurden, z.B. SetClock, oder einen Mix aus Assembler und BCPL benutzten, siehe Ed.
List, Dir, Install, Join, Delete usw. sind BCPL kompiliert. Du kannst das daran erkennen, dass der Startup-Code 316 Bytes groß ist und jedes BCPL kompiliertes Objekt nur aus zwei Code-Hunks besteht, Position-unabhängig geschrieben wurde und die Objekt-Datei recht klein ist. Oder Du benutzt das Fragezeichen nach dem Kommandonamen, steht dann da ein Template, ist es in BCPL geschrieben, z.B. "Ask ?" -> "PROMPT/A:".

Aber wie schon einmal gesagt, solange das DOS nicht ab 0xFC0000 eingeblendet wird, geht das ganze Unterfangen schief, egal ob AROS korrekt die Funktionen nachbildet. Unter Umständen verwenden CLI Programme GOTOs anstatt Funktionen des globalen Vektors, die anhand einer festen Distanz relativ zum Inhalt des Register A4 aufgerufen wurden. Hier braucht es das originale ROM, weil sich Abstände zu Instruktionen nicht ändern dürfen (alte Funktionsadresse + feste Distanz = GOTO-Adresse).

Wie schon einmal gesagt, das Ganze besser einfach vergessen, da Funktionen die über den globalen Vektor erreicht wurden, eh nicht zur offiziellen API gehörten.

Grüße

--
Stupid mistakes are always made by others -
we only make unavoidable errors

[ - Antworten - Zitieren - Direktlink - ]

10.07.2018, 11:45 Uhr

DaxB
Posts: 1421
Nutzer
Zitat:
Original von jolo:Oder Du benutzt das Fragezeichen nach dem Kommandonamen, steht dann da ein Template, ist es in BCPL geschrieben, z.B. "Ask ?" -> "PROMPT/A:".
Ähmm, wirklich? Ein Template bekommt man doch bei so gut wie jedem Kommandozeilenprogramm. Also Template = BCPL kann ich mir irgendwie nicht vorstellen. Meinst du vielleicht was anderes?

[ - Antworten - Zitieren - Direktlink - ]

10.07.2018, 14:35 Uhr

thomas
Posts: 7716
Nutzer
@DaxB:

BCPL kompilierte Programme befinden sich im C:-Verzeichnis der Workbench 1.3 Diskette.

Der Zusatz fehlte oben.

Seit Kick 2.0 sind Funktionen wie ReadArgs auch C-Programmen zugänglich, weshalb es da auch C-Programme mit Templates gibt.


--
Email: thomas-rapp@web.de
Home: thomas-rapp.homepage.t-online.de/

[ - Antworten - Zitieren - Direktlink - ]

10.07.2018, 21:33 Uhr

wawa
Posts: 314
Nutzer
@jolo
ich bestehe ja auf nix, nur so interesehalber..
leider hab ich grad hier keinen kick 1.3 glaube ich. im aminet gibts nicht dergleichen? aber macht euch wie gesagt keine mühe, extra zu suchen, so wichtig ist das nicht.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > Global Vektor [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.