DataMuseum.dk

Presents historical artifacts from the history of:

Regnecentalen RC-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Regnecentalen RC-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦c14a308c6⟧ TextFile

    Length: 19854 (0x4d8e)
    Types: TextFile
    Notes: UNIX file
    Names: »kd.h«

Derivation

└─⟦22cab2c1b⟧ Bits:30004042/kcaddon.imd SW95705I 386/ix Multi-user Release 1.2
└─⟦22cab2c1b⟧ UNIX Filesystem
    └─⟦this⟧ »KC/new/usr/include/sys/kd.h« 

TextFile

/*
 * definitions for PC AT keyboard/display driver
 */

/*
 * Copyrighted as an unpublished work.
 * (c) Copyright 1986 INTERACTIVE Systems Corporation
 * All rights reserved.
 *
 * RESTRICTED RIGHTS
 *
 * These programs are supplied under a license.  They may be used,
 * disclosed, and/or copied only as permitted under such license
 * agreement.  Any copy must contain the above copyright notice and
 * this restricted rights notice.  Use, copying, and/or disclosure
 * of the programs is strictly prohibited unless otherwise provided
 * in the license agreement.
 */

#ident "@(#)kd.h	1.15 - 88/04/29"

/*
 * EJ 88.08.11 ioctls to get and load character generator
 * EJ 88.01.07 support for national 7 bit character set
 * EJ 87.10.06 table selectors for Alt Gr table and dead keytable
 * EJ 87.09.07 keytype for VT switch key (A1-A4)
 */

/*
 * Types of displays supported
 */
#define	KD_MONO		01	/* IBM monochrome display adapter */
#define	KD_HERCULES	02	/* Hercules monochrome graphics adapter */
#define	KD_CGA		03	/* IBM color graphics adapter */
#define	KD_EGA		04	/* IBM enhanced graphics adapter */
#define	KD_VGA		05	/* IBM video graphics array adapter */

#define VGA_COLOR	6	/* IBM VGA with color display */
#define VGA_MONO	7	/* IBM VGA with mono display */

/*
 * Virtual display constants
 */
#define	KD_WIDTH	80		/* normal screen width */
#define	KD_NARROWWIDTH	40		/* narrow screen width */
#define	KD_HEIGHT	25		/* screen height */
#define	KD_MAXSCRSIZE	(KD_WIDTH * KD_HEIGHT)	/* max supported screen size */
#define	KD_SCRTOBUF	0		/* transfer from screen to buffer */
#define	KD_BUFTOSCR	1		/* transfer from buffer to screen */

/*
 * keyboard controller I/O port addresses
 */
#define KB_OUT	0x60		/* output buffer R/O */
#define KB_IDAT 0x60		/* input buffer data write W/O */
#define KB_STAT 0x64		/* keyboard controller status R/O */
#define KB_ICMD 0x64		/* input buffer command write W/O */

/*
 * keyboard controller commands and flags
 */
#define KB_INBF		0x02	/* input buffer full flag */
#define KB_OUTBF	0x01	/* output buffer full flag */
#define KB_GATE20	0x02	/* set this bit to allow addresses > 1Mb */
#define KB_ROP		0xD0	/* read output port command */
#define KB_WOP		0xD1	/* write output port command */
#define	KB_RCB		0x20	/* read command byte command */
#define	KB_WCB		0x60	/* write command byte command */
#define	KB_ENAB		0xae	/* enable keyboard interface */
#define	KB_INHIB	0x10	/* keyboard inhibited */
#define	KB_DISAB	0xad	/* disable keyboard */
#define	KB_EOBFI	0x01	/* enable interrupt on output buffer full */
#define	KB_INOV		0x08	/* override keyboard inhibit function */
#define KB_ACK		0xFA	/* Acknowledgement byte from keyboard */
#define	KB_RESETCPU	0xFE	/* command to reset AT386 cpu */
#define	KB_READID	0xF2	/* command to read keyboard ID */

/*
 * The keyboard translation tables are laid out as follows:
 * There are four tables, one for unaugmented keypresses,
 * one for shifted keypresses, one for alted keypresses, and
 * one for shift-alted keypresses.  Each table has 128 16 bit 
 * entries, containing flags in the top 8 bits and the character
 * to send in the lower 8 bits.
 *
 *	 1 1 1   1
 *	 5 4 3   1  8 7      0
 *	+-+-+-+-+----+--------+
 *	|n|c|t| |type| char   |
 *      +-+-+-+-+----+--------+
 *
 *	n - key affected by num lock flag
 *	c - key affected by caps lock flag
 *	t - key affected by control key flag
 *	type - type of key, prefix specifier
 *	char - character to send
 *
 */
/*
 * keyboard translation modes
 */
#define	K_RAW		0x00	/* keyboard just sends raw up/down scan codes */
#define	K_XLATE		0x01	/* keyboard translates scan codes to ascii */
/*
 * table selectors
 */
#define	K_NORMTAB	0x00	/* select unaugmented keyboard table */
#define	K_SHIFTTAB	0x01	/* select shifted keyboard table */
#define	K_ALTTAB	0x02	/* select alted keyboard table */
#define	K_ALTSHIFTTAB	0x03	/* select alt-shifted keyboard table */
#define	K_ALTGRTAB	0x04	/* select alt-gr keyboard table */
#define	K_DEADKEYTAB	0x05	/* select dead key table */
#define	K_CONVTAB	0x06	/* select 7 bit conversion table */
/*
 * character table flag bits.
 */
#define	NUMLCK		0x8000	/* flag key as affected by num lock key */
#define	CAPLCK		0x4000	/* flag key as affected by caps lock key */
#define	CTLKEY		0x2000	/* flag key as afected by control keys */
/*
 * character table key types
 */
#define	NORMKEY		0x0000	/* key is a normal key, send with no prefix */
#define	SHIFTKEY	0x0100	/* key is a shift key */
#define	BREAKKEY	0x0200	/* key is a break key */
#define	SS2PFX		0x0300	/* prefix key with <ESC> N */
#define	SS3PFX		0x0400	/* prefix key with <ESC> O */
#define	CSIPFX		0x0500	/* prefix key with <ESC> [ */
#define DEADKEY1	0x0600	/* key is dead key  no. 1 */
#define DEADKEY2	0x0700	/* key is dead key  no. 2 */
#define DEADKEY3	0x0800	/* key is dead key  no. 3 */
#define DEADKEY4	0x0900	/* key is dead key  no. 4 */
#define DEADKEY5	0x0a00	/* key is dead key  no. 5 */
#define DEADKEY6	0x0b00	/* key is dead key  no. 6 */
#define DEADKEY7	0x0c00	/* key is dead key  no. 7 */
#define DEADKEY8	0x0d00	/* key is dead key  no. 8 */
#define SWITCHKEY	0x0e00	/* key is VT switch key */
#define	NOKEY		0x0f00	/* flag a key as nonexistant */
#define	TYPEMASK	0x0f00	/* select key type bits */

/*
 * kb_state bit definitions
 */
#define LEFT_SHIFT	0x01	/* left shift key depressed */
#define	LEFT_ALT	0x02	/* left alt key depressed */
#define	LEFT_CTRL	0x04	/* left control key depressed */
#define	RIGHT_SHIFT	0x08	/* right shift key depressed */
#define	RIGHT_ALT	0x10	/* right alt key depressed */
#define	RIGHT_CTRL	0x20	/* right control key depressed */
#define	CAPS_LOCK	0x40	/* caps lock key down */
#define	NUM_LOCK	0x80	/* num lock key down */
#define	ALTSET		(LEFT_ALT|RIGHT_ALT)
#define	SHIFTSET	(LEFT_SHIFT|RIGHT_SHIFT)
#define	CTRLSET		(LEFT_CTRL|RIGHT_CTRL)
#define	NONTOGGLES	(ALTSET|SHIFTSET|CTRLSET)

/* keyboard scan codes */
#define SYS_REQ	0x54		/* system request key */
#define DEL_KEY	0x53		/* delete key */
#define D_KEY	0x20		/* 'd' key */
#define N_KEY	0x31		/* 'n' key */
#define P_KEY	0x19		/* 'p' key */
#define F_KEY	0x21		/* 'f' key */
#define F1_KEY	0x3B		/* F1 key */
#define F2_KEY	0x3C		/* F2 key */
#define F3_KEY	0x3D		/* F3 key */
#define F4_KEY	0x3E		/* F4 key */
#define F5_KEY	0x3F		/* F5 key */
#define F6_KEY	0x40		/* F6 key */
#define F7_KEY	0x41		/* F7 key */
#define F8_KEY	0x42		/* F8 key */
#define F9_KEY	0x43		/* F9 key */
#define F10_KEY	0x44		/* F10 key */

