; 8086 C li b r a r y ; manifests for stack layout stackheader equ 6 indexbase equ 2 ; And for locating parameters ; P0 is last parm, p1 next to last, and so on parm0 equ indexbase - stackheader parm0l equ parm0 parm0h equ parm0l + 1 parm1 equ parm0h + 1 parm1l equ parm1 parm1h equ parm1l + 1 parm2 equ indexbase + 2 parm2l equ parm2 parm2h equ parm2l + 1 parm3l equ parm2h + 1 parm3h equ parm3l + 1 parm4l equ parm3h + 1 parm4h equ parm4l + 1 ; 8086 lib routines EXTRN DISPATCHW:NEAR; DESTROY NOTHING PURGE LENGTH, SIZE, TYPE DEFINE JRPOS = JGE# DEFINE JRNEG = JL# DEFINE JRZ = JE# DEFINE JRNZ = JNE# DEFINE JR = JMP SHORT# CodeMacro JMPZ place:Cb DW 0375H DB 0E9H RelW place EndM CodeMacro JMPZ place:Cw DW 0375H DB 0E9H RelW place EndM CodeMacro IDiv dst:Aw,divisor:Ew Segfix divisor DB 0F7H ModRM 7,divisor EndM CodeMacro Imul dst:Aw,mplier:Ew Segfix mplier DB 0F7H ModRM 5,mplier EndM CodeMacro SAL dst:Eb Segfix dst DB 0D0H ModRM 4,dst EndM CodeMacro SAL dst:Ew Segfix dst DB 0D1H ModRM 4,dst EndM CodeMacro SAL dst:Eb,count:Rw(CX) Segfix dst DB 0D2H ModRM 4,dst EndM CodeMacro SAL dst:Ew,count:Rw(CX) Segfix dst DB 0D3H ModRM 4,dst EndM CodeMacro SAR dst:Eb Segfix dst DB 0D0H ModRM 7,dst EndM CodeMacro SAR dst:Ew Segfix dst DB 0D1H ModRM 7,dst EndM CodeMacro SAR dst:Eb,count:Rw(CX) Segfix dst DB 0D2H ModRM 7,dst EndM CodeMacro SAR dst:Ew,count:Rw(CX) Segfix dst DB 0D3H ModRM 7,dst EndM CodeMacro SHR dst:Eb Segfix dst DB 0D0H ModRM 5,dst EndM CodeMacro SHR dst:Ew Segfix dst DB 0D1H ModRM 5,dst EndM CodeMacro SHR dst:Eb,count:Rw(CX) Segfix dst DB 0D2H ModRM 5,dst EndM CodeMacro SHR dst:Ew,count:Rw(CX) Segfix dst DB 0D3H ModRM 5,dst EndM END