;
                                    TEX.COM                                   

             Size (recs) CRC   Version    Author/Latest Issue      Disk
               9k (70)   9D19  1.3        Jim Lill 8/89            Z3COM9

  1- Syntax  2- TEX Commands  3- TEX.VAR  4- Notes  5- Examples of Use        

   Time EXecution is a time-scheduling program for ZCPR3.   It allows entry of
entire command lines with associated  absolute execution  times  and  optional  
repeat intervals.  The maximum number of command lines allowable is at present
20 (but alterable in the source code).   TEX operates as a ZCPR3 shell,  whose 
function is to  determine when a command line should be executed and to put it
in ZCPR3's Multiple Command Line Buffer when it is due.  

   TEX requires a Z80 processor, ZCPR3 or ZCPR33,  and a real-time clock.   Vs
1.0 by Ron Murray (4/88).
:1

    Syntax   TEX [command file] /options 

   ...where <command file> is  an  optional file containing  TEX  commands  as 
above (these can be prepared using a text editor, and can be useful for often-
used commands).   Default filetype is .TEX  if none  is specified.   The  only 
option at present  is  /C,  which deletes  any current  TEX.VAR file  and thus 
starts TEX with no embedded commands. 

   After loading, TEX will install itself as a shell (if possible),  then read 
any specified input file.   It will then try  to read  a  TEX.VAR file (unless 
disabled with  the  /C option)  to load  any pending commands.   It  will then 
display the  user prompt,  which is  similar  to  the  standard  ZCPR3  prompt 
(including any named directory information), but preceded by the current time,
e.g. [21:55] B0:WORK> 

   This time is  updated  once  each  minute,  to demonstrate that  TEX hasn't 
fallen over. 


   At this  point normal commands and TEX  commands can  be typed.   Note that 
even a  simple directory change  requires reloading  of  TEX after completion:  
all  commands (except control-C) are  loaded  into  the  Multiple Command Line 
Buffer and  control  is  passed  to  the  CCP.   There are  also  some control 
functions performed by single keys, as follows: 

 Control Keys 

   - Line-feed gives a short help display.
   - ESCAPE will cause TEX to terminate (the current commands will be saved in
     the TEX.VAR file).
   - Control-D gives a display of current commands.
   - Control-E will allow commands to be deleted.  The user is prompted with a
     request for  the number of  the  command  (obtained  with  the  Control-D 
     command), the command line is displayed, and the user asked for confirma-
     tion before the line is deleted. 
:2
 TEX Commands - 1/2 

The general format of a TEX command line is:

   TEX commands;required command line;other commands as normal

Note the semicolon required  between the  TEX commands and command line.   TEX
will flag an error if this is omitted.


   There are presently three TEX commands to specify execution details.  Their
order in the command line is unimportant.
 TEX Commands - 2/2 

!X [dd:mm:yy] hh:mm[:ss]
          - Specifies  an absolute  execution time.   The date and seconds are 
            optional,  as  indicated  by the brackets.   If the  date  is  not
            supplied, execution  will proceed on  the current  day.   If no !X 
            command is supplied, execution commences immediately. 

!R [/days] hh:mm[:ss]
          - Specifies  a time  period  for repeated  execution  of the command 
            line.   Days  and seconds  are  optional.   If  no !R  command  is 
            entered,  the program  is run  once at  the  specified time,  then 
            deleted from the execution list. 

!P number
          - Specifies a priority for the command, in the range 1 to 254, where
            1 is the  highest  priority.   If no  !P command  is entered,  the 
            default  priority (99) is  used.   Priority can  be  specified  to 
            ensure that a given program executes before another,  if they  are 
            scheduled at the same time. 
:3
 TEX.VAR 

   When  TEX  executes  a  program,   all  current  commands  and  their  time 
information are saved in a disk file called TEX.VAR.  The distribution version
of TEX saves this file in  the root  directory,  but either  a re-assembly, or 
your favorite patcher,  will allow any other drive/user area combination to be
used.  Either modify the source code at the rootfl: and nrdu: labels (comments 
in the source will assist), or use a file patcher.   To assist this, there are 
two "signposts" just after the  beginning  of the  code (at 0110h).   The byte 
after the  ROOT> signpost  should  be  set  to 0ffh if the ROOT:  directory is 
required.   If not,  this byte should be set to zero,  and the bytes after the 
following signpost (DU:>) modified to the required drive and  user area (drive 
first, (A = 0),  then user area 0-15 (16-31 might work; who knows?)).   If you 
have a RAM disk or hard disk, it's probably better to force the use of this as
TEX will load and save the TEX.VAR file more quickly.
:4
 TEX Notes - 1/2 

   a. Since TEX is  a shell,  it can only schedule and run programs when it is 
      itself running (when all other  programs have terminated).   You can use 
      your computer normally while TEX is  running,  with  a short delay after 
      each program is run  while TEX  reloads itself  and  loads  its variable 
      file,  but  programs  scheduled for  execution while other programs  are 
      running  will  not  be executed  until TEX is  entered  after  the first 
      program terminates.  TEX is not a multi-tasking system.
 TEX Notes - 2/2    

   b. Vs. 1.1 updates 
      - fixed bug which stopped new commands from a .TEX file from being saved
        in TEX.VAR if there were more commands on the command line.
      - ASCII command file on invocation now defaults to .TEX

   c. Vs 1.2 updates
      - fixed bug in shell routine which resulted in bad command lines for 
        user numbers greater than 9 
      - fixed bug which caused bad time addition for repeated execution

   d. Vs 1.3 updates          
      - replaced BCDBIN with JBCD2BN from ZSLIB
      - modified GETTIME to use DSLIB/ZSLIB routines so ZSDOS, Z80DOS or CP/M+
        clocks will all work
      - assembled ok as-is with SLR Z80ASM
      - tested with ZSDOS only, see excerpt from DSLIB.HLP below
:5
 Examples of Use 

   a. !X 06:30 !R /1;SAK /B WAKE UP! 

      - schedules SAK to  ring the  console  bell  continuously every  day  at
        6:30 am!

   b. !R /2 10:5:3 !X 15/3/88 12:04;SEND NEATPROG.WOW;SAK /BP10 SENT
      >> IT!;MAKE COFFEE 

      - schedules the  program SEND  at 12:04 pm on  March 15,  1988 with  the 
        parameter NEATPROG.WOW,  then schedules SAK to ring the console for 10
        seconds and  type  SENT IT!,  then make the  coffee (!).   Finally the
        whole sequence would be re-scheduled to occur again 2 days,  10 hours,
        5 minutes and 3 seconds later.