Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

361 lines
5.0 KiB

;
; SYSTEM MACROS
;
; DISPLAY TEXT ON SCREEN
;
DISP MACRO TEXT,SEGM
IFNB <SEGM>
IFDIF <SEGM>,<DS>
PUSH DS
MOV AX,SEGM
MOV DS,AX
ENDIF
ENDIF
IFNB <TEXT>
LEA DX,TEXT
ENDIF
DOS DSTR
IFNB <SEGM>
IFDIF <SEGM>,<DS>
POP DS
ENDIF
ENDIF
ENDM
;
DMSG MACRO MSG
IFNB <MSG>
LEA DX,MSG
ENDIF
DISP
ENDM
;
DCHAR MACRO CHAR
PUSH DX
IFNB <CHAR>
MOV DL,CHAR ; SET CHARACTER
ELSE
MOV DL,AL
ENDIF
DOS DO
POP DX
ENDM
;
; CLEAR SCREEN
;
CLEAR MACRO
MOV CX,00H*256+00H ; ROW=00, COL=00
MOV DX,24H*256+79H ; ROW=24, COL=79
MOV BH,07H ; NORMAL ATTRIBUTE
MOV AX,06H*256+00H ; CLEAR WHOLE SCREEN
INT 10H
ENDM
;
POS MACRO ROW,COL,PAGE
IFNB <ROW>
MOV DX,ROW*256+COL ; SET ROW AND COLUMN
ENDIF
IFNB <PAGE>
MOV BH,PAGE ; SET PAGE
ELSE
MOV BH,0
ENDIF
MOV AH,02H ; POSTIION CURSOR
INT 10H
ENDM
;
DEFMSG MACRO ID,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10
IFNB <ID>
ID LABEL BYTE ; DEFINE ESSAGE
ENDIF
IFNB <T1>
DB T1
ENDIF
IFNB <T2>
DB T2
ENDIF
IFNB <T3>
DB T3
ENDIF
IFNB <T4>
DB T4
ENDIF
IFNB <T5>
DB T5
ENDIF
IFNB <T6>
DB T6
ENDIF
IFNB <T7>
DB T7
ENDIF
IFNB <T8>
DB T8
ENDIF
IFNB <T9>
DB T9
ENDIF
IFNB <T10>
DB T10
ENDIF
DB '$'
ENDM
;
MOVE MACRO TO,LEN,FROM
IFNB <TO>
LEA DI,TO ; SET DESTINATION
ENDIF
IFNB <LEN>
MOV CX,LEN ; SET LENGTH
ENDIF
IFNB <FROM>
LEA SI,FROM ; SET SOURCE
ENDIF
REP MOVS BYTE PTR[DI],BYTE PTR[SI]
ENDM
MOVEZ MACRO TO,FROM
IFNB <TO>
LEA DI,TO ; SET DESTINATION
ENDIF
IFNB <FROM>
LEA SI,FROM ; SET SOURCE
ENDIF
CALL MOVZ$
ENDM
;
SCAN MACRO TO,LEN,VALUE,TYPE
IFNB <TO>
LEA DI,TO ; SET DESTINATION
ENDIF
IFNB <LEN>
MOV CX,LEN ; SET LENGTH
ENDIF
IFNB <VALUE>
MOV AL,VALUE ; SET SOURCE
ENDIF
IFB <TYPE>
REPZ SCASB
ENDIF
IFIDN <TYPE>,<EQ>
REPZ SCASB
ENDIF
IFIDN <TYPE>,<Z>
REPZ SCASB
ENDIF
IFIDN <TYPE>,<NE>
REPNZ SCASB
ENDIF
IFIDN <TYPE>,<NZ>
REPNZ SCASB
ENDIF
ENDM
;
FILL MACRO TO,LEN,VALUE
PUSH DI
PUSH CX
IFNB <TO>
LEA DI,TO ; SET DESTINATION
ENDIF
IFNB <LEN>
MOV CX,LEN ; SET LENGTH
ENDIF
IFNB <VALUE>
MOV AL,VALUE ; SET SOURCE
ENDIF
REP STOS BYTE PTR[DI]
POP CX
POP DI
ENDM
;
COMP MACRO TO,LEN,FROM
IFNB <TO>
LEA DI,TO ; SET DESTINATION
ENDIF
IFNB <LEN>
MOV CX,LEN ; SET LENGTH
ENDIF
IFNB <FROM>
LEA SI,FROM ; SET SOURCE
ENDIF
REPE CMPS BYTE PTR[DI],BYTE PTR[SI]
ENDM
COMPZ MACRO TO,FROM
IFNB <TO>
LEA DI,TO ; SET DESTINATION
ENDIF
IFNB <FROM>
LEA SI,FROM ; SET SOURCE
ENDIF
CALL CMPZ$
ENDM
;
XCHGS MACRO O1,O2
PUSH O1
PUSH O2
POP O1
POP O2
ENDM
;
JUMP MACRO COND,TARGET
LOCAL LAB
IFB <COND>
JMP TARGET
ENDIF
IFIDN <COND>,<A>
JNA LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NBE>
JBE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<AE>
JNAE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NB>
JB LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<B>
JNB LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NAE>
JAE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<C>
JNC LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<BE>
JNBE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NA>
JA LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<CXZ>
OR CX,CX
JNZ LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<E>
JNE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<Z>
JNZ LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<G>
JNG LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NLE>
JLE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<GE>
JNGE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NL>
JL LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<L>
JNL LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NGE>
JGE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<LE>
JNLE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NG>
JG LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NC>
JC LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NE>
JE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NZ>
JZ LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NO>
JO LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NP>
JP LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<PO>
JPE LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<NS>
JS LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<O>
JNO LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<P>
JNP LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<PE>
JPO LAB
JMP TARGET
LAB:
ENDIF
IFIDN <COND>,<S>
JNS LAB
JMP TARGET
LAB:
ENDIF
ENDM
;