home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / bbs_opus / oac121.arj / OACOMP.DOC < prev    next >
Text File  |  1990-12-26  |  11KB  |  218 lines

  1.                       Documentation for Opus/Avatar COMPiler
  2.  
  3. The Opus/Avatar COMPiler is an OECC clone, with some new features, primarily
  4. the ones regarding the new codes in OPUS 1.1x (see the OACOMP.KWD for a
  5. complete description of all the internally supported keywords). There are,
  6. however, some minor differences existing between Opus/Avatar COMPiler and the
  7. Opus Embedded Command Compiler (OECC):
  8.  
  9.   Opus/Avatar COMPiler does not support tokens split between two or more
  10. lines. OECC does. One exception is the [COMMENT] token, which MAY be split
  11. over several lines, but Opus/Avatar COMPiler may treat them differently than
  12. OECC does.
  13.  
  14.   Opus/Avatar COMPiler supports externally defined tokens (see below). OECC
  15. doesn't.
  16.  
  17.   Opus/Avatar COMPiler supports wild cards, default file types, date compa-
  18. risons before compilation, sub directories, ARChive attribute and compiling
  19. files after a certain date. OECC doesn't. Generally, you should just enter
  20. your directory with .OEC files and type OACOMP, then the Opus/Avatar COMPiler
  21. will compile all .OEC files that have a newer time stamp than the
  22. corresponding .BBS file, or if the corresponding .BBS file doesn't exist.
  23.  
  24. Otherwise Opus/Avatar COMPiler should be fully OECC 1.06 compatible, including
  25. LABELs, GOTOs etc. Opus/Avatar COMPiler, however, treats LABELs and GOTOs in
  26. a slightly different manner than OECC. In OECC you would define a GOTO as
  27.  
  28.                               [GOTO][TARGET]
  29.  
  30. whereas in Opus/Avatar COMPiler you should use [GOTO TARGET]. This is because
  31. Opus/Avatar COMPiler flags all unknown tokens as errors, and OECC flags them
  32. as labels. Opus/Avatar COMPiler will work both ways, but the recommended form
  33. is [GOTO TARGET]. This also allows you to have labels the same name as tokens.
  34. If Opus/Avatar COMPiler encounters an unknown token, it will write a warning
  35. to the screen and reserve 5 bytes for the offset of a label. In case that it
  36. is NOT a label, these will then be filled out with zeros, just as OECC does
  37. with unknown tokens, but you will then be warned. The recommended method of
  38. obtaining the 4 byte binary offset of a label is with the [ADDR lbl] token,
  39. and the 5 byte decimal offset of a label with the [OFS lbl].
  40.  
  41.  
  42. Also, in OECC you would define a label as
  43.  
  44.                                  [/TARGET]
  45.  
  46. whereas in Opus/Avatar COMPiler you should use [LABEL TARGET]. Opus/Avatar
  47. COMPiler recognizes both forms, however.
  48.  
  49. ------------------------------------------------------------------------------
  50.  
  51.                         Various practical information
  52.  
  53. Labels has a maximum length of 200 characters and is not case-sensitive.
  54. Lines in the .OEC file may be a maximum of 255 characters long. (You can't
  55.   be serious about having lines longer than this?). If you have .OEC files
  56.   with lines longer than that, you can use the /LONG switch.
  57. Externally defined token names has a maximum length of 20 characters.
  58. Opus/Avatar COMPiler requires DOS 3.10 or higher and should be able to run
  59.   on all MS-DOS machines. It uses no IBM specific calls, only DOS.
  60. Opus/Avatar COMPiler supports the CMDLINE environment string as used in 4DOS
  61.   and will thus work with command lines up to 255 characters in length.
  62.   (A hint to users of 4DOS: "SET .BBS=C:\OPUSUTIL\OAVIEW.EXE" will make it
  63.    a lot easier to view files)
  64.  
  65. ------------------------------------------------------------------------------
  66.  
  67.                         Setting up standard switches
  68.  
  69. You may set up an environment string OACOMP (or whatever you may rename the
  70. .EXE file to) containing all your standard switches. F.ex. if you never use
  71. multi-line comments, you can
  72.  
  73.                              SET OACOMP=/C-
  74.  
  75. to speed up things quite a bit. If you then have a single file with multi-
  76. line comments, all you have to do is specify /C+ on the command tail to turn
  77. on multi-line comment processing for that invokation of Opus/Avatar COMPiler.
  78.  
  79. The programs OAVIEW and OADECOMP have similar environment strings.
  80.  
  81. ------------------------------------------------------------------------------
  82.  
  83.                  Privilege codes
  84.  
  85. If you have problems remembering the OECC tokens used for controlling output
  86. based on privileges, the Opus/Avatar COMPiler is for you. Incorporating many
  87. new ways of defining the same with, you should now be able to get on with the
  88. programming and forget if @BELOW is below-or-equal-see or below-don't-see etc.
  89.  
  90. Some examples of the privilige control tokens in Opus/Avatar COMPiler.
  91.  
  92. [Cls]
  93. [EQ Sysop      SEE]Your current privilege level is........... [yellow]SysOp[lightcyan]
  94. [EQ AsstSysop  SEE]Your current privilege level is........... [yellow]Assistant SysOp[lightcyan]
  95. [EQ Clerk      SEE]Your current privilege level is........... [yellow]Clerk[lightcyan]
  96. [EQ Extra      SEE]Your current privilege level is........... [yellow]Extra[lightcyan]
  97. [EQ Favored    SEE]Your current privilege level is........... [yellow]Favored[lightcyan]
  98. [EQ Privileged SEE]Your current privilege level is........... [yellow]Privileged[lightcyan]
  99. [EQ Worthy     SEE]Your current privilege level is........... [yellow]Worthy[lightcyan]
  100. [EQ Normal     SEE]Your current privilege level is........... [yellow]Normal[lightcyan]
  101. [EQ Limited    SEE]Your current privilege level is........... [yellow]Limited[lightcyan]
  102. [EQ Disgrace   SEE]Your current privilege level is........... [yellow]Disgrace[lightcyan]
  103. [EQ Twit       SEE]Your current privilege level is........... [yellow]Twit[lightcyan]
  104. [LT AsstSysop  SEE]This is shown to all below AsstSysop
  105. [GT AsstSysop  SEE]This is shown to all above AsstSysop
  106. [BE AsstSysop  SEE]This is shown to all Below or Equal to AsstSysop
  107. [AE AsstSysop  SEE]This is shown to all Above or Equal to AsstSysop
  108. [EQ AsstSysop  SEE]This is shown to all with AsstSysop privilege
  109. [NE AsstSysop  SEE]This is shown to all Non-AsstSysops
  110. [GT AsstSysop SKIP]This is not shown to any above AsstSysop
  111. [LT AsstSysop SKIP]This is not shown to any below AsstSysop
  112. [EQ AsstSysop SKIP]This is not shown to AsstSysops
  113. [NE AsstSysop SKIP]This is not shown to any Non-AsstSysops
  114. Again [[y,N][Menu]YN
  115. [Choice]Y[Top]
  116.  
  117. Try to compile this and then view it with the Opus/Avatar VIEW utility. When
  118. the program asks you "Again [y,N]" you can press the ctrl key and the privi-
  119. lege you want to be now, ie. ^A to be AsstSysop. Then answer Yes to the
  120. prompt and see the effect.
  121.  
  122. ------------------------------------------------------------------------------
  123.  
  124.                             Uppercase support
  125.  
  126. Opus/Avatar COMPiler has internal support for code pages and should uppercase
  127. all code pages correctly. This means that you must have set your country code
  128. and/or code page correctly to get proper functionality from the Opus/Avatar
  129. COMPiler. Danish and Norwegian users, especially, will have to set the country
  130. code correctly to be able to uppercase the special Danish/Norwegian character
  131. ¢ to ¥ (You foreigners may se a cent and Yen character there :-). No matter
  132. what your country code says, it will always uppercase é to É even if DOS
  133. doesn't define this as a standard uppercase method.
  134.  
  135. If you want to use another upper case table than the default one, you can
  136. create a file UPPER.nnn in a directory pointed to by the environment string
  137. XLATE (or any where in the PATH), where nnn is the code page you are using.
  138. Users of DOS 3.2 or below have code page 865 (if country code is Danish (045)
  139. or Norwegian (047)) or code page 437 if not one of these. The file must be 256
  140. bytes long and must contain a one-to-one character lookup table for
  141. uppercase'ing, ie. if you want ï (character 139) to be uppercased to I
  142. (character 73), you must set the 140th character (file starts with character 0)
  143. in the file to the value 73.
  144.  
  145. The INSFILTR program used in my FILTER package can be used to set up trans-
  146. late tables.
  147.  
  148. ------------------------------------------------------------------------------
  149.  
  150.                            User-Defined Tokens
  151.  
  152. In the Opus/Avatar COMPiler, you can define your own tokens. Just create
  153. a file named OACOMP.TOK in the same directory as the OACOMP.EXE file. The
  154. format of this file is:
  155.  
  156.                         <Token><WhiteSpace><Value>
  157.  
  158. where <Token> can be any word up to 20 characters in length, and <Value>
  159. any string up to 200 characters in length. <WhiteSpace> is one or more
  160. TABs or spaces. The <Value> is taken as beginning at the first non-white-
  161. space after the <Token>. This means, that if you want your <Value> to start
  162. with a whitespace, you must use the control character shortcuts, described
  163. below. Starting with version 1.15, this value may now contain tokens (both
  164. internal and external ones) and they will be compiled. Previous versions
  165. only used it as text macros.
  166.  
  167.                    Setting control characters in <Value>
  168.  
  169. Opus/Avatar COMPiler recognizes the standard way with a ^ followed by a
  170. letter (as in ^P), and to actually get a ^ in your <Value>, just type it
  171. twice. Also, you may use the Turbo Pascal way of defining character codes
  172. with the #<chr> construct, as in #13 (which is the same as ^M). To actually
  173. get a # character just (you guessed it!) type it twice. The <chr> may be
  174. expressed in hexadecimal notation by prefixing it with a $, as per the Turbo
  175. Pascal standard.
  176.  
  177.                     Having local tokens for each file
  178.  
  179. By creating a file with the same name as an .OEC file, but with the extension
  180. of .TOK instead, and placing it in the same directory as the .OEC file (or
  181. in the same directory as the OACOMP.EXE file), you can have local tokens to
  182. each and every .OEC file you have. The format is the same as the OACOMP.TOK
  183. file, and tokens defined in the OACOMP.TOK file will be overridden by the
  184. tokens defined in the *.TOK files. The order of search for the *.TOK file
  185. is first in the directory of the .OEC file and then, if not found there, in
  186. the directory of the OACOMP.EXE file.
  187.  
  188.                                Examples
  189.  
  190. SYSOP           Your Sysops
  191. KRH             Keld "HeartWare" Hansen, Sysop 2:234/10
  192. MIWO            Michael Wolthers, Sysop 2:234/10
  193. CHEERS          Cheerio,#13#10  Keld "HeartWare" Hansen, Sysop 2:234/10
  194. USER            #$20 Your name goes here... ##11
  195. TwoTabs         #9^I
  196. ThreeSpaces     #32 #$20
  197. PUSH        [SAVE]
  198. POP        [LOAD]
  199.  
  200. As you can see, the last two values start with a whitespace, and must thus
  201. define the first character in another way.
  202.  
  203. .OEC file               .BBS file
  204. [SYSOP]                 'Your Sysops'
  205. [USER]                  '  Your name goes here... #11'
  206. [ThreeSpaces]           '   '
  207. [CHEERS]                'Cheerio,
  208.                            Keld "HeartWare" Hansen, Sysop 2:234/10'
  209.  
  210. You may use upper and lower case letters in the token names, they're treated
  211. the same by the Opus/Avatar COMPiler, ie. Opus/Avatar COMPiler will uppercase
  212. all tokens before comparison. Read the section regarding uppercase support
  213. for more information.
  214.  
  215. Hope this helps you get along.
  216.  
  217. [CHEERS]
  218.