; ; Command & Conquer Red Alert(tm) ; Copyright 2025 Electronic Arts Inc. ; ; This program is free software: you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation, either version 3 of the License, or ; (at your option) any later version. ; ; This program is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with this program. If not, see . ; ;*************************************************************************** ;** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ** ;*************************************************************************** ;* * ;* Project Name : 16 bit ASM Macros * ;* * ;* File Name : PCMACRO.16 * ;* * ;* Programmer : Steve Tall * ;* * ;* Start Date : November 17th, 1995 * ;* * ;* Last Update : November 20th, 1995 [ST] * ;* * ;*-------------------------------------------------------------------------* ;* Functions: * ;* * ;* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * saveall macro save ax,bx,cx,dx,bp,si,di,es,ds endm restall macro restore ax,bx,cx,dx,bp,si,di,es,ds endm save macro r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14 IFNB push r0 save r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14 ENDIF endm restore macro r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14 IFNB pop r14 ENDIF IFNB pop r13 ENDIF IFNB pop r12 ENDIF IFNB pop r11 ENDIF IFNB pop r10 ENDIF IFNB pop r9 ENDIF IFNB pop r8 ENDIF IFNB pop r7 ENDIF IFNB pop r6 ENDIF IFNB pop r5 ENDIF IFNB pop r4 ENDIF IFNB pop r3 ENDIF IFNB pop r2 ENDIF IFNB pop r1 ENDIF IFNB pop r0 ENDIF endm bhi macro lab ja lab endm bls macro lab jbe lab endm bcc macro lab jnc lab endm bcs macro lab jc lab endm bhs macro lab jnc lab endm blo macro lab jc lab endm bne macro lab jne lab endm beq macro lab je lab endm bpl macro lab jns lab endm bmi macro lab js lab endm bge macro lab jge lab endm blt macro lab jl lab endm bgt macro lab jg lab endm ble macro lab jle lab endm bra macro lab jmp lab endm bhis macro lab ja lab endm blss macro lab jbe lab endm bccs macro lab jnc lab endm bcss macro lab jc lab endm bnes macro lab jne lab endm beqs macro lab je lab endm bpls macro lab jns lab endm bmis macro lab js lab endm bges macro lab jge lab endm blts macro lab jl lab endm bgts macro lab jg lab endm bles macro lab jle lab endm bras macro lab jmp lab endm clear macro first xor first,first endm rts macro ret endm mov_b macro label,label2 mov byte ptr label,byte ptr label2 endm mov_w macro label,label2 mov word ptr label,word ptr label2 endm mov_d macro label,label2 mov dword ptr label,dword ptr label2 endm cmp_b macro label,label2 cmp byte ptr label,byte ptr label2 endm cmp_w macro label,label2 cmp word ptr label,word ptr label2 endm cmp_d macro label,label2 cmp dword ptr label,dword ptr label2 endm add_b macro label,label2 add byte ptr label,byte ptr label2 endm add_w macro label,label2 add word ptr label,word ptr label2 endm add_d macro label,label2 add dword ptr label,dword ptr label2 endm sub_b macro label,label2 sub byte ptr label,byte ptr label2 endm sub_w macro label,label2 sub word ptr label,word ptr label2 endm sub_d macro label,label2 sub dword ptr label,dword ptr label2 endm or_b macro label,label2 or byte ptr label,byte ptr label2 endm or_w macro label,label2 or word ptr label,word ptr label2 endm or_d macro label,label2 or dword ptr label,dword ptr label2 endm xor_b macro label,label2 xor byte ptr label,byte ptr label2 endm xor_w macro label,label2 xor word ptr label,word ptr label2 endm xor_d macro label,label2 xor dword ptr label,dword ptr label2 endm eor_b macro label,label2 xor byte ptr label,byte ptr label2 endm eor_w macro label,label2 xor word ptr label,word ptr label2 endm eor_d macro label,label2 xor dword ptr label,dword ptr label2 endm and_b macro label,label2 and byte ptr label,byte ptr label2 endm and_w macro label,label2 and word ptr label,word ptr label2 endm and_d macro label,label2 and dword ptr label,dword ptr label2 endm test_b macro label,label2 test byte ptr label,byte ptr label2 endm test_w macro label,label2 test word ptr label,word ptr label2 endm test_d macro label,label2 test dword ptr label,dword ptr label2 endm shr_b macro label,label2 shr byte ptr label,label2 endm shr_w macro label,label2 shr word ptr label,label2 endm shr_d macro label,label2 shr dword ptr label,label2 endm shl_b macro label,label2 shl byte ptr label,label2 endm shl_w macro label,label2 shl word ptr label,label2 endm shl_d macro label,label2 shl dword ptr label,label2 endm sar_b macro label,label2 sar byte ptr label,label2 endm sar_w macro label,label2 sar word ptr label,label2 endm sar_d macro label,label2 sar dword ptr label,label2 endm sal_b macro label,label2 sal byte ptr label,label2 endm sal_w macro label,label2 sal word ptr label,label2 endm sal_d macro label,label2 sal dword ptr label,label2 endm inc_b macro label inc byte ptr label endm inc_w macro label inc word ptr label endm inc_d macro label inc dword ptr label endm dec_b macro label dec byte ptr label endm dec_w macro label dec word ptr label endm dec_d macro label dec dword ptr label endm movzx_b macro label,label2 movzx label,byte ptr label2 endm movzx_w macro label,label2 movzx label,word ptr label2 endm movsx_b macro label,label2 movsx label,byte ptr label2 endm movsx_w macro label,label2 movsx label,word ptr label2 endm mul_b macro label mul byte ptr label endm mul_w macro label mul word ptr label endm div_b macro label div byte ptr label endm div_w macro label div word ptr label endm idiv_b macro label idiv byte ptr label endm idiv_w macro label idiv word ptr label endm tst_b macro label cmp byte ptr label,0 endm tst_w macro label cmp word ptr label,0 endm tst_d macro label cmp dword ptr label,0 endm not_b macro label not byte ptr label endm not_w macro label not word ptr label endm not_d macro label not dword ptr label endm neg_b macro label neg byte ptr label endm neg_w macro label neg word ptr label endm neg_d macro label neg dword ptr label endm