📄 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 J:\PDIUSBD12-Materials\富昌\优盘5.0\SCSI.C
0024 .dbstruct 0 36 _STD_INQUIRY_DATA
0024 .dbfield 0 DeviceType F[0:5]
0024 .dbfield 0 Reserved0 F[5:3]
0024 .dbfield 0 Reserved1 F[8:7]
0024 .dbfield 0 RemovableMedia F[15:1]
0024 .dbfield 2 Reserved2 c
0024 .dbfield 3 Reserved3 F[0:5]
0024 .dbfield 3 NormACA F[5:1]
0024 .dbfield 3 Obsolete0 F[6:1]
0024 .dbfield 3 AERC F[7:1]
0024 .dbfield 4 Reserved4 A[3:3]c
0024 .dbfield 7 SoftReset F[0:1]
0024 .dbfield 7 CommandQueue F[1:1]
0024 .dbfield 7 Reserved5 F[2:1]
0024 .dbfield 7 LinkedCommands F[3:1]
0024 .dbfield 7 Synchronous F[4:1]
0024 .dbfield 7 Wide16Bit F[5:1]
0024 .dbfield 7 Wide32Bit F[6:1]
0024 .dbfield 7 RelativeAddressing F[7:1]
0024 .dbfield 8 VendorId A[8:8]c
0024 .dbfield 16 ProductId A[16:16]c
0024 .dbfield 32 productRevisionLevel A[4:4]c
0024 .dbend
0024 .dbsym e inquiryData _inquiryData kS[_STD_INQUIRY_DATA]
0024 _ModeData::
0024 03 .byte 3
0025 00 .byte 0
0026 00 .byte 0
0027 00 .byte 0
0028 .dbstruct 0 4 _MODE_DATA
0028 .dbfield 0 OperationCode c
0028 .dbfield 1 Reserved0 c
0028 .dbfield 2 Reserved1 F[0:7]
0028 .dbfield 2 WP F[7:1]
0028 .dbfield 3 Reserved2 c
0028 .dbend
0028 .dbsym e ModeData _ModeData kS[_MODE_DATA]
0028 _ReadCapacityData::
0028 0000 .byte 0,0
002A FBFF .byte 251,255
002C 0000 .byte 0,0
002E 0200 .byte 2,0
0030 .dbstruct 0 8 _READ_CAPACITY_DATA
0030 .dbfield 0 LogicalBlockAddress A[4:4]c
0030 .dbfield 4 LogicalLength A[4:4]c
0030 .dbend
0030 .dbsym e ReadCapacityData _ReadCapacityData kS[_READ_CAPACITY_DATA]
0030 _CapacitylistHead::
0030 0000 .byte 0,0
0032 00 .byte 0
0033 08 .byte 8
0034 .dbstruct 0 4 _CAPACITYLIST_HEAD
0034 .dbfield 0 Reserved0 A[3:3]c
0034 .dbfield 3 CapacityLength c
0034 .dbend
0034 .dbsym e CapacitylistHead _CapacitylistHead kS[_CAPACITYLIST_HEAD]
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 .dbstruct 0 8 _CM_FORMAT_CAPACITY_DATA
003C .dbfield 0 LogicalBlockAddress A[4:4]c
003C .dbfield 4 DescriptorCode F[0:2]
003C .dbfield 4 Reserved0 F[2:6]
003C .dbfield 5 LogicalLength A[3:3]c
003C .dbend
003C .dbsym e CMFormatCapacityData _CMFormatCapacityData kS[_CM_FORMAT_CAPACITY_DATA]
.area text(rom, con, rel)
0000 .dbfile J:\PDIUSBD12-Materials\富昌\优盘5.0\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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -