Je déconseille l'utilisation de toute routine de niveaux de gris autre que
GrayOn.
kernel.h est d'ailleurs un header non officiel, dont je déconseille l'utilisation pour les raisons suivantes:
1.
#undef NO_AMS_CHECK // Useless in Kernel mode (Kernel does the job for you).
#undef NO_CALC_DETECT // Useless in Kernel mode (Kernel does the job for you).
[...]
#define NO_AMS_CHECK
#define NO_CALC_DETECT
(i) Ce n'est pas le problème de
kernel.h, mais du programmeur.
(ii) L'usage de
NO_AMS_CHECK et
NO_CALC_DETECT est fortement déconseillé sauf pour les cas bien particuliers (partie résidente d'un TSR, quand le programme d'installation a déjà effectué ces vérifications; si c'est la seule manière de rester en dessous d'une limite de taille; ...).
(iii) Le commentaire "Useless in Kernel mode (Kernel does the job for you)." est faux.
PreOs n'est pas le seul kernel au monde. Ces tests
sont nécessaires pour
TeOS, par exemple.
2.
#undef USE_INTERNAL_FLINE_EMULATOR // Useless with Preos
Ça aussi, ce n'est pas le problème de
kernel.h. Un header n'a pas à se mêler de ce genre de trucs.
3.
#undef RETURN_VALUE // Change the way of working
[...]
#define RETURN_VALUE ((unsigned char *) *_RAM_CALL_F = (unsigned char *) *_ROM_CALL_109)
Et ça aussi, c'est carrément abusé.
kernel.h n'a pas à modifier les
#defines documentés de
TIGCCLIB.
4.
// You can't no select Exit support
#undef _main
#define _main volatile __main__(); \
asm( ".xdef _main\n" \
" .xdef __save__sp__\n" \
"__save__sp__:\n" \
" .long 0\n" \
"_main: lea __save__sp__(%pc),%a0\n" \
" move.l %a7,(%a0)\n" \
" jbra ___main\n"); \
void ___main
Ceci est un hack totalement inutile qui n'a rien à faire dans
kernel.h et qui est incompatible avec
TIGCC 0.95.
Je précise que j'ai reporté tout ça à PpHd et qu'il a refusé de le changer.