Q57930: BREAK Status Always Reports OFF Using BASIC CALL INTERRUPT
Article: Q57930 Product(s): See article Version(s): 4.00 4.00b 4.50 Operating System(s): MS-DOS Keyword(s): ENDUSER | SR# S900119-105 B_BasicCom | mspl13_basic Last Modified: 8-FEB-1990 The status of the BREAK flag cannot be detected from within a BASIC program, and a DOS interrupt from BASIC always reports that it is OFF. This is true even if a BREAK ON command has been issued from DOS. This information applies to Microsoft QuickBASIC Versions 4.00, 4.00b and 4.50 for MS-DOS, to Microsoft BASIC Compiler Versions 6.00 and 6.00b for MS-DOS, and to Microsoft BASIC Professional Development System (PDS) Version 7.00 for MS-DOS. The status of the BREAK flag can be detected from some languages by using interrupt 21 Hex with function 33 Hex. However, when calling this interrupt from a BASIC program, the interrupt always reports that BREAK is OFF. During initialization, BASIC records the current setting of BREAK and then turns it OFF. Upon termination, BASIC restores the setting of BREAK to its entry value. This is done because when BREAK is enabled, pressing CTRL+C causes a ^C to be printed to the screen on the next DOS call. This is also printed before DOS invokes the CTRL+C handler. In BASICs prior to BASIC PDS Version 7.00, BREAK has to be OFF because these BASICs do not have a CTRL+C handler. In BASIC PDS 7.00, a CTRL+C handler was added to better trap CTRL+C conditions in certain situations (such as between resetting the BREAK state and termination, or during a Make EXE File command). It was decided to continue clearing the BREAK state to eliminate ^C on the screen. To demonstrate this, run the following program. (If running within the QuickBASIC environment, start with the /L option to load in the Quick library with support for the CALL INTERRUPT statement). Code Example ------------ REM $INCLUDE: 'QB.BI' ' Note: Must change the above file to 'QBX.BI' in BASIC PDS 7.00 DIM INREGS AS REGTYPE DIM OUTREGS AS REGTYPE INREGS.AX = &H3300 CALL INTERRUPT(&H21, INREGS, OUTREGS) PRINT OUTREGS.DX ' IF 0 THEN BREAK OFF Even if BREAK ON is previously set in DOS, the program reports that BREAK is OFF. After the program ends, issuing the BREAK command in DOS shows BREAK as still ON.
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
Copyright Microsoft Corporation 1986-2002.