C Source BASIC_C
Now You Can Work in C with Only BASIC Knowledge
The Company
According to opencorporates, C Source, Inc was incorporated on October 17th, 1983. Gene W. Brown was the president of the company, based on an article in the February 19, 1985 issue of PC Magazine. Tom Hogan worked as both a senior programmer and Marketing Vice President. When I was researching this post, I found a couple of letters to the editor that Hogan wrote about C Source products. Hogan wrote on his LinkedIn, “I also helped code some of the Basic_C Library and some other products. C Source was a garage startup.”
The company was dissolved on May 19, 1996.
The Product
I won’t lie, this ad was a pain in the butt to research. My search turned up thousands of unrelated results. I was able to sift through and find a couple of things.
What was BASIC_C? I found a good summary in an ad from PC Brand:
If you’re getting the message that switching from BASIC to C would be prudent, you’re about to discover that it’s back to basics of a different sort. BASIC is fat with hidden functions that stripped down C just doesn’t have.
Gone are all those handy string manipulators like LEFTS. MIDS. STRINGS, etc (although our library offerings add them back). In C, when you reach for even simple invocations like INPUT or PRINT AS, X% - well, sorry to disappoint, but underlying such expressions in BASIC are bulging macros which C cannot have if it is to keep its slim profile.
But now comes BASIC-C and all your old favorites are back. Someone has written the full set of C functions to mimic BASIC’s vocabulary, from ABS to WRITE. Over 80 routines to open and close files, “field” file buffers, convert their contents from and to strings (the CV? and MK? series), peek and poke, print using, clear screen, “instr”, on error goto...they’re all there. Some have reworked names and syntax to suit C, but all are written as one-to-one functional equivalents to the familiar features of BASIC. And they are documented one to a page in alphabetical sequence like the Microsoft manual for added familiarity.
So with BASIC-C, when you’re thinking INPUT, go ahead. Use it. Or LPRINT or LOCATE or INKEY. But without BASIC-C, you will find that every line of code plunges you back in the C texts to figure out how to write it. Someday you’ll want to, but for now, BASIC-C will start you programming quickly at the statement level so that you can concentrate on C’s larger concepts.
There’s a bonus: an unusually well written manual with a first rate chapter comparing how BASIC and C go about their tasks Without question, BASIC-C will ease your transition to C.
Happily, I was able to find a review of BASIC_C in the October 1984 issue of PC Tech Journal. Ernest Tello wrote an article for this issue entitled “BASIC To C” where he examined two tools developers were using to convert their BASIC code to C. Here is the BASIC_C section:
C Source Inc. has developed a product intended specifically for programmers with a working knowledge of BASIC who want to develop programming ability with the C language. It is a library for use with several C compilers on the IBM PC (currently Lattice, DeSmet, and Computer Innovations are supported) that implements many of the familiar BASIC statements and structures in the C environment. The purpose of this library is to ease the process of learning C for BASIC programmers, and to aid in the conversion of BASIC programs to C. It will not, however, enable a BASIC programmer to produce C programs without any knowledge of the C language. The BASIC_C Library manual is written with the C novice in mind and is one of the better introductions to C available, particularly for those familiar with the details of BASIC.
Version 1.0 of BASIC_C has about 75 functions in the library. Table 1 lists the corresponding BASIC and BASIC_C functions. No math functions are included. The reason for this, according to a brochure issued by C Source, is that math functions belong in a standard library, ‘”and only the Lattice/Microsoft C compiler does not have them.” Version 2.12 of the Lattice compiler, which includes math functions, is now available.
For writing programs that do not require trig, log, exponential, or random functions, however, the BASIC_C Library is a welcome addition to the C environment for both the experienced C programmer and the novice. A loan payment calculation program serves as an example of a BASIC program (listing 1) translated to C (listing 2) using the BASIC_C Library. The example illustrates the conversion of a GOSUB into externally defined functions. It does not use any arrays, pointers, or the COLOR function.
Generally speaking, documentation for BASIC_C helps a BASIC programmer who has studied C syntax translate programs into C. Debugging these programs, however, is another matter. A programmer accustomed to BASIC will find that a new set of debugging skills is needed in the C environment. Also, C programs that are written in the Style of the examples, virtual line-by-line translations from BASIC, are valuable as exercises in making the change from BASIC, but generally are not examples of good programming practices in C. For this reason, the gain in efficiency and speed over compiled BASIC may not be as great as anticipated. The good performance of C is due in part to its concise syntax. Using C to mimic BASIC does not take advantage of the full powers of C.
Although BASIC_C does an admirable job of getting a BASIC programmer started in making the transition to C, the product would be greatly improved if the documentation gave the user a better picture of what the final destination is. One way of doing this would be to provide more advanced examples that illustrate how the library can be used to write professional C programs, explaining the steps taken beyond the BASIC format of the simpler examples.
One relatively minor bug with the COLOR function could be a problem. Unlike the other functions in BASIC_C, COLOR does not behave the way its BASIC counterpart does. In IBM BASIC the COLOR statement can be used to set the color attributes of foreground, background, and border, clear the screen with CLS, and exit to DOS; the color attributes will remain in effect for the DOS environment. With the BASIC_C COLOR function, on the other hand, a print statement has to be issued for the color attributes to appear, and it is not possible to set the border color and keep it after exiting to DOS. These are not very serious problems, but they should either be fixed or be properly documented.
For experienced C programmers, the BASIC—C Library has some handy functions that are rarely found for the IBM PC. Among them are BLOAD(), BSAVEO, SET_TIME(), GET_TIME(), SWAPO, POINT(), and BEEP. Many of these functions, for example, are not included in the Greenleaf Functions, by Greenleaf Software, Inc., which claims to be the most inclusive C library.
Did you ever use C Source BASIC_C? Do you know anything about its history? Tell us about it in the comments below.
What computer ads would you like to see in the future? Please comment below. If you enjoyed it, please share it with your friends and relatives. Thank you.







