                  >>>>> EnhComp Errata <<<<<
===============================================================
The file, MODULES/TXT, documents any ????????/BAS file placed
on this disk. It is a file formatted for listing to a printer.
==============================================================
01/13/89 - Applied BC55/fix - corrects "R" files with array fields
           The bug was associated with LSET & RSET
07/25/88 - Applied BC54/FIX to correct error reporting
        asociated with INC/DEC TM errors and ELSE without IF
04/11/88 - Revised SUPPORT/DAT to correct OUT port,value
04/01/88 - Applied CED53/FIX to correct obscure bug
03/23/88 - Revised SUPPORT/DAT library file to fix:
     1. A^B now operates correctly for positive and negative
        values of A or B. If A is negative, B must be integer,
        otherwise an Illegal function call error will prevail.
     2. SQR(A) will now return an Illegal function call error
        if A is negative.
     3. LOG(A) will now return an Illegal function call error
        (RT-8)if A is zero or negative.
     4. EXP(A) will return an Overflow/Underflow error (RT-10)
        if A is out of bounds.
-----
03/01/88 - Version 2.6 released with the following changes

All patches to version 2.5 have been incorporated

The following changes/bug-fixes have been incorporated:

- All arrays must be DIMensioned before use as specified on
  page 4-29. A trap has been added to the compiler to abort
  compilation if an array reference was found without a
  corresponding DIM statement. The variable name is displayed.
  The reason why arrays must be DIM'd is that the space they
  occupy is dynamically allocated by a SUPPORT/DAT subroutine
  call invoked by the DIM process. Interpretive BASIC defaults
  to an array size of 10; EnhComp cannot!

- The POS() and ROW() functions in the PRO-EnhComp SUPPORT/DAT
  library have been corrected.

- Page 4-131: The result of a "trailing hyphen USING field
  specifier" has been changed to:
      "Print trailing sign if negative, or SPACE if positive"
  This conforms to Microsoft BASIC operation.

- Page 4-108: The RMARGIN statement has been improved so that
  an "RMARGIN=0" will result in the total suppression of
  left-margin indents, PAGELEN checking, as well as right-margin
  checking. This gives the capability of generating printer
  controls without EnhComp adding any page formatting.

- The error code generated by random I/O attempts of an
  I-mode or O-mode file has been changed from 108 to 254.

- OPEN now returns error 162 if reclen is greater than 255 on
  an R-mode file.

- String array elements are now permissable in the FIELD
  statement (not XFIELD).

- The Model I/III EnhComp REF command has been fixed to work
  on a Model I.

- A bug which could be caused by having an END statement which
  precedes any file access statement in a program which uses
  file access has been eliminated.

- The CED-Q command has been fixed to defalt to drive 0 in the
  Model 4 EnhComp release.

- If the 'exp1$' string consisted of a concatenation of strings
  in an INSTR() function call, the search was incrrect. This
  has been fixed.

- The OPEN statement has been improved to enable opening of
  devices. The following DOS-supported open can be performed:
       OPEN "O",1,"*PR"

- The FIELD statement for an R-mode file now supports a field
  length of 256 as documented on page 4-39. The corresponding
  OPEN statement should not include a 'reclen' argument; the
  default is a record length of 256. This allows you to field
  a 256-byte record in a single string variable.

- The FIELD statement will now generate an error 112 (Field
  overflow) if the total length of the combined fields exceeds
  the reclen established by the OPEN statement.

 - The syntax error generated by using the TYPE() function as
  documented has been eliminated.

