EnhComp

written by Matthew Reed

Enhcomp advertisement from 80 Micro

Portion of a MISOSYS advertisement from the July 1986 issue of 80 Micro

EnhComp was a BASIC compiler written by Philip Oliver for the TRS-80 Model III and Model 4. (Longtime TRS-80 users probably remember Philip Oliver for his excellent game Scarfman.) Oliver wrote two versions of EnhComp: the original published by the Cornsoft Group of Indianapolis, Indiana in 1980 and the more popular second version (whose full name was the Enhanced BASIC Compiler Development System) sold by MISOSYS of Sterling, Virginia starting in 1986. Unlike most other TRS-80 BASIC compilers (such as Simutek’s ZBASIC), EnhComp wasn’t primarily focused on compatibility with interpreted BASIC but on providing a new enhanced version of BASIC.

ENHBAS

ENHBAS advertisement from 80 Microcomputing

ENHBAS advertisement from the June 1981 issue of 80 Microcomputing

Philip Oliver’s original version of EnhComp was a companion product to his popular ENHBAS1, an enhancement to Model I and Model III interpreted BASIC. ENHBAS cost $59.95 from the Cornsoft Group and added many additional features to BASIC. These included the ability to use line labels instead of line numbers, a full-featured sort routine, structured programming commands, and enhanced graphics commands.

The Cornsoft Group advertisements for ENHBAS also mentioned ENHCOMP. It cost $29.95 and was described as an “integer subset BASIC compiler. Full graphics and unlimited length variables. Written in machine-language — fast!” The advertisements also mentioned that ENHCOMP required the Radio Shack Editor/Assembler.

This version of ENHCOMP was only briefly available and it soon disappeared from the Cornsoft Group advertisements. In an article in the November 1981 issue of BYTE, Philip Oliver said that ENHCOMP had been “discontinued due to lack of customer interest.” However, the article continued:

Oliver is now at work on a BASIC compiler that will handle all of Radio Shack BASIC plus the ENHBAS enhancements. This second compiler will produce machine code (not source code like their present compiler), and should rival Microsoft’s compiler. Since Cornsoft’s machine-code compiler will be written specifically for the TRS-80, it will use the more efficient ROM routines when appropriate, but its own routines when they are faster. The run-time package (and required disk storage) should be much smaller than for the Microsoft compiler.

EnhComp version 2

As far as I know, the Cornsoft Group never released this second version of ENHCOMP. (The decline in the TRS-80 market around 1983 and 1984 probably accounted for that.)

In 1986, MISOSYS released new versions of EnhComp (now usually spelled with mixed case) for the TRS-80 Model III and Model 4. Roy Soltoff wrote in the first issue of The MISOSYS Quarterly in Summer 1986:

We’re pretty excited about this compiler. It was originally written by Phil Oliver who some may know as the author of ENHBAS — an add-on extension to the Model III BASIC interpreter as well as that old favorite of gamesters, Scarfman. We spent a lot of time cleaning up the code, fixing bugs, and porting it over to the Model 4 native mode (i.e. a Model 4 running as a Model 4 under TRSDOS 6). We also added a few enhancements.

The complete EnhComp package cost $124.95 and came with a very complete manual. The system consists of five files:

  • BC/CMD – the EnhComp BASIC compiler
  • CED/CMD – a line editor for writing EnhComp programs, which is similar but not identical to the interpreted BASIC line editor
  • S/CMD – a “supervisor” program that controls both CED/CMD and BC/CMD. Running S/CMD allows EnhComp to be used much like a BASIC interpreter, albeit slower.
  • REF/CMD – a cross-referencing tool
  • SUPPORT/DAT – the BASIC libraries used by EnhComp. These libraries are only used by the compiler; a compiled EnhComp program is standalone and doesn’t require the file.

Unlike some other BASIC compilers (such as the Microsoft BASIC Compiler), distributing compiled EnhComp programs required no royalties. The only restriction was that using it to create certain kinds of programming tools (such as another BASIC compiler) required special permission from Philip Oliver.2

Features

EnhComp supports all the features of Model III interpreted BASIC (including double-precision math) and most of the extra features provided by ENHBAS. It also offers many extra features:

  • string variables that can be up to 32K long (interpreted BASIC limits strings to 256 bytes)
  • a multi-line version of IF / THEN / ENDIF
  • loop control using REPEAT / UNTIL
  • user defined functions with parameters (including local variables, although this was undocumented)
  • the ability to create new BASIC commands using COMMAND
  • dynamic array allocation
  • trapping of the BREAK key using ON BREAK GOTO

One of the most impressive features of EnhComp is its built-in Z80 assembler. Unlike the limited assemblers available in some compilers, EnhComp offers a full featured assembler that allows freely mixing BASIC and assembly language. A function can include short snippets of assembly code or be entirely written in assembly. If you want to, you can even use EnhComp to write a complete program in assembly language.

The End

In the Summer/Fall 1992 issue of The MISOSYS Quarterly, Roy Soltoff wrote of plans for a major revision of EnhComp, which as far as I know was never released. By that time, the price of EnhComp had been reduced to $23.98. EnhComp, along with most of the other MISOSYS software, was placed on closeout on March 1, 1993 and was discontinued when those copies were sold.

There were many impressive language products for the TRS-80, but EnhComp was one of the best. As John B. Harrell, III wrote in his review in the March 1987 issue of 80 Micro:

If you use BASIC on your TRS-80, drop everything and buy EnhComp.


  1. Although the Cornsoft Group ENHBAS and ENHCOMP used all capitals, the MISOSYS version of EnhComp used mixed capitals. On the other hands, reviews in magazines used inconsistent capitalization: ENHCOMP, Enhcomp, EnhCOMP, and even enhCOMP were used. ↩︎

  2. This was a pretty standard licensing restriction to prevent someone from creating a new compiler and reusing the EnhComp libraries without payment. ↩︎

Categories: Languages, Software