📄 shell.lis
字号:
.module shell.c
.area text(rom, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\shell.c
.area data(ram, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\shell.c
0000 _InnerCmd::
0000 .blkw 1
.area idata
0000 2501 .word L1
.area data(ram, con, rel)
0002 .dbfile E:\Shuaihu\AVR\8880\shell.c
0002 .blkw 1
.area idata
0002 0A01 .word L2
.area data(ram, con, rel)
0004 .dbfile E:\Shuaihu\AVR\8880\shell.c
0004 .blkw 1
.area idata
0004 0A00 .word PL_help
.area data(ram, con, rel)
0006 .dbfile E:\Shuaihu\AVR\8880\shell.c
0006 .blkw 1
.area idata
0006 0501 .word L3
.area data(ram, con, rel)
0008 .dbfile E:\Shuaihu\AVR\8880\shell.c
0008 .blkw 1
.area idata
0008 E000 .word L4
.area data(ram, con, rel)
000A .dbfile E:\Shuaihu\AVR\8880\shell.c
000A .blkw 1
.area idata
000A 0800 .word PL_call
.area data(ram, con, rel)
000C .dbfile E:\Shuaihu\AVR\8880\shell.c
000C .blkw 1
.area idata
000C D900 .word L5
.area data(ram, con, rel)
000E .dbfile E:\Shuaihu\AVR\8880\shell.c
000E .blkw 1
.area idata
000E C100 .word L6
.area data(ram, con, rel)
0010 .dbfile E:\Shuaihu\AVR\8880\shell.c
0010 .blkw 1
.area idata
0010 0600 .word PL_cancel
.area data(ram, con, rel)
0012 .dbfile E:\Shuaihu\AVR\8880\shell.c
0012 .blkw 1
.area idata
0012 BC00 .word L7
.area data(ram, con, rel)
0014 .dbfile E:\Shuaihu\AVR\8880\shell.c
0014 .blkw 1
.area idata
0014 A100 .word L8
.area data(ram, con, rel)
0016 .dbfile E:\Shuaihu\AVR\8880\shell.c
0016 .blkw 1
.area idata
0016 0400 .word PL_echo
.area data(ram, con, rel)
0018 .dbfile E:\Shuaihu\AVR\8880\shell.c
0018 .blkw 1
.area idata
0018 9C00 .word L9
.area data(ram, con, rel)
001A .dbfile E:\Shuaihu\AVR\8880\shell.c
001A .blkw 1
.area idata
001A 8000 .word L10
.area data(ram, con, rel)
001C .dbfile E:\Shuaihu\AVR\8880\shell.c
001C .blkw 1
.area idata
001C 0200 .word PL_read
.area data(ram, con, rel)
001E .dbfile E:\Shuaihu\AVR\8880\shell.c
001E .blkw 1
.area idata
001E 7500 .word L11
.area data(ram, con, rel)
0020 .dbfile E:\Shuaihu\AVR\8880\shell.c
0020 .blkw 1
.area idata
0020 5700 .word L12
.area data(ram, con, rel)
0022 .dbfile E:\Shuaihu\AVR\8880\shell.c
0022 .blkw 1
.area idata
0022 0000 .word PL_autoanswer
.area data(ram, con, rel)
0024 .dbfile E:\Shuaihu\AVR\8880\shell.c
0024 .blkb 2
.area idata
0024 0000 .word 0
.area data(ram, con, rel)
0026 .dbfile E:\Shuaihu\AVR\8880\shell.c
0026 .blkb 2
.area idata
0026 0000 .word 0
.area data(ram, con, rel)
0028 .dbfile E:\Shuaihu\AVR\8880\shell.c
0028 .blkb 2
.area idata
0028 0000 .byte 0,0
.area data(ram, con, rel)
002A .dbfile E:\Shuaihu\AVR\8880\shell.c
002A .dbstruct 0 6 tagCMDSTRUCT
002A .dbfield 0 cmd pc
002A .dbfield 2 help pc
002A .dbfield 4 proc pfI
002A .dbend
002A .dbsym e InnerCmd _InnerCmd A[42:7]S[tagCMDSTRUCT]
.area text(rom, con, rel)
0000 .dbfile E:\Shuaihu\AVR\8880\shell.c
0000 .dbfunc e read _read fI
0000 ; x -> R10,R11
0000 ; buf -> y+0
0000 ; argv -> R22,R23
0000 ; argc -> R20
.even
0000 _read::
0000 00D0 rcall push_xgsetF00C
0002 B901 movw R22,R18
0004 402F mov R20,R16
0006 EF97 sbiw R28,63
0008 A597 sbiw R28,37 ; offset = 100
000A .dbline -1
000A .dbline 24
000A ; #include "serial.h"
000A ; #include "string.h"
000A ; #include "8880.h"
000A ; #include <iom8v.h>
000A ; #include "main.h"
000A ; #include "shell.h"
000A ; typedef int (*cmdproc)(char argc,char *argv[]);
000A ; typedef struct tagCMDSTRUCT{
000A ; char *cmd;
000A ; char *help;
000A ; cmdproc proc;
000A ; }CMD_STRUCT,*PCMD_STRUCT;
000A ; signed char GetCmdMatch(char * cmd);
000A ; CMD_STRUCT InnerCmd[]={
000A ; {"help","Desplay this information.\n",help},
000A ; {"call","call a telphon number,uses:call 110\n",call},
000A ; {"cancel","cancel a call process.\n", cancel},
000A ; {"echo","enable or disenable echo.\n",echo},
000A ; {"read","read a number from remote.\n",read},
000A ; {"autoanswer","auto answer the remote call.\n",autoanswer},
000A ; {0,0}
000A ; };
000A ; int read(char argc,char*argv[])
000A ; {
000A .dbline 26
000A ; char buf[100];
000A ; int x=atoi(argv[1]);
000A FB01 movw R30,R22
000C 0281 ldd R16,z+2
000E 1381 ldd R17,z+3
0010 00D0 rcall _atoi
0012 5801 movw R10,R16
0014 .dbline 27
0014 ; if ((argc<2)||(!sysoption.calling)) {
0014 4230 cpi R20,2
0016 20F0 brlo L17
0018 X0:
0018 20900100 lds R2,_sysoption+1
001C 2220 tst R2
001E 41F4 brne L14
0020 X1:
0020 L17:
0020 .dbline 27
0020 .dbline 28
0020 ; serial_send(c_error);
0020 00910000 lds R16,_c_error
0024 10910100 lds R17,_c_error+1
0028 00D0 rcall _serial_send
002A .dbline 29
002A ; return 0;
002A 0027 clr R16
002C 1127 clr R17
002E 05C0 rjmp L13
0030 L14:
0030 .dbline 31
0030 ; }
0030 ; M8880_Recv(buf,x);
0030 2A2D mov R18,R10
0032 8E01 movw R16,R28
0034 00D0 rcall _M8880_Recv
0036 .dbline 32
0036 ; serial_send(buf);
0036 8E01 movw R16,R28
0038 00D0 rcall _serial_send
003A .dbline -2
003A L13:
003A .dbline 0 ; func end
003A EF96 adiw R28,63
003C A596 adiw R28,37 ; offset = 100
003E 00C0 rjmp pop_xgsetF00C
0040 .dbsym r x 10 I
0040 .dbsym l buf 0 A[100:100]c
0040 .dbsym r argv 22 ppc
0040 .dbsym r argc 20 c
0040 .dbend
0040 .dbfunc e autoanswer _autoanswer fI
0040 ; argv -> R20,R21
0040 ; argc -> R22
.even
0040 _autoanswer::
0040 00D0 rcall push_xgsetF000
0042 A901 movw R20,R18
0044 602F mov R22,R16
0046 .dbline -1
0046 .dbline 35
0046 ; }
0046 ; int autoanswer(char argc,char*argv[])
0046 ; {
0046 .dbline 36
0046 ; if (argc<2){
0046 6230 cpi R22,2
0048 40F4 brsh L19
004A X2:
004A .dbline 36
004A .dbline 37
004A ; serial_send(c_error);
004A 00910000 lds R16,_c_error
004E 10910100 lds R17,_c_error+1
0052 00D0 rcall _serial_send
0054 .dbline 38
0054 ; return 0;
0054 0027 clr R16
0056 1127 clr R17
0058 17C0 rjmp L18
005A L19:
005A .dbline 40
005A ; }
005A ; if (strcmp(argv[1],"on")==0)
005A 20E0 ldi R18,<L23
005C 30E0 ldi R19,>L23
005E FA01 movw R30,R20
0060 0281 ldd R16,z+2
0062 1381 ldd R17,z+3
0064 00D0 rcall _strcmp
0066 0030 cpi R16,0
0068 0107 cpc R16,R17
006A 21F4 brne L21
006C X3:
006C .dbline 41
006C ; sysoption.autoanswer=-1;
006C 8FEF ldi R24,255
006E 80930400 sts _sysoption+4,R24
0072 03C0 rjmp L22
0074 L21:
0074 .dbline 43
0074 ; else
0074 ; sysoption.autoanswer=0;
0074 2224 clr R2
0076 20920400 sts _sysoption+4,R2
007A L22:
007A .dbline 44
007A ; serial_send(c_ok);
007A 00910000 lds R16,_c_ok
007E 10910100 lds R17,_c_ok+1
0082 00D0 rcall _serial_send
0084 .dbline 45
0084 ; return 0;
0084 0027 clr R16
0086 1127 clr R17
0088 .dbline -2
0088 L18:
0088 .dbline 0 ; func end
0088 00C0 rjmp pop_xgsetF000
008A .dbsym r argv 20 ppc
008A .dbsym r argc 22 c
008A .dbend
008A .dbfunc e echo _echo fI
008A ; argv -> R20,R21
008A ; argc -> R22
.even
008A _echo::
008A 00D0 rcall push_xgsetF000
008C A901 movw R20,R18
008E 602F mov R22,R16
0090 .dbline -1
0090 .dbline 48
0090 ; }
0090 ; int echo(char argc,char*argv[])
0090 ; {
0090 .dbline 49
0090 ; if (argc<2){
0090 6230 cpi R22,2
0092 40F4 brsh L27
0094 X4:
0094 .dbline 49
0094 .dbline 50
0094 ; serial_send(c_error);
0094 00910000 lds R16,_c_error
0098 10910100 lds R17,_c_error+1
009C 00D0 rcall _serial_send
009E .dbline 51
009E ; return 0;
009E 0027 clr R16
00A0 1127 clr R17
00A2 17C0 rjmp L26
00A4 L27:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -