home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 8 / CDASC08.ISO / NEWS / 554 / JUIN / BEEPER.PAS < prev    next >
Pascal/Delphi Source File  |  1993-10-07  |  2KB  |  62 lines

  1. {─ Fido Pascal Conference ────────────────────────────────────────────── PASCAL ─
  2. Msg  : 336 of 355                                                               
  3. From : Steven Ziuchkovski                  1:105/314.0          10 Jun 93  16:32 
  4. To   : David Todd                                                                
  5. Subj : Tsr's                                                                  
  6. ────────────────────────────────────────────────────────────────────────────────
  7. DT> -=> Quoting David Todd to All <=-
  8.  
  9. DT> TS> Hello David...
  10.   > TS> I've attached my little code to give some example about  how
  11.   > TS> to use Int 33h SubFunction 18h (which install
  12.   > TS> user-alternate-Subroutine).
  13.   > TS> Here is the stuff:
  14.  
  15. DT>     Thanks for the code, but....I tried it and it seems to lock it up after
  16.   >     I've started the beeping.. I dunno what's wrong, is it the code or is i
  17.   >     just me...But thanks anyways, I think I get it now....
  18.  
  19. Well, I've done some programming with TSR in TP6, and it doesn't seem to
  20. lock up. If you use interrupt vector $1C, you can make a procedure that
  21. is called 18.2 (or something like that) times per second. The only catch
  22. is that you can't make a call to ANY routines that use things like DOS
  23. functions, disk reads/writes, or anything. You can still
  24. increment/decrement variables and change them and stuff. You can also
  25. manipulate memory, so long as you don't fiddle with another programs
  26. memory.
  27.  
  28. Here is a simple program that beeps every time you press alt-right
  29. shift:}
  30.  
  31.    CUT HERE---
  32. Program Beeper;
  33.  
  34. {$M 1024, 0, 0}   {The program can't hog ALL the memory!}
  35.  
  36. Uses Crt, Dos;
  37.  
  38. Procedure DoBeep;
  39.  
  40. Interrupt;  {specifies this as an interrupt procedure. VERY IMPORTENT}
  41.  
  42. Begin
  43.   If Mem[$0040:$0017] and $09=$09 then  {Check the Keyboard for}
  44.   Begin                                 {Alt-Right shift}
  45.     Sound(440);
  46.     Delay(100);
  47.     NoSound;
  48.   end;
  49. end;
  50.  
  51. Begin
  52.   SetIntVec($1C, @SnapIt); {Set the interrupt to point to your}
  53.                            {procedure}
  54.   Keep(0); {Keep the program in memory instead of terminating.}
  55.            {the parameter is the error code to return to DOS.}
  56. end.
  57.    CUT HERE---
  58.  
  59.  
  60. This should work. I'm not sure if the Delay function will lock up the
  61. computer, since this program is stripped down from a screen snapshot
  62. program I wrote.