[Coco] RE: Learning MW C (REALLY!)

Ries, Rich [S&FS] Rich.Ries at Honeywell.com
Tue Aug 15 12:42:20 EDT 2006

-----Original Message-----
>Message: 1
>Date: Tue, 15 Aug 2006 01:17:38 -0500
>From: "George's Coco Address" <yahoo at dvdplayersonly.com>
>Subject: Re: [Color Computer] [coco] Learning MW C (REALLY!)
>To: "CoCoList for Color Computer Enthusiasts" <coco at maltedmedia.com>
>Message-ID: <008401c6c032$85e8c480$ecb8b1d8 at heart>
>Content-Type: text/plain; format=flowed; charset="iso-8859-1";
>	reply-type=original
>The C Programming Language, by Kernighan and Ritchie
>This book is readily available and from what I've read, it's a good
source on the K&R C.
>I also found what seems to be a good suppliment for this book available
beginning here:
>This, I think, would be a great start once I learn how to use the OS-9
software that is needed to 
>compile whatever it is I might try.
>I would expect that whatever I can learn in the book and the online
suppliment would work with the OS-9 
>compiler but, correct me if I am wrong.
>The book that came with the C-Compiler for OS-9 claims an almost
perfect implementation of the K&R C. 
>There are five instances mentioned in this book whick are exceptions.
The OS9 book also mentions the 
>K&R book as a reference. pp 1-2
>Tomorrow, I'm going to begin reading this OS-9 book and try to
understand the process of compiling the 
>simple "Hello World" thing before I actually begin trying to compile
the simple "Hello World" thing. 
>That's where I went wrong several years ago. I didn't start with the

Hello, George!
  This was my experience; yours may vary!
I had trouble getting my head around the uWare C, and most of the books
I had were ANSI-based, which caused more grief. (I didn't get K&R's book
until much later...) 

All that just to say, if you need help, give me a holler! I make a
living using a "kinda-ANSI/kinda K&R" C for microcontrollers, so I may
be able to help you out. My CoCo system is still packed away, so
questions like "what bit should I twiddle?" will result in "Beats me!"
answers. :D

One Very Important Thing in C is to keep the braces lined up, and
matched. For this alone I would develop my C on a PC (ugh!) machine with
a modern editor that can show the matching brace, parenthesis, or
bracket marks. Then I'd download it to the CoCo.

My other problem was remembering if | was logical or bitwise OR. The
same for && and ^. I finally wrote a header file that I can #include in
my files. (Drives everyone else crazy, but...) Here it is:

/* Logical operators */
    #define L_AND &&
    #define L_OR  ||
    #define L_NOT !

/* Bitwise operators */
    #define b_and &
    #define b_or |
    #define b_xor ^
    #define b_not ~

 *  'Cause most C's don't have a "0b10100101" construct,
 *  and it's really handy with micros.

    #define b(b7,b6,b5,b4,b3,b2,b1,b0)

 * Bit operations -
 *   Note there is no limit to how many bits are in a byte.
 *           tobit(20000) will work....
    #define tobit(x) (1 << ((x)))

    #define setbit(bitno,byt) (  (byt) |=  (tobit(bitno)))
    #define clrbit(bitno,byt) (  (byt) &= ~(tobit(bitno)))
    #define isset(bitno,byt)  (  (byt) &   (tobit(bitno)))
    #define isclr(bitno,byt)  (!((byt) &   (tobit(bitno))))

You'll notice the logical operators (L_NOT, etc.) were borrowed from
BASIC09, and the bitwise operators (b_and) followed logically from them.

Good luck in your projects!


More information about the Coco mailing list