In message <fa1f923454.Alex@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> Alexander Ausserstorfer <bavariasound@xxxxxxxxxxxxxxx> wrote: > > Das ist natürlich gut: Im Buch von Bruce Smith wird nicht angegeben, > dass man die Dateien > > kernel.h > swis.h > > mit in den C-Code einbinden muss. Das habe ich erst dank deinem Link > gemerkt. > ACHTUNG bei swis.h. Die für den Norcroft sind die neuesten (angeblich soll bald eine neue Version herauskommen mit neuer überarbeiteter RISC OS Dokuemation). Aber auch hier fehlen immer mal wieder ein paar SWI-Defintionen und müssen von Hand nachgepflegt werden. > Die Bücher sind nicht so gut, wie ich es erwartet habe. Zu viele Lücken, > zu unvollständig. Ich habe nie eines außer den RISC OS PRMS gelesen. > > kernel.h und swis.h werden bereits mit GCC mitgeliefert. Aber jetzt > suche ich noch die Dokumentation dazu. Das sind die PRMs oder die Moduldokumentation dazu, bei nicht OS intern Modulen. > > In swis.h steht z. B. > > | #define PDriver_DeclareDriver 0x080156 > PRM Index Seite Index-73 PDriver_DeclareDriver -> &80156 -> 3-650 Da steht dann PDriver_DeclareDriver (SWI &80156) Registers a printer driver with the PDriver sharer module On entry R0 = pointer to reason code handler for driver usw. > Heißt das, dass beim Aufruf von PDriver_DeclareDriver die Adresse > 0x080156 angesprungen wird, also genau dort die Routine für den SWI > abgelegt ist? Ich versuche es nur zu verstehen. Bei den SWIs handelt es sich um einen ARM-Assembler Befehl, wo ein Teil eben genau diese SWI-Nummer enthält. Tritt ein SWI-Statement auf, so wird eine OS interne Handler Routine aufgerufen. Diese trennt dann die SWI-Nummer aus dem Assemblerbefehl ab und reicht den Aufruf mit den entsprechenden Registern an das Modul weiter, was sich vor bem OS dafür gemeldet hat, diesen SWI abzuarbeiten. Thomas Milius