This file status32.htm
can be included to 32-bit and 64-bit programs for Windows or Linux written in EuroAssembler.
The library contains OS-independent macroinstructions for easy manipulation with the set of 1..32 boolean flags, usually called
Status.
Status may be declared as a static DWORD in data segment,
but macros will as well operate with status in stack variable, structure member or when loaded in 32-bit register.
Should 32 flags be not enough, you can declare more Status DWORDs
with different names in your program.
Programmer should define a symbol for each flag and equate it with individual weight (power of 2), for instance
Flag2 EQU 4 Flag3 EQU 8 Flag4 EQU 16 etc.
Similar macros with identical names for different program width are defined in status16.htm
status HEAD
SetSt [EBX],stFlag1 | stFlag2.
SetSt %MACRO Status, Flag
OR %Status,%Flag, DATA=DWORD
%ENDMACRO SetSt
RstSt %MACRO Status, Flag
AND %Status,~(%Flag), DATA=DWORD,IMM=DWORD
%ENDMACRO RstSt
InvSt %MACRO Status, Flag
XOR %Status,%Flag, DATA=DWORD
%ENDMACRO InvSt
JSt %MACRO Status, Flag, Target
TEST %Status,%Flag, DATA=DWORD
JNZ %Target
%ENDMACRO JSt
JNSt %MACRO Status, Flag, Target
TEST %Status,%Flag, DATA=DWORD
JZ %Target
%ENDMACRO JNSt
ENDHEAD status