269 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			269 lines
		
	
	
		
			8.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.TH CONSOLE 4
 | 
						|
.SH NAME
 | 
						|
console, keyboard, log \- system console
 | 
						|
.SH DESCRIPTION
 | 
						|
The TTY device driver manages two devices related to the main user
 | 
						|
interface, the system screen and the keyboard.  These two together are
 | 
						|
named "the Console".
 | 
						|
.SS "The Screen"
 | 
						|
The screen of a PC can be managed by a Monochrome Display Adapter, a
 | 
						|
Hercules card, a Color Graphics Adapter, an Enhanced Graphics Adapter,
 | 
						|
or a Video Graphics Array.  To the console driver these devices are
 | 
						|
seen as a block of video memory into which characters can be written to
 | 
						|
be displayed, an I/O register that sets the video memory origin to the
 | 
						|
character that is to be displayed on the top-left position of the
 | 
						|
screen, and an I/O register that sets the position of the hardware
 | 
						|
cursor.  Each character within video memory is a two-byte word.  The low
 | 
						|
byte is the character code, and the high byte is the "attribute byte",
 | 
						|
a set of bits that controls the way the character is displayed,
 | 
						|
character and background colours for a colour card, or
 | 
						|
intensity/underline/reverse video for monochrome.
 | 
						|
.PP
 | 
						|
These are the characteristics of the adapters in text mode:
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
.nf
 | 
						|
.ta +15n +15n
 | 
						|
Adapter	Usable memory	Mono/Colour
 | 
						|
.ta +1n +15n +15n
 | 
						|
	MDA	4K	M
 | 
						|
	Hercules	4K	M
 | 
						|
	CGA	16K	C
 | 
						|
	EGA	32K	M or C
 | 
						|
	VGA	32K	M or C
 | 
						|
.fi
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
MDA and Hercules are the same to the console driver, because the graphics
 | 
						|
mode of the Hercules is of no use to MINIX 3.  EGA and VGA are also mostly
 | 
						|
seen as the same in text mode.  An EGA adapter is either a monochrome or a
 | 
						|
colour device depending on the screen attached to it.  A VGA adapter can run
 | 
						|
in either monochrome or colour (grayscale) mode depending on how the Boot
 | 
						|
Monitor has initialized it.
 | 
						|
.PP
 | 
						|
The driver uses the video origin to avoid copying the screen contents when
 | 
						|
scrolling up or down.  Instead the origin is simply moved one line.  This is
 | 
						|
named "hardware scrolling", as opposed to copying memory: "software
 | 
						|
scrolling".
 | 
						|
.PP
 | 
						|
The video origin is also used to implement several virtual consoles inside
 | 
						|
the video memory of the adapter.  Each virtual console gets a segment of
 | 
						|
video memory.  The driver chooses which console to display by moving the
 | 
						|
video origin.  Note that an MDA or Hercules adapter can only support one
 | 
						|
console.  CGA can support up to four 80x25 consoles, and EGA and VGA can
 | 
						|
have eight.  It is best to configure one less console to leave some video
 | 
						|
memory free so that hardware scrolling has some space to work in.
 | 
						|
.PP
 | 
						|
Character codes are used as indices into a display font that is stored in the
 | 
						|
adapter.  The default font is the IBM character set, which is an ASCII
 | 
						|
character set in the low 128 codes, and a number of mathematical, greek,
 | 
						|
silly graphics, and accented characters in the upper 128 codes.  This font
 | 
						|
is fixed in the MDA, Hercules and CGA adapters, but can be replaced by a
 | 
						|
user selected font for the EGA and VGA adapters.
 | 
						|
.PP
 | 
						|
A number of control characters and escape sequences are implemented by the
 | 
						|
driver.  The result is upward compatible with the ANSI standard terminal.
 | 
						|
The
 | 
						|
.BR termcap (5)
 | 
						|
type is
 | 
						|
.BR minix .
 | 
						|
Normal characters written to the console are displayed at the cursor
 | 
						|
position and the cursor is advanced one column to the right.  If an entire
 | 
						|
line is filled then the cursor wraps to the first column of the next line
 | 
						|
when the next character must be displayed.  The screen is scrolled up if
 | 
						|
needed to start a new line.  Some characters have special effects when sent
 | 
						|
to the console.  Some even have arguments in the form of comma separated
 | 
						|
decimal numbers.  These numbers default to the lowest possible value when
 | 
						|
omitted.  The top-left character is at position (1, 1).  The following
 | 
						|
control characters and escape sequences are implemented by the console:
 | 
						|
.PP
 | 
						|
.ta +10n +20n
 | 
						|
Sequence	Name	Function
 | 
						|
