CBASIC: A Complete Editor/Compiler
Well Worth its Price
The most complete editor/ compiler I have seen for the CoCo, CBASIC is a programming system designed for a 32/ 64K Color Computer with at least one disk drive. The documentation states that it will take full advantage of the 96K of address space available if 64K is installed. I did not have the program long enough to try out all the options because they are very extensive. They include, but are not limited to, having built-in Hi-Res and 80-column drivers.
CBASIC supports both PBJ's and Double Density's 8Ocolumn cards, but there is a small catch if you plan on marketing your software. Cer-Comp grants the owner of CBASIC a limited license for incorporating it to create marketable software as long as it does not include the use of the high resolution screen or 80-column video drivers generated by the compiler. If this is done the author must agree to the following: l) No reproduction of CBASIC documentation; 2) Author or publisher must supply CerComp with a complete copy of the finished software package within 30 days of first publication; and 3) Tht author or publisher must pay a royalty of $5 for each copy of the program produced, paid quarterly. This needs to be kept in mind if you have software you might want to market .
You can use the 80-column or Hi-Res displays with tht editor without having to incorporate these screens into your compiled program. The default screen is 51 characters. Line numbers of the BASIC program are limited to four digits in length, but 9,999 lines should cover most programs.
The editor is a very good one and could be the subject for review all by itself, so I will try to go over the features I considered exceptional. Most of the regular BASIC editing commands are available, i.e., LIST, RENUM, DELETE, LOAD etc. The "EDIT line number" command has been replaced by two commands, LEDIT and AEDIT. LEDIT (line edit works similar to BASIC EDIT but the arrow keys are used to go to the letter you want to change - the SHIFT-down arrow to delete and a SHIFT-up arrow to insert spaces. The SHIFT-left and right arrows move to the beginning and end of the line. The SHIFT-@ key toggels the multiple character insert mode on and off. The AEDIT (auto edit) works tht same, except the ENTER key is used to replace the old line with the new one and the editor automatically moves to tht next line and stays in the EDIT mode. The BREAK key is used with AEDIT instead of ENTER to exit the EDIT mode.
COPY and MOVE are two other very powerful tools COPY allows you to copy a portion of the program to another place in the program and, if necessary, it automatically renumbers upon completion of the copy. The portion copied is left intact so you will have two copies of that portion. The MOVE command works almost the samt except the orginal lines are removed from the program. Tht editor also uses the AUTO command for auto-line numbering as you enter the program, and RDELAY is used for auto-key repeat.
BRATE is used to set the Baud rate or set the output to the PBJ parallel printer card. Except when you are using one of the 80-column cards, one of nine different screen width formats can be selected. Your choices are 28, 32, 36 42, 51, 64, 85, 128 or 255. Of course the last three an unreadable, but are useful for seeing print formats. As mentioned earlier, the default is 51 characters per line. Tht 51 characters are not for the 80-column cards; if you have the PBJ Word-Pak II, SRATE can be used to disable or alter the smooth scroll rate. CBASIC also allows for protecting screen lines. This is great for protecting progranm menus. It can also be used with mixed text and graphics.
One place where CBASIC is similar to other compiler: is that it uses decimal numbers from +32767 to - 32768 (sorry, no real numbers). Numeric variables are limited like regular BASIC to one- or two-letter names or a singe letter and one digit. Variable names can be longer but only the first two are used by the compiler. Dimensioned arrays rnay be one or two dimensions only. CBASIC considers a simple variable as the same as the first element in the array with the same name, i.e., A=A(O,O). CBASIC uses base zero subscripting. It does include a scheme to deal with number larger than the basic two-byte representation. It does it by using two variables to store each 32-bit number. Similarly it has a scheme for extended and decimal addition and subtraction. One other thing to keep in mind is that variable, values are not zeroed as in powering up in BASIC; there i always "trash" left in memory but CBASIC includes a simple three-line routine that accomplishes this. Be sure you use it.
String operations are CBASIC's greatest assets. It features a complete set of string processing capabilities. This is one of the big advantages that sets CBASIC apart from other compilers. Just as in BASIC, string variable names consist of one or two letters or one letter and a digit followed by a dollar sign. The difference with strings comes with the dimensioning. If a string variable is not dimensioned, it is assigned a length of 32 bytes. If it is dimensioned, it must be done before it is used. A string variable or array may be declared to have a size of one to 255 characters in length. Unlike numerical arrays, string arrays may only be one dimensional. However, the DIM statement is used to specify the string size so a string array will have two subscripts in the DIM statement, one for the variable length and one for the array size. CBASIC includes most all string functions available in ECB.
CBASIC supports many options that are not available in BASIC. ON RESET GOTO is supported in case someone hits the Reset button during program execution. It also supports an ON ERROR GOTO statement that is very handy, especially when used with the TRACE command while debugging a program. Additionally, CBASIC supports many Interrupt Flag statements along with most of the low resolution and high resolution graphics and play statements. Tape and disk I/ 0 statements are supported with a few modifications. This is where you have to be very careful. I/ 0 operations do not always work exactly the same as BASIC. If you are aware of this, there may be no problem, but with disk and tape I / 0 , you must be careful and maybe use a little experimentation (always include a backup of the program and data).
CBASIC is a very complete compiler, but there are a few things I would like to see improved. My biggest complaint concerns the documentation. It is about 100 pages long and parts of it are good but, while a few example programs are listed, there are not any examples of a compiled printout. The information may be sufficient for someone who is already familiar with CBASIC, but I am a firm believer that there can never be too many examples. The best manuals are the ones that assume the reader knows nothing. You can always skip over parts you already know.
Also left out of the documentation are the instructions on how to include the 80-column drivers in the compiled version. A quick call to Cer-Comp gave the answer: use the HIRES command. When I called Cer-Comp on several occasions for help, it was readily available. Cer-Comp knows this software very well. That may be the reason for the lack of information In the documentation-- they know it so well they assume it is clear to everyone. Maybe excerpts from large programs could be included or some of the people who already have CBASIC could send Cer-Comp some examples of the problems they had that turned out to be easy once a technique was understood.
Overall, I believe CBASIC is the most complete editor/ compiler on the market for the Color Computer. Each individual will have to decide whether its price of $149 is too expensive. If some of the compilers I have seen are worth the $50-plus prices they charge, then there can be no doubt CBASIC is well worth its price. While there are many programs that compile and run as they were originally written, some of your programs may take some work and time to modify. Starting a program from scratch might be easier.
To take full advantage of CBASIC, the user needs to be familiar with BASIC, Extended BASIC and Disk BASIC, have patience, and a little knowledge of machine language sure wouldn't hurt, either.
--The Rainbow, Feb 1986, pg. 198