#define	ESCTBLSIZ	18	/* no. of entries in 101/102 key index tbl */

#define SIZETTY (sizeof(struct tty))

/*
 * character flags, should not conflict with FRERROR and friends
 * in tty.h
 */
#define GEN_ESCLSB	0x0800		/* generate <ESC> [ prefix to char */
#define GEN_ESCN	0x0400		/* generate <ESC> N prefix to char */
#define GEN_ESCO	0x0200		/* generate <ESC> O prefix to char */
#define NO_CHAR		0x8000		/* did not generate a char */

#define MAXTAB	10		/* maximum number of tab stops */

/* Commands for LED and typematic start/rate on the AT */
#define	KDCQMAX		8	/* length of keyboard command queue */
#define LED_WARN	0xED	/* Tell kbd that following byte is led status */
#define LED_SCR         0x01    /* Flag bit for scroll lock */
#define LED_NUM		0x02	/* Flag bit for num lock */
#define LED_CAP		0X04	/* Flag bit for cap lock */
#define	ACK_WAIT	0x01	/* flag for waiting for kbd response */
#define	TYPE_WARN	0xF3	/* command--next byte is typematic values */
#define	TYPE_VALS	0x20	/* max speed (30/s) and 1/2 sec delay */
#define	SCAN_WARN	0xF0	/* kbd command to set scan code set */

/*
 * type of adapter installed, matches bits in CMOS ram
 */
#define	MCAP_UNK	0xff	/* adapter not determined yet */
#define MCAP_MONO	0x03	/* mono adapter installed */
#define MCAP_COLOR	0x02	/* color adapter installed in 80 column mode */
#define MCAP_COLOR40	0x01	/* color adapter installed in 40 column mode */
#define MCAP_EGA	0x00	/* EGA adapter installed */

/* offsets from 6845 base address for various registers */
#define DATA_REG	0x1
#define MODE_REG	0x4
#define COLOR_REG	0x5	/* color adapter only */
#define STATUS_REG	0x6

/* definitions for bits in ad_colmode */
#define MODE_TYPE	0x07   	/* mask for alpha/graphic modes */
#define MODE_GRAPH	0x04  	/* graphics modes */
#define MODE_40		0x00	/* 40x25 alphanumeric */
#define MODE_80		0x01	/* 80x25 alphanumeric */
#define MODE_GRLRES	0x04	/* 160x100 graphics */
#define MODE_GRMRES	0x05	/* 320x200 graphics */
#define MODE_GRHRES	0x06	/* 640x200 graphics */
#define MODE_BLINK	0x00	/* 8 background colors, blink */
#define MODE_BG16	0x08	/* 16 background colors, no blink */
#define MODE_CO		0x00	/* color adaptor, enable color */
#define MODE_BW		0x10	/* color adaptor, disable color */

/* definitions for bits in the color adapter mode register */
#define M_ALPHA40	0x00	/* 40 by 25 alphanumeric */
#define M_ALPHA80	0x01	/* 80 by 25 alphanumeric */
#define M_GRAPH		0x02	/* 320x200 or 640x200 graphics */
#define M_BW		0x04	/* black & white */
#define M_ENABLE	0x08	/* video enable */
#define M_HIGHRES	0x10	/* 640x200 B&W graphics */
#define M_BLINK		0x20	/* enable blink attribute */

/* definitions for bits in the color adapter status register */
#define S_UPDATEOK	0x01	/* safe to update regen buffer */
#define S_VSYNC		0x08	/* raster is in vertical retrace mode */

/* definitions for loading data into CRT controller registers */
#define R_STARTADRH	12	/* start address, high word */
#define R_STARTADRL	13	/* start address, low word */
#define R_CURADRH	14	/* cursor address, high word */
#define R_CURADRL	15	/* cursor address, low word */

/* definitions for the EGA */
#define IN_STAT_0	0x3c2	/* input status register zero */
#define MISC_OUT	0x3c2	/* miscellaneous output register */
#define MISC_OUT_READ	0x3cc	/* read misc output register on VGA */
#define IO_ADDR_SEL	0x1	/* IO address select in misc out reg */
#define IN_STAT_1	6	/* offset of input status register 1 */
#define FEAT_CTRL	6	/* offset of feature control register */
#define SW_SENSE	0x10	/* switch sense bit in input status zero */
#define CLKSEL		2	/* shift to select switch number */
#define GRAPH_1_POS	0x3cc	/* graphics 1 position */
#define GRAPH_2_POS	0x3ca	/* graphics 2 position */
#define GRAPHICS1	0	/* value for graphics 1 */
#define GRAPHICS2	1	/* value for graphics 2 */
#define SEQ_RUN		0x03	/* start sequencer */
#define SEQ_RESET	0x01	/* synchronously reset sequencer */
#define CHGEN_BASE	0xa0000	/* base address for character generator */
#define CHGEN_SIZE	8192	/* character generator is 8K */
#define MONO_BASE	0xb0000	/* location of mono display memory */
#define MONO_SIZE	4096	/* mono has 4K of memory */
#define COLOR_BASE	0xb8000	/* location of color display memory */
#define COLOR_SIZE	16384	/* color has 16K of memory */
#define	EGA_BASE	0xa0000	/* location of enhanced display memory */
#define EGA_SIZE	32768	/* EGA has at least 32K in planes 0,1 */
#define	VGA_BASE	0xa0000	/* location of enhanced display memory */
#define VGA_SIZE	65536	/* VGA has at least 64K in planes 0-3 */
#define NSEQ		5	/* number of sequencer registers */
#define NATTR		21	/* number of attribute registers */
#define NGRAPH		9	/* number of graphics registers */
#define LOAD_COLOR	4	/* mode number for loading color characters */
#define LOAD_MONO	5	/* mode number for loading mono characters */

/* definitions for bits in the attribute byte */
#define BLINK		0x80
#define BRIGHT		0x08
#define REVERSE		0x70
#define NORM		0x07
#define UNDERLINE	0x01	/* underline on mono, blue on color */

#define CLEAR		(NORM<<8|0x20)
#define BCLEAR		(NORM|BRIGHT<<8|0x20)
#define ALLATTR		(BLINK|BRIGHT|REVERSE|NORM|UNDERLINE)
#define NOTBGRND	(ALLATTR&(~REVERSE))
#define NOTFGRND	(ALLATTR&(~NORM))

#define CLK_MODE	0x01	/* Sequencer memory mode */
#define MEM_MODE	0x04	/* Sequencer memory mode */
#define MAP_MASK	0x02	/* Sequencer memory write mask */
#define READ_MASK	0x04	/* Graphics Controller read mask */
#define GR_MODE		0x05	/* Graphics Controller mode */
#define GR_MISC		0x06	/* Graphics Controller miscellaneous reg */

#define GR_GRAPHICS	0x01	/* Graphics mode in misc register above */
#define SCREEN_OFF	0x20	/* turn off VGA display */
#define PALETTE_ENABLE	0x20	/* palette address source in attribute reg */

#define	MEM_MAP		0xc	/* Mask for the memory mapping register */
#define	MAP_A01		0x0	/* Memory mapped to A0000 for 128K bytes */
#define	MAP_A02		0x4	/* Memory mapped to A0000 for 64K bytes */
#define	MAP_B0		0x8	/* Memory mapped to B0000 for 32K bytes */
#define	MAP_B8		0xc	/* Memory mapped to B8000 for 32K bytes */

/* definitions for the VGA Video DAC */
#define	PEL_READ	0x3c7	/* Pel address to start reading RGB data */
#define	PEL_WRITE	0x3c8	/* Pel address to start writing RGB data */
#define	PEL_DATA	0x3c9	/* Register to read or write RGB data */
#define NPEL_REGS	256	/* number of entries in Video DAC color table */

/* definitions for ringing the bell */
#define NORMBELL	1331	/* initial value loaded into timer */
#define BELLLEN		(HZ/10)	/* ring for 1/10 sec. between checks */
#define BELLCNT		2	/* check bell twice before turning off */
#define TONE_ON		3	/* 8254 gate 2 and speaker and-gate enabled */
#define TIMER		0x40	/* 8254.2 timer address */
#define TIMERCR		TIMER+3	/* timer control register address */
#define TIMER2		TIMER+2	/* timer tone generation port */
#define T_CTLWORD	0xB6	/* value for timer control word */
#define TONE_CTL	0x61	/* address for enabling timer port 2 */


