[Coco] RE: Learning MW C (REALLY!)
Ries, Rich [S&FS]
Rich.Ries at Honeywell.com
Tue Aug 15 12:42:20 EDT 2006
>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";
>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
>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
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!"
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.
* 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