Je suis très novice en C, c'est mon deuxième de haut niveau langage de programmation après Java. J'ai obtenu la plupart des bases, mais pour quelque raison que ce soit, je suis incapable d'écrire un seul caractère à la mémoire d'écran.
Ce programme est compilé à l'aide de Turbo C pour DOS sur un Am486-DX4-100 fonctionnant à 120 mhz. La carte graphique est une très standard VLB Diamond Multimedia Stealth SE à l'aide d'un Trio32 puce.
Pour l'OS je suis sous PC-DOS 2000 avec un ISO de page de codes chargé. Je suis en cours d'exécution dans la norme de la MDA/CGA/EGA/VGA style 80 colonnes en mode texte avec la couleur.
Voici le programme que j'ai écrit:
#include <stdio.h>
int main(void) {
unsigned short int *Video = (unsigned short int *)0xB8000;
*Video = 0x0402;
getchar();
return 0;
}
Comme je l'ai dit, je suis très novice en C, donc je m'excuse si mon erreur semble évident, j'ai été incapable de trouver une bonne source sur la façon de faire ce que je pouvais comprendre.
À ma connaissance, en mode réel sur la plate-forme x86, le souvenir-écran en mode texte commence à 0xB8000. Chaque caractère est stocké dans deux octets, un pour le personnage, et un pour l'arrière-plan/premier plan. L'idée est d'écrire la valeur 0x0402 (qui doit être d'un rouge visage souriant) 0xB8000. Cela devrait le mettre en haut à gauche de l'écran.
J'ai pris en compte la possibilité que l'écran peut être défilement, et donc de supprimer immédiatement mon personnage lors de l'exécution de deux façons. Pour résoudre ce problème, j'ai essayé:
- À plusieurs reprises d'écrire cette valeur à l'aide d'une boucle
- L'écrire un peu plus bas.
Je peux lire et imprimer la valeur que j'ai écrit de mémoire, donc il est évidemment toujours quelque part dans la mémoire, mais pour une raison que je ne pas obtenir quoi que ce soit à l'écran. Je suis évidemment faire quelque chose de mal, mais je ne sais pas ce qui pourrait être la question. Si d'autres détails sont nécessaires, veuillez le demander. Merci pour toute aide que vous pouvez donner.