struct adtstruct {
	ushort	*ad_scraddr;	/* address of adaptor memory */
	ushort	ad_scrmask;	/* size-1 in shorts of adaptor memory */
	ushort	ad_address;	/* address of corresponding M6845 or EGA */
	unchar	ad_type;	/* adapter type */
	unchar	ad_colmode;	/* color adapter mode */
	unchar	ad_colsel;	/* color select register byte */
	unchar	ad_modesel;	/* mode register byte */
	unchar	ad_undattr;	/* attribute to use when underlining */
};


struct kdvtinfo {	/* device specific info for kd vt driver */
	unchar			kbmode;		/* keyboard mode */
	unchar			dmode;		/* display mode */
	unchar			flags;		/* flags */
	struct ansistate	as;	/* ansi terminal state */
	dev_t			devid;  /* process id of owner */
};

#define	KD_TEXT		0	/* ansi x3.64 emulation mode */
#define KD_TEXT0        0       /* same as above */
#define KD_TEXT1        2       /* new text mode doesnt load char generator */
#define	KD_GRAPHICS	1	/* graphics mode */

#define	KD_MAPPED	0x01	/* set when display is mapped */

/*
 * Types for indexing into reginfo table.
 */
#define I_6845MONO	0
#define I_6845COLOR	1
#define I_EGAMONO	2
#define I_EGACOLOR	3
#define I_SEQ		4
#define I_GRAPH		5
#define I_ATTR		6

/*
 * Macro for setting a particular EGA register.
 */
#define out_reg(riptr, index, data)	outb((riptr)->ri_address, (index)), \
					outb((riptr)->ri_data, (data));
/*
 * for VGA, we can also read a register
 */
#define in_reg(riptr, index, data)	outb((riptr)->ri_address, (index)), \
					data = inb((riptr)->ri_data);
	
struct reginfo {
	ushort	ri_count;	/* number of registers */
	ushort	ri_address;	/* address register */
	ushort	ri_data;	/* data register */
};

struct m6845init {
	unchar  mi_hortot;	/* Reg  0: Horizontal Total     (chars) */
	unchar  mi_hordsp;	/* Reg  1: Horizontal Displayed (chars) */
	unchar  mi_hsnpos;	/* Reg  2: Hsync Position       (chars) */
	unchar  mi_hsnwid;	/* Reg  3: Hsync Width          (chars) */
	unchar  mi_vertot;	/* Reg  4: Vertical Total   (char rows) */
	unchar  mi_veradj;	/* Reg  5: Vtotal Adjust   (scan lines) */
	unchar  mi_vsndsp;	/* Reg  6: Vertical Display (char rows) */
	unchar  mi_vsnpos;	/* Reg  7: Vsync Position   (char rows) */
	unchar  mi_intlac;	/* Reg  8: Interlace Mode               */
	unchar  mi_maxscn;	/* Reg  9: Max Scan Line   (scan lines) */
	unchar  mi_curbeg;	/* Reg 10: Cursor Start    (scan lines) */
	unchar  mi_curend;	/* Reg 11: Cursor End      (scan lines) */
	unchar  mi_stadh;	/* Reg 12: Start Address (H)            */
	unchar  mi_stadl;	/* Reg 13: Start Address (L)            */
	unchar  mi_cursh;	/* Reg 14: Cursor (H)                   */
	unchar  mi_cursl;	/* Reg 15: Cursor (L)                   */
};

