PAGE 80,132 ;=================================================================== ; PROGRAM LISTING 13.3 ; ; FUNCTION TO VERIFY THAT THE VIDEO SUBSYSTEM IS CURRENTLY IN A TEXT ; MODE. IF NOT IN A TEXT MODE, THE FUNCTION SETS THE VIDEO SUBSYSTEM ; TO THE MODE SPECIFIED BY THE INITIAL VIDEO MODE, WHICH IS RETURNED ; BY SOFTWARE INTERRUPT TYPE 11 HEX. ; THE FUNCTION VALUE, , IS RETURNED IN THE AX. ; ; INPUT: NONE ; OUTPUTS: AH-REGISTER CONTAINS SCREEN WIDTH ; AL-REGISTER CONTAINS VIDEO MODE ;=================================================================== .MODEL SMALL,BASIC ;=================================================================== .CODE EX_13_3 IN_TMODE PROC FAR PUBLIC ;FUNCTION IN_TMODE ; PUSH BX ;SAVE BX-REGISTER PUSHF ;SAVE FLAGS MOV AH,15 ;GET INT 10H .IF AL > 3 && AL != 7 ;IF MODE IS NOT A TEXT MODE ; ; INT 11H ;THEN AND AX,30H ; GET INIT_MODE .IF AX == 10H ; IF INIT_MODE = 1 ; THEN MOV AX,2801H ; WIDTH = 40 ; MODE = 1 ; .ELSE ; ELSE .IF AX == 20H ; IF INIT_MODE = 2 ; THEN MOV AX,5003H ; WIDTH = 80 ; MODE = 3 ; .ELSE ; ELSE MOV AX,5007H ; WIDTH = 80 ; MODE = 7 .ENDIF ; ENDIF .ENDIF ; ENDIF PUSH AX ; PUSH MOV AH,0 ; SET VIDEO MODE = MODE INT 10H POP AX ; POP .ENDIF ;ENDIF POPF ;RESTORE FLAGS POP BX ;RESTORE BX-REGISTER RET ;RETURN () IN_TMODE ENDP ;END IN_TMODE ;=================================================================== END