⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scsi.s

📁 基于D12
💻 S
📖 第 1 页 / 共 2 页
字号:
	.dbline 141
;   Bulk_Control_r.BufCount=0;  
	clr R2
	clr R3
	sts _Bulk_Control_r+6+1,R3
	sts _Bulk_Control_r+6,R2
	.dbline 142
;   bEPPflags.bits.bulk_state=BULK_DATA_TRANS;
	lds R24,_bEPPflags+2
	andi R24,248
	ori R24,1
	sts _bEPPflags+2,R24
	.dbline 143
;   Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
	lds R18,_Bulk_Block+8
	lds R19,_Bulk_Block+8+1
	clr R16
	xcall _Bulk_ErrorHandler
	.dbline 144
;   D12_WriteEndpoint(5,EP2_PACKET_SIZE,PageBuf);   
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	ldi R18,64
	ldi R19,0
	ldi R16,5
	ldi R17,0
	xcall _D12_WriteEndpoint
	.dbline 145
;   return TRUE;
	ldi R16,1
	.dbline -2
L25:
	adiw R28,6
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l Logical_Block_Address 2 l
	.dbend
	.dbfunc e RBC_ReadCapacity _RBC_ReadCapacity fc
	.even
_RBC_ReadCapacity::
	.dbline -1
	.dbline 149
; #undef  cdbRead10 
; }
; BOOLEAN  RBC_ReadCapacity(void)
; {
	.dbline 150
;   Bulk_code_transmit((const unsigned char*)&ReadCapacityData,
	ldi R18,8
	ldi R19,0
	ldi R16,<_ReadCapacityData
	ldi R17,>_ReadCapacityData
	xcall _Bulk_code_transmit
	.dbline 152
; 		              sizeof(READ_CAPACITY_DATA));
;   return TRUE;  
	ldi R16,1
	.dbline -2
L50:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SPC_FormatCapacity _SPC_FormatCapacity fc
	.even
_SPC_FormatCapacity::
	.dbline -1
	.dbline 155
; }
; BOOLEAN  SPC_FormatCapacity(void)
; {
	.dbline 156
;   Bulk_code_transmit((const unsigned char*)&CapacitylistHead,
	ldi R18,12
	ldi R19,0
	ldi R16,<_CapacitylistHead
	ldi R17,>_CapacitylistHead
	xcall _Bulk_code_transmit
	.dbline 158
; 		              CAPACITY_LIST_LENGTH);
;   return TRUE;
	ldi R16,1
	.dbline -2
L51:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SPC_TestUnit _SPC_TestUnit fc
	.even
_SPC_TestUnit::
	.dbline -1
	.dbline 161
; }
; BOOLEAN  SPC_TestUnit(void)
; {
	.dbline 162
;   Bulk_ErrorHandler(CSW_GOOD,0); 
	clr R18
	clr R19
	clr R16
	xcall _Bulk_ErrorHandler
	.dbline 163
;   Bulk_CSWHandler();
	xcall _Bulk_CSWHandler
	.dbline 164
;   return TRUE;
	ldi R16,1
	.dbline -2
L52:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e RBC_Verify10 _RBC_Verify10 fc
	.even
_RBC_Verify10::
	.dbline -1
	.dbline 167
; }
; BOOLEAN  RBC_Verify10(void)
; {
	.dbline 168
;   Bulk_ErrorHandler(CSW_GOOD,0); 
	clr R18
	clr R19
	clr R16
	xcall _Bulk_ErrorHandler
	.dbline 169
;   Bulk_CSWHandler();
	xcall _Bulk_CSWHandler
	.dbline 170
;   return TRUE;
	ldi R16,1
	.dbline -2
L53:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e RBC_Write10 _RBC_Write10 fc
;        pageNum -> y+6
; Logical_Block_Address -> y+2
;       blockNum -> R12,R13
;              j -> R14
;              i -> R10
	.even
_RBC_Write10::
	xcall push_gset5
	sbiw R28,7
	.dbline -1
	.dbline 173
; }
; BOOLEAN  RBC_Write10(void)
; {  
	.dbline 178
;   #define cdbWrite10 Bulk_Block.cbw.CBWCB.RbcCdb_Write10
;   unsigned char i,j,pageNum;
;   unsigned int  blockNum;
;   unsigned long Logical_Block_Address;
;   Logical_Block_Address=cdbWrite10.LogicalBlockAddress[0]*0x1000000;
	lds R2,_Bulk_Block+15+2
	clr R3
	clr R4
	clr R5
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,1
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	std z+2,R16
	std z+3,R17
	std z+4,R18
	std z+5,R19
	.dbline 179
;   Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[1]*0x10000;
	lds R2,_Bulk_Block+15+2+1
	clr R3
	clr R4
	clr R5
	ldi R20,0
	ldi R21,0
	ldi R22,1
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32s
	movw R30,R28
	ldd R2,z+2
	ldd R3,z+3
	ldd R4,z+4
	ldd R5,z+5
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R28
	std z+2,R2
	std z+3,R3
	std z+4,R4
	std z+5,R5
	.dbline 180
;   Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[2]*0x100;
	lds R18,_Bulk_Block+15+2+2
	clr R19
	ldi R16,256
	ldi R17,1
	xcall empy16s
	movw R2,R16
	clr R4
	sbrc R3,7
	com R4
	clr R5
	sbrc R4,7
	com R5
	movw R30,R28
	ldd R6,z+2
	ldd R7,z+3
	ldd R8,z+4
	ldd R9,z+5
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+2,R6
	std z+3,R7
	std z+4,R8
	std z+5,R9
	.dbline 181
;   Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[3];
	lds R2,_Bulk_Block+15+2+3
	clr R3
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+2
	ldd R7,z+3
	ldd R8,z+4
	ldd R9,z+5
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	std z+2,R6
	std z+3,R7
	std z+4,R8
	std z+5,R9
	.dbline 182
;   Bulk_Control_w.Transfer_Length=cdbWrite10.TransferLength[0]*256+cdbWrite10.TransferLength[1];
	lds R18,_Bulk_Block+15+7
	clr R19
	ldi R16,256
	ldi R17,1
	xcall empy16s
	movw R2,R16
	lds R4,_Bulk_Block+15+7+1
	clr R5
	add R2,R4
	adc R3,R5
	sts _Bulk_Control_w+1,R3
	sts _Bulk_Control_w,R2
	.dbline 183
;   Bulk_Control_w.CurrentPage=Logical_Block_Address%32;
	ldi R20,31
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+2
	ldd R3,z+3
	ldd R4,z+4
	ldd R5,z+5
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	sts _Bulk_Control_w+4,R2
	.dbline 184
;   Bulk_Control_w.CurrentBlock=Logical_Block_Address/32;
	ldi R24,5
	ldi R25,0
	movw R30,R28
	ldd R2,z+2
	ldd R3,z+3
	ldd R4,z+4
	ldd R5,z+5
	st -y,R24
	movw R16,R2
	movw R18,R4
	xcall lsr32
	sts _Bulk_Control_w+2+1,R17
	sts _Bulk_Control_w+2,R16
	.dbline 185
;   Bulk_Control_w.BeginPage=Bulk_Control_w.CurrentPage;
	lds R2,_Bulk_Control_w+4
	sts _Bulk_Control_w+5,R2
	.dbline 186
;   Bulk_Control_w.BufCount=0;
	clr R2
	clr R3
	sts _Bulk_Control_w+6+1,R3
	sts _Bulk_Control_w+6,R2
	.dbline 187
;   bEPPflags.bits.bulk_state=BULK_DATA_RECIEVE;
	lds R24,_bEPPflags+2
	andi R24,248
	ori R24,4
	sts _bEPPflags+2,R24
	.dbline 188
;   Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
	lds R18,_Bulk_Block+8
	lds R19,_Bulk_Block+8+1
	clr R16
	xcall _Bulk_ErrorHandler
	.dbline 189
;   pageNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)%32;
	lds R2,_Bulk_Control_w
	lds R3,_Bulk_Control_w+1
	lds R24,_Bulk_Control_w+5
	clr R25
	add R24,R2
	adc R25,R3
	andi R24,31
	andi R25,0
	std y+6,R24
	.dbline 190
;   blockNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)/32;
	lds R16,_Bulk_Control_w+5
	clr R17
	add R16,R2
	adc R17,R3
	ldi R18,5
	ldi R19,0
	xcall lsr16
	movw R12,R16
	.dbline 191
;   blockNum+=Bulk_Control_w.CurrentBlock;
	lds R2,_Bulk_Control_w+2
	lds R3,_Bulk_Control_w+2+1
	add R12,R2
	adc R13,R3
	.dbline 192
;   Erase_Cluster(CANCEL_BLOCK);
	ldi R16,2047
	ldi R17,7
	xcall _Erase_Cluster
	.dbline 193
;   if(blockNum==Bulk_Control_w.CurrentBlock)j=32;
	lds R2,_Bulk_Control_w+2
	lds R3,_Bulk_Control_w+2+1
	cp R12,R2
	cpc R13,R3
	brne L81
	.dbline 193
	ldi R24,32
	mov R14,R24
	xjmp L82
L81:
	.dbline 194
;   else j=Bulk_Control_w.BeginPage;
	lds R14,_Bulk_Control_w+5
L82:
	.dbline 195
;   for(i=0;i<j;i++)
	clr R10
	xjmp L88
L85:
	.dbline 196
	.dbline 197
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	mov R18,R10
	clr R19
	lds R16,_Bulk_Control_w+2
	lds R17,_Bulk_Control_w+2+1
	xcall _ReadPage
	.dbline 198
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	mov R18,R10
	clr R19
	ldi R16,2047
	ldi R17,7
	xcall _WritePage
	.dbline 199
L86:
	.dbline 195
	inc R10
L88:
	.dbline 195
	cp R10,R14
	brlo L85
	.dbline 200
;   {
;     ReadPage(Bulk_Control_w.CurrentBlock,i,PageBuf);
; 	WritePage(CANCEL_BLOCK,i,PageBuf);
;   }  
;   Erase_Cluster(Bulk_Control_w.CurrentBlock);
	lds R16,_Bulk_Control_w+2
	lds R17,_Bulk_Control_w+2+1
	xcall _Erase_Cluster
	.dbline 201
;   for(i=0;i<Bulk_Control_w.BeginPage;i++)
	clr R10
	xjmp L94
L91:
	.dbline 202
	.dbline 203
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	mov R18,R10
	clr R19
	ldi R16,2047
	ldi R17,7
	xcall _ReadPage
	.dbline 204
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	mov R18,R10
	clr R19
	lds R16,_Bulk_Control_w+2
	lds R17,_Bulk_Control_w+2+1
	xcall _WritePage
	.dbline 205
L92:
	.dbline 201
	inc R10
L94:
	.dbline 201
	lds R2,_Bulk_Control_w+5
	cp R10,R2
	brlo L91
	.dbline 206
;   {
;      ReadPage(CANCEL_BLOCK,i,PageBuf);
; 	 WritePage(Bulk_Control_w.CurrentBlock,i,PageBuf);
;   }
;   if(blockNum>Bulk_Control_w.CurrentBlock)
	lds R2,_Bulk_Control_w+2
	lds R3,_Bulk_Control_w+2+1
	cp R2,R12
	cpc R3,R13
	brsh L97
	.dbline 207
;   {
	.dbline 208
;      Erase_Cluster(CANCEL_BLOCK);
	ldi R16,2047
	ldi R17,7
	xcall _Erase_Cluster
	.dbline 209
; 	 for(i=pageNum;i<32;i++)
	ldd R10,y+6
	xjmp L103
L100:
	.dbline 210
	.dbline 211
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	mov R18,R10
	clr R19
	movw R16,R12
	xcall _ReadPage
	.dbline 212
	ldi R24,<_PageBuf
	ldi R25,>_PageBuf
	std y+1,R25
	std y+0,R24
	mov R18,R10
	clr R19
	ldi R16,2047
	ldi R17,7
	xcall _WritePage
	.dbline 213
L101:
	.dbline 209
	inc R10
L103:
	.dbline 209
	mov R24,R10
	cpi R24,32
	brlo L100
	.dbline 214
;      {
;         ReadPage(blockNum,i,PageBuf);
; 	    WritePage(CANCEL_BLOCK,i,PageBuf);
;      }
;   }  
L97:
	.dbline 215
;   return TRUE;
	ldi R16,1
	.dbline -2
L54:
	adiw R28,7
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l pageNum 6 c
	.dbsym l Logical_Block_Address 2 l
	.dbsym r blockNum 12 i
	.dbsym r j 14 c
	.dbsym r i 10 c
	.dbend
	.dbfunc e SPC_LockMedia _SPC_LockMedia fc
	.even
_SPC_LockMedia::
	.dbline -1
	.dbline 219
; #undef  cdbWrite10
; }
; BOOLEAN  SPC_LockMedia(void)
; {
	.dbline 220
;   Bulk_ErrorHandler(CSW_GOOD,0); 
	clr R18
	clr R19
	clr R16
	xcall _Bulk_ErrorHandler
	.dbline 221
;   Bulk_CSWHandler();
	xcall _Bulk_CSWHandler
	.dbline 222
;   return TRUE;
	ldi R16,1
	.dbline -2
L104:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SPC_Reserve6 _SPC_Reserve6 fc
	.even
_SPC_Reserve6::
	.dbline -1
	.dbline 225
; }
; BOOLEAN  SPC_Reserve6(void)
; {
	.dbline 226
;   Bulk_ErrorHandler(CSW_FAIL,0); 
	clr R18
	clr R19
	ldi R16,1
	xcall _Bulk_ErrorHandler
	.dbline 227
;   Bulk_CSWHandler();
	xcall _Bulk_CSWHandler
	.dbline 228
;   return TRUE;
	ldi R16,1
	.dbline -2
L105:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile J:\PDIUSBD12-Materials\富昌\优盘5.0\SCSI.C
_PageBuf::
	.blkb 512
	.dbsym e PageBuf _PageBuf A[512:512]c
_Bulk_Control_w::
	.blkb 10
	.dbstruct 0 10 _BULK_CONTROL
	.dbfield 0 Transfer_Length i
	.dbfield 2 CurrentBlock i
	.dbfield 4 CurrentPage c
	.dbfield 5 BeginPage c
	.dbfield 6 BufCount i
	.dbfield 8 ReservedPage i
	.dbend
	.dbsym e Bulk_Control_w _Bulk_Control_w S[_BULK_CONTROL]
_Bulk_Control_r::
	.blkb 10
	.dbsym e Bulk_Control_r _Bulk_Control_r S[_BULK_CONTROL]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -