![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo Eckhard. > Beide Programmteile werden mit dem Befehl "UIRTofl=ON " aufgerufen. Was passiert? Das ist eine gute Frage, die vielleicht noch nicht vollends verständlich in der OM-Dokumentation beantwortet wird. Durch Setzen eines der UIR...-Bits läßt sich eine Inline-Interrupt-Assemblerroutine (IIAR) oder eine Assemblerroutine im SYSCODE-Bereich in einen Interrupt einbinden. Die IIAR hat generell die höhere Priorität. Das heißt, die Assemblerroutine im SYSCODE-Bereich wird nur dann ausgeführt, wenn die OM keine IIAR finden konnte. Das wird auch bei IIARFND beschrieben: "Dieses Flag signalisiert dem Betriebssystem, daß eine INLINE-Interrupt-Assemblerroutine gefunden wurde und diese anstatt einer Interruptroutine im SYCODE-Bereich verwendet werden soll." Die interne Variable IIARFND sollte der Anwender nur auslesen und unverändert lassen. Assembler-Interruptroutinen können auf der OM also entweder per SYSCODE (also S19) oder IIAR realisiert werden. Aber es ist standardmäßig nicht beides aktiv. SYSCODE wird eigentlich nur noch aus Kompatiblitätsgründen unterstützt. Es hat aber auch seine Vorteile, wenn ein Anwender einen externen Assembler auf der OM nutzen möchte. Wenn man trotz aktiver IIAR eine im SYSCODE-Bereich stehende Interruptroutine aufrufen lassen möchte, kann man wie im folgenden Beispiel gezeigt von der IIAR in den SYSCODE-Bereich springen und dort alle noch nicht von der IIAR behandelten Interrupts auswerten. Dieses Hintereinanderlegen der Anwender-Interruptroutinen wie in einer Kette funktioniert natürlich nur, wenn die IIAR entsprechend programmiert wurde ("cbeqa #..." und "jmp" am Beginn). Bei den Systemerweiterungen ist das der Fall. INCLUDE "omid.def" 'auf der Open-Micro: INCLUDE "om.def" ' restliche Definitionen INCLUDE "extports.iia" 'Systemerweiterung einbinden PROCEDURE JumpToSyscode INLASM ! jmp &hfd00 END PROCEDURE #main ' Hauptprogramm END INCLUDE "om_i2c.pro" 'Hilfsroutinen INCLUDE "om_fw.pro" SYSCODE "meins.s19" 'Assembler im SYSCODE, auf Adresse &hfd00 Viele Grüße Dietmar Meine Homepage: http://ccintern.dharlos.de |
Antwort schreiben |