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


                         .module Scsi.c 
                         .area lit(rom, con, rel) 
 0000                 _SCSI_INQUIRY:: 
 0000 0080              .byte 0,128 
 0002 0001              .byte 0,1 
 0004 1F00              .byte 31,0 
 0006 0000              .byte 0,0 
 0008 2020              .byte 32,32 
 000A 2020              .byte 32,32 
 000C 2020              .byte 32,32 
 000E 2020              .byte 32,32 
 0010 4348              .byte 'C,'H 
 0012 454E              .byte 'E,'N 
 0014 4348              .byte 'C,'H 
 0016 4920              .byte 'I,32 
 0018 4156              .byte 'A,'V 
 001A 5220              .byte 'R,32 
 001C 4449              .byte 'D,'I 
 001E 534B              .byte 'S,'K 
 0020 312E              .byte 49,46 
 0022 3030              .byte 48,48 
 0024                   .dbfile G:\source/scsi_data.h 
 0024                   .dbsym s SCSI_INQUIRY _SCSI_INQUIRY A[36:36]c 
 0024                 _SCSIDATA_ReadFormatCapacities:: 
 0024 0000              .byte 0,0 
 0026 0008              .byte 0,8 
 0028 0000              .byte 0,0 
 002A FFFF              .byte 255,255 
 002C 0300              .byte 3,0 
 002E 0200              .byte 2,0 
 0030                   .dbsym s SCSIDATA_ReadFormatCapacities _SCSIDATA_ReadFormatCapacities A[12:12]c 
 0030                 _SCSIDATA_ReadCapacity:: 
 0030 0000              .byte 0,0 
 0032 F9FF              .byte 249,255 
 0034 0000              .byte 0,0 
 0036 0200              .byte 2,0 
 0038                   .dbsym s SCSIDATA_ReadCapacity _SCSIDATA_ReadCapacity A[8:8]c 
 0038                 _SCSIDATA_RequestSense:: 
 0038 7000              .byte 'p,0 
 003A 0500              .byte 5,0 
 003C 0000              .byte 0,0 
 003E 000A              .byte 0,10 
 0040 0000              .byte 0,0 
 0042 0000              .byte 0,0 
 0044 2000              .byte 32,0 
 0046 0000              .byte 0,0 
 0048 0000              .byte 0,0 
 004A                   .dbsym s SCSIDATA_RequestSense _SCSIDATA_RequestSense A[18:18]c 
 004A                 _SCSIDATA_Sense:: 
 004A 0300              .byte 3,0 
 004C 0000              .byte 0,0 
 004E 010A              .byte 1,10 
 0050 0010              .byte 0,16 
 0052 0000              .byte 0,0 
 0054 0000              .byte 0,0 
 0056 0200              .byte 2,0 
 0058 0000              .byte 0,0 
 005A 051E              .byte 5,30 
 005C 0FA0              .byte 15,160 
 005E 0410              .byte 4,16 
 0060 0200              .byte 2,0 
 0062 00FA              .byte 0,250 
 0064 0000              .byte 0,0 
 0066 0000              .byte 0,0 
 0068 0000              .byte 0,0 
 006A 0000              .byte 0,0 
 006C 0000              .byte 0,0 
 006E 0000              .byte 0,0 
 0070 0000              .byte 0,0 
 0072 0000              .byte 0,0 
 0074 0000              .byte 0,0 
 0076 0000              .byte 0,0 
 0078 0000              .byte 0,0 
 007A                   .dbsym s SCSIDATA_Sense _SCSIDATA_Sense A[48:48]c 
                         .area data(ram, con, rel) 
 0000                   .dbfile G:\source/scsi_data.h 
 0000                 _BulkPhase:: 
 0000                   .blkb 1 
                         .area idata 
 0000 00                .byte 0 
                         .area data(ram, con, rel) 
 0001                   .dbfile G:\source/scsi_data.h 
 0001                   .dbfile G:\source\Scsi.c 
 0001                   .dbsym s BulkPhase _BulkPhase c 
 0001                 _WritePageBuff:: 
 0001                   .blkw 1 
                         .area idata 
 0001 0500              .word L4 
                         .area data(ram, con, rel) 
 0003                   .dbfile G:\source\Scsi.c 
 0003                   .dbsym s WritePageBuff _WritePageBuff pc 
 0003                 _WritePageBuffLen:: 
 0003                   .blkb 2 
                         .area idata 
 0003 0000              .word 0 
                         .area data(ram, con, rel) 
 0005                   .dbfile G:\source\Scsi.c 
 0005                   .dbsym s WritePageBuffLen _WritePageBuffLen i 
                         .area text(rom, con, rel) 
 0000                   .dbfile G:\source\Scsi.c 
 0000                   .dbfunc s Bulk_Out_Packet _Bulk_Out_Packet fI 
                       ;              p -> R12,R13 
                       ;           Buff -> y+0 
                       ;              j -> R10 
                       ;              i -> R22 
                       ;            len -> R20 
                         .even 
 0000                 _Bulk_Out_Packet:: 
 0000 00D0              rcall push_gset4 
 0002 402F              mov R20,R16 
 0004 EF97              sbiw R28,63 
 0006 2197              sbiw R28,1  ; offset = 64 
 0008                   .dbline -1 
 0008                   .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){ 
 0008                   .dbline 61 
                       ;     unsigned char i,j,*p; 
                       ;     unsigned char Buff[64]; 
                       ;     if(BulkPhase == CommandPhase){ 
 0008 20900000          lds R2,_BulkPhase 
 000C 2220              tst R2 
 000E F1F4              brne L6 
 0010                   .dbline 61 
 0010                   .dbline 62 
                       ;         j = D12_DATA; 
 0010 A090007C          lds R10,31744 
 0014                   .dbline 63 
                       ;         csram; 
 0014 609301FC          sts 0xfc01,R22 
 0018                   .dbline 63 
 0018                   .dbline 64 
                       ;         p = XmtBuff.b; 
 0018 80E0              ldi R24,<_XmtBuff 
 001A 90E0              ldi R25,>_XmtBuff 
 001C C82E              mov R12,R24 
 001E D92E              mov R13,R25 
 0020                   .dbline 65 
                       ;         *(p++) = j; 
 0020 2C2C              mov R2,R12 
 0022 3D2C              mov R3,R13 
 0024 822D              mov R24,R2 
 0026 932D              mov R25,R3 
 0028 0196              adiw R24,1 
 002A C82E              mov R12,R24 
 002C D92E              mov R13,R25 
 002E E22D              mov R30,R2 
 0030 F32D              mov R31,R3 
 0032 A082              std z+0,R10 
 0034                   .dbline 66 
                       ;         for(i=0;iL53 
 01E8 042F              mov R16,R20 
 01EA 152F              mov R17,R21 
 01EC 0352              subi R16,35 
 01EE 1040              sbci R17,0 
 01F0 000F              lsl R16 
 01F2 111F              rol R17 
 01F4 080F              add R16,R24 
 01F6 191F              adc R17,R25 
 01F8 00D0              rcall lpm16 
 01FA E02F              mov R30,R16 
 01FC F12F              mov R31,R17 
 01FE 0994              ijmp 
 0200                 L52: 
 0200 4A35              cpi R20,90 
 0202 E0E0              ldi R30,0 
 0204 5E07              cpc R21,R30 
 0206 09F4              brne X10 
 0208 33C0              rjmp L46 
 020A                 X10: 
 020A 37C0              rjmp L32 
 020C                 X1: 
 020C                   .dbline 126 
 020C                 L36: 
 020C                   .dbline 128 
                       ;         case 0x00: 
                       ;             SCSICMD_TestUnitReady(); 
 020C F7D0              rcall _SCSICMD_TestUnitReady 
 020E                   .dbline 129 
                       ;             BulkStausPhase = InCSWPhase; 
 020E 88E0              ldi R24,8 
 0210 80932E00          sts _BulkStausPhase,R24 
 0214                   .dbline 130 
                       ;             break; 
 0214 35C0              rjmp L33 
 0216                 L37: 
 0216                   .dbline 132 
                       ;         case 0x03: 
                       ;             SCSICMD_RequestSense(); 
 0216 0CD1              rcall _SCSICMD_RequestSense 
 0218                   .dbline 133 
                       ;                     BulkStausPhase=InCSWPhase; 
 0218 88E0              ldi R24,8 
 021A 80932E00          sts _BulkStausPhase,R24 
 021E                   .dbline 134 
                       ;                     break; 
 021E 30C0              rjmp L33 
 0220                 L38: 
 0220                   .dbline 136 
                       ;         case 0x12: 
                       ;             SCSICMD_Inquiry(); 
 0220 73D0              rcall _SCSICMD_Inquiry 
 0222                   .dbline 137 
                       ;             BulkStausPhase = InCSWPhase; 
 0222 88E0              ldi R24,8 
 0224 80932E00          sts _BulkStausPhase,R24 
 0228                   .dbline 138 
                       ;             break; 
 0228 2BC0              rjmp L33 
 022A                 L39: 
 022A                   .dbline 140 
                       ;         case 0x1a: 
                       ;             SCSICMD_ModeSense06(); 
 022A 1AD1              rcall _SCSICMD_ModeSense06 
 022C                   .dbline 141 
                       ;                     BulkStausPhase=InCSWPhase; 
 022C 88E0              ldi R24,8 
 022E 80932E00          sts _BulkStausPhase,R24 
 0232                   .dbline 142 
                       ;                     break; 
 0232 26C0              rjmp L33 
 0234                 L40: 
 0234                   .dbline 144 
                       ;         case 0x1e: 
                       ;             SCSICMD_PreventAllowMediumRemoval(); 
 0234 32D1              rcall _SCSICMD_PreventAllowMediumRemoval 
 0236                   .dbline 145 
                       ;                     BulkStausPhase=InCSWPhase; 
 0236 88E0              ldi R24,8 
 0238 80932E00          sts _BulkStausPhase,R24 
 023C                   .dbline 146 
                       ;                     break; 
 023C 21C0              rjmp L33 
 023E                 L41: 
 023E                   .dbline 148 
                       ;         case 0x23: 
                       ;             SCSICMD_ReadFormatCapacities(); 
 023E 9CD0              rcall _SCSICMD_ReadFormatCapacities 
 0240                   .dbline 149 
                       ;             BulkStausPhase = InCSWPhase; 
 0240 88E0              ldi R24,8 
 0242 80932E00          sts _BulkStausPhase,R24 
 0246                   .dbline 150 
                       ;             break; 
 0246 1CC0              rjmp L33 
 0248                 L42: 
 0248                   .dbline 152 
                       ;         case 0x25: 
                       ;             SCSICMD_ReadCapacity(); 
 0248 B4D0              rcall _SCSICMD_ReadCapacity 
 024A                   .dbline 153 
                       ;                     BulkStausPhase=InCSWPhase; 
 024A 88E0              ldi R24,8 
 024C 80932E00          sts _BulkStausPhase,R24 
 0250                   .dbline 154 
                       ;                     break; 
 0250 17C0              rjmp L33 
 0252                 L43: 
 0252                   .dbline 156 
                       ;         case 0x28: 
                       ;             SCSICMD_Read10(); 
 0252 C7D0              rcall _SCSICMD_Read10 
 0254                   .dbline 157 
                       ;                     BulkStausPhase=InCSWPhase; 
 0254 88E0              ldi R24,8 
 0256 80932E00          sts _BulkStausPhase,R24 
 025A                   .dbline 158 
                       ;                     break; 
 025A 12C0              rjmp L33 
 025C                 L44: 
 025C                   .dbline 160 
                       ;         case 0x2a: 
                       ;             SCSICMD_Write10(); 
 025C 38D1              rcall _SCSICMD_Write10 
 025E                   .dbline 161 
                       ;                     BulkPhase =OutDataPhase; 
 025E 81E0              ldi R24,1 
 0260 80930000          sts _BulkPhase,R24 
 0264                   .dbline 162 
                       ;                     break; 
 0264 0DC0              rjmp L33 
 0266                 L45: 
 0266                   .dbline 164 
                       ;         case 0x2f: 
                       ;             SCSICMD_Verify10(); 
 0266 4FD1              rcall _SCSICMD_Verify10 
 0268                   .dbline 165 
                       ;                     BulkStausPhase=InCSWPhase; 
 0268 88E0              ldi R24,8 
 026A 80932E00          sts _BulkStausPhase,R24 
 026E                   .dbline 166 
                       ;                     break; 
 026E 08C0              rjmp L33 
 0270                 L46: 
 0270                   .dbline 168 
                       ;         case 0x5a: 
                       ;             SCSICMD_ModeSense10(); 
 0270 64D1              rcall _SCSICMD_ModeSense10 
 0272                   .dbline 169 
                       ;                     BulkStausPhase=InCSWPhase; 
 0272 88E0              ldi R24,8 
 0274 80932E00          sts _BulkStausPhase,R24 
 0278                   .dbline 170 
                       ;                     break; 
 0278 03C0              rjmp L33 
 027A                 L32: 
 027A                   .dbline 172 
 027A 88E0              ldi R24,8 
 027C 80932E00          sts _BulkStausPhase,R24 
 0280                   .dbline 173 
 0280                 L33: 
 0280                   .dbline -2 
 0280                   .dbline 175 
                       ;         default: 
                       ;             BulkStausPhase=InCSWPhase; 
                       ;             break; 
                       ;     } 
                       ; } 
 0280                 L24: 
 0280 00D0              rcall pop_gset1 
 0282                   .dbline 0 ; func end 
 0282 0895              ret 
 0284                   .dbfunc s Usb_BoBulkInData _Usb_BoBulkInData fI 
                         .even 
 0284                 _Usb_BoBulkInData:: 
 0284                   .dbline -1 
 0284                   .dbline 197 
 0284                   .dbline 198 
 0284 10910200          lds R17,_WritePageBuff+1 
 0288 00910100          lds R16,_WritePageBuff 
 028C 00D0              rcall _flashWrite 
 028E                   .dbline 199 
 028E 30900100          lds R3,_WriteResidueVal+1 
 0292 20900000          lds R2,_WriteResidueVal 
 0296 2220              tst R2 
 0298 29F4              brne L55 
 029A 3320              tst R3 
 029C 19F4              brne L55 
 029E                   .dbline 199 
 029E                   .dbline 200 
 029E 2224              clr R2 
 02A0 20920000          sts _BulkPhase,R2 
 02A4                   .dbline 201 
 02A4                 L55: 
 02A4                   .dbline -2 
 02A4                   .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; 
                       ;     } 
                       ; } 
 02A4                 L54: 
 02A4                   .dbline 0 ; func end 
 02A4 0895              ret 
 02A6                   .dbfunc s Bulk_In_Packet _Bulk_In_Packet fI 
                         .even 
 02A6                 _Bulk_In_Packet:: 
 02A6                   .dbline -1 
 02A6                   .dbline 224 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:回应批量传输包 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void Bulk_In_Packet(void){ 
 02A6                   .dbline 225 
                       ;     if(XmtBuff.wrLength != 0) 
 02A6 30904100          lds R3,_XmtBuff+64+1 
 02AA 20904000          lds R2,_XmtBuff+64 
 02AE 2220              tst R2 
 02B0 11F4              brne X11 
 02B2 3320              tst R3 
 02B4 11F0              breq L58 
 02B6                 X11: 
 02B6                   .dbline 226 
                       ;         BULK_submit(); 
 02B6 00D0              rcall _BULK_submit 
 02B8 26C0              rjmp L59 
 02BA                 L58: 
 02BA                   .dbline 227 
                       ;     else if(ReadResidueVal != 0) 
 02BA 00E0              ldi R16,L63 
 02BE 00D0              rcall lpm32 
 02C0 50900300          lds R5,_ReadResidueVal+2+1 
 02C4 40900200          lds R4,_ReadResidueVal+2 
 02C8 30900100          lds R3,_ReadResidueVal+1 
 02CC 20900000          lds R2,_ReadResidueVal 
 02D0 2016              cp R2,R16 
 02D2 3106              cpc R3,R17 
 02D4 4206              cpc R4,R18 
 02D6 5306              cpc R5,R19 
 02D8 11F0              breq L61 
 02DA                   .dbline 228 
                       ;         flashRead(); 
 02DA 00D0              rcall _flashRead 
 02DC 14C0              rjmp L62 
 02DE                 L61: 
 02DE                   .dbline 229 
                       ;     else if(BulkStausPhase == InCSWPhase){ 
 02DE 80912E00          lds R24,_BulkStausPhase 
 02E2 8830              cpi R24,8 
 02E4 81F4              brne L64 
 02E6                   .dbline 229 
 02E6                   .dbline 230 
                       ;         XmtBuff.p_p=0; 
 02E6 2224              clr R2 
 02E8 20924600          sts _XmtBuff+70,R2 
 02EC                   .dbline 231 
                       ;         XmtBuff.p = (unsigned char *)&Usb_Csw; 
 02EC 80E0              ldi R24,<_Usb_Csw 
 02EE 90E0              ldi R25,>_Usb_Csw 
 02F0 90934500          sts _XmtBuff+68+1,R25 
 02F4 80934400          sts _XmtBuff+68,R24 
 02F8                   .dbline 232 
                       ;         XmtBuff.wrLength = 13; 
 02F8 8DE0              ldi R24,13 
 02FA 90E0              ldi R25,0 
 02FC 90934100          sts _XmtBuff+64+1,R25 
 0300 80934000          sts _XmtBuff+64,R24 
 0304                   .dbline 233 
                       ;         BULK_submit(); 
 0304 00D0              rcall _BULK_submit 
 0306                   .dbline 234 
                       ;     } 
 0306                 L64: 
 0306                 L62: 
 0306                 L59: 
 0306                   .dbline -2 
 0306                   .dbline 235 
                       ; } 
 0306                 L57: 
 0306                   .dbline 0 ; func end 
 0306 0895              ret 
 0308                   .dbfunc s SCSICMD_Inquiry _SCSICMD_Inquiry fI 
                         .even 
 0308                 _SCSICMD_Inquiry:: 
 0308                   .dbline -1 
 0308                   .dbline 257 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_Inquiry(void){ 
 0308                   .dbline 258 
                       ;     Usb_Set_Csw(); 
 0308 17D0              rcall _Usb_Set_Csw 
 030A                   .dbline 259 
                       ;     Usb_Csw.dCSWDataResidue[1] = 0; 
 030A 2224              clr R2 
 030C 20922800          sts _Usb_Csw+8+1,R2 
 0310                   .dbline 260 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 0310 20922900          sts _Usb_Csw+8+2,R2 
 0314                   .dbline 261 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 0314 20922A00          sts _Usb_Csw+8+3,R2 
 0318                   .dbline 262 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 0318 20922B00          sts _Usb_Csw+8+4,R2 
 031C                   .dbline 263 
                       ;     XmtBuff.pp = SCSI_INQUIRY; 
 031C 80E0              ldi R24,<_SCSI_INQUIRY 
 031E 90E0              ldi R25,>_SCSI_INQUIRY 
 0320 90934300          sts _XmtBuff+66+1,R25 
 0324 80934200          sts _XmtBuff+66,R24 
 0328                   .dbline 264 
                       ;     XmtBuff.wrLength = 36; 
 0328 84E2              ldi R24,36 
 032A 90E0              ldi R25,0 
 032C 90934100          sts _XmtBuff+64+1,R25 
 0330 80934000          sts _XmtBuff+64,R24 
 0334                   .dbline 265 
                       ;     BULK_submit(); 
 0334 00D0              rcall _BULK_submit 
 0336                   .dbline -2 
 0336                   .dbline 266 
                       ; } 
 0336                 L69: 
 0336                   .dbline 0 ; func end 
 0336 0895              ret 
 0338                   .dbfunc s Usb_Set_Csw _Usb_Set_Csw fI 
                         .even 
 0338                 _Usb_Set_Csw:: 
 0338                   .dbline -1 
 0338                   .dbline 288 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:创建CSW数据块 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void Usb_Set_Csw(void){ 
 0338                   .dbline 289 
                       ;     Usb_Csw.dCSWSignature[0] = 0x55; 
 0338 85E5              ldi R24,85 
 033A 80931F00          sts _Usb_Csw,R24 
 033E                   .dbline 290 
                       ;     Usb_Csw.dCSWSignature[1] = 0x53; 
 033E 83E5              ldi R24,83 
 0340 80932000          sts _Usb_Csw+1,R24 
 0344                   .dbline 291 
                       ;     Usb_Csw.dCSWSignature[2] = 0x42; 
 0344 82E4              ldi R24,66 
 0346 80932100          sts _Usb_Csw+2,R24 
 034A                   .dbline 292 
                       ;     Usb_Csw.dCSWSignature[3] = 0x53; 
 034A 83E5              ldi R24,83 
 034C 80932200          sts _Usb_Csw+3,R24 
 0350                   .dbline 293 
                       ;     Usb_Csw.dCSWTag[0] = XmtBuff.b[4]; 
 0350 20900400          lds R2,_XmtBuff+4 
 0354 20922300          sts _Usb_Csw+4,R2 
 0358                   .dbline 294 
                       ;     Usb_Csw.dCSWTag[1] = XmtBuff.b[5]; 
 0358 20900500          lds R2,_XmtBuff+5 
 035C 20922400          sts _Usb_Csw+4+1,R2 
 0360                   .dbline 295 
                       ;     Usb_Csw.dCSWTag[2] = XmtBuff.b[6]; 
 0360 20900600          lds R2,_XmtBuff+6 
 0364 20922500          sts _Usb_Csw+4+2,R2 
 0368                   .dbline 296 
                       ;     Usb_Csw.dCSWTag[3] = XmtBuff.b[7]; 
 0368 20900700          lds R2,_XmtBuff+7 
 036C 20922600          sts _Usb_Csw+4+3,R2 
 0370                   .dbline 297 
                       ;     Usb_Csw.bCSWStatus = 0; 
 0370 2224              clr R2 
 0372 20922B00          sts _Usb_Csw+12,R2 
 0376                   .dbline -2 
 0376                   .dbline 298 
                       ; } 
 0376                 L80: 
 0376                   .dbline 0 ; func end 
 0376 0895              ret 
 0378                   .dbfunc s SCSICMD_ReadFormatCapacities _SCSICMD_ReadFormatCapacities fI 
                         .even 
 0378                 _SCSICMD_ReadFormatCapacities:: 
 0378                   .dbline -1 
 0378                   .dbline 320 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_ReadFormatCapacities(void){ 
 0378                   .dbline 321 
                       ;     Usb_Set_Csw(); 
 0378 DFDF              rcall _Usb_Set_Csw 
 037A                   .dbline 322 
                       ;     Usb_Csw.dCSWDataResidue[0]=(unsigned char)(dCBWDaTrLen-0x0c);     
 037A 90912D00          lds R25,_dCBWDaTrLen+1 
 037E 80912C00          lds R24,_dCBWDaTrLen 
 0382 0C97              sbiw R24,12 
 0384 80932700          sts _Usb_Csw+8,R24 
 0388                   .dbline 323 
                       ;     Usb_Csw.dCSWDataResidue[1]=0; 
 0388 2224              clr R2 
 038A 20922800          sts _Usb_Csw+8+1,R2 
 038E                   .dbline 324 
                       ;     Usb_Csw.dCSWDataResidue[2]=0; 
 038E 20922900          sts _Usb_Csw+8+2,R2 
 0392                   .dbline 325 
                       ;     Usb_Csw.dCSWDataResidue[3]=0;    
 0392 20922A00          sts _Usb_Csw+8+3,R2 
 0396                   .dbline 326 
                       ;         XmtBuff.pp = SCSIDATA_ReadFormatCapacities; 
 0396 80E0              ldi R24,<_SCSIDATA_ReadFormatCapacities 
 0398 90E0              ldi R25,>_SCSIDATA_ReadFormatCapacities 
 039A 90934300          sts _XmtBuff+66+1,R25 
 039E 80934200          sts _XmtBuff+66,R24 
 03A2                   .dbline 327 
                       ;     XmtBuff.wrLength = 12; 
 03A2 8CE0              ldi R24,12 
 03A4 90E0              ldi R25,0 
 03A6 90934100          sts _XmtBuff+64+1,R25 
 03AA 80934000          sts _XmtBuff+64,R24 
 03AE                   .dbline 328 
                       ;     BULK_submit(); 
 03AE 00D0              rcall _BULK_submit 
 03B0                   .dbline -2 
 03B0                   .dbline 329 
                       ; } 
 03B0                 L96: 
 03B0                   .dbline 0 ; func end 
 03B0 0895              ret 
 03B2                   .dbfunc s SCSICMD_ReadCapacity _SCSICMD_ReadCapacity fI 
                         .even 
 03B2                 _SCSICMD_ReadCapacity:: 
 03B2                   .dbline -1 
 03B2                   .dbline 351 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_ReadCapacity(void){ 
 03B2                   .dbline 352 
                       ;     Usb_Set_Csw();   
 03B2 C2DF              rcall _Usb_Set_Csw 
 03B4                   .dbline 353 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 03B4 2224              clr R2 
 03B6 20922800          sts _Usb_Csw+8+1,R2 
 03BA                   .dbline 354 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 03BA 20922900          sts _Usb_Csw+8+2,R2 
 03BE                   .dbline 355 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 03BE 20922A00          sts _Usb_Csw+8+3,R2 
 03C2                   .dbline 356 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0;   
 03C2 20922B00          sts _Usb_Csw+8+4,R2 
 03C6                   .dbline 357 
                       ;     XmtBuff.pp = SCSIDATA_ReadCapacity; 
 03C6 80E0              ldi R24,<_SCSIDATA_ReadCapacity 
 03C8 90E0              ldi R25,>_SCSIDATA_ReadCapacity 
 03CA 90934300          sts _XmtBuff+66+1,R25 
 03CE 80934200          sts _XmtBuff+66,R24 
 03D2                   .dbline 358 
                       ;     XmtBuff.wrLength = 8;  
 03D2 88E0              ldi R24,8 
 03D4 90E0              ldi R25,0 
 03D6 90934100          sts _XmtBuff+64+1,R25 
 03DA 80934000          sts _XmtBuff+64,R24 
 03DE                   .dbline 359 
                       ;     BULK_submit(); 
 03DE 00D0              rcall _BULK_submit 
 03E0                   .dbline -2 
 03E0                   .dbline 360 
                       ; } 
 03E0                 L106: 
 03E0                   .dbline 0 ; func end 
 03E0 0895              ret 
 03E2                   .dbfunc s SCSICMD_Read10 _SCSICMD_Read10 fI 
                         .even 
 03E2                 _SCSICMD_Read10:: 
 03E2                   .dbline -1 
 03E2                   .dbline 382 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_Read10(void){ 
 03E2                   .dbline 383 
                       ;     Usb_Set_Csw();  
 03E2 AADF              rcall _Usb_Set_Csw 
 03E4                   .dbline 384 
                       ;     Usb_Csw.dCSWDataResidue[0]=0;  
 03E4 2224              clr R2 
 03E6 20922700          sts _Usb_Csw+8,R2 
 03EA                   .dbline 385 
                       ;         Usb_Csw.dCSWDataResidue[1]=0; 
 03EA 20922800          sts _Usb_Csw+8+1,R2 
 03EE                   .dbline 386 
                       ;         Usb_Csw.dCSWDataResidue[2]=0; 
 03EE 20922900          sts _Usb_Csw+8+2,R2 
 03F2                   .dbline 387 
                       ;         Usb_Csw.dCSWDataResidue[3]=0; 
 03F2 20922A00          sts _Usb_Csw+8+3,R2 
 03F6                   .dbline 388 
                       ;     flashReadcmd(); 
 03F6 00D0              rcall _flashReadcmd 
 03F8                   .dbline 389 
                       ;     flashRead(); 
 03F8 00D0              rcall _flashRead 
 03FA                   .dbline -2 
 03FA                   .dbline 390 
                       ; } 
 03FA                 L117: 
 03FA                   .dbline 0 ; func end 
 03FA 0895              ret 
 03FC                   .dbfunc s SCSICMD_TestUnitReady _SCSICMD_TestUnitReady fI 
                         .even 
 03FC                 _SCSICMD_TestUnitReady:: 
 03FC                   .dbline -1 
 03FC                   .dbline 412 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_TestUnitReady(void){ 
 03FC                   .dbline 413 
                       ;     Usb_Set_Csw();   
 03FC 9DDF              rcall _Usb_Set_Csw 
 03FE                   .dbline 414 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 03FE 2224              clr R2 
 0400 20922800          sts _Usb_Csw+8+1,R2 
 0404                   .dbline 415 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 0404 20922900          sts _Usb_Csw+8+2,R2 
 0408                   .dbline 416 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 0408 20922A00          sts _Usb_Csw+8+3,R2 
 040C                   .dbline 417 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 040C 20922B00          sts _Usb_Csw+8+4,R2 
 0410                   .dbline 418 
                       ;     XmtBuff.p_p=0; 
 0410 20924600          sts _XmtBuff+70,R2 
 0414                   .dbline 419 
                       ;     XmtBuff.p = (unsigned char *)&Usb_Csw; 
 0414 80E0              ldi R24,<_Usb_Csw 
 0416 90E0              ldi R25,>_Usb_Csw 
 0418 90934500          sts _XmtBuff+68+1,R25 
 041C 80934400          sts _XmtBuff+68,R24 
 0420                   .dbline 420 
                       ;     XmtBuff.wrLength = 13; 
 0420 8DE0              ldi R24,13 
 0422 90E0              ldi R25,0 
 0424 90934100          sts _XmtBuff+64+1,R25 
 0428 80934000          sts _XmtBuff+64,R24 
 042C                   .dbline 421 
                       ;     BULK_submit(); 
 042C 00D0              rcall _BULK_submit 
 042E                   .dbline -2 
 042E                   .dbline 422 
                       ; } 
 042E                 L125: 
 042E                   .dbline 0 ; func end 
 042E 0895              ret 
 0430                   .dbfunc s SCSICMD_RequestSense _SCSICMD_RequestSense fI 
                         .even 
 0430                 _SCSICMD_RequestSense:: 
 0430                   .dbline -1 
 0430                   .dbline 444 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_RequestSense(void){ 
 0430                   .dbline 445 
                       ;     Usb_Set_Csw();   
 0430 83DF              rcall _Usb_Set_Csw 
 0432                   .dbline 446 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 0432 2224              clr R2 
 0434 20922800          sts _Usb_Csw+8+1,R2 
 0438                   .dbline 447 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 0438 20922900          sts _Usb_Csw+8+2,R2 
 043C                   .dbline 448 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 043C 20922A00          sts _Usb_Csw+8+3,R2 
 0440                   .dbline 449 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 0440 20922B00          sts _Usb_Csw+8+4,R2 
 0444                   .dbline 450 
                       ;     XmtBuff.pp = SCSIDATA_RequestSense; 
 0444 80E0              ldi R24,<_SCSIDATA_RequestSense 
 0446 90E0              ldi R25,>_SCSIDATA_RequestSense 
 0448 90934300          sts _XmtBuff+66+1,R25 
 044C 80934200          sts _XmtBuff+66,R24 
 0450                   .dbline 451 
                       ;     XmtBuff.wrLength = 18; 
 0450 82E1              ldi R24,18 
 0452 90E0              ldi R25,0 
 0454 90934100          sts _XmtBuff+64+1,R25 
 0458 80934000          sts _XmtBuff+64,R24 
 045C                   .dbline 452 
                       ;     BULK_submit(); 
 045C 00D0              rcall _BULK_submit 
 045E                   .dbline -2 
 045E                   .dbline 453 
                       ; } 
 045E                 L137: 
 045E                   .dbline 0 ; func end 
 045E 0895              ret 
 0460                   .dbfunc s SCSICMD_ModeSense06 _SCSICMD_ModeSense06 fI 
                         .even 
 0460                 _SCSICMD_ModeSense06:: 
 0460                   .dbline -1 
 0460                   .dbline 475 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_ModeSense06(void){ 
 0460                   .dbline 476 
                       ;     Usb_Set_Csw(); 
 0460 6BDF              rcall _Usb_Set_Csw 
 0462                   .dbline 477 
                       ;         Usb_Csw.dCSWDataResidue[1]=(unsigned char)(dCBWDaTrLen-0x04);     
 0462 90912D00          lds R25,_dCBWDaTrLen+1 
 0466 80912C00          lds R24,_dCBWDaTrLen 
 046A 0497              sbiw R24,4 
 046C 80932800          sts _Usb_Csw+8+1,R24 
 0470                   .dbline 478 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 0470 2224              clr R2 
 0472 20922900          sts _Usb_Csw+8+2,R2 
 0476                   .dbline 479 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 0476 20922A00          sts _Usb_Csw+8+3,R2 
 047A                   .dbline 480 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 047A 20922B00          sts _Usb_Csw+8+4,R2 
 047E                   .dbline 481 
                       ;     XmtBuff.pp = SCSIDATA_Sense; 
 047E 80E0              ldi R24,<_SCSIDATA_Sense 
 0480 90E0              ldi R25,>_SCSIDATA_Sense 
 0482 90934300          sts _XmtBuff+66+1,R25 
 0486 80934200          sts _XmtBuff+66,R24 
 048A                   .dbline 482 
                       ;     XmtBuff.wrLength = 4; 
 048A 84E0              ldi R24,4 
 048C 90E0              ldi R25,0 
 048E 90934100          sts _XmtBuff+64+1,R25 
 0492 80934000          sts _XmtBuff+64,R24 
 0496                   .dbline 483 
                       ;     BULK_submit(); 
 0496 00D0              rcall _BULK_submit 
 0498                   .dbline -2 
 0498                   .dbline 484 
                       ; } 
 0498                 L148: 
 0498                   .dbline 0 ; func end 
 0498 0895              ret 
 049A                   .dbfunc s SCSICMD_PreventAllowMediumRemoval _SCSICMD_PreventAllowMediumRemoval fI 
                         .even 
 049A                 _SCSICMD_PreventAllowMediumRemoval:: 
 049A                   .dbline -1 
 049A                   .dbline 506 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_PreventAllowMediumRemoval(void){ 
 049A                   .dbline 507 
                       ;     Usb_Set_Csw();   
 049A 4EDF              rcall _Usb_Set_Csw 
 049C                   .dbline 508 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 049C 2224              clr R2 
 049E 20922800          sts _Usb_Csw+8+1,R2 
 04A2                   .dbline 509 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 04A2 20922900          sts _Usb_Csw+8+2,R2 
 04A6                   .dbline 510 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 04A6 20922A00          sts _Usb_Csw+8+3,R2 
 04AA                   .dbline 511 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 04AA 20922B00          sts _Usb_Csw+8+4,R2 
 04AE                   .dbline 512 
                       ;     XmtBuff.p_p=0; 
 04AE 20924600          sts _XmtBuff+70,R2 
 04B2                   .dbline 513 
                       ;     XmtBuff.p = (unsigned char *)&Usb_Csw; 
 04B2 80E0              ldi R24,<_Usb_Csw 
 04B4 90E0              ldi R25,>_Usb_Csw 
 04B6 90934500          sts _XmtBuff+68+1,R25 
 04BA 80934400          sts _XmtBuff+68,R24 
 04BE                   .dbline 514 
                       ;     XmtBuff.wrLength = 13; 
 04BE 8DE0              ldi R24,13 
 04C0 90E0              ldi R25,0 
 04C2 90934100          sts _XmtBuff+64+1,R25 
 04C6 80934000          sts _XmtBuff+64,R24 
 04CA                   .dbline 515 
                       ;     BULK_submit(); 
 04CA 00D0              rcall _BULK_submit 
 04CC                   .dbline -2 
 04CC                   .dbline 516 
                       ; } 
 04CC                 L159: 
 04CC                   .dbline 0 ; func end 
 04CC 0895              ret 
 04CE                   .dbfunc s SCSICMD_Write10 _SCSICMD_Write10 fI 
                         .even 
 04CE                 _SCSICMD_Write10:: 
 04CE                   .dbline -1 
 04CE                   .dbline 538 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_Write10(void){ 
 04CE                   .dbline 539 
                       ;     Usb_Set_Csw(); 
 04CE 34DF              rcall _Usb_Set_Csw 
 04D0                   .dbline 540 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 04D0 2224              clr R2 
 04D2 20922800          sts _Usb_Csw+8+1,R2 
 04D6                   .dbline 541 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 04D6 20922900          sts _Usb_Csw+8+2,R2 
 04DA                   .dbline 542 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 04DA 20922A00          sts _Usb_Csw+8+3,R2 
 04DE                   .dbline 543 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 04DE 20922B00          sts _Usb_Csw+8+4,R2 
 04E2                   .dbline 544 
                       ;     flashWritecmd(); 
 04E2 00D0              rcall _flashWritecmd 
 04E4                   .dbline 545 
                       ;     XmtBuff.p_p=0; 
 04E4 2224              clr R2 
 04E6 20924600          sts _XmtBuff+70,R2 
 04EA                   .dbline 546 
                       ;     XmtBuff.p = (unsigned char *)&Usb_Csw; 
 04EA 80E0              ldi R24,<_Usb_Csw 
 04EC 90E0              ldi R25,>_Usb_Csw 
 04EE 90934500          sts _XmtBuff+68+1,R25 
 04F2 80934400          sts _XmtBuff+68,R24 
 04F6                   .dbline 547 
                       ;     XmtBuff.wrLength = 13; 
 04F6 8DE0              ldi R24,13 
 04F8 90E0              ldi R25,0 
 04FA 90934100          sts _XmtBuff+64+1,R25 
 04FE 80934000          sts _XmtBuff+64,R24 
 0502                   .dbline 548 
                       ;     BULK_submit(); 
 0502 00D0              rcall _BULK_submit 
 0504                   .dbline -2 
 0504                   .dbline 549 
                       ; } 
 0504                 L171: 
 0504                   .dbline 0 ; func end 
 0504 0895              ret 
 0506                   .dbfunc s SCSICMD_Verify10 _SCSICMD_Verify10 fI 
                         .even 
 0506                 _SCSICMD_Verify10:: 
 0506                   .dbline -1 
 0506                   .dbline 571 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_Verify10(void){ 
 0506                   .dbline 572 
                       ;     Usb_Set_Csw(); 
 0506 18DF              rcall _Usb_Set_Csw 
 0508                   .dbline 573 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 0508 2224              clr R2 
 050A 20922800          sts _Usb_Csw+8+1,R2 
 050E                   .dbline 574 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 050E 20922900          sts _Usb_Csw+8+2,R2 
 0512                   .dbline 575 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 0512 20922A00          sts _Usb_Csw+8+3,R2 
 0516                   .dbline 576 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 0516 20922B00          sts _Usb_Csw+8+4,R2 
 051A                   .dbline 577 
                       ;     XmtBuff.p_p=0; 
 051A 20924600          sts _XmtBuff+70,R2 
 051E                   .dbline 578 
                       ;     XmtBuff.p = (unsigned char *)&Usb_Csw; 
 051E 80E0              ldi R24,<_Usb_Csw 
 0520 90E0              ldi R25,>_Usb_Csw 
 0522 90934500          sts _XmtBuff+68+1,R25 
 0526 80934400          sts _XmtBuff+68,R24 
 052A                   .dbline 579 
                       ;     XmtBuff.wrLength = 13; 
 052A 8DE0              ldi R24,13 
 052C 90E0              ldi R25,0 
 052E 90934100          sts _XmtBuff+64+1,R25 
 0532 80934000          sts _XmtBuff+64,R24 
 0536                   .dbline 580 
                       ;     BULK_submit(); 
 0536 00D0              rcall _BULK_submit 
 0538                   .dbline -2 
 0538                   .dbline 581 
                       ; } 
 0538                 L183: 
 0538                   .dbline 0 ; func end 
 0538 0895              ret 
 053A                   .dbfunc s SCSICMD_ModeSense10 _SCSICMD_ModeSense10 fI 
                         .even 
 053A                 _SCSICMD_ModeSense10:: 
 053A                   .dbline -1 
 053A                   .dbline 603 
                       ; /************************************************************ 
                       ; **工程名称:U盘固件程序开发 
                       ; **编译器类型及版本:ICCAVR 6.26C 
                       ; **日期:2004.4.30 
                       ; **创建人:陈驰 
                       ; **所属单位:湖南大学计算机与通信学院 
                       ;  
                       ; **芯片类型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0 
                       ; **时钟频率:8MHZ 
                       ;  
                       ; **函数功能:SCSI命令 
                       ; **函数输入参数及说明:无 
                       ;  
                       ; **函数返回值:无 
                       ; **在本函数以外定义的变量: 
                       ; **调用的函数说明:无 
                       ;  
                       ; **修改人:陈驰 
                       ; **修改日期:2004.4.30 
                       ; **修改说明:创建 
                       ; *************************************************************/ 
                       ; void SCSICMD_ModeSense10(void){ 
 053A                   .dbline 604 
                       ;     Usb_Set_Csw(); 
 053A FEDE              rcall _Usb_Set_Csw 
 053C                   .dbline 605 
                       ;        Usb_Csw.dCSWDataResidue[1] = 0; 
 053C 2224              clr R2 
 053E 20922800          sts _Usb_Csw+8+1,R2 
 0542                   .dbline 606 
                       ;     Usb_Csw.dCSWDataResidue[2] = 0; 
 0542 20922900          sts _Usb_Csw+8+2,R2 
 0546                   .dbline 607 
                       ;     Usb_Csw.dCSWDataResidue[3] = 0; 
 0546 20922A00          sts _Usb_Csw+8+3,R2 
 054A                   .dbline 608 
                       ;     Usb_Csw.dCSWDataResidue[4] = 0; 
 054A 20922B00          sts _Usb_Csw+8+4,R2 
 054E                   .dbline 609 
                       ;     XmtBuff.p_p=0; 
 054E 20924600          sts _XmtBuff+70,R2 
 0552                   .dbline 610 
                       ;     XmtBuff.p = (unsigned char *)&Usb_Csw; 
 0552 80E0              ldi R24,<_Usb_Csw 
 0554 90E0              ldi R25,>_Usb_Csw 
 0556 90934500          sts _XmtBuff+68+1,R25 
 055A 80934400          sts _XmtBuff+68,R24 
 055E                   .dbline 611 
                       ;     XmtBuff.wrLength = 13; 
 055E 8DE0              ldi R24,13 
 0560 90E0              ldi R25,0 
 0562 90934100          sts _XmtBuff+64+1,R25 
 0566 80934000          sts _XmtBuff+64,R24 
 056A                   .dbline 612 
                       ;     BULK_submit(); 
 056A 00D0              rcall _BULK_submit 
 056C                   .dbline -2 
 056C                   .dbline 613 
                       ; } 
 056C                 L195: 
 056C                   .dbline 0 ; func end 
 056C 0895              ret 
                         .area bss(ram, con, rel) 
 0000                   .dbfile G:\source\Scsi.c 
 0000                 _Usb_Cbw:: 
 0000                   .blkb 31 
 001F                   .dbsym s Usb_Cbw _Usb_Cbw X 
 001F                 _Usb_Csw:: 
 001F                   .blkb 13 
 002C                   .dbsym s Usb_Csw _Usb_Csw X 
 002C                 _dCBWDaTrLen:: 
 002C                   .blkb 2 
 002E                   .dbsym s dCBWDaTrLen _dCBWDaTrLen i 
 002E                 _BulkStausPhase:: 
 002E                   .blkb 1 
 002F                   .dbsym s BulkStausPhase _BulkStausPhase c 
                         .area lit(rom, con, rel) 
 007A                 L63: 
 007A 00000000          .word 0,0 
                         .area data(ram, con, rel) 
 0005                   .dbfile G:\source\Scsi.c 
 0005                 L4: 
 0005                   .blkb 1 
                         .area idata 
 0005 00                .byte 0 
                         .area data(ram, con, rel) 
 0006                   .dbfile G:\source\Scsi.c