[comp.lang.pascal] Turbo Pascal units TSPAS21.ARC update

ts@uwasa.fi (Timo Salmi LASK) (08/02/90)

Wed 1-Aug-90: I have updated my Turbo Pascal (4.0, 5.0, 5.5) units
collection to be version (/pc/ts/)tspas21.arc. 
   Turbo Pascal version 4.0 does not have the DosVersion function
available in versions 5.0 and 5.5.  I have written this function for
version 4.0.  Furthermore the lack of this function caused errors in
TP 4.0 versions of my last two units.  This has been put right. 
   I have included a new unit (tsunti.tpu) for putting information
into the .exe file, and retrieving the information (not for TP 4.0). 
The routines include a method for calculating the direct checksum
for a file (eg for virus checking).  This is not as trivial as it
may sound at first sight, because in calculating the checksum, the
checksum constant within the program must be skipped.  (Else a
change in the checksum constant would alter the checksum resulting
in a "vicious circle").  Also, the method must be fast enough. 
   I have also included a fast a date and filesize checking method
for detecting if the .exe has been patched or its size altered.  (Of
course, the checksum method is much more difficult to defeat, but it
is more complicated and not as fast).  Here I have made an exception
and included the source code.  It is in the selftest.pas file within
tspas21.arc. 
   Available by anonymous ftp from chyde.uwasa.fi, Vaasa, Finland,
128.214.12.3. 

Summary of the Functions and Procedures in the TSPAS21.ARC Package
Functions are indicated by the ending FN, the procedures by the lack
of it.
TSUNTA: (uses Dos, Crt, TSUNTE)
  ATTRIBFN Color attribute for direct write to video memory
  HIGHTFN  Current height of text screen
  PANML    Scroll screen left
  PANMR    Scroll screen right
  VDAEXYFN Direct read of a screen video memory color attribute
  VDCHXY   Direct read from the screen video memory
  VIDXY    Direct write to the screen video memory
  WIDTHFN  Current width of the text screen
TSUNTB: (uses Dos)
  BINDECFN Convert binary to decimal
  BINFN    Convert decimal to binary, fast
  BITONFN  Status of a bit in a word
  CONVBFN  Convert from a number of any base to any other base
  DECBINFN Convert decimal to binary, (outdated by BINFN)
  DECHEXFN Convert decimal to hexadecimal, (outdated by HEXFN)
  HEXDECFN Convert hexadecimal to decimal
  HEXFN    Convert decimal to hexadecimal, fast
  LBINFN   Convert longint to binary
  LHEXFN   Convert longint to hexadecimal
  POWERFN  Conventional raising of a positive number to a power
  POWERGFN Generalized raising of any real to a power
  POWERLFN Raise longint to a non-negative integer power
  R16TOFN  Sixteen to a power
  TICKSFN  Count of 18.2 times per second ticks
  TIMERFN  Time elapsed since midnight
  TWOTOFN  Two to a power
TSUNTC: (uses Dos, Crt)
  PLAYNOTE Play a note
  REVCOLOR Reverse text colors (a toggle)
TSUNTD: (uses Dos)
  AUDIO    Enhanced Sound procedure, and no Crt unit needed
  DOSDELAY Delay without using the Crt unit
  GETPRTFN Get the number of default printer timeout retry times
  LEADFN   Lead a string with a multiple character (i.e. pad left)
  LOWCASFN The oppsite of UpCase (inline coded)
  LPTONLFN Get the online status of the first parallel printer
  PARSE    Extract all substrings from a string
  PRTONLFN Get the online status of a printer (may fail)
  PRTSCR   Print the current screen
  SETPRT   Set the number of default printer timeout retry times
  SPARTFN  Returns a specified substring (resembles ParamStr)
  STRCNTFN Number of substrings in a string (resembles ParamCount)
  TRAILFN  Trail a string with a multiple character (i.e. pad right)
  TRIMLFFN Trim a string left
  TRIMRGFN Trim a string right
