C News is an electronic journal published by the C BBS in
Burke, VA on a monthly basis. The subject for C News is the C
programming language, as well as any derivatives like C++.
All readers are encouraged to submit articles, reviews, or
comments for submission. C News is freely distributed, but
can not be sold for a profit, or cannot have a charge assessed
to cover distribution costs. To do so is in direct violation
of the License agreement. Copies of which are available from
the C BBS. This publication is Copyrighted under U.S
Copyright Law.

-1-

CNews (1.12) Oct 30,1988 CNews (1.12)

THE HEAP: Messages from the Editor

FEEDBACK: Part II In Issue 11, I went out on a limb and

risked offending some C News readers, by complaining about

the lack of feedback. Well, in the weeks that have passed

since, letters and postcards have come in with comments on C

News and the articles included within. Two of those letters

could not have come at a better time.

Every month here in Virginia, we have a "C BBS " Users

meeting on the third thursday of the month. This month the

meeting was held at Arnie Cherdak's house in Maryland.

Before, the meeting I went to my mail box and picked up two

letters, one from Phil Loaiza, and the other from Deborah

Norling.

Both writers took the time to fill out the "User

Response Form" that is included with each issue of C News.

First, Phil's Letter: what caught my eye, was the following

line from Phil's letter. "Please pass along my thanks to

Arnie Cherdak on his Database Design article... ask him if

he could flesh out B trees a bit more in a future article.."

I showed Phil's letter to Arnie, and quite frankly he was

thrilled. There is not a whole lot more that is satisfying

then receiving praise from one's peers. Arnie now feels

refreshed and may consider working on that article that Phil

asked for.

Deborah also took the time to fill out the response

form and had this to say: "...Issue 11's memory models

article was the best explanation of how C handles

segmentation that I have ever read.." Bill Mayne who

authored that article, and was at the user meeting as well

appreciated the kind words from Deborah as well. As I

mentioned previously, both letters could not have been

better timed.

THIS ISSUE'S LEAD ARTICLE

This issue features an interesting article from Jerry

Zeisler, a frequent local user of the C BBS. A few months

ago, Jerry and I were talking about a program that he had

developed for an application at his company. As Jerry, and I

were talking over lunch, I suggested that maybe he write a

small article on the creation of "Vcomm".
Application>.

Well right after Issue 11 was released a draft of his

thoughts to me, and we worked out the article that you will

read in this issue. This is an interesting look at how a

beginner started in C programming. It doesn't get into what

books he read, or what editor he used. But it does outline

some problems he ran into, how he used a local BBS to help

solve them, and what the final outcome was. Jerry's

application resulted in his creating an outstanding

application for his company, an article for C News on Memory

-2-

CNews (1.12) Oct 30,1988 CNews (1.12)

Models (Issue 10), and the article in this issue. If after

reading his article, you think that you might have a

similiar story to tell, drop me a line..

POSTCARDS WANTED!

I have an idea, I would like to know all of the places

on the globe that C News has made an appearance. So, if you

have time, send me a postcard from wherever you are, and I

will keep a running tally of the states and countries that

read C News. It will be interesting to see just what

corner's of the globe C News has made it to. I will do you

the favor of sending you a postcard from the "Nation's

Capitol - Washington, D.C". This sort of reminds me of the

Ham radio operators sending their call letters to each other

on post cards.

SHAREWARE/PUBLIC DOMAIN SOFTWARE AUTHORS

In this issue I review briefly, the CXL windowing

library package by Mike Smedley. If you are an author of a

package, and you would like to see it reviewed in C News,

please contact me at one of the address's listed in the back

of this issue. This forum will provide you with some free

advertising, and it gives me the opportunity to review some

of the packages that are available currently. If time is a

problem for me then I will ask user's to review the

packages. Let's here from you...

In closing, thanks for the support and let's help move

C News into it's 2nd year of existance!

Barry - Editor C News

-3-

CNews (1.12) Oct 30,1988 CNews (1.12)

A BEGINNERS VIEW OF "C" by Jerry Zeisler

