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

1991/0928/pc/vga.c (diff list | history)

1991/0927/sys/src/9/pc/vga.c:52,571991/0928/sys/src/9/pc/vga.c:52,58 (short | long | prev | next)
1991/0727    
	 Smmask=	 0x02,		/*  map mask */ 
	CRX=		0x3D4,		/* index to crt registers */ 
	CR=		0x3D5,		/* crt registers */ 
1991/0928    
	 Cvertend=	 0x12,		/*  vertical display end */ 
1991/0727    
	 Cmode=		 0x17,		/*  mode register */ 
	 Cmsl=		 0x09,		/*  max scan line */ 
	ARX=		0x3C0,		/* index to attribute registers */ 
1991/0927/sys/src/9/pc/vga.c:106,1111991/0928/sys/src/9/pc/vga.c:107,174
1991/0727    
} 
 
/* 
1991/0928    
 *  2 bit deep display.  the bits are adjacent.  maybe this 
 *  will work 
 *	4 color 
 *	640x480 
 */ 
vga2(void) 
{ 
	int i; 
	arout(Acpe, 0x00);	/* disable planes for output */ 
 
	gscreen.ldepth = 1; 
	arout(Amode, 0x01);	/* color graphics mode */ 
	grout(Gmisc, 0x01);	/* graphics mode */ 
	grout(Gmode, 0x30);	/* 2 bits deep, even bytes are 
				 * planes 0 and 2, odd are planes 
				 * 1 and 3 */ 
	grout(Grot, 0x00);	/* CPU writes bytes to video 
				 * mem without modifications */ 
	crout(Cmode, 0xe3);	/* turn off address wrap & 
				 * word mode */ 
	crout(Cmsl, 0x40);	/* 1 pixel per scan line */ 
	crout(Cvertend, MAXY);	/* 480 lne display */ 
	srout(Smode, 0x06);	/* extended memory, odd/even */ 
	srout(Sclock, 0x01);	/* 8 bits/char */ 
	srout(Smmask, 0x0f);	/* enable 2 planes for writing */ 
 
	arout(Acpe, 0x0f);	/* enable 2 planes for output */ 
	for(i = 0; i < 128*1024;){ 
		((uchar*)SCREENMEM)[i++] = 0x1b; 
		((uchar*)SCREENMEM)[i++] = 0xe4; 
	} 
	for(;;); 
} 
 
/* 
 *  set up like vga mode 0x11 
 *	2 color 
 *	640x480 
 */ 
vga1(void) 
{ 
	arout(Acpe, 0x00);	/* disable planes for output */ 
 
	gscreen.ldepth = 0; 
	arout(Amode, 0x01);	/* color graphics mode */ 
	grout(Gmisc, 0x01);	/* graphics mode */ 
	grout(Gmode, 0x00);	/* 1 bit deep */ 
	grout(Grot, 0x00);	/* CPU writes bytes to video 
				 * mem without modifications */ 
	crout(Cmode, 0xe3);	/* turn off address wrap & 
				 * word mode */ 
	crout(Cmsl, 0x40);	/* 1 pixel per scan line */ 
	crout(Cvertend, MAXY);	/* 480 lne display */ 
	srout(Smode, 0x06);	/* extended memory, 
				 * odd/even off */ 
	srout(Sclock, 0x01);	/* 8 bits/char */ 
	srout(Smmask, 0x0f);	/* enable 4 planes for writing */ 
 
	arout(Acpe, 0x0f);	/* enable 4 planes for output */ 
} 
 
/* 
1991/0727    
 *  Set up for 4 separately addressed bit planes.  Each plane is  
 */ 
void 
1991/0927/sys/src/9/pc/vga.c:115,1311991/0928/sys/src/9/pc/vga.c:178,184
1991/0727    
	int c; 
1991/0730    
	ulong *l; 
1991/0723    
 
1991/0727    
	arout(Acpe, 0x0f);	/* enable all planes */ 
	arout(Amode, 0x01);	/* graphics mode - 4 bit pixels */ 
	grout(Gmisc, 0x01);	/* graphics mode */ 
	grout(Gmode, 0x00);	/* write mode 0, read mode 0 */ 
	grout(Grot, 0x00);	/* CPU writes bytes to video mem without modifications */ 
	crout(Cmode, 0xe3);	/* turn off address wrap & word mode */ 
	crout(Cmsl, 0x40);	/* 1 pixel per scan line */ 
	srout(Smode, 0x06);	/* extended memory, odd/even off */ 
	srout(Sclock, 0x01);	/* 8 bits/char */ 
1991/0730    
	srout(Smmask, 0x0f);	/* enable all 4 color planes for writing */ 
1991/0724    
                 
1991/0928    
	vga1(); 
1991/0727    
	/* 
1991/0801    
	 *  swizzle the font longs. 
1991/0921    
	 *  we do it here since the font is initialized with big 


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