home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progc / flilib.arj / AAI86.H < prev    next >
C/C++ Source or Header  |  1990-02-26  |  2KB  |  49 lines

  1.  
  2. #ifndef AAI86_H
  3. #define AAI86_H
  4.  
  5. /* intel 8086 emulator... */
  6. struct i86_byte_regs 
  7.     {
  8.     unsigned char al, ah, bl, bh, cl, ch, dl, dh;
  9.     unsigned int si, di, ds, es;
  10.     };
  11. struct i86_word_regs
  12.     {
  13.     unsigned ax,bx,cx,dx;
  14.     unsigned int si, di, ds, es;
  15.     };
  16. union i86_regs
  17.     {
  18.     struct i86_byte_regs b;
  19.     struct i86_word_regs w;
  20.     };
  21.  
  22. /* do software int */
  23. i86_sysint(int intno, union i86_regs *s, union i86_regs *d); 
  24.  
  25.  
  26. void i86_bcopy(void *s, void *d, int bytes);     /* copy bytes */
  27. void i86_wcopy(void *s, void *d, int words);     /* copy 16-bit-words */
  28. void i86_bzero(void *d, int bytes);    /* set some bytes to zero */
  29. void i86_wzero(void *d, int words); /* set some 16-bit-words to zero */
  30. void i86_wstuff(unsigned value,void *d,unsigned words);/* set words to value */
  31. int i86_bsame(void *d, int count);    /* how many bytes in a row the same ? */
  32. int i86_wsame(void *d, int count);    /* how many 16-bit-words the same? */
  33. int i86_bcontrast(void *s1, void *s2, int count); /* bytes til 1st match? */
  34. int i86_wcontrast(void *s1,void *s2,int count); /* words til 1st match? */
  35. int i86_bcompare(void *s1,void *s2,int count); /* how many bytes match */
  36. int i86_wcompare(void *s1,void *s2,int count); /* how many words match */
  37. void i86_even_copy(void *s, void *d, int bytes); /* copy even # of bytes */
  38. void i86_exchange_bytes(char *s1, char *s2, int count); /* exchange buffers */
  39. void i86_back_bcopy(char *s,char *d,int count); /* copy bytes backwards */
  40. void *i86_norm_ptr(void *ptr);    /* fold offset into address */
  41. void *i86_enorm_ptr(void *ptr);    /* fold offset into address and force even */
  42. void *i86_make_ptr(int offset, int seg);    /* convince C it's a pointer... */
  43. long i86_make_long(int loword, int hiword);    /* convince C it's a long */
  44. long i86_ptr_to_long(void *ptr); /* convert segment:offset to linear address */
  45. int i86_ptr_seg(void *ptr);        /* return segment portion of pointer */
  46. int i86_ptr_offset(void *ptr);    /* return offset portion of pointer */
  47.  
  48. #endif /* AAI86_H */
  49.