home *** CD-ROM | disk | FTP | other *** search
/ Internet MPEG Audio Archive / IMAA.mdf / util / dos / l3v100n / rsx / source / sample / poke.c < prev    next >
C/C++ Source or Header  |  1994-01-19  |  1KB  |  58 lines

  1. #include <stdio.h>
  2.  
  3. /*
  4. ** This program only runs with go32 or rsx (not emx!)
  5. */
  6.  
  7. inline unsigned char peek_dos_byte(int addr)
  8. {
  9.     unsigned char _v;
  10.     __asm__ ("movb %%gs:(%1),%0":"=r" (_v):"r" (addr));
  11.     return _v;
  12. }
  13.  
  14. inline unsigned short peek_dos_word(int addr)
  15. {
  16.     unsigned short _v;
  17.     __asm__ ("movw %%gs:(%1),%0":"=r" (_v):"r" (addr));
  18.     return _v;
  19. }
  20.  
  21. inline unsigned long peek_dos_long(int addr)
  22. {
  23.     unsigned long _v;
  24.     __asm__ ("movl %%gs:(%1),%0":"=r" (_v):"r" (addr)); \
  25.     return _v;
  26. }
  27.  
  28. inline void poke_dos_byte(char val,unsigned int addr)
  29. {
  30.     __asm__ ("movb %0,%%gs:(%1)"::"q" (val),"r" (addr));
  31. }
  32.  
  33. inline void poke_dos_word(short val,unsigned int addr)
  34. {
  35.     __asm__ ("movw %0,%%gs:(%1)"::"r" (val),"r" (addr));
  36. }
  37.  
  38. inline void poke_dos_long(long val,unsigned int addr)
  39. {
  40.     __asm__ ("movl %0,%%gs:(%1)"::"r" (val),"r" (addr));
  41. }
  42.  
  43. static char name[]="hello writing screen memory";
  44.  
  45. int main(int argc,char **argv,char **env)
  46. {
  47.     int i,screen;
  48.  
  49.     screen = 0xB0000;
  50.  
  51.     printf("hallo");
  52.  
  53.     for (i=0; name[i]; i++)
  54.     poke_dos_word(name[i] | 0x0700, screen + i*2);
  55.  
  56.     return 0;
  57. }
  58.