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

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *    Turbo Pascal Runtime Library Version 5.5    *
  5. ; *    Software Interrupt Routines            *
  6. ; *                            *
  7. ; *    Copyright (C) 1988,89 Borland International    *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    INTR
  12.  
  13.     IFDEF _DPMI_
  14.     .286P
  15.     ENDIF
  16.  
  17. DATA    SEGMENT    WORD PUBLIC
  18.  
  19.     EXTRN    SelectorInc:WORD
  20.  
  21. DATA    ENDS
  22.  
  23. CODE    SEGMENT    BYTE PUBLIC
  24.  
  25.     ASSUME    CS:CODE,DS:DATA
  26.  
  27.     PUBLIC    MsDos
  28.  
  29. MsDos        PROC    FAR
  30.  
  31.     POP    SI
  32.     POP    DX
  33.     POP    CX
  34.     POP    BX
  35.     MOV    AL,21H
  36.     PUSH    AX
  37.     PUSH    BX
  38.     PUSH    CX
  39.     PUSH    DX
  40.     PUSH    SI
  41.  
  42. MsDos        ENDP
  43.  
  44.     PUBLIC    Intr
  45.  
  46. Intr        PROC    FAR
  47.  
  48.         PUSH    BP
  49.         PUSH    DS
  50.         MOV     BP,SP
  51.     IFDEF _DPMI_
  52.     MOV    AX,CS
  53.     ADD    AX,SelectorInc
  54.     MOV    DS,AX
  55.     PUSH    WORD PTR DS:Interrupt
  56.     PUSH    DS
  57.     MOV    AL,[BP+12]
  58.     MOV    BYTE PTR DS:Interrupt[1],AL
  59.     ELSE
  60.     PUSH    WORD PTR CS:Interrupt
  61.     MOV    AL,[BP+12]
  62.     MOV    BYTE PTR CS:Interrupt[1],AL
  63.     ENDIF
  64.     LDS    SI,[BP+8]
  65.     CLD
  66.     LODSW
  67.     PUSH    AX
  68.     LODSW
  69.     MOV    BX,AX
  70.     LODSW
  71.     MOV    CX,AX
  72.     LODSW
  73.     MOV    DX,AX
  74.     LODSW
  75.     MOV    BP,AX
  76.     LODSW
  77.     PUSH    AX
  78.     LODSW
  79.     MOV    DI,AX
  80.     LODSW
  81.     PUSH    AX
  82.     LODSW
  83.     IFDEF _DPMI_
  84.         VERR    AX
  85.     JNZ    @@1
  86.     MOV    ES,AX
  87. @@1:    POP    AX
  88.     VERR    AX
  89.     JNZ    @@2
  90.     MOV    DS,AX
  91. @@2:
  92.     ELSE
  93.     MOV    ES,AX
  94.     POP    DS
  95.     ENDIF
  96.     POP    SI
  97.     POP    AX
  98.  
  99. Interrupt:    INT    0
  100.  
  101.     PUSHF
  102.     PUSH    ES
  103.     PUSH    DI
  104.     PUSH    BP
  105.     MOV    BP,SP
  106.     IFDEF _DPMI_
  107.     LES    DI,[BP+20]
  108.     ELSE
  109.     LES    DI,[BP+18]
  110.     ENDIF
  111.     CLD
  112.     STOSW
  113.     MOV    AX,BX
  114.     STOSW
  115.     MOV    AX,CX
  116.     STOSW
  117.     MOV    AX,DX
  118.     STOSW
  119.     POP    AX
  120.     STOSW
  121.     MOV    AX,SI
  122.     STOSW
  123.     POP    AX
  124.     STOSW
  125.     MOV    AX,DS
  126.     STOSW
  127.     POP    AX
  128.     STOSW
  129.     POP    AX
  130.     STOSW
  131.     IFDEF _DPMI_
  132.     POP    DS
  133.     POP    WORD PTR DS:Interrupt
  134.     ELSE
  135.     POP    WORD PTR CS:Interrupt
  136.     ENDIF
  137.     POP    DS
  138.     POP    BP
  139.     RET    6
  140.  
  141. Intr        ENDP
  142.  
  143. CODE    ENDS
  144.  
  145.     END
  146.