diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-05-15 22:27:48 +0100 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-05-15 22:27:48 +0100 |
commit | b9fad1ab2ad3bd87bff05c4688c978d582ada438 (patch) | |
tree | 4a373f8dd867d20e67510de7cfe447a4b58c1a70 /misc/c16.mac | |
parent | 65c26d26fb72cec0d43d199c72ed27513d17f4c9 (diff) | |
download | nasm-b9fad1ab2ad3bd87bff05c4688c978d582ada438.tar.gz nasm-b9fad1ab2ad3bd87bff05c4688c978d582ada438.tar.bz2 nasm-b9fad1ab2ad3bd87bff05c4688c978d582ada438.zip |
Upstream version 2.08rc7
Diffstat (limited to 'misc/c16.mac')
-rw-r--r-- | misc/c16.mac | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/misc/c16.mac b/misc/c16.mac new file mode 100644 index 0000000..50b5d5e --- /dev/null +++ b/misc/c16.mac @@ -0,0 +1,82 @@ +; NASM macro set to make interfacing to 16-bit programs easier -*- nasm -*- + + + +%imacro proc 1 ; begin a procedure definition + +%push proc + + global %1 + +%1: push bp + + mov bp,sp + +%ifdef FARCODE PASCAL ; arguments may start at bp+4 or bp+6 + +%assign %$arg 6 + +%define %$firstarg 6 + +%else + +%assign %$arg 4 + +%define %$firstarg 4 + +%endif + +%define %$procname %1 + +%endmacro + + + +%imacro arg 0-1 2 ; used with the argument name as a label + +%00 equ %$arg + + ; we could possibly be adding some + + ; debug information at this point...? + +%assign %$arg %1+%$arg + +%endmacro + + + +%imacro endproc 0 + +%ifnctx proc + +%error Mismatched `endproc'/`proc' + +%else + + mov sp,bp + + pop bp + +%ifdef PASCAL + + retf %$arg - %$firstarg + +%elifdef FARCODE + + retf + +%else + + retn + +%endif + +__end_%$procname: ; useful for calculating function size + +%pop + +%endif + +%endmacro + |