.in +31n
 | 
						|
.ti -30n
 | 
						|
^@	Null	Ignored (padding character)
 | 
						|
.ti -30n
 | 
						|
^G	Bell	Produce a short tone from the speaker
 | 
						|
.ti -30n
 | 
						|
^H	Backspace	Move the cursor back one column, wrapping from the
 | 
						|
left edge up one line to the right edge
 | 
						|
.ti -30n
 | 
						|
^I	Horizontal Tab	Move to the next tab stop, with each tab stop at
 | 
						|
columns 1, 9, 25, etc.  Wrap to the next line if necessary.
 | 
						|
.ti -30n
 | 
						|
^J	Line Feed	Move one line down, scrolling the screen up if
 | 
						|
necessary
 | 
						|
.ti -30n
 | 
						|
^K	Vertical Tab	Same as LF
 | 
						|
.ti -30n
 | 
						|
^L	Form Feed	Same as LF
 | 
						|
.ti -30n
 | 
						|
^M	Carriage Return	Move to column 1
 | 
						|
.ti -30n
 | 
						|
^[	Escape	Start of an escape sequence
 | 
						|
.ti -30n
 | 
						|
^[M	Reverse Index	Move one line up, scrolling the screen down if
 | 
						|
necessary
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPA	Cursor Up	Move the cursor up \fIn\fP lines
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPB	Cursor Down	Move the cursor down \fIn\fP lines
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPC	Cursor Forward	Move the cursor right \fIn\fP columns
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPD	Cursor Backward	Move the cursor left \fIn\fP columns
 | 
						|
.ti -30n
 | 
						|
^[[\fIm\fP;\fIn\fPH	Cursor Position	Move the cursor to line \fIm\fP,
 | 
						|
column \fIn\fP
 | 
						|
.ti -30n
 | 
						|
^[[\fIs\fPJ	Erase in Display	Clear characters as follows:
 | 
						|
.br
 | 
						|
\fIs\fP = 0: From cursor to end of screen
 | 
						|
.br
 | 
						|
\fIs\fP = 1: From start of screen to cursor
 | 
						|
.br
 | 
						|
\fIs\fP = 2: Entire screen
 | 
						|
.ti -30n
 | 
						|
^[[\fIs\fPK	Erase in Line	Clear characters as follows:
 | 
						|
.br
 | 
						|
\fIs\fP = 0: From cursor to end of line
 | 
						|
.br
 | 
						|
\fIs\fP = 1: From start of line to cursor
 | 
						|
.br
 | 
						|
\fIs\fP = 2: Entire line
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPL	Insert Lines	Insert \fIn\fP blank lines
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPM	Delete Lines	Delete \fIn\fP lines
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fP@	Insert Characters	Insert \fIn\fP blank characters
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPP	Delete Characters	Delete \fIn\fP characters
 | 
						|
.ti -30n
 | 
						|
^[[\fIn\fPm	Character Attribute	Set character attribute as follows:
 | 
						|
.br
 | 
						|
\fIn\fP = 0: Normal (default) attribute
 | 
						|
.br
 | 
						|
\fIn\fP = 1: Bold (high intensity fg colour)
 | 
						|
.br
 | 
						|
\fIn\fP = 4: Underline (mono) / Cyan (colour)
 | 
						|
.br
 | 
						|
\fIn\fP = 5: Blinking
 | 
						|
.br
 | 
						|
\fIn\fP = 7: Reverse Video
 | 
						|
.br
 | 
						|
\fIn\fP = 30: Black foreground colour
 | 
						|
.br
 | 
						|
\fIn\fP = 31: Red
 | 
						|
.br
 | 
						|
\fIn\fP = 32: Green
 | 
						|
.br
 | 
						|
\fIn\fP = 33: Brown
 | 
						|
.br
 | 
						|
\fIn\fP = 34: Blue
 | 
						|
.br
 | 
						|
\fIn\fP = 35: Magenta
 | 
						|
.br
 | 
						|
\fIn\fP = 36: Cyan
 | 
						|
.br
 | 
						|
\fIn\fP = 37: Light Gray
 | 
						|
.br
 | 
						|
\fIn\fP = 39: Default fg colour (lt gray)
 | 
						|
.br
 | 
						|
\fIn\fP = 40\-47: Same for background colour
 | 
						|
.br
 | 
						|
\fIn\fP = 49: Default bg colour (black)
 | 
						|
.br
 | 
						|
Note: The "bold" versions of black, brown and lt gray become dark gray,
 | 
						|
yellow and white.
 | 
						|
.in -31n
 | 
						|
.PP
 | 
						|
The console device implements the following ioctl to copy a font into
 | 
						|
font memory on EGA and VGA adapters:
 | 
						|
.PP
 | 
						|
.RS
 | 
						|
.BI "ioctl(" fd ", TIOCSFON, u8_t " font "[256][32]);"
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
Font memory consists of 256 character definitions of 32 lines per character
 | 
						|
and 8 pixels per line.  The first line is the topmost line of the character.
 | 
						|
The leftmost pixel is lit if the most significant bit of a line is set, etc.
 | 
						|
How many lines are used depends on the current video mode.  The 80x25 video
 | 
						|
mode used by MINIX 3 has an 8x16 character cell, 80x28 has 8x14 characters,
 | 
						|
and 132x43 or 132x50 has 8x8 characters.  The boot variable
 | 
						|
.B console
 | 
						|
is used by both the Boot Monitor and the console driver to set the video
 | 
						|
mode, software scrolling on/off, and VGA screen blank timeout.  See
 | 
						|
.BR boot (8).
 | 
						|
.SS "The Keyboard"
 | 
						|
The keyboard produces key codes for each key that is pressed.  These keys
 | 
						|
are transformed into character codes or sequences according to the current
 | 
						|
keyboard translation table.  The format of this table is described in
 | 
						|
.BR keymap (5).
 | 
						|
The character codes can be read from the console device unless they map to
 | 
						|
special hotkeys.  The hotkeys are as follows:
 | 
						|
.PP
 | 
						|
.ta +17n
 | 
						|
Name	Key	Function
 | 
						|
.in +18n
 | 
						|
.ti -17n
 | 
						|
CTRL\-ALT\-DEL	Send an abort signal to process 1 (init).  Init then
 | 
						|
halts the system
 | 
						|
.ti -17n
 | 
						|
CTRL\-ALT\-KP-.	Likewise for keypad period
 | 
						|
.ti -17n
 | 
						|
F1	Process table dump
 | 
						|
.ti -17n
 | 
						|
F2	Show memory map
 | 
						|
.ti -17n
 | 
						|
F3	Toggle software/hardware scrolling
 | 
						|
.ti -17n
 | 
						|
F5	Show network statistics
 | 
						|
.ti -17n
 | 
						|
CTRL\-F7	Send a quit signal to all processes connected to the console
 | 
						|
.ti -17n
 | 
						|
CTRL\-F8	Send an interrupt signal
 | 
						|
.ti -17n
 | 
						|
CTRL\-F9	Send a kill signal.  If CTRL\-F8 or CTRL\-F7 don't get 'em,
 | 
						|
then this surely will.  These keys are for disaster recovery.  You would
 | 
						|
normally use DEL and CTRL\-\e to send interrupt and quit signals.
 | 
						|
.\" .ig VC
 | 
						|
.ti -17n
 | 
						|
ALT\-F1	Select virtual console 0 (/dev/console)
 | 
						|
.ti -17n
 | 
						|
ALT\-F2	Select virtual console 1 (/dev/ttyc1)
 | 
						|
.ti -17n
 | 
						|
ALT\-F(\fIn\fP+1)	Select virtual console \fIn\fP
 | 
						|
(/dev/ttyc\fIn\fP)
 | 
						|
.ti -17n
 | 
						|
ALT\-Left	Select previous virtual console
 | 
						|
.ti -17n
 | 
						|
ALT\-Right	Select next virtual console
 | 
						|
.\" ..
 | 
						|
.in -18n
 | 
						|
.PP
 | 
						|
.\"XXX
 | 
						|
The keyboard map is set with the
 | 
						|
.B KIOCSMAP
 | 
						|
ioctl whose precise details are currently hidden in the
 | 
						|
.B loadkeys
 | 
						|
utility.
 | 
						|
.SS "Log device"
 | 
						|
The
 | 
						|
.B log
 | 
						|
device can be used by processes to print debug messages onto the console.
 | 
						|
The console is a terminal type device, so it is taken from processes when a
 | 
						|
session leader exits.  This does not happen with the log device.
 | 
						|
.SH "SEE ALSO"
 | 
						|
.BR tty (4),
 | 
						|
.BR loadkeys (1),
 | 
						|
.BR keymap (5),
 | 
						|
.BR boot (8).
 | 
						|
.SH NOTES
 | 
						|
Output processing turns Line Feeds into CR LF sequences.  Don't let this
 | 
						|
surprise you.  Either turn off output processing or use one of the synonyms
 | 
						|
for LF.
 | 
						|
.SH AUTHOR
 | 
						|
Kees J. Bot (kjb@cs.vu.nl)
 | 
						|
.\" minor editing of man page by asw 07.08.96
 |