home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 07 / interrpt / makeint.inc < prev    next >
Encoding:
Text File  |  1987-06-10  |  2.5 KB  |  115 lines

  1. TYPE
  2.   IntEntry_ =
  3.     RECORD
  4.       Offset, Segment : INTEGER;
  5.     END;
  6.  
  7. PROCEDURE
  8.   IntChipRestart;
  9.     BEGIN
  10.       Port[$20] := $20;
  11.     END;
  12.  
  13. CONST
  14.  IntChipMaskPort     = $21;
  15.    IntChipTimerMask    = $01;
  16.    IntChipKeyboardMask = $02;
  17.    IntChipCassetteMask = $03;
  18.    IntChipCom2Mask     = $08;
  19.    IntChipCom1Mask     = $10;
  20.    IntChipBscMask      = $18;
  21.    IntChipDiskMask     = $20;
  22.    IntChipFloppyMask   = $40;
  23.    IntChipPrinterMask  = $80;
  24.  
  25. PROCEDURE
  26.   IntChipEnable (Mask: Byte);
  27.     VAR Section : CriticalSection_;
  28.     BEGIN
  29.       CriticalBegin (Section);
  30.         Port [IntChipMaskPort]:=
  31.           Port [IntChipMaskPort]
  32.             AND NOT Mask;
  33.       CriticalEnd (Section);
  34.     END;
  35.  
  36. PROCEDURE
  37.   IntChipDisable (Mask: Byte);
  38.     VAR Section : CriticalSection_;
  39.     BEGIN
  40.       CriticalBegin (Section);
  41.         Port [IntChipMaskPort]:=
  42.           Port [IntChipMaskPort]
  43.             OR Mask;
  44.       CriticalEnd (Section);
  45.     END;
  46.  
  47. CONST
  48.   IntPrintScreen       = $05;
  49.   IntHardwareTimer     = $08;
  50.   IntHardwareKeyboard  = $09;
  51.   IntCassette          = $0A;
  52.   IntCom2              = $0B;
  53.   IntBscReceive        = $0B;
  54.   IntCom1              = $0C;
  55.   IntBscSend           = $0C;
  56.   IntHardwareDisk      = $0D;
  57.   IntHardwareDiskette  = $0E;
  58.   IntCentronics        = $0F;
  59.   IntKeyBoard          = $16;
  60.   IntPrinter           = $17;
  61.   IntBootstrap         = $19;
  62.   IntTimeOfDay         = $1A;
  63.   IntCtrlBreak         = $1B;
  64.   IntTimer             = $1C;
  65.  
  66. PROCEDURE
  67.   IntGet
  68.     (IntNr: Byte;
  69.      VAR Segment, Offset : Integer);
  70.     VAR Regs8088 : Regs8088_;
  71.     BEGIN
  72.       WITH Regs8088 DO
  73.         BEGIN
  74.           Ah:= $35;
  75.           Al:= IntNr;
  76.           MsDos (Regs8088);
  77.           Segment:= Es;
  78.           Offset:= Bx;
  79.         END;
  80.     END;
  81.  
  82. PROCEDURE
  83.   IntSet
  84.     (IntNr: Byte;
  85.      Segment, Offset : INTEGER);
  86.     VAR Regs8088 : Regs8088_;
  87.         SaveDs : INTEGER
  88.                  ABSOLUTE Cseg:$00A0;
  89.     BEGIN
  90.       SaveDs:= Dseg;
  91.       WITH Regs8088 DO
  92.         BEGIN
  93.           Ah:= $25;
  94.           Al:= IntNr;
  95.           Ds:= Segment;
  96.           DX:= Offset;
  97.           MsDos (Regs8088);
  98.         END;
  99.     END;
  100.  
  101. PROCEDURE
  102.   MakeResident;
  103.     VAR Regs8088 : Regs8088_;
  104.     BEGIN
  105.       WITH Regs8088 DO
  106.         BEGIN
  107.           Ah:= $31;
  108.           Dx:= Seg (HeapPtr^)
  109.                - Cseg
  110.                + ((Ofs (HeapPtr^)+15)
  111.                    SHR 4);
  112.               MsDos (Regs8088);
  113.             END;
  114.         END;
  115.