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

📄 scsi.lis

📁 采用Atmeag162单片机来制作的U盘程序源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module SCSI.C
                        .area lit(rom, con, rel)
 0000           _inquiryData::
 0000 00                .byte 0
 0001 80                .byte 128
 0002 02                .byte 2
 0003 02                .byte 2
 0004 1F00              .byte 31,0
 0006 00                .byte 0
 0007 00                .byte 0
 0008 5955              .byte 'Y,'U
 000A 584B              .byte 'X,'K
 000C 3230              .byte 50,48
 000E 3035              .byte 48,53
 0010 5553              .byte 'U,'S
 0012 422D              .byte 'B,45
 0014 4D41              .byte 'M,'A
 0016 5353              .byte 'S,'S
 0018 2D53              .byte 45,'S
 001A 544F              .byte 'T,'O
 001C 5241              .byte 'R,'A
 001E 4745              .byte 'G,'E
 0020 302E              .byte 48,46
 0022 3030              .byte 48,48
 0024                   .dbfile D:\AvrUSB\SCSI.C
 0024                   .dbsym e inquiryData _inquiryData kX
 0024           _ModeData::
 0024 03                .byte 3
 0025 00                .byte 0
 0026 00                .byte 0
 0027 00                .byte 0
 0028                   .dbsym e ModeData _ModeData kX
 0028           _ReadCapacityData::
 0028 0000              .byte 0,0
 002A FBFF              .byte 251,255
 002C 0000              .byte 0,0
 002E 0200              .byte 2,0
 0030                   .dbsym e ReadCapacityData _ReadCapacityData kX
 0030           _CapacitylistHead::
 0030 0000              .byte 0,0
 0032 00                .byte 0
 0033 08                .byte 8
 0034                   .dbsym e CapacitylistHead _CapacitylistHead kX
 0034           _CMFormatCapacityData::
 0034 0010              .byte 0,16
 0036 0000              .byte 0,0
 0038 03                .byte 3
 0039 0002              .byte 0,2
 003B 00                .byte 0
 003C                   .dbsym e CMFormatCapacityData _CMFormatCapacityData kX
                        .area text(rom, con, rel)
 0000                   .dbfile D:\AvrUSB\SCSI.C
 0000                   .dbfunc e RBC_Hander _RBC_Hander fc
 0000           ;         result -> R20
                        .even
 0000           _RBC_Hander::
 0000 0E940000          xcall push_gset2
 0004                   .dbline -1
 0004                   .dbline 73
 0004           ; #include <iom162v.h>
 0004           ; #include <macros.h>
 0004           ; #include "SCSI.H"
 0004           ; #include "SCSIDef.H"
 0004           ; #include "BulkOnly.H"
 0004           ; #include "MAIN.H"
 0004           ; 
 0004           ; #include "Fat.h"
 0004           ; 
 0004           ; 
 0004           ; extern BULK_STRUCT  Bulk_Block;
 0004           ; extern CONTROL_XFER ControlData;
 0004           ; extern EPPFLAGS         bEPPflags;
 0004           ; BULK_CONTROL            Bulk_Control_r;
 0004           ; BULK_CONTROL            Bulk_Control_w;
 0004           ; unsigned char           PageBuf[512];
 0004           ; 
 0004           ; #define CBW_bCBWCBLength Bulk_Block.cbw.dCBWDataTransferLength
 0004           ; 
 0004           ; const STD_INQUIRY_DATA inquiryData={
 0004           ;    0,//unsigned       DeviceType             :5;
 0004           ;    0,//unsigned       Reserved0              :3;
 0004           ;    0,//unsigned       Reserved1              :7;
 0004           ;    1,//unsigned       RemovableMedia         :1;
 0004           ;    2,//unsigned char  Reserved2;
 0004           ;    2,//unsigned       Reserved3              :5;
 0004           ;    0,//unsigned       NormACA                :1;
 0004           ;    0,//unsigned       Obsolete0              :1;
 0004           ;    0,//unsigned       AERC                   :1;
 0004           ;    0x1f,0,0,//unsigned char  Reserved4[3];
 0004           ;    0,//unsigned       SoftReset              :1;
 0004           ;    0,//unsigned       CommandQueue           :1;
 0004           ;    0,//unsigned       Reserved5              :1;
 0004           ;    0,//unsigned       LinkedCommands         :1;
 0004           ;    0,//unsigned       Synchronous            :1;
 0004           ;    0,//unsigned       Wide16Bit              :1;
 0004           ;    0,//unsigned       Wide32Bit              :1;
 0004           ;    0,//unsigned       RelativeAddressing     :1;
 0004           ;    'Y','U','X','K',  //VendorInformation[8];
 0004           ;    '2','0','0','5',
 0004           ;    'U','S','B','-',  //ProductInformation[16];
 0004           ;    'M','A','S','S',
 0004           ;    '-','S','T','O',
 0004           ;    'R','A','G','E',
 0004           ;    '0','.','0','0',   //ProductReisionLevel[4];
 0004           ; };
 0004           ; 
 0004           ; const MODE_DATA ModeData={
 0004           ;    3,//unsigned char  OperationCode;
 0004           ;    0,//unsigned char  Reserved0;
 0004           ;    0,//unsigned       Reserved1               :7;
 0004           ;    0,//unsigned       WP                      :1;   
 0004           ;    0 //unsigned char  Reserved2;  
 0004           ; };
 0004           ; const READ_CAPACITY_DATA ReadCapacityData={
 0004           ;    0,0,0xfb,0xff,//unsigned char LogicalBlockAddress[4];
 0004           ;    0,0,0x02,0//unsigned char LogicalLength[4];
 0004           ; };
 0004           ; #define CAPACITY_LIST_LENGTH sizeof(CAPACITYLIST_HEAD)+sizeof(CM_FORMAT_CAPACITY_DATA)
 0004           ; const CAPACITYLIST_HEAD CapacitylistHead={
 0004           ;    0,0,0,//unsigned char Reserved0[3];
 0004           ;    sizeof(CM_FORMAT_CAPACITY_DATA) //unsigned char CapacityLength;
 0004           ; };
 0004           ; const CM_FORMAT_CAPACITY_DATA CMFormatCapacityData={
 0004           ;    0,0x10,0,0,//unsigned char LogicalBlockAddress[4];
 0004           ;    3, //unsigned      DescriptorCode                  :2;
 0004           ;    0, //unsigned      Reserved0                       :6;
 0004           ;    0,2,0 //unsigned char LogicalLength[3];
 0004           ; };
 0004           ; 
 0004           ; 
 0004           ; BOOLEAN  RBC_Hander(void)
 0004           ; {                              
 0004                   .dbline 76
 0004           ; #define cdbGeneric  Bulk_Block.cbw.CBWCB.RbcCdb_Generic
 0004           ; 
 0004           ;   BOOLEAN result=FALSE;
 0004 4427              clr R20
 0006                   .dbline 77
 0006           ;   ControlData.wLength=0;
 0006 2224              clr R2
 0008 3324              clr R3
 000A 30920900          sts _ControlData+8+1,R3
 000E 20920800          sts _ControlData+8,R2
 0012                   .dbline 78
 0012           ;   switch(cdbGeneric.OperationCode)
 0012 60910F00          lds R22,_Bulk_Block+15
 0016 7727              clr R23
 0018 6A31              cpi R22,26
 001A E0E0              ldi R30,0
 001C 7E07              cpc R23,R30
 001E 09F4              brne X2
 0020 3BC0              xjmp L8
 0022           X2:
 0022 8AE1              ldi R24,26
 0024 90E0              ldi R25,0
 0026 8617              cp R24,R22
 0028 9707              cpc R25,R23
 002A A4F0              brlt L18
 002C           L17:
 002C 6231              cpi R22,18
 002E E0E0              ldi R30,0
 0030 7E07              cpc R23,R30
 0032 79F1              breq L7
 0034 82E1              ldi R24,18
 0036 90E0              ldi R25,0
 0038 8617              cp R24,R22
 003A 9707              cpc R25,R23
 003C 2CF0              brlt L20
 003E           L19:
 003E 6030              cpi R22,0
 0040 6707              cpc R22,R23
 0042 09F4              brne X3
 0044 35C0              xjmp L12
 0046           X3:
 0046           X0:
 0046 40C0              xjmp L3
 0048           L20:
 0048 6631              cpi R22,22
 004A E0E0              ldi R30,0
 004C 7E07              cpc R23,R30
 004E 09F4              brne X4
 0050 3BC0              xjmp L16
 0052           X4:
 0052 3AC0              xjmp L3
 0054           L18:
 0054 6332              cpi R22,35
 0056 E0E0              ldi R30,0
 0058 7E07              cpc R23,R30
 005A 39F1              breq L11
 005C 6532              cpi R22,37
 005E E0E0              ldi R30,0
 0060 7E07              cpc R23,R30
 0062 01F1              breq L10
 0064 6832              cpi R22,40
 0066 E0E0              ldi R30,0
 0068 7E07              cpc R23,R30
 006A C9F0              breq L9
 006C 6A32              cpi R22,42
 006E E0E0              ldi R30,0
 0070 7E07              cpc R23,R30
 0072 21F1              breq L14
 0074 8AE2              ldi R24,42
 0076 90E0              ldi R25,0
 0078 8617              cp R24,R22
 007A 9707              cpc R25,R23
 007C 2CF0              brlt L22
 007E           L21:
 007E 6E31              cpi R22,30
 0080 E0E0              ldi R30,0
 0082 7E07              cpc R23,R30
 0084 F1F0              breq L15
 0086 20C0              xjmp L3
 0088           L22:
 0088 6F32              cpi R22,47
 008A E0E0              ldi R30,0
 008C 7E07              cpc R23,R30
 008E 99F0              breq L13
 0090 1BC0              xjmp L3
 0092           X1:
 0092                   .dbline 79
 0092           ;   {  
 0092           L7:
 0092                   .dbline 81
 0092           ;        case SPC_CMD_INQUIRY:
 0092           ;            result=SPC_InQuiry();
 0092 20D0              xcall _SPC_InQuiry
 0094 402F              mov R20,R16
 0096                   .dbline 82
 0096           ;            break;
 0096 1AC0              xjmp L4
 0098           L8:
 0098                   .dbline 84
 0098           ;          case SPC_CMD_MODESENSE6:
 0098           ;            result=SPC_ModeSense();
 0098 25D0              xcall _SPC_ModeSense
 009A 402F              mov R20,R16
 009C                   .dbline 85
 009C           ;            break;        
 009C 17C0              xjmp L4
 009E           L9:
 009E                   .dbline 87
 009E           ;          case RBC_CMD_READ10:
 009E           ;              result=RBC_Read10();
 009E 2AD0              xcall _RBC_Read10
 00A0 402F              mov R20,R16
 00A2                   .dbline 88
 00A2           ;              break;   
 00A2 14C0              xjmp L4
 00A4           L10:
 00A4                   .dbline 90
 00A4           ;          case RBC_CMD_READCAPACITY:
 00A4           ;              result=RBC_ReadCapacity();
 00A4 F7D0              xcall _RBC_ReadCapacity
 00A6 402F              mov R20,R16
 00A8                   .dbline 91
 00A8           ;              break;
 00A8 11C0              xjmp L4
 00AA           L11:
 00AA                   .dbline 93
 00AA           ;          case SPC_CMD_FORMAT_CAPACITY:
 00AA           ;            result=SPC_FormatCapacity();
 00AA FCD0              xcall _SPC_FormatCapacity
 00AC 402F              mov R20,R16
 00AE                   .dbline 94
 00AE           ;            break;
 00AE 0EC0              xjmp L4
 00B0           L12:
 00B0                   .dbline 96
 00B0           ;          case SPC_CMD_TESTUNITREADY:
 00B0           ;            result=SPC_TestUnit();
 00B0 01D1              xcall _SPC_TestUnit
 00B2 402F              mov R20,R16
 00B4                   .dbline 97
 00B4           ;            break;
 00B4 0BC0              xjmp L4
 00B6           L13:
 00B6                   .dbline 99
 00B6           ;       case RBC_CMD_VERIFY10:
 00B6           ;            result=RBC_Verify10();
 00B6 07D1              xcall _RBC_Verify10
 00B8 402F              mov R20,R16
 00BA                   .dbline 100
 00BA           ;            break;
 00BA 08C0              xjmp L4
 00BC           L14:
 00BC                   .dbline 102
 00BC           ;       case RBC_CMD_WRITE10:
 00BC           ;            result=RBC_Write10();
 00BC 0DD1              xcall _RBC_Write10
 00BE 402F              mov R20,R16
 00C0                   .dbline 103
 00C0           ;            break;
 00C0 05C0              xjmp L4
 00C2           L15:
 00C2                   .dbline 105
 00C2           ;       case SPC_CMD_PRVENTALLOWMEDIUMREMOVAL:
 00C2           ;            result=SPC_LockMedia();
 00C2 4BD2              xcall _SPC_LockMedia
 00C4 402F              mov R20,R16
 00C6                   .dbline 106
 00C6           ;            break;
 00C6 02C0              xjmp L4
 00C8           L16:
 00C8           L3:
 00C8                   .dbline 109
 00C8           ;       case SPC_CMD_RESERVE6:
 00C8           ;       default:
 00C8           ;              result=SPC_Reserve6();
 00C8 51D2              xcall _SPC_Reserve6
 00CA 402F              mov R20,R16
 00CC                   .dbline 110
 00CC           ;            break;   
 00CC           L4:
 00CC                   .dbline 112
 00CC           ;   } 
 00CC           ;   return result;
 00CC 042F              mov R16,R20
 00CE                   .dbline -2
 00CE           L1:
 00CE 0E940000          xcall pop_gset2
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r result 20 c
 00D4                   .dbend
 00D4                   .dbfunc e SPC_InQuiry _SPC_InQuiry fc
                        .even
 00D4           _SPC_InQuiry::
 00D4                   .dbline -1
 00D4                   .dbline 116
 00D4           ; #undef cdbGeneric  
 00D4           ; }
 00D4           ; BOOLEAN  SPC_InQuiry(void)
 00D4           ; {
 00D4                   .dbline 117
 00D4           ;   Bulk_code_transmit((const unsigned char*)&inquiryData,
 00D4 24E2              ldi R18,36
 00D6 30E0              ldi R19,0
 00D8 00E0              ldi R16,<_inquiryData
 00DA 10E0              ldi R17,>_inquiryData
 00DC 0E940000          xcall _Bulk_code_transmit
 00E0                   .dbline 119
 00E0           ;                       sizeof(STD_INQUIRY_DATA));
 00E0           ;   return TRUE;
 00E0 01E0              ldi R16,1
 00E2                   .dbline -2
 00E2           L23:
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbend
 00E4                   .dbfunc e SPC_ModeSense _SPC_ModeSense fc
                        .even
 00E4           _SPC_ModeSense::
 00E4                   .dbline -1
 00E4                   .dbline 122
 00E4           ; }
 00E4           ; BOOLEAN  SPC_ModeSense(void)
 00E4           ; {
 00E4                   .dbline 123
 00E4           ;  Bulk_code_transmit((const unsigned char*)&ModeData,
 00E4 24E0              ldi R18,4
 00E6 30E0              ldi R19,0
 00E8 00E0              ldi R16,<_ModeData
 00EA 10E0              ldi R17,>_ModeData
 00EC 0E940000          xcall _Bulk_code_transmit
 00F0                   .dbline 125
 00F0           ;                                      sizeof(MODE_DATA)); 
 00F0           ;   return TRUE;
 00F0 01E0              ldi R16,1
 00F2                   .dbline -2
 00F2           L24:
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
 00F4                   .dbend
 00F4                   .dbfunc e RBC_Read10 _RBC_Read10 fc
 00F4           ; Logical_Block_Address -> y+2
                        .even
 00F4           _RBC_Read10::
 00F4 0E940000          xcall push_gset2
 00F8 2697              sbiw R28,6
 00FA                   .dbline -1
 00FA                   .dbline 128

⌨️ 快捷键说明

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