plan 9 kernel history: overview | file list | diff list

1993/0907/carrera/screen.c (diff list | history)

1993/0906/sys/src/9/carrera/screen.c:43,481993/0907/sys/src/9/carrera/screen.c:43,62 (short | long | prev | next)
1993/0906    
	uchar	graphics[9]; 
	uchar	attribute[0x15]; 
	uchar	special[12]; 
1993/0907    
	struct { 
		uchar viden; 
		uchar sr6; 
		uchar sr7; 
		uchar ar16; 
		uchar ar17; 
		uchar crt31; 
		uchar crt32; 
		uchar crt33; 
		uchar crt34; 
		uchar crt35; 
		uchar crt36; 
		uchar crt37; 
	} tseng; 
1993/0906    
}; 
 
void	setmode(VGAmode*); 
1993/0906/sys/src/9/carrera/screen.c:86,921993/0907/sys/src/9/carrera/screen.c:100,106
1993/0906    
 
GBitmap	gscreen = 
{ 
	EISAUNCACHED(0xA0000), 
1993/0907    
	EISA(0xA0000), 
1993/0906    
	0, 
	(1024*(1<<3))/32, 
	3, 
1993/0906/sys/src/9/carrera/screen.c:95,1101993/0907/sys/src/9/carrera/screen.c:109,114
1993/0906    
	0 
}; 
 
static GBitmap hwcursor= 
{ 
	0,		/* base filled in by malloc when needed */ 
	0, 
	4, 
	1, 
	{0, 0, 64, 64}, 
	{0, 0, 64, 64} 
}; 
                 
uchar bdata[] = 
{ 
	0xC0, 
1993/0906/sys/src/9/carrera/screen.c:121,1291993/0907/sys/src/9/carrera/screen.c:125,130
1993/0906    
	0 
}; 
 
/* 
 *  a fatter than usual cursor for the safari 
 */ 
Cursor fatarrow = { 
	{ -1, -1 }, 
	{ 
1993/0906/sys/src/9/carrera/screen.c:182,1941993/0907/sys/src/9/carrera/screen.c:183,213
1993/0906    
void 
screeninit(void) 
{ 
1993/0907    
	int i, j; 
	uchar *scr; 
 
1993/0906    
	setmode(&dfltmode); 
 
	memmove(&arrow, &fatarrow, sizeof(fatarrow)); 
 
1993/0907    
	scr = (uchar*)EISA(0xA0000); 
iprint("%lux\n", scr); 
*scr = 0xaa; 
i = *scr; 
iprint("%2.2ux\n", i); 
*scr = 0x55; 
i = *scr; 
iprint("%2.2ux\n", i); 
 
	for(j = 0; j < 768; j++) 
		for(i = 0; i < 1024; i++) 
			*(scr+i+(j*1024)) = i; 
 
1993/0906    
	/* save space; let bitblt do the conversion work */ 
	defont = &defont0;	 
1993/0907    
	defont = &defont0; 
iprint("gbitblt\n");	 
1993/0906    
	gbitblt(&gscreen, Pt(0, 0), &gscreen, gscreen.r, 0); 
1993/0907    
iprint("done\n"); 
1993/0906    
	out.pos.x = MINX; 
	out.pos.y = 0; 
	out.bwid = defont0.info[' '].width; 
1993/0906/sys/src/9/carrera/screen.c:363,3681993/0907/sys/src/9/carrera/screen.c:382,393
1993/0906    
	EISAOUTB(SR, val); 
} 
 
1993/0907    
uchar 
srin(ushort i) { 
        EISAOUTB(SRX, i); 
        return EISAINB(SR); 
} 
 
1993/0906    
void 
grout(int reg, int val) 
{ 
1993/0906/sys/src/9/carrera/screen.c:375,3811993/0907/sys/src/9/carrera/screen.c:400,407
1993/0906    
{ 
	if(reg == 0) 
		EISAOUTB(EMISCW, val); 
	else if (reg == 1) 
1993/0907    
	else 
	if (reg == 1) 
1993/0906    
		EISAOUTB(EFCW, val); 
} 
 
1993/0906/sys/src/9/carrera/screen.c:393,3991993/0907/sys/src/9/carrera/screen.c:419,426
1993/0906    
		junk = EISAINB(0x3DA); 
		USED(junk); 
		EISAOUTB(ARW, reg | 0x20); 
	} else { 
1993/0907    
	} 
	else { 
1993/0906    
		EISAOUTB(ARW, reg | 0x20); 
		EISAOUTB(ARW, val); 
	} 
1993/0906/sys/src/9/carrera/screen.c:414,4191993/0907/sys/src/9/carrera/screen.c:441,452
1993/0906    
	/* turn screen off (to avoid damage) */ 
	srout(1, 0x21); 
 
1993/0907    
	EISAOUTB(0x3bf, 0x03);		/* hercules compatibility reg */ 
	EISAOUTB(0x3d8, 0xa0);		/* display mode control register */ 
	EISAOUTB(0x3cd, 0x00);		/* segment select */ 
 
	srout(0x00, srin(0x00) & 0xFD);	/* synchronous reset*/ 
 
1993/0906    
	for(i = 0; i < sizeof(v->general); i++) 
		genout(i, v->general[i]); 
 
1993/0906/sys/src/9/carrera/screen.c:423,4291993/0907/sys/src/9/carrera/screen.c:456,463
1993/0906    
		else 
			srout(i, v->sequencer[i]); 
 
	crout(Cvre, 0);	/* allow writes to CRT registers 0-7 */ 
1993/0907    
	/* allow writes to CRT registers 0-7 */ 
	crout(Cvre, 0); 
1993/0906    
	for(i = 0; i < sizeof(v->crt); i++) 
		crout(i, v->crt[i]); 
 
1993/0906/sys/src/9/carrera/screen.c:432,4371993/0907/sys/src/9/carrera/screen.c:466,491
1993/0906    
 
	for(i = 0; i < sizeof(v->attribute); i++) 
		arout(i, v->attribute[i]); 
1993/0907    
 
	EISAOUTB(0x3C6, 0xFF);	/* pel mask */ 
	EISAOUTB(0x3C8, 0x00);	/* pel write address */ 
	EISAOUTB(0x3bf, 0x03);	/* hercules compatibility reg */ 
	EISAOUTB(0x3d8, 0xa0);	/* display mode control register */ 
 
	srout(0x06, v->tseng.sr6); 
	srout(0x07, v->tseng.sr7); 
	i = EISAINB(0x3da); /* reset flip-flop. inp stat 1*/ 
	USED(i); 
	arout(0x16, v->tseng.ar16);	/* misc */ 
	arout(0x17, v->tseng.ar17);	/* misc 1*/ 
	crout(0x31, v->tseng.crt31);	/* extended start. */ 
	crout(0x32, v->tseng.crt32);	/* extended start. */ 
	crout(0x33, v->tseng.crt33);	/* extended start. */ 
	crout(0x34, v->tseng.crt34);	/* stub: 46ee + other bits */ 
	crout(0x35, v->tseng.crt35);	/* overflow bits */ 
	crout(0x36, v->tseng.crt36);	/* overflow bits */ 
	crout(0x37, v->tseng.crt37);	/* overflow bits */ 
	EISAOUTB(0x3c3, v->tseng.viden);/* video enable */ 
1993/0906    
 
	/* turn screen on */ 
	srout(1, v->sequencer[1]); 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)