📄 cmdbuild.src
字号:
; .\cmdbuild.SRC generated from: cmdbuild.c
; COMPILER INVOKED BY:
; D:\KeilC51\C51\BIN\C51.EXE cmdbuild.c ROM(COMPACT) BROWSE DEFINE(evalboard) DEBUG OBJECTEXTEND LISTINCLUDE SYMBOLS SRC(.\cmdbuild.SRC)
NAME CMDBUILD
?PR?cmdb_init?CMDBUILD SEGMENT CODE INBLOCK
?PR?cmdb_prompt?CMDBUILD SEGMENT CODE INBLOCK
?PR?cmdb_scan?CMDBUILD SEGMENT CODE INBLOCK
?DT?cmdb_scan?CMDBUILD SEGMENT DATA OVERLAYABLE
?CO?CMDBUILD SEGMENT CODE
?XD?CMDBUILD SEGMENT XDATA
EXTRN CODE (com_getchar)
EXTRN CODE (_com_puts)
EXTRN CODE (_isprint)
EXTRN CODE (_com_putchar)
PUBLIC cmdbuf
PUBLIC cmdndx
PUBLIC cmdb_scan
PUBLIC cmdb_prompt
PUBLIC cmdb_init
RSEG ?DT?cmdb_scan?CMDBUILD
?cmdb_scan?BYTE:
c?240: DS 2
RSEG ?XD?CMDBUILD
cmdndx: DS 1
cmdbuf: DS 41
RSEG ?CO?CMDBUILD
?SC_0:
DB 'C' ,'O' ,'M' ,'M' ,'A' ,'N' ,'D' ,':' ,' ' ,000H
?SC_10:
DB 00DH,00AH,000H
?SC_13:
DB 008H,' ' ,008H,000H
; #include <stdlib.h>
; #include <ctype.h>
; #include "tdp.h"
;
; xdata char cmdbuf [1 + MAX_CMD_LEN];
; xdata unsigned char cmdndx;
;
; /* 初始化 */
; void cmdb_init (void) {
RSEG ?PR?cmdb_init?CMDBUILD
cmdb_init:
; SOURCE LINE # 9
; cmdndx = 0;
; SOURCE LINE # 10
CLR A
MOV DPTR,#cmdndx
MOVX @DPTR,A
; cmdbuf [0] = '\0';
; SOURCE LINE # 11
INC DPTR
MOVX @DPTR,A
; }
; SOURCE LINE # 12
RET
; END OF cmdb_init
;
; /* 命令提示"COMMAND" */
; void cmdb_prompt (void) {
RSEG ?PR?cmdb_prompt?CMDBUILD
cmdb_prompt:
USING 0
; SOURCE LINE # 15
; com_puts ("COMMAND: ");
; SOURCE LINE # 16
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LCALL _com_puts
; com_puts (cmdbuf);
; SOURCE LINE # 17
MOV R3,#01H
MOV R2,#HIGH (cmdbuf)
MOV R1,#LOW (cmdbuf)
LJMP _com_puts
; END OF cmdb_prompt
; }
;
; /* 输入命令扫描 */
; const char *cmdb_scan (void) {
RSEG ?PR?cmdb_scan?CMDBUILD
cmdb_scan:
USING 0
; SOURCE LINE # 21
?C0003:
; int c;
; while (1) {
; SOURCE LINE # 23
; if ((c = com_getchar ()) == -1)
; SOURCE LINE # 24
LCALL com_getchar
MOV c?240,R6
MOV c?240+01H,R7
MOV A,R7
CPL A
JNZ ?C0012
MOV A,R6
CPL A
?C0012:
JZ ?C0004
; break;
; SOURCE LINE # 25
?C0005:
; if (c == '\r') {
; SOURCE LINE # 26
MOV A,c?240+01H
XRL A,#0DH
ORL A,c?240
JNZ ?C0006
; com_puts ("\r\n");
; SOURCE LINE # 27
MOV R3,#0FFH
MOV R2,#HIGH (?SC_10)
MOV R1,#LOW (?SC_10)
LCALL _com_puts
; return (cmdbuf);
; SOURCE LINE # 28
MOV R3,#01H
MOV R2,#HIGH (cmdbuf)
MOV R1,#LOW (cmdbuf)
RET
; }
; SOURCE LINE # 29
?C0006:
; if ((c == '\b') && (cmdndx != 0)) {
; SOURCE LINE # 30
MOV A,c?240+01H
XRL A,#08H
ORL A,c?240
JNZ ?C0008
MOV DPTR,#cmdndx
MOVX A,@DPTR
JZ ?C0008
; com_puts ("\b \b");
; SOURCE LINE # 31
MOV R3,#0FFH
MOV R2,#HIGH (?SC_13)
MOV R1,#LOW (?SC_13)
LCALL _com_puts
; cmdbuf [--cmdndx] = '\0';
; SOURCE LINE # 32
MOV DPTR,#cmdndx
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
; continue;
; SOURCE LINE # 33
SJMP ?C0013
; }
; SOURCE LINE # 34
?C0008:
; if (!isprint (c)) {
; SOURCE LINE # 35
MOV R7,c?240+01H
LCALL _isprint
JC ?C0009
; BEEPCHAR: com_putchar ('\x7');
; SOURCE LINE # 36
?cmdb_scan?BEEPCHAR:
MOV R7,#07H
LCALL _com_putchar
; continue;
; SOURCE LINE # 37
SJMP ?C0003
; }
; SOURCE LINE # 38
?C0009:
; if (cmdndx >= MAX_CMD_LEN)
; SOURCE LINE # 39
MOV DPTR,#cmdndx
MOVX A,@DPTR
CLR C
SUBB A,#028H
JNC ?cmdb_scan?BEEPCHAR
; goto BEEPCHAR;
; SOURCE LINE # 40
?C0011:
; com_putchar (c);
; SOURCE LINE # 41
MOV R7,c?240+01H
LCALL _com_putchar
; cmdbuf [cmdndx++] = (unsigned char) c;
; SOURCE LINE # 42
MOV DPTR,#cmdndx
MOVX A,@DPTR
MOV R6,A
INC A
MOVX @DPTR,A
MOV A,#LOW (cmdbuf)
ADD A,R6
MOV DPL,A
CLR A
ADDC A,#HIGH (cmdbuf)
MOV DPH,A
MOV A,c?240+01H
MOVX @DPTR,A
; cmdbuf [cmdndx] = '\0';
; SOURCE LINE # 43
MOV DPTR,#cmdndx
MOVX A,@DPTR
?C0013:
ADD A,#LOW (cmdbuf)
MOV DPL,A
CLR A
ADDC A,#HIGH (cmdbuf)
MOV DPH,A
CLR A
MOVX @DPTR,A
; }
; SOURCE LINE # 44
AJMP ?C0003
?C0004:
; return (NULL);
; SOURCE LINE # 45
MOV R3,#00H
MOV R2,#00H
MOV R1,#00H
; }
; SOURCE LINE # 46
?C0007:
RET
; END OF cmdb_scan
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -