Files

1359 lines
82 KiB
Plaintext

1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 4.2.0 #13081 (Linux)
4 ;--------------------------------------------------------
5 .module cmd
6 .optsdcc -mmcs51 --model-small
7
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl ___memcpy
12 .globl _strlen
13 .globl _memcmp
14 .globl _uart1_read_byte
15 .globl _uart1_rx_available
16 .globl _uart1_send_bytes
17 .globl _EADC
18 .globl _ET1
19 .globl _ET0
20 .globl _ES
21 .globl _EA
22 .globl _REN
23 .globl _RI
24 .globl _TI
25 .globl _TR1
26 .globl _TF1
27 .globl _IT0
28 .globl _IE0
29 .globl _TR0
30 .globl _TF0
31 .globl _CMPCR2
32 .globl _CMPCR1
33 .globl _TA
34 .globl _IRCBAND_REG
35 .globl _IAP_TPS
36 .globl _IAP_CONTR
37 .globl _IAP_TRIG
38 .globl _IAP_CMD
39 .globl _IAP_ADDRL
40 .globl _IAP_ADDRH
41 .globl _IAP_DATA
42 .globl _WDT_CONTR
43 .globl _PCA_PWM3
44 .globl _PCA_PWM2
45 .globl _PCA_PWM1
46 .globl _PCA_PWM0
47 .globl _CCAP3L
48 .globl _CCAP2L
49 .globl _CCAP1L
50 .globl _CCAP0L
51 .globl _CCAPM3
52 .globl _CCAPM2
53 .globl _CCAPM1
54 .globl _CCAPM0
55 .globl _CMOD
56 .globl _CCON
57 .globl _ADCTIM_X
58 .globl _ADCCFG
59 .globl _ADC_RESL
60 .globl _ADC_RES
61 .globl _ADC_CONTR
62 .globl _SPDAT
63 .globl _SPCTL
64 .globl _SPSTAT
65 .globl _IP2H
66 .globl _IP2
67 .globl _IP
68 .globl _IE2
69 .globl _IE
70 .globl _BRT
71 .globl _P_SW1
72 .globl _SADEN
73 .globl _SADDR
74 .globl _S2BUF
75 .globl _S2CON
76 .globl _SBUF
77 .globl _SCON
78 .globl _TM4PS_X
79 .globl _TM3PS_X
80 .globl _TM2PS_X
81 .globl _T4T3M
82 .globl _T4L
83 .globl _T4H
84 .globl _T3L
85 .globl _T3H
86 .globl _T2L
87 .globl _T2H
88 .globl _INTCLKO
89 .globl _AUXR
90 .globl _TH1
91 .globl _TH0
92 .globl _TL1
93 .globl _TL0
94 .globl _TMOD
95 .globl _TCON
96 .globl _P_SW2
97 .globl _P5M0
98 .globl _P5M1
99 .globl _P4M0
100 .globl _P4M1
101 .globl _P3M0
102 .globl _P3M1
103 .globl _P2M0
104 .globl _P2M1
105 .globl _P1M0
106 .globl _P1M1
107 .globl _P0M0
108 .globl _P0M1
109 .globl _PSW
110 .globl _B
111 .globl _ACC
112 .globl _PCON
113 .globl _DPH
114 .globl _DPL
115 .globl _SP
116 .globl _P5
117 .globl _P4
118 .globl _P3
119 .globl _P2
120 .globl _P1
121 .globl _P0
122 .globl _cmd_poll
123 .globl _cmd_feed_byte
124 ;--------------------------------------------------------
125 ; special function registers
126 ;--------------------------------------------------------
127 .area RSEG (ABS,DATA)
000000 128 .org 0x0000
000080 129 _P0 = 0x0080
000090 130 _P1 = 0x0090
0000A0 131 _P2 = 0x00a0
0000B0 132 _P3 = 0x00b0
0000C0 133 _P4 = 0x00c0
0000C8 134 _P5 = 0x00c8
000081 135 _SP = 0x0081
000082 136 _DPL = 0x0082
000083 137 _DPH = 0x0083
000087 138 _PCON = 0x0087
0000E0 139 _ACC = 0x00e0
0000F0 140 _B = 0x00f0
0000D0 141 _PSW = 0x00d0
000093 142 _P0M1 = 0x0093
000094 143 _P0M0 = 0x0094
000091 144 _P1M1 = 0x0091
000092 145 _P1M0 = 0x0092
000095 146 _P2M1 = 0x0095
000096 147 _P2M0 = 0x0096
0000B1 148 _P3M1 = 0x00b1
0000B2 149 _P3M0 = 0x00b2
0000B3 150 _P4M1 = 0x00b3
0000B4 151 _P4M0 = 0x00b4
0000C9 152 _P5M1 = 0x00c9
0000CA 153 _P5M0 = 0x00ca
0000BA 154 _P_SW2 = 0x00ba
000088 155 _TCON = 0x0088
000089 156 _TMOD = 0x0089
00008A 157 _TL0 = 0x008a
00008B 158 _TL1 = 0x008b
00008C 159 _TH0 = 0x008c
00008D 160 _TH1 = 0x008d
00008E 161 _AUXR = 0x008e
00008F 162 _INTCLKO = 0x008f
0000D6 163 _T2H = 0x00d6
0000D7 164 _T2L = 0x00d7
0000D4 165 _T3H = 0x00d4
0000D5 166 _T3L = 0x00d5
0000D2 167 _T4H = 0x00d2
0000D3 168 _T4L = 0x00d3
0000D1 169 _T4T3M = 0x00d1
00FEA1 170 _TM2PS_X = 0xfea1
00FEA2 171 _TM3PS_X = 0xfea2
00FEA3 172 _TM4PS_X = 0xfea3
000098 173 _SCON = 0x0098
000099 174 _SBUF = 0x0099
00009A 175 _S2CON = 0x009a
00009B 176 _S2BUF = 0x009b
0000A9 177 _SADDR = 0x00a9
0000B9 178 _SADEN = 0x00b9
0000A2 179 _P_SW1 = 0x00a2
00009C 180 _BRT = 0x009c
0000A8 181 _IE = 0x00a8
0000AF 182 _IE2 = 0x00af
0000B8 183 _IP = 0x00b8
0000B6 184 _IP2 = 0x00b6
0000B7 185 _IP2H = 0x00b7
0000CD 186 _SPSTAT = 0x00cd
0000CE 187 _SPCTL = 0x00ce
0000CF 188 _SPDAT = 0x00cf
0000BC 189 _ADC_CONTR = 0x00bc
0000BD 190 _ADC_RES = 0x00bd
0000BE 191 _ADC_RESL = 0x00be
0000DE 192 _ADCCFG = 0x00de
00FEA8 193 _ADCTIM_X = 0xfea8
0000D8 194 _CCON = 0x00d8
0000D9 195 _CMOD = 0x00d9
0000DA 196 _CCAPM0 = 0x00da
0000DB 197 _CCAPM1 = 0x00db
0000DC 198 _CCAPM2 = 0x00dc
0000DD 199 _CCAPM3 = 0x00dd
0000EA 200 _CCAP0L = 0x00ea
0000EB 201 _CCAP1L = 0x00eb
0000EC 202 _CCAP2L = 0x00ec
0000ED 203 _CCAP3L = 0x00ed
0000F2 204 _PCA_PWM0 = 0x00f2
0000F3 205 _PCA_PWM1 = 0x00f3
0000F4 206 _PCA_PWM2 = 0x00f4
0000F5 207 _PCA_PWM3 = 0x00f5
0000C1 208 _WDT_CONTR = 0x00c1
0000C2 209 _IAP_DATA = 0x00c2
0000C3 210 _IAP_ADDRH = 0x00c3
0000C4 211 _IAP_ADDRL = 0x00c4
0000C5 212 _IAP_CMD = 0x00c5
0000C6 213 _IAP_TRIG = 0x00c6
0000C7 214 _IAP_CONTR = 0x00c7
0000F7 215 _IAP_TPS = 0x00f7
00009D 216 _IRCBAND_REG = 0x009d
0000AE 217 _TA = 0x00ae
0000E6 218 _CMPCR1 = 0x00e6
0000E7 219 _CMPCR2 = 0x00e7
220 ;--------------------------------------------------------
221 ; special function bits
222 ;--------------------------------------------------------
223 .area RSEG (ABS,DATA)
000000 224 .org 0x0000
00008D 225 _TF0 = 0x008d
00008C 226 _TR0 = 0x008c
000089 227 _IE0 = 0x0089
000088 228 _IT0 = 0x0088
00008F 229 _TF1 = 0x008f
00008E 230 _TR1 = 0x008e
000099 231 _TI = 0x0099
000098 232 _RI = 0x0098
00009C 233 _REN = 0x009c
0000AF 234 _EA = 0x00af
0000AC 235 _ES = 0x00ac
0000A9 236 _ET0 = 0x00a9
0000AB 237 _ET1 = 0x00ab
0000AD 238 _EADC = 0x00ad
239 ;--------------------------------------------------------
240 ; overlayable register banks
241 ;--------------------------------------------------------
242 .area REG_BANK_0 (REL,OVR,DATA)
000000 243 .ds 8
244 ;--------------------------------------------------------
245 ; internal ram data
246 ;--------------------------------------------------------
247 .area DSEG (DATA)
000000 248 _cmd_starts_with_n_65536_34:
000000 249 .ds 1
000001 250 _cmd_extract_parens_PARM_2:
000001 251 .ds 1
000002 252 _cmd_extract_parens_out_65536_37:
000002 253 .ds 3
000005 254 _cmd_extract_parens_len_262144_42:
000005 255 .ds 1
000006 256 _cmd_extract_parens_sloc0_1_0:
000006 257 .ds 3
000009 258 _dec_to_int_PARM_2:
000009 259 .ds 1
00000A 260 _dec_to_int_s_65536_47:
00000A 261 .ds 3
00000D 262 _cmd_feed_byte_p_262144_59:
00000D 263 .ds 16
00001D 264 _cmd_feed_byte_p_262144_67:
00001D 265 .ds 32
00003D 266 _cmd_feed_byte_pl_262144_67:
00003D 267 .ds 1
00003E 268 _cmd_feed_byte_addr_327680_68:
00003E 269 .ds 5
000043 270 _cmd_feed_byte_count_327680_68:
000043 271 .ds 1
000044 272 _cmd_feed_byte_i_327680_68:
000044 273 .ds 1
000045 274 _cmd_feed_byte_p_262144_76:
000045 275 .ds 8
00004D 276 _cmd_feed_byte_sloc0_1_0:
00004D 277 .ds 2
00004F 278 _cmd_feed_byte_sloc1_1_0:
00004F 279 .ds 2
280 ;--------------------------------------------------------
281 ; overlayable items in internal ram
282 ;--------------------------------------------------------
283 .area OSEG (OVR,DATA)
284 ;--------------------------------------------------------
285 ; indirectly addressable internal ram data
286 ;--------------------------------------------------------
287 .area ISEG (DATA)
288 ;--------------------------------------------------------
289 ; absolute internal ram data
290 ;--------------------------------------------------------
291 .area IABS (ABS,DATA)
292 .area IABS (ABS,DATA)
293 ;--------------------------------------------------------
294 ; bit data
295 ;--------------------------------------------------------
296 .area BSEG (BIT)
297 ;--------------------------------------------------------
298 ; paged external ram data
299 ;--------------------------------------------------------
300 .area PSEG (PAG,XDATA)
301 ;--------------------------------------------------------
302 ; external ram data
303 ;--------------------------------------------------------
304 .area XSEG (XDATA)
000000 305 _s_buf:
000000 306 .ds 32
307 ;--------------------------------------------------------
308 ; absolute external ram data
309 ;--------------------------------------------------------
310 .area XABS (ABS,XDATA)
311 ;--------------------------------------------------------
312 ; external initialized ram data
313 ;--------------------------------------------------------
314 .area XISEG (XDATA)
000000 315 _s_len:
000000 316 .ds 1
317 .area HOME (CODE)
318 .area GSINIT0 (CODE)
319 .area GSINIT1 (CODE)
320 .area GSINIT2 (CODE)
321 .area GSINIT3 (CODE)
322 .area GSINIT4 (CODE)
323 .area GSINIT5 (CODE)
324 .area GSINIT (CODE)
325 .area GSFINAL (CODE)
326 .area CSEG (CODE)
327 ;--------------------------------------------------------
328 ; global & static initialisations
329 ;--------------------------------------------------------
330 .area HOME (CODE)
331 .area GSINIT (CODE)
332 .area GSFINAL (CODE)
333 .area GSINIT (CODE)
334 ;--------------------------------------------------------
335 ; Home
336 ;--------------------------------------------------------
337 .area HOME (CODE)
338 .area HOME (CODE)
339 ;--------------------------------------------------------
340 ; code
341 ;--------------------------------------------------------
342 .area CSEG (CODE)
343 ;------------------------------------------------------------
344 ;Allocation info for local variables in function 'cmd_starts_with'
345 ;------------------------------------------------------------
346 ;prefix Allocated to registers r5 r6 r7
347 ;n Allocated with name '_cmd_starts_with_n_65536_34'
348 ;i Allocated to registers r4
349 ;a Allocated to registers r2
350 ;b Allocated to registers r3
351 ;------------------------------------------------------------
352 ; src/cmd.c:19: static uint8_t cmd_starts_with(const char *prefix)
353 ; -----------------------------------------
354 ; function cmd_starts_with
355 ; -----------------------------------------
000000 356 _cmd_starts_with:
000007 357 ar7 = 0x07
000006 358 ar6 = 0x06
000005 359 ar5 = 0x05
000004 360 ar4 = 0x04
000003 361 ar3 = 0x03
000002 362 ar2 = 0x02
000001 363 ar1 = 0x01
000000 364 ar0 = 0x00
365 ; src/cmd.c:21: uint8_t n = strlen(prefix);
000000 AD 82 [24] 366 mov r5,dpl
000002 AE 83 [24] 367 mov r6,dph
000004 AF F0 [24] 368 mov r7,b
000006 C0 07 [24] 369 push ar7
000008 C0 06 [24] 370 push ar6
00000A C0 05 [24] 371 push ar5
00000C 12r00r00 [24] 372 lcall _strlen
00000F AB 82 [24] 373 mov r3,dpl
000011 D0 05 [24] 374 pop ar5
000013 D0 06 [24] 375 pop ar6
000015 D0 07 [24] 376 pop ar7
000017 8B*00 [24] 377 mov _cmd_starts_with_n_65536_34,r3
378 ; src/cmd.c:22: if (s_len < n) return 0;
000019 90r00r00 [24] 379 mov dptr,#_s_len
00001C E0 [24] 380 movx a,@dptr
00001D C3 [12] 381 clr c
00001E 95*00 [12] 382 subb a,_cmd_starts_with_n_65536_34
000020 50 04 [24] 383 jnc 00124$
000022 75 82 00 [24] 384 mov dpl,#0x00
385 ; src/cmd.c:23: for (uint8_t i = 0; i < n; i++) {
000025 22 [24] 386 ret
000026 387 00124$:
000026 7C 00 [12] 388 mov r4,#0x00
000028 389 00113$:
000028 C3 [12] 390 clr c
000029 EC [12] 391 mov a,r4
00002A 95*00 [12] 392 subb a,_cmd_starts_with_n_65536_34
00002C 50 4B [24] 393 jnc 00111$
394 ; src/cmd.c:24: char a = s_buf[i];
00002E EC [12] 395 mov a,r4
00002F 24r00 [12] 396 add a,#_s_buf
000031 F5 82 [12] 397 mov dpl,a
000033 E4 [12] 398 clr a
000034 34s00 [12] 399 addc a,#(_s_buf >> 8)
000036 F5 83 [12] 400 mov dph,a
000038 E0 [24] 401 movx a,@dptr
000039 FA [12] 402 mov r2,a
403 ; src/cmd.c:25: char b = prefix[i];
00003A EC [12] 404 mov a,r4
00003B 2D [12] 405 add a,r5
00003C F8 [12] 406 mov r0,a
00003D E4 [12] 407 clr a
00003E 3E [12] 408 addc a,r6
00003F F9 [12] 409 mov r1,a
000040 8F 03 [24] 410 mov ar3,r7
000042 88 82 [24] 411 mov dpl,r0
000044 89 83 [24] 412 mov dph,r1
000046 8B F0 [24] 413 mov b,r3
000048 12r00r00 [24] 414 lcall __gptrget
00004B FB [12] 415 mov r3,a
416 ; src/cmd.c:26: if (a >= 'a' && a <= 'z') a -= 32;
00004C BA 61 00 [24] 417 cjne r2,#0x61,00151$
00004F 418 00151$:
00004F 40 0B [24] 419 jc 00104$
000051 EA [12] 420 mov a,r2
000052 24 85 [12] 421 add a,#0xff - 0x7a
000054 40 06 [24] 422 jc 00104$
000056 8A 01 [24] 423 mov ar1,r2
000058 E9 [12] 424 mov a,r1
000059 24 E0 [12] 425 add a,#0xe0
00005B FA [12] 426 mov r2,a
00005C 427 00104$:
428 ; src/cmd.c:27: if (b >= 'a' && b <= 'z') b -= 32;
00005C BB 61 00 [24] 429 cjne r3,#0x61,00154$
00005F 430 00154$:
00005F 40 0B [24] 431 jc 00107$
000061 EB [12] 432 mov a,r3
000062 24 85 [12] 433 add a,#0xff - 0x7a
000064 40 06 [24] 434 jc 00107$
000066 8B 01 [24] 435 mov ar1,r3
000068 E9 [12] 436 mov a,r1
000069 24 E0 [12] 437 add a,#0xe0
00006B FB [12] 438 mov r3,a
00006C 439 00107$:
440 ; src/cmd.c:28: if (a != b) return 0;
00006C EA [12] 441 mov a,r2
00006D B5 03 02 [24] 442 cjne a,ar3,00157$
000070 80 04 [24] 443 sjmp 00114$
000072 444 00157$:
000072 75 82 00 [24] 445 mov dpl,#0x00
000075 22 [24] 446 ret
000076 447 00114$:
448 ; src/cmd.c:23: for (uint8_t i = 0; i < n; i++) {
000076 0C [12] 449 inc r4
000077 80 AF [24] 450 sjmp 00113$
000079 451 00111$:
452 ; src/cmd.c:30: return 1;
000079 75 82 01 [24] 453 mov dpl,#0x01
454 ; src/cmd.c:31: }
00007C 22 [24] 455 ret
456 ;------------------------------------------------------------
457 ;Allocation info for local variables in function 'cmd_extract_parens'
458 ;------------------------------------------------------------
459 ;out_max Allocated with name '_cmd_extract_parens_PARM_2'
460 ;out Allocated with name '_cmd_extract_parens_out_65536_37'
461 ;open Allocated to registers r4
462 ;start Allocated to registers r3
463 ;i Allocated to registers r2
464 ;len Allocated with name '_cmd_extract_parens_len_262144_42'
465 ;sloc0 Allocated with name '_cmd_extract_parens_sloc0_1_0'
466 ;------------------------------------------------------------
467 ; src/cmd.c:34: static uint8_t cmd_extract_parens(uint8_t *out, uint8_t out_max)
468 ; -----------------------------------------
469 ; function cmd_extract_parens
470 ; -----------------------------------------
00007D 471 _cmd_extract_parens:
00007D 85 82*02 [24] 472 mov _cmd_extract_parens_out_65536_37,dpl
000080 85 83*03 [24] 473 mov (_cmd_extract_parens_out_65536_37 + 1),dph
000083 85 F0*04 [24] 474 mov (_cmd_extract_parens_out_65536_37 + 2),b
475 ; src/cmd.c:36: uint8_t open = 0, start = 0;
000086 7C 00 [12] 476 mov r4,#0x00
000088 7B 00 [12] 477 mov r3,#0x00
478 ; src/cmd.c:37: for (uint8_t i = 0; i < s_len; i++) {
00008A 7A 00 [12] 479 mov r2,#0x00
00008C 79 00 [12] 480 mov r1,#0x00
00008E 481 00111$:
00008E 90r00r00 [24] 482 mov dptr,#_s_len
000091 E0 [24] 483 movx a,@dptr
000092 F8 [12] 484 mov r0,a
000093 C3 [12] 485 clr c
000094 E9 [12] 486 mov a,r1
000095 98 [12] 487 subb a,r0
000096 40 03 [24] 488 jc 00139$
000098 02r01r11 [24] 489 ljmp 00109$
00009B 490 00139$:
491 ; src/cmd.c:38: if (s_buf[i] == '(') { open = 1; start = i + 1; }
00009B E9 [12] 492 mov a,r1
00009C 24r00 [12] 493 add a,#_s_buf
00009E F5 82 [12] 494 mov dpl,a
0000A0 E4 [12] 495 clr a
0000A1 34s00 [12] 496 addc a,#(_s_buf >> 8)
0000A3 F5 83 [12] 497 mov dph,a
0000A5 E0 [24] 498 movx a,@dptr
0000A6 F8 [12] 499 mov r0,a
0000A7 B8 28 09 [24] 500 cjne r0,#0x28,00107$
0000AA 7C 01 [12] 501 mov r4,#0x01
0000AC 89 07 [24] 502 mov ar7,r1
0000AE EF [12] 503 mov a,r7
0000AF 04 [12] 504 inc a
0000B0 FB [12] 505 mov r3,a
0000B1 80 58 [24] 506 sjmp 00112$
0000B3 507 00107$:
508 ; src/cmd.c:39: else if (s_buf[i] == ')' && open) {
0000B3 B8 29 55 [24] 509 cjne r0,#0x29,00112$
0000B6 EC [12] 510 mov a,r4
0000B7 60 52 [24] 511 jz 00112$
512 ; src/cmd.c:40: uint8_t len = i - start;
0000B9 EA [12] 513 mov a,r2
0000BA C3 [12] 514 clr c
0000BB 9B [12] 515 subb a,r3
0000BC F5*05 [12] 516 mov _cmd_extract_parens_len_262144_42,a
517 ; src/cmd.c:41: if (len > out_max) len = out_max;
0000BE C3 [12] 518 clr c
0000BF E5*01 [12] 519 mov a,_cmd_extract_parens_PARM_2
0000C1 95*05 [12] 520 subb a,_cmd_extract_parens_len_262144_42
0000C3 50 03 [24] 521 jnc 00102$
0000C5 85*01*05 [24] 522 mov _cmd_extract_parens_len_262144_42,_cmd_extract_parens_PARM_2
0000C8 523 00102$:
524 ; src/cmd.c:42: memcpy(out, &s_buf[start], len);
0000C8 85*02*06 [24] 525 mov _cmd_extract_parens_sloc0_1_0,_cmd_extract_parens_out_65536_37
0000CB 85*03*07 [24] 526 mov (_cmd_extract_parens_sloc0_1_0 + 1),(_cmd_extract_parens_out_65536_37 + 1)
0000CE 85*04*08 [24] 527 mov (_cmd_extract_parens_sloc0_1_0 + 2),(_cmd_extract_parens_out_65536_37 + 2)
0000D1 EB [12] 528 mov a,r3
0000D2 24r00 [12] 529 add a,#_s_buf
0000D4 FE [12] 530 mov r6,a
0000D5 E4 [12] 531 clr a
0000D6 34s00 [12] 532 addc a,#(_s_buf >> 8)
0000D8 FF [12] 533 mov r7,a
0000D9 8E*00 [24] 534 mov ___memcpy_PARM_2,r6
0000DB 8F*01 [24] 535 mov (___memcpy_PARM_2 + 1),r7
0000DD 75*02 00 [24] 536 mov (___memcpy_PARM_2 + 2),#0x00
0000E0 85*05*00 [24] 537 mov ___memcpy_PARM_3,_cmd_extract_parens_len_262144_42
0000E3 75*01 00 [24] 538 mov (___memcpy_PARM_3 + 1),#0x00
0000E6 85*06 82 [24] 539 mov dpl,_cmd_extract_parens_sloc0_1_0
0000E9 85*07 83 [24] 540 mov dph,(_cmd_extract_parens_sloc0_1_0 + 1)
0000EC 85*08 F0 [24] 541 mov b,(_cmd_extract_parens_sloc0_1_0 + 2)
0000EF 12r00r00 [24] 542 lcall ___memcpy
543 ; src/cmd.c:43: out[len] = 0;
0000F2 E5*05 [12] 544 mov a,_cmd_extract_parens_len_262144_42
0000F4 25*02 [12] 545 add a,_cmd_extract_parens_out_65536_37
0000F6 FD [12] 546 mov r5,a
0000F7 E4 [12] 547 clr a
0000F8 35*03 [12] 548 addc a,(_cmd_extract_parens_out_65536_37 + 1)
0000FA FE [12] 549 mov r6,a
0000FB AF*04 [24] 550 mov r7,(_cmd_extract_parens_out_65536_37 + 2)
0000FD 8D 82 [24] 551 mov dpl,r5
0000FF 8E 83 [24] 552 mov dph,r6
000101 8F F0 [24] 553 mov b,r7
000103 E4 [12] 554 clr a
000104 12r00r00 [24] 555 lcall __gptrput
556 ; src/cmd.c:44: return len;
000107 85*05 82 [24] 557 mov dpl,_cmd_extract_parens_len_262144_42
00010A 22 [24] 558 ret
00010B 559 00112$:
560 ; src/cmd.c:37: for (uint8_t i = 0; i < s_len; i++) {
00010B 09 [12] 561 inc r1
00010C 89 02 [24] 562 mov ar2,r1
00010E 02r00r8E [24] 563 ljmp 00111$
000111 564 00109$:
565 ; src/cmd.c:47: return 0;
000111 75 82 00 [24] 566 mov dpl,#0x00
567 ; src/cmd.c:48: }
000114 22 [24] 568 ret
569 ;------------------------------------------------------------
570 ;Allocation info for local variables in function 'hex_to_byte'
571 ;------------------------------------------------------------
572 ;s Allocated to registers r5 r6 r7
573 ;v Allocated to registers r4
574 ;i Allocated to registers r3
575 ;c Allocated to registers r2
576 ;------------------------------------------------------------
577 ; src/cmd.c:51: static uint8_t hex_to_byte(const uint8_t *s)
578 ; -----------------------------------------
579 ; function hex_to_byte
580 ; -----------------------------------------
000115 581 _hex_to_byte:
582 ; src/cmd.c:53: uint8_t v = 0;
583 ; src/cmd.c:54: if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) s += 2;
000115 AD 82 [24] 584 mov r5,dpl
000117 AE 83 [24] 585 mov r6,dph
000119 AF F0 [24] 586 mov r7,b
00011B 7C 00 [12] 587 mov r4,#0x00
00011D 12r00r00 [24] 588 lcall __gptrget
000120 FB [12] 589 mov r3,a
000121 BB 30 22 [24] 590 cjne r3,#0x30,00131$
000124 74 01 [12] 591 mov a,#0x01
000126 2D [12] 592 add a,r5
000127 F9 [12] 593 mov r1,a
000128 E4 [12] 594 clr a
000129 3E [12] 595 addc a,r6
00012A FA [12] 596 mov r2,a
00012B 8F 03 [24] 597 mov ar3,r7
00012D 89 82 [24] 598 mov dpl,r1
00012F 8A 83 [24] 599 mov dph,r2
000131 8B F0 [24] 600 mov b,r3
000133 12r00r00 [24] 601 lcall __gptrget
000136 FB [12] 602 mov r3,a
000137 BB 78 02 [24] 603 cjne r3,#0x78,00165$
00013A 80 03 [24] 604 sjmp 00101$
00013C 605 00165$:
00013C BB 58 07 [24] 606 cjne r3,#0x58,00131$
00013F 607 00101$:
00013F 74 02 [12] 608 mov a,#0x02
000141 2D [12] 609 add a,r5
000142 FD [12] 610 mov r5,a
000143 E4 [12] 611 clr a
000144 3E [12] 612 addc a,r6
000145 FE [12] 613 mov r6,a
614 ; src/cmd.c:55: for (uint8_t i = 0; i < 2; i++) {
000146 615 00131$:
000146 7B 00 [12] 616 mov r3,#0x00
000148 617 00118$:
000148 BB 02 00 [24] 618 cjne r3,#0x02,00168$
00014B 619 00168$:
00014B 50 51 [24] 620 jnc 00116$
621 ; src/cmd.c:56: char c = s[i];
00014D EB [12] 622 mov a,r3
00014E 2D [12] 623 add a,r5
00014F F8 [12] 624 mov r0,a
000150 E4 [12] 625 clr a
000151 3E [12] 626 addc a,r6
000152 F9 [12] 627 mov r1,a
000153 8F 02 [24] 628 mov ar2,r7
000155 88 82 [24] 629 mov dpl,r0
000157 89 83 [24] 630 mov dph,r1
000159 8A F0 [24] 631 mov b,r2
00015B 12r00r00 [24] 632 lcall __gptrget
00015E FA [12] 633 mov r2,a
634 ; src/cmd.c:57: v <<= 4;
00015F 8C 01 [24] 635 mov ar1,r4
000161 E9 [12] 636 mov a,r1
000162 C4 [12] 637 swap a
000163 54 F0 [12] 638 anl a,#0xf0
000165 FC [12] 639 mov r4,a
640 ; src/cmd.c:58: if (c >= '0' && c <= '9') v |= (c - '0');
000166 BA 30 00 [24] 641 cjne r2,#0x30,00170$
000169 642 00170$:
000169 40 0E [24] 643 jc 00113$
00016B EA [12] 644 mov a,r2
00016C 24 C6 [12] 645 add a,#0xff - 0x39
00016E 40 09 [24] 646 jc 00113$
000170 8A 01 [24] 647 mov ar1,r2
000172 E9 [12] 648 mov a,r1
000173 24 D0 [12] 649 add a,#0xd0
000175 42 04 [12] 650 orl ar4,a
000177 80 22 [24] 651 sjmp 00119$
000179 652 00113$:
653 ; src/cmd.c:59: else if (c >= 'a' && c <= 'f') v |= (c - 'a' + 10);
000179 BA 61 00 [24] 654 cjne r2,#0x61,00173$
00017C 655 00173$:
00017C 40 0E [24] 656 jc 00109$
00017E EA [12] 657 mov a,r2
00017F 24 99 [12] 658 add a,#0xff - 0x66
000181 40 09 [24] 659 jc 00109$
000183 8A 01 [24] 660 mov ar1,r2
000185 74 A9 [12] 661 mov a,#0xa9
000187 29 [12] 662 add a,r1
000188 42 04 [12] 663 orl ar4,a
00018A 80 0F [24] 664 sjmp 00119$
00018C 665 00109$:
666 ; src/cmd.c:60: else if (c >= 'A' && c <= 'F') v |= (c - 'A' + 10);
00018C BA 41 00 [24] 667 cjne r2,#0x41,00176$
00018F 668 00176$:
00018F 40 0A [24] 669 jc 00119$
000191 EA [12] 670 mov a,r2
000192 24 B9 [12] 671 add a,#0xff - 0x46
000194 40 05 [24] 672 jc 00119$
000196 74 C9 [12] 673 mov a,#0xc9
000198 2A [12] 674 add a,r2
000199 42 04 [12] 675 orl ar4,a
00019B 676 00119$:
677 ; src/cmd.c:55: for (uint8_t i = 0; i < 2; i++) {
00019B 0B [12] 678 inc r3
00019C 80 AA [24] 679 sjmp 00118$
00019E 680 00116$:
681 ; src/cmd.c:62: return v;
00019E 8C 82 [24] 682 mov dpl,r4
683 ; src/cmd.c:63: }
0001A0 22 [24] 684 ret
685 ;------------------------------------------------------------
686 ;Allocation info for local variables in function 'dec_to_int'
687 ;------------------------------------------------------------
688 ;len Allocated with name '_dec_to_int_PARM_2'
689 ;s Allocated with name '_dec_to_int_s_65536_47'
690 ;v Allocated to registers r3 r4
691 ;i Allocated to registers r2
692 ;------------------------------------------------------------
693 ; src/cmd.c:66: static uint16_t dec_to_int(const uint8_t *s, uint8_t len)
694 ; -----------------------------------------
695 ; function dec_to_int
696 ; -----------------------------------------
0001A1 697 _dec_to_int:
0001A1 85 82*0A [24] 698 mov _dec_to_int_s_65536_47,dpl
0001A4 85 83*0B [24] 699 mov (_dec_to_int_s_65536_47 + 1),dph
0001A7 85 F0*0C [24] 700 mov (_dec_to_int_s_65536_47 + 2),b
701 ; src/cmd.c:68: uint16_t v = 0;
0001AA 7B 00 [12] 702 mov r3,#0x00
0001AC 7C 00 [12] 703 mov r4,#0x00
704 ; src/cmd.c:69: for (uint8_t i = 0; i < len; i++) {
0001AE 7A 00 [12] 705 mov r2,#0x00
0001B0 706 00106$:
0001B0 C3 [12] 707 clr c
0001B1 EA [12] 708 mov a,r2
0001B2 95*09 [12] 709 subb a,_dec_to_int_PARM_2
0001B4 50 4D [24] 710 jnc 00104$
711 ; src/cmd.c:70: if (s[i] >= '0' && s[i] <= '9') {
0001B6 EA [12] 712 mov a,r2
0001B7 25*0A [12] 713 add a,_dec_to_int_s_65536_47
0001B9 F8 [12] 714 mov r0,a
0001BA E4 [12] 715 clr a
0001BB 35*0B [12] 716 addc a,(_dec_to_int_s_65536_47 + 1)
0001BD F9 [12] 717 mov r1,a
0001BE AF*0C [24] 718 mov r7,(_dec_to_int_s_65536_47 + 2)
0001C0 88 82 [24] 719 mov dpl,r0
0001C2 89 83 [24] 720 mov dph,r1
0001C4 8F F0 [24] 721 mov b,r7
0001C6 12r00r00 [24] 722 lcall __gptrget
0001C9 FF [12] 723 mov r7,a
0001CA BF 30 00 [24] 724 cjne r7,#0x30,00128$
0001CD 725 00128$:
0001CD 40 31 [24] 726 jc 00107$
0001CF EF [12] 727 mov a,r7
0001D0 24 C6 [12] 728 add a,#0xff - 0x39
0001D2 40 2C [24] 729 jc 00107$
730 ; src/cmd.c:71: v = v * 10 + (s[i] - '0');
0001D4 8B*00 [24] 731 mov __mulint_PARM_2,r3
0001D6 8C*01 [24] 732 mov (__mulint_PARM_2 + 1),r4
0001D8 90 00 0A [24] 733 mov dptr,#0x000a
0001DB C0 07 [24] 734 push ar7
0001DD C0 02 [24] 735 push ar2
0001DF 12r00r00 [24] 736 lcall __mulint
0001E2 AD 82 [24] 737 mov r5,dpl
0001E4 AE 83 [24] 738 mov r6,dph
0001E6 D0 02 [24] 739 pop ar2
0001E8 D0 07 [24] 740 pop ar7
0001EA 8F 01 [24] 741 mov ar1,r7
0001EC 7F 00 [12] 742 mov r7,#0x00
0001EE E9 [12] 743 mov a,r1
0001EF 24 D0 [12] 744 add a,#0xd0
0001F1 F9 [12] 745 mov r1,a
0001F2 EF [12] 746 mov a,r7
0001F3 34 FF [12] 747 addc a,#0xff
0001F5 FF [12] 748 mov r7,a
0001F6 E9 [12] 749 mov a,r1
0001F7 2D [12] 750 add a,r5
0001F8 FD [12] 751 mov r5,a
0001F9 EF [12] 752 mov a,r7
0001FA 3E [12] 753 addc a,r6
0001FB FE [12] 754 mov r6,a
0001FC 8D 03 [24] 755 mov ar3,r5
0001FE 8E 04 [24] 756 mov ar4,r6
000200 757 00107$:
758 ; src/cmd.c:69: for (uint8_t i = 0; i < len; i++) {
000200 0A [12] 759 inc r2
000201 80 AD [24] 760 sjmp 00106$
000203 761 00104$:
762 ; src/cmd.c:74: return v;
000203 8B 82 [24] 763 mov dpl,r3
000205 8C 83 [24] 764 mov dph,r4
765 ; src/cmd.c:75: }
000207 22 [24] 766 ret
767 ;------------------------------------------------------------
768 ;Allocation info for local variables in function 'cmd_poll'
769 ;------------------------------------------------------------
770 ;b Allocated to registers
771 ;------------------------------------------------------------
772 ; src/cmd.c:77: void cmd_poll(void)
773 ; -----------------------------------------
774 ; function cmd_poll
775 ; -----------------------------------------
000208 776 _cmd_poll:
777 ; src/cmd.c:79: while (uart1_rx_available()) {
000208 778 00101$:
000208 12r00r00 [24] 779 lcall _uart1_rx_available
00020B E5 82 [12] 780 mov a,dpl
00020D 60 08 [24] 781 jz 00104$
782 ; src/cmd.c:80: uint8_t b = uart1_read_byte();
00020F 12r00r00 [24] 783 lcall _uart1_read_byte
784 ; src/cmd.c:81: cmd_feed_byte(b);
000212 12r02r18 [24] 785 lcall _cmd_feed_byte
000215 80 F1 [24] 786 sjmp 00101$
000217 787 00104$:
788 ; src/cmd.c:83: }
000217 22 [24] 789 ret
790 ;------------------------------------------------------------
791 ;Allocation info for local variables in function 'cmd_feed_byte'
792 ;------------------------------------------------------------
793 ;b Allocated to registers r7
794 ;p Allocated with name '_cmd_feed_byte_p_262144_59'
795 ;pl Allocated to registers
796 ;matched Allocated to registers r6
797 ;p Allocated with name '_cmd_feed_byte_p_262144_67'
798 ;pl Allocated with name '_cmd_feed_byte_pl_262144_67'
799 ;addr Allocated with name '_cmd_feed_byte_addr_327680_68'
800 ;count Allocated with name '_cmd_feed_byte_count_327680_68'
801 ;i Allocated with name '_cmd_feed_byte_i_327680_68'
802 ;v Allocated to registers r4
803 ;p Allocated with name '_cmd_feed_byte_p_262144_76'
804 ;pl Allocated to registers r5
805 ;v Allocated to registers r5 r6
806 ;sloc0 Allocated with name '_cmd_feed_byte_sloc0_1_0'
807 ;sloc1 Allocated with name '_cmd_feed_byte_sloc1_1_0'
808 ;------------------------------------------------------------
809 ; src/cmd.c:85: void cmd_feed_byte(uint8_t b)
810 ; -----------------------------------------
811 ; function cmd_feed_byte
812 ; -----------------------------------------
000218 813 _cmd_feed_byte:
814 ; src/cmd.c:88: if (b == 0) return;
000218 E5 82 [12] 815 mov a,dpl
00021A FF [12] 816 mov r7,a
00021B 70 01 [24] 817 jnz 00102$
00021D 22 [24] 818 ret
00021E 819 00102$:
820 ; src/cmd.c:91: if (b == '\r' || b == '\n') {
00021E BF 0D 02 [24] 821 cjne r7,#0x0d,00296$
000221 80 08 [24] 822 sjmp 00156$
000223 823 00296$:
000223 BF 0A 02 [24] 824 cjne r7,#0x0a,00297$
000226 80 03 [24] 825 sjmp 00298$
000228 826 00297$:
000228 02r05r23 [24] 827 ljmp 00157$
00022B 828 00298$:
00022B 829 00156$:
830 ; src/cmd.c:92: s_buf[s_len] = 0;
00022B 90r00r00 [24] 831 mov dptr,#_s_len
00022E E0 [24] 832 movx a,@dptr
00022F FE [12] 833 mov r6,a
000230 24r00 [12] 834 add a,#_s_buf
000232 F5 82 [12] 835 mov dpl,a
000234 E4 [12] 836 clr a
000235 34s00 [12] 837 addc a,#(_s_buf >> 8)
000237 F5 83 [12] 838 mov dph,a
000239 E4 [12] 839 clr a
00023A F0 [24] 840 movx @dptr,a
841 ; src/cmd.c:93: if (s_len > 0) {
00023B 90r00r00 [24] 842 mov dptr,#_s_len
00023E E0 [24] 843 movx a,@dptr
00023F 70 03 [24] 844 jnz 00299$
000241 02r05r1D [24] 845 ljmp 00155$
000244 846 00299$:
847 ; src/cmd.c:95: if (cmd_starts_with("MODEL")) {
000244 90r00r05 [24] 848 mov dptr,#___str_0
000247 75 F0 80 [24] 849 mov b,#0x80
00024A 12r00r00 [24] 850 lcall _cmd_starts_with
00024D E5 82 [12] 851 mov a,dpl
00024F 70 03 [24] 852 jnz 00300$
000251 02r03r84 [24] 853 ljmp 00152$
000254 854 00300$:
855 ; src/cmd.c:97: uint8_t pl = cmd_extract_parens(p, 16);
000254 75*01 10 [24] 856 mov _cmd_extract_parens_PARM_2,#0x10
000257 90r00r0D [24] 857 mov dptr,#_cmd_feed_byte_p_262144_59
00025A 75 F0 40 [24] 858 mov b,#0x40
00025D 12r00r7D [24] 859 lcall _cmd_extract_parens
000260 E5 82 [12] 860 mov a,dpl
861 ; src/cmd.c:98: if (pl > 0) {
000262 70 03 [24] 862 jnz 00301$
000264 02r05r1D [24] 863 ljmp 00155$
000267 864 00301$:
865 ; src/cmd.c:100: uint8_t matched = 0;
000267 7E 00 [12] 866 mov r6,#0x00
867 ; src/cmd.c:101: if (memcmp(p, "SBUS", 4) == 0 || memcmp(p, "sbus", 4) == 0) {
000269 75*00r0B [24] 868 mov _memcmp_PARM_2,#___str_1
00026C 75*01s00 [24] 869 mov (_memcmp_PARM_2 + 1),#(___str_1 >> 8)
00026F 75*02 80 [24] 870 mov (_memcmp_PARM_2 + 2),#0x80
000272 75*00 04 [24] 871 mov _memcmp_PARM_3,#0x04
872 ; 1-genFromRTrack replaced mov (_memcmp_PARM_3 + 1),#0x00
000275 8E*01 [24] 873 mov (_memcmp_PARM_3 + 1),r6
000277 90r00r0D [24] 874 mov dptr,#_cmd_feed_byte_p_262144_59
00027A 75 F0 40 [24] 875 mov b,#0x40
00027D C0 06 [24] 876 push ar6
00027F 12r00r00 [24] 877 lcall _memcmp
000282 E5 82 [12] 878 mov a,dpl
000284 85 83 F0 [24] 879 mov b,dph
000287 D0 06 [24] 880 pop ar6
000289 45 F0 [12] 881 orl a,b
00028B 60 25 [24] 882 jz 00110$
00028D 75*00r10 [24] 883 mov _memcmp_PARM_2,#___str_2
000290 75*01s00 [24] 884 mov (_memcmp_PARM_2 + 1),#(___str_2 >> 8)
000293 75*02 80 [24] 885 mov (_memcmp_PARM_2 + 2),#0x80
000296 75*00 04 [24] 886 mov _memcmp_PARM_3,#0x04
000299 75*01 00 [24] 887 mov (_memcmp_PARM_3 + 1),#0x00
00029C 90r00r0D [24] 888 mov dptr,#_cmd_feed_byte_p_262144_59
00029F 75 F0 40 [24] 889 mov b,#0x40
0002A2 C0 06 [24] 890 push ar6
0002A4 12r00r00 [24] 891 lcall _memcmp
0002A7 E5 82 [12] 892 mov a,dpl
0002A9 85 83 F0 [24] 893 mov b,dph
0002AC D0 06 [24] 894 pop ar6
0002AE 45 F0 [12] 895 orl a,b
0002B0 70 0B [24] 896 jnz 00111$
0002B2 897 00110$:
898 ; src/cmd.c:103: model_set_mode(MODE_SBUS);
0002B2 75 82 00 [24] 899 mov dpl,#0x00
0002B5 12r00r00 [24] 900 lcall _model_set_mode
901 ; src/cmd.c:104: matched = 1;
0002B8 7E 01 [12] 902 mov r6,#0x01
0002BA 02r03r63 [24] 903 ljmp 00112$
0002BD 904 00111$:
905 ; src/cmd.c:105: } else if (memcmp(p, "PWM", 3) == 0 || memcmp(p, "pwm", 3) == 0) {
0002BD 75*00r15 [24] 906 mov _memcmp_PARM_2,#___str_3
0002C0 75*01s00 [24] 907 mov (_memcmp_PARM_2 + 1),#(___str_3 >> 8)
0002C3 75*02 80 [24] 908 mov (_memcmp_PARM_2 + 2),#0x80
0002C6 75*00 03 [24] 909 mov _memcmp_PARM_3,#0x03
0002C9 75*01 00 [24] 910 mov (_memcmp_PARM_3 + 1),#0x00
0002CC 90r00r0D [24] 911 mov dptr,#_cmd_feed_byte_p_262144_59
0002CF 75 F0 40 [24] 912 mov b,#0x40
0002D2 C0 06 [24] 913 push ar6
0002D4 12r00r00 [24] 914 lcall _memcmp
0002D7 E5 82 [12] 915 mov a,dpl
0002D9 85 83 F0 [24] 916 mov b,dph
0002DC D0 06 [24] 917 pop ar6
0002DE 45 F0 [12] 918 orl a,b
0002E0 60 25 [24] 919 jz 00106$
0002E2 75*00r19 [24] 920 mov _memcmp_PARM_2,#___str_4
0002E5 75*01s00 [24] 921 mov (_memcmp_PARM_2 + 1),#(___str_4 >> 8)
0002E8 75*02 80 [24] 922 mov (_memcmp_PARM_2 + 2),#0x80
0002EB 75*00 03 [24] 923 mov _memcmp_PARM_3,#0x03
0002EE 75*01 00 [24] 924 mov (_memcmp_PARM_3 + 1),#0x00
0002F1 90r00r0D [24] 925 mov dptr,#_cmd_feed_byte_p_262144_59
0002F4 75 F0 40 [24] 926 mov b,#0x40
0002F7 C0 06 [24] 927 push ar6
0002F9 12r00r00 [24] 928 lcall _memcmp
0002FC E5 82 [12] 929 mov a,dpl
0002FE 85 83 F0 [24] 930 mov b,dph
000301 D0 06 [24] 931 pop ar6
000303 45 F0 [12] 932 orl a,b
000305 70 0A [24] 933 jnz 00107$
000307 934 00106$:
935 ; src/cmd.c:107: model_set_mode(MODE_PWM);
000307 75 82 01 [24] 936 mov dpl,#0x01
00030A 12r00r00 [24] 937 lcall _model_set_mode
938 ; src/cmd.c:108: matched = 1;
00030D 7E 01 [12] 939 mov r6,#0x01
00030F 80 52 [24] 940 sjmp 00112$
000311 941 00107$:
942 ; src/cmd.c:109: } else if (memcmp(p, "UART", 4) == 0 || memcmp(p, "uart", 4) == 0) {
000311 75*00r1D [24] 943 mov _memcmp_PARM_2,#___str_5
000314 75*01s00 [24] 944 mov (_memcmp_PARM_2 + 1),#(___str_5 >> 8)
000317 75*02 80 [24] 945 mov (_memcmp_PARM_2 + 2),#0x80
00031A 75*00 04 [24] 946 mov _memcmp_PARM_3,#0x04
00031D 75*01 00 [24] 947 mov (_memcmp_PARM_3 + 1),#0x00
000320 90r00r0D [24] 948 mov dptr,#_cmd_feed_byte_p_262144_59
000323 75 F0 40 [24] 949 mov b,#0x40
000326 C0 06 [24] 950 push ar6
000328 12r00r00 [24] 951 lcall _memcmp
00032B E5 82 [12] 952 mov a,dpl
00032D 85 83 F0 [24] 953 mov b,dph
000330 D0 06 [24] 954 pop ar6
000332 45 F0 [12] 955 orl a,b
000334 60 25 [24] 956 jz 00103$
000336 75*00r22 [24] 957 mov _memcmp_PARM_2,#___str_6
000339 75*01s00 [24] 958 mov (_memcmp_PARM_2 + 1),#(___str_6 >> 8)
00033C 75*02 80 [24] 959 mov (_memcmp_PARM_2 + 2),#0x80
00033F 75*00 04 [24] 960 mov _memcmp_PARM_3,#0x04
000342 75*01 00 [24] 961 mov (_memcmp_PARM_3 + 1),#0x00
000345 90r00r0D [24] 962 mov dptr,#_cmd_feed_byte_p_262144_59
000348 75 F0 40 [24] 963 mov b,#0x40
00034B C0 06 [24] 964 push ar6
00034D 12r00r00 [24] 965 lcall _memcmp
000350 E5 82 [12] 966 mov a,dpl
000352 85 83 F0 [24] 967 mov b,dph
000355 D0 06 [24] 968 pop ar6
000357 45 F0 [12] 969 orl a,b
000359 70 08 [24] 970 jnz 00112$
00035B 971 00103$:
972 ; src/cmd.c:111: model_set_mode(MODE_UART);
00035B 75 82 02 [24] 973 mov dpl,#0x02
00035E 12r00r00 [24] 974 lcall _model_set_mode
975 ; src/cmd.c:112: matched = 1;
000361 7E 01 [12] 976 mov r6,#0x01
000363 977 00112$:
978 ; src/cmd.c:114: if (matched) uart1_send_bytes("OK\r\n", 4);
000363 EE [12] 979 mov a,r6
000364 60 0F [24] 980 jz 00115$
000366 75*00 04 [24] 981 mov _uart1_send_bytes_PARM_2,#0x04
000369 90r00r27 [24] 982 mov dptr,#___str_7
00036C 75 F0 80 [24] 983 mov b,#0x80
00036F 12r00r00 [24] 984 lcall _uart1_send_bytes
000372 02r05r1D [24] 985 ljmp 00155$
000375 986 00115$:
987 ; src/cmd.c:115: else uart1_send_bytes("ERR\r\n", 5);
000375 75*00 05 [24] 988 mov _uart1_send_bytes_PARM_2,#0x05
000378 90r00r2C [24] 989 mov dptr,#___str_8
00037B 75 F0 80 [24] 990 mov b,#0x80
00037E 12r00r00 [24] 991 lcall _uart1_send_bytes
000381 02r05r1D [24] 992 ljmp 00155$
000384 993 00152$:
994 ; src/cmd.c:117: } else if (cmd_starts_with("ADDR")) {
000384 90r00r32 [24] 995 mov dptr,#___str_9
000387 75 F0 80 [24] 996 mov b,#0x80
00038A 12r00r00 [24] 997 lcall _cmd_starts_with
00038D E5 82 [12] 998 mov a,dpl
00038F 70 03 [24] 999 jnz 00309$
000391 02r04rB6 [24] 1000 ljmp 00149$
000394 1001 00309$:
1002 ; src/cmd.c:119: uint8_t pl = cmd_extract_parens(p, 32);
000394 75*01 20 [24] 1003 mov _cmd_extract_parens_PARM_2,#0x20
000397 90r00r1D [24] 1004 mov dptr,#_cmd_feed_byte_p_262144_67
00039A 75 F0 40 [24] 1005 mov b,#0x40
00039D 12r00r7D [24] 1006 lcall _cmd_extract_parens
0003A0 85 82*3D [24] 1007 mov _cmd_feed_byte_pl_262144_67,dpl
1008 ; src/cmd.c:120: if (pl >= 2) {
0003A3 74 FE [12] 1009 mov a,#0x100 - 0x02
0003A5 25*3D [12] 1010 add a,_cmd_feed_byte_pl_262144_67
0003A7 40 03 [24] 1011 jc 00310$
0003A9 02r05r1D [24] 1012 ljmp 00155$
0003AC 1013 00310$:
1014 ; src/cmd.c:122: uint8_t addr[5] = { 0xE7, 0xE7, 0xE7, 0xE7, 0xC2 };
0003AC 75*3E E7 [24] 1015 mov _cmd_feed_byte_addr_327680_68,#0xe7
0003AF 75*3F E7 [24] 1016 mov (_cmd_feed_byte_addr_327680_68 + 0x0001),#0xe7
0003B2 75*40 E7 [24] 1017 mov (_cmd_feed_byte_addr_327680_68 + 0x0002),#0xe7
0003B5 75*41 E7 [24] 1018 mov (_cmd_feed_byte_addr_327680_68 + 0x0003),#0xe7
0003B8 75*42 C2 [24] 1019 mov (_cmd_feed_byte_addr_327680_68 + 0x0004),#0xc2
1020 ; src/cmd.c:124: uint8_t i = 0;
0003BB 7D 00 [12] 1021 mov r5,#0x00
1022 ; src/cmd.c:125: while (i < pl && count < 5) {
1023 ; 1-genFromRTrack replaced mov _cmd_feed_byte_count_327680_68,#0x00
0003BD 8D*43 [24] 1024 mov _cmd_feed_byte_count_327680_68,r5
0003BF 1025 00132$:
0003BF C3 [12] 1026 clr c
0003C0 ED [12] 1027 mov a,r5
0003C1 95*3D [12] 1028 subb a,_cmd_feed_byte_pl_262144_67
0003C3 40 03 [24] 1029 jc 00311$
0003C5 02r04r8A [24] 1030 ljmp 00134$
0003C8 1031 00311$:
0003C8 74 FB [12] 1032 mov a,#0x100 - 0x05
0003CA 25*43 [12] 1033 add a,_cmd_feed_byte_count_327680_68
0003CC 50 03 [24] 1034 jnc 00312$
0003CE 02r04r8A [24] 1035 ljmp 00134$
0003D1 1036 00312$:
1037 ; src/cmd.c:127: while (i < pl && p[i] == ' ') i++;
0003D1 8D 03 [24] 1038 mov ar3,r5
0003D3 1039 00120$:
0003D3 C3 [12] 1040 clr c
0003D4 EB [12] 1041 mov a,r3
0003D5 95*3D [12] 1042 subb a,_cmd_feed_byte_pl_262144_67
0003D7 50 0C [24] 1043 jnc 00189$
0003D9 EB [12] 1044 mov a,r3
0003DA 24r1D [12] 1045 add a,#_cmd_feed_byte_p_262144_67
0003DC F9 [12] 1046 mov r1,a
0003DD 87 02 [24] 1047 mov ar2,@r1
0003DF BA 20 03 [24] 1048 cjne r2,#0x20,00189$
0003E2 0B [12] 1049 inc r3
0003E3 80 EE [24] 1050 sjmp 00120$
0003E5 1051 00189$:
0003E5 8B*44 [24] 1052 mov _cmd_feed_byte_i_327680_68,r3
1053 ; src/cmd.c:128: if (i + 2 > pl) break;
0003E7 8B*4D [24] 1054 mov _cmd_feed_byte_sloc0_1_0,r3
0003E9 75*4E 00 [24] 1055 mov (_cmd_feed_byte_sloc0_1_0 + 1),#0x00
0003EC 74 02 [12] 1056 mov a,#0x02
0003EE 25*4D [12] 1057 add a,_cmd_feed_byte_sloc0_1_0
0003F0 FA [12] 1058 mov r2,a
0003F1 E4 [12] 1059 clr a
0003F2 35*4E [12] 1060 addc a,(_cmd_feed_byte_sloc0_1_0 + 1)
0003F4 FC [12] 1061 mov r4,a
0003F5 85*3D*4F [24] 1062 mov _cmd_feed_byte_sloc1_1_0,_cmd_feed_byte_pl_262144_67
0003F8 75*50 00 [24] 1063 mov (_cmd_feed_byte_sloc1_1_0 + 1),#0x00
0003FB C3 [12] 1064 clr c
0003FC E5*4F [12] 1065 mov a,_cmd_feed_byte_sloc1_1_0
0003FE 9A [12] 1066 subb a,r2
0003FF E5*50 [12] 1067 mov a,(_cmd_feed_byte_sloc1_1_0 + 1)
000401 64 80 [12] 1068 xrl a,#0x80
000403 8C F0 [24] 1069 mov b,r4
000405 63 F0 80 [24] 1070 xrl b,#0x80
000408 95 F0 [12] 1071 subb a,b
00040A 50 03 [24] 1072 jnc 00316$
00040C 02r04r8A [24] 1073 ljmp 00134$
00040F 1074 00316$:
1075 ; src/cmd.c:131: if (i + 1 < pl && p[i] == '0' && (p[i+1] == 'x' || p[i+1] == 'X')) {
00040F 74 01 [12] 1076 mov a,#0x01
000411 25*4D [12] 1077 add a,_cmd_feed_byte_sloc0_1_0
000413 FA [12] 1078 mov r2,a
000414 E4 [12] 1079 clr a
000415 35*4E [12] 1080 addc a,(_cmd_feed_byte_sloc0_1_0 + 1)
000417 FC [12] 1081 mov r4,a
000418 C3 [12] 1082 clr c
000419 EA [12] 1083 mov a,r2
00041A 95*4F [12] 1084 subb a,_cmd_feed_byte_sloc1_1_0
00041C EC [12] 1085 mov a,r4
00041D 64 80 [12] 1086 xrl a,#0x80
00041F 85*50 F0 [24] 1087 mov b,(_cmd_feed_byte_sloc1_1_0 + 1)
000422 63 F0 80 [24] 1088 xrl b,#0x80
000425 95 F0 [12] 1089 subb a,b
000427 50 3B [24] 1090 jnc 00126$
000429 EB [12] 1091 mov a,r3
00042A 24r1D [12] 1092 add a,#_cmd_feed_byte_p_262144_67
00042C F9 [12] 1093 mov r1,a
00042D 87 04 [24] 1094 mov ar4,@r1
00042F BC 30 32 [24] 1095 cjne r4,#0x30,00126$
000432 EB [12] 1096 mov a,r3
000433 04 [12] 1097 inc a
000434 24r1D [12] 1098 add a,#_cmd_feed_byte_p_262144_67
000436 F9 [12] 1099 mov r1,a
000437 87 04 [24] 1100 mov ar4,@r1
000439 BC 78 02 [24] 1101 cjne r4,#0x78,00320$
00043C 80 0A [24] 1102 sjmp 00125$
00043E 1103 00320$:
00043E EB [12] 1104 mov a,r3
00043F 04 [12] 1105 inc a
000440 24r1D [12] 1106 add a,#_cmd_feed_byte_p_262144_67
000442 F9 [12] 1107 mov r1,a
000443 87 04 [24] 1108 mov ar4,@r1
000445 BC 58 1C [24] 1109 cjne r4,#0x58,00126$
000448 1110 00125$:
1111 ; src/cmd.c:132: v = hex_to_byte(&p[i]);
000448 E5*44 [12] 1112 mov a,_cmd_feed_byte_i_327680_68
00044A 24r1D [12] 1113 add a,#_cmd_feed_byte_p_262144_67
00044C FC [12] 1114 mov r4,a
00044D 7B 00 [12] 1115 mov r3,#0x00
00044F 7A 40 [12] 1116 mov r2,#0x40
000451 8C 82 [24] 1117 mov dpl,r4
000453 8B 83 [24] 1118 mov dph,r3
000455 8A F0 [24] 1119 mov b,r2
000457 12r01r15 [24] 1120 lcall _hex_to_byte
00045A AC 82 [24] 1121 mov r4,dpl
1122 ; src/cmd.c:133: i += 4;
00045C AA*44 [24] 1123 mov r2,_cmd_feed_byte_i_327680_68
00045E 74 04 [12] 1124 mov a,#0x04
000460 2A [12] 1125 add a,r2
000461 FD [12] 1126 mov r5,a
000462 80 1A [24] 1127 sjmp 00127$
000464 1128 00126$:
1129 ; src/cmd.c:135: v = hex_to_byte(&p[i]);
000464 E5*44 [12] 1130 mov a,_cmd_feed_byte_i_327680_68
000466 24r1D [12] 1131 add a,#_cmd_feed_byte_p_262144_67
000468 FA [12] 1132 mov r2,a
000469 7B 00 [12] 1133 mov r3,#0x00
00046B 7E 40 [12] 1134 mov r6,#0x40
00046D 8A 82 [24] 1135 mov dpl,r2
00046F 8B 83 [24] 1136 mov dph,r3
000471 8E F0 [24] 1137 mov b,r6
000473 12r01r15 [24] 1138 lcall _hex_to_byte
000476 AC 82 [24] 1139 mov r4,dpl
1140 ; src/cmd.c:136: i += 2;
000478 AA*44 [24] 1141 mov r2,_cmd_feed_byte_i_327680_68
00047A 74 02 [12] 1142 mov a,#0x02
00047C 2A [12] 1143 add a,r2
00047D FD [12] 1144 mov r5,a
00047E 1145 00127$:
1146 ; src/cmd.c:138: addr[count++] = v;
00047E E5*43 [12] 1147 mov a,_cmd_feed_byte_count_327680_68
000480 24r3E [12] 1148 add a,#_cmd_feed_byte_addr_327680_68
000482 F9 [12] 1149 mov r1,a
000483 05*43 [12] 1150 inc _cmd_feed_byte_count_327680_68
000485 A7 04 [24] 1151 mov @r1,ar4
000487 02r03rBF [24] 1152 ljmp 00132$
00048A 1153 00134$:
1154 ; src/cmd.c:140: if (count == 5) {
00048A 74 05 [12] 1155 mov a,#0x05
00048C B5*43 18 [24] 1156 cjne a,_cmd_feed_byte_count_327680_68,00136$
1157 ; src/cmd.c:142: model_set_address(addr);
00048F 90r00r3E [24] 1158 mov dptr,#_cmd_feed_byte_addr_327680_68
000492 75 F0 40 [24] 1159 mov b,#0x40
000495 12r00r00 [24] 1160 lcall _model_set_address
1161 ; src/cmd.c:143: uart1_send_bytes("OK\r\n", 4);
000498 75*00 04 [24] 1162 mov _uart1_send_bytes_PARM_2,#0x04
00049B 90r00r27 [24] 1163 mov dptr,#___str_7
00049E 75 F0 80 [24] 1164 mov b,#0x80
0004A1 12r00r00 [24] 1165 lcall _uart1_send_bytes
0004A4 02r05r1D [24] 1166 ljmp 00155$
0004A7 1167 00136$:
1168 ; src/cmd.c:145: uart1_send_bytes("ERR_ADDR\r\n", 10);
0004A7 75*00 0A [24] 1169 mov _uart1_send_bytes_PARM_2,#0x0a
0004AA 90r00r37 [24] 1170 mov dptr,#___str_10
0004AD 75 F0 80 [24] 1171 mov b,#0x80
0004B0 12r00r00 [24] 1172 lcall _uart1_send_bytes
0004B3 02r05r1D [24] 1173 ljmp 00155$
0004B6 1174 00149$:
1175 ; src/cmd.c:148: } else if (cmd_starts_with("TUN")) {
0004B6 90r00r42 [24] 1176 mov dptr,#___str_11
0004B9 75 F0 80 [24] 1177 mov b,#0x80
0004BC 12r00r00 [24] 1178 lcall _cmd_starts_with
0004BF E5 82 [12] 1179 mov a,dpl
0004C1 60 4E [24] 1180 jz 00146$
1181 ; src/cmd.c:150: uint8_t pl = cmd_extract_parens(p, 8);
0004C3 75*01 08 [24] 1182 mov _cmd_extract_parens_PARM_2,#0x08
0004C6 90r00r45 [24] 1183 mov dptr,#_cmd_feed_byte_p_262144_76
0004C9 75 F0 40 [24] 1184 mov b,#0x40
0004CC 12r00r7D [24] 1185 lcall _cmd_extract_parens
1186 ; src/cmd.c:151: if (pl > 0) {
0004CF E5 82 [12] 1187 mov a,dpl
0004D1 FE [12] 1188 mov r6,a
0004D2 FD [12] 1189 mov r5,a
0004D3 60 48 [24] 1190 jz 00155$
1191 ; src/cmd.c:152: uint16_t v = dec_to_int(p, pl);
0004D5 8D*09 [24] 1192 mov _dec_to_int_PARM_2,r5
0004D7 90r00r45 [24] 1193 mov dptr,#_cmd_feed_byte_p_262144_76
0004DA 75 F0 40 [24] 1194 mov b,#0x40
0004DD 12r01rA1 [24] 1195 lcall _dec_to_int
0004E0 AD 82 [24] 1196 mov r5,dpl
0004E2 AE 83 [24] 1197 mov r6,dph
1198 ; src/cmd.c:153: if (v <= 125) {
0004E4 8D 03 [24] 1199 mov ar3,r5
0004E6 8E 04 [24] 1200 mov ar4,r6
0004E8 C3 [12] 1201 clr c
0004E9 74 7D [12] 1202 mov a,#0x7d
0004EB 9B [12] 1203 subb a,r3
0004EC E4 [12] 1204 clr a
0004ED 9C [12] 1205 subb a,r4
0004EE 40 13 [24] 1206 jc 00141$
1207 ; src/cmd.c:155: model_set_channel((uint8_t)v);
0004F0 8D 82 [24] 1208 mov dpl,r5
0004F2 12r00r00 [24] 1209 lcall _model_set_channel
1210 ; src/cmd.c:156: uart1_send_bytes("OK\r\n", 4);
0004F5 75*00 04 [24] 1211 mov _uart1_send_bytes_PARM_2,#0x04
0004F8 90r00r27 [24] 1212 mov dptr,#___str_7
0004FB 75 F0 80 [24] 1213 mov b,#0x80
0004FE 12r00r00 [24] 1214 lcall _uart1_send_bytes
000501 80 1A [24] 1215 sjmp 00155$
000503 1216 00141$:
1217 ; src/cmd.c:158: uart1_send_bytes("ERR_RANGE\r\n", 11);
000503 75*00 0B [24] 1218 mov _uart1_send_bytes_PARM_2,#0x0b
000506 90r00r46 [24] 1219 mov dptr,#___str_12
000509 75 F0 80 [24] 1220 mov b,#0x80
00050C 12r00r00 [24] 1221 lcall _uart1_send_bytes
00050F 80 0C [24] 1222 sjmp 00155$
000511 1223 00146$:
1224 ; src/cmd.c:162: uart1_send_bytes("UNK\r\n", 5);
000511 75*00 05 [24] 1225 mov _uart1_send_bytes_PARM_2,#0x05
000514 90r00r52 [24] 1226 mov dptr,#___str_13
000517 75 F0 80 [24] 1227 mov b,#0x80
00051A 12r00r00 [24] 1228 lcall _uart1_send_bytes
00051D 1229 00155$:
1230 ; src/cmd.c:165: s_len = 0;
00051D 90r00r00 [24] 1231 mov dptr,#_s_len
000520 E4 [12] 1232 clr a
000521 F0 [24] 1233 movx @dptr,a
1234 ; src/cmd.c:166: return;
000522 22 [24] 1235 ret
000523 1236 00157$:
1237 ; src/cmd.c:170: if (s_len < CMD_BUF_SIZE - 1) {
000523 90r00r00 [24] 1238 mov dptr,#_s_len
000526 E0 [24] 1239 movx a,@dptr
000527 FE [12] 1240 mov r6,a
000528 BE 1F 00 [24] 1241 cjne r6,#0x1f,00328$
00052B 1242 00328$:
00052B 50 13 [24] 1243 jnc 00160$
1244 ; src/cmd.c:171: s_buf[s_len++] = b;
00052D 90r00r00 [24] 1245 mov dptr,#_s_len
000530 EE [12] 1246 mov a,r6
000531 04 [12] 1247 inc a
000532 F0 [24] 1248 movx @dptr,a
000533 EE [12] 1249 mov a,r6
000534 24r00 [12] 1250 add a,#_s_buf
000536 F5 82 [12] 1251 mov dpl,a
000538 E4 [12] 1252 clr a
000539 34s00 [12] 1253 addc a,#(_s_buf >> 8)
00053B F5 83 [12] 1254 mov dph,a
00053D EF [12] 1255 mov a,r7
00053E F0 [24] 1256 movx @dptr,a
00053F 22 [24] 1257 ret
000540 1258 00160$:
1259 ; src/cmd.c:174: s_len = 0;
000540 90r00r00 [24] 1260 mov dptr,#_s_len
000543 E4 [12] 1261 clr a
000544 F0 [24] 1262 movx @dptr,a
1263 ; src/cmd.c:176: }
000545 22 [24] 1264 ret
1265 .area CSEG (CODE)
1266 .area CONST (CODE)
000000 1267 _DEFAULT_ADDR:
000000 E7 1268 .db #0xe7 ; 231
000001 E7 1269 .db #0xe7 ; 231
000002 E7 1270 .db #0xe7 ; 231
000003 E7 1271 .db #0xe7 ; 231
000004 C2 1272 .db #0xc2 ; 194
1273 .area CONST (CODE)
000005 1274 ___str_0:
000005 4D 4F 44 45 4C 1275 .ascii "MODEL"
00000A 00 1276 .db 0x00
1277 .area CSEG (CODE)
1278 .area CONST (CODE)
00000B 1279 ___str_1:
00000B 53 42 55 53 1280 .ascii "SBUS"
00000F 00 1281 .db 0x00
1282 .area CSEG (CODE)
1283 .area CONST (CODE)
000010 1284 ___str_2:
000010 73 62 75 73 1285 .ascii "sbus"
000014 00 1286 .db 0x00
1287 .area CSEG (CODE)
1288 .area CONST (CODE)
000015 1289 ___str_3:
000015 50 57 4D 1290 .ascii "PWM"
000018 00 1291 .db 0x00
1292 .area CSEG (CODE)
1293 .area CONST (CODE)
000019 1294 ___str_4:
000019 70 77 6D 1295 .ascii "pwm"
00001C 00 1296 .db 0x00
1297 .area CSEG (CODE)
1298 .area CONST (CODE)
00001D 1299 ___str_5:
00001D 55 41 52 54 1300 .ascii "UART"
000021 00 1301 .db 0x00
1302 .area CSEG (CODE)
1303 .area CONST (CODE)
000022 1304 ___str_6:
000022 75 61 72 74 1305 .ascii "uart"
000026 00 1306 .db 0x00
1307 .area CSEG (CODE)
1308 .area CONST (CODE)
000027 1309 ___str_7:
000027 4F 4B 1310 .ascii "OK"
000029 0D 1311 .db 0x0d
00002A 0A 1312 .db 0x0a
00002B 00 1313 .db 0x00
1314 .area CSEG (CODE)
1315 .area CONST (CODE)
00002C 1316 ___str_8:
00002C 45 52 52 1317 .ascii "ERR"
00002F 0D 1318 .db 0x0d
000030 0A 1319 .db 0x0a
000031 00 1320 .db 0x00
1321 .area CSEG (CODE)
1322 .area CONST (CODE)
000032 1323 ___str_9:
000032 41 44 44 52 1324 .ascii "ADDR"
000036 00 1325 .db 0x00
1326 .area CSEG (CODE)
1327 .area CONST (CODE)
000037 1328 ___str_10:
000037 45 52 52 5F 41 44 44 1329 .ascii "ERR_ADDR"
52
00003F 0D 1330 .db 0x0d
000040 0A 1331 .db 0x0a
000041 00 1332 .db 0x00
1333 .area CSEG (CODE)
1334 .area CONST (CODE)
000042 1335 ___str_11:
000042 54 55 4E 1336 .ascii "TUN"
000045 00 1337 .db 0x00
1338 .area CSEG (CODE)
1339 .area CONST (CODE)
000046 1340 ___str_12:
000046 45 52 52 5F 52 41 4E 1341 .ascii "ERR_RANGE"
47 45
00004F 0D 1342 .db 0x0d
000050 0A 1343 .db 0x0a
000051 00 1344 .db 0x00
1345 .area CSEG (CODE)
1346 .area CONST (CODE)
000052 1347 ___str_13:
000052 55 4E 4B 1348 .ascii "UNK"
000055 0D 1349 .db 0x0d
000056 0A 1350 .db 0x0a
000057 00 1351 .db 0x00
1352 .area CSEG (CODE)
1353 .area XINIT (CODE)
000000 1354 __xinit__s_len:
000000 00 1355 .db #0x00 ; 0
1356 .area CABS (ABS,CODE)