forked from KolibriOS/kolibrios
OpenWatcom clib and sdk/sound
git-svn-id: svn://kolibrios.org@359 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
220
programs/develop/open watcom/trunk/clib/h/struct.inc
Normal file
220
programs/develop/open watcom/trunk/clib/h/struct.inc
Normal file
@@ -0,0 +1,220 @@
|
||||
;*****************************************************************************
|
||||
;*
|
||||
;* Open Watcom Project
|
||||
;*
|
||||
;* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* This file contains Original Code and/or Modifications of Original
|
||||
;* Code as defined in and that are subject to the Sybase Open Watcom
|
||||
;* Public License version 1.0 (the 'License'). You may not use this file
|
||||
;* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
|
||||
;* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
|
||||
;* provided with the Original Code and Modifications, and is also
|
||||
;* available at www.sybase.com/developer/opensource.
|
||||
;*
|
||||
;* The Original Code and all software distributed under the License are
|
||||
;* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||
;* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
|
||||
;* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
|
||||
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
|
||||
;* NON-INFRINGEMENT. Please see the License for the specific language
|
||||
;* governing rights and limitations under the License.
|
||||
;*
|
||||
;* ========================================================================
|
||||
;*
|
||||
;* Description: Structured macros for MASM/WASM.
|
||||
;*
|
||||
;*****************************************************************************
|
||||
|
||||
|
||||
__label = 0
|
||||
__depth = 0
|
||||
__inner_loop = 0
|
||||
|
||||
_guess macro name
|
||||
__depth = __depth + 1
|
||||
__label = __label + 1
|
||||
_set __astk,%__depth,__label,<>
|
||||
__label = __label + 1
|
||||
_set __estk,%__depth,__label,<>
|
||||
ifnb <name>
|
||||
name = __label
|
||||
endif
|
||||
endm
|
||||
|
||||
_quif macro cc,name
|
||||
ifnb <name>
|
||||
_set __elbl,,name,<>
|
||||
_j cc,_l,%__elbl
|
||||
else
|
||||
_set __albl,,__astk,%__depth
|
||||
_j cc,_l,%__albl
|
||||
endif
|
||||
endm
|
||||
|
||||
_quit macro name
|
||||
_quif ,name
|
||||
endm
|
||||
|
||||
_admit macro
|
||||
_set __albl,,__astk,%__depth
|
||||
__label = __label + 1
|
||||
_set __astk,%__depth,__label,<>
|
||||
_set __elbl,,__estk,%__depth
|
||||
_j ,_l,%__elbl
|
||||
_label _l,%__albl
|
||||
endm
|
||||
|
||||
_endguess macro
|
||||
_set __albl,,__astk,%__depth
|
||||
_label _l,%__albl
|
||||
_set __elbl,,__estk,%__depth
|
||||
_label _l,%__elbl
|
||||
__depth = __depth - 1
|
||||
endm
|
||||
|
||||
_loop macro name
|
||||
_guess name
|
||||
_set __albl,,__astk,%__depth
|
||||
_label _m,%__albl
|
||||
_set __elbl,,__estk,%__depth
|
||||
_label _m,%__elbl
|
||||
_set __llbl,%__depth,%__inner_loop,<>
|
||||
_set __inner_loop,,%__depth,<>
|
||||
endm
|
||||
|
||||
_loopif macro cc,name
|
||||
ifnb <name>
|
||||
_set __elbl,,name,<>
|
||||
_j cc,_m,%__elbl
|
||||
else
|
||||
_set __albl,,__astk,%__inner_loop
|
||||
_j cc,_m,%__albl
|
||||
endif
|
||||
endm
|
||||
|
||||
_until macro cc
|
||||
_set __albl,,__astk,%__depth
|
||||
_jn cc,_m,%__albl
|
||||
_set __inner_loop,,__llbl,%__depth
|
||||
_endguess
|
||||
endm
|
||||
|
||||
_endloop macro
|
||||
_set __albl,,__astk,%__depth
|
||||
_j ,_m,%__albl
|
||||
_set __inner_loop,,__llbl,%__depth
|
||||
_endguess
|
||||
endm
|
||||
|
||||
_if macro cc
|
||||
_guess
|
||||
_set __albl,,__astk,%__depth
|
||||
_jn cc,_l,%__albl
|
||||
endm
|
||||
|
||||
_else macro
|
||||
_admit
|
||||
endm
|
||||
|
||||
_endif macro
|
||||
_endguess
|
||||
endm
|
||||
|
||||
_set macro base1,ext1,base2,ext2
|
||||
base1&ext1 = base2&ext2
|
||||
endm
|
||||
|
||||
_label macro base,ext
|
||||
base&ext:
|
||||
endm
|
||||
|
||||
_j macro cc,base,ext
|
||||
j&cc base&ext
|
||||
endm
|
||||
|
||||
_jn macro cc,base,ext
|
||||
jn&cc base&ext
|
||||
endm
|
||||
|
||||
jnna macro label
|
||||
ja label
|
||||
endm
|
||||
|
||||
jnnae macro label
|
||||
jae label
|
||||
endm
|
||||
|
||||
jnnb macro label
|
||||
jb label
|
||||
endm
|
||||
|
||||
jnnbe macro label
|
||||
jbe label
|
||||
endm
|
||||
|
||||
jnnc macro label
|
||||
jc label
|
||||
endm
|
||||
|
||||
jnne macro label
|
||||
je label
|
||||
endm
|
||||
|
||||
jnng macro label
|
||||
jg label
|
||||
endm
|
||||
|
||||
jnnge macro label
|
||||
jge label
|
||||
endm
|
||||
|
||||
jnnl macro label
|
||||
jl label
|
||||
endm
|
||||
|
||||
jnnle macro label
|
||||
jle label
|
||||
endm
|
||||
|
||||
jnno macro label
|
||||
jo label
|
||||
endm
|
||||
|
||||
jnnp macro label
|
||||
jp label
|
||||
endm
|
||||
|
||||
jnns macro label
|
||||
js label
|
||||
endm
|
||||
|
||||
jnnz macro label
|
||||
jz label
|
||||
endm
|
||||
|
||||
jnpe macro label
|
||||
jpo label
|
||||
endm
|
||||
|
||||
jnpo macro label
|
||||
jpe label
|
||||
endm
|
||||
|
||||
j macro label
|
||||
jmp label
|
||||
endm
|
||||
|
||||
jn macro label
|
||||
nop
|
||||
endm
|
||||
|
||||
_shl macro reg,count
|
||||
add reg,reg
|
||||
endm
|
||||
|
||||
_rcl macro reg,count
|
||||
adc reg,reg
|
||||
endm
|
Reference in New Issue
Block a user