📄 scsi.lis
字号:
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 J:\PDIUSBD12-Materials\富昌\优盘5.0\SCSI.C
0000 _PageBuf::
0000 .blkb 512
0200 .dbsym e PageBuf _PageBuf A[512:512]c
0200 _Bulk_Control_w::
0200 .blkb 10
020A .dbstruct 0 10 _BULK_CONTROL
020A .dbfield 0 Transfer_Length i
020A .dbfield 2 CurrentBlock i
020A .dbfield 4 CurrentPage c
020A .dbfield 5 BeginPage c
020A .dbfield 6 BufCount i
020A .dbfield 8 ReservedPage i
020A .dbend
020A .dbsym e Bulk_Control_w _Bulk_Control_w S[_BULK_CONTROL]
020A _Bulk_Control_r::
020A .blkb 10
0214 .dbsym e Bulk_Control_r _Bulk_Control_r S[_BULK_CONTROL]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -