|
|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T U
Length: 43458 (0xa9c2)
Types: TextFile
Notes: Uncompressed file
└─⟦5a9f1bdbd⟧ Bits:30004698 RC900 Environment Rel. 2.0 (5.25 inch)
└─⟦5a9f1bdbd⟧ UNIX Filesystem
└─⟦2862ab31d⟧ »RCENV.ISC/new/usr/include/sys/kd.h.Z«
└─⟦de58d8f44⟧ Bits:30004699 RC900 Environment Rel. 2.0 (3.5 inch)
└─⟦de58d8f44⟧ UNIX Filesystem
└─⟦2862ab31d⟧ »RCENV.ISC/new/usr/include/sys/kd.h.Z«
└─⟦this⟧
/* Copyright (c) 1984, 1986, 1987, 1988 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
/* Copyright (c) 1987, 1988 Microsoft Corporation */
/* All Rights Reserved */
/* This Module contains Proprietary Information of Microsoft */
/* Corporation and should be treated as Confidential. */
/*
* definitions for PC AT keyboard/display driver
*/
/*
* Copyrighted as an unpublished work.
* (c) Copyright 1986,1988 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 3.1 - 92/09/09"
#ident "@(#)kd.h 2.20 - 90/03/29 ISC"
#ident "@(#) (c) Copyright INTERACTIVE Systems Corporation 1986,1988"
/*
* Adaptor specific values
*/
#define AD_ON 1 /* turn device on */
#define AD_OFF 0 /* turn device off */
/*
* Types of displays supported
*/
#define KD_MONO 01 /* monochrome display adapter */
#define KD_HERCULES 02 /* Hercules monochrome graphics adapter */
#define KD_CGA 03 /* color graphics adapter */
#define KD_EGA 04 /* enhanced graphics adapter */
#define KD_VGA 05 /* video graphics array adapter */
/*
** Zenith Z449 definitions
*/
#define Z449_STAMP 0xc0039 /* the address of the stamp */
#define Z449_SWITCH 0x3cb /* the switch location */
#define Z449_START 70 /* offset to the inittab in kd.c */
/*
** Toshiba T5100 definitions
*/
#define T5100_STAMP 0xfe000 /* the address of the stamp */
/* Xenix display/adapter definitions */
#define MONO 1 /* Xenix value for monochrome */
#define CGA 2 /* Xenix value for color graphics */
#define PGA 3 /* Xenix value for professional graphics */
#define EGA 4 /* Xenix value for enhanced graphics */
#define VGA 5 /* Xenix value for video graphics array */
/*
* Virtual display constants
*/
#define KD_WIDTH 80 /* normal screen width */
#define KD_NARROWWIDTH 40 /* narrow screen width */
#define KD_EXTRAWIDTH 132 /* wide screen width */
#define KD_HEIGHT 25 /* screen height */
#define KD_TALLHEIGHT 43 /* tall screen height */
#define KD_MAXSCRSIZE (KD_EXTRAWIDTH * KD_TALLHEIGHT) /* max screen size */
#define KD_SCRTOBUF 0 /* transfer from screen to buffer */
#define KD_BUFTOSCR 1 /* transfer from buffer to screen */
#define DEFLTEGAMODE 2
/*
* 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_DISAB 0x10 /* disable keyboard */
#define KB_EOBFI 0x01 /* enable interrupt on output buffer full */
#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 */
/*
* Structure of keyboard translation table
*/
#define NUM_KEYS 256 /* Maximum number of keys */
#define NUM_STATES 8 /* Number of key states */
#pragma pack(2)
typedef struct {
short n_keys ; /* Number of entries in table */
struct key_t {
unsigned char map[NUM_STATES]; /* Key code for each state */
unsigned char spcl; /* Bits marking states as special */
unsigned char flgs; /* Flags */
} key[NUM_KEYS+1]; /* One entry for each key */
} keymap_t;
#pragma pack()
struct pfxstate {
unchar val;
unchar type;
};
/*
* Keyboard translation modes
*/
#define K_RAW 0x00 /* Just send raw up/down scan codes */
#define K_XLATE 0x01 /* Translate scan codes to ASCII */
/*
* 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 SPECIALKEY 0x0600 /* special key type */
#define NOKEY 0x0f00 /* flag a key as nonexistant */
#define TYPEMASK 0x0f00 /* select key type bits */
/*
* Table selectors for KDSKBENT/KDGKBENT ioctl's
*/
#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_SRQTAB 0x04 /* select sysreq table */
/*
* Make/break distinctions
*/
#define KBD_BREAK 0x80 /* Key make/break bit (break=1) */
/*
* Flags for key state calculation.
*/
#define SHIFTED 0x01 /* Keys are shifted */
#define CTRLED 0x02 /* Keys are ctrl'd */
#define ALTED 0x04 /* Keys are alt'd */
/*
* Possible key states. Used as index into translation entry for key.
*/
#define NORMAL 0 /* Unmodified */
#define SHIFT SHIFTED /* Shift key depressed */
#define CTRL CTRLED /* Ctrl key depressed */
#define SHFCTL (CTRLED|SHIFTED) /* Shift and ctrl keys */
#define ALT ALTED /* Alt key depressed */
#define ALTSHF (ALTED|SHIFTED) /* Shift and alt keys depressed */
#define ALTCTL (ALTED|CTRLED) /* Ctrl and alt keys depressed */
#define ALTSHFCTL (ALTED|CTRLED|SHIFTED) /* Shift, ctrl, and alt keys */
/*
* Key map table flags
*/
#define KMF_CLOCK 0x01 /* Key affected by caps lock */
#define KMF_NLOCK 0x02 /* Key affected by num lock */
/*
* kb_state bit definitions
*/
#define LEFT_SHIFT 0x0001 /* left shift key depressed */
#define LEFT_ALT 0x0002 /* left alt key depressed */
#define LEFT_CTRL 0x0004 /* left control key depressed */
#define RIGHT_SHIFT 0x0008 /* right shift key depressed */
#define RIGHT_ALT 0x0010 /* right alt key depressed */
#define RIGHT_CTRL 0x0020 /* right control key depressed */
#define CAPS_LOCK 0x0040 /* caps lock key down */
#define NUM_LOCK 0x0080 /* num lock key down */
#define SCROLL_LOCK 0x0100 /* scroll 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 SCROLLLOCK 0x46 /* Scroll lock key */
/*
* Number of entries in 0xe0 prefix translation table
*/
#define ESCTBLSIZ 18 /* Entries in 101/102 key table */
/*
* Character flags. Should not conflict with FRERROR and friends in tty.h
*/
#define NO_CHAR 0x8000 /* Do not generate a char */
#define GEN_ESCLSB 0x0800 /* Generate <ESC> [ prefix to char */
#define GEN_ESCN 0x0400 /* Generate <ESC> N prefix to char */
#define GEN_ZERO 0x0200 /* Generate 0 prefix to char */
#define GEN_FUNC 0x0100 /* Generate function key */
#define GEN_ESCO 0x1000 /* Generate <ESC> O prefix to char */
/*
* Special key code definitions
*/
#define K_NOP 0 /* Keys with no function */
#define K_LSH 2 /* Left shift */
#define K_RSH 3 /* Right shift */
#define K_CLK 4 /* Caps lock */
#define K_NLK 5 /* Num lock */
#define K_SLK 6 /* Scroll lock */
#define K_ALT 7 /* Alt */
#define K_BTAB 8 /* Back tab */
#define K_CTL 9 /* Control */
#define K_LAL 10 /* Left alt */
#define K_RAL 11 /* Right alt */
#define K_LCT 12 /* Left control */
#define K_RCT 13 /* Right control */
#define K_FUNF 27 /* First function key */
#define K_FUNL 122 /* Last function key */
#define K_SRQ 123 /* System request */
#define K_BRK 124 /* Break */
#define K_ESN 125 /* <ESC> N <unalt'd value> sequence */
#define K_ESO 126
#define K_ESL 127
#define K_RBT 128 /* Reboot system */
#define K_DBG 129 /* Invoke debugger */
#define K_NEXT 130
#define K_PREV 131
#define K_FRCNEXT 132
#define K_FRCPREV 133
#define K_VTF 134
#define K_VTL 148
#define K_MGRF 149
#define K_MGRL 191
#define K_PFXF 192
#define K_PFXL 255
/*
* Macro for recognizing scan codes for special keys
*/
#define IS_SPECIAL(d,s,i)(d->kb_keymap->key[(s)].spcl & (0x80>>(i)))
#define IS_NPKEY(s) (((s) >= 71) && ((s) <=83)) /* Number pad? */
/*
* Function key constants and macros
*/
#define NSTRKEYS (K_FUNL-K_FUNF+1) /* Number of string keys */
#define STRTABLN 1024 /* Max length of sum of all strings */
#define STRTABLN_21 256 /* Max length of sum in version 2.1 */
#define IS_FUNKEY(c) (((c) >= K_FUNF) && ((c) <= K_FUNL) || ((c) >= K_PFXF) && ((c) <= K_PFXL)) /* Function? */
/* Seperate function keys from prefix keys, the later are carried from V.3 */
#define IS_STRKEY(c) (c >= K_FUNF && c <= K_FUNL ) /* String? */
#define IS_PFXKEY(c) (c >= K_PFXF && c <= K_PFXL ) /* Esc prefix? */
typedef unchar strmap_t[STRTABLN]; /* String map table type */
typedef unchar *strmapp_t; /* Pointer to string map type */
#define STRMAPENT(m,t,e) ((m) + (t) * STRTABLN + (e)) /* Map entry */
typedef ushort stridx_t[NSTRKEYS + 1]; /* String map index type */
typedef ushort *stridxp_t; /* Pointer to string map index type */
#define STRMAPIDX(m,t,e) (*((m) + (t) * (NSTRKEYS + 1) + (e))) /* Index */
typedef unchar srqtab_t[NUM_KEYS + 1];
/* Shorthand for constants so columns line up neatly */
#define KF K_FUNF /* First function key */
#define L_O 0 /* Key not affected by locks */
#define L_C KMF_CLOCK /* Key affected by caps lock */
#define L_N KMF_NLOCK /* Key affected by num lock */
#define L_B (KMF_CLOCK|KMF_NLOCK) /* Key affected by caps and num lock */
/*
* Structure used for SETFKEY and GETFKEY ioctls
*/
#define MAXFK 30 /* Maximum length of string */
#pragma pack(2)
struct fkeyarg {
unsigned short keynum; /* Function key number */
unchar keydef[MAXFK]; /* Key definition */
char flen; /* Length of key definition */
};
#pragma pack()
/*
* Constants for extended keys
*/
#define NUMEXTSTATES 4 /* Number of extended states */
/* 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 */
/*
* Screen mapping constants and types
*/
#define NUM_ASCII 256 /* Number of ASCII characters */
typedef unchar scrnmap_t[NUM_ASCII]; /* Screen map type */
typedef unchar *scrnmapp_t; /* Pointer to screen map type */
/*
* 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 */
/* 6845 base addresses */
#define MONO_REGBASE 0x03b4 /* Base register address for mono modes */
#define COLOR_REGBASE 0x03d4 /* Base register address for color modes */
/* offsets from 6845 base address for various registers */
#define DATA_REG 0x1
#define MODE_REG 0x4
#define MODE2_REG 0x0A /* rite-vu card only */
#define COLOR_REG 0x5 /* color adapter only */
#define STATUS_REG 0x6
/* 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 mode2 register ( rite-vu card )*/
#define M_GRAPH2 0x01 /* 640x400 graphics AT&T mode */
#define M_DEGAUSS 0x02 /* degauss color monitor */
#define M_ALTCHAR 0x04 /* rite-vu card alternate character set */
#define M_PGSEL 0x08 /* switch to 2nd 16kbytes of memory */
#define M_UNDRLINE 0x40 /* underline white chars, not blue */
/* 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 PALETTE_ENABLE 0x20 /* palette address source in attribute reg */
#define CHGEN_BASE 0xa0000 /* base address for character generator */
#define CHGEN_SIZE 8192 /* character generator is 8K */
#define MONO_BASE 0xb0000 /* Location of monochrome display memory */
#define MONO_SIZE 0x8000 /* Monochrome has 32K of memory available */
#define MONO_SCRMASK 0x7ff /* Mono text memory wraps at 4K */
#define COLOR_BASE 0xb8000 /* Location of color display memory */
#define COLOR_SIZE 0x8000 /* Color has up to 32K of memory available */
#define COLOR_SCRMASK 0x1fff /* Color text memory wraps at 16K */
#define EGA_BASE 0xa0000 /* Location of enhanced display memory */
#define EGA_SIZE 0x10000 /* EGA has at 64K of memory available */
#define EGA_LGSIZE 0x20000 /* Larger EGA has 128K of memory available */
#define EGA_SCRMASK 0x3fff /* EGA text memory wraps at 32K (minimum) */
#define NSEQ 5 /* number of sequencer registers */
#define NATTR 21 /* number of attribute registers */
#define NGRAPH 9 /* number of graphics registers */
/* Font types supported */
#define FONTINV 0
#define FONT8x8 1 /* 8x8 font */
#define FONT8x14 2 /* 8x14 font */
#define FONT8x14m 3 /* 8x14 font for monochrome */
#define FONT8x16 4 /* 8x16 font */
#define NUM_FONTS 4 /* Number of fonts supported */
/* Offsets and sizes of font tables */
#define F8x8 (FONT8x8-1) /* Array entry of 8x8 font in table */
#define F8x8_BPC 8 /* Bytes per character in 8x8 font */
#define F8x8_NCH 256 /* Number of characters in 8x8 font */
#define F8x14 (FONT8x14-1) /* Array entry of 8x14 font in table */
#define F8x14m (FONT8x14m-1) /* Array entry of 8x14 mono table */
#define F8x14_BPC 14 /* Bytes per character in 8x14 font */
#define F8x14_NCH 256 /* Number of characters in 8x14 font */
#define F8x16 (FONT8x16-1) /* Array entry of 8x16 font in table */
#define F8x16_BPC 16 /* Bytes per character in 8x16 font */
#define F8x16_NCH 256 /* Number of characters in 8x16 font */
/* 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 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 /* 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 */
#define AD_REGS 0x01 /* Reload before accessing register */
#define AD_ACTIVE 0x02
struct cga_registers
{
unchar cga_mode; /* Mode select register value */
unchar cga_color; /* Color select register value */
ushort cga_index; /* Index into cga_videop array */
};
struct kdvtinfo { /* device specific info for kd vt driver */
scrnmapp_t kv_scrnmap; /* Output character map */
unsigned kv_sending; /* Sending screen? */
ushort kv_rows; /* Rows sent from screen */
ushort kv_cols; /* Columns sent from screen */
unchar kv_kbmode; /* keyboard mode */
unchar kv_dmode; /* display mode */
unchar kv_egamode; /* Saved EGA mode */
unchar kv_flags; /* flags */
struct ansistate kv_as; /* ansi terminal state */
struct v86dat **kv_stashed_p_86;
struct proc *kv_proc; /* owner of virtual display */
int (*kv_procrtn)();/* proc routine */
strmapp_t kv_strbuf; /* ptr to string table */
stridxp_t kv_stridx; /* prt to index table */
ushort *kv_scrbuf; /* screen buffer */
struct keyboardinfo *kv_kb; /* description of keyboard */
struct adtstruct *kv_ad; /* description of adaptor */
};
/* Space in bytes consumed by all structures for one virtual terminal */
#define VTTYSIZE (sizeof(struct tty) + sizeof(struct vtty) + \
sizeof(struct kdvtinfo) + sizeof(ushort) * KD_MAXSCRSIZE + \
sizeof(struct v86dat *) + sizeof(strmap_t) + \
sizeof(stridx_t) + sizeof(scrnmap_t))
/*
* Description of the current state of the keyboard.
*/
#define KDINPUT 64
struct keyboardinfo {
/* entries below must be initialized by device specific code */
ushort kb_station; /* the station number of this keybrd */
unchar kb_type; /* type of keyboard */
ushort kb_iocinfo; /* Returned by the KIOCINFO call */
keymap_t *kb_keymap; /* pointer to input keymap */
struct pfxstate *kb_pfxstr; /* pointer to prefix string */
unchar (*kb_getchar)(); /* routine to retrieve input chars */
int (*kb_send)(); /* routine to send command to keyboard */
unchar kb_typerat; /* typematic rate of the keyboard */
/* entries below are temporary variables used by kd_cmn */
unchar kb_sysreq; /* true if last char was ctl-sys req */
ushort kb_state; /* kb shift/control/alt state */
int kb_alt_seq; /* Alt seq buildup */
unchar kb_prevscan; /* previous scan code */
/* entries below not used by kd_cmn code, for local info */
unchar kb_flags; /* Keyboard present or absent */
unchar kb_cmd_state; /* current command */
unchar kb_in_char[KDINPUT]; /* character in queue */
char kb_in_len;
unchar kb_cmd_queue[KDCQMAX]; /* kb command queue */
char kb_cmd_qlen; /* length of command queue */
};
#define KB_ABSENT 0x01
#define KB_PRESENT 0x02
#define KD_TEXT 0 /* ANSI x3.64 emulation mode */
#define KD_TEXT0 KD_TEXT /* Alias for KD_TEXT */
#define KD_GRAPHICS 1 /* Graphics mode */
#define KD_TEXT1 2 /* Text mode doesn't load char gen */
/*
* Values for kv_flags
*/
#define KD_MAPPED 0x01 /* Display is mapped */
#define KD_LOCKED 0x02 /* Keyboard is locked */
#define KD_QRESERVE 0x04 /* Queue mode init in progress */
#define KD_ACTIVE 0x4 /* Active virtual display */
#define KD_EXTEND 0x8 /* Enable extended char */
#define KD_CLOSING 0x10 /* Process closing file */
#define KD_CONS 0x80 /* console */
/*
* Macro for setting a particular EGA register.
*/
#define out_reg(riptr, index, data) { outb((riptr)->ri_address, (index)); \
outb((riptr)->ri_data, (data)); }
/*
* 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
#define I_VGAATTR 7
/*
* 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 adtmode {
unchar am_capability;
unchar am_colmode;
unchar am_colsel;
};
/* Display mode definitions */
#define DM_B40x25 0 /* 40x25 black & white text */
#define DM_C40x25 1 /* 40x25 color text */
#define DM_B80x25 2 /* 80x25 black & white text */
#define DM_C80x25 3 /* 80x25 color text */
#define DM_BG320 4 /* 320x200 black & white graphics */
#define DM_CG320 5 /* 320x200 color graphics */
#define DM_BG640 6 /* 640x200 black & white graphics */
#define DM_EGAMONO80x25 7 /* EGA mode 7 */
#define LOAD_COLOR 8 /* mode for loading color characters */
#define LOAD_MONO 9 /* mode for loading mono characters */
#define DM_ENH_B80x43 10 /* 80x43 black & white text */
#define DM_ENH_C80x43 11 /* 80x43 color text */
#define DM_CG320_D 13 /* EGA mode D */
#define DM_CG640_E 14 /* EGA mode E */
#define DM_EGAMONOAPA 15 /* EGA mode F */
#define DM_CG640x350 16 /* EGA mode 10 */
#define DM_ENHMONOAPA2 17 /* EGA mode F with extended memory */
#define DM_ENH_CG640 18 /* EGA mode 10* */
#define DM_ENH_B40x25 19 /* enhanced 40x25 black & white text */
#define DM_ENH_C40x25 20 /* enhanced 40x25 color text */
#define DM_ENH_B80x25 21 /* enhanced 80x25 black & white text */
#define DM_ENH_C80x25 22 /* enhanced 80x25 color text */
/* Note: Below are VGA modes that may not be compatible with XENIX */
#define DM_VGA_C40x25 23 /* VGA 40x25 color text (1+) */
#define DM_VGA_C80x25 24 /* VGA 80x25 color text (3+) */
#define DM_VGAMONO80x25 25 /* VGA mode 7+ */
#define DM_BG640x480 26 /* 640x480 black & white graphics (11)*/
#define DM_CG640x480 27 /* 640x480 color graphic 16 clrs (12)*/
#define DM_VGA_CG320 28 /* 320x200 color graphic 256 clrs (13)*/
#define DM_VGA_B40x25 29 /* VGA 40x25 black & white text (0+) */
#define DM_VGA_B80x25 30 /* VGA 80x25 black & white text (2+) */
#define DM_VGAMONOAPA 31 /* VGA mode F+ */
#define DM_VGA_CG640 32 /* VGA mode 10+ */
#define DM_ENH_CGA 33 /* AT&T 640x400 CGA mode */
#define DM_ATT_640 34 /* AT&T 640x400 16 color graphics */
#define DM_VGA_B132x25 35 /* VGA 132x25 black & white text */
#define DM_VGA_C132x25 36 /* VGA 132x25 color text */
#define DM_VGA_B132x43 37 /* VGA 132x43 black & white text */
#define DM_VGA_C132x43 38 /* VGA 132x43 color text */
/* Xenix display mode definitions. Most are identical to the internal
definitions above. */
#define M_B40x25 DM_B40x25 /* black & white 40 columns */
#define M_C40x25 DM_C40x25 /* color 40 columns */
#define M_B80x25 DM_B80x25 /* black & white 80 columns */
#define M_C80x25 DM_C80x25 /* color 80 columns */
#define M_BG320 DM_BG320 /* black & white graphics 320x200 */
#define M_CG320 DM_CG320 /* color graphics 320x200 */
#define M_BG640 DM_BG640 /* black & white graphics 640x200 */
#define M_EGAMONO80x25 DM_EGAMONO80x25 /* ega-mono 80x25 */
#define M_CG320_D DM_CG320_D /* ega mode D */
#define M_CG640_E DM_CG640_E /* ega mode E */
#define M_EGAMONOAPA DM_EGAMONOAPA /* ega mode F */
#define M_CG640x350 DM_CG640x350 /* ega mode 10 */
#define M_ENHMONOAPA2 DM_ENHMONOAPA2 /* ega mode F with extended memory */
#define M_ENH_CG640 DM_ENH_CG640 /* ega mode 10* */
#define M_ENH_B40x25 DM_ENH_B40x25 /* enhanced black & white 40 columns */
#define M_ENH_C40x25 DM_ENH_C40x25 /* enhanced color 40 columns */
#define M_ENH_B80x25 DM_ENH_B80x25 /* enhanced black & white 80 columns */
#define M_ENH_C80x25 DM_ENH_C80x25 /* enhanced color 80 columns */
#define M_VGA_40x25 DM_VGA_C40x25 /* VGA 40x25 color text (1+) */
#define M_VGA_80x25 DM_VGA_C80x25 /* VGA 80x25 color text (3+) */
#define M_VGA_M80x25 DM_VGAMONO80x25 /* VGA mode 7+ */
#define M_VGA11 DM_BG640x480 /* 640x480 black & white graphics (11)*/
#define M_VGA12 DM_CG640x480 /* 640x480 color graphic 16 clrs (12)*/
#define M_VGA13 DM_VGA_CG320 /* 320x200 color graphic 256 clrs (13)*/
#define M_ENH_B80x43 0x70 /* ega black & white 80x43 */
#define M_ENH_C80x43 0x71 /* ega color 80x43 */
#define M_MCA_MODE 0xff /* monochrome adapter mode */
#define OFFSET_80x43 (M_ENH_B80x43-DM_ENH_B80x43) /* Offset for converting 80x43 numbers */
#define M_ENH_CGA DM_ENH_CGA /* AT&T 640x400 CGA hardware mode - (Super-VU adapter) */
/* 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 KDSBORDER (KIOC|13) /* set ega color border */
#define KDQUEMODE (KIOC|15) /* enable/disable queue mode */
#define KDADDINP (KIOC|16) /* add input into keyboard stream */
#define KDSETRAD (KIOC|20) /* set keyboard typematic rate/delay */
#define KDSCROLL (KIOC|21) /* set hardware scrolling on */
/* EJ 91.05.30 RC specific ioctls */
#define KDSKBCNV (KIOC|30) /* set keyboard 7-bit conv. table */
/* VP/ix reserved ioctls */
#define KDENABIO (KIOC|60) /* enable direct I/O to ports */
#define KDDISABIO (KIOC|61) /* disable direct I/O to ports */
#define KIOCINFO (KIOC|62) /* tell user what device we are */
#define KIOCSOUND (KIOC|63) /* start sound generation */
#define KDGKBTYPE (KIOC|64) /* get keyboard type */
#define KDGETLED (KIOC|65) /* get keyboard LED status */
#define KDSETLED (KIOC|66) /* set keyboard LED status */
/* Defines for Xenix keyboard and display ioctl's */
#define MIOC ('k' << 8) /* Upper byte of mapping ioctl's */
#define GETFKEY (MIOC | 0) /* Get function key */
#define SETFKEY (MIOC | 1) /* Set function key */
#define GIO_SCRNMAP (MIOC | 2) /* Get screen output map table */
#define PIO_SCRNMAP (MIOC | 3) /* Set screen output map table */
#define GIO_STRMAP_21 (MIOC | 4) /* Get 2.1 function key string table */
#define PIO_STRMAP_21 (MIOC | 5) /* Put 2.1 function key string table */
#define GIO_KEYMAP (MIOC | 6) /* Get keyboard map table */
#define PIO_KEYMAP (MIOC | 7) /* Set keyboard map table */
#define GIO_STRMAP (MIOC | 11) /* Get function key string table */
#define PIO_STRMAP (MIOC | 12) /* Set function key string table */
#define GIO_ATTR ('a' << 8) /* Get present screen attribute */
#define GIO_COLOR ('c' << 8) /* Get whether adaptor is color */
#define MODESWITCH ('x' << 8) /* Upper byte of mode switch ioctl's */
#define KDMODEMASK 0xff /* Mask for lower byte of mode ioctl */
#define SW_B40x25 (MODESWITCH | DM_B40x25) /* Select 40x25 b&w */
#define SW_C40x25 (MODESWITCH | DM_C40x25) /* Select 40x25 clr */
#define SW_B80x25 (MODESWITCH | DM_B80x25) /* Select 80x25 b&w */
#define SW_C80x25 (MODESWITCH | DM_C80x25) /* Select 80x25 clr */
#define SW_BG320 (MODESWITCH | DM_BG320) /* Select 320x200 b&w */
#define SW_CG320 (MODESWITCH | DM_CG320) /* Select 320x200 color */
#define SW_BG640 (MODESWITCH | DM_BG640) /* Select 640x200 b&w */
#define SW_EGAMONO80x25 (MODESWITCH | DM_EGAMONO80x25) /* Select EGA mode 7 */
#define SW_CG320_D (MODESWITCH | DM_CG320_D) /* Select EGA mode D */
#define SW_CG640_E (MODESWITCH | DM_CG640_E) /* Select EGA mode E */
#define SW_EGAMONOAPA (MODESWITCH | DM_EGAMONOAPA) /* Select EGA mode F */
#define SW_CG640x350 (MODESWITCH | DM_CG640x350) /* EGA mode 10 */
#define SW_ENH_MONOAPA2 (MODESWITCH | DM_ENHMONOAPA2) /* EGA mode F* */
#define SW_ENH_CG640 (MODESWITCH | DM_ENH_CG640) /* EGA mode 16 */
#define SW_ENHB40x25 (MODESWITCH | DM_ENH_B40x25) /* 40x25 b&w */
#define SW_ENHC40x25 (MODESWITCH | DM_ENH_C40x25) /* 40x25 color */
#define SW_ENHB80x25 (MODESWITCH | DM_ENH_B80x25) /* 80x25 b&w */
#define SW_ENHC80x25 (MODESWITCH | DM_ENH_C80x25) /* 80x25 color */
#define SW_ENHB80x43 (MODESWITCH | M_ENH_B80x43) /* 80x43 b&w */
#define SW_ENHC80x43 (MODESWITCH | M_ENH_C80x43) /* 80x43 color */
#define SW_MCAMODE (MODESWITCH | M_MCA_MODE) /* Reinitialize mono */
#define SW_ATT640 (MODESWITCH | DM_ATT_640) /* 640x400 16 color */
#define SW_VGAMONOAPA (MODESWITCH | DM_VGAMONOAPA) /* VGA mode F+ */
#define SW_VGA_CG640 (MODESWITCH | DM_VGA_CG640) /* VGA mode 10+ */
#define SW_VGA_B40x25 (MODESWITCH | DM_VGA_B40x25) /* VGA 40x25 b&w text */
#define SW_VGA_C40x25 (MODESWITCH | DM_VGA_C40x25) /* VGA 40x25 clr text */
#define SW_VGAB80x25 (MODESWITCH | DM_VGA_B80x25) /* 80x25 vga b&w */
#define SW_VGAC80x25 (MODESWITCH | DM_VGA_C80x25) /* 80x25 vga color */
#define SW_VGAMONO80x25 (MODESWITCH | DM_VGAMONO80x25) /* VGA mode 7+ */
#define SW_BG640x480 (MODESWITCH | DM_BG640x480) /* 640x480 vga b&w */
#define SW_CG640x480 (MODESWITCH | DM_CG640x480) /* 640x480 vga color */
#define SW_VGA_CG320 (MODESWITCH | DM_VGA_CG320) /* VGA mode 13 */
#define SW_VGA_B132x25 (MODESWITCH | DM_VGA_B132x25) /* VGA 132x25 black & white text */
#define SW_VGA_C132x25 (MODESWITCH | DM_VGA_C132x25) /* VGA 132x25 color text */
#define SW_VGA_B132x43 (MODESWITCH | DM_VGA_B132x43) /* VGA 132x43 black & white text */
#define SW_VGA_C132x43 (MODESWITCH | DM_VGA_C132x43) /* VGA 132x43 color text */
#define O_MODESWITCH ('S' << 8) /* Upper byte of old mode ioctl's */
#define O_SW_B40x25 (O_MODESWITCH | DM_B40x25) /* Select 40x25 b&w */
#define O_SW_C40x25 (O_MODESWITCH | DM_C40x25) /* Select 40x25 clr */
#define O_SW_B80x25 (O_MODESWITCH | DM_B80x25) /* Select 80x25 b&w */
#define O_SW_C80x25 (O_MODESWITCH | DM_C80x25) /* Select 80x25 clr */
#define O_SW_BG320 (O_MODESWITCH | DM_BG320) /* Select 320x200 b&w */
#define O_SW_CG320 (O_MODESWITCH | DM_CG320) /* Select 320x200 clr */
#define O_SW_BG640 (O_MODESWITCH | DM_BG640) /* Select 640x200 b&w */
#define O_SW_EGAMONO80x25 (O_MODESWITCH | DM_EGAMONO80x25)
#define O_SW_CG320_D (O_MODESWITCH | DM_CG320_D) /* Select EGA mode D */
#define O_SW_CG640_E (O_MODESWITCH | DM_CG640_E) /* Select EGA mode E */
#define O_SW_EGAMONOAPA (O_MODESWITCH | DM_EGAMONOAPA) /* Select EGA mode F */
#define O_SW_CG640x350 (O_MODESWITCH | DM_CG640x350) /* EGA mode 10 */
#define O_SW_ENH_MONOAPA2 (O_MODESWITCH | DM_ENHMONOAPA2) /* Mode F* */
#define O_SW_ENH_CG640 (O_MODESWITCH | DM_ENH_CG640) /* EGA mode 16 */
#define O_SW_ENHB40x25 (O_MODESWITCH | DM_ENH_B40x25) /* 40x25 b&w */
#define O_SW_ENHC40x25 (O_MODESWITCH | DM_ENH_C40x25) /* 40x25 color */
#define O_SW_ENHB80x25 (O_MODESWITCH | DM_ENH_B80x25) /* 80x25 b&w */
#define O_SW_ENHC80x25 (O_MODESWITCH | DM_ENH_C80x25) /* 80x25 color */
#define O_SW_ENHB80x43 (O_MODESWITCH | M_ENH_B80x43) /* 80x43 b&w */
#define O_SW_ENHC80x43 (O_MODESWITCH | M_ENH_C80x43) /* 80x43 color */
#define O_SW_MCAMODE (O_MODESWITCH | M_MCA_MODE) /* Reinitialize mono */
#define O_SW_ATT640 (O_MODESWITCH | DM_ATT_640) /* 640x400 16 color */
#define O_SW_ATT640 (O_MODESWITCH | DM_ATT_640) /* 640x400 16 color */
#define O_SW_VGAMONOAPA (O_MODESWITCH | DM_VGAMONOAPA) /* VGA mode F+ */
#define O_SW_VGA_CG640 (O_MODESWITCH | DM_VGA_CG640) /* VGA mode 10+ */
#define O_SW_VGA_B40x25 (O_MODESWITCH | DM_VGA_B40x25) /* VGA 40x25 b&w text */
#define O_SW_VGA_C40x25 (O_MODESWITCH | DM_VGA_C40x25) /* VGA 40x25 clr text */
#define O_SW_VGAB80x25 (O_MODESWITCH | DM_VGA_B80x25) /* 80x25 vga b&w */
#define O_SW_VGAC80x25 (O_MODESWITCH | DM_VGA_C80x25) /* 80x25 vga color */
#define O_SW_VGAMONO80x25 (O_MODESWITCH | DM_VGAMONO80x25) /* VGA mode 7+ */
#define O_SW_BG640x480 (O_MODESWITCH | DM_BG640x480) /* 640x480 vga b&w */
#define O_SW_CG640x480 (O_MODESWITCH | DM_CG640x480) /* 640x480 vga color */
#define O_SW_VGA_CG320 (O_MODESWITCH | DM_VGA_CG320) /* VGA mode 13 */
/* XENIX compatibility */
#define SW_VGA40x25 SW_VGA_C40x25 /* VGA 40x25 clr text */
#define SW_VGA80x25 SW_VGAC80x25 /* 80x25 vga color */
#define SW_VGAM80x25 SW_VGAMONO80x25 /* VGA mode 7+ */
#define SW_VGA11 SW_BG640x480 /* 640x480 vga b&w */
#define SW_VGA12 SW_CG640x480 /* 640x480 vga color */
#define SW_VGA13 SW_VGA_CG320 /* VGA mode 13 */
#define CGAIOC ('C' << 8) /* Upper byte of CGA ioctl's */
#define CGAIO (CGAIOC | 2) /* Do I/O on CGA port */
#define CGA_GET (CGAIOC | 3) /* Get CGA mode setting */
#define PGAIOC ('P' << 8) /* Upper byte of PGA ioctl's */
#define PGAIO (PGAIOC | 2) /* Do I/O on PGA port */
#define PGA_GET (PGAIOC | 3) /* Get PGA mode setting */
#define EGAIOC ('E' << 8) /* Upper byte of EGA ioctl's */
#define EGAIO (EGAIOC | 2) /* Do I/O on EGA port */
#define EGA_GET (EGAIOC | 3) /* Get EGA mode setting */
#define VGAIOC ('E' << 8) /* Upper byte of VGA ioctl's */
#define VGAIO (VGAIOC | 66) /* Do I/O on VGA port */
#define VGA_GET (VGAIOC | 67) /* Get VGA mode setting */
#define VGA_IOPRIVL (VGAIOC | 68) /* Get in/out privilege for vga port */
#define MCAIOC ('M' << 8) /* Upper byte of MCA ioctl's */
#define MCAIO (MCAIOC | 2) /* Do I/O on MCA port */
#define MCA_GET (MCAIOC | 3) /* Get MCA mode setting */
#define CONSIOC ('c' << 8) /* Upper byte of console ioctl's */
#define CONS_CURRENT (CONSIOC | 1) /* Get display adapter type */
#define CONS_GET (CONSIOC | 2) /* Get display mode setting */
#define CONSIO (CONSIOC | 3) /* Do I/O on current adaptor port */
#define PIO_FONT8x8 (CONSIOC | 64)
#define GIO_FONT8x8 (CONSIOC | 65)
#define PIO_FONT8x14 (CONSIOC | 66)
#define GIO_FONT8x14 (CONSIOC | 67)
#define PIO_FONT8x16 (CONSIOC | 68)
#define GIO_FONT8x16 (CONSIOC | 69)
#define CONSADP (CONSIOC | 72) /* get specific adapter screen */
#define MAPADAPTER ('m' << 8) /* Upper byte of mapping ioctl's */
#define MAPCONS (MAPADAPTER) /* Map display adapter memory */
#define MAPMONO (MAPADAPTER | MONO) /* Map MCA adapter memory */
#define MAPCGA (MAPADAPTER | CGA) /* Map CGA adapter memory */
#define MAPPGA (MAPADAPTER | PGA) /* Map PGA adapter memory */
#define MAPEGA (MAPADAPTER | EGA) /* Map EGA adapter memory */
#define MAPVGA (MAPADAPTER | VGA) /* Map VGA adapter memory */
#define SWAPCONS ('s' << 8) /* Upper byte of switching ioctl's */
#define SWAPMONO (SWAPCONS | MONO) /* Swap MCA adapter */
#define SWAPCGA (SWAPCONS | CGA) /* Swap CGA adapter */
#define SWAPPGA (SWAPCONS | PGA) /* Swap PGA adapter */
#define SWAPEGA (SWAPCONS | EGA) /* Swap EGA adapter */
#define SWAPVGA (SWAPCONS | VGA) /* Swap VGA adapter */
#define TIOCKBON (TIOC | 8) /* Turn on extended keys */
#define TIOCKBOF (TIOC | 9) /* Turn off extended keys */
#define KBENABLED (TIOC | 10) /* Are extended keys enabled? */
/* VP/ix 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 kdaddinp { /* add specified scan code to input stream*/
int len;
unchar data[3];
};
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 */
#define MKDCONFADDR 20 /* max no. of configurable I/O addresses */
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 */
};
struct kd_range {
unsigned long start; /* start address of video memory */
unsigned long end; /* last address of video memory */
};
struct kd_quemode {
int qsize; /* desired # elements in queue (set by user) */
int signo; /* signal number to send when queue goes non-empty
(set by user) */
char *qaddr; /* user virtual address of queue (set by driver) */
};
/* Defines for port I/O ioctls for graphics adapter ports */
#define IN_ON_PORT 1
#define OUT_ON_PORT 0
/* Structures for port I/O ioctls for graphics adapter ports */
#pragma pack(2)
struct port_io_struct {
char dir; /* Direction flag (in or out) */
ushort port; /* Port address */
char data; /* Port data */
};
struct port_io_arg {
struct port_io_struct args[4]; /* Port I/O's for single call */
};
#pragma pack()
struct adtstruct {
ushort *ad_scraddr; /* address of adaptor memory */
int (*ad_activate)(); /* Activate an adaptor */
int (*ad_colormove)(); /* Move things in color memory */
int (*ad_colorcopy)(); /* Copy things in color memory */
int (*ad_bell)(); /* Turn bell on or off */
int (*ad_dsply)(); /* Turn display on or off - CGA only */
int (*ad_setcursor)(); /* Set the cursor position */
int (*ad_setcursorshape)(); /* Set the cursor shape */
int (*ad_setstartaddr)(); /* Set the start address */
int (*ad_setdir)(); /* Set the adapter write direction */
int (*ad_restore)();/* Program the adapter to given mode */
int (*ad_setborder)();/* Set the border parameters */
int (*ad_getfont)();/* Return the specified font to user */
int (*ad_putfont)();/* Replace the font with specified font */
int (*ad_setreg)(); /* Allow direct writes to registers */
unchar (*ad_getreg)(); /* Allow direct reads from registers */
ushort (*ad_getcursor)();/* Return the cursor position */
ushort (*ad_getcursorshape)();/* Return the cursor shape */
ushort (*ad_getstartaddr)();/* Return the start address */
ushort ad_station; /* the station number of this adaptor */
ushort ad_scrmask; /* mask for fitting text into screen memory */
unchar ad_type; /* adapter type */
unchar ad_undattr;
unchar ad_egamode; /* Saved EGA mode */
unchar ad_dfltegamode; /* Default EGA mode */
unchar ad_fontcurrent; /* Current font loaded */
int ad_bellcnt; /* Nuber of ticks left */
int ad_toneon; /* Is bell on or not? */
struct kd_disparam ad_param; /* Type of display installed */
struct kd_memloc ad_mapaddr; /* for mapped displays */
struct kd_range ad_basevmem[MKDIOADDR]; /* valid memory addresses */
int ad_vmemcnt; /* number of valid memory addresses */
int ad_scroll; /* enables or disables hardware scrolling */
/* entries below not used by kd_cmn code, for local info */
ushort ad_status; /* status information */
ushort ad_modesel; /* mode values */
ushort ad_address; /* I/O address 0x3B? or 0x3D? */
};