- The RESUME statement has been improved. It no longer
  functions just like GOTO. You can 'RESUME line#' where line#
  is at a highest program level (i.e. not contained in a
  GOSUB'd subroutine or program loop). RESUME resets the
  program stack pointer to its initial value, normalizes the
  program code pointer, then performs a GOTO.

- Page 4-66: The LINEINPUT statement now turns ON the cursor
  prior to performing the input and turns OFF the cursor upon
  concluding the input.
===============================================================
Note: Entering a NULL string for CED's Find and Search commands
results in finding/searching the next occurrence of the previous
find/search string, if any.

Page 2-8: *INCLUDE and *GET compiler directive. Note that the
     filespec must include any extension, as required.

Page 3-8: "V" command of CED permits viewing the "current" file
    if filespec is omitted. Thus,
     "V"<ENTER> displays current ASCII file, whereas,
     "V#"<ENTER> displays current compressed file.
     The "current" file is noted by "?F". This operation
     also pertains to "L:" and "W:" commands.

Page 2-7 and 4-59: The undocumented "EQU" operator of "label";
     This allows you to define values for labels to be
     typically used in conditional compilation. Example:
        "DOS5" EQU 0:"DOS6" EQU 1
        *IF DOS5
        PRINT"DOS 5"
        *ENDIF
        *IF DOS6
        PRINT "DOS 6"
        *ENDIF

Page A-7: LOF() restricts its use on all file types except "R".
     The "X" type file does not maintain an end-of-file
     pointer which is valid for the last record.

Page 4-33 and 4-113: Added automatic CLOSE of all open files on
     RUN and END (or implicit END).

Page 4-113: The RUN statement also supports additional
     variations beyond RUN"filespec". For example,
     the statement,
          RUN
     will restart your program without causing it to load. All
     open files will be first closed. All variables will be
     cleared. The statement,
          RUN exp
     will restart your program at the line identified by "exp".
     All variables will be cleared. All open files will be
     closed. This is similar to interpretive BASIC's, RUN nnnn.
     Of course, if the syntax used is, RUN exp$, then exp$ is
     assumed to be a file specification. You cannot RUN at a
     labeled statement as there can be no differentiation
     between a labeled statement string and a file spec.

Page 4-33: Added the ability to terminate a running program and
     automatically execute a DOS command. Note that this is not
     the same as RUN"program". The syntax to use for this
     construct is:
         END"command string"
     For example, you could terminate the compiled program and
     invoke a Job file with a BASIC statement such as:
         END"DO MYFILE (A=LIST)".
     Any open files will be automatically closed prior to
     terminating the compiled BASIC program.

Page 3-1 and 3-5: The compiler automatically generates line
     numbers in the executable program generated by the compiler
     for any source line which has no BASIC line number.
     These numbers start from 1 and are incremented by 1.
     This helps identify which line was suspect during a
     runtime error trap. These line numbers are only used for
     reporting purposes. Runtime error reporting is not as
     useful without a reported line number. Your
     program cannot reference these "pseudo" line numbers.
     Nothing prohibits your program from assigning a BASIC
     line number the same as these automatic line numbers;
     however, for maximum usefulness in error reporting, you
     should avoid that practice. 
    
Page 3-6: CED 'L:' command:
     CED accepts either a pure ASCII file or its own tokenized
     format. Since BC can be used without regard to the CED
     editor, it also accepts either pure ASCII files or CED's
     tokenized files as its source stream input. Please don't
     expect to edit a BASIC program for use by BC with the
     interpretive BASIC editor. The tokenization of inter-
     pretive BASIC will create problems.

==============================================================
     The following information either adds to or corrects the
reference manual for EnhComp.

1) The correct syntax for INPUT is:
     INPUT<@pos,><"string";>var1<,var2 ...>
The correction adds a comma <,> following the optional video
position.

2) All line labels must not have imbedded spaces. Thus, the
examples shown on pages 4-47 (GOSUB), 4-59 (JNAME), and
4-105 (RETURN) are incorrect. The labels must be entered as
a contiguous string of non-space characters. In the example
illustrated, change the labels to read: "PRINTA", "SORTA",
"PRINTB", and "SORTB".

Note that in the example, lines 150 and 170 illustrate the
runtime error handling of "subscript out of bounds". To
correctly run the program, change the '11' to '10' in both of
those lines.

3) There is an enhancement to the PLOT statement documented
on page 4-86. The 'flag' value can also take on any of the
three values: 'SB', 'RB', or 'CB'. These flag values stand
for set box, reset box, and compl box respectively. These
arguments direct PLOT to plot a box using the two coordinate
pairs as the northwest and southeast corners of a rectangle.

4) The functions, EOF(bufnum), LOC(bufnum), and LOF(bufnum),
were noted in the alphabetical summary on pages A-6 and A-7
but were omitted from chapter 4. Their operation should be
obvious from the summary description.

5) Page 3-8; VIEW command
     The correct syntax of the "V" command is as follows:
        Vfilespec<,line1<,line2>> to view an ASCII file, and
        V#filespec<,line1<,line2>> to view a compressed BASIC
                                   file.
