本文整理汇总了C++中MK_FP函数的典型用法代码示例。如果您正苦于以下问题:C++ MK_FP函数的具体用法?C++ MK_FP怎么用?C++ MK_FP使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了MK_FP函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FcbWrite
BOOL FcbWrite(xfcb FAR * lpXfcb, COUNT * nErrorCode)
{
sft FAR *s;
LONG lPosit;
COUNT nWritten;
psp FAR *p = MK_FP(cu_psp, 0);
/* Convert to fcb if necessary */
lpFcb = ExtFcbToFcb(lpXfcb);
/* Get the SFT block that contains the SFT */
if ((s = idx_to_sft(lpFcb->fcb_sftno)) == (sft FAR *) - 1)
return FALSE;
/* If this is not opened another error */
if (s->sft_count == 0)
return FALSE;
/* Now update the fcb and compute where we need to position */
/* to. */
lPosit = FcbRec() * lpFcb->fcb_recsiz;
if (SftSeek(s, lPosit, 0) != SUCCESS)
{
*nErrorCode = FCB_ERR_EOF;
return FALSE;
}
nWritten = DosWriteSft(s, lpFcb->fcb_recsiz, p->ps_dta, nErrorCode);
/* Now find out how we will return and do it. */
if (nWritten == lpFcb->fcb_recsiz)
{
lpFcb->fcb_fsize = s->sft_size;
FcbNextRecord(lpFcb);
*nErrorCode = FCB_SUCCESS;
return TRUE;
}
else if (nWritten <= 0)
{
*nErrorCode = FCB_ERR_WRITE;
return TRUE;
}
*nErrorCode = FCB_ERR_WRITE;
return FALSE;
}
示例2: scan
static int scan (void * arg, word segm, word ofs) {
Context_Tag tag;
ctxt_info_t *info;
(void)arg;
assert(segm);
assert(ofs != (word)-1);
redo:
if((tag = peekb(segm, ofs), ctxtIsInfoTag(tag))) {
info = &CTXT_INFO_STRUCT(tag);
if(peekb(segm, ofs + 1) == '=' && peekb(segm, ofs + 4) == 0) {
/* status entry */
info->c_sizemax = peekw(segm, ofs + 2) & ~0x8001;
} else { /* normal entry */
char far *p = MK_FP(segm, ofs + 1);
unsigned num;
for(num = 0; isxdigit(*p); ++p) {
num <<= 8;
if(isdigit(*p))
num |= *p & 0xf;
else {
assert(islower(*p));
num |= *p - 'a' + 10;
}
}
if(*p == '=') {
info->c_sizecur += env_varlen(segm, ofs);
if(num < info->c_nummin)
info->c_nummin = num;
if(num > info->c_nummax)
info->c_nummax = num;
} else {
/* Invalid entry -> remove to make room for useful stuff */
env_subVarOffset(segm, ofs);
goto redo;
}
}
} else if(tag > ' ') { /* Alias */
CTXT_INFO(CTXT_TAG_ALIAS, sizecur) += env_varlen(segm ,ofs);
}
return 0; /* proceed */
}
示例3: restoreState
/*
* restoreState:
*
* Restore register state back to the fault frame from the IntResult
* data structure.
*/
static void restoreState( volatile fault_frame *ff )
{
WORD __far *wptr;
/*
* we save all this stuff in our own code segment (see int.asm)
* because do not have data segment addressability when we need it
* (when we go to push it onto a new stack)
*/
wptr = MK_FP( CSAlias, FP_OFF( &NewAX ) );
*wptr = (WORD) IntResult.EAX;
wptr = MK_FP( CSAlias, FP_OFF( &NewCS ) );
*wptr = IntResult.CS;
wptr = MK_FP( CSAlias, FP_OFF( &NewIP ) );
*wptr = (WORD) IntResult.EIP;
wptr = MK_FP( CSAlias, FP_OFF( &NewFLAGS ) );
*wptr = (WORD) IntResult.EFlags;
wptr = MK_FP( CSAlias, FP_OFF( &OldretCS ) );
*wptr = ff->intf.retCS;
wptr = MK_FP( CSAlias, FP_OFF( &OldretIP ) );
*wptr = ff->intf.retIP;
wptr = MK_FP( CSAlias, FP_OFF( &Oldintnumber ) );
*wptr = ff->intf.intnumber;
wptr = MK_FP( CSAlias, FP_OFF( &Oldhandle ) );
*wptr = ff->intf.handle;
ff->SS = IntResult.SS;
ff->GS = IntResult.GS;
ff->FS = IntResult.FS;
ff->ES = IntResult.ES;
ff->DS = IntResult.DS;
ff->EDI = IntResult.EDI;
ff->ESI = IntResult.ESI;
// have ESP include the excess crap again
ff->ESP = IntResult.ESP-EXCESS_CRAP_ON_STACK;
ff->EBX = IntResult.EBX;
ff->EDX = IntResult.EDX;
ff->ECX = IntResult.ECX;
ff->oldEAX = IntResult.EAX;
ff->intf.oldEBP = IntResult.EBP;
} /* restoreState */
示例4: Load_MCGA
static void Load_MCGA( short rows, short font, short cursor )
/*===========================================================
This routines loads an alphanumeric font for the MCGA. */
{
VideoInt( _BIOS_VIDEO_PAGE, 0, 0, 0 ); // set active page to 0
VideoInt( _BIOS_SET_MODE + GetVideoMode(), 0, 0, 0 );
_fmemset( MK_FP( _EgaSeg, _EgaOff ), 0, 0x2000 ); // must do for MCGA 40 rows
VideoInt( font & 0xFF0F, 0, 0, 0 ); // load character set
VideoInt( 0x1103, 0, 0, 0 );
VideoInt( _BIOS_CURSOR_SIZE, 0, cursor, 0 ); // reset the cursor
outpw( 0x03D4, ( cursor & 0xFF00 ) + 0x09 ); // # double scan lines
*(char far *)_BIOS_data( ROWS ) = rows - 1; // # of rows
// # of vertical points per character
*(short far *)_BIOS_data( POINTS ) = 2 * ( cursor & 0xFF + 1 );
_GrCursor = 1; // cursor is on
}
示例5: mouse_installed
/* ----- test to see if the mouse driver is installed ----- */
BOOL mouse_installed(void)
{
unsigned char far *ms;
unsigned short aa, bb;
aa = peek(__seg0000, MOUSE *4 + 2);
bb = peek(__seg0000, MOUSE * 4);
asm {
mov ax,2
mov bx,[aa]
int 0x31
mov [aa],ax
jnc ok
}
return FALSE;
ok:
ms = MK_FP(aa, bb);
return (SCREENWIDTH <= 80 && ms != NULL && *ms != 0xcf);
}
示例6: MK_FP
const char __far *DOSEnvFind( const char __far *name )
{
const char __far *env;
const char __far *p;
env = MK_FP( GET_ENV_FROM_PSP(), 0 );
do {
p = name;
do {
if( *p == NULLCHAR && *env == '=' ) {
return( env + 1 );
}
} while( *env++ == *p++ );
while( *env++ != NULLCHAR )
;
} while( *env != NULLCHAR );
return( NULL );
}
示例7: ORPutImage
void DGraphics::ORPutImage( unsigned char far *VirtualScreen, int IgnoredColor,
int x, int y, int width, int height )
{
char far* Screen=(char far*)MK_FP( 0xA000, 0x000 );
int SrcOff=0,
DstOff=y*320+x, // x is counted from 0
j,k;
for(j=0;j<height;j++)
{
for( k=0; k<width; k++ )
{
if( VirtualScreen[SrcOff+k]!=IgnoredColor )
Screen[DstOff+k]=VirtualScreen[SrcOff+k];
}
DstOff+=320; SrcOff+=width;
}
}
示例8: init_tty
int init_tty (void) /*{{{*/
{
union REGS r;
struct SREGS s;
if (TTY_Initialized) return 0;
bios_key_f = peekb(0x40,0x96) & 0x10; /* enhanced keyboard flag */
/* Check for system type */
delay_ptr = delay;
r.x.ax = 0xC000;
int86x (0x15, &r, &r, &s);
if ((r.x.cflag == 0) && (r.h.al == 0))
{
unsigned char *table;
table = MK_FP(s.es, r.x.bx);
switch (table[2])
{
case 0xFF: /* pc */
case 0xFE: /* xt */
case 0xFB: /* xt */
case 0xFD: /* pc-jr */
break;
/* AT and higher */
default:
delay_ptr = my_delay;
}
}
set_ctrl_break(0);
ctrlbrk(ctrl_break);
init_int9_handler();
TTY_Initialized = 1;
if (Batch == 0)
{
if (X_Open_Mouse_Hook != NULL) (*X_Open_Mouse_Hook) ();
}
X_Set_Abort_Char_Hook = ibmpc_set_abort_char;
return 0;
}
示例9: USL_ScreenDraw
///////////////////////////////////////////////////////////////////////////
//
// USL_ScreenDraw() - Draws a chunk of the text screen (called only by
// US_TextScreen())
//
///////////////////////////////////////////////////////////////////////////
static void
USL_ScreenDraw(word x,word y,char *s,byte attr)
{
byte far *screen,far *oscreen;
screen = MK_FP(0xb800,(x * 2) + (y * 80 * 2));
oscreen = (&introscn + 7) + ((x - 1) * 2) + (y * 80 * 2) + 1;
while (*s)
{
*screen++ = *s++;
if (attr != 0xff)
{
*screen++ = (attr & 0x8f) | (*oscreen & 0x70);
oscreen += 2;
}
else
screen++;
}
}
示例10: SetColorRegisters
void SetColorRegisters(struct Registers * registers)
{
Word i;
//Get a pointer to the color register values
Byte far * colorRegisterValues = MK_FP(registers->r_es, registers->r_dx.w);
//Set the color register index
outportb(0x03c8, registers->r_bx.b.l);
//Loop through the color registers to set
for(i = 0; i < registers->r_cx.w; ++i)
{
//Set the color register
outportb(0x03c9, *colorRegisterValues++);
outportb(0x03c9, *colorRegisterValues++);
outportb(0x03c9, *colorRegisterValues++);
}
}
示例11: main
int main() {
int msmouse=0;
struct pos2 point[2],clipped[2];
int c,redraw=1;
int pointsel=0;
int doclip=1;
/* microsoft mouse present? */
#if TARGET_BITS == 16
if (*((unsigned long*)MK_FP(0,0x33*4)) != 0) {
__asm {
xor ax,ax ; AH=0 reset driver
int 33h
or ax,ax
jz notinst
inc [msmouse]
notinst:
}
}
示例12: pcrom_init
/* init PC ROM routines, must be called in graphics mode*/
void
pcrom_init(PSD psd)
{
char * p;
/* use INT 10h to get address of rom character table*/
rom_char_addr = int10(FNGETROMADDR, GETROM8x14);
#if 0
/* check bios data area for actual character height,
* as the returned font isn't always 14 high
*/
ROM_CHAR_HEIGHT = GETBYTE_FP(MK_FP(0x0040, 0x0085));
if(ROM_CHAR_HEIGHT > MAX_ROM_HEIGHT)
ROM_CHAR_HEIGHT = MAX_ROM_HEIGHT;
#endif
p = getenv("CHARHEIGHT");
if(p)
ROM_CHAR_HEIGHT = atoi(p);
}
示例13: setupscrnbuff
static bool setupscrnbuff( void )
/*******************************/
{
int rows, cols;
LP_PIXEL scrn;
size_t num;
int i;
if( console_size( UIConCtrl, UIConsole, 0, 0, &rows, &cols ) != 0 ) {
return( false );
}
UIData->width = cols;
UIData->height = rows;
num = UIData->width * UIData->height * 2;
scrn = UIData->screen.origin;
#if defined( __386__ )
scrn = realloc( scrn, num );
if( scrn == NULL )
return( false );
#else
{
unsigned seg;
if( scrn == NULL ) {
seg = qnx_segment_alloc( num );
} else {
seg = qnx_segment_realloc( FP_SEG( scrn ), num );
}
if( seg == -1 )
return( false );
scrn = MK_FP( seg, 0 );
}
#endif
num /= 2;
for( i = 0; i < num; ++i ) {
scrn[i].ch = ' '; /* a space with normal attributes */
scrn[i].attr = 7; /* a space with normal attributes */
}
UIData->screen.origin = scrn;
UIData->screen.increment = UIData->width;
return( true );
}
示例14: int86x
char far *printspool_getqueue(void)
{
char far *result;
union REGS r;
struct SREGS s;
r.x.ax = 0x0104;
int86x(0x2f, &r, &r, &s);
result = MK_FP(s.ds,r.x.si);
if (!r.x.cflag)
{
printspool_errno = 0;
return result;
}
else
{
printspool_errno = r.x.ax;
return NULL;
}
}
示例15: DrawDot
/* Draws a pixel at screen coordinate (X,Y) */
void DrawDot(int X, int Y) {
unsigned char far *ScreenPtr;
/* Point to the byte the pixel is in */
#ifdef __TURBOC__
ScreenPtr = MK_FP(SCREEN_SEGMENT, (Y*SCREEN_WIDTH_IN_BYTES) + (X/8));
#else
FP_SEG(ScreenPtr) = SCREEN_SEGMENT;
FP_OFF(ScreenPtr) = (Y * SCREEN_WIDTH_IN_BYTES) + (X / 8);
#endif
/* Set the bit mask within the byte for the pixel */
outp(GC_INDEX + 1, 0x80 >> (X & 0x07));
/* Draw the pixel. ORed to force read/write to load latches.
Data written doesn't matter, because set/reset is enabled
for all planes. Note: don't OR with 0; MSC optimizes that
statement to no operation */
*ScreenPtr |= 0xFE;
}