home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / s / s001 / 1.ddi / TS / INCLUDE / TSHDR.MAC < prev   
Encoding:
Text File  |  1990-03-15  |  6.0 KB  |  441 lines

  1. ;*****************************************
  2. ;* TS HEADER - MODEL INDEPENDENCE MACROS *
  3. ;*****************************************
  4. ;* Copyright (C) TimeSlice, Inc 1986,87  *
  5. ;*****************************************
  6. ;
  7. ;
  8. MICROSOFT EQU 1
  9. l_data  EQU 1
  10. l_prog  EQU 1
  11. ;
  12. ifdef LATTICE
  13.     include dos.mac
  14. endif
  15. ;
  16. ifdef MICROSOFT
  17.     .xlist
  18.  
  19.     ?PLM=    0
  20.     ?WIN=    0
  21.  
  22.     ifdef mem_M
  23.     memM equ 1
  24.     else
  25.     memM equ 0
  26.     endif
  27.  
  28.     ifdef mem_C
  29.     memC equ 1
  30.     else
  31.     memC equ 0
  32.     endif
  33.  
  34.     ifdef mem_L
  35.     memL equ 1
  36.     else
  37.     memL equ 0
  38.     endif
  39.  
  40. ;     ifdef mem_S
  41. ;     memS equ 1
  42. ;     else
  43. ;     memS equ 0
  44. ;     endif
  45.  
  46.     include cmacros.inc
  47.     .list
  48. endif
  49. ;
  50. ;
  51. ;
  52. ifdef l_data
  53. ldata equ 1
  54. else
  55. ldata equ 0
  56. endif
  57. ;
  58. ifdef l_prog
  59.   lprog equ 1
  60. else
  61.   lprog equ 0
  62. endif
  63. ;
  64. ;
  65. ; Macro to define the beginning of the static DATA segment
  66. ;
  67. START_DATA MACRO
  68.  
  69.       ifdef MICROSOFT
  70.       sBegin data
  71.       assumes ds,data
  72.       endif
  73.  
  74.           ifdef LATTICE
  75.       dseg
  76.       endif
  77.  
  78. ENDM
  79.  
  80.  
  81.  
  82. ;
  83. ; Macro to define the end of the static DATA segment
  84. ;
  85. END_DATA   MACRO
  86.           ifdef LATTICE
  87.       endds
  88.       endif
  89.       ifdef MICROSOFT
  90.       sEnd
  91.       endif
  92. ENDM
  93.  
  94.  
  95.  
  96.  
  97. ;
  98. ; Macro to define the beginning of the code segment
  99. ;
  100. START_CODE MACRO
  101.  
  102.           ifdef LATTICE
  103.       pseg
  104.       endif
  105.  
  106.       ifdef MICROSOFT
  107.       sBegin code
  108.           assumes    cs,code
  109.       assumes    ds,data
  110.       endif
  111.  
  112. ENDM
  113.  
  114.  
  115.  
  116. ;
  117. ; Macro to define the end of the code segment
  118. ;
  119.  
  120. END_CODE MACRO
  121.  
  122.           ifdef LATTICE 
  123.       endps
  124.       endif
  125.  
  126.       ifdef MICROSOFT
  127.       sEnd
  128.       endif
  129.           end
  130. ENDM
  131.  
  132.  
  133. ;
  134. ; Macro for declaring a routine external
  135. ;
  136. EXTERN_CODE   MACRO  R_NAME
  137.  
  138.     ifdef LATTICE
  139.           if  lprog
  140.         extrn R_NAME:far
  141.           else
  142.         extrn R_NAME:near
  143.           endif
  144.     endif
  145.  
  146.     ifdef MICROSOFT
  147.       if lprog
  148.         extrn _&R_NAME:far
  149.       else
  150.         extrn _&R_NAME:near
  151.       endif
  152.       R_NAME EQU  _&R_NAME
  153.     endif
  154. ENDM
  155.  
  156. ;
  157. ; Declare External Data
  158. ;
  159. EXTERN_PTR   MACRO  VAR_NAME, TYPE
  160.     ifidn <type>,<d>
  161.       if ldata
  162.         ifdef MICROSOFT
  163.           extrn _&VAR_NAME : dword
  164.             endif
  165.         ifdef LATTICE
  166.           extrn VAR_NAME : dword
  167.         endif
  168.       else
  169.         ifdef MICROSOFT
  170.           extrn _&VAR_NAME : word
  171.             endif
  172.         ifdef LATTICE
  173.           extrn VAR_NAME : word
  174.         endif
  175.       endif
  176.     else
  177.       if lprog
  178.         ifdef MICROSOFT
  179.           extrn _&VAR_NAME : dword
  180.             endif
  181.         ifdef LATTICE
  182.           ifdef ldata
  183.             extrn VAR_NAME : dword
  184.           else
  185.             extrn VAR_NAME : word
  186.           endif
  187.         endif
  188.       else
  189.         ifdef MICROSOFT
  190.           extrn _&VAR_NAME : word
  191.             endif
  192.         ifdef LATTICE
  193.           extrn VAR_NAME : word
  194.         endif
  195.       endif
  196.     endif
  197.     ifdef MICROSOFT
  198.              VAR_NAME EQU _&VAR_NAME
  199.     endif
  200. ENDM
  201.  
  202.  
  203. EXTERN_DATA MACRO VAR_NAME, TYPE
  204.     ifdef MICROSOFT
  205.     extrn    _&VAR_NAME : type
  206.     VAR_NAME EQU _&VAR_NAME
  207.     endif
  208.     ifdef LATTICE
  209.     extrn    VAR_NAME : type
  210.     endif
  211. ENDM
  212.  
  213.  
  214. ;
  215. ; Macro for entering a routine
  216. ;
  217. ROUTINE   MACRO  R_NAME
  218.  
  219.     ifdef LATTICE
  220.           public R_NAME
  221.           if     lprog
  222.         R_NAME    proc   far
  223.           else
  224.         R_NAME    proc   near
  225.           endif
  226.     endif
  227.  
  228.     ifdef MICROSOFT
  229.       public _&R_NAME
  230.       if     lprog
  231.         _&R_NAME  proc   far
  232.       else
  233.         _&R_NAME  proc   near
  234.       endif
  235.              R_NAME EQU _&R_NAME
  236.     endif
  237. ENDM
  238.  
  239.  
  240. ;
  241. ; Macro for entering a routine
  242. ;
  243. FUNCTION   MACRO  LOC, F_NAME
  244.     ifdef LATTICE
  245.           public F_NAME
  246.       F_NAME    proc   LOC
  247.     endif
  248.  
  249.     ifdef MICROSOFT
  250.       public _&F_NAME
  251.       _&F_NAME  proc   LOC
  252.     endif
  253. ENDM
  254.  
  255.  
  256. ;
  257. ; Macro for exiting a routine
  258. ;
  259. RETURN    MACRO  R_NAME
  260.  
  261.     ifdef LATTICE
  262.           ret
  263.       R_NAME    endp
  264.     endif
  265.  
  266.     ifdef MICROSOFT
  267.       ret
  268.       _&R_NAME  endp
  269.     endif
  270. ENDM
  271. ;
  272. ;
  273. ;***
  274. ;* START_STRUCT
  275. ;***
  276. start_struct macro
  277. strcntr = 0
  278. endm
  279. ;
  280. ;***
  281. ;* END_STRUCT
  282. ;***
  283. end_struct macro member
  284. member = strcntr
  285. endm
  286. ;
  287. ;
  288. ;***
  289. ;* MRB
  290. ;***
  291. mbr macro member, type
  292. member = strcntr
  293. strcntr = strcntr + &type
  294. endm
  295. ;
  296. ;***
  297. ;* ALLOWED MEMBER TYPES
  298. ;***
  299. d_char    equ    1
  300. d_int    equ    2
  301. d_long    equ    4
  302. if ldata
  303.   d_ptr    equ    4        ;data pointer
  304. else
  305.   d_ptr    equ    2
  306. endif
  307. if lprog
  308.   d_ret    equ    4        ;function return address
  309. else
  310.   d_ret    equ    2
  311. endif
  312. ;
  313. ifdef LATTICE
  314. if ldata
  315.   f_ptr    equ    4        ;function pointer
  316. else
  317.   f_ptr    equ    2
  318. endif
  319. endif
  320. ;
  321. ifdef MICROSOFT
  322. if lprog
  323.   f_ptr    equ    4        ;function pointer
  324. else
  325.   f_ptr    equ    2
  326. endif
  327. endif
  328. ;
  329. ;***
  330. ;* LOAD & STORE OPs
  331. ;***
  332. ldchar macro reg, addr
  333.     mov reg, byte ptr addr
  334. endm
  335. ldint macro reg, addr
  336.     mov reg, word ptr addr
  337. endm
  338. ldptr macro sg, rg, addr, type
  339.     ifidn <type>,<c>
  340.       if lprog
  341.         l&sg rg, dword ptr addr
  342.       else
  343.         mov rg, word ptr addr
  344.         push cs
  345.         pop sg
  346.       endif
  347.     else
  348.       if ldata
  349.         l&sg rg, dword ptr addr
  350.       else
  351.         mov rg,dgroup
  352.         mov sg,rg
  353.         mov rg, word ptr addr
  354.       endif
  355.     endif      
  356. endm
  357. stchar macro addr, reg
  358.     mov byte ptr addr, reg
  359. endm
  360. stint macro addr, reg
  361.     mov word ptr addr, reg
  362. endm
  363. stptrr    macro    addr, segval, offval
  364.     mov word ptr addr.off, offval
  365.     if ldata
  366.       mov word ptr addr.sgt, segval
  367.     endif      
  368. endm
  369. stptra    macro    addr, loc
  370.     mov word ptr addr.off, offset dgroup:loc
  371.     if ldata
  372.       mov word ptr addr.sgt, seg loc
  373.     endif      
  374. endm
  375. ;
  376. ;
  377. ;***
  378. ;* PUSH/POP SDI
  379. ;***
  380. push_sdi macro
  381.     ifdef MICROSOFT
  382.     push    di
  383.     push    si
  384.     endif
  385. endm
  386. pop_sdi    macro
  387.     ifdef MICROSOFT
  388.     pop    si
  389.     pop    di
  390.     endif
  391. endm
  392. ;
  393. ;
  394. ;***
  395. ;* FNCALL
  396. ;***
  397. fncall macro fptr
  398.     if lprog
  399.       call dword ptr fptr
  400.     else
  401.       call fptr
  402.     endif
  403. endm
  404. ;
  405. ;
  406. ;***
  407. ;* Definition of one unique stack base variable name
  408. ;***
  409. ifdef LATTICE
  410.   if ldata
  411.   else
  412.     extern_data _base,word
  413.     stk_base equ _base
  414.   endif
  415. endif
  416. ifdef MICROSOFT
  417.   extrn STKHQQ:word
  418.   stk_base equ STKHQQ
  419. endif
  420. ifdef TURBOC
  421.   if ldata
  422.     extern_data __stklen,word
  423.     stk_base equ __stklen
  424.   else
  425.     extern_data ___brklvl,word
  426.     stk_base equ ___brklvl
  427.   endif
  428. endif
  429. ;
  430. ;***
  431. ;* This macro defines stkset ONLY for Lattice large model
  432. ;* This model does not require maintenance of stk_base.
  433. ;***
  434. ifdef LATTICE
  435.   if ldata
  436.     stkset equ 1
  437.   endif
  438. endif
  439. ;
  440. ;
  441.