TSUNTE: (uses Dos)
  ALLSIZFN   Allocated true size of a file in bytes
  BORDER     Change border color (CGA, VGA)
  CAPS       Turn CapsLock on, or off
  CAPSONFN   Get CapsLock status
  CLB        Clear the keyboard buffer
  CLUSIZFN   Cluster size on a device (cluster is the allocation unit)
  CMDLNFN    Returns the entire command line
  CURSOFF    Turn off cursor (keeps other cursor attributes)
  CURSON     Turn cursor back on as it was
  CURSOR     Change cursor size
  DATEOKFN   Is a date a valid, existing date
  DosVersion Get Dos version for Turbo Pascal 4.0
  FEXISTFN   File existence status, handles ReadOnly files correctly
  FSIZE2FN   File size in bytes, alternative method
  FSIZEFN    File size in bytes as in directory (never on open file)
  LASTDMFN   The number of days in a given month and year
  MONOFN     Is it a monochrome
  NUMLOCK    Turn NumLock on, or off
  NUMLONFN   Get NumLock status
  SCRLOCK    Turn ScrollLock on, or off
  SCRLONFN   Get ScrollLock status
  WEEKNRFN   Returns the week number for a given date
  WKDAYFN    Returns modern weekday
  ZELLERFN   Zeller's conguence (for comparing dates etc)
TSUNTF: (uses Dos, Crt)
  EDRDLN   Readln with line-editing potential
  EDREADLN Readln with line-editing, recall, and insert toggle
  EDREABLN Edreadln with ctrl-c and break trapping
TSUNTG: (uses Dos)
  CLS      Set 25*80 text mode and clear screen (no Crt required)
  CLS40    Set 25*40 text mode and clear screen (no Crt required)
  COLDBOOT Reboot computer, including memory tests
  DRIVESFN Number of diskette drives on the system
  DSKCNTFN Get the number of disk devices (MsDos 3+ only)
  FDRIVEFN The name of the first diskette drive on the system
  FIXEDFN  Is a drive a fixed disk or not
  GOATXY   As the ordinary GoToXY but no Crt unit required
  INDRIVFN Is a media present in the given drive
  INKEYFN  Basic-like timed character input
  KEYPREFN As the ordinary KeyPressed but no Crt unit required
  READKEFN As the ordinary ReadKey but no Crt unit required
  REVAREA  Reverse the colors of an area
  USECON   Restore write and writeln direction to the screen
  USEPRN   Redirect write and writeln to the printer
  WARMBOOT Warm reboot of the coputer (as alt-ctrl-del)
  WHEREXFN As the ordinary WhereX but no Crt unit required
  WHEREYFN As the ordinary WhereY but no Crt unit required
TSUNTH: (uses Dos)
  CHIPFN   Get the type of the processor chip
  COPYFILE Copy a file from within a Turbo Pascal program
  COUNTRFN Get country code
  GRTABLFN Has MsDos GRAFTABL been loaded or not
  ISDIRFN  Is a name a directory or not
  ISENHAFN To detect an enhanced keyboard
  MATHCOFN Is a math coprocessor present
  OPENEDFN Is an assigned textfile still open or not
  PARPORFN Get the number of parallel ports (printers installed)
  ROMDTEFN Get ROM BIOS version (date)
  RS232FN  Get the number of serial ports
TSUNTI: (uses Dos)  (Not available for TP 4.0)
  BRANDEXE Store information within your program's .exe file
  CHKSUMFN Checksum selftest to detect any tampering
  USECOUNT Get the number of times the programs has been used
SELFTEST.PAS: (uses Dos)
  SELFTEST Selftest .exe file's size and date to detect tampering

...................................................................
Prof. Timo Salmi        (Moderating at anon. ftp site 128.214.12.3)
School of Business Studies, University of Vaasa, SF-65101, Finland
Internet: ts@chyde.uwasa.fi Funet: gado::salmi Bitnet: salmi@finfun