Synchronize with sys/i386/isa/syscons.c and sys/i386/isa/syscons.h

revisions 1.216 and 1.29, respectively.
This commit is contained in:
kato 1997-05-17 11:52:26 +00:00
parent 01e3d5c705
commit 419736a877
2 changed files with 37 additions and 22 deletions

View File

@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: syscons.c,v 1.38 1997/05/07 14:17:38 kato Exp $
* $Id: syscons.c,v 1.39 1997/05/08 09:22:32 kato Exp $
*/
#include "sc.h"
@ -900,7 +900,13 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
return 0;
case CONS_BLANKTIME: /* set screen saver timeout (0 = no saver) */
if (*(int *)data < 0)
return EINVAL;
scrn_blank_time = *(int*)data;
if ((scrn_blank_time == 0) && scrn_blanked) {
(*current_saver)(FALSE);
mark_all(cur_console);
}
return 0;
case CONS_CURSORTYPE: /* set cursor type blink/noblink */
@ -1161,6 +1167,7 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
case SW_ENH_B40x25: case SW_ENH_C40x25:
case SW_ENH_B80x25: case SW_ENH_C80x25:
case SW_ENH_B80x43: case SW_ENH_C80x43:
case SW_EGAMONO80x25:
if (!crtc_vga || video_mode_ptr == NULL)
return ENXIO;
@ -1187,6 +1194,12 @@ scioctl(dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
scp->xsize = 80;
scp->ysize = 30;
break;
case M_ENH_C40x25: case M_ENH_B40x25:
case M_ENH_C80x25: case M_ENH_B80x25:
case M_EGAMONO80x25:
if (!(fonts_loaded & FONT_14))
return EINVAL;
/* FALL THROUGH */
default:
if ((cmd & 0xff) > M_VGA_CG320)
return EINVAL;
@ -2652,10 +2665,11 @@ scan_esc(scr_stat *scp, u_char c)
break;
case 'A': /* set display border color */
if (scp->term.num_param == 1)
if ((scp->term.num_param == 1) && crtc_vga) {
scp->border=scp->term.param[0] & 0xff;
if (scp == cur_console)
set_border(scp->border);
}
break;
case 'B': /* set bell pitch and duration */
@ -2671,7 +2685,7 @@ scan_esc(scr_stat *scp, u_char c)
flags |= BLINK_CURSOR;
else
flags &= ~BLINK_CURSOR;
if (scp->term.param[0] & 0x02) {
if ((scp->term.param[0] & 0x02) && crtc_vga) {
flags |= CHAR_CURSOR;
set_destructive_cursor(scp);
} else
@ -3341,7 +3355,7 @@ init_scp(scr_stat *scp)
scp->mode = M_C80x25;
#endif
scp->font_size = FONT_16;
scp->font_size = 16;
scp->xsize = COL;
scp->ysize = ROW;
scp->xpos = scp->ypos = 0;
@ -4219,6 +4233,7 @@ special_80x50:
case M_B80x25: case M_C80x25:
case M_ENH_B40x25: case M_ENH_C40x25:
case M_ENH_B80x25: case M_ENH_C80x25:
case M_EGAMONO80x25:
modetable = video_mode_ptr + (scp->mode * 64);
setup_mode:
@ -4226,11 +4241,11 @@ setup_mode:
scp->font_size = *(modetable + 2);
/* set font type (size) */
if (scp->font_size < FONT_14) {
if (scp->font_size < 14) {
if (fonts_loaded & FONT_8)
copy_font(LOAD, FONT_8, font_8);
outb(TSIDX, 0x03); outb(TSREG, 0x0A); /* font 2 */
} else if (scp->font_size >= FONT_16) {
} else if (scp->font_size >= 16) {
if (fonts_loaded & FONT_16)
copy_font(LOAD, FONT_16, font_16);
outb(TSIDX, 0x03); outb(TSREG, 0x00); /* font 0 */
@ -4454,6 +4469,7 @@ set_normal_mode()
case M_B80x25: case M_C80x25:
case M_ENH_B40x25: case M_ENH_C40x25:
case M_ENH_B80x25: case M_ENH_C80x25:
case M_EGAMONO80x25:
case M_BG320: case M_CG320: case M_BG640:
case M_CG320_D: case M_CG640_E:
@ -4552,11 +4568,11 @@ set_destructive_cursor(scr_stat *scp)
char *font_buffer;
if (scp->font_size < FONT_14) {
if (scp->font_size < 14) {
font_buffer = font_8;
address = (caddr_t)VIDEOMEM + 0x8000;
}
else if (scp->font_size >= FONT_16) {
else if (scp->font_size >= 16) {
font_buffer = font_16;
address = (caddr_t)VIDEOMEM;
}
@ -4710,11 +4726,11 @@ draw_mouse_image(scr_stat *scp)
u_short *crt_pos = Crtat + (scp->mouse_pos - scp->scr_buf);
int font_size = scp->font_size;
if (font_size < FONT_14) {
if (font_size < 14) {
font_buffer = font_8;
address = (caddr_t)VIDEOMEM + 0x8000;
}
else if (font_size >= FONT_16) {
else if (font_size >= 16) {
font_buffer = font_16;
address = (caddr_t)VIDEOMEM;
}
@ -4870,7 +4886,6 @@ do_bell(scr_stat *scp, int pitch, int duration)
if (scp != cur_console)
blink_in_progress += 2;
blink_screen(cur_console);
timeout(blink_screen, cur_console, hz / 10);
} else {
if (scp != cur_console)
pitch *= 2;
@ -4898,7 +4913,13 @@ blink_screen(void *arg)
{
scr_stat *scp = arg;
if (blink_in_progress > 1) {
if ((scp->status & UNKNOWN_MODE) || (blink_in_progress <= 1)) {
blink_in_progress = FALSE;
mark_all(scp);
if (delayed_next_scr)
switch_scr(scp, delayed_next_scr - 1);
}
else {
#ifdef PC98
if (blink_in_progress & 1){
fillw(scr_map[0x20],
@ -4922,12 +4943,6 @@ blink_screen(void *arg)
blink_in_progress--;
timeout(blink_screen, scp, hz / 10);
}
else {
blink_in_progress = FALSE;
mark_all(scp);
if (delayed_next_scr)
switch_scr(scp, delayed_next_scr - 1);
}
}
#ifdef SC_SPLASH_SCREEN

View File

@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id$
* $Id: syscons.h,v 1.12 1997/02/22 09:43:51 peter Exp $
*/
#ifndef _PC98_PC98_SYSCONS_H_
@ -113,9 +113,9 @@ static unsigned int BELL_PITCH = 1678;
#define CONSOLE_BUFSIZE 1024
#define PCBURST 128
#define FONT_NONE 1
#define FONT_8 8
#define FONT_14 14
#define FONT_16 16
#define FONT_8 2
#define FONT_14 4
#define FONT_16 8
#define HISTORY_SIZE 100*80
/* defines related to hardware addresses */