📄 scsi.lis
字号:
.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 + -