ABSTRACT: Jerry's own account of his experiences in

developing a specialized application for his company's high

speed international modems. Jerry reflects on choosing a

compiler, tools to use, and some of the problems that he ran

into as a beginner.

INTRODUCTION

As is the way that most projects get started, my

company had a need. I work for a large firm that

manufactures data communication products, most notably high

speed premium modems. Not the mail order type, but the CCITT

international community type.

When the product was first introduced into this country

a while back, it was most notably lacking an easy user

interface for dialing and configuration. The modem uses soft

straps for configuration which can be accessed via an async

terminal. The dialing procedure is via V.25 bis (similar in

concept to Hays AT) or manual dialing only. This of course

has made the product somewhat difficult to market in the US

where the AT command set has become the Defacto standard.

But, it seems that since divestiture there has been no

single US company or organization with enough power to take

the lead in forming strong US standards, so the CCITT

standards are becoming more fashionable here in the US,

therefore our entry into the US market. So, how does this

rags to rags story relate to 'C'?

THE IDEA

I decided about 8 months ago to design and build a

program that will make the V.25 bis protocol totally

transparent to the user, hopefully easing our way into the

asynchronous marketplace.

Being the enterprising fellow that I am, I decided to

take the giant step into 'C' in order to program the monster

that I had in mind and to finally learn a language that I

seen for a long time but never touched. I knew that it

wasn't going to be an easy task since I am not a programmer

by trade, nor do I do it as a hobby, only as required. I

have done some programming previously. Starting about 14

years ago in the Army I maintained a computer system called

AUTODIN manufactured by Philco Ford. It used a 32 bit word

and the only language available was an assembler. I learned

a lot from that experience but didn't do much more until

about 3 years ago when I developed a large program using

Dbase III Plus.

-4-

CNews (1.12) Oct 30,1988 CNews (1.12)

DECISIONS...DECISIONS

I had originally considered using Pascal but heard that

it may not be flexible enough for the type of communications

programming that I had in mind. So 'C' it was.

I had been playing around on BBS's for awhile and just

happened to come across the 'C BBS'. It was great timing

since I was looking for help from whatever sources I could

find. While looking around the C BBS file system I came

across some tutorials and downloaded them (C Tutor, etc.).

They were exactly what I was looking for, an easy and

painless way to learn C. I also 'listened in' on the

compiler wars that were going on at the time and decided

that the best compiler for my application and experience was

Turbo C. The integrated environment that was touted by

Borland enticed me more than any other feature. I now

consider that decision to be a very good one as I have been

completely satisfied with it's operation. I'll get into the

nitty gritty about that later.

PUTTING IT TOGETHER

So what did I want my program to do? How was I going to

lay it out? What toolbox's was I going to use (if any)? The

way I decided on the look and feel was to see what was

currently available in shareware on the BBS as well as how

other communication programs operated. This way I could see

if I could handle C without risking too much money and at

the same time take some of the better ideas from other

programs.

After sifting through numerous demo programs, I decided

that the Window Boss would be the program I would use as the

user interface and LiteComm(tm) as the communications

toolbox. Once again, for what was available at the time I

think that these were good decisions. Again, more on these

later.

The way I started to build my program was to determine

how the V.25 bis protocol in my modems actually worked,

since that was the core of the program to be built. The

program required downloading or uploading 64 bytes of

configuration and dialing data to and from the modem along

with the appropriate commands. So the program actually

developed from the inside out. I built the V.25 bis engine

to communicate with the modem first, testing each command

along the way. Then I built the shell around the engine

which contained the user interface window program. Of course

as with any program, problems existed and persisted.

-5-

CNews (1.12) Oct 30,1988 CNews (1.12)

PROBLEMS AND HEADACHES

Problem number 1. What model to use? Small seemed to be

appropriate as I didn't feel (and didn't know any better)

that the program would be overly large. Also it would take

up less disk space.

Problem number 2. I needed a line editor for entering either

text information or numbers. The editor needed to be

flexible enough to include a user defined data feature since

