Annotation of os232sdk/toolkt20/masm/os2inc/cmacros.inc, revision 1.1

1.1     ! root        1: comment $
        !             2: cmacros - assembly macros for interfacing to hhls
        !             3: (C)Copyright Microsoft Corp. 1984-1990
        !             4: $
        !             5: .xcref
        !             6: .xcref ??_out
        !             7: ??_out macro t
        !             8: ifndef ?QUIET
        !             9: %out t
        !            10: endif
        !            11: endm
        !            12: outif macro name,defval,onmsg,offmsg
        !            13: ifndef name
        !            14: ifb <defval>
        !            15: name=0
        !            16: else
        !            17: name=defval
        !            18: endif
        !            19: endif
        !            20: if name
        !            21: name=1
        !            22: ifnb <onmsg>
        !            23: ??_out <! onmsg>
        !            24: endif
        !            25: else
        !            26: ifnb <offmsg>
        !            27: ??_out <! offmsg>
        !            28: endif
        !            29: endif
        !            30: endm
        !            31: .xcref ??error
        !            32: ??error macro msg
        !            33: %out e r r o r ----- msg
        !            34: .err e r r o r ----- msg
        !            35: endm
        !            36: .xcref ??error2
        !            37: ??error2 macro msg
        !            38: if2
        !            39: %out e r r o r ----- msg
        !            40: .err e r r o r ----- msg
        !            41: endif
        !            42: endm
        !            43: .xcref ?sps,?ps,?rps
        !            44: ?ps=0
        !            45: ?sps macro
        !            46: ?ps=@Cpu
        !            47: endm
        !            48: ?rps macro
        !            49: if ?ps and 80h
        !            50: if ?ps and 08h
        !            51: .386P
        !            52: else
        !            53: if ?ps and 04h
        !            54: .286P
        !            55: else
        !            56: ??error2 <Internal error -- illegal CpuMode>
        !            57: endif
        !            58: endif
        !            59: else
        !            60: if ?ps and 08h
        !            61: .386
        !            62: else
        !            63: if ?ps and 04h
        !            64: .286
        !            65: else
        !            66: if ?ps and 02h
        !            67: .186
        !            68: else
        !            69: if ?ps and 01h
        !            70: .8086
        !            71: else
        !            72: ??error2 <Internal error -- illegal CpuMode>
        !            73: endif
        !            74: endif
        !            75: endif
        !            76: endif
        !            77: endif
        !            78: if ?ps and 800h
        !            79: .387
        !            80: else
        !            81: if ?ps and 400h
        !            82: .287
        !            83: else
        !            84: if ?ps and 100h
        !            85: .8087
        !            86: else
        !            87: ??error2 <Internal error -- illegal CpuMode>
        !            88: endif
        !            89: endif
        !            90: endif
        !            91: endm
        !            92: .xcref ASMpass
        !            93: .xcref memS,memM,memL,memC,memH,memMOD,sizec,sized
        !            94: if1
        !            95: ASMpass=1
        !            96: ifdef ?SMALL
        !            97: memS=1
        !            98: endif
        !            99: ifdef ?MEDIUM
        !           100: memM=1
        !           101: endif
        !           102: ifdef ?COMPACT
        !           103: memC=1
        !           104: endif
        !           105: ifdef ?LARGE
        !           106: memL=1
        !           107: endif
        !           108: ifdef ?HUGE
        !           109: memH=1
        !           110: endif
        !           111: ??_out <cMacros Version 3.08 - 01/15/90>
        !           112: ??_out <Copyright (C) Microsoft Corp. 1984-1990. All rights reserved.>
        !           113: outif memS,0,<Small Model>
        !           114: outif memM,0,<Medium model>
        !           115: outif memL,0,<Large Model>
        !           116: outif memC,0,<Compact Model>
        !           117: outif memH,0,<Huge Model>
        !           118: memMOD= memS + memM + memL + memC + memH
        !           119: if memMOD ne 1
        !           120: if memMOD eq 0
        !           121: memS = 1
        !           122: outif memS,0,<Small model>
        !           123: else
        !           124: ??error <must have only 1 memory model selected>
        !           125: endif
        !           126: endif
        !           127: sizec= memM + memL + memH
        !           128: sized= memL + memC + (memH*2)
        !           129: outif ?DF,0,<No segments or groups will be defined>
        !           130: outif ?TF,0,<Epilog sequences assume valid SP>
        !           131: outif ?WIN,1,<Windows support>
        !           132: outif ?PLM,1,<PL/M calling convention>
        !           133: ifndef ?NODATA
        !           134: ?nodata1=0
        !           135: else
        !           136: ?nodata1=1
        !           137: ??_out <! NODATA module>
        !           138: endif
        !           139: ifndef ?CHKSTK
        !           140: ?chkstk1=0
        !           141: else
        !           142: ?chkstk1=1
        !           143: ifdef ?CHKSTKPROC
        !           144: ??_out <! Private stack checking enabled>
        !           145: else
        !           146: ??_out <! Stack checking enabled>
        !           147: endif
        !           148: endif
        !           149: ifndef DOS5
        !           150: ?DOS5=0
        !           151: else
        !           152: ?DOS5=1
        !           153: ??_out <! DOS5 module>
        !           154: endif
        !           155: ifdef ?PROFILE
        !           156: ??_out <! Native profiling enabled>
        !           157: endif
        !           158: ifdef ATTRPROF
        !           159: ??_out <! Attributed profiling enabled>
        !           160: ?aprof1=1
        !           161: else
        !           162: ?aprof1=0
        !           163: endif
        !           164: ifndef ?NO_BP
        !           165: ?no_bp1=0
        !           166: else
        !           167: ?no_bp1=1
        !           168: ??_out <! NO_BP is default>
        !           169: endif
        !           170: ifndef ?REG32
        !           171: ?bigreg=0
        !           172: else
        !           173: ?bigreg=1
        !           174: ??_out <! 32-bit registers recognized.>
        !           175: endif
        !           176: ifndef ?ENTER
        !           177: ?enter1=0
        !           178: else
        !           179: ?enter1=1
        !           180: ??_out <! ENTER/LEAVE module>
        !           181: endif
        !           182: ifdef ?USE32
        !           183: ?u32=1
        !           184: .xcref ?u32
        !           185: endif
        !           186: ifdef ?USE16
        !           187: ?u32=0
        !           188: .xcref ?u32
        !           189: endif
        !           190: else
        !           191: ASMpass=2
        !           192: endif
        !           193: .xcref ?n,?ax,?ah,?al,?bx,?bh
        !           194: .xcref ?bl,?cx,?ch,?cl,?dx,?dh
        !           195: .xcref ?dl,?si,?di,?es,?ds,?bp
        !           196: .xcref ?sp,?ss,?cs
        !           197: .xcref ?n,?AX,?AH,?AL,?BX,?BH
        !           198: .xcref ?BL,?CX,?CH,?CL,?DX,?DH
        !           199: .xcref ?DL,?SI,?DI,?ES,?DS,?BP
        !           200: .xcref ?SP,?SS,?CS
        !           201: if ?bigreg
        !           202: .xcref ?eax,?ebx,?ecx,?edx,?esi,?edi
        !           203: .xcref ?ebp,?esp,?fs,?gs
        !           204: .xcref ?EAX,?EBX,?ECX,?EDX,?ESI,?EDI
        !           205: .xcref ?EBP,?ESP,?FS,?GS
        !           206: endif
        !           207: .xcref ?rsl,?cpd,?argl,?argc,?ba
        !           208: .xcref ?acb,???,?po
        !           209: .xcref ?pas,?pc
        !           210: .xcref uconcat,mpush,mpop
        !           211: .xcref ?ri,?pp,?pp1,?al1
        !           212: .xcref ?ad,?ap,?atal,?dd,?dd1,?dd2
        !           213: .xcref ?pg,?pg1,?aloc,?cs1,?cs2
        !           214: .xcref ?DF,?TF,?ff,?PLM,?WIN,?ia,?pu,?adj
        !           215: .xcref ?uf,?rp,?nx,?nd,?nodata1,?chkstk1,?aprof1,?aprof2,?DOS5
        !           216: .xcref ?wfp,arg,cCall,cProc,assumes,?cs3,?cs2,?cs1
        !           217: .xcref defgrp,addseg,createSeg
        !           218: .xcref save,outif,errnz,errn$,errnz1
        !           219: .xcref ?PLMPrevParm,?gcc
        !           220: .xcref ?cCall1,?pcc,?no_bp1,?no_bp2,?bigreg,?enter1
        !           221: .xcref ?cbe,?pcbe
        !           222: ?rsl = 0
        !           223: ?cpd = 0
        !           224: ?argl = 0
        !           225: ?argc = 0
        !           226: ?ba = 0
        !           227: ?acb = 0
        !           228: ??? = 0
        !           229: ?po = 0
        !           230: ?pas = 0
        !           231: ?pc = 0
        !           232: ?ia = 0
        !           233: ?pu = 0
        !           234: ?adj = 0
        !           235: ?rp = 0
        !           236: ?uf = 0
        !           237: ?nd = 0
        !           238: ?ent = 0
        !           239: ?nx = 0
        !           240: ?wfp = 0
        !           241: ?ff = 0
        !           242: ?dd2 = 0
        !           243: ?cCall1 = 0
        !           244: ?pcc = ?PLM
        !           245: ?PLMPrevParm = 0
        !           246: ?no_bp2 = ?no_bp1
        !           247: ?cbe = 0
        !           248: ?aprof2 = 0
        !           249: .xcref ?casen
        !           250: if1
        !           251: ?casen = 0
        !           252: endif
        !           253: ?n = 0000000000000000b
        !           254: ?ax = 0000000000000011b
        !           255: ?ah = 0000000000000001b
        !           256: ?al = 0000000000000010b
        !           257: ?bx = 0000000000001100b
        !           258: ?bh = 0000000000000100b
        !           259: ?bl = 0000000000001000b
        !           260: ?cx = 0000000000110000b
        !           261: ?ch = 0000000000010000b
        !           262: ?cl = 0000000000100000b
        !           263: ?dx = 0000000011000000b
        !           264: ?dh = 0000000001000000b
        !           265: ?dl = 0000000010000000b
        !           266: ?si = 0000000100000000b
        !           267: ?di = 0000001000000000b
        !           268: ?es = 0000010000000000b
        !           269: ?ds = 0000100000000000b
        !           270: ?bp = 0001000000000000b
        !           271: ?sp = 0010000000000000b
        !           272: ?ss = 0100000000000000b
        !           273: ?cs = 1000000000000000b
        !           274: if ?bigreg
        !           275: ?sps
        !           276: .386p
        !           277: ?eax = 10000000000000000b
        !           278: ?ebx = 100000000000000000b
        !           279: ?ecx = 1000000000000000000b
        !           280: ?edx = 10000000000000000000b
        !           281: ?esi = 100000000000000000000b
        !           282: ?edi = 1000000000000000000000b
        !           283: ?ebp = 10000000000000000000000b
        !           284: ?esp = 100000000000000000000000b
        !           285: ?fs = 1000000000000000000000000b
        !           286: ?gs = 10000000000000000000000000b
        !           287: ?rps
        !           288: endif
        !           289: ?AX = 0000000000000011b
        !           290: ?AH = 0000000000000001b
        !           291: ?AL = 0000000000000010b
        !           292: ?BX = 0000000000001100b
        !           293: ?BH = 0000000000000100b
        !           294: ?BL = 0000000000001000b
        !           295: ?CX = 0000000000110000b
        !           296: ?CH = 0000000000010000b
        !           297: ?CL = 0000000000100000b
        !           298: ?DX = 0000000011000000b
        !           299: ?DH = 0000000001000000b
        !           300: ?DL = 0000000010000000b
        !           301: ?SI = 0000000100000000b
        !           302: ?DI = 0000001000000000b
        !           303: ?ES = 0000010000000000b
        !           304: ?DS = 0000100000000000b
        !           305: ?BP = 0001000000000000b
        !           306: ?SP = 0010000000000000b
        !           307: ?SS = 0100000000000000b
        !           308: ?CS = 1000000000000000b
        !           309: if ?bigreg
        !           310: ?sps
        !           311: .386p
        !           312: ?EAX = 10000000000000000b
        !           313: ?EBX = 100000000000000000b
        !           314: ?ECX = 1000000000000000000b
        !           315: ?EDX = 10000000000000000000b
        !           316: ?ESI = 100000000000000000000b
        !           317: ?EDI = 1000000000000000000000b
        !           318: ?EBP = 10000000000000000000000b
        !           319: ?ESP = 100000000000000000000000b
        !           320: ?FS = 1000000000000000000000000b
        !           321: ?GS = 10000000000000000000000000b
        !           322: ?rps
        !           323: endif
        !           324: .cref
        !           325: uconcat macro a,b,c,d,e,f,g
        !           326: a&b c&d e&f&g
        !           327: endm
        !           328: mpush macro r
        !           329: if ?bigreg
        !           330: ?sps
        !           331: .386p
        !           332: irp x,<ax,bx,cx,dx,si,di,bp,sp>
        !           333: if (r and ?e&&x)
        !           334:        push    e&&x
        !           335: else
        !           336: if (r and ?&&x)
        !           337:        push    x
        !           338: endif
        !           339: endif
        !           340: endm
        !           341: irp x,<es,ds,ss,cs,fs,gs>
        !           342: if (r and ?&&x)
        !           343:        push    x
        !           344: endif
        !           345: endm
        !           346: ?rps
        !           347: else
        !           348: irp x,<ax,bx,cx,dx,si,di,es,ds,bp,sp,ss,cs>
        !           349: if (r and ?&&x)
        !           350:        push    x
        !           351: endif
        !           352: endm
        !           353: endif
        !           354: endm
        !           355: mpop macro r
        !           356: if ?bigreg
        !           357: ?sps
        !           358: .386p
        !           359: irp x,<gs,fs,cs,ss,ds,es>
        !           360: if (r and ?&&x)
        !           361:        pop     x
        !           362: endif
        !           363: endm
        !           364: irp x,<sp,bp,di,si,dx,cx,bx,ax>
        !           365: if (r and ?e&&x)
        !           366:        pop     e&&x
        !           367: else
        !           368: if (r and ?&&x)
        !           369:        pop     x
        !           370: endif
        !           371: endif
        !           372: endm
        !           373: ?rps
        !           374: else
        !           375: irp x,<cs,ss,sp,bp,ds,es,di,si,dx,cx,bx,ax>
        !           376: if (r and ?&&x)
        !           377:        pop     x
        !           378: endif
        !           379: endm
        !           380: endif
        !           381: endm
        !           382: save macro r
        !           383: ?rsl=0
        !           384: ?ri ?rsl,<r>
        !           385: endm
        !           386: ?ri macro n,r
        !           387: irp x,<r>
        !           388: ifdef ?&&x
        !           389: n=n or ?&&x
        !           390: else
        !           391: ??error2 <unknown register x>
        !           392: .err
        !           393: endif
        !           394: endm
        !           395: endm
        !           396: .xcref
        !           397: .xcref parmB,parmW,parmD,parmQ,parmT,parmCP,parmDP,parmH
        !           398: .cref
        !           399: parmB macro n
        !           400: ?pp <n>,<byte>,2,1
        !           401: endm
        !           402: parmW macro n
        !           403: ?pp <n>,<word>,2,2
        !           404: endm
        !           405: parmD macro n
        !           406: ife ?pcc
        !           407: irp x,<n>
        !           408: ?pp <&&x>,<dword>,0,4
        !           409: ?pp <off_&&x>,<word>,2,2
        !           410: ?pp <seg_&&x>,<word>,2,2
        !           411: endm
        !           412: else
        !           413: irp x,<n>
        !           414: ?pp <seg_&&x>,<word>,2,2
        !           415: ?pp <off_&&x>,<word>,2,2
        !           416: ?pp <&&x>,<dword>,0,4
        !           417: endm
        !           418: endif
        !           419: endm
        !           420: parmH macro n
        !           421: ?pp <n>,<word>,4,2
        !           422: endm
        !           423: parmQ macro n
        !           424: ?pp <n>,<qword>,8,8
        !           425: endm
        !           426: parmT macro n
        !           427: ?pp <n>,<tbyte>,10,10
        !           428: endm
        !           429: if sizec
        !           430: parmCP macro n
        !           431: parmD <n>
        !           432: endm
        !           433: else
        !           434: parmCP macro n
        !           435: parmW <n>
        !           436: endm
        !           437: endif
        !           438: if sized
        !           439: parmDP macro n
        !           440: parmD <n>
        !           441: endm
        !           442: else
        !           443: parmDP macro n
        !           444: parmW <n>
        !           445: endm
        !           446: endif
        !           447: ?pp macro n,t,l,s
        !           448: if ?cpd
        !           449: .xcref
        !           450: irp x,<n>
        !           451: .xcref ?t_&&x
        !           452: ?t_&&x=s
        !           453: ife ?pcc
        !           454: ?pp1 x,<t>,,,%(?po+?adj)
        !           455: ?po=?po+l
        !           456: else
        !           457: ?PLMPrevParm=?PLMPrevParm+1
        !           458: ?po=?po+l
        !           459: ?pp1 x,<t>,%?po,%?adj,,%?PLMPrevParm,%(?PLMPrevParm-1)
        !           460: endif
        !           461: endm
        !           462: .cref
        !           463: else
        !           464: ??error2 <parm(s) "&n" declared outside proc def>
        !           465: endif
        !           466: endm
        !           467: ?pp1 macro n,t,o,a,b,cpc,ppc
        !           468: ife ?pcc
        !           469: if ?no_bp2
        !           470: n equ (t ptr [+b])
        !           471: else
        !           472: n equ (t ptr [bp][+b])
        !           473: endif
        !           474: else
        !           475: .xcref
        !           476: .xcref ?PLMParm&cpc
        !           477: .cref
        !           478: if ?no_bp2
        !           479: ?PLMParm&cpc &macro po
        !           480: uconcat <n>,,<equ>,,<(t ptr [+>,%(a+po-o),<])>
        !           481: ?PLMParm&ppc po
        !           482: purge ?PLMParm&cpc
        !           483: &endm
        !           484: else
        !           485: ?PLMParm&cpc &macro po
        !           486: uconcat <n>,,<equ>,,<(t ptr [bp][+>,%(a+po-o),<])>
        !           487: ?PLMParm&ppc po
        !           488: purge ?PLMParm&cpc
        !           489: &endm
        !           490: endif
        !           491: endif
        !           492: endm
        !           493: ifndef ?NOPARMR
        !           494: .xcref
        !           495: .xcref ?pr,parmR
        !           496: .cref
        !           497: parmR macro n,r,r2
        !           498: ?pr n,r,r2,%?rp,%(?ia+2)
        !           499: endm
        !           500: ?pr macro n,r,r2,i,o
        !           501: .xcref
        !           502: ifnb <r2>
        !           503: parmR seg_&n,r
        !           504: parmR off_&n,r2
        !           505: if ?no_bp2
        !           506: n equ (dword ptr [-o-2])
        !           507: else
        !           508: n equ (dword ptr [bp][-o-2])
        !           509: endif
        !           510: .xcref ?t_&n
        !           511: ?t_&n=4
        !           512: else
        !           513: .xcref ?rp&i
        !           514: ?rp&i=0
        !           515: ifdef ?&r
        !           516: ?rp&i=?&r
        !           517: endif
        !           518: if ??? or (?cpd eq 0) or (?rp&i eq 0)
        !           519: ??error2 <invalid parmR encountered: &n,&r>
        !           520: exitm
        !           521: endif
        !           522: if ?no_bp2
        !           523: n equ (word ptr [-o])
        !           524: else
        !           525: n equ (word ptr [bp][-o])
        !           526: endif
        !           527: .xcref ?t_&n
        !           528: ?t_&n=2
        !           529: irp x,<bh,ch,dh,bl,cl,dl,ah,al>
        !           530: if ?&&x eq ?&r
        !           531: if ?no_bp2
        !           532: n equ (byte ptr [-o])
        !           533: else
        !           534: n equ (byte ptr [bp][-o])
        !           535: endif
        !           536: ?t_&n=1
        !           537: exitm
        !           538: endif
        !           539: endm
        !           540: ?ia=?ia+2
        !           541: ?rp=?rp+1
        !           542: endif
        !           543: .cref
        !           544: endm
        !           545: endif
        !           546: .xcref
        !           547: .xcref localB,localW,localD,localQ,localT,localCP,localDP,localV
        !           548: .cref
        !           549: localB macro n
        !           550: ?aloc <n>,<byte ptr>,1,1,0
        !           551: endm
        !           552: localW macro n
        !           553: ?aloc <n>,<word ptr>,2,2,1
        !           554: endm
        !           555: localD macro n
        !           556: irp x,<n>
        !           557: ?aloc <seg_&&x>,<word ptr>,2,2,1
        !           558: ?aloc <off_&&x>,<word ptr>,2,2,1
        !           559: ?aloc <&&x>,<dword ptr>,0,4,1
        !           560: endm
        !           561: endm
        !           562: localQ macro n
        !           563: ?aloc <n>,<qword ptr>,8,8,1
        !           564: endm
        !           565: localT macro n
        !           566: ?aloc <n>,<tbyte ptr>,10,10,1
        !           567: endm
        !           568: if sizec
        !           569: localCP macro n
        !           570: localD <n>
        !           571: endm
        !           572: else
        !           573: localCP macro n
        !           574: localW <n>
        !           575: endm
        !           576: endif
        !           577: if sized
        !           578: localDP macro n
        !           579: localD <n>
        !           580: endm
        !           581: else
        !           582: localDP macro n
        !           583: localW <n>
        !           584: endm
        !           585: endif
        !           586: localV macro n,a
        !           587: ?aloc <n>,,%(a),0,1
        !           588: endm
        !           589: ?aloc macro n,t,l,s,a
        !           590: if ?cpd
        !           591: .xcref
        !           592: irp x,<n>
        !           593: ???=???+l
        !           594: if a
        !           595: ???=((??? + 1) and 0fffeh)
        !           596: endif
        !           597: ?al1 x,<t>,%(???+?ia)
        !           598: .xcref ?t_&&x
        !           599: ?t_&&x=s
        !           600: endm
        !           601: .cref
        !           602: else
        !           603: ??error2 <locals "&n" declared outside procedure def>
        !           604: endif
        !           605: endm
        !           606: ?al1 macro n,t,o
        !           607: if ?no_bp2
        !           608: n equ (t [-o])
        !           609: else
        !           610: n equ (t [bp][-o])
        !           611: endif
        !           612: endm
        !           613: ?gcc macro s,i,cc
        !           614: s = i
        !           615: ifnb <cc>
        !           616: ifidn <cc>,<C>
        !           617: s=0
        !           618: endif
        !           619: ifidn <cc>,<PLM>
        !           620: s=1
        !           621: endif
        !           622: ifidn <cc>,<PASCAL>
        !           623: s=1
        !           624: endif
        !           625: endif
        !           626: endm
        !           627: ifndef ?NOGLOBAL
        !           628: .xcref
        !           629: .xcref globalB,globalW,globalD,globalQ,globalT,globalCP,globalDP
        !           630: .cref
        !           631: globalB macro n,i,s,c
        !           632: ?ad <n>,1
        !           633: ?dd n,1,<byte>,<db>,<i>,<s>,<c>
        !           634: endm
        !           635: globalW macro n,i,s,c
        !           636: ?ad <n>,2
        !           637: ?dd n,1,<word>,<dw>,<i>,<s>,<c>
        !           638: endm
        !           639: globalD macro n,i,s,c
        !           640: ?ad <n>,4
        !           641: ?dd n,1,<dword>,<dd>,<i>,<s>,<c>
        !           642: off_&n equ word ptr n[0]
        !           643: seg_&n equ word ptr n[2]
        !           644: endm
        !           645: globalQ macro n,i,s,c
        !           646: ?ad <n>,8
        !           647: ?dd n,1,<qword>,<dq>,<i>,<s>,<c>
        !           648: endm
        !           649: globalT macro n,i,s,c
        !           650: ?ad <n>,10
        !           651: ?dd n,1,<tbyte>,<dt>,<i>,<s>,<c>
        !           652: endm
        !           653: if sizec
        !           654: globalCP macro n,i,s,c
        !           655: globalD n,<i>,<s>,<c>
        !           656: endm
        !           657: else
        !           658: globalCP macro n,i,s,c
        !           659: globalW n,<i>,<s>,<c>
        !           660: endm
        !           661: endif
        !           662: if sized
        !           663: globalDP macro n,i,s,c
        !           664: globalD n,<i>,<s>,<c>
        !           665: endm
        !           666: else
        !           667: globalDP macro n,i,s,c
        !           668: globalW n,<i>,<s>,<c>
        !           669: endm
        !           670: endif
        !           671: endif
        !           672: ifndef ?NOSTATIC
        !           673: .xcref
        !           674: .xcref staticB,staticW,staticD,staticQ,staticT,staticCP,staticDP
        !           675: .cref
        !           676: staticB macro n,i,s
        !           677: ?ad <n>,1
        !           678: ?dd n,0,<byte>,<db>,<i>,<s>,<PLM>
        !           679: endm
        !           680: staticW macro n,i,s
        !           681: ?ad <n>,2
        !           682: ?dd n,0,<word>,<dw>,<i>,<s>,<PLM>
        !           683: endm
        !           684: staticD macro n,i,s
        !           685: ?ad <n>,4
        !           686: ?dd n,0,<dword>,<dd>,<i>,<s>,<PLM>
        !           687: endm
        !           688: staticQ macro n,i,s
        !           689: ?ad <n>,8
        !           690: ?dd n,0,<qword>,<dq>,<i>,<s>,<PLM>
        !           691: endm
        !           692: staticT macro n,i,s
        !           693: ?ad <n>,10
        !           694: ?dd n,0,<tbyte>,<dt>,<i>,<s>,<PLM>
        !           695: endm
        !           696: if sizec
        !           697: staticCP macro n,i,s
        !           698: staticD n,<i>,<s>
        !           699: endm
        !           700: else
        !           701: staticCP macro n,i,s
        !           702: staticW n,<i>,<s>
        !           703: endm
        !           704: endif
        !           705: if sized
        !           706: staticDP macro n,i,s
        !           707: staticD n,<i>,<s>
        !           708: endm
        !           709: else
        !           710: staticDP macro n,i,s
        !           711: staticW n,<i>,<s>
        !           712: endm
        !           713: endif
        !           714: endif
        !           715: ?dd macro n,p,t,d,i,s,c
        !           716: ?gcc ?dd2,%?PLM,<c>
        !           717: ife ?dd2
        !           718: n label t
        !           719: ?dd1 _&n,p,<d>,<i>,<s>
        !           720: else
        !           721: ?dd1 n,p,<d>,<i>,<s>
        !           722: endif
        !           723: endm
        !           724: ?dd1 macro n,p,d,i,s
        !           725: if p
        !           726: public n
        !           727: endif
        !           728: ifb <s>
        !           729: n d i
        !           730: else
        !           731: ifb <i>
        !           732: n d s dup (?)
        !           733: else
        !           734: n d s dup (i)
        !           735: endif
        !           736: endif
        !           737: endm
        !           738: ifndef ?NOEXTERN
        !           739: .xcref
        !           740: .xcref ?ex1,?ex2,externB,externW,externD,externQ,externT
        !           741: .xcref externNP,externFP,externP,externCP,externDP,externA
        !           742: .cref
        !           743: ?ex2 = 0
        !           744: externA macro n,c
        !           745: ?ex1 <n>,40h,<abs>,<c>,<>
        !           746: endm
        !           747: externB macro n,c
        !           748: ?ex1 <n>,1,<byte>,<c>,<>
        !           749: endm
        !           750: externW macro n,c
        !           751: ?ex1 <n>,2,<word>,<c>,<>
        !           752: endm
        !           753: externD macro n,c
        !           754: ?ex1 <n>,4,<dword>,<c>,<>
        !           755: endm
        !           756: externQ macro n,c
        !           757: ?ex1 <n>,8,<qword>,<c>,<>
        !           758: endm
        !           759: externT macro n,c
        !           760: ?ex1 <n>,10,<tbyte>,<c>,<>
        !           761: endm
        !           762: externNP macro n,c
        !           763: ?ex1 <n>,2,<near>,<c>,<cc>
        !           764: endm
        !           765: externFP macro n,c
        !           766: ?ex1 <n>,4,<far>,<c>,<cc>
        !           767: endm
        !           768: if sizec
        !           769: externP macro n,c
        !           770: ?ex1 <n>,4,<far>,<c>,<cc>
        !           771: endm
        !           772: else
        !           773: externP macro n,c
        !           774: ?ex1 <n>,2,<near>,<c>,<cc>
        !           775: endm
        !           776: endif
        !           777: if sizec
        !           778: externCP macro n,c
        !           779: ?ex1 <n>,4,<dword>,<c>,<>
        !           780: endm
        !           781: else
        !           782: externCP macro n,c
        !           783: ?ex1 <n>,2,<word>,<c>,<>
        !           784: endm
        !           785: endif
        !           786: if sized
        !           787: externDP macro n,c
        !           788: ?ex1 <n>,4,<dword>,<c>,<>
        !           789: endm
        !           790: else
        !           791: externDP macro n,c
        !           792: ?ex1 <n>,2,<word>,<c>,<>
        !           793: endm
        !           794: endif
        !           795: ?ex1 macro n,s,d,c,scv
        !           796: ?gcc ?ex2,%?PLM,<c>
        !           797: irp x,<n>
        !           798: .xcref
        !           799: .xcref ?t_&&x
        !           800: .cref
        !           801: ?t_&&x=s
        !           802: ife ?ex2
        !           803: extrn _&&x:&d
        !           804: x equ _&&x
        !           805: else
        !           806: extrn x:&d
        !           807: endif
        !           808: ifidn <scv>,<cc>
        !           809: .xcref
        !           810: .xcref ?CC&&x
        !           811: .cref
        !           812: ?CC&&x=?ex2
        !           813: endif
        !           814: endm
        !           815: endm
        !           816: endif
        !           817: ifndef ?NOLABEL
        !           818: .xcref
        !           819: .xcref ?lb1,?lblpu,?lb2
        !           820: .xcref labelB,labelW,labelD,labelQ,labelT
        !           821: .xcref labelNP,labelFP,labelP,labelCP,labelDP
        !           822: .cref
        !           823: ?lblpu = 0
        !           824: ?lb2 = 0
        !           825: labelB macro n,c
        !           826: ?lb1 <n>,1,<byte>,<c>
        !           827: endm
        !           828: labelW macro n,c
        !           829: ?lb1 <n>,2,<word>,<c>
        !           830: endm
        !           831: labelD macro n,c
        !           832: ?lb1 <n>,4,<dword>,<c>
        !           833: endm
        !           834: labelQ macro n,c
        !           835: ?lb1 <n>,8,<qword>,<c>
        !           836: endm
        !           837: labelT macro n,c
        !           838: ?lb1 <n>,10,<tbyte>,<c>
        !           839: endm
        !           840: labelNP macro n,c
        !           841: ?lb1 <n>,2,<near>,<c>
        !           842: endm
        !           843: labelFP macro n,c
        !           844: ?lb1 <n>,4,<far>,<c>
        !           845: endm
        !           846: if sizec
        !           847: labelP macro n,c
        !           848: ?lb1 <n>,4,<far>,<c>
        !           849: endm
        !           850: else
        !           851: labelP macro n,c
        !           852: ?lb1 <n>,2,<near>,<c>
        !           853: endm
        !           854: endif
        !           855: if sizec
        !           856: labelCP macro n,c
        !           857: ?lb1 <n>,4,<dword>,<c>
        !           858: endm
        !           859: else
        !           860: labelCP macro n,c
        !           861: ?lb1 <n>,2,<word>,<c>
        !           862: endm
        !           863: endif
        !           864: if sized
        !           865: labelDP macro n,c
        !           866: ?lb1 <n>,4,<dword>,<c>
        !           867: endm
        !           868: else
        !           869: labelDP macro n,c
        !           870: ?lb1 <n>,2,<word>,<c>
        !           871: endm
        !           872: endif
        !           873: ?lb1 macro n,s,d,c
        !           874: ?gcc ?lb2,%?PLM,<c>
        !           875: ?lblpu=0
        !           876: irp x,<n>
        !           877: ifidn <x>,<PUBLIC>
        !           878: ?lblpu=1
        !           879: else
        !           880: .xcref
        !           881: .xcref ?t_&&x
        !           882: .cref
        !           883: ?t_&&x=s
        !           884: ife ?lb2
        !           885: if ?lblpu
        !           886: public _&&x
        !           887: endif
        !           888: _&&x label &d
        !           889: x equ _&&x
        !           890: else
        !           891: if ?lblpu
        !           892: public x
        !           893: endif
        !           894: x label &d
        !           895: endif
        !           896: endif
        !           897: endm
        !           898: endm
        !           899: endif
        !           900: ifndef ?NODEF
        !           901: .xcref
        !           902: .xcref defB,defW,defD,defQ,defT,defCP,defDP
        !           903: .cref
        !           904: defB macro n
        !           905: ?ad <n>,1
        !           906: endm
        !           907: defW macro n
        !           908: ?ad <n>,2
        !           909: endm
        !           910: defD macro n
        !           911: ?ad <n>,4
        !           912: endm
        !           913: defQ macro n
        !           914: ?ad <n>,8
        !           915: endm
        !           916: defT macro n
        !           917: ?ad <n>,10
        !           918: endm
        !           919: if sizec
        !           920: defCP macro n
        !           921: defD <n>
        !           922: endm
        !           923: else
        !           924: defCP macro n
        !           925: defW <n>
        !           926: endm
        !           927: endif
        !           928: if sized
        !           929: defDP macro n
        !           930: defD <n>
        !           931: endm
        !           932: else
        !           933: defDP macro n
        !           934: defW <n>
        !           935: endm
        !           936: endif
        !           937: endif
        !           938: ?ad macro n,s
        !           939: irp x,<n>
        !           940: .xcref
        !           941: .xcref ?t_&&x
        !           942: .cref
        !           943: ?t_&&x=s
        !           944: endm
        !           945: endm
        !           946: ifndef ?NOPTR
        !           947: .xcref
        !           948: .xcref regPtr,farPtr
        !           949: .cref
        !           950: regPtr macro n,s,o
        !           951: farPtr n,s,o
        !           952: endm
        !           953: farPtr macro n,s,o
        !           954: .xcref
        !           955: .xcref ?t_&n
        !           956: .cref
        !           957: n &macro
        !           958:        push    s
        !           959:        push    o
        !           960: &endm
        !           961: ?t_&n=80h
        !           962: endm
        !           963: endif
        !           964: arg macro a
        !           965: irp x,<a>
        !           966: ?argc=?argc+1
        !           967: ?atal <x>,%?argc
        !           968: endm
        !           969: endm
        !           970: ?atal macro n,i
        !           971: .xcref
        !           972: .xcref ?ali&i
        !           973: .cref
        !           974: ?ali&i &macro
        !           975: ?ap <n>
        !           976: &endm
        !           977: endm
        !           978: ?ap macro n
        !           979: ?argl=?argl+2
        !           980: ifdef ?t_&n
        !           981: ife ?t_&n-1
        !           982:        push    word ptr (n)
        !           983: exitm
        !           984: endif
        !           985: ife ?t_&n-2
        !           986:        push    n
        !           987: exitm
        !           988: endif
        !           989: ife ?t_&n-4
        !           990: if ?bigreg
        !           991: ?sps
        !           992: .386p
        !           993:        push    dword ptr (n)
        !           994: ?rps
        !           995: else
        !           996:        push    word ptr (n)[2]
        !           997:        push    word ptr (n)
        !           998: endif
        !           999: ?argl=?argl+2
        !          1000: exitm
        !          1001: endif
        !          1002: ife ?t_&n-8
        !          1003: if ?bigreg
        !          1004: ?sps
        !          1005: .386p
        !          1006:        push    dword ptr (n)[4]
        !          1007:        push    dword ptr (n)
        !          1008: ?rps
        !          1009: else
        !          1010:        push    word ptr (n)[6]
        !          1011:        push    word ptr (n)[4]
        !          1012:        push    word ptr (n)[2]
        !          1013:        push    word ptr (n)
        !          1014: endif
        !          1015: ?argl=?argl+6
        !          1016: exitm
        !          1017: endif
        !          1018: if ?t_&n and 80h
        !          1019: n
        !          1020: ?argl=?argl+2
        !          1021: exitm
        !          1022: endif
        !          1023: ife ?t_&n
        !          1024:        push    word ptr (n)
        !          1025: exitm
        !          1026: endif
        !          1027: endif
        !          1028:        push    n
        !          1029: endm
        !          1030: cCall macro n,a,c
        !          1031: ifnb <a>
        !          1032: arg <a>
        !          1033: endif
        !          1034: mpush %?rsl
        !          1035: ifdef ?CC&n
        !          1036: ?cCall1=?CC&n
        !          1037: else
        !          1038: ?cCall1=?PLM
        !          1039: endif
        !          1040: ifnb <c>
        !          1041: ?gcc ?cCall1,%?cCall1,<c>
        !          1042: endif
        !          1043: ?argl=0
        !          1044: ife ?cCall1
        !          1045: ?acb=?argc
        !          1046: else
        !          1047: ?acb=1
        !          1048: endif
        !          1049: rept ?argc
        !          1050: uconcat <?ali>,%?acb
        !          1051: uconcat <purge>,,<?ali>,%?acb
        !          1052: ife ?cCall1
        !          1053: ?acb=?acb-1
        !          1054: else
        !          1055: ?acb=?acb+1
        !          1056: endif
        !          1057: endm
        !          1058:        call    n
        !          1059: if ((?cCall1 eq 0) and (?argl ne 0))
        !          1060:        add     sp,?argl
        !          1061: endif
        !          1062: mpop %?rsl
        !          1063: ?rsl=0
        !          1064: ?argc= 0
        !          1065: ?argl= 0
        !          1066: endm
        !          1067: cProc macro n,cf,a
        !          1068: if ?cpd
        !          1069: ?utpe
        !          1070: endif
        !          1071: ?cpd=1
        !          1072: ???=0
        !          1073: ?argc=0
        !          1074: ?ba=0
        !          1075: ?po=0
        !          1076: ?pu=0
        !          1077: ?ia=0
        !          1078: ?adj=4
        !          1079: ?rp=0
        !          1080: ?uf=0
        !          1081: ?wfp=?WIN
        !          1082: ?ff=0
        !          1083: ?pas=0
        !          1084: ?pcc=?PLM
        !          1085: ?no_bp2=?no_bp1
        !          1086: ?aprof2=?aprof1
        !          1087: ifnb <a>
        !          1088: ?ri ?pas,<a>
        !          1089: endif
        !          1090: ?pc=sizec
        !          1091: ?nd=?nodata1
        !          1092: ?ent=?enter1
        !          1093: ?nx=0
        !          1094: irp x,<cf>
        !          1095: ifdef ??_cproc_&&x
        !          1096: ??_cproc_&&x
        !          1097: else
        !          1098: ??error2 <e r r o r - unknown keyword x>
        !          1099: .err
        !          1100: endif
        !          1101: endm
        !          1102: if ?pcc
        !          1103: ?PLMPrevParm=0
        !          1104: .xcref
        !          1105: .xcref ?PLMParm0
        !          1106: .cref
        !          1107: ?PLMParm0 &macro
        !          1108: purge ?PLMParm0
        !          1109: &endm
        !          1110: endif
        !          1111: .xcref
        !          1112: .xcref ?CC&n
        !          1113: .cref
        !          1114: ?CC&n=?pcc
        !          1115: if (?nx eq 1) and (?nd eq 0)
        !          1116: ?nx = 0
        !          1117: ??error2 <ATOMIC specified without NODATA - ATOMIC ignored>
        !          1118: endif
        !          1119: if ?ent
        !          1120: if ?wfp
        !          1121: ?ent = 0
        !          1122: ??error2 <ENTER specified without NONWIN - ENTER ignored>
        !          1123: endif
        !          1124: if ?uf
        !          1125: ?ent = 0
        !          1126: ??error2 <ENTER specified with user frame - ENTER ignored>
        !          1127: endif
        !          1128: if ?chkstk1
        !          1129: ?ent = 0
        !          1130: ??error2 <ENTER specified with stack checking - ENTER ignored>
        !          1131: endif
        !          1132: endif
        !          1133: if ?pc
        !          1134: if ?wfp
        !          1135: ife ?nx
        !          1136: ?ia=2
        !          1137: ?pas = ?pas and (not ?ds)
        !          1138: endif
        !          1139: endif
        !          1140: ?adj=?adj+2
        !          1141: else
        !          1142: ?wfp=0
        !          1143: endif
        !          1144: ?pas = ?pas and (not (?sp+?cs+?ss))
        !          1145: if ?bigreg
        !          1146: ?pas = ?pas and (not (?esp))
        !          1147: endif
        !          1148: if ?uf
        !          1149: ?pas = ?pas and (not (?bp+?si+?di))
        !          1150: if ?bigreg
        !          1151: ?pas = ?pas and (not (?ebp+?esi+?edi))
        !          1152: endif
        !          1153: endif
        !          1154: ife ?pcc
        !          1155: ?pg <_&n>,%?pu,%?pc,%?pas,%?wfp,<n>,%?pcc
        !          1156: else
        !          1157: ?pg <n>,%?pu,%?pc,%?pas,%?wfp,<n>,%?pcc
        !          1158: endif
        !          1159: endm
        !          1160: ?pg macro n,p,c,a,w,nnu,cc
        !          1161: .xcref
        !          1162: if ?uf
        !          1163: if ?nd
        !          1164: ??error2 <NODATA encountered in &n - user frame ignored>
        !          1165: ?uf=0
        !          1166: endif
        !          1167: endif
        !          1168: .xcref cBegin
        !          1169: cBegin &macro g
        !          1170: .xcref
        !          1171: if cc
        !          1172: uconcat <?PLMParm>,%?PLMPrevParm,%?po
        !          1173: endif
        !          1174: if ?rp
        !          1175: if ?uf
        !          1176: ??error2 <parmR encountered in &n - user frame ignored>
        !          1177: ?uf=0
        !          1178: endif
        !          1179: if ?ent
        !          1180: ??error2 <parmR encountered in &n - ENTER ignored>
        !          1181: ?ent=0
        !          1182: endif
        !          1183: endif
        !          1184: ?pg1 <n>,c,a,%?po,w,%?uf,%?nd,%?rp,cc,<nnu>,%???
        !          1185: ?cpd=0
        !          1186: ?argc=0
        !          1187: ?ba=1
        !          1188: ???=(???+1) and 0fffeh
        !          1189: if p
        !          1190: public n
        !          1191: endif
        !          1192: ife c
        !          1193: n proc near
        !          1194: else
        !          1195: n proc far
        !          1196: endif
        !          1197: ife cc
        !          1198: nnu equ n
        !          1199: endif
        !          1200: ?cbe = 0
        !          1201: ifnb <g>
        !          1202: ?pcbe <g>,<nnu>,<cBegin>
        !          1203: endif
        !          1204: if ?cbe eq 1
        !          1205: if ???+a+?rp
        !          1206: if2
        !          1207: ??_out <cBegin - possibly invalid use of nogen>
        !          1208: endif
        !          1209: endif
        !          1210: else
        !          1211: if ?uf
        !          1212: ?mf c,%???,%?po
        !          1213: mpush a
        !          1214: else
        !          1215: ife ?cbe
        !          1216: if w
        !          1217: ife ?nd
        !          1218: ife ?DOS5
        !          1219:        mov     ax,ds
        !          1220:        nop
        !          1221: else
        !          1222:        mov     ax,DataBASE
        !          1223: endif
        !          1224: endif
        !          1225: if ?aprof2
        !          1226:        call    AProfCall
        !          1227: endif
        !          1228: ife ?nx
        !          1229: ife ?DOS5
        !          1230:        inc     bp
        !          1231: endif
        !          1232:        push    bp
        !          1233:        mov     bp,sp
        !          1234:        push    ds
        !          1235: else
        !          1236: if ?ff+???+?po+?rp
        !          1237:        push    bp
        !          1238:        mov     bp,sp
        !          1239: endif
        !          1240: endif
        !          1241: ife ?nd
        !          1242:        mov     ds,ax
        !          1243: endif
        !          1244: else
        !          1245: if ?aprof2
        !          1246:        call    AProfCall
        !          1247: endif
        !          1248: if ?ff+???+?po+?rp
        !          1249: ife ?ent
        !          1250:        push    bp
        !          1251:        mov     bp,sp
        !          1252: endif
        !          1253: endif
        !          1254: endif
        !          1255: if ?rp
        !          1256: ?uf=0
        !          1257: rept ?rp
        !          1258: uconcat mpush,,?rp,%?uf
        !          1259: ?uf=?uf+1
        !          1260: endm
        !          1261: endif
        !          1262: ife ?ent
        !          1263: if ???
        !          1264: if ?chkstk1
        !          1265: ifdef ?CHKSTKPROC
        !          1266: ?CHKSTKPROC %???
        !          1267: else
        !          1268:        mov     ax,???
        !          1269: ife cc
        !          1270:        call    _chkstk
        !          1271: else
        !          1272:        call    chkstk
        !          1273: endif
        !          1274: endif
        !          1275: else
        !          1276:        sub     sp,???
        !          1277: endif
        !          1278: endif
        !          1279: else
        !          1280: if ???
        !          1281: enter ???,0
        !          1282: else
        !          1283: push bp
        !          1284: mov bp,sp
        !          1285: endif
        !          1286: endif
        !          1287: else
        !          1288: if ?aprof2
        !          1289:        call    AProfRet
        !          1290:        call    AProfCall
        !          1291: endif
        !          1292: if ?rp
        !          1293: ??error2 <cBegin - parmRs encountered with partial frame>
        !          1294: else
        !          1295: if ???
        !          1296:        lea     sp,[bp][-???-?ia]
        !          1297: endif
        !          1298: endif
        !          1299: endif
        !          1300: mpush a
        !          1301: endif
        !          1302: ifdef ?PROFILE
        !          1303: if c
        !          1304:        call    StartNMeas
        !          1305: endif
        !          1306: endif
        !          1307: endif
        !          1308: .cref
        !          1309: purge cBegin
        !          1310: &endm
        !          1311: .xcref ?utpe
        !          1312: ?utpe &macro
        !          1313: ??error2 <unterminated procedure definition: "&n">
        !          1314: &endm
        !          1315: .cref
        !          1316: endm
        !          1317: ?pg1 macro n,c,a,o,w,f,d,r,cc,nnu,lc
        !          1318: .xcref
        !          1319: .xcref cEnd
        !          1320: parm_bytes_&nnu = o
        !          1321: cEnd &macro g
        !          1322: .xcref
        !          1323: ?ba=0
        !          1324: ?cbe = 0
        !          1325: ifnb <g>
        !          1326: ?pcbe <g>,<nnu>,<cEnd>
        !          1327: endif
        !          1328: if ?cbe eq 1
        !          1329: if a+r+lc
        !          1330: if2
        !          1331: ??_out <cEnd - possibly invalid use of nogen>
        !          1332: endif
        !          1333: endif
        !          1334: else
        !          1335: ifdef ?PROFILE
        !          1336: if c
        !          1337: call StopNMeas
        !          1338: endif
        !          1339: endif
        !          1340: mpop a
        !          1341: if f
        !          1342:        db      0c3h
        !          1343: else
        !          1344: if w
        !          1345: ife ?nx
        !          1346: if (?TF eq 0) or (???+r)
        !          1347:        lea     sp,-2[bp]
        !          1348: endif
        !          1349:        pop     ds
        !          1350:        pop     bp
        !          1351: ife ?DOS5
        !          1352:        dec     bp
        !          1353: endif
        !          1354: else
        !          1355: if (?TF eq 0) or (???+r)
        !          1356:        if      ???+?po+r
        !          1357: if ?ent
        !          1358: leave
        !          1359: else
        !          1360: mov sp,bp
        !          1361: pop bp
        !          1362: endif
        !          1363: else
        !          1364: mov sp,bp
        !          1365: endif
        !          1366: else
        !          1367: if ???+?po+r
        !          1368: pop bp
        !          1369: endif
        !          1370: endif
        !          1371: endif
        !          1372: else
        !          1373: if ?ff+???+?po+r
        !          1374: if (?TF eq 0) or (???+r)
        !          1375:        if      ?ent
        !          1376: leave
        !          1377: else
        !          1378: mov sp,bp
        !          1379: pop bp
        !          1380: endif
        !          1381: else
        !          1382: pop bp
        !          1383: endif
        !          1384: endif
        !          1385: endif
        !          1386: if ?aprof2
        !          1387:        call    AProfRet
        !          1388: endif
        !          1389: if ?cbe ne 4
        !          1390: ife cc
        !          1391:        ret
        !          1392: else
        !          1393:        ret     o
        !          1394: endif
        !          1395: endif
        !          1396: endif
        !          1397: endif
        !          1398: if ?cbe ne 4
        !          1399: n endp
        !          1400: .cref
        !          1401: purge cEnd
        !          1402: else
        !          1403: .cref
        !          1404: endif
        !          1405: &endm
        !          1406: .cref
        !          1407: endm
        !          1408: .xcref
        !          1409: .xcref cleanframe
        !          1410: cleanframe macro
        !          1411: cEnd <??cleanframe??>
        !          1412: endm
        !          1413: .cref
        !          1414: .xcref
        !          1415: .xcref ??_cproc_FAR,??_cproc_NEAR,??_cproc_PUBLIC,??_cproc_SMALL
        !          1416: .xcref ??_cproc_DATA,??_cproc_NODATA,??_cproc_ATOMIC,??_cproc_C
        !          1417: .xcref ??_cproc_PLM,??_cproc_PASCAL,??_cproc_WIN,??_cproc_NONWIN
        !          1418: .xcref ??_cproc_NO_BP,??_cproc_BP,??_cproc_ENTER,??_cproc_NOENTER
        !          1419: .xcref ??_cproc_NO_ATTRPROF,??_cproc_ATTRPROF
        !          1420: .xcref ??_cproc_far,??_cproc_near,??_cproc_public,??_cproc_small
        !          1421: .xcref ??_cproc_data,??_cproc_nodata,??_cproc_atomic,??_cproc_c
        !          1422: .xcref ??_cproc_plm,??_cproc_pascal,??_cproc_win,??_cproc_nonwin
        !          1423: .xcref ??_cproc_no_bp,??_cproc_bp,??_cproc_enter,??_cproc_noenter
        !          1424: .xcref ??_cproc_no_attrprof,??_cproc_attrprof
        !          1425: .cref
        !          1426: ??_cproc_FAR macro
        !          1427: ?pc=1
        !          1428: endm
        !          1429: ??_cproc_NEAR macro
        !          1430: ?pc=0
        !          1431: endm
        !          1432: ??_cproc_PUBLIC macro
        !          1433: ?pu=1
        !          1434: endm
        !          1435: ??_cproc_SMALL macro
        !          1436: ?uf=1
        !          1437: endm
        !          1438: ??_cproc_DATA macro
        !          1439: ?nd=0
        !          1440: endm
        !          1441: ??_cproc_NODATA macro
        !          1442: ?nd=1
        !          1443: endm
        !          1444: ??_cproc_ENTER macro
        !          1445: ?ent=1
        !          1446: endm
        !          1447: ??_cproc_NOENTER macro
        !          1448: ?ent=0
        !          1449: endm
        !          1450: ??_cproc_ATOMIC macro
        !          1451: ?nx=1
        !          1452: endm
        !          1453: ??_cproc_C macro
        !          1454: ?pcc=0
        !          1455: endm
        !          1456: ??_cproc_PLM macro
        !          1457: ?pcc=1
        !          1458: endm
        !          1459: ??_cproc_PASCAL macro
        !          1460: ?pcc=1
        !          1461: endm
        !          1462: ??_cproc_WIN macro
        !          1463: ?wfp=1
        !          1464: endm
        !          1465: ??_cproc_NONWIN macro
        !          1466: ?wfp=0
        !          1467: endm
        !          1468: ??_cproc_NO_BP macro
        !          1469: ?no_bp2=1
        !          1470: endm
        !          1471: ??_cproc_BP macro
        !          1472: ?no_bp2=0
        !          1473: endm
        !          1474: ??_cproc_NO_ATTRPROF macro
        !          1475: ?aprof2=0
        !          1476: endm
        !          1477: ??_cproc_ATTRPROF macro
        !          1478: ?aprof2=1
        !          1479: endm
        !          1480: ??_cproc_far macro
        !          1481: ?pc=1
        !          1482: endm
        !          1483: ??_cproc_near macro
        !          1484: ?pc=0
        !          1485: endm
        !          1486: ??_cproc_public macro
        !          1487: ?pu=1
        !          1488: endm
        !          1489: ??_cproc_small macro
        !          1490: ?uf=1
        !          1491: endm
        !          1492: ??_cproc_data macro
        !          1493: ?nd=0
        !          1494: endm
        !          1495: ??_cproc_nodata macro
        !          1496: ?nd=1
        !          1497: endm
        !          1498: ??_cproc_enter macro
        !          1499: ?ent=1
        !          1500: endm
        !          1501: ??_cproc_noenter macro
        !          1502: ?ent=0
        !          1503: endm
        !          1504: ??_cproc_atomic macro
        !          1505: ?nx=1
        !          1506: endm
        !          1507: ??_cproc_c macro
        !          1508: ?pcc=0
        !          1509: endm
        !          1510: ??_cproc_plm macro
        !          1511: ?pcc=1
        !          1512: endm
        !          1513: ??_cproc_pascal macro
        !          1514: ?pcc=1
        !          1515: endm
        !          1516: ??_cproc_win macro
        !          1517: ?wfp=1
        !          1518: endm
        !          1519: ??_cproc_nonwin macro
        !          1520: ?wfp=0
        !          1521: endm
        !          1522: ??_cproc_no_bp macro
        !          1523: ?no_bp2=1
        !          1524: endm
        !          1525: ??_cproc_bp macro
        !          1526: ?no_bp2=0
        !          1527: endm
        !          1528: ??_cproc_no_attrprof macro
        !          1529: ?aprof2=0
        !          1530: endm
        !          1531: ??_cproc_attrprof macro
        !          1532: ?aprof2=1
        !          1533: endm
        !          1534: ?pcbe macro g,nnu,mt
        !          1535: ifidn <g>,<NOGEN>
        !          1536: ?cbe = 1
        !          1537: else
        !          1538: ifidn <g>,<nogen>
        !          1539: ?cbe = 1
        !          1540: else
        !          1541: ifidn <mt>,<cBegin>
        !          1542: ifidn <g>,<PARTIAL>
        !          1543: ?cbe = 2
        !          1544: else
        !          1545: ifidn <g>,<partial>
        !          1546: ?cbe = 2
        !          1547: else
        !          1548: ifdif <g>,<nnu>
        !          1549: ??error2 <mt - unknown keyword g>
        !          1550: endif
        !          1551: endif
        !          1552: endif
        !          1553: else
        !          1554: ifidn <g>,<??cleanframe??>
        !          1555: ?cbe = 4
        !          1556: else
        !          1557: ifdif <g>,<nnu>
        !          1558: ??error2 <mt - unknown keyword g>
        !          1559: endif
        !          1560: endif
        !          1561: endif
        !          1562: endif
        !          1563: endif
        !          1564: endm
        !          1565: assumes macro s,ln
        !          1566: ifndef ln&_assumes
        !          1567: assume s:ln
        !          1568: else
        !          1569: ln&_assumes s
        !          1570: endif
        !          1571: endm
        !          1572: createSeg macro n,ln,a,co,cl,grp,u
        !          1573: ifnb <u>
        !          1574: ifnb <cl>
        !          1575: n segment a co u '&cl'
        !          1576: else
        !          1577: n segment a co u
        !          1578: endif
        !          1579: else
        !          1580: ifdef ?u32
        !          1581: if ?u32
        !          1582: ?sps
        !          1583: .386p
        !          1584: ifnb <cl>
        !          1585: n segment a co use32 '&cl'
        !          1586: else
        !          1587: n segment a co use32
        !          1588: endif
        !          1589: ?rps
        !          1590: else
        !          1591: ifnb <cl>
        !          1592: n segment a co use16 '&cl'
        !          1593: else
        !          1594: n segment a co use16
        !          1595: endif
        !          1596: endif
        !          1597: else
        !          1598: ifnb <cl>
        !          1599: n segment a co '&cl'
        !          1600: else
        !          1601: n segment a co
        !          1602: endif
        !          1603: endif
        !          1604: endif
        !          1605: n ends
        !          1606: ifnb <grp>
        !          1607: addseg grp,n
        !          1608: else
        !          1609: ln&OFFSET equ offset n:
        !          1610: ln&BASE equ n
        !          1611: ?cs3 <ln>,<n>
        !          1612: endif
        !          1613: ?cs1 <ln>,<n>
        !          1614: endm
        !          1615: addseg macro grp,seg
        !          1616: .xcref
        !          1617: .xcref grp&_def
        !          1618: .cref
        !          1619: ifndef grp&_def
        !          1620: grp&_def=0
        !          1621: endif
        !          1622: if grp&_def ne ASMpass
        !          1623: .xcref
        !          1624: .xcref grp&_add
        !          1625: .cref
        !          1626: grp&_add &macro s
        !          1627: grp&_in <seg>,s
        !          1628: &endm
        !          1629: .xcref
        !          1630: .xcref grp&_in
        !          1631: .cref
        !          1632: grp&_in &macro sl,s
        !          1633: ifb <s>
        !          1634: grp group sl
        !          1635: else
        !          1636: grp&_add &macro ns
        !          1637: grp&_in <sl,s>,ns
        !          1638: &endm
        !          1639: endif
        !          1640: &endm
        !          1641: grp&_def=ASMpass
        !          1642: else
        !          1643: grp&_add seg
        !          1644: endif
        !          1645: endm
        !          1646: defgrp macro grp,ln
        !          1647: addseg grp
        !          1648: ifnb <ln>
        !          1649: irp x,<ln>
        !          1650: ?cs3 <&x>,<grp>
        !          1651: x&&OFFSET equ offset grp:
        !          1652: x&&BASE equ grp
        !          1653: endm
        !          1654: endif
        !          1655: endm
        !          1656: ?cs1 macro ln,n
        !          1657: .xcref
        !          1658: .xcref ln&_sbegin
        !          1659: .cref
        !          1660: ln&_sbegin &macro
        !          1661: .xcref
        !          1662: .xcref ?mf
        !          1663: .cref
        !          1664: ?curseg equ <&ln>
        !          1665: ?mf &&macro c,l,p
        !          1666: if c
        !          1667:        extrn   n&_FARFRAME:near
        !          1668:        call    n&_FARFRAME
        !          1669: else
        !          1670:        extrn   n&_NEARFRAME:near
        !          1671:        call    n&_NEARFRAME
        !          1672: endif
        !          1673:        db      l shr 1
        !          1674:        db      p shr 1
        !          1675: &&endm
        !          1676: ?cs2 <ln>,<n>
        !          1677: n segment
        !          1678: &endm
        !          1679: endm
        !          1680: ?cs2 macro ln,n
        !          1681: .xcref
        !          1682: .xcref sEnd
        !          1683: .cref
        !          1684: sEnd &macro
        !          1685: n ends
        !          1686: purge ?mf
        !          1687: purge sEnd
        !          1688: &endm
        !          1689: endm
        !          1690: ?cs3 macro ln,n
        !          1691: .xcref
        !          1692: .xcref ln&_assumes
        !          1693: .cref
        !          1694: ln&_assumes &macro s
        !          1695: assume s:&n
        !          1696: &endm
        !          1697: endm
        !          1698: .xcref
        !          1699: .xcref sBegin
        !          1700: .cref
        !          1701: sBegin macro ln
        !          1702: ln&_sbegin
        !          1703: endm
        !          1704: ife ?DF
        !          1705: createSeg _TEXT,Code,word,public,CODE
        !          1706: ife ?nodata1
        !          1707: createSeg _DATA,Data,word,public,DATA,DGROUP
        !          1708: defgrp DGROUP,Data
        !          1709: endif
        !          1710: if ?chkstk1
        !          1711: ifndef ?CHKSTKPROC
        !          1712: externp <chkstk>
        !          1713: endif
        !          1714: endif
        !          1715: endif
        !          1716: errnz macro x
        !          1717: if2
        !          1718: if x
        !          1719: errnz1 <x>,%(x)
        !          1720: endif
        !          1721: endif
        !          1722: endm
        !          1723: errnz1 macro x1,x2
        !          1724: = *errnz* x1 = x2
        !          1725: .err
        !          1726: endm
        !          1727: errn$ macro l,x
        !          1728: errnz <offset $ - offset l x>
        !          1729: endm
        !          1730: ifdef ?PROFILE
        !          1731: externFP <StartNMeas,StopNMeas>
        !          1732: endif
        !          1733: if ?aprof1
        !          1734: externFP <AProfCall,AProfRet>,<PLM>
        !          1735: endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.