2 cmacros - assembly macros for interfacing to HHLs
3 (C)Copyright 1988 Microsoft Corporation
6 outif MACRO name,defval,onmsg,offmsg
28 %out E r r o r ----- msg
30 %out cMacros Version 1.04
31 outif memS,0,<Small Model>
32 outif memM,0,<Medium Model>
33 outif memL,0,<Large Model>
34 outif memC,0,<Compact Model>
35 outif memH,0,<Huge Model>
36 memMOD= memS + memM + memL + memC + memH
40 outif memS,0,<Small Model>
42 error <Must have only 1 memory model selected>
45 sizeC= memM + memL + memH
46 sizeD= memL + memC + (memH*2)
47 outif ?DF,0,<No segments or groups will be defined>
48 outif ?WIN,0,<Windows Support>
49 outif ?PLM,0,<PLM calling convention>
52 .XCREF ?N,?AX,?AH,?AL,?BX,?BH
53 .XCREF ?BL,?CX,?CH,?CL,?DX,?DH
54 .XCREF ?DL,?SI,?DI,?ES,?DS,?BP
56 .XCREF ?RSL,?CPD,?argl,?argc,?BA
59 .XCREF Uconcat,mPush,mPop
60 .XCREF ?RI,?pp,?pp1,?al1
61 .XCREF ?aD,?AP,?Atal,?pd,?dd,?dd1,?ex1,?cas
62 .XCREF ?pg,?pg1,?aloc,?cs1,?cs2
64 .XCREF ?DF,?PLM,?WIN,?IA,?PU,?ADJ
80 ?N = 0000000000000000B
81 ?AX = 0000000000000011B
82 ?AH = 0000000000000001B
83 ?AL = 0000000000000010B
84 ?BX = 0000000000001100B
85 ?BH = 0000000000000100B
86 ?BL = 0000000000001000B
87 ?CX = 0000000000110000B
88 ?CH = 0000000000010000B
89 ?CL = 0000000000100000B
90 ?DX = 0000000011000000B
91 ?DH = 0000000001000000B
92 ?DL = 0000000010000000B
93 ?SI = 0000000100000000B
94 ?DI = 0000001000000000B
95 ?ES = 0000010000000000B
96 ?DS = 0000100000000000B
97 ?BP = 0001000000000000B
98 ?SP = 0010000000000000B
99 ?SS = 0100000000000000B
100 ?CS = 1000000000000000B
101 uconcat macro n1,n2,o1,o2,p1,p2
105 irp x,<ax,bx,cx,dx,si,di,es,ds,bp,sp,ss,cs>
112 irp x,<cs,ss,sp,bp,ds,es,di,si,dx,cx,bx,ax>
145 ?pp <&&x>,<DWORD>,0,4
146 ?pp <Off_&&x>,<WORD>,2,2
147 ?pp <Seg_&&x>,<WORD>,2,2
151 ?pp <Seg_&&x>,<WORD>,2,2
152 ?pp <Off_&&x>,<WORD>,2,2
153 ?pp <&&x>,<DWORD>,0,4
158 ?pp <&nL>,<QWORD>,8,8
161 ?pp <&nL>,<TBYTE>,10,10
186 ?pp1 x,<t>,%?PO,%?adj,%(?PO+?adj)
194 ?pp1 x,<t>,%?PO,%?adj,%(?PO+?adj)
201 %out Parm(s) "&nl" declared outside proc def.
208 n equ t ptr [bp+a+?PO-o]
212 ?aLoc <&nL>,<BYTE ptr>,1,1,0
215 ?aLoc <&nL>,<WORD PTR>,2,2,1
219 ?aLoc <Seg_&&x>,<WORD PTR>,2,2,1
220 ?aLoc <Off_&&x>,<WORD PTR>,2,2,1
221 ?aLoc <&&x>,<DWORD PTR>,0,4,1
225 ?aLoc <&nL>,<QWORD PTR>,8,8,1
228 ?aLoc <&nL>,<TBYTE PTR>,10,10,1
249 ?aLoc <&n>,,%(&a),0,1
251 ?aLoc macro nL,t,l,s,a
256 ??? = ((??? + 1) AND 0FFFEH)
265 %out Locals "&nl" declared outside procedure def.
277 ?dd n,1,<BYTE>,<DB>,<i>,<s>
281 ?dd n,1,<WORD>,<DW>,<i>,<s>
285 ?dd n,1,<DWORD>,<DD>,<i>,<s>
289 ?dd n,1,<QWORD>,<DQ>,<i>,<s>
293 ?dd n,1,<TBYTE>,<DT>,<i>,<s>
315 ?dd n,0,<BYTE>,<DB>,<i>,<s>
319 ?dd n,0,<WORD>,<DW>,<i>,<s>
323 ?dd n,0,<DWORD>,<DD>,<i>,<s>
327 ?dd n,0,<QWORD>,<DQ>,<i>,<s>
331 ?dd n,0,<TBYTE>,<DT>,<i>,<s>
351 ?dd macro n,p,t,d,i,s
354 ?dd1 _&n,p,<d>,<i>,<s>
386 ?ex1 <&nL>,10,<TBYTE>
448 ?lb1 <&nL>,10,<TBYTE>
551 .xcref ?T&n,?SR&n,?OR&n
612 ccall macro n,a,sleaze
617 ?RSL = ?RSL AND ?SM&n
624 uconcat <purge>,,<?ALI>,%?ACB
650 ?RSL = ?RSL AND ?SM&n
657 uconcat <purge>,,<?ALI>,%?ACB
714 ?pg <_&n>,%?PU,%?PC,%?PAS
716 ?pg <n>,%?PU,%?PC,%?PAS
727 ??? = (???+1) AND 0FFFEH
738 %out <cBegin - possible invalid use of nogen>
762 %out Unterminated Procedure Definition: "&n"
773 %out <cEnd - possible invalid use of nogen>
832 createSeg macro n,ln,a,co,cl,grp
859 if def_&grp ne ASMpass
898 createSeg _TEXT,code,byte,public,CODE,IGROUP
899 createSeg _DATA,data,word,public,DATA,DGROUP
902 createSeg _INITTEXT,initcode,byte,public,CODE,IGROUP
903 createSeg _INITDATA,initdata,word,public,DATA,DGROUP
911 codeOFFSET equ OFFSET _TEXT:
913 codeOFFSET equ OFFSET IGROUP:
915 dataOFFSET equ OFFSET DGROUP:
931 errnz <OFFSET $ - OFFSET l x>