the configuration data consists of 1's and 0's only. I found

a public domain editor that someone had developed

specifically for the Window Boss, but was not well

structured and was kind of long. It also had some bugs in it

as well as some features that I had to fix and add along the

way. It was useful for a while.

The biggest problem that I ran into while building the

program was what features was I going to put into this

thing? Unfortunately I didn't have a really well defined

plan prior to starting and it definitely hurt me as the

program developed. I guess that the real reason for this is

that I didn't know what could be done within my level of

experience as well as with the utilities that I was using.

So not only were the specifications changing along the

way, but as I learned more and more I kept adding and adding

and making the program more 'perfect'. Kind of like a catch

22. You don't know what you can do until you do it, and then

when you do it you find out that you can do more, so you do

more and learn more, and do more...

Well, I finally called some of the other marketing

people in my company and asked them what would be sufficient

for a first release. It sure was a relief when I got a

specific stopping point from those people!

CONTINUING ON

Of course as I added features to the program the effect

on functions that were already built without the new

features in mind was a real pain and very time consuming. In

some cases I had to completely rebuild or kludge the older

function. This certainly says something for developing a

master plan prior to starting a major task as this.

Some things I didn't learn until most of the program

was completed, such as function prototyping. None of the

material that I had read said anything about function

prototyping. The first place that I saw it was in one of the

toolbox's that I was using. It still isn't in the program.

-6-

CNews (1.12) Oct 30,1988 CNews (1.12)

SOME MORE HASSLES

Well soon enough the source program became very large.

It consisted of 5 separate files totaling about 100K! That's

a lot of stuff! I had to pare it down somewhat in order for

it to be more manageable. The executable was hovering around

60K. Well, there were a few changes that could be done that

would downsize the source and allow me to eliminate 2 files.

The changes were to upgrade the toolbox's and the compiler.

I started out using Turbo C 1.0, Window Boss, Litecomm,

a shareware graphics package (HSA) and the separate public

domain line editor. It was time to upgrade since TC now had

1.5 and Window Boss and Litecomm both had upgrades.

Actually, the upgrades didn't happen all at once but for the

sake of a shortened story we'll say that it happened that

way. The upgrade to Litecomm happened first. This upgrade

was not going to save me anything in size, but it fixed two

problem that needed fixing. The upgrade to the Window Boss

was next. It allowed me to eliminate the separate line

editor since the new version of the Boss included one. It

also fixed some annoying problems when exiting the program.

The last upgrade was to TC 1.5. This version allowed me to

eliminate the shareware graphics package since TC 1.5 has

graphics functions. So I went from 5 files down to three.

Much more manageable.

Of course, throughout the writing of the program were

the all night debugging sessions, calls to people on the C

BBS, calls to the C BBS sysop (Barry Lynch) at all hours,

calls to Phil and Ralph of the Window Boss and Litecomm and

of course those sleepless nights tossing and turning due to

a bug that I could of sworn was a easy fix. It was a

challenge to say the least.

HOW DO I KNOW WHEN IT'S TIME TO CHANGE MEMORY MODELS?

Well, after the last upgrade the worst (well maybe not

THE worst, but pretty much a royal pain) finally happened.

"Too much global data defined" said the compiler as I was

recompiling. It was time to change memory models. Not so

easy. What was interesting about having to change memory

models was that a number of weeks prior to this latest

disaster I had posted a message on the C BBS asking "how do

I know when it's time to change models?." What I got was a

lot of stuff that was over my head, although I certainly

want to thank all those that tried to educate me and who

took the time to answer. It actually had those people

thinking out there! It had them thinking so much that Bill

Mayne recently wrote a superb article for the C BBS on that

exact topic! The only problem was that nobody had the answer

that I was looking for. How was I supposed to know when my

data or code got too big? How was I supposed to measure it?

I got my answer when the compile crashed.

-7-

CNews (1.12) Oct 30,1988 CNews (1.12)

What did I need to get this thing cooking again?

Obviously I needed to determine what model to upgrade to. I

