home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / dos / cursor.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-05-29  |  1.7 KB  |  66 lines

  1. {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,P-,Q-,R-,S-,T-,V-,X-}
  2. (*===================================================================*)
  3. (*                           CURSOR.PAS                              *)
  4. (*               Copyright (C) 1993 te-wi Verlag, München            *)
  5. (*                   Cursorroutinen für Borland Pascal               *)
  6. (*===================================================================*)
  7.  
  8. UNIT Cursor;
  9.  
  10. INTERFACE
  11.  
  12. CONST
  13.   StartCursor: WORD = $0607;
  14.  
  15. VAR
  16.   BIOSCursor: WORD;
  17.  
  18. PROCEDURE SetCursor(CursorShape: WORD);
  19. PROCEDURE HideCursor;
  20. PROCEDURE BlockCursor;
  21.  
  22. IMPLEMENTATION
  23.  
  24. (*-------------------------------------------------------------------*)
  25.  
  26. PROCEDURE SetCursor(CursorShape: WORD); ASSEMBLER;
  27. { Setzen des Cursors mit Int 10h }
  28. ASM
  29.   MOV CX, CursorShape
  30.   MOV AH, 01h
  31.   INT 10h
  32. END;
  33.  
  34. (*-------------------------------------------------------------------*)
  35.  
  36. PROCEDURE HideCursor;{ Abschalten des Cursors über zu hohen Startwert }
  37. BEGIN
  38.   SetCursor($1500);
  39. END;
  40.  
  41. (*-------------------------------------------------------------------*)
  42.  
  43. PROCEDURE BlockCursor;{ Setzen eines Cursors von Zeile 0 bis Zeile 15 }
  44. BEGIN
  45.   SetCursor($0015);
  46. END;
  47.  
  48. VAR
  49.   OldExitProc: POINTER;
  50.  
  51. {$F+}
  52. PROCEDURE CursorExitProc;    (* Neue Exit-Procedur, die den Cursor   *)
  53. BEGIN                        (* wieder auf den Startwert zurücksetzt *)
  54.   SetCursor(StartCursor);
  55.   ExitProc := OldExitProc;
  56. END;
  57.  
  58. BEGIN
  59.   OldExitProc := ExitProc;
  60.   ExitProc    := @CursorExitProc;
  61.   BIOSCursor  := WORD(Ptr(Seg0040, $0060)^);   (* Cursordaten im     *)
  62.   StartCursor := BIOSCursor;                   (*  BIOS-Datensegment *)
  63. END.
  64.  
  65. (*===================================================================*)
  66.