📄 usbdisk.lst
字号:
02B8 8022 LDD R2,Z+2
02B9 8033 LDD R3,Z+3
02BA 8044 LDD R4,Z+4
02BB 8055 LDD R5,Z+5
02BC 2224 AND R2,R20
02BD 2235 AND R3,R21
02BE 2246 AND R4,R22
02BF 2257 AND R5,R23
02C0 9220034E STS 0x34E,R2
(0137) Bulk_Control_r.CurrentBlock=Logical_Block_Address/0x20;
02C2 E085 LDI R24,5
02C3 E090 LDI R25,0
02C4 01FE MOVW R30,R28
02C5 8022 LDD R2,Z+2
02C6 8033 LDD R3,Z+3
02C7 8044 LDD R4,Z+4
02C8 8055 LDD R5,Z+5
02C9 938A ST R24,-Y
02CA 0181 MOVW R16,R2
02CB 0192 MOVW R18,R4
02CC 940E0F6E CALL lsr32
02CE 9310034D STS _Bulk_Control_r+3,R17
02D0 9300034C STS _Bulk_Control_r+2,R16
(0138) ReadPage(Bulk_Control_r.CurrentBlock,Bulk_Control_r.CurrentPage,PageBuf);
02D2 E480 LDI R24,0x40
02D3 E091 LDI R25,1
02D4 8399 STD Y+1,R25
02D5 8388 STD Y+0,R24
02D6 9120034E LDS R18,0x34E
02D8 2733 CLR R19
02D9 940E0757 CALL _ReadPage
(0139) Bulk_Control_r.Transfer_Length--;
02DB 9180034A LDS R24,_Bulk_Control_r
02DD 9190034B LDS R25,_Bulk_Control_r+1
02DF 9701 SBIW R24,1
02E0 9390034B STS _Bulk_Control_r+1,R25
02E2 9380034A STS _Bulk_Control_r,R24
(0140) Bulk_Control_r.CurrentPage++;
02E4 9180034E LDS R24,0x34E
02E6 5F8F SUBI R24,0xFF
02E7 9380034E STS 0x34E,R24
(0141) Bulk_Control_r.BufCount=0;
02E9 2422 CLR R2
02EA 2433 CLR R3
02EB 92300351 STS 0x351,R3
02ED 92200350 STS 0x350,R2
(0142) bEPPflags.bits.bulk_state=BULK_DATA_TRANS;
02EF 9180035C LDS R24,_bEPPflags+2
02F1 7F88 ANDI R24,0xF8
02F2 6081 ORI R24,1
02F3 9380035C STS _bEPPflags+2,R24
(0143) Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
02F5 9120037D LDS R18,0x37D
02F7 9130037E LDS R19,0x37E
02F9 2700 CLR R16
02FA 940E0E01 CALL _Bulk_ErrorHandler
(0144) D12_WriteEndpoint(5,EP2_PACKET_SIZE,PageBuf);
02FC E480 LDI R24,0x40
02FD E091 LDI R25,1
02FE 8399 STD Y+1,R25
02FF 8388 STD Y+0,R24
0300 E420 LDI R18,0x40
0301 E030 LDI R19,0
0302 E005 LDI R16,5
0303 E010 LDI R17,0
0304 940E06B4 CALL _D12_WriteEndpoint
(0145) return TRUE;
0306 E001 LDI R16,1
0307 9626 ADIW R28,6
0308 940E0ED1 CALL pop_gset2
030A 9508 RET
(0146) #undef cdbRead10
(0147) }
(0148) BOOLEAN RBC_ReadCapacity(void)
(0149) {
(0150) Bulk_code_transmit((const unsigned char*)&ReadCapacityData,
_RBC_ReadCapacity:
030B E028 LDI R18,0x8
030C E030 LDI R19,0
030D EA0C LDI R16,0xAC
030E E010 LDI R17,0
030F 940E0D6A CALL _Bulk_code_transmit
(0151) sizeof(READ_CAPACITY_DATA));
(0152) return TRUE;
0311 E001 LDI R16,1
0312 9508 RET
(0153) }
(0154) BOOLEAN SPC_FormatCapacity(void)
(0155) {
(0156) Bulk_code_transmit((const unsigned char*)&CapacitylistHead,
_SPC_FormatCapacity:
0313 E02C LDI R18,0xC
0314 E030 LDI R19,0
0315 EB04 LDI R16,0xB4
0316 E010 LDI R17,0
0317 940E0D6A CALL _Bulk_code_transmit
(0157) CAPACITY_LIST_LENGTH);
(0158) return TRUE;
0319 E001 LDI R16,1
031A 9508 RET
(0159) }
(0160) BOOLEAN SPC_TestUnit(void)
(0161) {
(0162) Bulk_ErrorHandler(CSW_GOOD,0);
_SPC_TestUnit:
031B 2722 CLR R18
031C 2733 CLR R19
031D 2700 CLR R16
031E 940E0E01 CALL _Bulk_ErrorHandler
(0163) Bulk_CSWHandler();
0320 940E0D5A CALL _Bulk_CSWHandler
(0164) return TRUE;
0322 E001 LDI R16,1
0323 9508 RET
(0165) }
(0166) BOOLEAN RBC_Verify10(void)
(0167) {
(0168) Bulk_ErrorHandler(CSW_GOOD,0);
_RBC_Verify10:
0324 2722 CLR R18
0325 2733 CLR R19
0326 2700 CLR R16
0327 940E0E01 CALL _Bulk_ErrorHandler
(0169) Bulk_CSWHandler();
0329 940E0D5A CALL _Bulk_CSWHandler
(0170) return TRUE;
032B E001 LDI R16,1
032C 9508 RET
_RBC_Write10:
pageNum --> Y+6
Logical_Block_Address --> Y+2
blockNum --> R12
j --> R14
i --> R10
032D 940E0F00 CALL push_gset5
032F 9727 SBIW R28,7
(0171) }
(0172) BOOLEAN RBC_Write10(void)
(0173) {
(0174) #define cdbWrite10 Bulk_Block.cbw.CBWCB.RbcCdb_Write10
(0175) unsigned char i,j,pageNum;
(0176) unsigned int blockNum;
(0177) unsigned long Logical_Block_Address;
(0178) Logical_Block_Address=cdbWrite10.LogicalBlockAddress[0]*0x1000000;
0330 90200386 LDS R2,0x386
0332 2433 CLR R3
0333 2444 CLR R4
0334 2455 CLR R5
0335 E040 LDI R20,0
0336 E050 LDI R21,0
0337 E060 LDI R22,0
0338 E071 LDI R23,1
0339 925A ST R5,-Y
033A 924A ST R4,-Y
033B 923A ST R3,-Y
033C 922A ST R2,-Y
033D 018A MOVW R16,R20
033E 019B MOVW R18,R22
033F 940E0EA1 CALL empy32u
0341 01FE MOVW R30,R28
0342 8302 STD Z+2,R16
0343 8313 STD Z+3,R17
0344 8324 STD Z+4,R18
0345 8335 STD Z+5,R19
(0179) Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[1]*0x10000;
0346 90200387 LDS R2,0x387
0348 2433 CLR R3
0349 2444 CLR R4
034A 2455 CLR R5
034B E040 LDI R20,0
034C E050 LDI R21,0
034D E061 LDI R22,1
034E E070 LDI R23,0
034F 925A ST R5,-Y
0350 924A ST R4,-Y
0351 923A ST R3,-Y
0352 922A ST R2,-Y
0353 018A MOVW R16,R20
0354 019B MOVW R18,R22
0355 940E0EA1 CALL empy32u
0357 01FE MOVW R30,R28
0358 8022 LDD R2,Z+2
0359 8033 LDD R3,Z+3
035A 8044 LDD R4,Z+4
035B 8055 LDD R5,Z+5
035C 0E20 ADD R2,R16
035D 1E31 ADC R3,R17
035E 1E42 ADC R4,R18
035F 1E53 ADC R5,R19
0360 01FE MOVW R30,R28
0361 8222 STD Z+2,R2
0362 8233 STD Z+3,R3
0363 8244 STD Z+4,R4
0364 8255 STD Z+5,R5
(0180) Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[2]*0x100;
0365 91200388 LDS R18,0x388
0367 2733 CLR R19
0368 E000 LDI R16,0
0369 E011 LDI R17,1
036A 940E0E91 CALL empy16s
036C 0118 MOVW R2,R16
036D 2444 CLR R4
036E FC37 SBRC R3,7
036F 9440 COM R4
0370 2455 CLR R5
0371 FC47 SBRC R4,7
0372 9450 COM R5
0373 01FE MOVW R30,R28
0374 8062 LDD R6,Z+2
0375 8073 LDD R7,Z+3
0376 8084 LDD R8,Z+4
0377 8095 LDD R9,Z+5
0378 0C62 ADD R6,R2
0379 1C73 ADC R7,R3
037A 1C84 ADC R8,R4
037B 1C95 ADC R9,R5
037C 01FE MOVW R30,R28
037D 8262 STD Z+2,R6
037E 8273 STD Z+3,R7
037F 8284 STD Z+4,R8
0380 8295 STD Z+5,R9
(0181) Logical_Block_Address+=cdbWrite10.LogicalBlockAddress[3];
0381 90200389 LDS R2,0x389
0383 2433 CLR R3
0384 2444 CLR R4
0385 2455 CLR R5
0386 01FE MOVW R30,R28
0387 8062 LDD R6,Z+2
0388 8073 LDD R7,Z+3
0389 8084 LDD R8,Z+4
038A 8095 LDD R9,Z+5
038B 0C62 ADD R6,R2
038C 1C73 ADC R7,R3
038D 1C84 ADC R8,R4
038E 1C95 ADC R9,R5
038F 01FE MOVW R30,R28
0390 8262 STD Z+2,R6
0391 8273 STD Z+3,R7
0392 8284 STD Z+4,R8
0393 8295 STD Z+5,R9
(0182) Bulk_Control_w.Transfer_Length=cdbWrite10.TransferLength[0]*256+cdbWrite10.TransferLength[1];
0394 9120038B LDS R18,0x38B
0396 2733 CLR R19
0397 E000 LDI R16,0
0398 E011 LDI R17,1
0399 940E0E91 CALL empy16s
039B 0118 MOVW R2,R16
039C 9040038C LDS R4,0x38C
039E 2455 CLR R5
039F 0C24 ADD R2,R4
03A0 1C35 ADC R3,R5
03A1 92300341 STS __idata_end+1,R3
03A3 92200340 STS __idata_end,R2
(0183) Bulk_Control_w.CurrentPage=Logical_Block_Address%32;
03A5 E14F LDI R20,0x1F
03A6 E050 LDI R21,0
03A7 E060 LDI R22,0
03A8 E070 LDI R23,0
03A9 01FE MOVW R30,R28
03AA 8022 LDD R2,Z+2
03AB 8033 LDD R3,Z+3
03AC 8044 LDD R4,Z+4
03AD 8055 LDD R5,Z+5
03AE 2224 AND R2,R20
03AF 2235 AND R3,R21
03B0 2246 AND R4,R22
03B1 2257 AND R5,R23
03B2 92200344 STS 0x344,R2
(0184) Bulk_Control_w.CurrentBlock=Logical_Block_Address/32;
03B4 E085 LDI R24,5
03B5 E090 LDI R25,0
03B6 01FE MOVW R30,R28
03B7 8022 LDD R2,Z+2
03B8 8033 LDD R3,Z+3
03B9 8044 LDD R4,Z+4
03BA 8055 LDD R5,Z+5
03BB 938A ST R24,-Y
03BC 0181 MOVW R16,R2
03BD 0192 MOVW R18,R4
03BE 940E0F6E CALL lsr32
03C0 93100343 STS __idata_end+3,R17
03C2 93000342 STS __idata_end+2,R16
(0185) Bulk_Control_w.BeginPage=Bulk_Control_w.CurrentPage;
03C4 90200344 LDS R2,0x344
03C6 92200345 STS 0x345,R2
(0186) Bulk_Control_w.BufCount=0;
03C8 2422 CLR R2
03C9 2433 CLR R3
03CA 92300347 STS 0x347,R3
03CC 92200346 STS 0x346,R2
(0187) bEPPflags.bits.bulk_state=BULK_DATA_RECIEVE;
03CE 9180035C LDS R24,_bEPPflags+2
03D0 7F88 ANDI R24,0xF8
03D1 6084 ORI R24,4
03D2 9380035C STS _bEPPflags+2,R24
(0188) Bulk_ErrorHandler(CSW_GOOD,CBW_bCBWCBLength);
03D4 9120037D LDS R18,0x37D
03D6 9130037E LDS R19,0x37E
03D8 2700 CLR R16
03D9 940E0E01 CALL _Bulk_ErrorHandler
(0189) pageNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)%32;
03DB 90200340 LDS R2,__idata_end
03DD 90300341 LDS R3,__idata_end+1
03DF 91800345 LDS R24,0x345
03E1 2799 CLR R25
03E2 0D82 ADD R24,R2
03E3 1D93 ADC R25,R3
03E4 718F ANDI R24,0x1F
03E5 7090 ANDI R25,0
03E6 838E STD Y+6,R24
(0190) blockNum=(Bulk_Control_w.BeginPage+Bulk_Control_w.Transfer_Length)/32;
03E7 91000345 LDS R16,0x345
03E9 2711 CLR R17
03EA 0D02 ADD R16,R2
03EB 1D13 ADC R17,R3
03EC E025 LDI R18,5
03ED E030 LDI R19,0
03EE 940E0F67 CALL lsr16
03F0 0168 MOVW R12,R16
(0191) blockNum+=Bulk_Control_w.CurrentBlock;
03F1 90200342 LDS R2,__idata_end+2
03F3 90300343 LDS R3,__idata_end+3
03F5 0CC2 ADD R12,R2
03F6 1CD3 ADC R13,R3
(0192) Erase_Cluster(CANCEL_BLOCK);
03F7 EF0F LDI R16,0xFF
03F8 E017 LDI R17,7
03F9 940E072A CALL _Erase_Cluster
(0193) if(blockNum==Bulk_Control_w.CurrentBlock)j=32;
03FB 90200342 LDS R2,__idata_end+2
03FD 90300343 LDS R3,__idata_end+3
03FF 14C2 CP R12,R2
0400 04D3 CPC R13,R3
0401 F419 BNE 0x0405
0402 E280 LDI R24,0x20
0403 2EE8 MOV R14,R24
0404 C002 RJMP 0x0407
(0194) else j=Bulk_Control_w.BeginPage;
0405 90E00345 LDS R14,0x345
(0195) for(i=0;i<j;i++)
0407 24AA CLR R10
0408 C017 RJMP 0x0420
(0196) {
(0197) ReadPage(Bulk_Control_w.CurrentBlock,i,PageBuf);
0409 E480 LDI R24,0x40
040A E091 LDI R25,1
040B 8399 STD Y+1,R25
040C 8388 STD Y+0,R24
040D 2D2A MOV R18,R10
040E 2733 CLR R19
040F 91000342 LDS R16,__idata_end+2
0411 91100343 LDS R17,__idata_end+3
0413 940E0757 CALL _ReadPage
(0198) WritePage(CANCEL_BLOCK,i,PageBuf);
0415 E480 LDI R24,0x40
0416 E091 LDI R25,1
0417 8399 STD Y+1,R25
0418 8388 STD Y+0,R24
0419 2D2A MOV R18,R10
041A 2733 CLR R19
041B EF0F LDI R16,0xFF
041C E017 LDI R17,7
041D 940E0790 CALL _WritePage
041F 94A3 INC R10
0420 14AE CP R10,R14
0421 F338 BCS 0x0409
(0199) }
(0200) Erase_Cluster(Bulk_Control_w.CurrentBlock);
0422 91000342 LDS R16,__idata_end+2
0424 91100343 LDS R17,__idata_end+3
0426 940E072A CALL _Erase_Cluster
(0201) for(i=0;i<Bulk_Control_w.BeginPage;i++)
0428 24AA CLR R10
0429 C017 RJMP 0x0441
(0202) {
(0203) ReadPage(CANCEL_BLOCK,i,PageBuf);
042A E480 LDI R24,0x40
042B E091 LDI R25,1
042C 8399 STD Y+1,R25
042D 8388 STD Y+0,R24
042E 2D2A MOV R18,R10
042F 2733 CLR R19
0430 EF0F LDI R16,0xFF
0431 E017 LDI R17,7
0432 940E0757 CALL _ReadPage
(0204) WritePage(Bulk_Control_w.CurrentBlock,i,PageBuf);
0434 E480 LDI R24,0x40
0435 E091 LDI R25,1
0436 8399 STD Y+1,R25
0437 8388 STD Y+0,R24
0438 2D2A MOV R18,R10
0439 2733 CLR R19
043A 91000342 LDS R16,__idata_end+2
043C 91100343 LDS R17,__idata_end+3
043E 940E0790 CALL _WritePage
0440 94A3 INC R10
0441 90200345 LDS R2,0x345
0443 14A2 CP R10,R2
0444 F328 BCS 0x042A
(0205) }
(0206) if(blockNum>Bulk_Control_w.CurrentBlock)
0445 90200342 LDS R2,__idata_end+2
0447 90300343 LDS R3,__idata_end+3
0449 142C CP R2,R12
044A 043D CPC R3,R13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -