www.pudn.com > usbcode.rar > Scsi.s


	.module Scsi.c 
	.area lit(rom, con, rel) 
_SCSI_INQUIRY:: 
	.byte 0,128 
	.byte 0,1 
	.byte 31,0 
	.byte 0,0 
	.byte 32,32 
	.byte 32,32 
	.byte 32,32 
	.byte 32,32 
	.byte 'C,'H 
	.byte 'E,'N 
	.byte 'C,'H 
	.byte 'I,32 
	.byte 'A,'V 
	.byte 'R,32 
	.byte 'D,'I 
	.byte 'S,'K 
	.byte 49,46 
	.byte 48,48 
	.dbfile G:\source/scsi_data.h 
	.dbsym s SCSI_INQUIRY _SCSI_INQUIRY A[36:36]c 
_SCSIDATA_ReadFormatCapacities:: 
	.byte 0,0 
	.byte 0,8 
	.byte 0,0 
	.byte 255,255 
	.byte 3,0 
	.byte 2,0 
	.dbsym s SCSIDATA_ReadFormatCapacities _SCSIDATA_ReadFormatCapacities A[12:12]c 
_SCSIDATA_ReadCapacity:: 
	.byte 0,0 
	.byte 249,255 
	.byte 0,0 
	.byte 2,0 
	.dbsym s SCSIDATA_ReadCapacity _SCSIDATA_ReadCapacity A[8:8]c 
_SCSIDATA_RequestSense:: 
	.byte 'p,0 
	.byte 5,0 
	.byte 0,0 
	.byte 0,10 
	.byte 0,0 
	.byte 0,0 
	.byte 32,0 
	.byte 0,0 
	.byte 0,0 
	.dbsym s SCSIDATA_RequestSense _SCSIDATA_RequestSense A[18:18]c 
_SCSIDATA_Sense:: 
	.byte 3,0 
	.byte 0,0 
	.byte 1,10 
	.byte 0,16 
	.byte 0,0 
	.byte 0,0 
	.byte 2,0 
	.byte 0,0 
	.byte 5,30 
	.byte 15,160 
	.byte 4,16 
	.byte 2,0 
	.byte 0,250 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.byte 0,0 
	.dbsym s SCSIDATA_Sense _SCSIDATA_Sense A[48:48]c 
	.area data(ram, con, rel) 
	.dbfile G:\source/scsi_data.h 
_BulkPhase:: 
	.blkb 1 
	.area idata 
	.byte 0 
	.area data(ram, con, rel) 
	.dbfile G:\source/scsi_data.h 
	.dbfile G:\source\Scsi.c 
	.dbsym s BulkPhase _BulkPhase c 
_WritePageBuff:: 
	.blkw 1 
	.area idata 
	.word L4 
	.area data(ram, con, rel) 
	.dbfile G:\source\Scsi.c 
	.dbsym s WritePageBuff _WritePageBuff pc 
_WritePageBuffLen:: 
	.blkb 2 
	.area idata 
	.word 0 
	.area data(ram, con, rel) 
	.dbfile G:\source\Scsi.c 
	.dbsym s WritePageBuffLen _WritePageBuffLen i 
	.area text(rom, con, rel) 
	.dbfile G:\source\Scsi.c 
	.dbfunc s Bulk_Out_Packet _Bulk_Out_Packet fI 
;              p -> R12,R13 
;           Buff -> y+0 
;              j -> R10 
;              i -> R22 
;            len -> R20 
	.even 
_Bulk_Out_Packet:: 
	rcall push_gset4 
	mov R20,R16 
	sbiw R28,63 
	sbiw R28,1  ; offset = 64 
	.dbline -1 
	.dbline 58 
; /*++ 
;  
; Module Name: 
;  
;          Scsi.c 
;  
; Abstract: 
;  
;          Header file related to D12 module 
;  
; Environment: 
;  
;         ICCAVR 6.29 
;  
; Revision History: 
;  
;         04/23/2004      chenchi   created 
;  
; --*/ 
; /******************************************************************/ 
;  
; #include  
; #include "d12.h" 
; #include "scsi.h" 
; #include "scsi_data.h" 
; #include "nflash32.h" 
;  
; unsigned char BulkPhase = 0; 
; unsigned char BulkStausPhase; 
; unsigned int dCBWDaTrLen; 
; unsigned char * WritePageBuff = ""; 
; unsigned int WritePageBuffLen = 0; 
;  
; CSW_STRUCT  Usb_Csw; 
; CBW_STRUCT  Usb_Cbw; 
;  
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:处理PC发送的批量传输包 
; **函数输入参数及说明:接收数据长度 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void Bulk_Out_Packet(unsigned char len){ 
	.dbline 61 
; 	unsigned char i,j,*p; 
; 	unsigned char Buff[64]; 
; 	if(BulkPhase == CommandPhase){ 
	lds R2,_BulkPhase 
	tst R2 
	brne L6 
	.dbline 61 
	.dbline 62 
; 		j = D12_DATA; 
	lds R10,31744 
	.dbline 63 
; 		csram; 
	sts 0xfc01,R22 
	.dbline 63 
	.dbline 64 
; 		p = XmtBuff.b; 
	ldi R24,<_XmtBuff 
	ldi R25,>_XmtBuff 
	mov R12,R24 
	mov R13,R25 
	.dbline 65 
; 		*(p++) = j; 
	mov R2,R12 
	mov R3,R13 
	mov R24,R2 
	mov R25,R3 
	adiw R24,1 
	mov R12,R24 
	mov R13,R25 
	mov R30,R2 
	mov R31,R3 
	std z+0,R10 
	.dbline 66 
; 		for(i=0;iL53 
	mov R16,R20 
	mov R17,R21 
	subi R16,35 
	sbci R17,0 
	lsl R16 
	rol R17 
	add R16,R24 
	adc R17,R25 
	rcall lpm16 
	mov R30,R16 
	mov R31,R17 
	ijmp 
L52: 
	cpi R20,90 
	ldi R30,0 
	cpc R21,R30 
	brne X10 
	rjmp L46 
X10: 
	rjmp L32 
X1: 
	.dbline 126 
L36: 
	.dbline 128 
; 		case 0x00: 
; 			SCSICMD_TestUnitReady(); 
	rcall _SCSICMD_TestUnitReady 
	.dbline 129 
; 			BulkStausPhase = InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 130 
; 			break; 
	rjmp L33 
L37: 
	.dbline 132 
; 		case 0x03: 
; 			SCSICMD_RequestSense(); 
	rcall _SCSICMD_RequestSense 
	.dbline 133 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 134 
;                		break; 
	rjmp L33 
L38: 
	.dbline 136 
; 		case 0x12: 
; 			SCSICMD_Inquiry(); 
	rcall _SCSICMD_Inquiry 
	.dbline 137 
; 			BulkStausPhase = InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 138 
; 			break; 
	rjmp L33 
L39: 
	.dbline 140 
; 		case 0x1a: 
; 			SCSICMD_ModeSense06(); 
	rcall _SCSICMD_ModeSense06 
	.dbline 141 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 142 
;                		break; 
	rjmp L33 
L40: 
	.dbline 144 
; 		case 0x1e: 
; 			SCSICMD_PreventAllowMediumRemoval(); 
	rcall _SCSICMD_PreventAllowMediumRemoval 
	.dbline 145 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 146 
;                		break; 
	rjmp L33 
L41: 
	.dbline 148 
; 		case 0x23: 
; 			SCSICMD_ReadFormatCapacities(); 
	rcall _SCSICMD_ReadFormatCapacities 
	.dbline 149 
; 			BulkStausPhase = InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 150 
; 			break; 
	rjmp L33 
L42: 
	.dbline 152 
; 		case 0x25: 
; 			SCSICMD_ReadCapacity(); 
	rcall _SCSICMD_ReadCapacity 
	.dbline 153 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 154 
;               		break; 
	rjmp L33 
L43: 
	.dbline 156 
; 		case 0x28: 
; 			SCSICMD_Read10(); 
	rcall _SCSICMD_Read10 
	.dbline 157 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 158 
;                		break; 
	rjmp L33 
L44: 
	.dbline 160 
; 		case 0x2a: 
; 			SCSICMD_Write10(); 
	rcall _SCSICMD_Write10 
	.dbline 161 
;                		BulkPhase =OutDataPhase; 
	ldi R24,1 
	sts _BulkPhase,R24 
	.dbline 162 
;                		break; 
	rjmp L33 
L45: 
	.dbline 164 
; 		case 0x2f: 
; 			SCSICMD_Verify10(); 
	rcall _SCSICMD_Verify10 
	.dbline 165 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 166 
;                		break; 
	rjmp L33 
L46: 
	.dbline 168 
; 		case 0x5a: 
; 			SCSICMD_ModeSense10(); 
	rcall _SCSICMD_ModeSense10 
	.dbline 169 
;                		BulkStausPhase=InCSWPhase; 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 170 
;                		break; 
	rjmp L33 
L32: 
	.dbline 172 
	ldi R24,8 
	sts _BulkStausPhase,R24 
	.dbline 173 
L33: 
	.dbline -2 
	.dbline 175 
; 		default: 
; 			BulkStausPhase=InCSWPhase; 
; 			break; 
; 	} 
; } 
L24: 
	rcall pop_gset1 
	.dbline 0 ; func end 
	ret 
	.dbfunc s Usb_BoBulkInData _Usb_BoBulkInData fI 
	.even 
_Usb_BoBulkInData:: 
	.dbline -1 
	.dbline 197 
	.dbline 198 
	lds R17,_WritePageBuff+1 
	lds R16,_WritePageBuff 
	rcall _flashWrite 
	.dbline 199 
	lds R3,_WriteResidueVal+1 
	lds R2,_WriteResidueVal 
	tst R2 
	brne L55 
	tst R3 
	brne L55 
	.dbline 199 
	.dbline 200 
	clr R2 
	sts _BulkPhase,R2 
	.dbline 201 
L55: 
	.dbline -2 
	.dbline 202 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:PC输入数据处理 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void Usb_BoBulkInData(void){ 
; 	flashWrite(WritePageBuff); 
; 	if(WriteResidueVal == 0){ 
; 		BulkPhase = CommandPhase; 
; 	} 
; } 
L54: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s Bulk_In_Packet _Bulk_In_Packet fI 
	.even 
_Bulk_In_Packet:: 
	.dbline -1 
	.dbline 224 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:回应批量传输包 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void Bulk_In_Packet(void){ 
	.dbline 225 
; 	if(XmtBuff.wrLength != 0) 
	lds R3,_XmtBuff+64+1 
	lds R2,_XmtBuff+64 
	tst R2 
	brne X11 
	tst R3 
	breq L58 
X11: 
	.dbline 226 
; 		BULK_submit(); 
	rcall _BULK_submit 
	rjmp L59 
L58: 
	.dbline 227 
; 	else if(ReadResidueVal != 0) 
	ldi R16,L63 
	rcall lpm32 
	lds R5,_ReadResidueVal+2+1 
	lds R4,_ReadResidueVal+2 
	lds R3,_ReadResidueVal+1 
	lds R2,_ReadResidueVal 
	cp R2,R16 
	cpc R3,R17 
	cpc R4,R18 
	cpc R5,R19 
	breq L61 
	.dbline 228 
; 		flashRead(); 
	rcall _flashRead 
	rjmp L62 
L61: 
	.dbline 229 
; 	else if(BulkStausPhase == InCSWPhase){ 
	lds R24,_BulkStausPhase 
	cpi R24,8 
	brne L64 
	.dbline 229 
	.dbline 230 
; 		XmtBuff.p_p=0; 
	clr R2 
	sts _XmtBuff+70,R2 
	.dbline 231 
; 		XmtBuff.p = (unsigned char *)&Usb_Csw; 
	ldi R24,<_Usb_Csw 
	ldi R25,>_Usb_Csw 
	sts _XmtBuff+68+1,R25 
	sts _XmtBuff+68,R24 
	.dbline 232 
; 		XmtBuff.wrLength = 13; 
	ldi R24,13 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 233 
; 		BULK_submit(); 
	rcall _BULK_submit 
	.dbline 234 
; 	} 
L64: 
L62: 
L59: 
	.dbline -2 
	.dbline 235 
; } 
L57: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_Inquiry _SCSICMD_Inquiry fI 
	.even 
_SCSICMD_Inquiry:: 
	.dbline -1 
	.dbline 257 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_Inquiry(void){ 
	.dbline 258 
; 	Usb_Set_Csw(); 
	rcall _Usb_Set_Csw 
	.dbline 259 
; 	Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 260 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 261 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 262 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 263 
; 	XmtBuff.pp = SCSI_INQUIRY; 
	ldi R24,<_SCSI_INQUIRY 
	ldi R25,>_SCSI_INQUIRY 
	sts _XmtBuff+66+1,R25 
	sts _XmtBuff+66,R24 
	.dbline 264 
; 	XmtBuff.wrLength = 36; 
	ldi R24,36 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 265 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 266 
; } 
L69: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s Usb_Set_Csw _Usb_Set_Csw fI 
	.even 
_Usb_Set_Csw:: 
	.dbline -1 
	.dbline 288 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:创建CSW数据块 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void Usb_Set_Csw(void){ 
	.dbline 289 
; 	Usb_Csw.dCSWSignature[0] = 0x55; 
	ldi R24,85 
	sts _Usb_Csw,R24 
	.dbline 290 
; 	Usb_Csw.dCSWSignature[1] = 0x53; 
	ldi R24,83 
	sts _Usb_Csw+1,R24 
	.dbline 291 
; 	Usb_Csw.dCSWSignature[2] = 0x42; 
	ldi R24,66 
	sts _Usb_Csw+2,R24 
	.dbline 292 
; 	Usb_Csw.dCSWSignature[3] = 0x53; 
	ldi R24,83 
	sts _Usb_Csw+3,R24 
	.dbline 293 
; 	Usb_Csw.dCSWTag[0] = XmtBuff.b[4]; 
	lds R2,_XmtBuff+4 
	sts _Usb_Csw+4,R2 
	.dbline 294 
; 	Usb_Csw.dCSWTag[1] = XmtBuff.b[5]; 
	lds R2,_XmtBuff+5 
	sts _Usb_Csw+4+1,R2 
	.dbline 295 
; 	Usb_Csw.dCSWTag[2] = XmtBuff.b[6]; 
	lds R2,_XmtBuff+6 
	sts _Usb_Csw+4+2,R2 
	.dbline 296 
; 	Usb_Csw.dCSWTag[3] = XmtBuff.b[7]; 
	lds R2,_XmtBuff+7 
	sts _Usb_Csw+4+3,R2 
	.dbline 297 
; 	Usb_Csw.bCSWStatus = 0; 
	clr R2 
	sts _Usb_Csw+12,R2 
	.dbline -2 
	.dbline 298 
; } 
L80: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_ReadFormatCapacities _SCSICMD_ReadFormatCapacities fI 
	.even 
_SCSICMD_ReadFormatCapacities:: 
	.dbline -1 
	.dbline 320 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_ReadFormatCapacities(void){ 
	.dbline 321 
; 	Usb_Set_Csw(); 
	rcall _Usb_Set_Csw 
	.dbline 322 
; 	Usb_Csw.dCSWDataResidue[0]=(unsigned char)(dCBWDaTrLen-0x0c);     
	lds R25,_dCBWDaTrLen+1 
	lds R24,_dCBWDaTrLen 
	sbiw R24,12 
	sts _Usb_Csw+8,R24 
	.dbline 323 
; 	Usb_Csw.dCSWDataResidue[1]=0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 324 
; 	Usb_Csw.dCSWDataResidue[2]=0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 325 
; 	Usb_Csw.dCSWDataResidue[3]=0;    
	sts _Usb_Csw+8+3,R2 
	.dbline 326 
;         XmtBuff.pp = SCSIDATA_ReadFormatCapacities; 
	ldi R24,<_SCSIDATA_ReadFormatCapacities 
	ldi R25,>_SCSIDATA_ReadFormatCapacities 
	sts _XmtBuff+66+1,R25 
	sts _XmtBuff+66,R24 
	.dbline 327 
; 	XmtBuff.wrLength = 12; 
	ldi R24,12 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 328 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 329 
; } 
L96: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_ReadCapacity _SCSICMD_ReadCapacity fI 
	.even 
_SCSICMD_ReadCapacity:: 
	.dbline -1 
	.dbline 351 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_ReadCapacity(void){ 
	.dbline 352 
; 	Usb_Set_Csw();   
	rcall _Usb_Set_Csw 
	.dbline 353 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 354 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 355 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 356 
; 	Usb_Csw.dCSWDataResidue[4] = 0;   
	sts _Usb_Csw+8+4,R2 
	.dbline 357 
; 	XmtBuff.pp = SCSIDATA_ReadCapacity; 
	ldi R24,<_SCSIDATA_ReadCapacity 
	ldi R25,>_SCSIDATA_ReadCapacity 
	sts _XmtBuff+66+1,R25 
	sts _XmtBuff+66,R24 
	.dbline 358 
; 	XmtBuff.wrLength = 8;  
	ldi R24,8 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 359 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 360 
; } 
L106: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_Read10 _SCSICMD_Read10 fI 
	.even 
_SCSICMD_Read10:: 
	.dbline -1 
	.dbline 382 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_Read10(void){ 
	.dbline 383 
; 	Usb_Set_Csw();  
	rcall _Usb_Set_Csw 
	.dbline 384 
; 	Usb_Csw.dCSWDataResidue[0]=0;  
	clr R2 
	sts _Usb_Csw+8,R2 
	.dbline 385 
;       	Usb_Csw.dCSWDataResidue[1]=0; 
	sts _Usb_Csw+8+1,R2 
	.dbline 386 
;       	Usb_Csw.dCSWDataResidue[2]=0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 387 
;       	Usb_Csw.dCSWDataResidue[3]=0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 388 
; 	flashReadcmd(); 
	rcall _flashReadcmd 
	.dbline 389 
; 	flashRead(); 
	rcall _flashRead 
	.dbline -2 
	.dbline 390 
; } 
L117: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_TestUnitReady _SCSICMD_TestUnitReady fI 
	.even 
_SCSICMD_TestUnitReady:: 
	.dbline -1 
	.dbline 412 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_TestUnitReady(void){ 
	.dbline 413 
; 	Usb_Set_Csw();   
	rcall _Usb_Set_Csw 
	.dbline 414 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 415 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 416 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 417 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 418 
; 	XmtBuff.p_p=0; 
	sts _XmtBuff+70,R2 
	.dbline 419 
; 	XmtBuff.p = (unsigned char *)&Usb_Csw; 
	ldi R24,<_Usb_Csw 
	ldi R25,>_Usb_Csw 
	sts _XmtBuff+68+1,R25 
	sts _XmtBuff+68,R24 
	.dbline 420 
; 	XmtBuff.wrLength = 13; 
	ldi R24,13 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 421 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 422 
; } 
L125: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_RequestSense _SCSICMD_RequestSense fI 
	.even 
_SCSICMD_RequestSense:: 
	.dbline -1 
	.dbline 444 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_RequestSense(void){ 
	.dbline 445 
; 	Usb_Set_Csw();   
	rcall _Usb_Set_Csw 
	.dbline 446 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 447 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 448 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 449 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 450 
; 	XmtBuff.pp = SCSIDATA_RequestSense; 
	ldi R24,<_SCSIDATA_RequestSense 
	ldi R25,>_SCSIDATA_RequestSense 
	sts _XmtBuff+66+1,R25 
	sts _XmtBuff+66,R24 
	.dbline 451 
; 	XmtBuff.wrLength = 18; 
	ldi R24,18 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 452 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 453 
; } 
L137: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_ModeSense06 _SCSICMD_ModeSense06 fI 
	.even 
_SCSICMD_ModeSense06:: 
	.dbline -1 
	.dbline 475 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_ModeSense06(void){ 
	.dbline 476 
; 	Usb_Set_Csw(); 
	rcall _Usb_Set_Csw 
	.dbline 477 
;       	Usb_Csw.dCSWDataResidue[1]=(unsigned char)(dCBWDaTrLen-0x04);     
	lds R25,_dCBWDaTrLen+1 
	lds R24,_dCBWDaTrLen 
	sbiw R24,4 
	sts _Usb_Csw+8+1,R24 
	.dbline 478 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	clr R2 
	sts _Usb_Csw+8+2,R2 
	.dbline 479 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 480 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 481 
;  	XmtBuff.pp = SCSIDATA_Sense; 
	ldi R24,<_SCSIDATA_Sense 
	ldi R25,>_SCSIDATA_Sense 
	sts _XmtBuff+66+1,R25 
	sts _XmtBuff+66,R24 
	.dbline 482 
; 	XmtBuff.wrLength = 4; 
	ldi R24,4 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 483 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 484 
; } 
L148: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_PreventAllowMediumRemoval _SCSICMD_PreventAllowMediumRemoval fI 
	.even 
_SCSICMD_PreventAllowMediumRemoval:: 
	.dbline -1 
	.dbline 506 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_PreventAllowMediumRemoval(void){ 
	.dbline 507 
; 	Usb_Set_Csw();   
	rcall _Usb_Set_Csw 
	.dbline 508 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 509 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 510 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 511 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 512 
; 	XmtBuff.p_p=0; 
	sts _XmtBuff+70,R2 
	.dbline 513 
; 	XmtBuff.p = (unsigned char *)&Usb_Csw; 
	ldi R24,<_Usb_Csw 
	ldi R25,>_Usb_Csw 
	sts _XmtBuff+68+1,R25 
	sts _XmtBuff+68,R24 
	.dbline 514 
; 	XmtBuff.wrLength = 13; 
	ldi R24,13 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 515 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 516 
; } 
L159: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_Write10 _SCSICMD_Write10 fI 
	.even 
_SCSICMD_Write10:: 
	.dbline -1 
	.dbline 538 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_Write10(void){ 
	.dbline 539 
; 	Usb_Set_Csw(); 
	rcall _Usb_Set_Csw 
	.dbline 540 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 541 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 542 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 543 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 544 
; 	flashWritecmd(); 
	rcall _flashWritecmd 
	.dbline 545 
; 	XmtBuff.p_p=0; 
	clr R2 
	sts _XmtBuff+70,R2 
	.dbline 546 
; 	XmtBuff.p = (unsigned char *)&Usb_Csw; 
	ldi R24,<_Usb_Csw 
	ldi R25,>_Usb_Csw 
	sts _XmtBuff+68+1,R25 
	sts _XmtBuff+68,R24 
	.dbline 547 
; 	XmtBuff.wrLength = 13; 
	ldi R24,13 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 548 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 549 
; } 
L171: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_Verify10 _SCSICMD_Verify10 fI 
	.even 
_SCSICMD_Verify10:: 
	.dbline -1 
	.dbline 571 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_Verify10(void){ 
	.dbline 572 
; 	Usb_Set_Csw(); 
	rcall _Usb_Set_Csw 
	.dbline 573 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 574 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 575 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 576 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 577 
; 	XmtBuff.p_p=0; 
	sts _XmtBuff+70,R2 
	.dbline 578 
; 	XmtBuff.p = (unsigned char *)&Usb_Csw; 
	ldi R24,<_Usb_Csw 
	ldi R25,>_Usb_Csw 
	sts _XmtBuff+68+1,R25 
	sts _XmtBuff+68,R24 
	.dbline 579 
; 	XmtBuff.wrLength = 13; 
	ldi R24,13 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 580 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 581 
; } 
L183: 
	.dbline 0 ; func end 
	ret 
	.dbfunc s SCSICMD_ModeSense10 _SCSICMD_ModeSense10 fI 
	.even 
_SCSICMD_ModeSense10:: 
	.dbline -1 
	.dbline 603 
; /************************************************************ 
; **工程名称:U盘固件程序开发 
; **编译器类型及版本:ICCAVR 6.26C 
; **日期:2004.4.30 
; **创建人:陈驰 
; **所属单位:湖南大学计算机与通信学院 
;  
; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
; **时钟频率:8MHZ 
;  
; **函数功能:SCSI命令 
; **函数输入参数及说明:无 
;  
; **函数返回值:无 
; **在本函数以外定义的变量: 
; **调用的函数说明:无 
;  
; **修改人:陈驰 
; **修改日期:2004.4.30 
; **修改说明:创建 
; *************************************************************/ 
; void SCSICMD_ModeSense10(void){ 
	.dbline 604 
; 	Usb_Set_Csw(); 
	rcall _Usb_Set_Csw 
	.dbline 605 
;        Usb_Csw.dCSWDataResidue[1] = 0; 
	clr R2 
	sts _Usb_Csw+8+1,R2 
	.dbline 606 
; 	Usb_Csw.dCSWDataResidue[2] = 0; 
	sts _Usb_Csw+8+2,R2 
	.dbline 607 
; 	Usb_Csw.dCSWDataResidue[3] = 0; 
	sts _Usb_Csw+8+3,R2 
	.dbline 608 
; 	Usb_Csw.dCSWDataResidue[4] = 0; 
	sts _Usb_Csw+8+4,R2 
	.dbline 609 
; 	XmtBuff.p_p=0; 
	sts _XmtBuff+70,R2 
	.dbline 610 
; 	XmtBuff.p = (unsigned char *)&Usb_Csw; 
	ldi R24,<_Usb_Csw 
	ldi R25,>_Usb_Csw 
	sts _XmtBuff+68+1,R25 
	sts _XmtBuff+68,R24 
	.dbline 611 
; 	XmtBuff.wrLength = 13; 
	ldi R24,13 
	ldi R25,0 
	sts _XmtBuff+64+1,R25 
	sts _XmtBuff+64,R24 
	.dbline 612 
; 	BULK_submit(); 
	rcall _BULK_submit 
	.dbline -2 
	.dbline 613 
; } 
L195: 
	.dbline 0 ; func end 
	ret 
	.area bss(ram, con, rel) 
	.dbfile G:\source\Scsi.c 
_Usb_Cbw:: 
	.blkb 31 
	.dbsym s Usb_Cbw _Usb_Cbw X 
_Usb_Csw:: 
	.blkb 13 
	.dbsym s Usb_Csw _Usb_Csw X 
_dCBWDaTrLen:: 
	.blkb 2 
	.dbsym s dCBWDaTrLen _dCBWDaTrLen i 
_BulkStausPhase:: 
	.blkb 1 
	.dbsym s BulkStausPhase _BulkStausPhase c 
	.area lit(rom, con, rel) 
L63: 
	.word 0,0 
	.area data(ram, con, rel) 
	.dbfile G:\source\Scsi.c 
L4: 
	.blkb 1 
	.area idata 
	.byte 0 
	.area data(ram, con, rel) 
	.dbfile G:\source\Scsi.c