; ******************************************************* ; * * ; * Turbo Pascal Runtime Library Version 5.5 * ; * Software Interrupt Routines * ; * * ; * Copyright (C) 1988,89 Borland International * ; * * ; ******************************************************* TITLE INTR IFDEF _DPMI_ .286P ENDIF DATA SEGMENT WORD PUBLIC EXTRN SelectorInc:WORD DATA ENDS CODE SEGMENT BYTE PUBLIC ASSUME CS:CODE,DS:DATA PUBLIC MsDos MsDos PROC FAR POP SI POP DX POP CX POP BX MOV AL,21H PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MsDos ENDP PUBLIC Intr Intr PROC FAR PUSH BP PUSH DS MOV BP,SP IFDEF _DPMI_ MOV AX,CS ADD AX,SelectorInc MOV DS,AX PUSH WORD PTR DS:Interrupt PUSH DS MOV AL,[BP+12] MOV BYTE PTR DS:Interrupt[1],AL ELSE PUSH WORD PTR CS:Interrupt MOV AL,[BP+12] MOV BYTE PTR CS:Interrupt[1],AL ENDIF LDS SI,[BP+8] CLD LODSW PUSH AX LODSW MOV BX,AX LODSW MOV CX,AX LODSW MOV DX,AX LODSW MOV BP,AX LODSW PUSH AX LODSW MOV DI,AX LODSW PUSH AX LODSW IFDEF _DPMI_ VERR AX JNZ @@1 MOV ES,AX @@1: POP AX VERR AX JNZ @@2 MOV DS,AX @@2: ELSE MOV ES,AX POP DS ENDIF POP SI POP AX Interrupt: INT 0 PUSHF PUSH ES PUSH DI PUSH BP MOV BP,SP IFDEF _DPMI_ LES DI,[BP+20] ELSE LES DI,[BP+18] ENDIF CLD STOSW MOV AX,BX STOSW MOV AX,CX STOSW MOV AX,DX STOSW POP AX STOSW MOV AX,SI STOSW POP AX STOSW MOV AX,DS STOSW POP AX STOSW POP AX STOSW IFDEF _DPMI_ POP DS POP WORD PTR DS:Interrupt ELSE POP WORD PTR CS:Interrupt ENDIF POP DS POP BP RET 6 Intr ENDP CODE ENDS END