Annotation of Gnu-Mach/i386/i386at/kdsoft.h, revision 1.1

1.1     ! root        1: /* 
        !             2:  * Mach Operating System
        !             3:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
        !             4:  * All Rights Reserved.
        !             5:  * 
        !             6:  * Permission to use, copy, modify and distribute this software and its
        !             7:  * documentation is hereby granted, provided that both the copyright
        !             8:  * notice and this permission notice appear in all copies of the
        !             9:  * software, derivative works or modified versions, and any portions
        !            10:  * thereof, and that both notices appear in supporting documentation.
        !            11:  * 
        !            12:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            13:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !            14:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            15:  * 
        !            16:  * Carnegie Mellon requests users of this software to return to
        !            17:  * 
        !            18:  *  Software Distribution Coordinator  or  [email protected]
        !            19:  *  School of Computer Science
        !            20:  *  Carnegie Mellon University
        !            21:  *  Pittsburgh PA 15213-3890
        !            22:  * 
        !            23:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            24:  * the rights to redistribute these changes.
        !            25:  */
        !            26: /* **********************************************************************
        !            27:  File:         kdsoft.h
        !            28:  Description:  Software structures for keyboard/display driver, shared with
        !            29:        drivers for specific graphics cards.
        !            30: 
        !            31:  $ Header: $
        !            32: 
        !            33:  Copyright Ing. C. Olivetti & C. S.p.A. 1988, 1989.
        !            34:  All rights reserved.
        !            35: ********************************************************************** */
        !            36: 
        !            37: /*
        !            38:   Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc.,
        !            39: Cupertino, California.
        !            40: 
        !            41:                All Rights Reserved
        !            42: 
        !            43:   Permission to use, copy, modify, and distribute this software and
        !            44: its documentation for any purpose and without fee is hereby
        !            45: granted, provided that the above copyright notice appears in all
        !            46: copies and that both the copyright notice and this permission notice
        !            47: appear in supporting documentation, and that the name of Olivetti
        !            48: not be used in advertising or publicity pertaining to distribution
        !            49: of the software without specific, written prior permission.
        !            50: 
        !            51:   OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
        !            52: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
        !            53: IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
        !            54: CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
        !            55: LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
        !            56: NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION
        !            57: WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            58: */
        !            59: 
        !            60: /*
        !            61:  * This driver handles two types of graphics cards.  The first type
        !            62:  * (e.g., EGA, CGA), treats the screen as a page of characters and
        !            63:  * has a hardware cursor.  The second type (e.g., the Blit) treats the
        !            64:  * screen as a bitmap.  A hardware cursor may be present, but it is
        !            65:  * ignored in favor of a software cursor.
        !            66:  *
        !            67:  *
        !            68:  * Most of the driver uses the following abstraction for the display:
        !            69:  *
        !            70:  * The cursor position is simply an index into a (logical) linear char
        !            71:  * array that wraps around at the end of each line.  Each character
        !            72:  * takes up ONE_SPACE bytes.  Values in [0..ONE_PAGE) are positions in
        !            73:  * the displayed page.  Values < 0 and >= ONE_PAGE are off the page
        !            74:  * and require some scrolling to put the cursor back on the page.
        !            75:  *
        !            76:  * The kd_dxxx routines handle the conversion from this abstraction to
        !            77:  * what the hardware requires.
        !            78:  *
        !            79:  * (*kd_dput)(pos, ch, chattr)
        !            80:  *     csrpos_t pos;
        !            81:  *     char ch, chattr;
        !            82:  *  Displays a character at "pos", where "ch" = the character to
        !            83:  *  be displayed and "chattr" is its attribute byte.
        !            84:  *
        !            85:  * (*kd_dmvup)(from, to, count)
        !            86:  *     csrpos_t from, to;
        !            87:  *     int count;
        !            88:  *  Does a (relatively) fast block transfer of characters upward.
        !            89:  *  "count" is the number of character positions (not bytes) to move.
        !            90:  *  "from" is the character position to start moving from (at the start
        !            91:  *  of the block to be moved).  "to" is the character position to start
        !            92:  *  moving to.
        !            93:  *
        !            94:  * (*kd_dmvdown)(from, to, count)
        !            95:  *     csrpos_t from, to;
        !            96:  *     int count;
        !            97:  *  "count" is the number of character positions (not bytes) to move.
        !            98:  *  "from" is the character position to start moving from (at the end
        !            99:  *  of the block to be moved).  "to" is the character position to
        !           100:  *  start moving to.
        !           101:  *
        !           102:  * (*kd_dclear)(to, count, chattr)
        !           103:  *     csrpos_t, to;
        !           104:  *     int count;
        !           105:  *     char chattr;
        !           106:  *  Erases "count" character positions, starting with "to".
        !           107:  *
        !           108:  * (*kd_dsetcursor)(pos)
        !           109:  *  Sets kd_curpos and moves the displayed cursor to track it.  "pos"
        !           110:  *  should be in the range [0..ONE_PAGE).
        !           111:  *  
        !           112:  * (*kd_dreset)()
        !           113:  *  In some cases, the boot program expects the display to be in a
        !           114:  *  particular state, and doing a soft reset (i.e.,
        !           115:  *  software-controlled reboot) doesn't put it into that state.  For
        !           116:  *  these cases, the machine-specific driver should provide a "reset"
        !           117:  *  procedure, which will be called just before the kd code causes the
        !           118:  *  system to reboot.
        !           119:  */
        !           120: 
        !           121: extern void bmpput(), bmpmvup(), bmpmvdown(), bmpclear(), bmpsetcursor();
        !           122: 
        !           123: extern void    (*kd_dput)();           /* put attributed char */
        !           124: extern void    (*kd_dmvup)();          /* block move up */
        !           125: extern void    (*kd_dmvdown)();        /* block move down */
        !           126: extern void    (*kd_dclear)();         /* block clear */
        !           127: extern void    (*kd_dsetcursor)();
        !           128:                                /* set cursor position on displayed page */
        !           129: extern void    (*kd_dreset)();         /* prepare for reboot */
        !           130: 
        !           131: 
        !           132: /*
        !           133:  * Globals used for both character-based controllers and bitmap-based
        !           134:  * controllers.
        !           135:  */
        !           136: typedef        short   csrpos_t;       /* cursor position, ONE_SPACE bytes per char */
        !           137: 
        !           138: extern u_char  *vid_start;     /* VM start of video RAM or frame buffer */
        !           139: extern csrpos_t kd_curpos;             /* should be set only by kd_setpos */
        !           140: extern short   kd_lines;               /* num lines in tty display */
        !           141: extern short   kd_cols;
        !           142: extern char    kd_attr;                /* current character attribute */
        !           143: 
        !           144: 
        !           145: /*
        !           146:  * Globals used only for bitmap-based controllers.
        !           147:  * XXX - probably needs reworking for color.
        !           148:  */
        !           149: 
        !           150: /*
        !           151:  * The following font layout is assumed:
        !           152:  *
        !           153:  *  The top scan line of all the characters comes first.  Then the
        !           154:  *  second scan line, then the third, etc.
        !           155:  *
        !           156:  *     ------ ... ---------|-----N--------|-------------- ... -----------
        !           157:  *     ------ ... ---------|-----N--------|-------------- ... -----------
        !           158:  *             .
        !           159:  *             .
        !           160:  *             .
        !           161:  *     ------ ... ---------|-----N--------|-------------- ... -----------
        !           162:  *
        !           163:  * In the picture, each line is a scan line from the font.  Each scan
        !           164:  * line is stored in memory immediately after the previous one.  The
        !           165:  * bits between the vertical lines are the bits for a single character
        !           166:  * (e.g., the letter "N").
        !           167:  * There are "char_height" scan lines.  Each character is "char_width"
        !           168:  * bits wide.  We make the simplifying assumption that characters are
        !           169:  * on byte boundaries.  (We also assume that a byte is 8 bits.)
        !           170:  */
        !           171: 
        !           172: extern u_char  *font_start;            /* starting addr of font */
        !           173: 
        !           174: extern short   fb_width;               /* bits in frame buffer scan line */
        !           175: extern short   fb_height;              /* scan lines in frame buffer*/
        !           176: extern short   char_width;             /* bit width of 1 char */
        !           177: extern short   char_height;            /* bit height of 1 char */
        !           178: extern short   chars_in_font;
        !           179: extern short   cursor_height;          /* bit height of cursor */
        !           180:                        /* char_height + cursor_height = line_height */
        !           181: 
        !           182: extern u_char  char_black;             /* 8 black (off) bits */
        !           183: extern u_char  char_white;             /* 8 white (on) bits */
        !           184: 
        !           185: 
        !           186: /*
        !           187:  * The tty emulation does not usually require the entire frame buffer.
        !           188:  * (xstart, ystart) is the bit address for the upper left corner of the 
        !           189:  * tty "screen".
        !           190:  */
        !           191: 
        !           192: extern short   xstart, ystart;
        !           193: 
        !           194: 
        !           195: /*
        !           196:  * Accelerators for bitmap displays.
        !           197:  */
        !           198: 
        !           199: extern short   char_byte_width;        /* char_width/8 */
        !           200: extern short   fb_byte_width;          /* fb_width/8 */
        !           201: extern short   font_byte_width;        /* num bytes in 1 scan line of font */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.