Return to BSD News archive
Newsgroups: comp.os.386bsd.development
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!usenet.ins.cwru.edu!news.csuohio.edu!stever
From: stever@csuohio.edu (Steve Ratliff)
Subject: further HGA patches to syscons
Message-ID: <1993Dec4.230914.23829@news.csuohio.edu>
Sender: news@news.csuohio.edu (USENET News System)
Organization: Cleveland State University
X-Newsreader: Tin 1.1 PL5
Date: Sat, 4 Dec 1993 23:09:14 GMT
Lines: 157
Here are further patches against the recently posted version of
syscons to make it friendlier to HGA/MDA systems.
*** syscons.c.orig Sun Nov 21 17:14:33 1993
--- syscons.c Sat Dec 4 17:41:31 1993
***************
*** 144,150 ****
int posx; /* current X position */
int posy; /* current Y position */
int max_posx; /* X size */
! int max_posy; /* X size */
term_stat term; /* terminal emulation stuff */
char cursor_start; /* cursor start line # */
char cursor_end; /* cursor start end # */
--- 144,150 ----
int posx; /* current X position */
int posy; /* current Y position */
int max_posx; /* X size */
! int max_posy; /* Y size */
term_stat term; /* terminal emulation stuff */
char cursor_start; /* cursor start line # */
char cursor_end; /* cursor start end # */
***************
*** 552,558 ****
return 0;
case CONS_80x25TEXT: /* set 80x25 text mode */
! if (!crtc_vga)
return ENXIO;
scp->mode = TEXT80x25;
scp->max_posy = 25;
--- 552,558 ----
return 0;
case CONS_80x25TEXT: /* set 80x25 text mode */
! if (!crtc_vga && crtc_addr != MONO_BASE)
return ENXIO;
scp->mode = TEXT80x25;
scp->max_posy = 25;
***************
*** 1114,1130 ****
static void scrn_saver(int test)
{
! u_char val;
if (test) {
! scrn_blanked = 1;
! outb(TSIDX, 0x01); val = inb(TSREG);
! outb(TSIDX, 0x01); outb(TSREG, val | 0x20);
}
else {
scrn_blanked = 0;
! outb(TSIDX, 0x01); val = inb(TSREG);
! outb(TSIDX, 0x01); outb(TSREG, val & 0xDF);
}
}
#endif
--- 1114,1146 ----
static void scrn_saver(int test)
{
! u_char val;
! scr_stat *scp = cur_console;
if (test) {
! if (crtc_vga) {
! scrn_blanked = 1;
! outb(TSIDX, 0x01); val = inb(TSREG);
! outb(TSIDX, 0x01); outb(TSREG, val | 0x20);
! }
! else {
! if (crtc_addr == MONO_BASE &&
! scp->mode == TEXT80x25) {
! scrn_blanked = 1;
! /* text mode on, text blinker on, screen blank*/
! outb(crtc_addr+4, 0x20);
! }
! }
}
else {
scrn_blanked = 0;
! if (crtc_vga) {
! outb(TSIDX, 0x01); val = inb(TSREG);
! outb(TSIDX, 0x01); outb(TSREG, val & 0xDF);
! }
! else {
! set_mode(scp);
! }
}
}
#endif
***************
*** 1331,1337 ****
if (new_scp->proc && (new_scp->proc != pfind(new_scp->pid)))
new_scp->smode.mode = VT_AUTO;
! /* check the modes and switch approbiatly */
if (old_scp->smode.mode == VT_PROCESS) {
old_scp->status |= SWITCH_WAIT_REL;
psignal(old_scp->proc, old_scp->smode.relsig);
--- 1347,1353 ----
if (new_scp->proc && (new_scp->proc != pfind(new_scp->pid)))
new_scp->smode.mode = VT_AUTO;
! /* check the modes and switch appropriately */
if (old_scp->smode.mode == VT_PROCESS) {
old_scp->status |= SWITCH_WAIT_REL;
psignal(old_scp->proc, old_scp->smode.relsig);
***************
*** 2408,2416 ****
if (scp->cursor_start != -1 && scp->cursor_end != -1)
cursor_shape(scp->cursor_start, scp->cursor_end);
! /* mode change only on VGA's */
! if (!crtc_vga)
return;
/* setup video hardware for the given mode */
s = splhigh();
--- 2424,2458 ----
if (scp->cursor_start != -1 && scp->cursor_end != -1)
cursor_shape(scp->cursor_start, scp->cursor_end);
! /* mode change only on VGA's & HGA's */
! if (!crtc_vga) {
! /* attempt at mode change on HGA's */
! if (crtc_addr == MONO_BASE &&
! scp->mode == TEXT80x25) {
! s = splhigh();
! /* text mode on, text blinker on, screen blank */
! outb(crtc_addr+4, 0x20);
!
! /* set up 6845 registers for text mode */
! outb(crtc_addr, 0x00); outb(crtc_addr+1, 0x61);
! outb(crtc_addr, 0x01); outb(crtc_addr+1, 0x50);
! outb(crtc_addr, 0x02); outb(crtc_addr+1, 0x52);
! outb(crtc_addr, 0x03); outb(crtc_addr+1, 0x0F);
! outb(crtc_addr, 0x04); outb(crtc_addr+1, 0x19);
! outb(crtc_addr, 0x05); outb(crtc_addr+1, 0x06);
! outb(crtc_addr, 0x06); outb(crtc_addr+1, 0x19);
! outb(crtc_addr, 0x07); outb(crtc_addr+1, 0x19);
! outb(crtc_addr, 0x08); outb(crtc_addr+1, 0x02);
! outb(crtc_addr, 0x09); outb(crtc_addr+1, 0x0D);
! outb(crtc_addr, 0x0A); outb(crtc_addr+1, 0x0B);
! outb(crtc_addr, 0x0B); outb(crtc_addr+1, 0x0C);
!
! /* text mode on, text blinker on, screen on */
! outb(crtc_addr+4, 0x28);
! splx(s);
! }
return;
+ }
/* setup video hardware for the given mode */
s = splhigh();