Control-Break info for Dndbbs v5.0a r2.0:

Control-Break during program execution causes the following to happen:

 1)Invokes interrupt trap 1Bh
 2)Places 00:00 into keyboard buffer
 3)Sets flag 80h at memory 40:71h

Note: Dndbbs does not trap the Control-Break interrupt only ignores it.

   Dndbbs only checks the buffer or the memory flag.

During Dndbbs program flow, Control-Break starts the single-line prompt:

 Enter (B)reak, (C)ancel, (L)ogoff user, (A)bort node:

In some modules Dndbbs only displays:

 Enter (C)ancel, (L)ogoff user, (A)bort node:

Where:

 B  =  Sends break signal to program.
 C  =  Cancels break action.
 L  =  Logs off user.
 A  =  Aborts Dndbbs.

An example to detect Control-Break (compiled):

  DO
     X$=INKEY$
     IF X$=CHR$(0)+CHR$(0) THEN
        PRINT "*break*"
        END
     END IF
  LOOP

Another example to detect Control-Break (compiled):

  DEF SEG = &H40
  POKE &H71, 0
  DEF SEG
  DO
     DEF SEG = &H40
     X = PEEK(&H71)
     DEF SEG
     IF X = 128 THEN
        PRINT "*break*"
        END
     END IF
  LOOP

Note: Compiled because QBX breaks in the interprter.

-end-

In some Dndbbs utilities such as Dndcnfg, Dndedit and Edit the Control-Break
  interrupt vector is stored and set to point at an empty assembly iret.

  This code is in keytrap.asm and can be compiled with Tasm v4.0a or MASM.

-end-
