---------------------------------------------------------------- | | | | | | | | | ================================================ | | | | | | | | | | | ***** CBASIC Compiler (CB86) ***** | | | | | | | | for the CP/M Family of | | | | of Operating Systems | | | | | | | | --------------- | | | | | | | | READ.ME File Notes | | | | | | | | - June 1983 - | | | | | | | | Digital Research Inc. | | | | P.O. Box 579 | | | | Pacific Grove, CA 93950 | | | | | | | ================================================ | | | | | | | | This file presents enhancements and modifications | | made to CBASIC Compiler software and documentation. | | Changes described in this file apply to CBASIC | | Compiler (CB86) Version 2.0 and supercede existing | | product documentation. | | | | You can print the information in this file on your | | line printer using 8 by 11 inch paper with the | | printer set to 6 lines per inch. You can trim the | | pages along the dotted lines and place the pages | | in your product documentation binder. | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes June 1983 | | | | | | | | Table of Contents | | ================================================ | | | | Bug Fixes . . . . . . . . . . . . . . . . . . 1 | | CHAIN Statement . . . . . . . . . . . . . . . 5 | | DATE$ Function (NEW!) . . . . . . . . . . . . 6 | | TIME$ Function (NEW!) . . . . . . . . . . . . 7 | | Graphics Extension Error Messages (NEW!) . . 8 | | | | ================================================ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i. | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Bug Fixes | | | | | | | | Bug Fixes for CB86 | | =============================================== | | | | * The listing file would be empty if the %NOLIST | | directive appeared last in a %LIST / %NOLIST pair | | within the source code. | | | | * The system did not issue execution error NS | | causing the system to hang if a program attempted | | to format output for an unassigned string variable | | when no string field existed in the format string. | | | | * The compiler would issue error message 41 for an | | executable statement with a line number when that | | statement was preceded by a blank line or remark | | that had a line number. | | | | * Compiler toggle O did not work if used in the | | same command line with toggle I. | | | | * The run-time system did not trap integer division | | by zero. | | | | * The ERRX function returned MP/M extended error | | codes multiplied by 256. | | | | * The trigonometric functions have been rewritten | | to resolve certain parameter remove inaccuracies. | | | | * Compiler error 101 occured when a keyword was | | used as a formal parameter in a multiple-line | | function definition. | | | | * The compiler issued error message 373 when | | compiling source code that contained no | | executable statements. (i.e., code that contains | | only remark statements, data declarations or an | | END statement.) | | | | * The ATTACH and DETACH functions did not work. | | | | | | Page 1 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Bug Fixes | | | | | | | | * The compiler did not do signed integer arithmetic | | correctly. For example, i% = -1 / 16000 would | | assign the value 4 to i%. | | | | * The first read of a fixed file, designed to | | position the file pointer to the desired record | | number, did not work in conjunction with the GET | | function. | | | | * The system did not close INCLUDE files after | | reading. | | | | * INCLUDE files were not opened in read-only mode. | | | | * DELETE and RENAME statements did not trap MP/M | | extended errors. | | | | * If a program attempted to open a file with an | | improper filename, the system marked that file ID | | as open. Therefore, if execution continued | | through an "ON ERROR" statement and a second open | | was attempted for that ID, the system issued a DF | | execution error message. Similarly, if a | | program attempted to open a file with a proper | | filename, but detected an MP/M extended error, | | the buffer space was released but the file ID was | | not released. Therefore, a close error resulted | | at the end of the program or when chaining. This | | problem also applied to the CREATE function. | | | | * The CREATE function did not trap extended errors. | | | | * Execution error TL was not detected for the TAB | | function. | | | | * Compiler error message 213 was issued for the | | following source lines: | | PRINT #1; T,OPEN | | PRINT #1; T,, | | | | | | | | Page 2 | | | |______________________________________________________________| ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Bug Fixes | | | | | | | | * The INITIALIZE function would return execution | | error message EX under MP/M II upon failure of | | BDOS functions 13 or 37. (disk system reset or | | drive reset). | | | | * A code generation bug caused bad code for | | statements of the form: I% = I% - J% Random | | memory locations were affected as a result. | | | | * The runtime system failed under certain | | CP/M-86-like operating systems that returned | | a version of BDOS function 12 that was not | | commensurate with CP/M-86 or MP/M-86. | | | | * An attempt to chain to a .CMD file would | | occasionally fail with an operating system error | | message indicating that the file could not be | | found. | | | | * CONCHAR% and INKEY% would hang the system polling | | for a character and destroy portions of MP/M-86. | | | | * The LOCK and UNLOCK functions did not work. | | | | * The run-time system would yield a wild interrupt | | for integer division-by-zero. | | | | * A constant integer expression that included a | | zero denominator caused a wild interrupt at | | compile time. | | | | * Attempts to open a file in READONLY mode did not | | work. Files were opened in locked mode instead. | | | | * If a program began with a label, a later branch | | to that label caused re-initialization of | | data-statement data and resetting of the column | | position to 1. | | | | | | | | | | Page 3 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Bug Fixes | | | | | | | | * Declared external names that were not referenced | | were placed in the object file by the compiler. | | Therefore, the linker would link modules from | | libraries that were not actually required at | | runtime. | | | | * With the P-toggle in effect under Concurrent | | CP/M-86, the compiler did not first try to | | attach the printer before attempting to use it. | | The compiler now attaches the printer first, but | | if it is not available, the F-toggle is | | activated automatically and the listing is sent | | to a file. | | | | * The ATTACH and DETACH statements did not work | | under Concurrent CP/M-86. | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Page 4 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes CHAIN Statement | | | | | | | | CHAIN Statement | | =============================================== | | | | The CHAIN statement loads another program into | | memory and starts execution. | | | | | | Syntax: CHAIN | | | | | | Explanation: The CHAIN statement can load two types | | of programs - an overlay program generated by the | | linker, or a directly executable file. CHAIN can | | load files generated by languages other than CBASIC. | | However, before you chain to an overlay file, the | | linker must create that overlay and the root | | program at the same time. | | | | The filespec can be a string expression, a variable, | | or a constant. CB80 assumes a filetype of .OVL and | | CB86 assumes a filetype of .OVR if you do not | | specify otherwise in the filespec. | | | | When a program chains to a second program, all open | | files in the original program are closed and all | | data is reinitialized to 0. Refer to the | | Programming Guide for more information on chaining | | modules and programs. | | | | | | Examples: CHAIN "B:AVERAGES" | | | | CHAIN NEW.PROG$ | | | | TOTALS$ = "ACCOUNTS.OVL" | | | | CHAIN CDRIVE$ + TOTAL$ | | | | | | | | | | | | Page 5 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes DATE$ Function | | | | | | | | DATE$ Function (NEW!) | | =============================================== | | | | The DATE$ function returns a string indicating the | | current year, month, and day set through the | | operating system. | | | | | | Syntax: a$ = DATE$ | | | | | | Explanation: DATE$ returns a six character string | | in the form YYMMDD. YY is the last two digits of | | a year reference, such as 84 for 1984. MM is one | | of twelve digit combinations representing the | | month such as 02 for February or 11 for November. | | DD is one of thirty-one digit combinations | | representing the day of the month. The string that | | DATE$ returns is undefined if the operating system | | is set to a date later than December 31, 1999 or | | earlier than January 1, 1978. | | | | If your operating system does not support time and | | date functions, the CBASIC DATE$ function returns | | a string consisting of six blanks. Refer to your | | operating system manuals to see if your operating | | system supports time and date functions. | | | | | | Example: CURRDATE$ = DATE$ | | PRINT "Today's date is: "; CURRDATE$ | | | | | | | | | | | | | | | | | | | | | | | | Page 6 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes TIME$ Function | | | | | | | | TIME$ Function (NEW!) | | ================================================ | | | | The TIME$ function returns a string indicating the | | current time of day. | | | | | | Syntax: a$ = TIME$ | | | | | | Explanation: TIME$ returns a six character string | | of the form HHMMSS. HH is one of 24 digit | | combinations representing the hour, such as 06 for | | 6:00 AM or 15 for 3:00 PM. MM is one of sixty | | digit combinations representing the minute. SS is | | one of sixty digit combinations representing the | | second. | | | | If your operating system does not support time and | | date functions, the CBASIC TIME$ function returns a | | string consisting of six blanks. Refer to your | | operating system manuals to see if your operating | | system supports time and date functions. | | | | | | Example: CURRTIME$ = TIME$ | | PRINT "The current time is: "; CURRTIME$ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Page 7 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Graphics Errors | | | | | | | | Graphics Extension Error Messages (NEW!) | | ================================================ | | | | The following error messages indicate compilation | | errors that can occur during compilation of a | | graphics statement in a program. Compilation | | continues after the error is recorded. | | | | Error numbers 180 through 240 inclusive are | | reserved for use with the CBASIC Compiler | | graphics extention. | | | | | | Error Meaning | | | | 180 A left parenthesis is missing. A left | | parenthesis is inserted. | | | | 181 A right parenthesis is missing. A right | | parenthesis is inserted. | | | | 182 A comma is missing in a PLOT statement. | | A comma is inserted. | | | | 183 The keyword STYLE is missing in a SET or | | ASK statement. STYLE is inserted. | | | | 184 A comma is missing in a SET statement. A | | comma is inserted. | | | | 185 The keyword HEIGHT is missing in a SET or | | ASK CHARACTER statement. HEIGHT is | | inserted. | | | | 186 The keyword ANGLE is missing in a SET or | | ASK TEXT statement. ANGLE is inserted. | | | | 187 A comma is missing in a SET or ASK WINDOW | | statement. A comma is inserted. | | | | | | | | Page 8 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Graphics Errors | | | | | | | | 188 A comma is missing in a SET or ASK | | VIEWPORT statement. A comma is inserted. | | | | 189 The keyword PAGE is missing in a SET | | statement. PAGE is inserted. | | | | 190 Not used. | | | | 191 The keyword COUNT is missing in a ASK | | STYLE statement. COUNT is inserted. | | | | 192 A comma is missing in an ASK statement. | | A comma is inserted. | | | | 193 Not used. | | | | 194 Not used. | | | | 195 The keyword COUNT is missing in a SET | | COLOR statement. COLOR is inserted. | | | | 196 Not used. | | | | 197 Not used. | | | | 198 Not used. | | | | 199 Not used. | | | | 200 Not used. | | | | 201 Not used. | | | | 202 Not used. | | | | | | | | | | | | | | | | | | Page 9 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Graphics Errors | | | | | | | | 203 A comma is missing in an GRAPHIC statement. | | A comma is inserted. | | | | 204 The keyword following GRAPHIC is unexpected. | | INPUT is inserted. | | | | 205 A left parenthesis is missing in a GRAPHIC | | statement. A left parenthesis is inserted. | | | | 206 A right parenthesis is missing in a GRAPHIC | | statement. A right parenthesis is inserted. | | | | 207 A colon is missing in a GRAPHIC statement. | | A colon is inserted. | | | | 208 The variable in an ASK statement is of type | | real or string. An integer variable is | | required. | | | | 209 The variable in an ASK statement is of type | | integer or string. A real variable is | | required. | | | | 210 The variable in an ASK statement is of type | | integer or real. A string variable is | | required. | | | | 211 Not used. | | | | 212 Not used. | | | | 213 Not used. | | | | 214 Not used. | | | | 215 Not used. | | | | | | | | | | | | | | Page 10 | | | ---------------------------------------------------------------- ---------------------------------------------------------------- | CBASIC Compiler (CB86) READ.ME File Notes Graphics Errors | | | | | | | | 216 A comma is missing in a GRAPHIC statement. | | A comma is inserted. | | | | 217 The variable in a MAT statement is of type | | integer or string. A real variable is | | required. | | | | 218 Not used. | | | | 219 Not used. | | | | 220 Not used. | | | | 221 The keyword following MAT is unexpected. | | FILL is inserted. | | | | 222 A colon is missing in a MAT statement. A colon | | is inserted. | | | | 223 An identifier is missing in a MAT statement. | | An identifier is inserted. | | | | 224 A comma is missing in a MAT statement. A | | comma is inserted. | | | | | | | | | | VVVVVVV | | VVVVV | | VVV | | VVV | | VVV | | VVVVV | | VVV | | V | | | | END OF READ.ME FILE | | | | | | | | | | Page 11 | | | ----------------------------------------------------------------