home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progc / spawno40.arj / SOURCE.ZIP / RULES.ASI < prev    next >
Text File  |  1991-11-17  |  6KB  |  305 lines

  1.     .XLIST
  2.     PAGE
  3. ;[]------------------------------------------------------------[]
  4. ;|    RULES.ASI  --  Rules & Structures for assembler        |
  5. ;|                                |
  6. ;|    Turbo-C Run Time Library    version 2.0        |
  7. ;|                                |
  8. ;|    Copyright (c) 1987,1988 by Borland International Inc.    |
  9. ;|    All Rights Reserved.                    |
  10. ;[]------------------------------------------------------------[]
  11.  
  12. ;    4/15/88 ah:
  13. ;    Emulator segment directives modified for Turbo Pascal
  14. ;    using _Pascal_ conditional.
  15.  
  16. ;    9/91 rb:
  17. ;    Removed definitions not needed by SPAWNO
  18. ;    11/91 rb:
  19. ;    Added Turbo Pascal compatibility
  20.  
  21. ;[]------------------------------------------------------------[]
  22. ;|                                |
  23. ;|    Conditional Assembly Directives                |
  24. ;|                                |
  25. ;[]------------------------------------------------------------[]
  26.  
  27. IFDEF    __TINY__        ; *** Special case ***
  28.     __SMALL__        equ     1
  29. ENDIF
  30.  
  31. IFDEF    __HUGE__        ; *** Special case ***
  32.     __LARGE__        equ     1
  33. ENDIF
  34.  
  35. IFNDEF __SMALL__
  36.     IFNDEF __MEDIUM__
  37.         IFNDEF __COMPACT__
  38.         IFNDEF __LARGE__
  39.             %OUT  You must supply a model symbol.
  40.             .ERR
  41.         ENDIF
  42.         ENDIF
  43.     ENDIF
  44. ENDIF
  45.  
  46. IFDEF    __SMALL__        ; Small Code - Small Data
  47.     LPROG        equ     0
  48.     LDATA        equ     0
  49. ENDIF
  50.  
  51. IFDEF    __MEDIUM__        ; Large Code - Small Data
  52.     LPROG        equ     1
  53.     LDATA        equ     0
  54. ENDIF
  55.  
  56. IFDEF    __COMPACT__        ; Small Code - Large Data
  57.     LPROG        equ     0
  58.     LDATA        equ     1
  59. ENDIF
  60.  
  61. IFDEF    __LARGE__        ; Large Code - Large Data
  62.     LPROG        equ     1
  63.     LDATA        equ     1
  64. ENDIF
  65.  
  66. IFDEF __TP
  67.    __TEXT equ CODE
  68. ELSEIF LPROG
  69.    __TEXT equ SPAWNO_TEXT
  70. ELSE
  71.    __TEXT equ _TEXT
  72. ENDIF
  73.  
  74.     PAGE
  75. ;[]------------------------------------------------------------[]
  76. ;|                                |
  77. ;|    Segment Declarations Macros                |
  78. ;|                                |
  79. ;[]------------------------------------------------------------[]
  80.  
  81. CSeg@        MACRO        ;; Open a Code Segment
  82. IFDEF __TP
  83.   CODE SEGMENT BYTE PUBLIC
  84. ELSEIF LPROG
  85.   SPAWNO_TEXT SEGMENT BYTE PUBLIC 'CODE'
  86. ELSE
  87.   _TEXT    SEGMENT BYTE PUBLIC 'CODE'
  88. ENDIF
  89.     ASSUME    CS:__TEXT
  90.         ENDM
  91.  
  92. CSegEnd@    MACRO        ;; Close a Code Segment
  93. IFDEF __TP
  94.   CODE ENDS
  95. ELSEIF LPROG
  96.   SPAWNO_TEXT ENDS
  97. ELSE
  98.   _TEXT    ENDS
  99. ENDIF
  100.         ENDM
  101.  
  102. DSeg@        MACRO        ;; Open a Data Segment    (initialized)
  103. IFDEF __TP
  104. ;  DATA SEGMENT WORD PUBLIC
  105.   CSeg@
  106. ELSE
  107.   _DATA    SEGMENT WORD PUBLIC 'DATA'
  108. ENDIF
  109.         ENDM
  110.  
  111. DSegEnd@    MACRO        ;; Close a Data Segment (initialized)
  112. IFDEF __TP
  113. ;  DATA  ENDS
  114.   CSegEnd@
  115. ELSE
  116.   _DATA    ENDS
  117. ENDIF
  118.         ENDM
  119.  
  120. IFNDEF __HUGE__
  121.     BSeg@        MACRO        ;; Open a Data Segment  (un-initialized)
  122.     IFDEF __TP
  123.       DATA  SEGMENT WORD PUBLIC
  124.     ELSE
  125.       _BSS  SEGMENT WORD PUBLIC 'BSS'
  126.     ENDIF
  127.         ENDM
  128.  
  129.     BSegEnd@        MACRO        ;; Close a Data Segment (un-initialized)
  130.     IFDEF __TP
  131.       DATA  ENDS
  132.     ELSE
  133.       _BSS  ENDS
  134.     ENDIF
  135.             ENDM
  136. ELSE
  137.     BSeg@        MACRO
  138.             DSeg@
  139.         ENDM
  140.  
  141.     BSegEnd@        MACRO
  142.             DSegEnd@
  143.         ENDM
  144. ENDIF
  145.  
  146. IFDEF __TP
  147. JSeg@        MACRO        ;; Jump tables & other relocatable data
  148.     CSeg@
  149.     ENDM
  150.     JS_ equ CS:
  151. ELSE
  152. JSeg@        MACRO        ;; Jump tables & other relocatable data
  153.     DSeg@
  154.     ENDM
  155.     JS_ equ DS:
  156. ENDIF
  157.  
  158. JSegEnd@    MACRO        ;; end of jump table/relocatable data
  159. IFDEF __TP
  160.     CSegEnd@
  161. ELSE
  162.     DSegEnd@
  163. ENDIF
  164.     ENDM
  165.  
  166. Header@ MACRO            ;; set up all segments in proper order
  167. IFDEF __TP
  168.    NOWARN RES
  169. ENDIF
  170.    CSeg@
  171.    CSegEnd@
  172.    DSeg@
  173.    DSegEnd@
  174. IFNDEF    __HUGE__
  175.    BSeg@
  176.    BSegEnd@
  177. ENDIF
  178.  
  179. IFDEF    __TINY__
  180.     DGROUP  GROUP   _TEXT, _DATA, _BSS
  181. ELSEIFDEF __HUGE__
  182.     DGROUP  GROUP   _DATA
  183. ELSEIFDEF __TP
  184.     DGROUP  GROUP   DATA
  185. ELSE
  186.     DGROUP  GROUP   _DATA, _BSS
  187. ENDIF
  188.     ASSUME    CS:__TEXT, DS:DGROUP
  189.     ENDM
  190.  
  191.         PAGE
  192. ;[]------------------------------------------------------------[]
  193. ;|                                |
  194. ;|    C Naming Convention Macros                |
  195. ;|                                |
  196. ;[]------------------------------------------------------------[]
  197.  
  198. ExtSym@ MACRO    Sym, sType, sName
  199.     IFDIF    <sName>, <__PASCAL__>
  200.     EXTRN    _&Sym : sType
  201. Sym&@    equ    _&Sym
  202.     ELSE
  203.     EXTRN    Sym : sType
  204. Sym&@    equ    Sym
  205.     ENDIF
  206.     ENDM
  207.  
  208. PubSym@ MACRO    Sym, Definition, sName
  209.     IFDIF    <sName>, <__PASCAL__>
  210.     PUBLIC@    _&Sym
  211. _&Sym    Definition
  212. Sym&@    equ    _&Sym
  213.     ELSE
  214.     PUBLIC@    Sym
  215. Sym    Definition
  216. Sym&@    equ    Sym
  217.     ENDIF
  218.     ENDM
  219.  
  220. IFDEF __TP
  221.   PUBLIC@ MACRO  ID
  222.       ENDM
  223. ELSE
  224.   PUBLIC@ MACRO  ID
  225.       PUBLIC ID
  226.     ENDM
  227. ENDIF ;__TP
  228.  
  229.     PAGE
  230. ;[]------------------------------------------------------------[]
  231. ;|                                |
  232. ;|    Macros which are Data Size Dependent            |
  233. ;|                                |
  234. ;[]------------------------------------------------------------[]
  235.  
  236. IF    LDATA
  237. DPTR_        equ    DWORD PTR
  238. dPtrSize    equ    4
  239. LES_        equ    LES
  240. ES_        equ    ES:
  241. LDS_        equ    LDS
  242.  
  243. pushDS_        MACRO
  244.         PUSH    DS
  245.         ENDM
  246.  
  247. popDS_        MACRO
  248.         POP    DS
  249.         ENDM
  250.  
  251. ELSE
  252. DPTR_        equ    WORD PTR
  253. dPtrSize    equ    2
  254. LES_        equ    MOV
  255. ES_        equ    DS:
  256. LDS_        equ    MOV
  257.  
  258. pushDS_        MACRO
  259.         ENDM
  260.  
  261. popDS_        MACRO
  262.         ENDM
  263.  
  264. ENDIF
  265.     PAGE
  266. ;[]------------------------------------------------------------[]
  267. ;|                                |
  268. ;|    Macros which are Code Size Dependent            |
  269. ;|                                |
  270. ;[]------------------------------------------------------------[]
  271.  
  272. IF    LPROG
  273. cPtrSize    equ    4
  274.  
  275. PubProc@    MACRO    Sym, sName    ;; Open a Public function
  276. PubSym@        Sym, <PROC    FAR>, sName
  277.         ENDM
  278.  
  279. ExtProc@    MACRO    Sym, sName    ;; External Function
  280. ExtSym@        Sym, FAR, sName
  281.         ENDM
  282.  
  283. ELSE
  284. cPtrSize    equ    2
  285.  
  286. PubProc@    MACRO    Sym, sName    ;; Open a Public function
  287. PubSym@        Sym, <PROC    NEAR>, sName
  288.         ENDM
  289.  
  290. ExtProc@    MACRO    Sym, sName    ;; External Function
  291. ExtSym@        Sym, NEAR, sName
  292.         ENDM
  293.  
  294. ENDIF
  295.  
  296. EndProc@    MACRO    Sym, sName    ;; Close a function
  297.     IFDIF    <sName>, <__PASCAL__>
  298. _&Sym    ENDP
  299.     ELSE
  300. Sym    ENDP
  301.     ENDIF
  302.         ENDM
  303.  
  304. .LIST
  305.