cmacros.inc
资源名称:DOS系统的源代码.rar [点击查看]
上传用户:xiaoan1112
上传日期:2013-04-11
资源大小:19621k
文件大小:14k
源码类别:
操作系统开发
开发平台:
Visual C++
- comment $
- cmacros - assembly macros for interfacing to HHLs
- (C)Copyright Microsoft Corp. 1984, 1985, 1986
- $
- if1
- ASMpass=1
- else
- ASMpass=2
- endif
- outif MACRO name,defval,onmsg,offmsg
- ifndef name
- ifb <defval>
- name=0
- else
- name=defval
- endif
- else
- name=name
- endif
- if name
- name=1
- ifnb <onmsg>
- if1
- %out ! onmsg
- endif
- endif
- else
- ifnb <offmsg>
- if1
- %out ! offmsg
- endif
- endif
- endif
- endm
- ??error macro msg
- E r r o r ----- msg
- endm
- ifdef ?SMALL
- memS=1
- endif
- ifdef ?MEDIUM
- memM=1
- endif
- ifdef ?COMPACT
- memC=1
- endif
- ifdef ?LARGE
- memL=1
- endif
- ifdef ?HUGE
- memH=1
- endif
- if1
- %out cMacros Version 2.07 - 9/19/86
- %out Copyright (C) Microsoft Corp. 1984, 1985, 1986. All rights reserved.
- endif
- outif memS,0,<Small Model>
- outif memM,0,<Medium Model>
- outif memL,0,<Large Model>
- outif memC,0,<Compact Model>
- outif memH,0,<Huge Model>
- memMOD= memS + memM + memL + memC + memH
- if memMOD ne 1
- if memMOD eq 0
- memS= 1
- outif memS,0,<Small Model>
- else
- ??error <Must have only 1 memory model selected>
- endif
- endif
- sizeC= memM + memL + memH
- sizeD= memL + memC + (memH*2)
- outif ?DF,0,<No segments or groups will be defined>
- outif ?TF,0,<Epilog sequences assume valid SP>
- outif ?WIN,1,<Windows Support>
- outif ?PLM,1,<PLM calling convention>
- ifndef ?NODATA
- ?NODATA1=0
- else
- ?NODATA1=1
- if1
- %out ! NODATA module
- endif
- endif
- ifndef ?CHKSTK
- ?CHKSTK1=0
- else
- ?CHKSTK1=1
- ifdef ?CHKSTKPROC
- if1
- %out ! Private stack checking enabled
- endif
- else
- if1
- %out ! Stack checking enabled
- endif
- endif
- endif
- ifndef DOS5
- ?DOS5=0
- else
- ?DOS5=1
- if1
- %out ! DOS5 module
- endif
- endif
- ifdef ?PROFILE
- if1
- %out ! Native Profiling Enabled
- endif
- endif
- .XCREF
- .XCREF ?N,?AX,?AH,?AL,?BX,?BH
- .XCREF ?BL,?CX,?CH,?CL,?DX,?DH
- .XCREF ?DL,?SI,?DI,?ES,?DS,?BP
- .XCREF ?SP,?SS,?CS
- .XCREF ?RSL,?CPD,?argl,?argc,?BA
- .XCREF ?ACB,???,?PO
- .XCREF ?PAS,?PC
- .XCREF Uconcat,mPush,mPop
- .XCREF ?RI,?pp,?pp1,?al1
- .XCREF ?aD,?AP,?Atal,?dd,?dd1
- .XCREF ?pg,?pg1,?aloc,?cs1,?cs2
- .XCREF ?DF,?TF,?FF,?PLM,?WIN,?IA,?PU,?ADJ
- .XCREF ?UF,?RP,?NX,?ND,?NODATA1,?CHKSTK1,?DOS5
- .XCREF ?WFP
- ?RSL = 0
- ?CPD = 0
- ?ArgL = 0
- ?ArgC = 0
- ?BA = 0
- ?ACB = 0
- ??? = 0
- ?PO = 0
- ?PAS = 0
- ?PC = 0
- ?IA = 0
- ?PU = 0
- ?ADJ = 0
- ?RP = 0
- ?UF = 0
- ?ND = 0
- ?NX = 0
- ?WFP = 0
- ?FF = 0
- ?N = 0000000000000000B
- ?AX = 0000000000000011B
- ?AH = 0000000000000001B
- ?AL = 0000000000000010B
- ?BX = 0000000000001100B
- ?BH = 0000000000000100B
- ?BL = 0000000000001000B
- ?CX = 0000000000110000B
- ?CH = 0000000000010000B
- ?CL = 0000000000100000B
- ?DX = 0000000011000000B
- ?DH = 0000000001000000B
- ?DL = 0000000010000000B
- ?SI = 0000000100000000B
- ?DI = 0000001000000000B
- ?ES = 0000010000000000B
- ?DS = 0000100000000000B
- ?BP = 0001000000000000B
- ?SP = 0010000000000000B
- ?SS = 0100000000000000B
- ?CS = 1000000000000000B
- .CREF
- uconcat macro a,b,c,d,e,f
- a&b c&d e&f
- endm
- mpush macro r
- irp x,<ax,bx,cx,dx,si,di,es,ds,bp,sp,ss,cs>
- if r AND ?&&x
- push x
- endif
- endm
- endm
- mpop macro r
- irp x,<cs,ss,sp,bp,ds,es,di,si,dx,cx,bx,ax>
- if r AND ?&&x
- pop x
- endif
- endm
- endm
- save macro r
- ?RSL=0
- ?RI ?RSL,<r>
- endm
- ?RI macro n,r
- irp x,<r>
- ifdef ?&&x
- n=n OR ?&&x
- endif
- endm
- endm
- parmB macro n
- ?pp <n>,<byte>,2,1
- endm
- parmW macro n
- ?pp <n>,<word>,2,2
- endm
- parmD macro n
- ife ?PLM
- irp x,<n>
- ?pp <&&x>,<DWORD>,0,4
- ?pp <Off_&&x>,<WORD>,2,2
- ?pp <Seg_&&x>,<WORD>,2,2
- endm
- else
- irp x,<n>
- ?pp <Seg_&&x>,<WORD>,2,2
- ?pp <Off_&&x>,<WORD>,2,2
- ?pp <&&x>,<DWORD>,0,4
- endm
- endif
- endm
- parmQ macro n
- ?pp <n>,<QWORD>,8,8
- endm
- parmT macro n
- ?pp <n>,<TBYTE>,10,10
- endm
- if sizeC
- parmCP macro n
- parmD <n>
- endm
- else
- parmCP macro n
- parmW <n>
- endm
- endif
- if sizeD
- parmDP macro n
- parmD <n>
- endm
- else
- parmDP macro n
- parmW <n>
- endm
- endif
- ?pp macro n,t,l,s
- if ?CPD
- .xcref
- irp x,<n>
- .xcref ?T&&x
- ?T&&x=s
- ife ?PLM
- ?pp1 x,<t>,,,%(?PO+?adj)
- ?PO=?PO+l
- else
- ?PO=?PO+l
- ?pp1 x,<t>,%?PO,%?adj
- endif
- endm
- .cref
- else
- ??error <Parm(s) "&n" declared outside proc def>
- endif
- endm
- ?pp1 macro n,t,o,a,b
- ife ?PLM
- n equ t ptr [bp+b]
- else
- n equ t ptr [bp+a+?PO-o]
- endif
- endm
- ifndef ?NOPARMR
- .XCREF
- .XCREF ?pr
- .CREF
- parmR macro n,r,r2
- ?pr n,r,r2,%?RP,%(?IA+2)
- endm
- ?pr macro n,r,r2,i,o
- .xcref
- ifnb <r2>
- parmR SEG_&n,r
- parmR OFF_&n,r2
- n equ dword ptr [bp-o-2]
- .xcref ?T&n
- ?T&n=4
- else
- .xcref ?RP&i
- ?RP&i=0
- ifdef ?&r
- ?RP&i=?&r
- endif
- if ??? OR (?CPD EQ 0) OR (?RP&i EQ 0)
- ??error <invalid parmR encountered: &n,&r>
- exitm
- endif
- n equ word ptr [bp-o]
- ?T&n=2
- irp x,<bh,ch,dh,bl,cl,dl,ah,al>
- if ?&&x EQ ?&r
- n equ byte ptr [bp-o]
- ?T&n=1
- exitm
- endif
- endm
- ?IA=?IA+2
- ?RP=?RP+1
- endif
- .cref
- endm
- endif
- localB macro n
- ?aLoc <n>,<BYTE ptr>,1,1,0
- endm
- localW macro n
- ?aLoc <n>,<WORD PTR>,2,2,1
- endm
- localD macro n
- irp x,<n>
- ?aLoc <Seg_&&x>,<WORD PTR>,2,2,1
- ?aLoc <Off_&&x>,<WORD PTR>,2,2,1
- ?aLoc <&&x>,<DWORD PTR>,0,4,1
- endm
- endm
- localQ macro n
- ?aLoc <n>,<QWORD PTR>,8,8,1
- endm
- localT macro n
- ?aLoc <n>,<TBYTE PTR>,10,10,1
- endm
- if sizeC
- localCP macro n
- localD <n>
- endm
- else
- localCP macro n
- localW <n>
- endm
- endif
- if sizeD
- localDP macro n
- localD <n>
- endm
- else
- localDP macro n
- localW <n>
- endm
- endif
- localV macro n,a
- ?aLoc <n>,,%(a),0,1
- endm
- ?aLoc macro n,t,l,s,a
- if ?CPD
- .xcref
- irp x,<n>
- ???=???+l
- if a
- ???=((??? + 1) AND 0FFFEH)
- endif
- ?aL1 x,<t>,%(???+?IA)
- .xcref ?T&&x
- ?T&&x=s
- endm
- .cref
- else
- ??error <Locals "&n" declared outside procedure def>
- endif
- endm
- ?aL1 macro n,t,o
- n equ t [bp-o]
- endm
- ifndef ?NOGLOBAL
- globalB macro n,i,s
- ?aD <n>,1
- ?dd n,1,<BYTE>,<DB>,<i>,<s>
- endm
- globalW macro n,i,s
- ?aD <n>,2
- ?dd n,1,<WORD>,<DW>,<i>,<s>
- endm
- globalD macro n,i,s
- ?aD <n>,4
- ?dd n,1,<DWORD>,<DD>,<i>,<s>
- endm
- globalQ macro n,i,s
- ?aD <n>,8
- ?dd n,1,<QWORD>,<DQ>,<i>,<s>
- endm
- globalT macro n,i,s
- ?aD <n>,10
- ?dd n,1,<TBYTE>,<DT>,<i>,<s>
- endm
- if sizeC
- globalCP macro n,i,s
- globalD n,<i>,<s>
- endm
- else
- globalCP macro n,i,s
- globalW n,<i>,<s>
- endm
- endif
- if sizeD
- globalDP macro n,i,s
- globalD n,<i>,<s>
- endm
- else
- globalDP macro n,i,s
- globalW n,<i>,<s>
- endm
- endif
- endif
- ifndef ?NOSTATIC
- staticB macro n,i,s
- ?aD <n>,1
- ?dd n,0,<BYTE>,<DB>,<i>,<s>
- endm
- staticW macro n,i,s
- ?aD <n>,2
- ?dd n,0,<WORD>,<DW>,<i>,<s>
- endm
- staticD macro n,i,s
- ?aD <n>,4
- ?dd n,0,<DWORD>,<DD>,<i>,<s>
- endm
- staticQ macro n,i,s
- ?aD <n>,8
- ?dd n,0,<QWORD>,<DQ>,<i>,<s>
- endm
- staticT macro n,i,s
- ?aD <n>,10
- ?dd n,0,<TBYTE>,<DT>,<i>,<s>
- endm
- if sizeC
- staticCP macro n,i,s
- staticD n,<i>,<s>
- endm
- else
- staticCP macro n,i,s
- staticW n,<i>,<s>
- endm
- endif
- if sizeD
- staticDP macro n,i,s
- staticD n,<i>,<s>
- endm
- else
- staticDP macro n,i,s
- staticW n,<i>,<s>
- endm
- endif
- endif
- ?dd macro n,p,t,d,i,s
- ife ?PLM
- n label t
- ?dd1 _&n,p,<d>,<i>,<s>
- else
- ?dd1 n,p,<d>,<i>,<s>
- endif
- endm
- ?dd1 macro n,p,d,i,s
- if p
- PUBLIC n
- endif
- ifb <s>
- n d i
- else
- ifb <i>
- n d s DUP (?)
- else
- n d s DUP (i)
- endif
- endif
- endm
- ifndef ?NOEXTERN
- .XCREF
- .XCREF ?ex1
- .CREF
- externB macro n
- ?ex1 <n>,1,<BYTE>
- endm
- externW macro n
- ?ex1 <n>,2,<WORD>
- endm
- externD macro n
- ?ex1 <n>,4,<DWORD>
- endm
- externQ macro n
- ?ex1 <n>,8,<QWORD>
- endm
- externT macro n
- ?ex1 <n>,10,<TBYTE>
- endm
- externNP macro n
- ?ex1 <n>,2,<NEAR>
- endm
- externFP macro n
- ?ex1 <n>,4,<FAR>
- endm
- if sizeC
- externP macro n
- ?ex1 <n>,4,<FAR>
- endm
- else
- externP macro n
- ?ex1 <n>,2,<NEAR>
- endm
- endif
- if sizeC
- externCP macro n
- ?ex1 <n>,4,<DWORD>
- endm
- else
- externCP macro n
- ?ex1 <n>,2,<WORD>
- endm
- endif
- if sizeD
- externDP macro n
- ?ex1 <n>,4,<DWORD>
- endm
- else
- externDP macro n
- ?ex1 <n>,2,<WORD>
- endm
- endif
- ?ex1 macro n,s,d
- irp x,<n>
- .xcref
- .xcref ?T&&x
- .cref
- ?T&&x=s
- ife ?PLM
- extrn _&&x:&d
- x equ _&&x
- else
- extrn x:&d
- endif
- endm
- endm
- endif
- ifndef ?NOLABEL
- .XCREF
- ?lblpu = 0
- .XCREF ?lb1,?lblpu
- .CREF
- labelB macro n
- ?lb1 <n>,1,<BYTE>
- endm
- labelW macro n
- ?lb1 <n>,2,<WORD>
- endm
- labelD macro n
- ?lb1 <n>,4,<DWORD>
- endm
- labelQ macro n
- ?lb1 <n>,8,<QWORD>
- endm
- labelT macro n
- ?lb1 <n>,10,<TBYTE>
- endm
- labelNP macro n
- ?lb1 <n>,2,<NEAR>
- endm
- labelFP macro n
- ?lb1 <n>,4,<FAR>
- endm
- if sizeC
- labelP macro n
- ?lb1 <n>,4,<FAR>
- endm
- else
- labelP macro n
- ?lb1 <n>,2,<NEAR>
- endm
- endif
- if sizeC
- labelCP macro n
- ?lb1 <n>,4,<DWORD>
- endm
- else
- labelCP macro n
- ?lb1 <n>,2,<WORD>
- endm
- endif
- if sizeD
- labelDP macro n
- ?lb1 <n>,4,<DWORD>
- endm
- else
- labelDP macro n
- ?lb1 <n>,2,<WORD>
- endm
- endif
- ?lb1 macro n,s,d
- ?lblpu=0
- irp x,<n>
- ifidn <x>,<PUBLIC>
- ?lblpu=1
- else
- .xcref
- .xcref ?T&&x
- .cref
- ?T&&x=s
- ife ?PLM
- if ?lblpu
- public _&&x
- endif
- _&&x label &d
- x equ _&&x
- else
- if ?lblpu
- public x
- endif
- x label &d
- endif
- endif
- endm
- endm
- endif
- ifndef ?NODEF
- defB macro n
- ?aD <n>,1
- endm
- defW macro n
- ?aD <n>,2
- endm
- defD macro n
- ?aD <n>,4
- endm
- defQ macro n
- ?aD <n>,8
- endm
- defT macro n
- ?aD <n>,10
- endm
- if sizeC
- defCP macro n
- defD <n>
- endm
- else
- defCP macro n
- defW <n>
- endm
- endif
- if sizeD
- defDP macro n
- defD <n>
- endm
- else
- defDP macro n
- defW <n>
- endm
- endif
- endif
- ?aD macro n,s
- irp x,<n>
- .xcref
- .xcref ?T&&x
- .cref
- ?T&&x=s
- endm
- endm
- ifndef ?NOPTR
- regPtr macro n,S,O
- farPtr n,S,O
- endm
- farptr macro n,S,O
- .xcref
- .xcref ?T&n
- .cref
- n ¯o
- push S
- push O
- &endm
- ?T&n=80h
- endm
- endif
- arg macro a
- irp x,<a>
- ?argc=?argc+1
- ?Atal <x>,%?argc
- endm
- endm
- ?Atal macro n,i
- .xcref
- .xcref ?ALI&i
- .cref
- ?ALI&i ¯o
- ?AP n
- &endm
- endm
- ?AP macro n
- ?argl=?argl+2
- ifdef ?T&n
- ife ?T&n-1
- push word ptr (n)
- exitm
- endif
- ife ?T&n-2
- push n
- exitm
- endif
- ife ?T&n-4
- push word ptr (n)+2
- push word ptr (n)
- ?argl=?argl+2
- exitm
- endif
- ife ?T&n-8
- push word ptr (n)+6
- push word ptr (n)+4
- push word ptr (n)+2
- push word ptr (n)
- ?argl=?argl+6
- exitm
- endif
- if ?T&n AND 80h
- n
- ?argl=?argl+2
- exitm
- endif
- ife ?T&n
- push word ptr (n)
- exitm
- endif
- endif
- push n
- endm
- ccall macro n,a,sleaze
- ifnb <a>
- Arg <a>
- endif
- mpush %?RSL
- ?argl=0
- ife ?PLM
- ?ACB=?argc
- else
- ?ACB=1
- endif
- rept ?argc
- uconcat <?ALI>,%?ACB
- uconcat <purge>,,<?ALI>,%?ACB
- ife ?PLM
- ?ACB=?ACB-1
- else
- ?ACB=?ACB+1
- endif
- endm
- ife ?PLM
- ifb <sleaze>
- call _&n
- else
- call n
- endif
- if ?argl
- add sp,?argl
- endif
- else
- call n
- endif
- mpop %?RSL
- ?RSL=0
- ?argc= 0
- ?argl= 0
- endm
- cProc macro n,c,a
- if ?CPD
- ?UTPE
- endif
- ?CPD=1
- ???=0
- ?argc=0
- ?BA=0
- ?PO=0
- ?PU=0
- ?IA=0
- ?adj=4
- ?RP=0
- ?UF=0
- ?WFP=0
- ?FF=0
- ?PAS=0
- ifnb <a>
- ?RI ?PAS,<a>
- endif
- ?PC=sizeC
- ?ND=?NODATA1
- ?NX=0
- irp x,<c>
- ifidn <x>,<FAR>
- ?PC=1
- endif
- ifidn <x>,<NEAR>
- ?PC=0
- endif
- ifidn <x>,<PUBLIC>
- ?PU=1
- endif
- ifidn <x>,<SMALL>
- ?UF=1
- endif
- ifidn <x>,<DATA>
- ?ND=0
- endif
- ifidn <x>,<NODATA>
- ?ND=1
- endif
- ifidn <x>,<ATOMIC>
- ?NX=1
- endif
- ifidn <x>,<FORCEFRAME>
- ?FF=1
- endif
- endm
- if (?NX eq 1) AND (?ND eq 0)
- ?NX = 0
- ??error <ATOMIC specified without NODATA - ATOMIC ignored>
- endif
- if ?PC
- if ?WIN
- ?WFP=1
- ife ?NX
- ?IA=2
- ?PAS = ?PAS AND (NOT ?ds)
- endif
- endif
- ?adj=?adj+2
- endif
- ?PAS = ?PAS AND (NOT (?sp+?cs+?ss))
- if ?UF
- ?PAS = ?PAS AND (NOT (?bp+?si+?di))
- endif
- ife ?PLM
- ?pg <_&n>,%?PU,%?PC,%?PAS,%?WFP,<n>
- else
- ?pg <n>,%?PU,%?PC,%?PAS,%?WFP,<n>
- endif
- endm
- ?pg macro n,p,c,a,w,nu
- .xcref
- if ?UF
- if ?RP
- ??error <parmR encountered in &n - user frame ignored>
- ?UF=0
- endif
- if ?ND
- ??error <NODATA encountered in &n - user frame ignored>
- ?UF=0
- endif
- endif
- cBegin ¯o g
- .xcref
- ?pg1 <n>,c,a,%?PO,w,%?UF,%?ND,%?RP
- ?CPD=0
- ?argc=0
- ?BA=1
- ???=(???+1) AND 0FFFEH
- if p
- PUBLIC n
- endif
- ife ?PLM
- ife c
- nu label near
- else
- nu label far
- endif
- endif
- ife c
- n proc NEAR
- else
- n proc FAR
- endif
- ifidn <g>,<nogen>
- if ???+?PO+a+?RP
- %out <cBegin - possible invalid use of nogen>
- endif
- else
- if ?UF
- ?MF c,%???,%?PO
- mPush a
- else
- if w
- ife ?ND
- mov ax,ds
- nop
- endif
- ife ?NX
- ife ?DOS5
- inc bp
- endif
- push bp
- mov bp,sp
- push ds
- else
- if ?FF+???+?PO+?RP
- push bp
- mov bp,sp
- endif
- endif
- ife ?ND
- mov ds,ax
- endif
- else
- if ?FF+???+?PO+?RP
- push bp
- mov bp,sp
- endif
- endif
- if ?RP
- ?UF=0
- rept ?RP
- uconcat mpush,,?RP,%?UF
- ?UF=?UF+1
- endm
- endif
- if ???
- if ?CHKSTK1
- ifdef ?CHKSTKPROC
- ?CHKSTKPROC %???
- else
- mov ax,???
- ife ?PLM
- call _chkstk
- else
- call chkstk
- endif
- endif
- else
- sub sp,???
- endif
- endif
- mPush a
- endif
- ifdef ?PROFILE
- if c
- call StartNMeas
- endif
- endif
- endif
- .cref
- purge cBegin
- &endm
- ?UTPE ¯o
- ??error <Unterminated Procedure Definition: "&n">
- &endm
- endm
- ?pg1 macro n,c,a,o,w,f,d,r
- .xcref
- cEnd ¯o g
- .xcref
- ?BA=0
- ifidn <g>,<nogen>
- if o+a+r
- %out <cEnd - possible invalid use of nogen>
- endif
- else
- ifdef ?PROFILE
- if c
- call StopNMeas
- endif
- endif
- mPop a
- if f
- db 0C3h
- else
- if w
- ife ?NX
- if (?TF eq 0) OR (???+?RP)
- lea sp,-2[bp]
- endif
- pop ds
- pop bp
- ife ?DOS5
- dec bp
- endif
- else
- if (?TF eq 0) OR (???+?RP)
- mov sp,bp
- endif
- if ???+?PO+?RP
- pop bp
- endif
- endif
- else
- if ?FF+???+?PO+?RP
- if (?TF eq 0) OR (???+?RP)
- mov sp,bp
- endif
- pop bp
- endif
- endif
- ife ?PLM
- ret
- else
- ret o
- endif
- endif
- endif
- n endp
- .cref
- purge cEnd
- &endm
- .cref
- endm
- assumes macro s,ln
- ifndef ln&_assumes
- assume s:ln
- else
- ln&_assumes s
- endif
- endm
- createSeg macro n,ln,a,co,cl,grp
- ifnb <grp>
- addSeg grp,n
- else
- ln&OFFSET equ OFFSET n:
- ln&BASE equ n
- ?cs3 <ln>,<n>
- endif
- ifnb <cl>
- n segment a co '&cl'
- else
- n segment a co
- endif
- n ends
- ?cs1 <ln>,<n>
- endm
- addSeg macro grp,seg
- ifndef grp&_def
- grp&_def=0
- endif
- if grp&_def ne ASMpass
- grp&_add ¯o s
- grp&_in <seg>,s
- &endm
- grp&_in ¯o sl,s
- ifb <s>
- grp group sl
- else
- grp&_add ¯o ns
- grp&_in <sl,s>,ns
- &endm
- endif
- &endm
- grp&_def=ASMpass
- else
- grp&_add seg
- endif
- endm
- defGrp macro grp,ln
- addSeg grp
- ifnb <ln>
- ?cs3 <ln>,<grp>
- ln&OFFSET equ OFFSET grp:
- ln&BASE equ grp
- endif
- endm
- ?cs1 macro ln,n
- ln&_sBegin ¯o
- ?MF &¯o c,l,p
- if c
- extrn n&_FARFRAME:near
- call n&_FARFRAME
- else
- extrn n&_NEARFRAME:near
- call n&_NEARFRAME
- endif
- db l shr 1
- db p shr 1
- &&endm
- ?cs2 <ln>,<n>
- n segment
- ?segname equ <&n>
- &endm
- endm
- ?cs2 macro ln,n
- sEnd ¯o
- n ends
- purge ?MF
- &endm
- endm
- ?cs3 macro ln,n
- ln&_assumes ¯o s
- assume s:&n
- &endm
- endm
- sBegin macro ln
- ln&_sBegin
- endm
- ife ?DF
- createSeg _TEXT,code,word,public,CODE
- ife ?NODATA1
- createSeg _DATA,data,word,public,DATA,DGROUP
- defGrp DGROUP,DATA
- endif
- if ?CHKSTK1
- ifndef ?CHKSTKPROC
- externP <chkstk>
- endif
- endif
- endif
- errnz macro x
- if2
- if x
- errnz1 <x>,%(x)
- endif
- endif
- endm
- errnz1 macro x1,x2
- = *ERRNZ* x1 = x2
- endm
- errn$ macro l,x
- errnz <OFFSET $ - OFFSET l x>
- ENDM
- ifdef ?PROFILE
- externFP <StartNMeas, StopNMeas>
- endif