home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c065 / 1.ddi / INCLUDE.ZIP / ASMRULES.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-07  |  5.6 KB  |  174 lines

  1. /*------------------------------------------------------------------------
  2.  * filename - asmrules.h
  3.  *
  4.  *    Rules & structures useful for in-line assembler
  5.  *
  6.  *-----------------------------------------------------------------------*/
  7.  
  8. /*[]------------------------------------------------------------[]*/
  9. /*|                                                              |*/
  10. /*|     Turbo C Run Time Library - Version 3.0                   |*/
  11. /*|                                                              |*/
  12. /*|                                                              |*/
  13. /*|     Copyright (c) 1987, 1990 by Borland International        |*/
  14. /*|     All Rights Reserved.                                     |*/
  15. /*|                                                              |*/
  16. /*[]------------------------------------------------------------[]*/
  17. /**/
  18.  
  19. #pragma inline
  20.  
  21. /****
  22. #define  LPROG  (4 == sizeof (void (*) (void)))
  23. #define  LDATA  (4 == sizeof (void *))
  24. ****/
  25. #if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__)
  26. #define LDATA 1
  27. #else
  28. #define LDATA 0
  29. #endif
  30.  
  31. #if defined(__LARGE__) || defined(__HUGE__) || defined(__MEDIUM__)
  32. #define LPROG 1
  33. #else
  34. #define LPROG 0
  35. #endif
  36.  
  37. #define  W0(ea) (word ptr (ea))
  38. #define  W1(ea) (word ptr (ea) [2])
  39.  
  40. #define  BY0(ea) (byte ptr (ea))
  41. #define  BY1(ea) (byte ptr (ea) [1])
  42.  
  43. #define  FLOAT(ea)  (dword ptr (ea))
  44. #define  DOUBLE(ea) (qword ptr (ea))
  45. #define  LONGDOUBLE(ea) (tbyte ptr (ea))
  46.  
  47. #define _SimLocalCall_  asm     db      0E8h, 0, 0      /* call $       */
  48. /*      jmp     toLocalProc                             NEVER USE "SHORT" ! */
  49.  
  50. #define  RETNEAR asm  db   0C3h
  51.  
  52. #if LDATA
  53. #   define  LES_  LES
  54. #   define  ES_   ES:
  55. #   define  SS_   SS:
  56. #   define  DPTR_(ea)  (dword ptr (ea))
  57. #   define  dPtrSize    4
  58. #   define  pushDS_     asm     push    DS
  59. #   define  LDS_        LDS
  60. #   define  popDS_      asm     pop     DS
  61. #else
  62. #   define  LES_  mov
  63. #   define  ES_
  64. #   define  SS_
  65. #   define  DPTR_(ea)  (word ptr (ea))
  66. #   define  dPtrSize    2
  67. #   define  pushDS_
  68. #   define  LDS_        mov
  69. #   define  popDS_
  70. #endif
  71.  
  72. #if LPROG
  73. #   define  CPTR_(ea)  (dword ptr (ea))
  74. #   define  EXTPROC(x)  (far ptr (x))
  75. #   define  cPtrSize    4
  76. #else
  77. #   define  CPTR_(ea)  (word ptr (ea))
  78. #   define  EXTPROC(x)  (x)
  79. #   define  cPtrSize    2
  80. #endif
  81.  
  82.  
  83. /* And now the DOS error list.
  84. */
  85. #define e_badFunction            1
  86. #define e_fileNotFound           2
  87. #define e_pathNotFound           3
  88. #define e_tooManyOpen            4
  89. #define e_accessDenied           5
  90. #define e_badHandle              6
  91. #define e_mcbDestroyed           7
  92. #define e_outOfMemory            8
  93. #define e_badBlock               9
  94. #define e_badEnviron            10
  95. #define e_badFormat             11
  96. #define e_badAccess             12
  97. #define e_badData               13
  98. /* reserved                     14 */
  99. #define e_badDrive              15
  100. #define e_isCurrentDir          16
  101. #define e_notSameDevice         17
  102. #define e_noMoreFiles           18
  103. #define e_readOnly              19
  104. #define e_unknownUnit           20
  105. #define e_notReady              21
  106. #define e_unknownCommand        22
  107. #define e_dataError             23
  108. #define e_badRequestLength      24
  109. #define e_seekError             25
  110. #define e_unknownMedia          26
  111. #define e_sectorNotFound        27
  112. #define e_outOfPaper            28
  113. #define e_writeFault            29
  114. #define e_readFault             30
  115. #define e_generalFault          31
  116. #define e_sharing               32
  117. #define e_lock                  33
  118. #define e_diskChange            34
  119. #define e_FCBunavailable        35
  120. #define e_sharingOverflow       36
  121. /* reserved                     37..49 */
  122. #define e_networkUnsupported    50
  123. #define e_notListening          51
  124. #define e_dupNameOnNet          52
  125. #define e_nameNotOnNet          53
  126. #define e_netBusy               54
  127. #define e_netDeviceGone         55
  128. #define e_netCommandLimit       56
  129. #define e_netHardError          57
  130. #define e_wrongNetResponse      58
  131. #define e_netError              59
  132. #define e_remoteIncompatible    60
  133. #define e_printQueueFull        61
  134. #define e_printFileSpace        62
  135. #define e_printFileDeleted      63
  136. #define e_netNameDeleted        64
  137. #define e_netAccessDenied       65              /* same as 5 */
  138. #define e_netDeviceWrong        66
  139. #define e_netNameNotFound       67              /* same as 53 */
  140. #define e_netNameLimit          68
  141. #define e_netBIOSlimit          69
  142. #define e_paused                70
  143. #define e_netRequestRefused     71
  144. #define e_redirectionPaused     72
  145. /* reserved                     73..79 */
  146. #define e_fileExists            80
  147. /* reserved                     81 */
  148. #define e_cannotMake            82
  149. #define e_failInt24             83
  150. #define e_redirectionLimit      84
  151. #define e_dupRedirection        85
  152. #define e_password              86
  153. #define e_parameter             87
  154. #define e_netDevice             88
  155.  
  156. #define e_dosFinalError         88
  157.  
  158. /* Use these macros inside of a function to force an si or di save/restore */
  159. #define SaveSI                  asm     __savesi equ si
  160. #define SaveDI                  asm     __savedi equ di
  161.  
  162. /* Use these aliases inside of a function when
  163.    you don't want si or di to be saved/restored */
  164.  
  165. #pragma warn -asm
  166. asm     vsi     equ     si
  167. asm     vdi     equ     di
  168. #pragma warn .asm
  169.  
  170. /* Use these macros when you want to return a value in DX:AX and
  171.    avoid a warning messages being generated.  Ex: return( MK_LONG ); */
  172. #define MK_LONG   (long)((void _seg *)(_DX) + (void near *)(_AX))
  173. #define MK_ULONG  (unsigned long)((void _seg *)(_DX) + (void near *)(_AX))
  174.