📄 f34x_msd_cmd.src
字号:
?C0041:
; Cmd_Help();
; SOURCE LINE # 254
; }
; SOURCE LINE # 255
LJMP ?C0078
; return;
; }
; SOURCE LINE # 257
?C0040:
;
; if(Cmd_Match("dir")) {
; SOURCE LINE # 259
MOV R2,#HIGH (?SC_221)
MOV R1,#LOW (?SC_221)
LCALL L?0096
JZ ?C0044
; Cmd_Dir();
; SOURCE LINE # 260
LJMP Cmd_Dir
; return;
; }
; SOURCE LINE # 262
?C0044:
;
; if(Cmd_Match("s")) {
; SOURCE LINE # 264
MOV R2,#HIGH (?SC_225)
MOV R1,#LOW (?SC_225)
LCALL L?0096
JNZ $ + 5H
LJMP ?C0045
; Token=Str_Token(0);
; SOURCE LINE # 265
LCALL L?0083
;
; if((*Token > 0x29) && (*Token < 0x40))
; SOURCE LINE # 267
LCALL ?C?CLDPTR
MOV R7,A
SETB C
XRL A,#080H
SUBB A,#0A9H
JNC $ + 5H
LJMP ?C0046
MOV A,R7
XRL A,#080H
SUBB A,#0C0H
JC $ + 5H
LJMP ?C0046
; {
; SOURCE LINE # 268
; dw=atol(Token);
; SOURCE LINE # 269
MOV DPTR,#Token
LCALL L?0082
LCALL _atol
MOV DPTR,#dw?551
LCALL ?C?LSTXDATA
; printf("Sector 0x%08lX:"ENDLINE,dw);
; SOURCE LINE # 270
MOV R3,#0FFH
MOV R2,#HIGH (?SC_227)
MOV R1,#LOW (?SC_227)
LCALL L?0089
LCALL L?0103
LCALL _printf
; Sect_Read(dw);
; SOURCE LINE # 271
LCALL L?0089
LCALL _Sect_Read
; for(i=0;i<Sect_Block_Size()/16;i++) {
; SOURCE LINE # 272
CLR A
MOV DPTR,#i?548
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0047:
MOV DPTR,#i?548
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,#020H
MOV A,R6
XRL A,#080H
SUBB A,#080H
JC $ + 5H
LJMP ?C0048
; printf("%04X: ",i*16);
; SOURCE LINE # 273
MOV R3,#0FFH
MOV R2,#HIGH (?SC_245)
MOV R1,#LOW (?SC_245)
MOV A,R7
SWAP A
MOV R0,A
ANL A,#0FH
XCH A,R0
XRL A,R0
MOV R7,A
MOV A,R6
SWAP A
ANL A,#0F0H
ORL A,R0
MOV DPTR,#?_printf?BYTE+03H
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
LCALL _printf
; for(j=0;j<16;j++) {
; SOURCE LINE # 274
CLR A
MOV DPTR,#j?549
MOVX @DPTR,A
?C0050:
MOV DPTR,#j?549
MOVX A,@DPTR
MOV R5,A
CLR C
SUBB A,#010H
JNC ?C0051
; ch=Scratch[i*16+j];
; SOURCE LINE # 275
LCALL L?0088
MOV R7,A
MOV DPTR,#ch?550
MOVX @DPTR,A
; printf("%02X ",0x00FF&(int)ch);
; SOURCE LINE # 276
MOV R3,#0FFH
MOV R2,#HIGH (?SC_252)
MOV R1,#LOW (?SC_252)
RLC A
SUBB A,ACC
MOV DPTR,#?_printf?BYTE+03H
CLR A
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
LCALL _printf
; }
; SOURCE LINE # 277
MOV DPTR,#j?549
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0050
?C0051:
; for(j=0;j<16;j++) {
; SOURCE LINE # 278
CLR A
MOV DPTR,#j?549
MOVX @DPTR,A
?C0053:
MOV DPTR,#j?549
MOVX A,@DPTR
MOV R5,A
CLR C
SUBB A,#010H
JNC ?C0054
; ch=Scratch[i*16+j];
; SOURCE LINE # 279
LCALL L?0088
MOV DPTR,#ch?550
MOVX @DPTR,A
; putchar((ch>' ' && ch<0x7F)?ch:'.');
; SOURCE LINE # 280
SETB C
XRL A,#080H
SUBB A,#0A0H
JC ?C0056
MOVX A,@DPTR
MOV R7,A
XRL A,#080H
SUBB A,#0FFH
JNC ?C0056
SJMP ?C0057
?C0056:
MOV R7,#02EH
?C0057:
LCALL _putchar
; }
; SOURCE LINE # 281
MOV DPTR,#j?549
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP ?C0053
?C0054:
; printf(ENDLINE);
; SOURCE LINE # 282
LCALL L?0095
LCALL _printf
; }
; SOURCE LINE # 283
MOV DPTR,#i?548+01H
MOVX A,@DPTR
INC A
MOVX @DPTR,A
JNZ ?C0072
MOV DPTR,#i?548
MOVX A,@DPTR
INC A
MOVX @DPTR,A
?C0072:
LJMP ?C0047
?C0048:
; printf(ENDLINE);
; SOURCE LINE # 284
LCALL L?0095
?C0075:
; }
; SOURCE LINE # 285
SJMP ?C0077
?C0046:
; else
; printf("Sectors' range 0x00000 - 0x%lX\r\n",n_of_sect);
; SOURCE LINE # 287
MOV R3,#0FFH
MOV R2,#HIGH (?SC_258)
MOV R1,#LOW (?SC_258)
MOV DPTR,#n_of_sect
LCALL L?0090
LCALL L?0104
?C0077:
LJMP _printf
;
; return;
; }
; SOURCE LINE # 290
?C0045:
;
; if(Cmd_Match("log")) {
; SOURCE LINE # 292
MOV R2,#HIGH (?SC_291)
MOV R1,#LOW (?SC_291)
LCALL L?0105
JZ ?C0059
; Token=Str_Token(0);
; SOURCE LINE # 293
LCALL L?0106
LCALL L?0084
; Log(Token);
; SOURCE LINE # 294
LJMP _Log
; return;
; }
; SOURCE LINE # 296
?C0059:
;
; if(Cmd_Match("type")) {
; SOURCE LINE # 298
MOV R2,#HIGH (?SC_295)
MOV R1,#LOW (?SC_295)
LCALL L?0105
JZ ?C0060
; Token = Str_Token(0);
; SOURCE LINE # 299
LCALL L?0106
LCALL L?0085
; if(Token) {
; SOURCE LINE # 300
ORL A,R2
ORL A,R3
JZ ?C0061
; Cmd_Type(Token);
; SOURCE LINE # 301
MOV DPTR,#Token
LCALL L?0082
LJMP _Cmd_Type
; } else {
; SOURCE LINE # 302
?C0061:
; Cmd_Help();
; SOURCE LINE # 303
?C0076:
; }
; SOURCE LINE # 304
SJMP ?C0078
; return;
; }
; SOURCE LINE # 306
?C0060:
;
; if(Cmd_Match("chkdsk")) {
; SOURCE LINE # 308
MOV R3,#0FFH
MOV R2,#HIGH (?SC_300)
MOV R1,#LOW (?SC_300)
LCALL _Cmd_Match
MOV A,R7
JZ ?C0063
; Sect_Print();
; SOURCE LINE # 309
LJMP Sect_Print
; return;
; }
; SOURCE LINE # 311
?C0063:
;
; #ifdef __F340_VER__
; if(Cmd_Match("calibrate")) {
; Token=Str_Token(0);
; if((*Token > 0x29) && (*Token < 0x40))
; {
; dw=atol(Token);
; Calibrate((int)dw);
; printf("Calibrated to %d deg C\r\n", (int) dw);
; }
; else
; printf("Missing parameter\r\n");
;
; return;
; }
; if(Cmd_Match("cd")) {
; Token=Str_Token(0);
; Change_Directory(Token);
; return;
; }
; if(Cmd_Match("md")) {
; Token=Str_Token(0);
; Make_Directory(Token);
; return;
; }
; if(Cmd_Match("templog")) {
; Token=Str_Token(0);
; Temp_Log(Token);
; return;
; }
; if(Cmd_Match("format")) {
; printf("Are you sure (y/n)?"ENDLINE);
; format_flag = 1;
; //Format_Disk();
; return;
; }
; if(Cmd_Match("rd"))
; {
; Token=Str_Token(0);
; Remove_Direcory(Token);
; return;
; }
; if(Cmd_Match("mmc"))
; {
; Token=Str_Token(0);
; Get_Status_MMC();
; return;
; }
; if(Cmd_Match("time_out"))
; {
; Is_Initialized = 1;
; return;
; }
; if(Cmd_Match("loop"))
; {
; for(i=0;i<1000;i++)
; Sect_Read(i);
; return;
; }
; if(Cmd_Match("write_test"))
; {
; for(i=0;i<512;i++)
; Scratch[i] = (BYTE)0xBB;
; for(i=0;i<100;i++) {
; Sect_Write(1000+i);
; }
; for(i=0;i<100;i++) {
; Sect_Read(1000+i);
; for(dw=0;dw<512;dw++) {
; if(Scratch[dw] != (BYTE)0xBB) {
; printf("error sector %d\r\n",1000 + i);
; return;
; }
; }
; }
; return;
; }
; /* if(Cmd_Match("y"))
; {
; if(format_flag == 1)
; {
; Format_Disk();
; format_flag = 0;
; return;
; }
; }
; if(Cmd_Match("n"))
; {
; if(format_flag == 1)
; {
; format_flag = 0;
; return;
; }
; }*/
;
; #endif
; /*
; /* If MMC is so fubar that Windows cannot even recognize it for formatting,
; /* then activate & execute this 'fdisk' command.
; /*
; if(Cmd_Match("fdisk")) {
; Sect_Read(0);
; Scratch[ 0]=0xEB;Scratch[ 1]=0x3C;Scratch[ 2]=0x90;Scratch[ 3]='M';
; Scratch[ 4]= 'S';Scratch[ 5]= 'D';Scratch[ 6]= 'O';Scratch[ 7]='S';
; Scratch[ 8]= '5';Scratch[ 9]= '.';Scratch[10]= '0';Scratch[11]=0x00;
; Scratch[12]=0x02;Scratch[13]=0x01;Scratch[14]=0x01;Scratch[15]=0x00;
;
; Scratch[16]=0x02;Scratch[17]=0x00;Scratch[18]=0x02;Scratch[19]=0x60;
; Scratch[20]=0xF4;Scratch[21]=0xF8;Scratch[22]=0xF3;Scratch[23]=0x00;
; Scratch[24]=0x3F;Scratch[25]=0x00;Scratch[26]=0xFF;Scratch[27]=0x00;
; Scratch[28]=0x20;Scratch[29]=0x00;Scratch[30]=0x00;Scratch[31]=0x00;
;
; Scratch[32]=0x00;Scratch[33]=0x00;Scratch[34]=0x00;Scratch[35]=0x00;
; Scratch[36]=0x00;Scratch[37]=0x00;Scratch[38]=0x29;Scratch[39]=0x42;
; Scratch[40]=0xE9;Scratch[41]=0x1D;Scratch[42]=0xC8;
;
; Scratch[54]=0x46;Scratch[55]=0x41;
; Scratch[56]=0x54;Scratch[57]=0x31;Scratch[58]=0x36;Scratch[59]=0x20;
; Scratch[60]=0x20;Scratch[61]=0x20;
;
; Scratch[510]=0x55;Scratch[511]=0xAA;
;
; Sect_Write(0);
; return;
; }
; */
;
; if(Cmd_Ptr) {
; SOURCE LINE # 439
MOV DPTR,#Cmd_Ptr
MOVX A,@DPTR
JZ ?C0033
; printf("Bad command or file name."ENDLINE);
; SOURCE LINE # 440
MOV R3,#0FFH
MOV R2,#HIGH (?SC_307)
MOV R1,#LOW (?SC_307)
LCALL _printf
; Cmd_Help();
; SOURCE LINE # 441
?C0078:
LCALL Cmd_Help
; }
; SOURCE LINE # 442
; }
; SOURCE LINE # 443
?C0033:
RET
L?0083:
MOV R3,#00H
MOV R2,#00H
MOV R1,#00H
LCALL _Str_Token
MOV DPTR,#Token
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
RET
L?0091:
MOV R3,#0FFH
LCALL _Cmd_Match
MOV A,R7
RET
L?0093:
MOV R3,#0FFH
LCALL _Cmd_Match
MOV A,R7
RET
L?0096:
MOV R3,#0FFH
LCALL _Cmd_Match
MOV A,R7
RET
L?0105:
MOV R3,#0FFH
LCALL _Cmd_Match
MOV A,R7
RET
L?0106:
MOV R3,#00H
MOV R2,#00H
MOV R1,#00H
LCALL _Str_Token
RET
; END OF Cmd_Exec
;
; //----------------------------------------------------------------------------
; // Cmd_Step
; //----------------------------------------------------------------------------
; //
; // This is a crank function. In every cycle it checks the interrupt receive
; // flag and starts first action on event.
; //
; // Parameters :
; // Return Value :
; //----------------------------------------------------------------------------
;
; void Cmd_Step()
RSEG ?PR?Cmd_Step?F34X_MSD_CMD
Cmd_Step:
USING 0
; SOURCE LINE # 456
; {
; SOURCE LINE # 457
; xdata char ch;
;
; if(!key_available())
; SOURCE LINE # 460
LCALL key_available
MOV A,R7
JZ ?C0066
?C0065:
; return;
;
; ch=getchar();
; SOURCE LINE # 463
LCALL getchar
MOV DPTR,#ch?652
MOV A,R7
MOVX @DPTR,A
;
; if(ch==BACKSPACE) {
; SOURCE LINE # 465
CJNE R7,#08H,?C0067
; if(Cmd_Ptr) {
; SOURCE LINE # 466
MOV DPTR,#Cmd_Ptr
MOVX A,@DPTR
JZ ?C0066
; Cmd_Ptr--;
; SOURCE LINE # 467
DEC A
MOVX @DPTR,A
; putchar(SPACE);putchar(BACKSPACE);
; SOURCE LINE # 468
MOV R7,#020H
LCALL _putchar
MOV R7,#08H
LJMP _putchar
; }
; SOURCE LINE # 469
; return;
; }
; SOURCE LINE # 471
?C0067:
;
; if(ch==CRLF) { // Execute command
; SOURCE LINE # 473
MOV DPTR,#ch?652
MOVX A,@DPTR
XRL A,#0AH
JNZ ?C0069
; Cmd[Cmd_Ptr]='\0';
; SOURCE LINE # 474
MOV DPTR,#Cmd_Ptr
MOVX A,@DPTR
ADD A,#LOW (Cmd)
MOV DPL,A
CLR A
ADDC A,#HIGH (Cmd)
MOV DPH,A
CLR A
MOVX @DPTR,A
; Cmd_Exec();
; SOURCE LINE # 475
LCALL Cmd_Exec
; memset(Cmd,'\0',MAX_LEN);
; SOURCE LINE # 476
MOV R6,#00H
MOV R7,#020H
MOV R5,#00H
MOV R3,#01H
MOV R2,#HIGH (Cmd)
MOV R1,#LOW (Cmd)
LCALL ?C?MEMSET
; write_current_dir();
; SOURCE LINE # 477
LCALL write_current_dir
; putchar(PROMPT);
; SOURCE LINE # 478
MOV R7,#03EH
LCALL _putchar
; Cmd_Ptr=0;
; SOURCE LINE # 479
CLR A
MOV DPTR,#Cmd_Ptr
MOVX @DPTR,A
RET
; return;
; }
; SOURCE LINE # 481
?C0069:
;
; if(Cmd_Ptr<MAX_LEN-1) {
; SOURCE LINE # 483
MOV DPTR,#Cmd_Ptr
MOVX A,@DPTR
CLR C
SUBB A,#01FH
JNC ?C0066
; Cmd[Cmd_Ptr++]=ch;
; SOURCE LINE # 484
MOV DPTR,#ch?652
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#Cmd_Ptr
MOVX A,@DPTR
MOV R6,A
INC A
MOVX @DPTR,A
MOV A,#LOW (Cmd)
ADD A,R6
MOV DPL,A
CLR A
ADDC A,#HIGH (Cmd)
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
; }
; SOURCE LINE # 485
; }
; SOURCE LINE # 486
?C0066:
RET
; END OF Cmd_Step
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -