Re: [cc65] Simple PEEK & POKE question.

Date view Thread view Subject view

From: Mike McCarty (jmccarty_at_ssd.usa.alcatel.com)
Date: 2001-03-05 18:24:47


On Sun, 4 Mar 2001, Ullrich von Bassewitz wrote:

> 
> On Sat, Mar 03, 2001 at 04:37:53PM -0500, Raj Wurttemberg wrote:
> > I'm familiar with standard ANSI C & C++ programming and would like to write
> > some programs for the C64 and C128 but I see that a lot of the "cool"
> > functions require PEEKs and POKEs.  For example on a C64:
> >
> > POKE 199,1
> >
> > will change the output to reverse video.  How would you do this with cc65?
> 
> I had to answer this question three times in the last few days, so I've
> started to write the FAQ:-)
> 
> See 
> 
> 	http://www.cc65.org/faq.php
> 
> for an answer to your question. 


It's wonderful that you've gotten started like that. I take exception
to your statement

	For better readability you may want to use macros:

	#define POKE(addr,val)	(*(unsigned char *)(addr)=(val))

This definitely REDUCES readability and obscures what the code
is doing.

Which code is easier for you to read?

(a)	VideoMode = VIDEO_REVERSE;

(b)	POKE(199,1)	/* Set video mode to reverse */

I agree that macros may enhance readability in this area, but not these
particular macros. The suggested answer I give is:

	#include "video.h"
	...
	VideoMode = VIDEO_REVERSE;
	...


and in video.h we have 

	#define VIDEO_REVERSE 1

	#define VideoMode (*(unsigned char *)199)

C has the capability to make code readable and understandable.
Providing macros with names like PEEK and POKE is an undesireable step
into the past.

I recommend that people NOT implement PEEK and POKE at all. The direct C
is more readable than the macros. Even better is to implement macros
which make the code understandable without having to add comments.

Mike
----
char *p="char *p=%c%s%c;main(){printf(p,34,p,34);}";main(){printf(p,34,p,34);}
This message made from 100% recycled bits.
I can explain it for you, but I can't understand it for you.
I don't speak for Alcatel      <- They make me say that.

----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.


Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2001-12-14 22:05:39 CET