There is no colon immediately following the "V" in the syntax.

6) Page 3-8; WRITE command
     The correct syntax of the "W" command is as follows:
        W:filespec<,line1<,line2>> to write a compressed BASIC
                                   file.
You can also use the following syntax to write an ASCII file:
        W:#filespec<,line1<,line2>>
In either case, note the required comma as a separator between
the filespec and "line1".

7) On page 4-18 for the COMMAND statement example, line 80 is
missing a Z80 "RET" operation. The corrected line should read:
     80 LD DE,3C01H:LD BC,03FFH:LDIR:RET

8) Page 3-7 of the CED editor documentation, please add the
"NEW" command. This command effectively does a delete of text
from top to bottom clearing out the entire text buffer.

9) Page 4-31; DRAW command
     The 'flag' as noted in the documentation needs to be the
entire statement word, "SET", "RESET", or "COMPL" - not just
"S", "R", or "C" (quotes not used).

10) On page 4-78; ON BREAK GOTO
     Note that the function, "BRL", contains the line number
where the BREAK ocurred. This is similar to the "ERL" function
used after on ON ERROR GOTO statement.

11) On pages 4-81 and 4-137 dealing with the "X" file type,
please note that the "reclen" used with the OPEN statement
must include 2 bytes for each string variable specified in
the XFIELD statement. This is casually noted on page 4-137.

12) Note that for the PLOT graphics statement, a coordinate
value greater than the legal range will be truncated to the
maximum permissable value. Note also that only the low-order
byte will be tested for validity.

13) On pages 4-130/4-131; USING function
     The 2nd, 4th, and 5th examples are not correctly shown.
They should be: "*****1.45", "  $19.95", and " $19.95"
respectively. Note that when using the "**", "$$", or "**$"
specifier, two more field positions will be specified.

14) Note that the 'SYSTEM"command string"' statement was
omitted from chapter 4. It is used to invoke any DOS command.
The syntax can be: 'SYSTEM"string"' or 'SYSTEM VAR$'.

15) Page A-10; Run-time errors
     Please add the following errors to the run-time table:
        112 - Field overflow - Output when an XFIELD statement
              overflows the 'reclen' specified at OPEN time.
        114 - "X" record number overflow - Output when the
              calculation of an "X" fielded physical record
              overflows a 16-bit field (the maximum DOS value).
        124 - End of file encountered.
        180 - Buffer not open. - Output when you specify the
              bufnum of a file which has not been opened.

16) Page 4-52; INKEY$
     statement 20 should read;
        20 A$=INKEY$:IF A$="" THEN 20

17) Page 4-74 MID$()= statement
     This page documents the "left-hand" MID$()= statement. The
     heading line should be corrected to read "MID$()=".

18) Page 5-8
     SSR 167 is now used by the END statement compilation.
     SSR 172 is now used by the RESUME statement compilation.

19) Page 6-1, Z80 Source code example
     The line numbered 70 which declares the "SCREEN" label
     must precede the Z80-MODE statement line numbered 60.
     ALL BASIC (HIGH-MODE) REFERENCED LABELS MUST BE LOCATED
     WITHIN THE HIGH-MODE PORTION OF YOUR PROGRAM. A label
     defined in the Z80-MODE of your program can be referenced
     by the assembler portion only. See the use of "ENLOOP" and
     "ENDENC" on page 4-45.

20) Page 6-1, Access of BASIC variables and line numbers

     The sample program on page 6-1 of the manual illustrates
     that you can reference a BASIC variable using the syntax,
          &(varname)
     You can also reference the address of a BASIC line number
     (an actual line-numbered line) by the syntax,
          &(#line_number)
     For example, the Z80 code,
          LD HL,&(SCALER)
     loads the address of the BASIC variable scaler into the
     HL register, whereas the Z80 code,
          LD HL,(&(SCALER))
     is an indirect 16-bit load of the memory contents of the
     variable into the HL register. If SCALER was an integer,
     register HL would then contain the integer value. See
     pages 4-18 and 4-45 for more examples of variable access.

==============================================================
NOTE: EnhComp permits long variable names and allows reserved
words (BASIC statement and function names) to be substrings
of variable names. As such, it is required that all statement
and function names, as well as variable names be delimited by
either a space, a special character not acceptable as a name
(i.e. :,;"*+-/<>=), or an end of line.
==============================================================
