Bonjour,
Lorsque je veux compiler ce code (que j'ai recupéré) avec dev-cpp
Il genere des erreur que je n'arrive pas a corriger :
[liker error] undefined reference to 'peek'. et pareil pour 'peekb'.
A l'origine il etait compilé avec Turbo C++.
mais je ne tien pas a utiliser ce "vieu" compilateur.
/*********************** |TestDriver| ****************************
*Cherche si le driver de la carte est resident en memoire *
*Retourne 1 si oui, sinon retourne 0 + message d'erreur. *
*
*
*****************************************************************/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "dos.h"
#include <string.h>
int TestDriver ()
{
unsigned int vectorLoc,isr_off,isr_seg;
char tempStr[20];
register int i;
// 0xF4 vecteur d'interruption du driver
vectorLoc =
4*0xF4;
// prend l'offset de la routine TSR
isr_off = peek(0x0000, vectorLoc);
isr_off = isr_off +
8;
// debut du nom de la routine
isr_seg = peek(0x0000, vectorLoc + 2); // prend le segment de la routine TSR
for (i = 0; i < 12;
i++)
// charge le nom de la routine
tempStr[i] = peekb(isr_seg,isr_off + i);
tempStr[12] = 0;
if (strcmp(tempStr," driver")==0) // teste si le driver est en memoire
return 1;
else
MessageBox(0,"La fonction de test du driver a echoue","Message d'erreur",MB_ICONINFORMATION);
return
0;
// sortie sur erreur irrecuperable
}
/******************* contenu de dos.h ***********************
************************************************************/
#define MK_FP(seg,ofs) ((void _seg *)(seg) + (void near *)(ofs))
#define FP_SEG(fp) ((unsigned)(void _seg *)(void far *)(fp))
#define FP_OFF(fp) ((unsigned)(fp))
#ifdef __cplusplus
void interrupt (far * _CType getvect(int __interruptno)) (...);
void _CType setvect (int __interruptno, void interrupt (far *__isr) (...));
int inline _Cdecl peek(unsigned __segment, unsigned __offset)
{ return (*((int far*)MK_FP(__segment, __offset))); }
char inline _Cdecl peekb(unsigned __segment, unsigned __offset)
{ return (*((char far*)MK_FP(__segment, __offset))); }
void inline _Cdecl poke(unsigned __segment, unsigned __offset, int __value)
{ (*((int far*)MK_FP(__segment, __offset)) = __value); }
void inline _Cdecl pokeb(unsigned __segment, unsigned __offset, char __value)
{ (*((char far*)MK_FP(__segment, __offset)) = __value); }
#else
void interrupt (far * _Cdecl getvect(int __interruptno)) ();
void _CType setvect (int __interruptno, void interrupt (far *__isr) ());
#define peek(a,b) (*((int far*)MK_FP((a),(b))))
#define peekb(a,b) (*((char far*)MK_FP((a),(b))))
#define poke(a,b,c) (*((int far*)MK_FP((a),(b))) = (int)(c))
#define pokeb(a,b,c) (*((char far*)MK_FP((a),(b))) = (char)(c))
#endif
/************************************************************
************************************************************/
peek et peekb posent aparemment probleme.
J'ai du mal a comprendre comment elles marchent donc je ne voi
pas par quoi les remplacer, ou comment corriger le probleme.
Si vous avez une solution ou meme une petite aide a apporter je vous en remercie d'avance...