📄 shell.lis
字号:
00A4 .dbline 53
00A4 ; }
00A4 ; if (strcmp(argv[1],"on")==0)
00A4 20E0 ldi R18,<L23
00A6 30E0 ldi R19,>L23
00A8 FA01 movw R30,R20
00AA 0281 ldd R16,z+2
00AC 1381 ldd R17,z+3
00AE 00D0 rcall _strcmp
00B0 0030 cpi R16,0
00B2 0107 cpc R16,R17
00B4 21F4 brne L29
00B6 X5:
00B6 .dbline 54
00B6 ; sysoption.echo=-1;
00B6 8FEF ldi R24,255
00B8 80930000 sts _sysoption,R24
00BC 03C0 rjmp L30
00BE L29:
00BE .dbline 56
00BE ; else
00BE ; sysoption.echo=0;
00BE 2224 clr R2
00C0 20920000 sts _sysoption,R2
00C4 L30:
00C4 .dbline 57
00C4 ; serial_send(c_ok);
00C4 00910000 lds R16,_c_ok
00C8 10910100 lds R17,_c_ok+1
00CC 00D0 rcall _serial_send
00CE .dbline 58
00CE ; return 0;
00CE 0027 clr R16
00D0 1127 clr R17
00D2 .dbline -2
00D2 L26:
00D2 .dbline 0 ; func end
00D2 00C0 rjmp pop_xgsetF000
00D4 .dbsym r argv 20 ppc
00D4 .dbsym r argc 22 c
00D4 .dbend
00D4 .dbfunc e call _call fI
00D4 ; i -> R22
00D4 ; c -> R22,R23
00D4 ; argv -> R20,R21
00D4 ; argc -> R22
.even
00D4 _call::
00D4 00D0 rcall push_xgsetF000
00D6 A901 movw R20,R18
00D8 602F mov R22,R16
00DA .dbline -1
00DA .dbline 61
00DA ; }
00DA ; int call(char argc,char*argv[])
00DA ; {
00DA .dbline 64
00DA ; char i;
00DA ; char *c;
00DA ; if (sysoption.calling){
00DA 20900100 lds R2,_sysoption+1
00DE 2220 tst R2
00E0 41F0 breq L32
00E2 X6:
00E2 .dbline 64
00E2 .dbline 65
00E2 ; serial_send(c_busying);
00E2 00910000 lds R16,_c_busying
00E6 10910100 lds R17,_c_busying+1
00EA 00D0 rcall _serial_send
00EC .dbline 66
00EC ; return 0;
00EC 0027 clr R16
00EE 1127 clr R17
00F0 41C0 rjmp L31
00F2 L32:
00F2 .dbline 67
00F2 ; };
00F2 .dbline 68
00F2 ; if (argc<2){
00F2 6230 cpi R22,2
00F4 40F4 brsh L35
00F6 X7:
00F6 .dbline 68
00F6 .dbline 69
00F6 ; serial_send(c_error);
00F6 00910000 lds R16,_c_error
00FA 10910100 lds R17,_c_error+1
00FE 00D0 rcall _serial_send
0100 .dbline 70
0100 ; return 0;
0100 0027 clr R16
0102 1127 clr R17
0104 37C0 rjmp L31
0106 L35:
0106 .dbline 72
0106 ; }
0106 ; c=argv[1];
0106 FA01 movw R30,R20
0108 6281 ldd R22,z+2
010A 7381 ldd R23,z+3
010C 13C0 rjmp L38
010E L37:
010E .dbline 73
010E ; while(*c){
010E .dbline 74
010E ; if ((*c<'0')||(*c>'9')) {
010E FB01 movw R30,R22
0110 2080 ldd R2,z+0
0112 3324 clr R3
0114 822D mov R24,R2
0116 8033 cpi R24,48
0118 18F0 brlo L42
011A X8:
011A 89E3 ldi R24,57
011C 8215 cp R24,R2
011E 40F4 brsh L40
0120 X9:
0120 L42:
0120 .dbline 74
0120 .dbline 75
0120 ; serial_send(c_error);
0120 00910000 lds R16,_c_error
0124 10910100 lds R17,_c_error+1
0128 00D0 rcall _serial_send
012A .dbline 76
012A ; return 0;
012A 0027 clr R16
012C 1127 clr R17
012E 22C0 rjmp L31
0130 L40:
0130 .dbline 78
0130 ; }
0130 ; c++;
0130 6F5F subi R22,255 ; offset = 1
0132 7F4F sbci R23,255
0134 .dbline 79
0134 ; }
0134 L38:
0134 .dbline 73
0134 FB01 movw R30,R22
0136 2080 ldd R2,z+0
0138 2220 tst R2
013A 49F7 brne L37
013C X10:
013C .dbline 80
013C ; M8880_Handup;
013C AD9A sbi 0x15,5
013E .dbline 80
013E .dbline 81
013E ; for (i=0;i<10;i++)
013E 6627 clr R22
0140 04C0 rjmp L46
0142 L43:
0142 .dbline 82
0142 ; delay(0xffff);
0142 0FEF ldi R16,65535
0144 1FEF ldi R17,255
0146 00D0 rcall _delay
0148 L44:
0148 .dbline 81
0148 6395 inc R22
014A L46:
014A .dbline 81
014A 6A30 cpi R22,10
014C D0F3 brlo L43
014E X11:
014E .dbline 83
014E ; M8880_CPDial(argv[1]);
014E FA01 movw R30,R20
0150 0281 ldd R16,z+2
0152 1381 ldd R17,z+3
0154 00D0 rcall _M8880_CPDial
0156 .dbline 84
0156 ; sysoption.calling=1;
0156 81E0 ldi R24,1
0158 80930100 sts _sysoption+1,R24
015C .dbline 85
015C ; sysoption.timer=0;
015C 2224 clr R2
015E 20920300 sts _sysoption+3,R2
0162 .dbline 86
0162 ; TCCR1B=0x05;
0162 85E0 ldi R24,5
0164 8EBD out 0x2e,R24
0166 .dbline 87
0166 ; serial_send(calling);
0166 00910000 lds R16,_calling
016A 10910100 lds R17,_calling+1
016E 00D0 rcall _serial_send
0170 .dbline 88
0170 ; return 0;
0170 0027 clr R16
0172 1127 clr R17
0174 .dbline -2
0174 L31:
0174 .dbline 0 ; func end
0174 00C0 rjmp pop_xgsetF000
0176 .dbsym r i 22 c
0176 .dbsym r c 22 pc
0176 .dbsym r argv 20 ppc
0176 .dbsym r argc 22 c
0176 .dbend
0176 .dbfunc e cancel _cancel fI
0176 ; i -> R20
0176 ; argv -> <dead>
0176 ; argc -> <dead>
.even
0176 _cancel::
0176 00D0 rcall push_arg4
0178 4A93 st -y,R20
017A .dbline -1
017A .dbline 91
017A ; }
017A ; int cancel(char argc,char*argv[])
017A ; {
017A .dbline 93
017A ; char i;
017A ; M8880_Handdown;
017A AD98 cbi 0x15,5
017C .dbline 94
017C ; for (i=0;i<10;i++) delay(0xffff);
017C 4427 clr R20
017E 04C0 rjmp L53
0180 L50:
0180 .dbline 94
0180 0FEF ldi R16,65535
0182 1FEF ldi R17,255
0184 00D0 rcall _delay
0186 L51:
0186 .dbline 94
0186 4395 inc R20
0188 L53:
0188 .dbline 94
0188 4A30 cpi R20,10
018A D0F3 brlo L50
018C X12:
018C .dbline 95
018C ; sysoption.calling=0;
018C 2224 clr R2
018E 20920100 sts _sysoption+1,R2
0192 .dbline 96
0192 ; MCUCR&=~0xc;
0192 85B7 in R24,0x35
0194 837F andi R24,243
0196 85BF out 0x35,R24
0198 .dbline 97
0198 ; MCUCR|=0x8;
0198 85B7 in R24,0x35
019A 8860 ori R24,8
019C 85BF out 0x35,R24
019E .dbline 98
019E ; serial_send(c_ok);
019E 00910000 lds R16,_c_ok
01A2 10910100 lds R17,_c_ok+1
01A6 00D0 rcall _serial_send
01A8 .dbline 99
01A8 ; return 0;
01A8 0027 clr R16
01AA 1127 clr R17
01AC .dbline -2
01AC L49:
01AC .dbline 0 ; func end
01AC 4991 ld R20,y+
01AE 2496 adiw R28,4
01B0 0895 ret
01B2 .dbsym r i 20 c
01B2 .dbsym l argv 3 ppc
01B2 .dbsym l argc 1 c
01B2 .dbend
01B2 .dbfunc e help _help fI
01B2 ; i -> R20
01B2 ; argv -> R22,R23
01B2 ; argc -> R10
.even
01B2 _help::
01B2 00D0 rcall push_xgsetF00C
01B4 B901 movw R22,R18
01B6 A02E mov R10,R16
01B8 .dbline -1
01B8 .dbline 102
01B8 ; }
01B8 ; int help(char argc,char* argv[])
01B8 ; {
01B8 .dbline 103
01B8 ; signed char i=0;
01B8 4427 clr R20
01BA .dbline 104
01BA ; if (argc==1){
01BA 8A2D mov R24,R10
01BC 8130 cpi R24,1
01BE 51F5 brne L56
01C0 X13:
01C0 .dbline 104
01C0 1AC0 rjmp L59
01C2 L58:
01C2 .dbline 105
01C2 ; while(InnerCmd[i].cmd){
01C2 .dbline 106
01C2 ; serial_send(InnerCmd[i].cmd);
01C2 06E0 ldi R16,6
01C4 142F mov R17,R20
01C6 0102 muls R16,R17
01C8 F001 movw R30,R0
01CA 80E0 ldi R24,<_InnerCmd
01CC 90E0 ldi R25,>_InnerCmd
01CE E80F add R30,R24
01D0 F91F adc R31,R25
01D2 0081 ldd R16,z+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -