📄 udisk.lis
字号:
0000 ; mCmdParam.ByteWrite.mByteCount);
0000 ; OperReturn = CH375ByteWrite( );
0000 ; OFF_WR;
0000 ; if(OperReturn)
0000 ; {
0000 ; ReturnErrorCode(OperReturn);
0000 ; }
0000 ; else
0000 ; {
0000 ; nComBuff.AckData.VeryData.RealWriteByte = mCmdParam.ByteWrite.mByteCount;
0000 ; RETURN_SUCCESS;
0000 ; nComBuff.AckData.FrameLen = nComBuff.AckData.VeryData.RealWriteByte + 5; //整个帧的长度
0000 ; }
0000 ; }
0000 ; }
0000 ; B_status = S_OPEN;
0000 ; }
0000 ;
0000 ; /************************************************************************/
0000 ; /* 模块的扇区读取函数
0000 ; 在mCmdParam.ReadX.mSectorCount中放入读取的扇区数目
0000 ; 在mCmdParam.ReadX.mDataBuffer中 */
0000 ; /************************************************************************/
0000 ; void ModuleSectorRead(void)
0000 ; {
0000 ; if(CH375DiskStatus == DISK_OPEN_FILE)
0000 ; {
0000 ; mCmdParam.ReadX.mSectorCount = 1;
0000 ; LIGHT_RD;
0000 ; OperReturn = CH375FileRead();
0000 ; OFF_RD;
0000 ; if(OperReturn)
0000 ; {
0000 ; ReturnErrorCode(OperReturn);
0000 ; }
0000 ; else
0000 ; {
0000 ; CopyBytes(nComBuff.AckData.VeryData.ReadDataVer.DataBuff,FILE_DATA_BUF,512);
0000 ; nComBuff.AckData.VeryData.ReadDataVer.ReadBytes = mCmdParam.ReadX.mSectorCount;
0000 ; RETURN_SUCCESS;
0000 ; nComBuff.ReqData.FrameLen = (nComBuff.AckData.VeryData.ReadDataVer.ReadBytes<<9) + 5;
0000 ; }
0000 ; }
0000 ; else
0000 ; {
0000 ; ReturnErrorCode(A_BYTEMODE);
0000 ; }
0000 ; }
0000 ;
0000 ; /************************************************************************/
0000 ; /* 模块的扇区写入函数
0000 ; 在 */
0000 ; /************************************************************************/
0000 ; void ModuleSectorWrite(void)
0000 ; {
0000 ; if(CH375DiskStatus == DISK_OPEN_FILE)
0000 ; {
0000 ; mCmdParam.Write.mSectorCount = nComBuff.ReqData.VeryData.WriteDataVer.Bytes; /*把要写入的扇区数确定*/
0000 ; CopyBytes(FILE_DATA_BUF,nComBuff.ReqData.VeryData.WriteDataVer.DataBuff,512);
0000 ; LIGHT_WR;
0000 ; OperReturn = CH375FileWrite( );
0000 ; OFF_WR;
0000 ; if(OperReturn)
0000 ; {
0000 ; ReturnErrorCode(OperReturn);
0000 ; }
0000 ; else
0000 ; {
0000 ; nComBuff.AckData.VeryData.RealWriteByte = mCmdParam.Write.mSectorCount;
0000 ; RETURN_SUCCESS;
0000 ; nComBuff.AckData.FrameLen = 5;
0000 ; }
0000 ; }
0000 ; else
0000 ; {
0000 ; ReturnErrorCode(A_BYTEMODE);
0000 ; }
0000 ;
0000 ;
0000 ; }
0000 ; /************************************************************************/
0000 ; /* 模块编辑文件属性函数
0000 ; 修改文件的属性,日期,长度,时间,
0000 ; */
0000 ; /************************************************************************/
0000 ;
0000 ; /************************************************************************/
0000 ; /* 模块文件的偏移
0000 ; 入口:ModeLocate ,0--字节模式,!0--扇区模式
0000 ; */
0000 ; /************************************************************************/
0000 ; void ModuleSetOffset(uchar ModeLocate)
0000 ; {
0000 ; if(ModeLocate == LOCATE_SECTOR_MODE)
0000 ; {
0000 ; mCmdParam.Locate.mSectorOffset = nComBuff.ReqData.VeryData.SetOffset;
0000 ; OperReturn = CH375FileLocate();
0000 ; if(OperReturn)
0000 ; ReturnErrorCode(OperReturn);
0000 ; else
0000 ; {
0000 ; RETURN_SUCCESS;
0000 ; nComBuff.AckData.VeryData.RealOffset = mCmdParam.Locate.mSectorOffset;
0000 ; nComBuff.AckData.FrameLen = 7;
0000 ; }
0000 ; }
0000 ; else
0000 ; {
0000 ; mCmdParam.ByteLocate.mByteOffset = nComBuff.ReqData.VeryData.SetOffset;
0000 ; OperReturn = CH375ByteLocate( );
0000 ; if(OperReturn)
0000 ; ReturnErrorCode(OperReturn);
0000 ; else
0000 ; {
0000 ; RETURN_SUCCESS;
0000 ; nComBuff.AckData.VeryData.RealOffset = mCmdParam.ByteLocate.mByteOffset;
0000 ; nComBuff.AckData.FrameLen = 7;
0000 ; }
0000 ; }
0000 ; }
0000 ; /************************************************************************/
0000 ; /* 如果是有文件打开的状态,帧处理函数 */
0000 ; /************************************************************************/
0000 ; void StatusOpen(void)
0000 ; {
0000 ; uint rdcount;
0000 ; switch(nComBuff.ReqData.Com)
0000 .dbline 674
0000 ; {
0000 80E0 ldi R24,<_FILE_DATA_BUF
0002 90E0 ldi R25,>_FILE_DATA_BUF
0004 90931D06 sts _mCmdParam+8+1,R25
0008 80931C06 sts _mCmdParam+8,R24
000C .dbline 675
000C ; case R_RD_FILE_DATA:
000C 0E940000 xcall _CH375FileReadX
0010 .dbline -2
0010 L33:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e CH375FileWrite _CH375FileWrite fc
.even
0012 _CH375FileWrite::
0012 .dbline -1
0012 .dbline 679
0012 ; ModuleByteRead();
0012 ; break;
0012 ; case R_RD_FILE_ATTR:
0012 ; ModuleAttrRead();
0012 .dbline 680
0012 ; break;
0012 80E0 ldi R24,<_FILE_DATA_BUF
0014 90E0 ldi R25,>_FILE_DATA_BUF
0016 90931D06 sts _mCmdParam+8+1,R25
001A 80931C06 sts _mCmdParam+8,R24
001E .dbline 681
001E ; case R_WR_FILE_DATA:
001E 0E940000 xcall _CH375FileWriteX
0022 .dbline -2
0022 L35:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e CH375FileQuery _CH375FileQuery fc
0024 ; count -> R20
0024 ; buf -> R22,R23
.even
0024 _CH375FileQuery::
0024 0E940000 xcall push_gset2
0028 .dbline -1
0028 .dbline 700
0028 ; ModuleByteWrite();
0028 ; break;
0028 ; case R_RD_FILE_SECTOR:
0028 ; ModuleSectorRead();
0028 ; break;
0028 ; case R_WR_FILE_SECTOR:
0028 ; ModuleSectorWrite();
0028 ; break;
0028 ; case R_CLOSEFILE:
0028 ; mCmdParam.Close.mUpdateLen = 1; //自动更新文件长度
0028 ; OperReturn = CH375FileClose( );
0028 ; if(OperReturn)
0028 ; {
0028 ; ReturnErrorCode(OperReturn);
0028 ; }
0028 ; else
0028 ; {
0028 ; ReturnErrorCode(A_SUCCESS);
0028 ; }
0028 .dbline 703
0028 ; B_status = S_READY;
0028 ; break;
0028 ; case R_SET_OFFSETBYTE:
0028 60E0 ldi R22,<_mCmdParam
002A 70E0 ldi R23,>_mCmdParam
002C .dbline 704
002C 49E0 ldi R20,9
002E 06C0 xjmp L41
0030 L38:
0030 .dbline 704
0030 .dbline 705
0030 8FEF ldi R24,255
0032 FB01 movw R30,R22
0034 8083 std z+0,R24
0036 .dbline 706
0036 6F5F subi R22,255 ; offset = 1
0038 7F4F sbci R23,255
003A .dbline 707
003A L39:
003A .dbline 704
003A 4A95 dec R20
003C L41:
003C .dbline 704
003C ; ModuleSetOffset(LOCATE_BYTE_MODE);
003C 4423 tst R20
003E C1F7 brne L38
0040 .dbline 708
0040 ; break;
0040 ; case R_SET_OFFSETSECTOR:
0040 ; ModuleSetOffset(LOCATE_SECTOR_MODE);
0040 ; break;
0040 0E940000 xcall _CH375FileModify
0044 .dbline -2
0044 L37:
0044 0E940000 xcall pop_gset2
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbsym r count 20 c
004A .dbsym r buf 22 pc
004A .dbend
004A .dbfunc e xQueryInterrupt _xQueryInterrupt fV
.even
004A _xQueryInterrupt::
004A .dbline -1
004A .dbline 715
004A ;
004A ; case R_MODIFY_ATTR:
004A ; mCmdParam.Modify.mFileAttr = nComBuff.ReqData.VeryData.ModifyFileAttrVer.FileAttr;
004A ; mCmdParam.Modify.mFileDate = nComBuff.ReqData.VeryData.ModifyFileAttrVer.FileDate;
004A ; mCmdParam.Modify.mFileSize = nComBuff.ReqData.VeryData.ModifyFileAttrVer.FileSize;
004A ; mCmdParam.Modify.mFileTime = nComBuff.ReqData.VeryData.ModifyFileAttrVer.FileTime;
004A ; OperReturn = CH375FileModify();
004A L43:
004A .dbline 716
004A L44:
004A .dbline 716
004A ; if(OperReturn)
004A 8299 sbic 0x10,2
004C FECF rjmp L43
004E .dbline 717
004E ; {
004E 02E2 ldi R16,34
0050 D8D0 xcall _xWriteCH375Cmd
0052 .dbline 718
0052 ; ReturnErrorCode(OperReturn);
0052 FFD0 xcall _xReadCH375Data
0054 00930000 sts _CH375IntStatus,R16
0058 .dbline 719
0058 ; }
0058 80910000 lds R24,_CH375IntStatus
005C 8631 cpi R24,22
005E 21F4 brne L46
0060 .dbline 719
0060 81E0 ldi R24,1
0062 80930000 sts _CH375DiskStatus,R24
0066 07C0 xjmp L47
0068 L46:
0068 .dbline 720
0068 ; else
0068 80910000 lds R24,_CH375IntStatus
006C 8531 cpi R24,21
006E 19F4 brne L48
0070 .dbline 720
0070 82E0 ldi R24,2
0072 80930000 sts _CH375DiskStatus,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -