📄 scsi.lis
字号:
0344 4482 std z+4,R4
0346 5582 std z+5,R5
0348 .dbline 180
0348 ; Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[2]*0x100;
0348 20911300 lds R18,_Bulk_Block+15+2+2
034C 3327 clr R19
034E 00E0 ldi R16,256
0350 11E0 ldi R17,1
0352 0E940000 xcall empy16s
0356 1801 movw R2,R16
0358 4424 clr R4
035A 37FC sbrc R3,7
035C 4094 com R4
035E 5524 clr R5
0360 47FC sbrc R4,7
0362 5094 com R5
0364 FE01 movw R30,R28
0366 6280 ldd R6,z+2
0368 7380 ldd R7,z+3
036A 8480 ldd R8,z+4
036C 9580 ldd R9,z+5
036E 620C add R6,R2
0370 731C adc R7,R3
0372 841C adc R8,R4
0374 951C adc R9,R5
0376 FE01 movw R30,R28
0378 6282 std z+2,R6
037A 7382 std z+3,R7
037C 8482 std z+4,R8
037E 9582 std z+5,R9
0380 .dbline 181
0380 ; Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[3];
0380 20901400 lds R2,_Bulk_Block+15+2+3
0384 3324 clr R3
0386 4424 clr R4
0388 5524 clr R5
038A FE01 movw R30,R28
038C 6280 ldd R6,z+2
038E 7380 ldd R7,z+3
0390 8480 ldd R8,z+4
0392 9580 ldd R9,z+5
0394 620C add R6,R2
0396 731C adc R7,R3
0398 841C adc R8,R4
039A 951C adc R9,R5
039C FE01 movw R30,R28
039E 6282 std z+2,R6
03A0 7382 std z+3,R7
03A2 8482 std z+4,R8
03A4 9582 std z+5,R9
03A6 .dbline 182
03A6 ; Bulk_Control_w.Transfer_Length=cdbWrite10.TransferLength[0]*256+cdbWrite10.TransferLength[1];
03A6 20911600 lds R18,_Bulk_Block+15+7
03AA 3327 clr R19
03AC 00E0 ldi R16,256
03AE 11E0 ldi R17,1
03B0 0E940000 xcall empy16s
03B4 1801 movw R2,R16
03B6 40901700 lds R4,_Bulk_Block+15+7+1
03BA 5524 clr R5
03BC 240C add R2,R4
03BE 351C adc R3,R5
03C0 30920102 sts _Bulk_Control_w+1,R3
03C4 20920002 sts _Bulk_Control_w,R2
03C8 .dbline 183
03C8 ; Bulk_Control_w.CurrentPage=Logical_Block_Address%32;
03C8 4FE1 ldi R20,31
03CA 50E0 ldi R21,0
03CC 60E0 ldi R22,0
03CE 70E0 ldi R23,0
03D0 FE01 movw R30,R28
03D2 2280 ldd R2,z+2
03D4 3380 ldd R3,z+3
03D6 4480 ldd R4,z+4
03D8 5580 ldd R5,z+5
03DA 2422 and R2,R20
03DC 3522 and R3,R21
03DE 4622 and R4,R22
03E0 5722 and R5,R23
03E2 20920402 sts _Bulk_Control_w+4,R2
03E6 .dbline 184
03E6 ; Bulk_Control_w.CurrentBlock=Logical_Block_Address/32;
03E6 85E0 ldi R24,5
03E8 90E0 ldi R25,0
03EA FE01 movw R30,R28
03EC 2280 ldd R2,z+2
03EE 3380 ldd R3,z+3
03F0 4480 ldd R4,z+4
03F2 5580 ldd R5,z+5
03F4 8A93 st -y,R24
03F6 8101 movw R16,R2
03F8 9201 movw R18,R4
03FA 0E940000 xcall lsr32
03FE 10930302 sts _Bulk_Control_w+2+1,R17
0402 00930202 sts _Bulk_Control_w+2,R16
0406 .dbline 185
0406 ; Bulk_Control_w.BeginPage=Bulk_Control_w.CurrentPage;
0406 20900402 lds R2,_Bulk_Control_w+4
040A 20920502 sts _Bulk_Control_w+5,R2
040E .dbline 186
040E ; Bulk_Control_w.BufCount=0;
040E 2224 clr R2
0410 3324 clr R3
0412 30920702 sts _Bulk_Control_w+6+1,R3
0416 20920602 sts _Bulk_Control_w+6,R2
041A .dbline 187
041A ; bEPPflags.bits.bulk_state=BULK_DATA_RECIEVE;
041A 80910200 lds R24,_bEPPflags+2
041E 887F andi R24,248
0420 8460 ori R24,4
0422 80930200 sts _bEPPflags+2,R24
0426 .dbline 188
0426 ; Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
0426 20910800 lds R18,_Bulk_Block+8
042A 30910900 lds R19,_Bulk_Block+8+1
042E 0027 clr R16
0430 0E940000 xcall _Bulk_ErrorHandler
0434 .dbline 189
0434 ; pageNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)%32;
0434 20900002 lds R2,_Bulk_Control_w
0438 30900102 lds R3,_Bulk_Control_w+1
043C 80910502 lds R24,_Bulk_Control_w+5
0440 9927 clr R25
0442 820D add R24,R2
0444 931D adc R25,R3
0446 8F71 andi R24,31
0448 9070 andi R25,0
044A 8E83 std y+6,R24
044C .dbline 190
044C ; blockNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)/32;
044C 00910502 lds R16,_Bulk_Control_w+5
0450 1127 clr R17
0452 020D add R16,R2
0454 131D adc R17,R3
0456 25E0 ldi R18,5
0458 30E0 ldi R19,0
045A 0E940000 xcall lsr16
045E 6801 movw R12,R16
0460 .dbline 191
0460 ; blockNum+=Bulk_Control_w.CurrentBlock;
0460 20900202 lds R2,_Bulk_Control_w+2
0464 30900302 lds R3,_Bulk_Control_w+2+1
0468 C20C add R12,R2
046A D31C adc R13,R3
046C .dbline 192
046C ; Erase_Cluster(CANCEL_BLOCK);
046C 0FEF ldi R16,2047
046E 17E0 ldi R17,7
0470 0E940000 xcall _Erase_Cluster
0474 .dbline 193
0474 ; if(blockNum==Bulk_Control_w.CurrentBlock)j=32;
0474 20900202 lds R2,_Bulk_Control_w+2
0478 30900302 lds R3,_Bulk_Control_w+2+1
047C C214 cp R12,R2
047E D304 cpc R13,R3
0480 19F4 brne L81
0482 .dbline 193
0482 80E2 ldi R24,32
0484 E82E mov R14,R24
0486 02C0 xjmp L82
0488 L81:
0488 .dbline 194
0488 ; else j=Bulk_Control_w.BeginPage;
0488 E0900502 lds R14,_Bulk_Control_w+5
048C L82:
048C .dbline 195
048C ; for(i=0;i<j;i++)
048C AA24 clr R10
048E 17C0 xjmp L88
0490 L85:
0490 .dbline 196
0490 .dbline 197
0490 80E0 ldi R24,<_PageBuf
0492 90E0 ldi R25,>_PageBuf
0494 9983 std y+1,R25
0496 8883 std y+0,R24
0498 2A2D mov R18,R10
049A 3327 clr R19
049C 00910202 lds R16,_Bulk_Control_w+2
04A0 10910302 lds R17,_Bulk_Control_w+2+1
04A4 0E940000 xcall _ReadPage
04A8 .dbline 198
04A8 80E0 ldi R24,<_PageBuf
04AA 90E0 ldi R25,>_PageBuf
04AC 9983 std y+1,R25
04AE 8883 std y+0,R24
04B0 2A2D mov R18,R10
04B2 3327 clr R19
04B4 0FEF ldi R16,2047
04B6 17E0 ldi R17,7
04B8 0E940000 xcall _WritePage
04BC .dbline 199
04BC L86:
04BC .dbline 195
04BC A394 inc R10
04BE L88:
04BE .dbline 195
04BE AE14 cp R10,R14
04C0 38F3 brlo L85
04C2 .dbline 200
04C2 ; {
04C2 ; ReadPage(Bulk_Control_w.CurrentBlock,i,PageBuf);
04C2 ; WritePage(CANCEL_BLOCK,i,PageBuf);
04C2 ; }
04C2 ; Erase_Cluster(Bulk_Control_w.CurrentBlock);
04C2 00910202 lds R16,_Bulk_Control_w+2
04C6 10910302 lds R17,_Bulk_Control_w+2+1
04CA 0E940000 xcall _Erase_Cluster
04CE .dbline 201
04CE ; for(i=0;i<Bulk_Control_w.BeginPage;i++)
04CE AA24 clr R10
04D0 17C0 xjmp L94
04D2 L91:
04D2 .dbline 202
04D2 .dbline 203
04D2 80E0 ldi R24,<_PageBuf
04D4 90E0 ldi R25,>_PageBuf
04D6 9983 std y+1,R25
04D8 8883 std y+0,R24
04DA 2A2D mov R18,R10
04DC 3327 clr R19
04DE 0FEF ldi R16,2047
04E0 17E0 ldi R17,7
04E2 0E940000 xcall _ReadPage
04E6 .dbline 204
04E6 80E0 ldi R24,<_PageBuf
04E8 90E0 ldi R25,>_PageBuf
04EA 9983 std y+1,R25
04EC 8883 std y+0,R24
04EE 2A2D mov R18,R10
04F0 3327 clr R19
04F2 00910202 lds R16,_Bulk_Control_w+2
04F6 10910302 lds R17,_Bulk_Control_w+2+1
04FA 0E940000 xcall _WritePage
04FE .dbline 205
04FE L92:
04FE .dbline 201
04FE A394 inc R10
0500 L94:
0500 .dbline 201
0500 20900502 lds R2,_Bulk_Control_w+5
0504 A214 cp R10,R2
0506 28F3 brlo L91
0508 .dbline 206
0508 ; {
0508 ; ReadPage(CANCEL_BLOCK,i,PageBuf);
0508 ; WritePage(Bulk_Control_w.CurrentBlock,i,PageBuf);
0508 ; }
0508 ; if(blockNum>Bulk_Control_w.CurrentBlock)
0508 20900202 lds R2,_Bulk_Control_w+2
050C 30900302 lds R3,_Bulk_Control_w+2+1
0510 2C14 cp R2,R12
0512 3D04 cpc R3,R13
0514 E8F4 brsh L97
0516 .dbline 207
0516 ; {
0516 .dbline 208
0516 ; Erase_Cluster(CANCEL_BLOCK);
0516 0FEF ldi R16,2047
0518 17E0 ldi R17,7
051A 0E940000 xcall _Erase_Cluster
051E .dbline 209
051E ; for(i=pageNum;i<32;i++)
051E AE80 ldd R10,y+6
0520 14C0 xjmp L103
0522 L100:
0522 .dbline 210
0522 .dbline 211
0522 80E0 ldi R24,<_PageBuf
0524 90E0 ldi R25,>_PageBuf
0526 9983 std y+1,R25
0528 8883 std y+0,R24
052A 2A2D mov R18,R10
052C 3327 clr R19
052E 8601 movw R16,R12
0530 0E940000 xcall _ReadPage
0534 .dbline 212
0534 80E0 ldi R24,<_PageBuf
0536 90E0 ldi R25,>_PageBuf
0538 9983 std y+1,R25
053A 8883 std y+0,R24
053C 2A2D mov R18,R10
053E 3327 clr R19
0540 0FEF ldi R16,2047
0542 17E0 ldi R17,7
0544 0E940000 xcall _WritePage
0548 .dbline 213
0548 L101:
0548 .dbline 209
0548 A394 inc R10
054A L103:
054A .dbline 209
054A 8A2D mov R24,R10
054C 8032 cpi R24,32
054E 48F3 brlo L100
0550 .dbline 214
0550 ; {
0550 ; ReadPage(blockNum,i,PageBuf);
0550 ; WritePage(CANCEL_BLOCK,i,PageBuf);
0550 ; }
0550 ; }
0550 L97:
0550 .dbline 215
0550 ; return TRUE;
0550 01E0 ldi R16,1
0552 .dbline -2
0552 L54:
0552 2796 adiw R28,7
0554 0E940000 xcall pop_gset5
0558 .dbline 0 ; func end
0558 0895 ret
055A .dbsym l pageNum 6 c
055A .dbsym l Logical_Block_Address 2 l
055A .dbsym r blockNum 12 i
055A .dbsym r j 14 c
055A .dbsym r i 10 c
055A .dbend
055A .dbfunc e SPC_LockMedia _SPC_LockMedia fc
.even
055A _SPC_LockMedia::
055A .dbline -1
055A .dbline 219
055A ; #undef cdbWrite10
055A ; }
055A ; BOOLEAN SPC_LockMedia(void)
055A ; {
055A .dbline 220
055A ; Bulk_ErrorHandler(CSW_GOOD,0);
055A 2227 clr R18
055C 3327 clr R19
055E 0027 clr R16
0560 0E940000 xcall _Bulk_ErrorHandler
0564 .dbline 221
0564 ; Bulk_CSWHandler();
0564 0E940000 xcall _Bulk_CSWHandler
0568 .dbline 222
0568 ; return TRUE;
0568 01E0 ldi R16,1
056A .dbline -2
056A L104:
056A .dbline 0 ; func end
056A 0895 ret
056C .dbend
056C .dbfunc e SPC_Reserve6 _SPC_Reserve6 fc
.even
056C _SPC_Reserve6::
056C .dbline -1
056C .dbline 225
056C ; }
056C ; BOOLEAN SPC_Reserve6(void)
056C ; {
056C .dbline 226
056C ; Bulk_ErrorHandler(CSW_FAIL,0);
056C 2227 clr R18
056E 3327 clr R19
0570 01E0 ldi R16,1
0572 0E940000 xcall _Bulk_ErrorHandler
0576 .dbline 227
0576 ; Bulk_CSWHandler();
0576 0E940000 xcall _Bulk_CSWHandler
057A .dbline 228
057A ; return TRUE;
057A 01E0 ldi R16,1
057C .dbline -2
057C L105:
057C .dbline 0 ; func end
057C 0895 ret
057E .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\AvrUSB\SCSI.C
0000 _PageBuf::
0000 .blkb 512
0200 .dbsym e PageBuf _PageBuf A[512:512]c
0200 _Bulk_Control_w::
0200 .blkb 10
020A .dbsym e Bulk_Control_w _Bulk_Control_w X
020A _Bulk_Control_r::
020A .blkb 10
0214 .dbsym e Bulk_Control_r _Bulk_Control_r X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -