home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / bootctrl / driver.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-06  |  2.0 KB  |  53 lines

  1. /* ------------------------------------------------- */
  2. /*                     DRIVER.H                      */
  3. /*        (c) 1991 Elmar Warken & DMV-Verlag         */
  4. /* Die Datei stellt die Interruptroutine für Geräte- */
  5. /* treiber bereit, hier auf die Beantwortung des     */
  6. /* Initialisierungsbefehls spezialisiert:            */
  7. /* Die Funktion go(), die das diese Datei einbinden- */
  8. /* de Programm statt main() haben muß, wird aufgeru- */
  9. /* fen, dann wird DOS veranlaßt, den Treiber wieder  */
  10. /* aus dem Speicher zu entfernen.                    */
  11. /* ------------------------------------------------- */
  12.  
  13. extern struct {
  14. /* Struktur des Request-Headers für Gerätetreiber.   */
  15. /* Zur Gerätetreiberprogrammierung siehe DOS Extra 5 */
  16.   char x[3];
  17.   int R;       /* Rückgabewert u. Fehlercode         */
  18.   char y[9];
  19.   int O, S;    /* Seg:Offs der Adresse, ab der  der  */
  20.                /* Speicher freigegeben werden soll   */
  21.   char far *l; /* In diesem speziellen Fall Zeiger   */
  22.                /* auf "=" in der Config-Datei        */
  23. } far *p;
  24.  
  25. void far go(); /* Forward                            */
  26.  
  27. void far M()
  28. {
  29.   /* Sichern der Register AX,BX,CX,DX,DI,SI,DS und   */
  30.   /* ES. Ab 286er empfehlenswert:                    */
  31.   /* asm pusha;                                      */
  32.   /* im Menü Compiler/Codegeneration dann 80286-C    */
  33.   /* Codeerzeugung erlauben                          */
  34.   asm dd 52515350h, 1e065657h;
  35.  
  36.   /* push cs; pop ds; Datensegment setzen            */
  37.   asm dw 1f0eh;
  38.  
  39.   /* Aufruf des eigentlichen Programms               */
  40.   go();
  41.  
  42.   /* Rückgabe an DOS:                                */
  43.   /* keine Installation/Speicher freigeben           */
  44.   p -> R = 256; p -> O = 0; p -> S = _CS;
  45.  
  46.   /* Zurückholen der Register vom Stack              */
  47.   asm dd 5f5e071fh,585b595ah
  48.   /* besser ab 80286 : asm popa;                     */
  49. }
  50.  
  51. /* ------------------------------------------------- */
  52. /*                Ende von DRIVER.H                  */
  53.