struct egainit {
	unchar  ei_hortot;	/* Reg  0: Horizontal Total */
	unchar  ei_hde;		/* Reg  1: Horizontal Display End */
	unchar  ei_shb;		/* Reg  2: Start horizontal blank */
	unchar  ei_ehb;		/* Reg  3: End horizontal blank */
	unchar  ei_shr;		/* Reg  4: Start horizontal retrace */
	unchar  ei_ehr;		/* Reg  5: End horizontal retrace */
	unchar  ei_vertot;	/* Reg  6: Vertical total */
	unchar  ei_ovflow;	/* Reg  7: Overflow */
	unchar  ei_prs;		/* Reg  8: Preset row scan */
	unchar  ei_maxscn;	/* Reg  9: Max Scan Line */
	unchar  ei_curbeg;	/* Reg 10: Cursor Start */
	unchar  ei_curend;	/* Reg 11: Cursor End */
	unchar  ei_stadh;	/* Reg 12: Start Address (H) */
	unchar  ei_stadl;	/* Reg 13: Start Address (L) */
	unchar  ei_cursh;	/* Reg 14: Cursor location (H) */
	unchar  ei_cursl;	/* Reg 15: Cursor location (L) */
	unchar	ei_vrs;		/* Reg 16: Vertical retrace start */
	unchar	ei_vre;		/* Reg 17: Vertical retrace end */
	unchar	ei_vde;		/* Reg 18: Vertical display end */
	unchar	ei_offset;	/* Reg 19: Offset */
	unchar	ei_undloc;	/* Reg 20: Underline location */
	unchar	ei_svb;		/* Reg 21: Start vertical blank */
	unchar	ei_evb;		/* Reg 22: End vertical blank */
	unchar	ei_mode;	/* Reg 23: Mode control */
	unchar	ei_lcomp;	/* Reg 24: Line compare */
};

struct reginit {
	unchar		seqtab[NSEQ];
	unchar		miscreg;
	struct egainit	egatab;
	unchar		attrtab[NATTR];
	unchar		graphtab[NGRAPH];
};

struct egastate {
	unchar	es_mode;
	unchar	*es_chargen; 
};

struct adtmode {
	unchar	am_capability;
	unchar	am_colmode;
	unchar	am_colsel;
};

/* defines for keyboard and display ioctl's */
#define KIOC		('K'<<8)
#define	KDDISPTYPE	(KIOC|1)	/* return display type to user */
#define	KDMAPDISP	(KIOC|2)	/* map display into user space */
#define	KDUNMAPDISP	(KIOC|3)	/* unmap display from user space */
#define	KDGKBENT	(KIOC|4)	/* get keyboard table entry */
#define	KDSKBENT	(KIOC|5)	/* set keyboard table entry */
#define	KDGKBMODE	(KIOC|6)	/* get keyboard translation mode */
#define	KDSKBMODE	(KIOC|7)	/* set keyboard translation mode */
#define	KDMKTONE	(KIOC|8)	/* sound tone */
#define	KDGETMODE	(KIOC|9)	/* get text/graphics mode */
#define	KDSETMODE	(KIOC|10)	/* set text/graphics mode */
#define	KDADDIO		(KIOC|11)	/* add I/O address to list */
#define	KDDELIO		(KIOC|12)	/* delete I/O address from list */
#define KDGETCHGEN      (KIOC|40)       /* get EGA character generator */
#define KDSETCHGEN      (KIOC|41)       /* set EGA character generator */
#define	KDGKBTYPE	(KIOC|64)	/* get keyboard type */
#define KDGETLED        (KIOC|65)       /* get keyboard led status */
#define KDSETLED        (KIOC|66)       /* set keyboard led status */
#define	KDENABIO	(KIOC|60)	/* enable direct I/O to ports */
#define	KDDISABIO	(KIOC|61)	/* disable direct I/O to ports */
#ifdef VPIX
#define KIOCINFO        (KIOC|62)       /* tell user what device we are */
#define KIOCSOUND       (KIOC|63)       /* start sound generation */
#endif /* VPIX */

/* keyboard types */
#define	KB_84		1		/* 84-key keyboard */
#define	KB_101		2		/* 101/102-key keyboard */
#define	KB_OTHER	3		/* other type of keyboard */

struct kbentry {
	unchar	kb_table;	/* which table to use */
	unchar	kb_index;	/* which entry in table */
	ushort	kb_value;	/* value to get/set in table */
};

#define	MKDIOADDR	64	/* max no. of I/O addresses supported */

struct kd_disparam {
	long	type;	/* display type */
	char	*addr;	/* display memory address */
	ushort	ioaddr[MKDIOADDR];	/* valid I/O addresses */
};

struct kd_memloc {
	char	*vaddr;		/* virtual address to map to */
	char	*physaddr;	/* physical address to map from */
	long	length;		/* size in bytes to map */
	long	ioflg;		/* enable I/O addresses if non-zero */
};