; ; (c)Copyright Sealevel Systems Incorporated, 1993 - 1995 ; ;INTDRIVE.ASM - INTERRUPT DRIVEN MONITOR PROGRAM ; - SELECT 378 HEX BASE ADDRESS AND IRQ7 ON THE SEALEVEL BOARD ; - DATA RECEIVED WILL BE DISPLAYED USING THE BIOS WRITE FUNCTION DATAPORT EQU 378H ;DATA PORT = BASE ADDRESS CONTROL EQU 37AH ;CONTROL PORT = BASE+2 CODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: JMP OVER MESS DB 'Receiving - press any key to exit.',10,13,'$' OLDMASK DB 0 OLDSEG DW 0 OLDOFF DW 0 OVER: MOV DX,OFFSET MESS ;PRINT THE MESSAGE MOV AH,9 INT 21H MOV DX,CONTROL ;CONTROL PORT MOV AL,30H ;BIT D5 = INTERRUPT ENABLE OUT DX,AL ;BIT D4 = INPUT MODE ENABLED MOV AX,350FH ;GET OLD IRQ7 VECTOR INT 21H MOV OLDSEG,ES ;SAVE OLD SEGMENT MOV OLDOFF,BX ;SAVE OLD OFFSET MOV AX,250FH ;SET NEW IRQ7 VECTOR MOV DX,OFFSET NEW7 INT 21H IN AL,21H ;READ THE 8259 MASK MOV OLDMASK,AL ;SAVE IT AND AL,01111111B ;ALLOW IRQ7 OUT 21H,AL ;MAKE IT SO MOV AH,0 ;WAIT FOR ANY KEYSTROKE - THE MONITOR INT 16H ;RUNS IN THE BACKGROUND PUSH DS MOV AX,250FH ;RESTORE OLD IRQ7 VECTOR MOV DX,OLDOFF MOV DS,CS:[OLDSEG] INT 21H POP DS MOV AL,OLDMASK ;RESTORE OLD 8259 MASK OUT 21H,AL MOV AX,4C00H ;EXIT INT 21H NEW7 PROC FAR STI ;INTERRUPTS BACK ON PUSH AX ;SAVE REGISTERS USED PUSH BX PUSH DX MOV DX,DATAPORT ;READ THE DATA IN AL,DX MOV AH,14 ;PRINT IT USING THE BIOS PRINT FUNCTION MOV BH,0 INT 10H MOV AL,20H ;EOI TO 8259 CONTROLLER OUT 20H,AL POP DX ;RESTORE REGISTERS POP BX POP AX IRET ;RETURN FROM INTERRUPT NEW7 ENDP CODE ENDS END START