home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ZCPR33 / A-R / COMIF10.LBR / COMIF10.DZC / COMIF10.DOC
Text File  |  2000-06-30  |  5KB  |  119 lines

  1.                                COMIF VERSION 1.0
  2.                                    Jay Sage
  3.                                 March 10, 1987
  4.  
  5.  
  6. COMIF.COM is a transient IF processor designed to replace the original IF.COM
  7. released with ZCPR3.  COMIF supports a very great number of additional test
  8. conditions and accepts greatly extended syntactic forms.
  9.  
  10. Two versions of the object file are included in this release.  COMIF10.COM can
  11. be renamed to IF.COM and used as a direct replacement for the original. 
  12. COMIF10.CIM has been linked to run at 8000H instead of 100H.  It can be renamed
  13. to IF.COM and used together with a resident FCP assembled from the new FCP10
  14. with the high-memory option enabled and set to 8000H.  See the FCP10 release
  15. package for more information.
  16.  
  17. The following text has been derived from comments in the source code.  Until
  18. real DOC and HLP files have been written, this will have to serve as
  19. documentation of the new features.
  20.  
  21.                                   ----------
  22.  
  23. Hex/binary/octal numerical inputs implemented for all number entry.
  24.  
  25. "IF INPUT" prompt text has controls to generate control character output and
  26. upper/lower case text.  A '^' converts the following character to a control
  27. character.  The sequence '%<' toggles output to upper case; '%>' toggles to
  28. lower case.  To afford greater flexibility, "(Y/N)? " is no longer appended
  29. automatically.  Here is an example.  The command
  30.  
  31.     "IF IN A%>SSEMBLY COMPLETE^M^J%<D%>O YOU WANT TO CONTINUE %<(Y/N) ? "
  32.  
  33. will produce the following prompt on the screen (where '|' represents the left
  34. margin of the screen):
  35.  
  36.     |Assembly complete
  37.     |Do you want to continue (Y/N)? _
  38.  
  39. This example uses "^M^J" to generate a carriage return/line feed.  You can also
  40. put in escape sequences for special screen operations, such as cursor
  41. addressing and attribute setting.
  42.  
  43. The following test conditions have been added:
  44.  
  45.     IF AMBIG FILESPEC    returns TRUE if the file spec is ambiguous
  46.     IF ARCHIVE FILELIST    returns TRUE if all files in the list have
  47.                 the archive attribute set
  48.     IF BG            returns TRUE if BackGrounder is loaded
  49.     IF COMPR FILESPEC    returns TRUE if the file(s) is (are) crunched
  50.                 or squeezed as indicated by the second letter
  51.                 of the file type
  52.     IF DS            returns TRUE if DateStamper is loaded
  53.     IF LIST    TOKEN        returns TRUE if TOKEN contains items separated
  54.                 by commas (i.e., is not a simple file spec)
  55.     IF RO FILELIST        returns TRUE if all files in the list have
  56.                 the R/O attribute set
  57.     IF SHELL        returns TRUE if any shell is on the stack
  58.     IF SHELL TEXT        returns TRUE if the first entry on the shell
  59.                 stack matches TEXT (may contain '?' chars)
  60.     IF SYS FILELIST        return TRUE if all file in the list have
  61.                 the SYS attribute set
  62.     IF TAG FILELIST #    returns TRUE if all files in the list have
  63.                 the attribute tag designated by the number #
  64.                 set (e.g., IF TAG FILE.EXT 3)
  65.     IF ZEX            returns TRUE if ZEX is running
  66.  
  67. Some other conditional tests were enhanced as described later.
  68.  
  69. Added more general equality/inequality testing options for strings.  If XCOMP1
  70. is true, the following conditions are recognized: EQ, NE, GT, GE, LT, LE.  All
  71. can be negated with ~. If XCOMP2 is true, the following conditions are also
  72. allowed: =   <>   ><   >   >=   <   <=.  All can be negated with '~'.  Remember
  73. that in all cases the comparison is performed on the ASCII tokens, not on the
  74. values they may represent.  Here are some examples of the syntax.
  75.  
  76.     IF EQ TOKEN1 TOKEN2
  77.     IF ~LT TOKEN1 TOKEN2
  78.     IF = TOKEN1 TOKEN2
  79.     IF ~< TOKEN1 TOKEN2
  80.  
  81. Added extended register and value testing options (if REGVALOPT is true). 
  82. Syntax forms are:
  83.  
  84.     IF [~]REG REG# OPERATOR VALUE
  85.     IF [~]VALUE ARG1 OPERATOR ARG2
  86.  
  87. VALUE compares two 16-bit numerical arguments; REG treats the first argument as
  88. a register number rather than a value. Spaces are optional surrounding the
  89. operator, and the following operators are recognized:  =   <>   ><   >   >=   <  
  90. <=. Here are some examples:
  91.  
  92.     IF REG 3 > 1CH        IF REG 9= 0
  93.     IF REG 3 <>1101B    IF ~REG 011B=15Q
  94.     IF VAL C000H > 40000
  95.  
  96. Added many optional extensions to conditions.  IF TCAP can now test for a
  97. specific TCAP using the syntax IF TCAP STRING.  The string may have '?' wild
  98. cards in it.  The TCAP ID string is compared to the given string up to the
  99. length of the latter.
  100.  
  101. Specific error conditions can be tested using the optional syntax IF ERROR
  102. VALUE.
  103.  
  104. One can test for a particular shell program on the top of the stack using IF
  105. SHELL NAME, where NAME may be ambiguous.
  106.  
  107. Modified EXIST and EMPTY tests to share code and meaning.  The two tests are
  108. now the same except that (1) the EX test only checks for the presence of a
  109. directory entry while EM also checks for contents and (2) the senses of the
  110. tests are reversed (EX is true if all files in list exist; EM is false if all
  111. files exist and have contents.  Thus ~EM is equivalent to EX but with a more
  112. stringent existence requirement).  Note that when the file list has ambiguous
  113. filespecs, only the first matching file is checked.
  114.  
  115. I would like to acknowlege extensive contributions to the coding of COMIF by
  116. Howard Goldstein.
  117.  
  118.         Jay Sage
  119.