home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / RESTART.ZIP / RESTART.DOC next >
Encoding:
Text File  |  1986-02-24  |  1.8 KB  |  88 lines

  1. PROGRAM Demo;
  2. VAR
  3.     RestartAddress : ^Integer;
  4.     RestartSp        : Integer;
  5.  
  6. {*} PROCEDURE StoreRestartPoint;
  7. BEGIN
  8.     InLine($BE/RestartAddress/$8C/$C8/$89/$44/$02/$8B/$46/
  9.           $02/$89/$04/$8B/$C4/$05/$06/$00/$A3/RestartSp);
  10. END;
  11.  
  12. {*} PROCEDURE RestartProgram;
  13. BEGIN
  14.     InLine($A1/RestartSp/$8B/$E0/$8B/$EC/
  15.           $FF/$2E/RestartAddress);
  16. END;
  17.  
  18. VAR
  19.     I  : Integer;
  20.     Ch : Char;
  21.  
  22. PROCEDURE Dummy;
  23.  
  24. PROCEDURE NestedDummy;
  25. BEGIN
  26.     WriteLn('in nested dummy');
  27.     Write('press a key to restart... ');
  28.     Read(Kbd, CH);
  29.     WriteLn;
  30.     WriteLn('restarting program from nested dummy');
  31.     RestartProgram;
  32. END;
  33.  
  34. BEGIN
  35.     WriteLn('in dummy');
  36.     WriteLn('choose from menu: ');
  37.     WriteLn('  1.run nested dummy procedure');
  38.     WriteLn('  2.exit dummy normally');
  39.     WriteLn('  3.restart');
  40.     Write('Enter choice: ');
  41.     REPEAT
  42.         Read(Kbd,Ch);
  43.     UNTIL (Ch In ['1', '2', '3']);
  44.     WriteLn(Ch);
  45.     CASE Ch Of
  46.         '1' : NestedDummy;
  47.         '3' : RestartProgram;
  48.     END;
  49.     WriteLn('normal dummy exit');
  50. END;
  51.  
  52. BEGIN
  53.     WriteLn('Entered main block');
  54.     {put any desired initialization code here}
  55.  
  56.     WriteLn('storing restart point');
  57.     StoreRestartPoint;
  58.     WriteLn('after restart point');
  59.     WriteLn('choose from menu: ');
  60.     WriteLn('  1.run dummy procedure');
  61.     WriteLn('  2.write some integers');
  62.     WriteLn('  3.restart');
  63.     WriteLn('  4.terminate');
  64.     Write('Enter choice: ');
  65.     REPEAT
  66.         Read(Kbd, Ch);
  67.     UNTIL (Ch In ['1', '2', '3', '4']);
  68.     WriteLn(Ch);
  69.     CASE Ch Of
  70.         '1' : Dummy;
  71.         '2' : BEGIN
  72.                 FOR I := 1 To 10 DO WriteLn(I);
  73.                 Write('press a key to restart... ');
  74.                 Read(Kbd, CH);
  75.                 WriteLn;
  76.                 WriteLn('restarting program');
  77.                 RestartProgram;
  78.             END;
  79.         '3' : BEGIN
  80.                 WriteLn('restarting program');
  81.                 RestartProgram;
  82.             END;
  83.         '4' : ;
  84.     END;
  85.     WriteLn('normal program exit');
  86.  
  87. END.
  88.