⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.h

📁 早期freebsd实现
💻 H
字号:
/*- * Copyright (c) 1988, 1993 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	@(#)api.h	8.1 (Berkeley) 6/6/93 *//* * This file contains header information used by the PC API routines. */#if	!defined(MSDOS)#define far			/* For 'far *' checks */#endif	/* !defined(MSDOS) */#define	API_INTERRUPT_NUMBER	0x7A		/* API Interrupt Number *//* * Define the gate numbers.  These are returned via the Name Resolution * service. */#define	GATE_SESSMGR	1234#define	GATE_KEYBOARD	5678#define	GATE_COPY	9101#define	GATE_OIAM	1121/* * The names which correspond to the above gate numbers. */#define	NAME_SESSMGR	"SESSMGR "#define	NAME_KEYBOARD	"KEYBOARD"#define	NAME_COPY	"COPY    "#define	NAME_OIAM	"OIAM    "/* * Name Resolution is specified in AH. */#define	NAME_RESOLUTION		0x81#if	defined(unix)/* * In unix, we offer a service to allow the application to keep from * having to poll us constantly. */#define	PS_OR_OIA_MODIFIED	0x99#endif	/* defined(unix) *//* * Codes specified in AL for various services. */#define	QUERY_SESSION_ID		0x01#define	QUERY_SESSION_PARAMETERS	0x02#define	QUERY_SESSION_CURSOR		0x0b#define	CONNECT_TO_KEYBOARD		0x01#define	DISCONNECT_FROM_KEYBOARD	0x02#define	WRITE_KEYSTROKE			0x04#define	DISABLE_INPUT			0x05#define	ENABLE_INPUT			0x06#define	COPY_STRING			0x01#define	READ_OIA_GROUP			0x02/* * For each service, we define the assoicated parameter blocks. *//* * Supervisor Services */typedef struct {    char	gate_name[8];} NameResolveParms;/* * Session Information Services */typedef struct {    char	short_name,	type,	session_id,	reserved,	long_name[8];} NameArrayElement;typedef struct {    unsigned char	length,	number_matching_session;    NameArrayElement	name_array_element;		/* Variable number */} NameArray;typedef struct {    char	rc,	function_id,	option_code,	data_code;    NameArray far	*name_array;    char	long_name[8];} QuerySessionIdParms;#define	ID_OPTION_BY_NAME	0x01		/* By short (or long) name */#define	ID_OPTION_ALL		0x00		/* All (of specified type */typedef struct {    char	rc,	function_id,	session_id,	reserved,	session_type,	session_characteristics,	rows,	columns;    char far	*presentation_space;} QuerySessionParametersParms;#define	TYPE_WSCTL		0x01		/* Work Station Control */#define	TYPE_DFT		0x02		/* DFT Host Session */#define	TYPE_CUT		0x03		/* CUT Host Session */#define	TYPE_NOTEPAD		0x04		/* Notepad Session */#define	TYPE_PC			0x05		/* Personal Computer Session */#define	CHARACTERISTIC_EAB	0x80		/* Extended Attribute Buffer */#define	CHARACTERISTIC_PSS	0x40		/* Program Symbols Supported */typedef struct {    char	rc,	function_id,	session_id,	cursor_type,	row_address,				/* from 0 */	column_address;				/* from 0 */} QuerySessionCursorParms;#define	CURSOR_INHIBITED_AUTOSCROLL	0x10#define	CURSOR_INHIBITED		0x04#define	CURSOR_BLINKING			0x02#define	CURSOR_BOX			0x01typedef struct {    char	rc,	function_id,	session_id,	reserved;    short	event_queue_id,	input_queue_id;    char	intercept_options,	first_connection_identifier;} ConnectToKeyboardParms;typedef struct {    char	rc,	function_id,	session_id,	reserved;    short	connectors_task_id;} DisconnectFromKeyboardParms;typedef struct {    unsigned char	scancode,	shift_state;} KeystrokeEntry;typedef struct {    short	length;			/* Length (in bytes) of list */    KeystrokeEntry keystrokes;	/* Variable size */} KeystrokeList;typedef struct {    char	rc,	function_id,	session_id,	reserved;    short	connectors_task_id;    char	options,	number_of_keys_sent;    union {	KeystrokeEntry	    keystroke_entry;	KeystrokeList far	    *keystroke_list;    } keystroke_specifier;} WriteKeystrokeParms;#define	OPTION_SINGLE_KEYSTROKE		0x20#define	OPTION_MULTIPLE_KEYSTROKES	0x30typedef struct {    char	rc,	function_id,	session_id,	reserved;    short	connectors_task_id;} DisableInputParms;typedef DisableInputParms EnableInputParms;typedef struct {    char	session_id,	reserved;    char far	*buffer;    char	characteristics,	session_type;    short	begin;			/* Offset within buffer */} BufferDescriptor;    typedef struct {    char	rc,	function_id;    BufferDescriptor	source;    short	source_end;		/* Offset within source buffer */    BufferDescriptor	target;    char	copy_mode,	reserved;} CopyStringParms;#define	COPY_MODE_7_COLOR		0x80	/* Else 4 color mode */#define	COPY_MODE_FIELD_ATTRIBUTES	0x40	/* Else don't copy attributes */typedef struct {    char	rc,	function_id,	session_id,	reserved;    char far	*oia_buffer;    char	oia_group_number;} ReadOiaGroupParms;/* If the user wants all groups, we return API_OIA_BYTES_ALL_GROUPS bytes */#define	API_OIA_ALL_GROUPS		'\377'#define	API_OIA_BYTES_ALL_GROUPS	22	/* 22 bytes of data *//* API_OIA_INPUT_INHIBITED is special.  It returns more than on byte of data */#define	API_OIA_INPUT_INHIBITED		8#define	API_OIA_LAST_LEGAL_GROUP	18	/* Highest legal number */#if	defined(MSDOS)#if	!defined(FP_SEG)#include <dos.h>#endif	/* !defined(FP_SEG) */#else	/* defined(MSDOS) *//* * These definitions are here to provide the descriptions of * some registers which are, normally, defined in <dos.h> on * a dos system. */#define	FP_SEG(x)	((unsigned int)(((unsigned long)(x))>>16))#define	FP_OFF(y)	((unsigned int)(((unsigned long)(y))&0xFFFF))/* * Undo the preceeding. */#define	SEG_OFF_BACK(x,y)	(((x)<<16)|(y))/* * Now, it is somewhat of a pain, but we need to keep * 8086 conventions about which of the "highlow"'s map * into which of the "words". */#include <sys/param.h>		/* Get ENDIAN from machine/endian.h *//* Determine endian'ess (if necessary) */#if	!(defined(BYTE_ORDER) && defined(BIG_ENDIAN))#define	LITTLE_ENDIAN	1234	/* least-significant byte first (vax) */#define	BIG_ENDIAN	4321	/* most-significant byte first (IBM, net) */#if	defined(vax) || defined(ns32000) || defined(i386) || (defined(mips)&&defined(MIPSEL))#define	BYTE_ORDER	LITTLE_ENDIAN#endif	/* defined(vax) || defined(ns32000) */ #if	defined(sun) || defined(tahoe) || defined(ibm032) || defined(pyr) || defined(gould) || (defined(mips)&&defined(MIPSEB))#define	BYTE_ORDER	BIG_ENDIAN#endif	/* defined(sun) || defined(tahoe) || defined(ibm032) || defined(pyr) || defined(gould) */#endif	/* !(defined(BYTE_ORDER) && defined(BIG_ENDIAN)) */struct highlow {    unsigned char#if	BYTE_ORDER == LITTLE_ENDIAN	al,	ah,	bl,	bh,	cl,	ch,	dl,	dh;#endif	/* BYTE_ORDER == LITTLE_ENDIAN */#if	BYTE_ORDER == BIG_ENDIAN	ah,	al,	bh,	bl,	ch,	cl,	dh,	dl;#endif	/* BYTE_ORDER == BIG_ENDIAN */};struct words {    unsigned short	ax,	bx,	cx,	dx;    unsigned short	si,	di;};union REGS {    struct highlow h;    struct words x;};struct SREGS {    unsigned short	cs,	ds,	es,	ss;};#endif	/* defined(MSDOS) (else section) */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -