DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > Global Vektor | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2018-06-23, 09:22 h jolo Posts: 110 User |
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 [ - Answer - Quote - Direct link - ] |
2018-06-26, 16:59 h o1i Posts: 43 User |
@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. [ - Answer - Quote - Direct link - ] |
2018-06-27, 19:56 h jolo Posts: 110 User |
@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 [ - Answer - Quote - Direct link - ] |
2018-07-03, 04:45 h wawa Posts: 314 User |
>jemand bei AROS aktiv ist, der sich damit richtig auskennt. toni wilen? [ - Answer - Quote - Direct link - ] |
2018-07-03, 04:53 h wawa Posts: 314 User |
@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. [ - Answer - Quote - Direct link - ] |
2018-07-04, 21:45 h jolo Posts: 110 User |
@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 [ - Answer - Quote - Direct link - ] |
2018-07-09, 03:57 h wawa Posts: 314 User |
@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. ] [ - Answer - Quote - Direct link - ] |
2018-07-09, 11:42 h thomas Posts: 7718 User |
@wawa: Die Uhr ist sicher in C geschrieben und nicht in BCPL. -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Answer - Quote - Direct link - ] |
2018-07-09, 14:11 h wawa Posts: 314 User |
@thomas: gibt es irgendwelche amiga bcpl binaries die ich unter aros ausprobieren könnte? [ - Answer - Quote - Direct link - ] |
2018-07-09, 19:27 h jolo Posts: 110 User |
@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 [ - Answer - Quote - Direct link - ] |
2018-07-10, 11:45 h DaxB Posts: 1422 User |
Zitat:Ä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? [ - Answer - Quote - Direct link - ] |
2018-07-10, 14:35 h thomas Posts: 7718 User |
@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/ [ - Answer - Quote - Direct link - ] |
2018-07-10, 21:33 h wawa Posts: 314 User |
@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. [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Global Vektor | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |