home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1994-09-22 | 4.4 KB | 93 lines |
- DEFINITION MODULE MACHINE;
-
- (*****************************************************************************)
- (* Dieses Modul ist nur was fuer Spezialisten; da diese ohnehin wissen soll- *)
- (* ten, was mit diesen Prozeduren angerichtet werden kann, folgt hier auch *)
- (* keine grosse Erlaeuterung... *)
- (*___________________________________________________________________________*)
- (* 05-Mae-90 , Holger Kleinschmidt *)
- (*****************************************************************************)
-
- FROM SYSTEM IMPORT (* TYPE *) BYTE, ADDRESS;
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- TYPE
- CPUMode = ( USER, SUPERVISOR );
-
- IRLevel = ( IPL0, IPL1, IPL2, IPL3, IPL4, IPL5, IPL6, IPL7 );
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
-
- PROCEDURE ReadSysMem ((* EIN/ -- *) adr : LONGCARD;
- (* -- /AUS *) VAR wert : ARRAY OF BYTE );
-
- PROCEDURE WriteSysMem ((* EIN/ -- *) adr : LONGCARD;
- (* EIN/ -- *) wert : ARRAY OF BYTE );
-
- (*-------------------------------------------------------------------------
- | Mithilfe dieser Prozeduren kann auf RAM-Bereiche zugegriffen werden, die|
- | nur im Supervisormodus der CPU zugaenglich sind, also der Bereich der |
- | Systemvariablen. |
- | <adr> darf ungerade sein; es ist egal, in welchem Modus die CPU beim |
- | Aufruf dieser Prozeduren ist. Es werden HIGH( wert )+1 Bytes ueber- |
- | tragen. |
- -------------------------------------------------------------------------*)
-
-
- PROCEDURE BREAKPOINT; CODE( 4E4AH );
-
- (*-------------------------------------------------------------------------
- | Solange das MODULA-System unter Kontrolle des Laders laeuft, fuehrt |
- | TRAP #10 zur Unterbrechung des Programms mit Moeglichkeit zum Aufruf |
- | des Debuggers; scheint die gleiche Wirkung wie ein HALT zu haben. |
- -------------------------------------------------------------------------*)
-
- (*===========================================================================
-
- Die folgenden Prozeduren sind nur was fuer Leute, die genau wissen,
- was sie damit erreichen wollen !!
-
- ===========================================================================*)
-
-
- PROCEDURE CurrentCPUMode ( ): CPUMode;
-
- (*-------------------------------------------------------------------------
- | Liefert den momentanen CPU-Modus |
- -------------------------------------------------------------------------*)
-
-
- PROCEDURE SuperOn;
-
- PROCEDURE SuperOff;
-
- (*-------------------------------------------------------------------------
- | Schalten den Supervisormodus ein bzw. aus. |
- | Die beiden Prozeduren duerfen nur auf einer Ebene als 'Klammer' benutzt |
- | werden, d.h. innerhalb einer Prozedur: "SuperOn"..."SuperOff". Innerhalb|
- | dieses priviligierten Abschnitts duerfen also auch keine Prozeduren |
- | aufgerufen werden, die selber den Modus aendern, denn mit dem ersten |
- | auftretenden "SuperOff" ist wieder der Usermodus eingeschaltet. |
- -------------------------------------------------------------------------*)
-
-
- PROCEDURE CurrentIRLevel ( ): IRLevel;
-
- PROCEDURE SetIRLevel ((* EIN/ -- *) irlevel : IRLevel );
-
- (*-------------------------------------------------------------------------
- | Fragt die aktuelle Prioritaetsebene der CPU ab, bzw. setzt sie. |
- | Mit IPL6 bzw. IPL7 koennen z.B. saemtliche Interrupts unterbunden wer- |
- | den: wird der IR-Level allerdings nachher nicht wieder auf IPL3 runter- |
- | gesetzt, kann man sich auch aus dem System ausblenden - auf den Tasta- |
- | tur-IR wird dann naemlich auch nicht mehr reagiert... |
- | Mit IPL1 koennen die Horizantalblank-IRs des Videochips zugelassen wer- |
- | den - da hierdurch vor allem bei Schwarzweiss-Monitor ein erheblicher |
- | Teil der CPU-Kapazitaet beansprucht wird, laeuft alles im Schnecken- |
- | tempo ab. |
- -------------------------------------------------------------------------*)
-
- END MACHINE.
-