home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / screen.swg / 0005_GETCHAR1.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  1KB  |  36 lines

  1. {
  2. │What would be the best way to find out what Character is at a certain
  3. │location on the screen.  For example, Lets say I went to location
  4. │(10,2) and at that location is the letter 'S' now without
  5. │disturbing the letter S how can I determine if it is there or not?
  6.  
  7.  
  8. A 25-line by 80-column screen has 2,000 possible cursor positions. The
  9. 2,000 Words that begin at the memory location $B800:0000 (or $B000:0000 if
  10. your machine is monochrome) define the current image. The first Byte of
  11. each Word is the ASCII Character to be displayed, and the second Byte is
  12. the attribute of the display, which controls such Characteristics as color
  13. and whether it should blink....
  14.  
  15. I you used the standard (X,Y) coordinate system to define a cursor positon
  16. on the screen, With the upper left corner at (1,1) and lower right corner
  17. at (80,25), then With a lettle algebra you can see that the offset value
  18. For a cursor position can be found at:
  19.  
  20.    Words:  80*(Y-1) + (X-1)
  21. or
  22.    Bytes:  160*(Y-1) + 2*(X-1)
  23.  
  24.  
  25. Here's a Function that will return the Character at location (X,Y):
  26.  
  27. }
  28. Function GetChar(X,Y:Byte):Char;
  29.   (* Returns the Character at location (X,Y) *)
  30. Const
  31.   ColorSeg = $B800;     (* For color system *)
  32.   MonoSeg  = $B000;     (* For mono system  *)
  33. begin
  34.   GetChar := Chr(Mem[ColorSeg:160*(Y-1) + 2*(X-1)])
  35. end;
  36.