MACROS.HSM
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:2k
源码类别:

操作系统开发

开发平台:

DOS

  1. IF      FUNC_L
  2. @AB     EQU     6
  3. @ab     EQU     6
  4. ELSE
  5. @AB     EQU     4
  6. @ab     EQU     4
  7. ENDIF
  8. if      FUNC_L
  9. %OUT    <Far Functions>
  10. else
  11. %OUT    <Near Functions>
  12. endif
  13. if      PTR_L
  14. %OUT    <Far Pointers>
  15. else
  16. %OUT    <Near Pointers>
  17. endif
  18. cextrn  macro   WARG1
  19. if      FUNC_L
  20. EXTRN   _&WARG1&:FAR
  21. else
  22. EXTRN   _&WARG1&:NEAR
  23. endif
  24.         endm
  25. ccall   macro   WARG1
  26. if      FUNC_L
  27.         CALL    FAR PTR _&WARG1&
  28. else
  29.         CALL    _&WARG1&
  30. endif
  31.         endm
  32. cpublic macro   WARG1
  33. public  _&WARG1&
  34. if      FUNC_L
  35. _&WARG1&    PROC    FAR
  36. else
  37. _&WARG1&    PROC    NEAR
  38. endif
  39.         PUSH    BP
  40.         MOV     BP,SP
  41.         PUSH    SI
  42.         PUSH    DI
  43.         endm
  44. cproc   macro   WARG1
  45. public  _&WARG1&
  46. if      FUNC_L
  47. _&WARG1&    PROC    FAR
  48. else
  49. _&WARG1&    PROC    NEAR
  50. endif
  51.         endm
  52. cendp   macro   WARG1
  53. _&WARG1&    ENDP
  54.         endm
  55. creturn macro   WARG1
  56.         POP     DI
  57.         POP     SI
  58.         MOV     SP,BP
  59.         POP     BP
  60. if      FUNC_L
  61.         RET
  62. else
  63.         RET
  64. endif
  65. _&WARG1&    ENDP
  66.         endm
  67. cstart  macro   WARG1,WARG2
  68. if      FUNC_L
  69. &WARG1&_TEXT    SEGMENT WARG2
  70. else
  71. _TEXT       SEGMENT WARG2
  72. endif
  73.         endm
  74. cend     macro   WARG1
  75. if      FUNC_L
  76. &WARG1&_TEXT        ENDS
  77. else
  78. _TEXT   ENDS
  79. endif
  80.         endm
  81. codedef macro   WARG1,WARG2
  82. if      FUNC_L
  83. &WARG1&_TEXT    SEGMENT BYTE WARG2 PUBLIC 'CODE'
  84. &WARG1&_TEXT    ENDS
  85.         ASSUME  CS: &WARG1&_TEXT
  86. else
  87. _TEXT   SEGMENT BYTE WARG2 PUBLIC 'CODE'
  88. _TEXT   ENDS
  89.         ASSUME  CS: _TEXT
  90. endif
  91.         endm
  92. datadef macro WARG1
  93. _DATA   SEGMENT  WORD WARG1 PUBLIC 'DATA'
  94. _DATA   ENDS
  95. _BSS    SEGMENT  WORD WARG1 PUBLIC 'BSS'
  96. _BSS    ENDS
  97. DGROUP  GROUP   _BSS,   _DATA
  98.         ASSUME  DS: DGROUP, SS: DGROUP, ES: DGROUP
  99.         endm
  100. bssstart    macro WARG1
  101. _BSS    SEGMENT WARG1
  102.         endm
  103. bssend  macro
  104. _BSS    ENDS
  105.         endm
  106. farbssstart    macro
  107. FAR_BSS SEGMENT
  108.         endm
  109. farbssend  macro
  110. FAR_BSS ENDS
  111.         endm
  112. fardatastart    macro
  113. FAR_DATA SEGMENT
  114.         endm
  115. fardataend  macro
  116. FAR_DATA ENDS
  117.         endm
  118. datastart    macro WARG1
  119. _DATA SEGMENT WARG1
  120.         endm
  121. dataend  macro
  122. _DATA ENDS
  123.         endm
  124. conststart    macro WARG1
  125.         endm
  126. constend  macro
  127.         endm