home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / t_power / break.doc < prev    next >
Text File  |  1988-01-02  |  2KB  |  46 lines

  1. { BREAK --  A unit to allow Control-Break to interrupt program execution.
  2.  
  3.   Version 1.00 -  1/02/1987 - First general release
  4.  
  5.   Scott Bussinger
  6.   Professional Practice Systems
  7.   110 South 131st Street
  8.   Tacoma, WA  98444
  9.   (206)531-8944
  10.   Compuserve 72247,2671
  11.  
  12.   This unit for Turbo Pascal version 4.0 allows you to stop execution of a
  13. program by hitting CONTROL-BREAK at any time.  Unlike the standard ^Break
  14. handler provided by the CRT unit, this unit will interrupt a program at any
  15. time and not just during I/O statements.  This is akin to the old $U+
  16. directive that Turbo Pascal version 3 had, but without the severe execution
  17. overhead.  Using the BREAK unit will not slow down your program noticably!
  18. To include this unit in your program, add BREAK to the USES clause in your
  19. main program.
  20.   This unit exports no identifiers, so other than adding it the the USES
  21. statement, you'll ee no difference in execution or programming.  The only
  22. tricky thing is that the BREAK unit MUST be listed in the USES statement
  23. after any other unit which installs a ^Break handler (notably the CRT unit).
  24. For this reason, I suggest it be the last unit in the list.  The reason for
  25. this is that most ^Break handlers don't chain to older handlers, but rather
  26. just handle it themselves.  This includes the BREAK unit.  I tried chaining to
  27. other handlers, and ran into some problems, so I'd recommend just leaving
  28. things as they are.
  29.   The basic technique the unit uses is to set a flag when ^Break is struck and
  30. look for this flag to be set on every clock tick.  If the flag is set and the
  31. program is currently executing in the Pascal code (and not in DOS or TSR or
  32. ???) it then immediately halts.  It is possible to get into a loop where ^Break
  33. isn't recognized if the program is executing in DOS or BIOS for example.
  34.   Compile and run this file as a demonstration of using BREAK.  The program
  35. will into a 10 second delay and print a message if you don't do anything.  You
  36. can interrupt the program at any time however by striking ^Break. }
  37.  
  38. program Test;
  39.  
  40. uses Crt,Break;    { Note that Break _must_ follow CRT! }
  41.  
  42. begin
  43. delay(10000);
  44. writeln('Got to end of program.')
  45. end.
  46.