home *** CD-ROM | disk | FTP | other *** search
/ Computer Panoráma / computer_panorama_1997-12-hibas.iso / SHARE / GRAPH / PTC051.ZIP / SRC / FAR.H < prev    next >
C/C++ Source or Header  |  1997-09-10  |  3KB  |  129 lines

  1. /////////////////////////
  2. // far memory routines //
  3. /////////////////////////
  4.  
  5. #ifndef __FAR_H
  6. #define __FAR_H
  7.  
  8. #include "misc.h"
  9.  
  10. // Note in linux, all pointers are 'far'
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17. // prototypes
  18. inline void far_memcpy(uint dest_selector,uint dest_offset,uint src_selector,uint src_offset,uint bytes);
  19. inline void far_memcpy(void const *dest,uint src_selector,uint src_offset,uint bytes);
  20. inline void far_memcpy(uint dest_selector,uint dest_offset,void const *src,uint bytes);
  21. inline void far_memset(uint dest_selector,uint dest_offset,int value,uint bytes);
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30. #if defined(__WATCOMC__)
  31.  
  32. // watcom implementation
  33. #include <i86.h>
  34. #include <mem.h>
  35.  
  36. inline void far_memcpy(uint dest_selector,uint dest_offset,uint src_selector,uint src_offset,uint bytes)
  37. {
  38.     // far to far
  39.     _fmemcpy(MK_FP(dest_selector,dest_offset),MK_FP(src_selector,src_offset),bytes);
  40. }
  41.  
  42. inline void far_memcpy(void const *dest,uint src_selector,uint src_offset,uint bytes)
  43. {
  44.     // far to near
  45.     far_memcpy(FP_SEG((void far*)dest),FP_OFF((void far*)dest),src_selector,src_offset,bytes);
  46. }
  47.  
  48. inline void far_memcpy(uint dest_selector,uint dest_offset,void const *src,uint bytes)
  49. {
  50.     // near to far
  51.     far_memcpy(dest_selector,dest_offset,FP_SEG((void far*)src),FP_OFF((void far*)src),bytes);
  52. }
  53.  
  54. inline void far_memset(uint dest_selector,uint dest_offset,int value,uint bytes)
  55. {
  56.     // far memset
  57.     _fmemset(MK_FP(dest_selector,dest_offset),value,bytes);
  58. }
  59.  
  60.  
  61.  
  62. #elif defined(__VISUALC__)
  63.  
  64.  
  65.  
  66. // visual c++ implementation
  67.  
  68. inline void far_memcpy(uint dest_selector,uint dest_offset,uint src_selector,uint src_offset,uint bytes)
  69. {
  70.     // far to far
  71. }
  72.  
  73. inline void far_memcpy(void const *dest,uint src_selector,uint src_offset,uint bytes)
  74. {
  75.     // far to near
  76. }
  77.  
  78. inline void far_memcpy(uint dest_selector,uint dest_offset,void const *src,uint bytes)
  79. {
  80.     // near to far
  81. }
  82.  
  83. inline void far_memset(uint dest_selector,uint dest_offset,int value,uint bytes)
  84. {
  85.     // far memset
  86. }
  87.  
  88.  
  89.  
  90. #elif defined (__DJGPP__)
  91.  
  92.  
  93. // djgpp implementation
  94. #include <go32.h>
  95.  
  96. inline void far_memcpy(uint dest_selector,uint dest_offset,uint src_selector,uint src_offset,uint bytes)
  97. {
  98.     // far to far                                          
  99.     movedata(src_selector,src_offset,dest_selector,dest_offset,bytes);
  100. }
  101.  
  102. inline void far_memcpy(void const *dest,uint src_selector,uint src_offset,uint bytes)
  103. {                                                                                     
  104.     // far to near                    
  105.     movedata(src_selector,src_offset,(uint)_my_ds(),(uint)dest,bytes);
  106. }
  107.  
  108. inline void far_memcpy(uint dest_selector,uint dest_offset,void const *src,uint bytes)
  109. {
  110.     // near to far
  111.     movedata((uint)_my_ds(),(uint)src,dest_selector,dest_offset,bytes);
  112. }
  113.  
  114. inline void far_memset(uint dest_selector,uint dest_offset,int value,uint bytes)
  115. {
  116.     // far memset (not yet)
  117. }
  118.  
  119.  
  120. #endif
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128. #endif
  129.