 Parse Command Line Date and Time     - SPARSDS, PARSDT
 Scan for Character                   - PARCHR
 Count Command Line Parameters        - PARCNT
 Get Specified Parameter              - PARGET
 Skip Blanks or Non-blanks            - EATSPC, EATNSPC
 Change Character Case                - UNCAPS, REVCAS
 Get Program Name                     - GCOMNAM
:
SPARSDS - Parses date and time specifications for file stamps.

  ENTER: HL = address of datespec (14 characters or less),
         DE = address of initialized memory buffer (5 bytes),
         A = date format flag (0=American, FFh=European).
  EXIT : Zero flag set (Z) if memory buffer contains valid BCD date/time:
           A = 2Ah ("*") if wildcard character encountered,
           A = 0 if no wildcard or invalid characters encountered,
         Zero flag reset (NZ), if parsed datespec was out of range or an
           invalid character was encountered.
  USES : AF

PARSDT -- Parse date and time specification of system clock.

  ENTER: HL = address of datespec (16 characters or less),
         DE = address of initialized memory buffer (6 bytes),
         A = date format flag (0=American, FFh=European).
  EXIT:  A = 0, zero flag set (Z), if memory buffer contains valid BCD date
           and time,
         A <> 0, zero flag reset (NZ), if parsed datespec was out of range
           or an invalid character was encountered.
  USES:  AF

SPARSDS and PARSDT (continued)

Usage: Parsing by SPARSDS and PARSDT is dependent on how the memory buffer 
is initialized.  If the buffer is initialized to all FFh's, then only a 
complete datespec is accepted.  If the buffer is initialized with a valid 
BCD date and time string, the initialized values will be used for any 
element missing from the datespec.  (Any individual element of the buffer 
may be initialized to FFh to force entry of that particular element.) For 
example, if "//yy" or "..yy" are entered, only the year byte in the entry 
buffer will be changed.  If a colon is used in the datespec (e.g., "15:" 
for 3 p.m.) then the "//" date delimiters are not needed.

Wildcard characters ("*", "?", or "??") are considered illegal by PARSDT, 
but are accepted by SPARSDS.  If wildcard characters are detected by 
SPARSDS, they are stored as ASCII "*" (2Ah) and A = 2Ah on return.  Your 
application can handle wildcards as you see fit.

Parsing will stop when an illegal character is encountered in the datespec 
and NZ will be returned.  An illegal character encountered while checking 
for the timespec will not be flagged as an error, which can be useful in 
detecting a trailing option list.  Your application can handle this 
situation as you see fit.

SPARSDS and PARSDT (continued)

If the date format byte in A is non-zero, the command line datespec for 
PARSDT takes the following forms (European date format):
     {{dd}.{mm}.{yy}} {{hh}:{mm}:{ss}}  [real time]
or
     {{dd}.{mm}.{yy}} {+nnnn}           [relative time]

If date format byte in A is zero, the command line datespec takes the 
following forms (American date format):
     {{mm}/{dd}/{yy}} {{hh}:{mm}:{ss}}  [real time]
or
     {{mm}/{dd}/{yy}} {+nnnn}           [relative time]

All items in braces are optional.  Each date or time element may be two 
ASCII digits or less.

The command line datespec for SPARSDS takes the same form, except that 
seconds are not parsed.
:
PARCHR - Scans string for specified character.

  ENTER: A = character to search for,
         HL = address of null-terminated string.
  EXIT:  A = character, zero flag reset (NZ), if found,
         A = 0, zero flag set (Z), if not found,
         HL = address of found character or null terminator.
  USES:  AF, HL

Usage: Stops at first match.  Does not scan for ^@ (null).
:
PARCNT - Count command line parameters.

  ENTER: HL = address of null-terminated command line string.
  EXIT:  A = number, zero flag reset (NZ), if parameters found,
         A = 0, zero flag set (Z), if no parameters found.
  USES:  AF

Usage: On entry HL should point to the second byte of the default DMA 
buffer (81h), unless the command line has been moved elsewhere in memory.  
Parameters are expected to be delimited by spaces or tabs.
:
PARGET - Get address of specified command line parameter.

  ENTER: A = number of the desired command line parameter,
         HL = address of null-terminated command line string.
  EXIT:  A = first character of parameter, zero flag reset (NZ), if found,
         A = 0, zero flag set (Z), if not found,
         HL = address of parameter, if found.
  USES:  AF, HL

Usage: On entry HL should point to the second byte of the default DMA 
buffer (81h), unless the command line has been moved elsewhere in memory.  
Parameters are expected to be delimited by spaces or tabs.
:
EATSPC - Skips spaces and tabs.

  ENTER: HL = address of null-terminated string.
  EXIT:  HL = address of first non-blank character,
         A = found character, zero flag reset (NZ), if non-blank found,
         A = 0, zero flag set (Z), if null encountered.
  USES:  AF, HL

EATNSPC - Skips characters not spaces, tabs, or nulls.

  ENTER: HL = address of null-terminated string.
  EXIT:  HL = address of first blank or null character,
         A = found character, zero flag reset (NZ), if blank found,
         A = 0, zero flag set (Z), if null encountered.
  USES:  AF, HL

Usage:  All characters that are not spaces or tabs are considered non- 
blanks.  These routines are smaller than SYSLIB's SKSP and SKNSP and set 
the zero flag if the end of the string is encountered.
:
UNCAPS - Lower-cases a character.

  ENTER: A = character.
  EXIT:  A = character in lower-case.
  USES:  AF

REVCAS - Reverses the case of a character.

  ENTER: A = character.
  EXIT:  A = character with case reversed.
  USES:  AF

Usage: These routines reset the character's high bit.  If the entry 
character is alphabetic, UNCAPS always returns a lower-case character.  
REVCAS returns a lower-case character, if the entry character is upper- 
case; it returns an upper-case character, if the entry character is lower- 
case.
:
GCOMNAM -- Get and store program's invocation name.

  ENTER: HL = address of default program name (space terminated)
  EXIT:  COMNAM (global) = program name (null-terminated).
  USES:  None

Usage: Gets program's invocation name from ZCPR3 external file control 
block, if it exists.  If not, the default program name is stored.  The 
default program name must be either 8 characters long or terminated by a 
space character.  The program name (minus any trailing spaces) is stored as 
a null-terminated string at public label COMNAM (global) that can be 
accessed by print routines such as HPSTR and SYSLIB's PSTR and EPSTR.

Once this routine has stored the invocation name, subsequent calls merely 
return, doing nothing.  Repeated calls via the GO command will not change 
the original invocation name.

IMPORTANT NOTE: This routine requires a linker search of Z3LIB after the 
search of ZSLIB.
