📄 cmdproc.src
字号:
; .\cmdproc.SRC generated from: cmdproc.c
; COMPILER INVOKED BY:
; D:\KeilC51\C51\BIN\C51.EXE cmdproc.c ROM(COMPACT) BROWSE DEFINE(evalboard) DEBUG OBJECTEXTEND LISTINCLUDE SYMBOLS SRC(.\cmdproc.SRC)
NAME CMDPROC
?PR?_cmdid_search?CMDPROC SEGMENT CODE INBLOCK
?DT?_cmdid_search?CMDPROC SEGMENT DATA OVERLAYABLE
?PR?_strupr?CMDPROC SEGMENT CODE INBLOCK
?DT?_strupr?CMDPROC SEGMENT DATA OVERLAYABLE
?PR?_cmd_proc?CMDPROC SEGMENT CODE INBLOCK
?DT?_cmd_proc?CMDPROC SEGMENT DATA OVERLAYABLE
?CO?CMDPROC SEGMENT CODE
?C_INITSEG SEGMENT CODE
?PD?CMDPROC SEGMENT XDATA INPAGE
?XD?_cmd_proc?CMDPROC SEGMENT XDATA OVERLAYABLE
EXTRN CODE (_strtotm)
EXTRN DATA (?_strtotm?BYTE)
EXTRN CODE (_clock_set)
EXTRN CODE (_alarm_set)
EXTRN CODE (alarm_clr)
EXTRN CODE (_com_puts)
EXTRN CODE (clock_out_time)
EXTRN CODE (alarm_out_time)
EXTRN CODE (_toupper)
EXTRN CODE (_strcat)
EXTRN DATA (?_strcat?BYTE)
EXTRN CODE (_clock_scan)
EXTRN CODE (_strncpy)
EXTRN DATA (?_strncpy?BYTE)
EXTRN CODE (_strchr)
EXTRN CODE (?C?PLDPTR)
EXTRN CODE (?C?STRCMP)
EXTRN CODE (?C?CLDOPTR)
EXTRN CODE (?C?CLDPTR)
EXTRN CODE (?C?CSTPTR)
EXTRN CODE (?C?STRCPY)
EXTRN CODE (?C?LMUL)
EXTRN CODE (?C?ULDIV)
PUBLIC _cmd_proc
PUBLIC _strupr
RSEG ?DT?_strupr?CMDPROC
?_strupr?BYTE:
src?142: DS 3
ORG 3
s?143: DS 3
RSEG ?DT?_cmd_proc?CMDPROC
?_cmd_proc?BYTE:
cmd?244: DS 3
ORG 6
tm?245: DS 4
ORG 3
argsep?248: DS 3
RSEG ?DT?_cmdid_search?CMDPROC
?_cmdid_search?BYTE:
cmdstr?040: DS 3
ORG 3
ctp?041: DS 3
RSEG ?PD?CMDPROC
cmd_tbl: DS 24
helptext: DS 224
RSEG ?XD?_cmd_proc?CMDPROC
cmdstr_buf?246: DS 41
RSEG ?XD?_cmd_proc?CMDPROC
argstr_buf?247: DS 41
RSEG ?CO?CMDPROC
?SC_0:
DB 'S' ,'T' ,'C' ,'L' ,'K' ,000H
?SC_6:
DB 'R' ,'D' ,'C' ,'L' ,'K' ,000H
?SC_12:
DB 'S' ,'C' ,'C' ,'L' ,'K' ,000H
?SC_18:
DB 'S' ,'T' ,'A' ,'L' ,'M' ,000H
?SC_24:
DB 'R' ,'D' ,'A' ,'L' ,'M' ,000H
?SC_30:
DB 'C' ,'L' ,'A' ,'L' ,'M' ,000H
?SC_36:
DB 'O' ,'N' ,000H
?SC_39:
DB 'O' ,'F' ,'F' ,000H
?SC_43:
DB '0' ,'0' ,000H
RSEG ?C_INITSEG
DB 0A0H
DB 0E0H
DB LOW (helptext)
DB 00DH,00AH,'H' ,'E' ,'L' ,'P' ,':' ,00DH,00AH,'S'
DB 'T' ,'C' ,'L' ,'K' ,' ' ,'h' ,'h' ,'m' ,'m' ,'s'
DB 's' ,' ' ,'-' ,'-' ,' ' ,'S' ,'e' ,'t' ,' ' ,'C'
DB 'l' ,'o' ,'c' ,'k' ,' ' ,'T' ,'i' ,'m' ,'e' ,00DH
DB 00AH,'R' ,'D' ,'C' ,'L' ,'K' ,' ' ,' ' ,' ' ,' '
DB ' ' ,' ' ,' ' ,' ' ,'-' ,'-' ,' ' ,'D' ,'i' ,'s'
DB 'p' ,'l' ,'a' ,'y' ,' ' ,'C' ,'l' ,'o' ,'c' ,'k'
DB ' ' ,'T' ,'i' ,'m' ,'e' ,00DH,00AH,'S' ,'C' ,'C'
DB 'L' ,'K' ,' ' ,'O' ,'N' ,'|' ,'O' ,'F' ,'F' ,' '
DB '-' ,'-' ,' ' ,'D' ,'i' ,'s' ,'p' ,'l' ,'a' ,'y'
DB ' ' ,'C' ,'l' ,'o' ,'c' ,'k' ,' ' ,'T' ,'i' ,'m'
DB 'e' ,' ' ,'E' ,'v' ,'e' ,'r' ,'y' ,' ' ,'S' ,'e'
DB 'c' ,'o' ,'n' ,'d' ,00DH,00AH,'S' ,'T' ,'A' ,'L'
DB 'M' ,' ' ,'h' ,'h' ,'m' ,'m' ,' ' ,' ' ,' ' ,'-'
DB '-' ,' ' ,'S' ,'e' ,'t' ,' ' ,'A' ,'l' ,'a' ,'r'
DB 'm' ,00DH,00AH,'R' ,'D' ,'A' ,'L' ,'M' ,' ' ,' '
DB ' ' ,' ' ,' ' ,' ' ,' ' ,' ' ,'-' ,'-' ,' ' ,'D'
DB 'i' ,'s' ,'p' ,'l' ,'a' ,'y' ,' ' ,'A' ,'l' ,'a'
DB 'r' ,'m' ,' ' ,'T' ,'i' ,'m' ,'e' ,00DH,00AH,'C'
DB 'L' ,'A' ,'L' ,'M' ,' ' ,' ' ,' ' ,' ' ,' ' ,' '
DB ' ' ,' ' ,'-' ,'-' ,' ' ,'C' ,'l' ,'e' ,'a' ,'r'
DB ' ' ,'A' ,'l' ,'a' ,'r' ,'m' ,' ' ,'T' ,'i' ,'m'
DB 'e' ,00DH,00AH,000H
DB 098H
DB LOW (cmd_tbl)
DB 0FFH ; ptr3
DW ?SC_0 ; ptr2
DB 000H
DB 0FFH ; ptr3
DW ?SC_6 ; ptr2
DB 001H
DB 0FFH ; ptr3
DW ?SC_12 ; ptr2
DB 002H
DB 0FFH ; ptr3
DW ?SC_18 ; ptr2
DB 003H
DB 0FFH ; ptr3
DW ?SC_24 ; ptr2
DB 004H
DB 0FFH ; ptr3
DW ?SC_30 ; ptr2
DB 005H
; #include <ctype.h>
; #include <string.h>
; #include "tdp.h"
;
; /* 定义帮助提示 */
; static pdata char helptext [] =
; "\r\n"
; "HELP:\r\n"
; "STCLK hhmmss -- Set Clock Time\r\n"
; "RDCLK -- Display Clock Time\r\n"
; "SCCLK ON|OFF -- Display Clock Time Every Second\r\n"
; "STALM hhmm -- Set Alarm\r\n"
; "RDALM -- Display Alarm Time\r\n"
; "CLALM -- Clear Alarm Time\r\n";
; enum {
; CID_SET_CLK,
; CID_READ_CLK,
; CID_SCAN_CLK,
; CID_SET_ALM,
; CID_READ_ALM,
; CID_CLR_ALM,
; CID_LAST
; };
;
; struct cmd_st {
; const char *cmdstr;
; unsigned char id;
; };
;
; static pdata struct cmd_st cmd_tbl [] = {
; { "STCLK", CID_SET_CLK },
; { "RDCLK", CID_READ_CLK },
; { "SCCLK", CID_SCAN_CLK },
; { "STALM", CID_SET_ALM },
; { "RDALM", CID_READ_ALM },
; { "CLALM", CID_CLR_ALM },
; };
;
; #define CMD_TBL_LEN (sizeof (cmd_tbl) / sizeof (cmd_tbl [0]))
;
; static unsigned char cmdid_search (char *cmdstr) {
RSEG ?PR?_cmdid_search?CMDPROC
_cmdid_search:
USING 0
; SOURCE LINE # 41
MOV cmdstr?040,R3
MOV cmdstr?040+01H,R2
MOV cmdstr?040+02H,R1
; struct cmd_st *ctp;
; for (ctp = cmd_tbl; ctp < &cmd_tbl [CMD_TBL_LEN]; ctp++) {
; SOURCE LINE # 43
MOV ctp?041,#0FEH
MOV ctp?041+01H,#HIGH (cmd_tbl)
MOV ctp?041+02H,#LOW (cmd_tbl)
?C0001:
CLR C
MOV DPTR,#cmd_tbl+018H
MOV A,ctp?041+02H
SUBB A,DPL
MOV A,ctp?041+01H
SUBB A,DPH
?C0028:
JNC ?C0002
; if (strcmp (ctp->cmdstr, cmdstr) == 0)
; SOURCE LINE # 44
MOV R3,ctp?041
MOV R2,ctp?041+01H
MOV R1,ctp?041+02H
LCALL ?C?PLDPTR
MOV R0,AR1
MOV R4,AR2
MOV R5,AR3
MOV R3,cmdstr?040
MOV R2,cmdstr?040+01H
MOV R1,cmdstr?040+02H
LCALL ?C?STRCMP
MOV A,R7
JNZ ?C0003
; return (ctp->id);
; SOURCE LINE # 45
MOV R3,ctp?041
MOV R2,ctp?041+01H
MOV R1,ctp?041+02H
MOV DPTR,#03H
LCALL ?C?CLDOPTR
MOV R7,A
RET
; }
; SOURCE LINE # 46
?C0003:
MOV A,#04H
ADD A,ctp?041+02H
MOV ctp?041+02H,A
CLR A
ADDC A,ctp?041+01H
MOV ctp?041+01H,A
SJMP ?C0001
?C0002:
; return (CID_LAST);
; SOURCE LINE # 47
MOV R7,#06H
; }
; SOURCE LINE # 48
?C0005:
RET
; END OF _cmdid_search
;
; char *strupr ( char *src ) {
RSEG ?PR?_strupr?CMDPROC
_strupr:
USING 0
; SOURCE LINE # 50
MOV src?142,R3
MOV src?142+01H,R2
MOV src?142+02H,R1
; char *s;
; for (s = src; *s != '\0'; s++)
; SOURCE LINE # 52
MOV s?143,R3
MOV s?143+01H,R2
MOV s?143+02H,R1
?C0006:
MOV R3,s?143
MOV R2,s?143+01H
MOV R1,s?143+02H
LCALL ?C?CLDPTR
MOV R7,A
JZ ?C0007
; *s = toupper (*s);
; SOURCE LINE # 53
LCALL _toupper
MOV R3,s?143
MOV R2,s?143+01H
MOV R1,s?143+02H
MOV A,R7
LCALL ?C?CSTPTR
MOV A,#01H
ADD A,s?143+02H
MOV s?143+02H,A
CLR A
ADDC A,s?143+01H
MOV s?143+01H,A
SJMP ?C0006
?C0007:
; return (src);
; SOURCE LINE # 54
MOV R3,src?142
MOV R2,src?142+01H
MOV R1,src?142+02H
; }
; SOURCE LINE # 55
?C0009:
RET
; END OF _strupr
;
; /* 命令处理 */
; void cmd_proc (const char *cmd) {
RSEG ?PR?_cmd_proc?CMDPROC
_cmd_proc:
USING 0
; SOURCE LINE # 58
MOV cmd?244,R3
MOV cmd?244+01H,R2
MOV cmd?244+02H,R1
; xdata char cmdstr_buf [1 + MAX_CMD_LEN];
; xdata char argstr_buf [1 + MAX_CMD_LEN];
; char *argsep;
; unsigned char id;
;
; strncpy (cmdstr_buf, cmd, sizeof (cmdstr_buf) - 1);
; SOURCE LINE # 64
MOV ?_strncpy?BYTE+03H,R3
MOV ?_strncpy?BYTE+04H,R2
MOV ?_strncpy?BYTE+05H,R1
MOV ?_strncpy?BYTE+06H,#00H
MOV ?_strncpy?BYTE+07H,#028H
MOV R3,#01H
MOV R2,#HIGH (cmdstr_buf?246)
MOV R1,#LOW (cmdstr_buf?246)
LCALL _strncpy
; cmdstr_buf [sizeof (cmdstr_buf) - 1] = '\0';
; SOURCE LINE # 65
CLR A
MOV DPTR,#cmdstr_buf?246+028H
MOVX @DPTR,A
; strupr (cmdstr_buf);
; SOURCE LINE # 66
MOV R3,#01H
MOV R2,#HIGH (cmdstr_buf?246)
MOV R1,#LOW (cmdstr_buf?246)
LCALL _strupr
; argsep = strchr (cmdstr_buf, ' ');
; SOURCE LINE # 67
MOV R3,#01H
MOV R2,#HIGH (cmdstr_buf?246)
MOV R1,#LOW (cmdstr_buf?246)
MOV R5,#020H
LCALL _strchr
MOV argsep?248,R3
MOV argsep?248+01H,R2
MOV argsep?248+02H,R1
; if (argsep == NULL) {
; SOURCE LINE # 68
MOV A,R1
ORL A,R2
ORL A,R3
JNZ ?C0010
; argstr_buf [0] = '\0';
; SOURCE LINE # 69
MOV DPTR,#argstr_buf?247
MOVX @DPTR,A
; }
; SOURCE LINE # 70
SJMP ?C0011
?C0010:
; else {
; SOURCE LINE # 71
; strcpy (argstr_buf, argsep + 1);
; SOURCE LINE # 72
MOV R3,argsep?248
MOV A,argsep?248+02H
ADD A,#01H
MOV R1,A
CLR A
ADDC A,argsep?248+01H
MOV R2,A
MOV R0,#LOW (argstr_buf?247)
MOV R4,#HIGH (argstr_buf?247)
MOV R5,#01H
LCALL ?C?STRCPY
; *argsep = '\0';
; SOURCE LINE # 73
MOV R3,argsep?248
MOV R2,argsep?248+01H
MOV R1,argsep?248+02H
CLR A
LCALL ?C?CSTPTR
; }
; SOURCE LINE # 74
?C0011:
; id = cmdid_search (cmdstr_buf);
; SOURCE LINE # 75
MOV R3,#01H
MOV R2,#HIGH (cmdstr_buf?246)
MOV R1,#LOW (cmdstr_buf?246)
LCALL _cmdid_search
;---- Variable 'id?249' assigned to Register 'R7' ----
; switch (id) {
; SOURCE LINE # 76
MOV A,R7
CJNE A,#07H,?C0030
?C0030:
JC $ + 4H
AJMP ?C0027
MOV DPTR,#?C0031
ADD A,ACC
JMP @A+DPTR
?C0031:
AJMP ?C0013
AJMP ?C0016
AJMP ?C0017
AJMP ?C0022
AJMP ?C0024
AJMP ?C0025
AJMP ?_cmd_proc?CMDERR
; unsigned long tm;
; case CID_SET_CLK:
; SOURCE LINE # 78
?C0013:
; if (strtotm (&tm, argstr_buf) != 0)
; SOURCE LINE # 79
MOV ?_strtotm?BYTE+03H,#01H
MOV ?_strtotm?BYTE+04H,#HIGH (argstr_buf?247)
MOV ?_strtotm?BYTE+05H,#LOW (argstr_buf?247)
MOV R3,#00H
MOV R2,#HIGH (tm?245)
MOV R1,#LOW (tm?245)
LCALL _strtotm
MOV A,R7
JZ $ + 4H
AJMP ?_cmd_proc?CMDERR
; goto CMDERR;
; SOURCE LINE # 80
?C0014:
; clock_set (tm * 100);
; SOURCE LINE # 81
CLR A
MOV R7,#064H
MOV R6,A
MOV R5,A
MOV R4,A
MOV R3,tm?245+03H
MOV R2,tm?245+02H
MOV R1,tm?245+01H
MOV R0,tm?245
LCALL ?C?LMUL
LJMP _clock_set
; break;
; SOURCE LINE # 82
; case CID_READ_CLK:
; SOURCE LINE # 83
?C0016:
; clock_out_time ();
; SOURCE LINE # 84
LJMP clock_out_time
; break;
; SOURCE LINE # 85
; case CID_SCAN_CLK:
; SOURCE LINE # 86
?C0017:
; if (strcmp (argstr_buf, "ON") == 0)
; SOURCE LINE # 87
MOV R0,#LOW (argstr_buf?247)
MOV R4,#HIGH (argstr_buf?247)
MOV R5,#01H
MOV R3,#0FFH
MOV R2,#HIGH (?SC_36)
MOV R1,#LOW (?SC_36)
LCALL ?C?STRCMP
MOV A,R7
JNZ ?C0018
; clock_scan (1);
; SOURCE LINE # 88
MOV R7,#01H
SJMP ?C0032
?C0018:
; else if (strcmp (argstr_buf, "OFF") == 0)
; SOURCE LINE # 89
MOV R0,#LOW (argstr_buf?247)
MOV R4,#HIGH (argstr_buf?247)
MOV R5,#01H
MOV R3,#0FFH
MOV R2,#HIGH (?SC_39)
MOV R1,#LOW (?SC_39)
LCALL ?C?STRCMP
MOV A,R7
JNZ ?_cmd_proc?CMDERR
; clock_scan (0);
; SOURCE LINE # 90
MOV R7,A
?C0032:
LJMP _clock_scan
; else
; goto CMDERR;
; SOURCE LINE # 92
; break;
; SOURCE LINE # 93
; case CID_SET_ALM:
; SOURCE LINE # 94
?C0022:
; strcat (argstr_buf, "00");
; SOURCE LINE # 95
MOV ?_strcat?BYTE+03H,#0FFH
MOV ?_strcat?BYTE+04H,#HIGH (?SC_43)
MOV ?_strcat?BYTE+05H,#LOW (?SC_43)
MOV R3,#01H
MOV R2,#HIGH (argstr_buf?247)
MOV R1,#LOW (argstr_buf?247)
LCALL _strcat
; if (strtotm (&tm, argstr_buf) != 0)
; SOURCE LINE # 96
MOV ?_strtotm?BYTE+03H,#01H
MOV ?_strtotm?BYTE+04H,#HIGH (argstr_buf?247)
MOV ?_strtotm?BYTE+05H,#LOW (argstr_buf?247)
MOV R3,#00H
MOV R2,#HIGH (tm?245)
MOV R1,#LOW (tm?245)
LCALL _strtotm
MOV A,R7
JNZ ?_cmd_proc?CMDERR
; goto CMDERR;
; SOURCE LINE # 97
?C0023:
; alarm_set (tm / 60);
; SOURCE LINE # 98
CLR A
MOV R3,#03CH
MOV R2,A
MOV R1,A
MOV R0,A
MOV R7,tm?245+03H
MOV R6,tm?245+02H
MOV R5,tm?245+01H
MOV R4,tm?245
LCALL ?C?ULDIV
LJMP _alarm_set
; break;
; SOURCE LINE # 99
; case CID_READ_ALM:
; SOURCE LINE # 100
?C0024:
; alarm_out_time ();
; SOURCE LINE # 101
LJMP alarm_out_time
; break;
; SOURCE LINE # 102
; case CID_CLR_ALM:
; SOURCE LINE # 103
?C0025:
; alarm_clr ();
; SOURCE LINE # 104
LJMP alarm_clr
; break;
; SOURCE LINE # 105
; case CID_LAST:
; SOURCE LINE # 106
; CMDERR:
; SOURCE LINE # 107
?_cmd_proc?CMDERR:
; com_puts (helptext);
; SOURCE LINE # 108
MOV R3,#0FEH
MOV R2,#HIGH (helptext)
MOV R1,#LOW (helptext)
LCALL _com_puts
; break;
; SOURCE LINE # 109
; }
; SOURCE LINE # 110
; }
; SOURCE LINE # 111
?C0027:
RET
; END OF _cmd_proc
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -