.xlist include kernel.inc include pdb.inc include tdb.inc .list DataBegin externW curTDB DataEnd sBegin CODE externD prevInt10proc assumes CS,CODE assumes ds, nothing assumes es, nothing ;-----------------------------------------------------------------------; ; IntnnHandlers - Handlers for int 0, 2, 4, 6, 7, 10, 3E, 75 ; ; ; ; Slimed in here for lack of a better place. ; ; Merely jump through the vector saved in the TDB ; ; ; ;-----------------------------------------------------------------------; cProc Int00Handler, cBegin nogen push bx mov bx, TDB_INTVECS IntnnCommon: sub sp, 2 ; Make room for dword (saved bx is push bp ; other word) mov bp, sp push ds SetKernelDS mov ds, CurTDB UnSetKernelDS push [bx] ; Fill in dword with vector contents pop [bp+2] mov bx, [bx+2] xchg bx, [bp+4] ; Fill in segment, recover bx pop ds pop bp retf cEnd nogen cProc Int02Handler, cBegin nogen push bx mov bx, TDB_INTVECS+4 jmps IntnnCommon cEnd nogen cProc Int04Handler, cBegin nogen push bx mov bx, TDB_INTVECS+8 jmps IntnnCommon cEnd nogen cProc Int06Handler, cBegin nogen push bx mov bx, TDB_INTVECS+12 jmps IntnnCommon cEnd nogen cProc Int07Handler, cBegin nogen push bx mov bx, TDB_INTVECS+16 jmps IntnnCommon cEnd nogen cProc Int3EHandler, cBegin nogen push bx mov bx, TDB_INTVECS+20 jmps IntnnCommon cEnd nogen cProc Int75Handler, cBegin nogen push bx mov bx, TDB_INTVECS+24 jmps IntnnCommon cEnd nogen ifdef WOW cProc Int10Handler, ;; QuattroPro for windows does direct VGA programming if they detect ;; that the monitor they are running on is a VGA. On NT if they program ;; the VGA we trap all the operations in NTVDM - but it makes QuattroPro ;; look very slow. So we lie to them here bl = 0 No monitor. That way ;; they don't do direct VGA programming and run fast. ;; - mattfe june 93 ;; ;; if function == 1h (get monitor type) ;; then return 0 - No monitor ;; else ;; chain into real int10 handler cBegin nogen cmp ah,1ah jne int10h_dontbother mov bl,00h IRET int10h_dontbother: jmp cs:prevInt10proc cEnd nogen endif; WOW ;-----------------------------------------------------------------------; ; FOR INT HANDLER SEE ; ; ; ; 21h i21entry.asm ; ; 3Fh ldint.asm ; ; ; ;-----------------------------------------------------------------------; sEnd CODE end