received suggestions from the people on the C BBS to go to

Compact or Medium. Unfortunately they also crashed with the

same error (not the people, the compiler). So to Large I

went.

That was fun (sarcastically speaking). No problem with

TC 1.5 but I had made some changes in the source code and

header files for Litecomm as well as the Window Boss. The

Litecomm change wasn't too difficult but the Window Boss

cost me money! It seems that the Large model isn't included

but can be compiled with batch files that are included.

Unfortunately there is also assembler code that needs to be

assembled and linked. Did I have an assembler? Of course

not. What did I have to do? Go out and buy one. Ping...$100.

So much for inexpensive shareware.

I finally got everything compiled and linked. Guess

what? Just try to guess the new size of the .EXE file. The

one that was last compiled using the Small model was just

over 71k. How about 161K! Yeech! Oh well. That's life.

Since I had been writing the program for about 6 months

(on and off) I learned a few things about C, and so was able

to squeeze it down to the slim 160k that it is today in it's

Beta test form.

TOOLBOX'S

Now some words about the toolbox's that I used, The

Window Boss from Star Guidance Consulting, Inc. and LiteComm

from Information Technology, Ltd.

WINDOW BOSS

First of all I purchased the source code from both

companies. In the warranty for the Window Boss it said that

there would be free upgrades for one year. Well, when I

needed my upgrade, the upgrade was not free. The answer Phil

gave was that it was a major change, not just a minor

upgrade. "OK. I'll buy it, but I'm not happy about it." I

had no choice since I needed the software and I had about 6

months of my life already invested! I must say in fairness

that it really was a major change and made my life a little

easier.

I had the opportunity to speak to Phil a number of

times and was pleased in the most part for the service that

he provided. The only complaints are in regards to the

upgrade policy and having to purchase an assembler to get my

Large model. Phil was rarely immediately available when I

called and the person answering the phone was unfamiliar

with the software, but Phil always returned my calls within

a reasonable period of time.

-8-

CNews (1.12) Oct 30,1988 CNews (1.12)

LITECOMM

I have no complaints about the service provided by

Ralph from LiteComm. One annoying factor though is that he

keeps his telephone answering machine on all of the time. I

had the opportunity to call Ralph about 6 times or so and

not once did he answer the phone himself, BUT my calls were

always returned quickly. Ralph answered my questions

professionally and was very pleasant and helpful.

WHAT ABOUT THE NEXT TIME?

Would I use these toolbox's again for my next program?

Now that I know more about the C world I would probably look

around some more before making that decision but, I would

use these programs and my experiences as a baseline for

chasing down other newer toolbox's or reviewing the same

ones again along with any new updates.

Would I continue to use shareware or would I like to go

to a commercial package? Since I have had a good experience

with the packages I chose, I would definitely look at the

shareware packages first. I like the idea of seeing what I'm

getting into and trying it out before I buy. I've been

looking in the recent programmers magazines and would love

to try some of the software, but at the prices that are

being charged and no "try before you buy" policy, it makes

it awfully difficult to purchase one of those packages.

So what's next? I recently got my hands on a new data

compression engine and am considering building a file

compression program around it. Yes, I know. I'll make sure

that I don't use the term ARC anywhere near the program.

Turbo C is a trademark of Borland International.
Litecomm is a trademark of Information Technology, Ltd.
Other trademarks mentioned are the properties of their
respective companies.

-9-

CNews (1.12) Oct 30,1988 CNews (1.12)

Public Domain/Shareware Software Review:

Program: CXL - C Programmer's Extended Library
Purpose: CXL provides a complete set of windowing and data entry
routines for the following compilers: Microsoft, TurboC,
Datalight, and Zortech C++.
NOTE: The C BBS has not received any compensation for this

review. Opinions expressed are those of the author only.

EDITOR: I had the opportunity to chat on-line with Mike

Smedley - creator of the CXL Library - the other day here at

the C BBS. What follows is a "C News Interview of sorts", a

first if you will for C News. After Mike's comments, a

