home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Zodiac Super OZ
/
MEDIADEPOT.ISO
/
FILES
/
16
/
FREEDOS.ZIP
/
FD_A4PRE.ZIP
/
SOURCE
/
MSGLIB.ZIP
/
freedos
/
src
/
include
/
regproto.h
< prev
Wrap
Text File
|
1995-04-20
|
2KB
|
88 lines
/* Enables the usage of the fast register pseudo vars for non-TURBO
compilers. That means the port Turbo -> non-Turbo is OK.
Back not, because the union holds the registers independed on
real registers.
*/
#ifndef __REGPROTO_H
#define __REGPROTO_H
#ifdef __TURBOC__
#define USEREGS
#else
#ifdef _MICROC_
#define USEREGS
#define _AH ((unsigned)_AX_ >> 8)
#define _AL ((unsigned)_AX_ & 0xf)
#define _BH ((unsigned)_BX_ >> 8)
#define _BL ((unsigned)_BX_ & 0xf)
#define _CH ((unsigned)_CX_ >> 8)
#define _CL ((unsigned)_CX_ >> 8)
#define _DH ((unsigned)_DX_ & 0xf)
#define _DL ((unsigned)_DX_ >> 8)
#define _AX _AX_
#define _BX _BX_
#define _CX _CX_
#define _DX _DX_
#define _SI _SI_
#define _DI _DI_
#define geninterrupt(n) int86(n)
#else
#define USEREGS union REGS reg ; struct SREGS sreg ;
#define _AH reg.h.ah
#define _AL reg.h.al
#define _BH reg.h.bh
#define _BL reg.h.bl
#define _CH reg.h.ch
#define _CL reg.h.cl
#define _DH reg.h.dh
#define _DL reg.h.dl
#define _AX reg.x.ax
#define _BX reg.x.bx
#define _CX reg.x.cx
#define _DX reg.x.dx
#define _SI reg.x.si
#define _DI reg.x.di
#define _DS sreg.ds
#define _ES sreg.es
#define _SS sreg.ss
#define geninterrupt(n) int86x(n,®,®,&sreg)
#endif _MICROC_
#endif __TURBOC__
/*
int getkey()
{
USEREGS
_AH = 0x10 ;
geninterrupt(0x16) ;
return _AX ;
}
*/
#ifdef _MICROC_
#define label(a) a: /* label inside of asm {} */
#define asmName(a,b) b[bp] /* variable name not available, use offset */
#define FP_SEG(a) get_ds() /* only tiny/small available */
#define FP_OFF(a) (a)
#else
#define label(a) } a: asm {
#define asmName(a,b) a
#if defined(__POWERC) || (defined(__TURBOC__) && !defined(__BORLANDC__))
#define FAR far
#else
#define FAR _far
#endif
#ifndef MK_FP
#define MK_FP(seg,off) ((void FAR *)(((long)(seg) << 16)|(unsigned)(off)))
#endif
#endif
#endif