home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l040 / 13.ddi / RTLDOS.ZIP / SWAP.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-10-28  |  1.6 KB  |  116 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *    Turbo Pascal Runtime Library Version 5.5    *
  5. ; *    Interrupt Vector Swapping            *
  6. ; *                            *
  7. ; *    Copyright (C) 1988,89 Borland International    *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    SWAP
  12.  
  13.     LOCALS    @@
  14.  
  15. DATA    SEGMENT    WORD PUBLIC
  16.  
  17.     EXTRN    SaveInt00:DWORD
  18.  
  19. DATA    ENDS
  20.  
  21. CODE    SEGMENT    BYTE PUBLIC
  22.  
  23.     ASSUME    CS:CODE,DS:DATA
  24.  
  25.     PUBLIC    SwapVectors
  26.  
  27.     IFDEF _DPMI_
  28.  
  29. SwapVectors    PROC    FAR
  30.  
  31.     MOV    DI,OFFSET SaveInt00
  32.     MOV    SI,OFFSET SaveIntTab
  33.     MOV    CX,SaveIntCnt
  34.     CLD
  35. @@1:    PUSH    CX
  36.     SEGCS    LODSW
  37.     MOV    BL,AH
  38.     MOV    AH,2
  39.     INT    31H
  40.     XCHG    DX,[DI]
  41.     XCHG    CX,[DI+2]
  42.     INC    AX
  43.     INT    31H
  44.     POP    CX
  45.     ADD    DI,4
  46.     LOOP    @@1
  47.     RET
  48.  
  49. SwapVectors    ENDP
  50.  
  51. ; Saved interrupt and exception numbers
  52.  
  53. SaveIntTab    LABEL    BYTE
  54.  
  55.     DB    2,00H
  56.     DB    4,02H
  57.     DB    2,0CH
  58.     DB    2,0DH
  59.     DB    4,1BH
  60.     DB    4,21H
  61.     DB    0,23H
  62.     DB    0,24H
  63.     DB    4,34H
  64.     DB    4,35H
  65.     DB    4,36H
  66.     DB    4,37H
  67.     DB    4,38H
  68.     DB    4,39H
  69.     DB    4,3AH
  70.     DB    4,3BH
  71.     DB    4,3CH
  72.     DB    4,3DH
  73.     DB    4,3EH
  74.     DB    4,3FH
  75.     DB    4,75H
  76.  
  77. SaveIntCnt    EQU    ($-SaveIntTab)/2
  78.  
  79.     ELSE
  80.  
  81. SwapVectors    PROC    FAR
  82.  
  83.     MOV    DI,OFFSET SaveInt00
  84.     MOV    SI,OFFSET SaveIntTab
  85.     MOV    CX,SaveIntCnt
  86.     CLD
  87. @@1:    SEGCS    LODSB
  88.     MOV    AH,35H
  89.     INT    21H
  90.     PUSH    ES
  91.     PUSH    BX
  92.     PUSH    DS
  93.     LDS    DX,[DI]
  94.     MOV    AH,25H
  95.     INT    21H
  96.     POP    DS
  97.     POP    WORD PTR [DI]
  98.     POP    WORD PTR [DI+2]
  99.     ADD    DI,4
  100.     LOOP    @@1
  101.     RET
  102.  
  103. SwapVectors    ENDP
  104.  
  105. ; Saved interrupt numbers
  106.  
  107. SaveIntTab    DB    00H,02H,1BH,21H,23H,24H,34H,35H,36H,37H
  108.         DB    38H,39H,3AH,3BH,3CH,3DH,3EH,3FH,75H
  109. SaveIntCnt    EQU    $-SaveIntTab
  110.  
  111.     ENDIF
  112.  
  113. CODE    ENDS
  114.  
  115.     END
  116.