review of the basic features of CXL will be presented.

BARRY: Mike, when did you start on CXL, and why?

MIKE: I originally started work on CXL in July 1987. It

started out as a collection of several of my favorite

functions (both C and assembly). I had just purchased Turbo

C 1.0 and started using it for development along with MASM.

What I liked about Turbo C was its pseudo-register variables

and inline assembly allowing me low-level access to the

system. As I was developing my personal applications, if I

made a function that could be re-used, I added it to my

library.

BARRY: After you created the first CXL if you will, did you

have plans to create a complete library?

MIKE: I eventually started trying to think up functions that

I could add to my library. I looked over a few Shareware C

function libraries and decided to add pop-up windows to my

library. I now had a library complete with simple windowing

functions, string functions, equipment detection functions,

and a few other miscellaneous functions. I decided to

release a Shareware version locally in November 1987 just to

see how it would do.

BARRY: After releasing CXL as shareware in Nov 87, what was

the initial response?

MIKE: I eventually realized that to make the product more

usable for others, I would have to be able to supply

libraries for memory models other than small. Considering

the amount of assembly language I was using, this was no

small task. With help from the macros from the MIXED.INC

file included in MASM 5.0, I was able to provide the

additional memory models.

-10-

CNews (1.12) Oct 30,1988 CNews (1.12)

BARRY: At this point you have support for different memory

models, what about other compilers: like Microsoft, and

Zortech?

MIKE: Well, I decided that I needed to support compilers

other than Turbo C. Using assembly language, this requires a

complex system of macros to provide compatiblity. So, I

decided that I should rewrite all of the assembly language

functions in C. Upon completion of this, porting CXL to

other compilers proved quite simple.

BARRY: To sum up, what do you think of CXL?

MIKE: CXL has come a long way since its conception. Although

CXL competes with many commercial packages costing hundreds

of dollars, its registration fee remains low to provide

users with quality software and support at low prices.

REVIEW:

CXL stands for "C Programmer's Extended Library", and

currently supports various C compilers for the IBM PC and

compatibles. Compilers supported include: Microsoft,

Borland, Zortech and Datalight.

It contains 170 functions that encompass a windowing

system, Lotus Style and Pop-Up/Pull Down Menus, Multi-Field

keyboard data entry, EGA 43 and VGA 50 line modes supported,

DESQview compatibilty, Microsoft Mouse compatiable

functions, equipment detection, printing support and more.

The shareware version that is available, only supports the

SMALL memory model. Other memory models are available after

registering for $25, and the source code is provided. Free

updates are available for new versions that are released to

registered users.

I have tried Mike's package rather extensively. It

should be noted that I downloaded CXL from Compuserve,

several weeks before Mike logged onto my BBS. It was my idea

to have a Question and Answer article for C News. I like the

entire CXL package. The documentation is EXCELLENT, and

complete. This is key point if you are new to C programming.

The routines worked as advertised and I am currently using

CXL in one of my applications. I like CXL enough, to have

sent in my registration fee for the complete package. The

registration fee is very reasonable for what you get. And i

believe it is very competitive with commercial packages that

are available, and some of the more popular shareware

packages like: WindowBoss.

CXL is worth a look, the Small memory model will

suffice for a good number of applications. Give CXL a

look.

-11-

CNews (1.12) Oct 30,1988 CNews (1.12)

ARTICLE SUBMISSION STANDARDS AND ADDRESSES

As I have repeatedly stated in this newsletter and

previous issues, I would like to see user-submitted

articles, reviews or questions. Listed below are the

standards that should be followed to make my job easier

as an editor.

- Articles should be submitted in a ASCII non-formatted
file. (Margins 0-65 PLEASE)

- If the article include code fragments as examples. Then
you can include the entire source file if you like for
inclusion with the newsletter.

- Book or magazine reviews should follow the same format,
that is outlined in this issue. The publisher, author,
title, and ISBN number are a must.

- Compiler/and or product reviews, should include the
version number and manufacture. If possible, reviews
should include a sample program with benchmarks.