Re: [cc65] wrong colors in conio

Date view Thread view Subject view

From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2002-12-11 01:33:39


On Wed, Dec 11, 2002 at 01:06:41AM +0100, Christian Groessler wrote:
> A null textcolor will only work _sometimes_, i.e. depending on the
> choice of background color.

Ok, you're right. Seems I've overlooked something.

The difference between the color mode on the Atari and that of a pure
monochrome machine is that the Atari can change the background color, while a
monochrome machine can't. So if one makes the background color white for
example, standard white text gets unreadable.

Since conio does only support two color models (one being "color" and the
other "monochrome") there are not many solutions. Probably the best one would
be to make bgcolor empty as well. This makes the Atari a pure monochrome
machine (as far as conio goes, that is).

> So you will anyway need ifdefs to correctly support the Atari. You
> might not notice this if calling textcolor work, if textcolor is
> missing, you'll notice immediately.

Conio supports two color models: Color and monochrome. So a multi platform
program will always have to cope with these two models. If the Atari supports
the monochrome model, it is not necessary to add specific #ifdefs for the
Atari, because these #ifdefs are already in place for the other monochrome
machines. If we don't make textcolor empty, we need Atari specific code.

Please have a look at the existing multi platform code. All this code (which
was developed independently by several people) uses calls to textcolor(), both
for color and monochrome machines. If the Atari platform omits the textcolor
function completely, the most easy solution to keep the code portable is to
add an empty textcolor function - which perverts the whole removal. Why should
we remove the function from the library just to add it later as an empty
function in the application to make the code compile?

> The reason I'm bitching so much, is that I still don't see the
> benefit of having an empty textcolor() and a new textluminance() over
> having a textcolor() which behaves differently on the Atari.

Having a textcolor that behaves differently is not an option. If we start
adding functions that behave differently, we'll break the whole portability
goal.

But I'm open to other suggestions. If you find a way to make colors work in a
way that needs no Atari specific code in an application, and keeps functions
consistent across platforms, I have no problem with it. I've outlined the most
obvious solution above (making bgcolor empty as well), but this must not be
the only solution.

I'm sorry about that, and please note that it is not my intent to cripple the
Atari. In fact, I'm quite unhappy about the outcome, because I know that the
acceptance of conio does also rely on how closely it is modelling the
capabilities of the real machine. However, one of the most important rules is
to keep the APIs clean, and in this case I see no other possibility as to use
only a subset of what the Atari is able to do.

Regards


        Uz


-- 
Ullrich von Bassewitz                                  uz_at_musoftware.de
----------------------------------------------------------------------
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 : 2002-12-11 01:33:46 CET