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

1991/0728/pc/devfloppy.c (diff list | history)

1991/0727/sys/src/9/pc/devfloppy.c:29,431991/0728/sys/src/9/pc/devfloppy.c:29,38 (short | long | prev | next)
1991/0727    
	 Fwrite=	 0x47,	/* write cmd */ 
	 Fmulti=	 0x80,	/* or'd with Fread or Fwrite for multi-head */ 
 
	DMAmode0=	0xb, 
	DMAmode1=	0xc, 
	DMAaddr=	0x4, 
	DMAtop=		0x81, 
	DMAinit=	0xa, 
	DMAcount=	0x5, 
                 
	Nfloppy=	4,	/* floppies/controller */ 
 
1991/0728    
	DMAchan=	2,	/* floppy dma channel */ 
 
1991/0727    
	/* sector size encodings */ 
	S128=		0, 
	S256=		1, 
1991/0727/sys/src/9/pc/devfloppy.c:48,531991/0728/sys/src/9/pc/devfloppy.c:43,53
1991/0727    
	Drivemask=	3<<0, 
	Seekend=	1<<5, 
	Codemask=	(3<<6)|(3<<3), 
1991/0728    
 
	/* file types */ 
	Qdir=		0, 
	Qdata=		16, 
	Qstruct=	32, 
1991/0727    
}; 
 
/* 
1991/0727/sys/src/9/pc/devfloppy.c:117,1231991/0728/sys/src/9/pc/devfloppy.c:117,123
1991/0727    
	int	confused; 
}; 
 
Controller	floppy[1]; 
1991/0728    
Controller	floppy; 
1991/0727    
 
/* 
 *  start a floppy drive's motor.  set an alarm for 1 second later to 
1991/0727/sys/src/9/pc/devfloppy.c:151,1581991/0728/sys/src/9/pc/devfloppy.c:151,156
1991/0727    
{ 
	int cmd; 
 
	if(!canqlock(dp)) 
		return; 
	cmd = Fintena | Fena | dp->dev; 
	outb(Fmotor, cmd); 
	dp->motoron = 0;	 
1991/0727/sys/src/9/pc/devfloppy.c:162,1751991/0728/sys/src/9/pc/devfloppy.c:160,172
1991/0727    
{ 
	Drive *dp; 
 
	if(waserror()) 
	for(dp = floppy.d; dp < &floppy.d[Nfloppy]; dp++){ 
		if(dp->motoron && TK2SEC(m->ticks - dp->lasttouched) > 5) 
1991/0728    
		if(dp->motoron && TK2SEC(m->ticks - dp->lasttouched) > 5 
		&& canqlock(dp)){ 
1991/0727    
			floppystop(dp); 
1991/0728    
			qunlock(dp); 
		} 
1991/0727    
	} 
		                 
	alarm(5*1000, floppyalarm, 0); 
	cancel(a); 
} 
 
int 
1991/0727/sys/src/9/pc/devfloppy.c:341,3581991/0728/sys/src/9/pc/devfloppy.c:338,360
1991/0727    
} 
 
void 
floppyinit(void) 
1991/0728    
floppyreset(void) 
1991/0727    
{ 
	Drive *dp; 
 
	for(dp = floppy.d; dp < &floppy.d[Nfloppy]; dp++){ 
		dp->t = &floppytype[0]; 
		dp->cyl = -1; 
1991/0728    
		dp->dev = dp - floppy.d; 
		dp->t = &floppytype[0];		/* default type */ 
1991/0727    
		dp->motoron = 1; 
1991/0728    
		dp->cyl = -1; 
1991/0727    
		floppystop(dp); 
	} 
	setvec(22, floppyintr); 
	alarm(5*1000, floppyalarm, (void *)0); 
1991/0728    
} 
 
void 
floppyinit(void) 
{ 
	kproc(floppykproc, 0); 
1991/0727    
} 
 
void 


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