home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1988 / 05 / t3_tsr / makeint.inc < prev    next >
Encoding:
Text File  |  1988-02-24  |  2.1 KB  |  61 lines

  1. (* ------------------------------------------------------ *)
  2. (*                        MAKEINT.INC                     *)
  3. (*            Prozeduren zur Interrupt-Handhabung.        *)
  4. (* ------------------------------------------------------ *)
  5.  
  6. TYPE IntEntry_ = RECORD Offset, Segment : INTEGER; END;
  7.  
  8. (*                die Interrupt-Vektoren:                 *)
  9. CONST
  10.   IntPrintScreen       = $05;  IntHardwareTimer     = $08;
  11.   IntHardwareKeyboard  = $09;  IntCassette          = $0A;
  12.   IntCom2              = $0B;  IntBscReceive        = $0B;
  13.   IntCom1              = $0C;  IntBscSend           = $0C;
  14.   IntHardwareDisk      = $0D;  IntHardwareDiskette  = $0E;
  15.   IntCentronics        = $0F;  IntKeyBoard          = $16;
  16.   IntPrinter           = $17;  IntBootstrap         = $19;
  17.   IntTimeOfDay         = $1A;  IntCtrlBreak         = $1B;
  18.   IntTimer             = $1C;
  19.  
  20. (*                Interrupt-Vektor holen:                 *)
  21. PROCEDURE IntGet (IntNr:Byte; VAR Segment,Offset: Integer);
  22. VAR Regs8088 : Regs8088_;
  23. BEGIN
  24.   WITH Regs8088 DO BEGIN
  25.     Ah:= $35;  Al:= IntNr;  MsDos (Regs8088);
  26.     Segment:= Es;  Offset:= Bx;
  27.   END;
  28. END;
  29. (*                Interrupt-Vektor setzen:                *)
  30. PROCEDURE IntSet (IntNr: Byte; Segment, Offset : INTEGER);
  31. VAR Regs8088 : Regs8088_;
  32.     SaveDs : INTEGER ABSOLUTE Cseg:$00A0;
  33. BEGIN
  34.   SaveDs:= Dseg;
  35.   WITH Regs8088 DO BEGIN
  36.     Ah:= $25;  Al:= IntNr;  Ds:= Segment;  DX:= Offset;
  37.     MsDos (Regs8088);
  38.   END;
  39. END;
  40. (*             Interrupt-Routine resident machen:         *)
  41. PROCEDURE MakeResident;
  42. VAR Regs8088 : Regs8088_;
  43. BEGIN
  44.   WITH Regs8088 DO BEGIN
  45.     Ah:= $31;
  46.     Dx:= MemW[Cseg-1:0003];
  47.     MsDos (Regs8088);
  48.   END;
  49. END;
  50. (*             Speicherbereich freigeben                  *)
  51. FUNCTION MFree(BlockSegment: INTEGER): INTEGER;
  52. VAR Regs : Regs8088_;
  53. BEGIN
  54.   Regs.Es := BlockSegment;
  55.   Regs.Ax := $4900;
  56.   MsDos(Regs);
  57.   IF ODD(Regs.Flags) THEN MFree := Regs.Al
  58.                      ELSE MFree := 0;
  59. END;
  60. (* ------------------------------------------------------ *)
  61. (*                Ende von MAKEINT.INC                    *)