abse/smart-ring-flex
A tscircuit package created by abse.
- Version
- 0.0.24
- License
- unset
- Stars
- 0
firmware/onboard-programmer/ring-service-candidate/dap.lst
1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 4.2.0 #13081 (Linux)
4 ;--------------------------------------------------------
5 .module dap
6 .optsdcc -mmcs51 --model-small
7
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _SWD_Transfer
12 .globl _SWD_Sequence
13 .globl _SWJ_Sequence
14 .globl _ring_probe_reset
15 .globl _ring_probe_enable
16 .globl _DLY_us
17 .globl _strcpy
18 .globl _PP37
19 .globl _PP36
20 .globl _PP35
21 .globl _PP34
22 .globl _PP33
23 .globl _PP32
24 .globl _PP31
25 .globl _PP30
26 .globl _PP17
27 .globl _PP16
28 .globl _PP15
29 .globl _PP14
30 .globl _PP13
31 .globl _PP12
32 .globl _PP11
33 .globl _PP10
34 .globl _UIF_BUS_RST
35 .globl _UIF_DETECT
36 .globl _UIF_TRANSFER
37 .globl _UIF_SUSPEND
38 .globl _UIF_HST_SOF
39 .globl _UIF_FIFO_OV
40 .globl _U_SIE_FREE
41 .globl _U_TOG_OK
42 .globl _U_IS_NAK
43 .globl _ADC_CHAN0
44 .globl _ADC_CHAN1
45 .globl _CMP_CHAN
46 .globl _ADC_START
47 .globl _ADC_IF
48 .globl _CMP_IF
49 .globl _CMPO
50 .globl _U1RI
51 .globl _U1TI
52 .globl _U1RB8
53 .globl _U1TB8
54 .globl _U1REN
55 .globl _U1SMOD
56 .globl _U1SM0
57 .globl _S0_R_FIFO
58 .globl _S0_T_FIFO
59 .globl _S0_FREE
60 .globl _S0_IF_BYTE
61 .globl _S0_IF_FIRST
62 .globl _S0_IF_OV
63 .globl _S0_FST_ACT
64 .globl _CP_RL2
65 .globl _C_T2
66 .globl _TR2
67 .globl _EXEN2
68 .globl _TCLK
69 .globl _RCLK
70 .globl _EXF2
71 .globl _CAP1F
72 .globl _TF2
73 .globl _RI
74 .globl _TI
75 .globl _RB8
76 .globl _TB8
77 .globl _REN
78 .globl _SM2
79 .globl _SM1
80 .globl _SM0
81 .globl _IT0
82 .globl _IE0
83 .globl _IT1
84 .globl _IE1
85 .globl _TR0
86 .globl _TF0
87 .globl _TR1
88 .globl _TF1
89 .globl _RXD
90 .globl _PWM1_
91 .globl _TXD
92 .globl _PWM2_
93 .globl _AIN3
94 .globl _VBUS1
95 .globl _INT0
96 .globl _TXD1_
97 .globl _INT1
98 .globl _T0
99 .globl _RXD1_
100 .globl _PWM2
101 .globl _T1
102 .globl _UDP
103 .globl _UDM
104 .globl _TIN0
105 .globl _CAP1
106 .globl _T2
107 .globl _AIN0
108 .globl _VBUS2
109 .globl _TIN1
110 .globl _CAP2
111 .globl _T2EX
112 .globl _RXD_
113 .globl _TXD_
114 .globl _AIN1
115 .globl _UCC1
116 .globl _TIN2
117 .globl _SCS
118 .globl _CAP1_
119 .globl _T2_
120 .globl _AIN2
121 .globl _UCC2
122 .globl _TIN3
123 .globl _PWM1
124 .globl _MOSI
125 .globl _TIN4
126 .globl _RXD1
127 .globl _MISO
128 .globl _TIN5
129 .globl _TXD1
130 .globl _SCK
131 .globl _IE_SPI0
132 .globl _IE_TKEY
133 .globl _IE_USB
134 .globl _IE_ADC
135 .globl _IE_UART1
136 .globl _IE_PWMX
137 .globl _IE_GPIO
138 .globl _IE_WDOG
139 .globl _PX0
140 .globl _PT0
141 .globl _PX1
142 .globl _PT1
143 .globl _PS
144 .globl _PT2
145 .globl _PL_FLAG
146 .globl _PH_FLAG
147 .globl _EX0
148 .globl _ET0
149 .globl _EX1
150 .globl _ET1
151 .globl _ES
152 .globl _ET2
153 .globl _E_DIS
154 .globl _EA
155 .globl _P
156 .globl _F1
157 .globl _OV
158 .globl _RS0
159 .globl _RS1
160 .globl _F0
161 .globl _AC
162 .globl _CY
163 .globl _UEP1_DMA_H
164 .globl _UEP1_DMA_L
165 .globl _UEP1_DMA
166 .globl _UEP0_DMA_H
167 .globl _UEP0_DMA_L
168 .globl _UEP0_DMA
169 .globl _UEP2_3_MOD
170 .globl _UEP4_1_MOD
171 .globl _UEP3_DMA_H
172 .globl _UEP3_DMA_L
173 .globl _UEP3_DMA
174 .globl _UEP2_DMA_H
175 .globl _UEP2_DMA_L
176 .globl _UEP2_DMA
177 .globl _USB_DEV_AD
178 .globl _USB_CTRL
179 .globl _USB_INT_EN
180 .globl _UEP4_T_LEN
181 .globl _UEP4_CTRL
182 .globl _UEP0_T_LEN
183 .globl _UEP0_CTRL
184 .globl _USB_RX_LEN
185 .globl _USB_MIS_ST
186 .globl _USB_INT_ST
187 .globl _USB_INT_FG
188 .globl _UEP3_T_LEN
189 .globl _UEP3_CTRL
190 .globl _UEP2_T_LEN
191 .globl _UEP2_CTRL
192 .globl _UEP1_T_LEN
193 .globl _UEP1_CTRL
194 .globl _UDEV_CTRL
195 .globl _USB_C_CTRL
196 .globl _TKEY_DATH
197 .globl _TKEY_DATL
198 .globl _TKEY_DAT
199 .globl _TKEY_CTRL
200 .globl _ADC_DATA
201 .globl _ADC_CFG
202 .globl _ADC_CTRL
203 .globl _SBAUD1
204 .globl _SBUF1
205 .globl _SCON1
206 .globl _SPI0_SETUP
207 .globl _SPI0_CK_SE
208 .globl _SPI0_CTRL
209 .globl _SPI0_DATA
210 .globl _SPI0_STAT
211 .globl _PWM_CK_SE
212 .globl _PWM_CTRL
213 .globl _PWM_DATA1
214 .globl _PWM_DATA2
215 .globl _T2CAP1H
216 .globl _T2CAP1L
217 .globl _T2CAP1
218 .globl _TH2
219 .globl _TL2
220 .globl _T2COUNT
221 .globl _RCAP2H
222 .globl _RCAP2L
223 .globl _RCAP2
224 .globl _T2MOD
225 .globl _T2CON
226 .globl _SBUF
227 .globl _SCON
228 .globl _TH1
229 .globl _TH0
230 .globl _TL1
231 .globl _TL0
232 .globl _TMOD
233 .globl _TCON
234 .globl _XBUS_AUX
235 .globl _PIN_FUNC
236 .globl _P3_DIR_PU
237 .globl _P3_MOD_OC
238 .globl _P3
239 .globl _P2
240 .globl _P1_DIR_PU
241 .globl _P1_MOD_OC
242 .globl _P1
243 .globl _ROM_CTRL
244 .globl _ROM_DATA_H
245 .globl _ROM_DATA_L
246 .globl _ROM_DATA
247 .globl _ROM_ADDR_H
248 .globl _ROM_ADDR_L
249 .globl _ROM_ADDR
250 .globl _GPIO_IE
251 .globl _IP_EX
252 .globl _IE_EX
253 .globl _IP
254 .globl _IE
255 .globl _WDOG_COUNT
256 .globl _RESET_KEEP
257 .globl _WAKE_CTRL
258 .globl _CLOCK_CFG
259 .globl _PCON
260 .globl _GLOBAL_CFG
261 .globl _SAFE_MOD
262 .globl _DPH
263 .globl _DPL
264 .globl _SP
265 .globl _B
266 .globl _ACC
267 .globl _PSW
268 .globl _data
269 .globl _retry
270 .globl _response_value
271 .globl _response_count
272 .globl _request_value
273 .globl _request_count
274 .globl _DAP_TransferAbort
275 .globl _match_value
276 .globl _match_mask
277 .globl _match_retry
278 .globl _retry_count
279 .globl _debug_port
280 .globl _idle_cycles
281 .globl _SWD_Transfer_PARM_2
282 .globl _SWD_Sequence_PARM_3
283 .globl _SWD_Sequence_PARM_2
284 .globl _SWJ_Sequence_PARM_2
285 .globl _ring_swd_half_period_us
286 .globl _DAP_Thread
287 ;--------------------------------------------------------
288 ; special function registers
289 ;--------------------------------------------------------
290 .area RSEG (ABS,DATA)
000000 291 .org 0x0000
0000D0 292 _PSW = 0x00d0
0000E0 293 _ACC = 0x00e0
0000F0 294 _B = 0x00f0
000081 295 _SP = 0x0081
000082 296 _DPL = 0x0082
000083 297 _DPH = 0x0083
0000A1 298 _SAFE_MOD = 0x00a1
0000B1 299 _GLOBAL_CFG = 0x00b1
000087 300 _PCON = 0x0087
0000B9 301 _CLOCK_CFG = 0x00b9
0000A9 302 _WAKE_CTRL = 0x00a9
0000FE 303 _RESET_KEEP = 0x00fe
0000FF 304 _WDOG_COUNT = 0x00ff
0000A8 305 _IE = 0x00a8
0000B8 306 _IP = 0x00b8
0000E8 307 _IE_EX = 0x00e8
0000E9 308 _IP_EX = 0x00e9
0000C7 309 _GPIO_IE = 0x00c7
008584 310 _ROM_ADDR = 0x8584
000084 311 _ROM_ADDR_L = 0x0084
000085 312 _ROM_ADDR_H = 0x0085
008F8E 313 _ROM_DATA = 0x8f8e
00008E 314 _ROM_DATA_L = 0x008e
00008F 315 _ROM_DATA_H = 0x008f
000086 316 _ROM_CTRL = 0x0086
000090 317 _P1 = 0x0090
000092 318 _P1_MOD_OC = 0x0092
000093 319 _P1_DIR_PU = 0x0093
0000A0 320 _P2 = 0x00a0
0000B0 321 _P3 = 0x00b0
000096 322 _P3_MOD_OC = 0x0096
000097 323 _P3_DIR_PU = 0x0097
0000C6 324 _PIN_FUNC = 0x00c6
0000A2 325 _XBUS_AUX = 0x00a2
000088 326 _TCON = 0x0088
000089 327 _TMOD = 0x0089
00008A 328 _TL0 = 0x008a
00008B 329 _TL1 = 0x008b
00008C 330 _TH0 = 0x008c
00008D 331 _TH1 = 0x008d
000098 332 _SCON = 0x0098
000099 333 _SBUF = 0x0099
0000C8 334 _T2CON = 0x00c8
0000C9 335 _T2MOD = 0x00c9
00CBCA 336 _RCAP2 = 0xcbca
0000CA 337 _RCAP2L = 0x00ca
0000CB 338 _RCAP2H = 0x00cb
00CDCC 339 _T2COUNT = 0xcdcc
0000CC 340 _TL2 = 0x00cc
0000CD 341 _TH2 = 0x00cd
00CFCE 342 _T2CAP1 = 0xcfce
0000CE 343 _T2CAP1L = 0x00ce
0000CF 344 _T2CAP1H = 0x00cf
00009B 345 _PWM_DATA2 = 0x009b
00009C 346 _PWM_DATA1 = 0x009c
00009D 347 _PWM_CTRL = 0x009d
00009E 348 _PWM_CK_SE = 0x009e
0000F8 349 _SPI0_STAT = 0x00f8
0000F9 350 _SPI0_DATA = 0x00f9
0000FA 351 _SPI0_CTRL = 0x00fa
0000FB 352 _SPI0_CK_SE = 0x00fb
0000FC 353 _SPI0_SETUP = 0x00fc
0000C0 354 _SCON1 = 0x00c0
0000C1 355 _SBUF1 = 0x00c1
0000C2 356 _SBAUD1 = 0x00c2
000080 357 _ADC_CTRL = 0x0080
00009A 358 _ADC_CFG = 0x009a
00009F 359 _ADC_DATA = 0x009f
0000C3 360 _TKEY_CTRL = 0x00c3
00C5C4 361 _TKEY_DAT = 0xc5c4
0000C4 362 _TKEY_DATL = 0x00c4
0000C5 363 _TKEY_DATH = 0x00c5
000091 364 _USB_C_CTRL = 0x0091
0000D1 365 _UDEV_CTRL = 0x00d1
0000D2 366 _UEP1_CTRL = 0x00d2
0000D3 367 _UEP1_T_LEN = 0x00d3
0000D4 368 _UEP2_CTRL = 0x00d4
0000D5 369 _UEP2_T_LEN = 0x00d5
0000D6 370 _UEP3_CTRL = 0x00d6
0000D7 371 _UEP3_T_LEN = 0x00d7
0000D8 372 _USB_INT_FG = 0x00d8
0000D9 373 _USB_INT_ST = 0x00d9
0000DA 374 _USB_MIS_ST = 0x00da
0000DB 375 _USB_RX_LEN = 0x00db
0000DC 376 _UEP0_CTRL = 0x00dc
0000DD 377 _UEP0_T_LEN = 0x00dd
0000DE 378 _UEP4_CTRL = 0x00de
0000DF 379 _UEP4_T_LEN = 0x00df
0000E1 380 _USB_INT_EN = 0x00e1
0000E2 381 _USB_CTRL = 0x00e2
0000E3 382 _USB_DEV_AD = 0x00e3
00E5E4 383 _UEP2_DMA = 0xe5e4
0000E4 384 _UEP2_DMA_L = 0x00e4
0000E5 385 _UEP2_DMA_H = 0x00e5
00E7E6 386 _UEP3_DMA = 0xe7e6
0000E6 387 _UEP3_DMA_L = 0x00e6
0000E7 388 _UEP3_DMA_H = 0x00e7
0000EA 389 _UEP4_1_MOD = 0x00ea
0000EB 390 _UEP2_3_MOD = 0x00eb
00EDEC 391 _UEP0_DMA = 0xedec
0000EC 392 _UEP0_DMA_L = 0x00ec
0000ED 393 _UEP0_DMA_H = 0x00ed
00EFEE 394 _UEP1_DMA = 0xefee
0000EE 395 _UEP1_DMA_L = 0x00ee
0000EF 396 _UEP1_DMA_H = 0x00ef
397 ;--------------------------------------------------------
398 ; special function bits
399 ;--------------------------------------------------------
400 .area RSEG (ABS,DATA)
000000 401 .org 0x0000
0000D7 402 _CY = 0x00d7
0000D6 403 _AC = 0x00d6
0000D5 404 _F0 = 0x00d5
0000D4 405 _RS1 = 0x00d4
0000D3 406 _RS0 = 0x00d3
0000D2 407 _OV = 0x00d2
0000D1 408 _F1 = 0x00d1
0000D0 409 _P = 0x00d0
0000AF 410 _EA = 0x00af
0000AE 411 _E_DIS = 0x00ae
0000AD 412 _ET2 = 0x00ad
0000AC 413 _ES = 0x00ac
0000AB 414 _ET1 = 0x00ab
0000AA 415 _EX1 = 0x00aa
0000A9 416 _ET0 = 0x00a9
0000A8 417 _EX0 = 0x00a8
0000BF 418 _PH_FLAG = 0x00bf
0000BE 419 _PL_FLAG = 0x00be
0000BD 420 _PT2 = 0x00bd
0000BC 421 _PS = 0x00bc
0000BB 422 _PT1 = 0x00bb
0000BA 423 _PX1 = 0x00ba
0000B9 424 _PT0 = 0x00b9
0000B8 425 _PX0 = 0x00b8
0000EF 426 _IE_WDOG = 0x00ef
0000EE 427 _IE_GPIO = 0x00ee
0000ED 428 _IE_PWMX = 0x00ed
0000EC 429 _IE_UART1 = 0x00ec
0000EB 430 _IE_ADC = 0x00eb
0000EA 431 _IE_USB = 0x00ea
0000E9 432 _IE_TKEY = 0x00e9
0000E8 433 _IE_SPI0 = 0x00e8
000097 434 _SCK = 0x0097
000097 435 _TXD1 = 0x0097
000097 436 _TIN5 = 0x0097
000096 437 _MISO = 0x0096
000096 438 _RXD1 = 0x0096
000096 439 _TIN4 = 0x0096
000095 440 _MOSI = 0x0095
000095 441 _PWM1 = 0x0095
000095 442 _TIN3 = 0x0095
000095 443 _UCC2 = 0x0095
000095 444 _AIN2 = 0x0095
000094 445 _T2_ = 0x0094
000094 446 _CAP1_ = 0x0094
000094 447 _SCS = 0x0094
000094 448 _TIN2 = 0x0094
000094 449 _UCC1 = 0x0094
000094 450 _AIN1 = 0x0094
000093 451 _TXD_ = 0x0093
000092 452 _RXD_ = 0x0092
000091 453 _T2EX = 0x0091
000091 454 _CAP2 = 0x0091
000091 455 _TIN1 = 0x0091
000091 456 _VBUS2 = 0x0091
000091 457 _AIN0 = 0x0091
000090 458 _T2 = 0x0090
000090 459 _CAP1 = 0x0090
000090 460 _TIN0 = 0x0090
0000B7 461 _UDM = 0x00b7
0000B6 462 _UDP = 0x00b6
0000B5 463 _T1 = 0x00b5
0000B4 464 _PWM2 = 0x00b4
0000B4 465 _RXD1_ = 0x00b4
0000B4 466 _T0 = 0x00b4
0000B3 467 _INT1 = 0x00b3
0000B2 468 _TXD1_ = 0x00b2
0000B2 469 _INT0 = 0x00b2
0000B2 470 _VBUS1 = 0x00b2
0000B2 471 _AIN3 = 0x00b2
0000B1 472 _PWM2_ = 0x00b1
0000B1 473 _TXD = 0x00b1
0000B0 474 _PWM1_ = 0x00b0
0000B0 475 _RXD = 0x00b0
00008F 476 _TF1 = 0x008f
00008E 477 _TR1 = 0x008e
00008D 478 _TF0 = 0x008d
00008C 479 _TR0 = 0x008c
00008B 480 _IE1 = 0x008b
00008A 481 _IT1 = 0x008a
000089 482 _IE0 = 0x0089
000088 483 _IT0 = 0x0088
00009F 484 _SM0 = 0x009f
00009E 485 _SM1 = 0x009e
00009D 486 _SM2 = 0x009d
00009C 487 _REN = 0x009c
00009B 488 _TB8 = 0x009b
00009A 489 _RB8 = 0x009a
000099 490 _TI = 0x0099
000098 491 _RI = 0x0098
0000CF 492 _TF2 = 0x00cf
0000CF 493 _CAP1F = 0x00cf
0000CE 494 _EXF2 = 0x00ce
0000CD 495 _RCLK = 0x00cd
0000CC 496 _TCLK = 0x00cc
0000CB 497 _EXEN2 = 0x00cb
0000CA 498 _TR2 = 0x00ca
0000C9 499 _C_T2 = 0x00c9
0000C8 500 _CP_RL2 = 0x00c8
0000FF 501 _S0_FST_ACT = 0x00ff
0000FE 502 _S0_IF_OV = 0x00fe
0000FD 503 _S0_IF_FIRST = 0x00fd
0000FC 504 _S0_IF_BYTE = 0x00fc
0000FB 505 _S0_FREE = 0x00fb
0000FA 506 _S0_T_FIFO = 0x00fa
0000F8 507 _S0_R_FIFO = 0x00f8
0000C7 508 _U1SM0 = 0x00c7
0000C5 509 _U1SMOD = 0x00c5
0000C4 510 _U1REN = 0x00c4
0000C3 511 _U1TB8 = 0x00c3
0000C2 512 _U1RB8 = 0x00c2
0000C1 513 _U1TI = 0x00c1
0000C0 514 _U1RI = 0x00c0
000087 515 _CMPO = 0x0087
000086 516 _CMP_IF = 0x0086
000085 517 _ADC_IF = 0x0085
000084 518 _ADC_START = 0x0084
000083 519 _CMP_CHAN = 0x0083
000081 520 _ADC_CHAN1 = 0x0081
000080 521 _ADC_CHAN0 = 0x0080
0000DF 522 _U_IS_NAK = 0x00df
0000DE 523 _U_TOG_OK = 0x00de
0000DD 524 _U_SIE_FREE = 0x00dd
0000DC 525 _UIF_FIFO_OV = 0x00dc
0000DB 526 _UIF_HST_SOF = 0x00db
0000DA 527 _UIF_SUSPEND = 0x00da
0000D9 528 _UIF_TRANSFER = 0x00d9
0000D8 529 _UIF_DETECT = 0x00d8
0000D8 530 _UIF_BUS_RST = 0x00d8
000090 531 _PP10 = 0x0090
000091 532 _PP11 = 0x0091
000092 533 _PP12 = 0x0092
000093 534 _PP13 = 0x0093
000094 535 _PP14 = 0x0094
000095 536 _PP15 = 0x0095
000096 537 _PP16 = 0x0096
000097 538 _PP17 = 0x0097
0000B0 539 _PP30 = 0x00b0
0000B1 540 _PP31 = 0x00b1
0000B2 541 _PP32 = 0x00b2
0000B3 542 _PP33 = 0x00b3
0000B4 543 _PP34 = 0x00b4
0000B5 544 _PP35 = 0x00b5
0000B6 545 _PP36 = 0x00b6
0000B7 546 _PP37 = 0x00b7
547 ;--------------------------------------------------------
548 ; overlayable register banks
549 ;--------------------------------------------------------
550 .area REG_BANK_0 (REL,OVR,DATA)
000000 551 .ds 8
552 ;--------------------------------------------------------
553 ; internal ram data
554 ;--------------------------------------------------------
555 .area DSEG (DATA)
000000 556 _ring_swd_half_period_us::
000000 557 .ds 2
000002 558 _SWJ_Sequence_PARM_2:
000002 559 .ds 2
000004 560 _SWD_Sequence_PARM_2:
000004 561 .ds 2
000006 562 _SWD_Sequence_PARM_3:
000006 563 .ds 2
000008 564 _SWD_Transfer_PARM_2:
000008 565 .ds 2
00000A 566 _DAP_Info_PARM_2:
00000A 567 .ds 2
00000C 568 _DAP_Connect_PARM_2:
00000C 569 .ds 2
00000E 570 _DAP_SWJ_Pins_PARM_2:
00000E 571 .ds 2
000010 572 _DAP_SWJ_Pins_sloc0_1_0:
000010 573 .ds 1
000011 574 _DAP_SWJ_Pins_sloc1_1_0:
000011 575 .ds 1
000012 576 _DAP_SWJ_Pins_sloc2_1_0:
000012 577 .ds 2
000014 578 _DAP_SWJ_Pins_sloc4_1_0:
000014 579 .ds 1
000015 580 _DAP_SWJ_Sequence_PARM_2:
000015 581 .ds 2
000017 582 _DAP_SWD_Sequence_PARM_2:
000017 583 .ds 2
000019 584 _DAP_SWD_Transfer_PARM_2:
000019 585 .ds 2
00001B 586 _DAP_SWD_Transfer_response_head_65536_140:
00001B 587 .ds 2
00001D 588 _DAP_SWD_Transfer_post_read_65536_140:
00001D 589 .ds 1
00001E 590 _DAP_SWD_Transfer_check_write_65536_140:
00001E 591 .ds 1
00001F 592 _DAP_SWD_Transfer_sloc0_1_0:
00001F 593 .ds 1
000020 594 _DAP_SWD_TransferBlock_PARM_2:
000020 595 .ds 2
000022 596 _DAP_SWD_TransferBlock_response_head_65536_175:
000022 597 .ds 2
000024 598 _DAP_TransferBlock_PARM_2:
000024 599 .ds 2
000026 600 _DAP_Thread_requested_hz_196608_191:
000026 601 .ds 4
00002A 602 _DAP_Thread_sloc0_1_0:
00002A 603 .ds 4
604 ;--------------------------------------------------------
605 ; overlayable items in internal ram
606 ;--------------------------------------------------------
607 .area OSEG (OVR,DATA)
000000 608 _DAP_HostStatus_PARM_2:
000000 609 .ds 2
610 .area OSEG (OVR,DATA)
000000 611 _DAP_TransferConfigure_PARM_2:
000000 612 .ds 2
613 ;--------------------------------------------------------
614 ; indirectly addressable internal ram data
615 ;--------------------------------------------------------
616 .area ISEG (DATA)
000000 617 _idle_cycles::
000000 618 .ds 1
000001 619 _debug_port::
000001 620 .ds 1
000002 621 _retry_count::
000002 622 .ds 2
000004 623 _match_retry::
000004 624 .ds 2
000006 625 _match_mask::
000006 626 .ds 4
00000A 627 _match_value::
00000A 628 .ds 4
00000E 629 _DAP_TransferAbort::
00000E 630 .ds 1
00000F 631 _request_count::
00000F 632 .ds 1
000010 633 _request_value::
000010 634 .ds 1
000011 635 _response_count::
000011 636 .ds 1
000012 637 _response_value::
000012 638 .ds 1
000013 639 _retry::
000013 640 .ds 2
641 ;--------------------------------------------------------
642 ; absolute internal ram data
643 ;--------------------------------------------------------
644 .area IABS (ABS,DATA)
645 .area IABS (ABS,DATA)
646 ;--------------------------------------------------------
647 ; bit data
648 ;--------------------------------------------------------
649 .area BSEG (BIT)
000000 650 _DAP_SWJ_Pins_sloc3_1_0:
000000 651 .ds 1
652 ;--------------------------------------------------------
653 ; paged external ram data
654 ;--------------------------------------------------------
655 .area PSEG (PAG,XDATA)
656 ;--------------------------------------------------------
657 ; external ram data
658 ;--------------------------------------------------------
659 .area XSEG (XDATA)
000000 660 _data::
000000 661 .ds 4
662 ;--------------------------------------------------------
663 ; absolute external ram data
664 ;--------------------------------------------------------
665 .area XABS (ABS,XDATA)
666 ;--------------------------------------------------------
667 ; external initialized ram data
668 ;--------------------------------------------------------
669 .area HOME (CODE)
670 .area GSINIT0 (CODE)
671 .area GSINIT1 (CODE)
672 .area GSINIT2 (CODE)
673 .area GSINIT3 (CODE)
674 .area GSINIT4 (CODE)
675 .area GSINIT5 (CODE)
676 .area GSINIT (CODE)
677 .area GSFINAL (CODE)
678 .area CSEG (CODE)
679 ;--------------------------------------------------------
680 ; global & static initialisations
681 ;--------------------------------------------------------
682 .area HOME (CODE)
683 .area GSINIT (CODE)
684 .area GSFINAL (CODE)
685 .area GSINIT (CODE)
686 ; src/dap.c:37: uint16_t ring_swd_half_period_us = 5;
000000 75*00 05 [24] 687 mov _ring_swd_half_period_us,#0x05
000003 75*01 00 [24] 688 mov (_ring_swd_half_period_us + 1),#0x00
689 ; src/dap.c:438: __idata uint8_t DAP_TransferAbort = 0U;
000006 78r0E [12] 690 mov r0,#_DAP_TransferAbort
000008 76 00 [12] 691 mov @r0,#0x00
692 ;--------------------------------------------------------
693 ; Home
694 ;--------------------------------------------------------
695 .area HOME (CODE)
696 .area HOME (CODE)
697 ;--------------------------------------------------------
698 ; code
699 ;--------------------------------------------------------
700 .area CSEG (CODE)
701 ;------------------------------------------------------------
702 ;Allocation info for local variables in function 'SWJ_Sequence'
703 ;------------------------------------------------------------
704 ;data Allocated with name '_SWJ_Sequence_PARM_2'
705 ;count Allocated to registers
706 ;val Allocated to registers r6
707 ;n Allocated to registers r5
708 ;------------------------------------------------------------
709 ; src/dap.c:45: void SWJ_Sequence(uint8_t count, const __xdata uint8_t *data) {
710 ; -----------------------------------------
711 ; function SWJ_Sequence
712 ; -----------------------------------------
000000 713 _SWJ_Sequence:
000007 714 ar7 = 0x07
000006 715 ar6 = 0x06
000005 716 ar5 = 0x05
000004 717 ar4 = 0x04
000003 718 ar3 = 0x03
000002 719 ar2 = 0x02
000001 720 ar1 = 0x01
000000 721 ar0 = 0x00
000000 AF 82 [24] 722 mov r7,dpl
723 ; src/dap.c:49: val = 0U;
000002 7E 00 [12] 724 mov r6,#0x00
725 ; src/dap.c:50: n = 0U;
000004 7D 00 [12] 726 mov r5,#0x00
727 ; src/dap.c:51: while(count--) {
000006 AB*02 [24] 728 mov r3,_SWJ_Sequence_PARM_2
000008 AC*03 [24] 729 mov r4,(_SWJ_Sequence_PARM_2 + 1)
00000A 730 00103$:
00000A 8F 02 [24] 731 mov ar2,r7
00000C 1F [12] 732 dec r7
00000D EA [12] 733 mov a,r2
00000E 60 48 [24] 734 jz 00106$
735 ; src/dap.c:52: if(n == 0U) {
000010 ED [12] 736 mov a,r5
000011 70 0D [24] 737 jnz 00102$
738 ; src/dap.c:53: val = *data++;
000013 8B 82 [24] 739 mov dpl,r3
000015 8C 83 [24] 740 mov dph,r4
000017 E0 [24] 741 movx a,@dptr
000018 FE [12] 742 mov r6,a
000019 A3 [24] 743 inc dptr
00001A AB 82 [24] 744 mov r3,dpl
00001C AC 83 [24] 745 mov r4,dph
746 ; src/dap.c:54: n = 8U;
00001E 7D 08 [12] 747 mov r5,#0x08
000020 748 00102$:
749 ; src/dap.c:57: SWD_WRITE_BIT(val);
000020 EE [12] 750 mov a,r6
000021 54 01 [12] 751 anl a,#0x01
752 ; assignBit
000023 24 FF [12] 753 add a,#0xff
000025 92 95 [24] 754 mov _PP15,c
000027 85*00 82 [24] 755 mov dpl,_ring_swd_half_period_us
00002A 85*01 83 [24] 756 mov dph,(_ring_swd_half_period_us + 1)
00002D C0 07 [24] 757 push ar7
00002F C0 06 [24] 758 push ar6
000031 C0 05 [24] 759 push ar5
000033 C0 04 [24] 760 push ar4
000035 C0 03 [24] 761 push ar3
000037 12r00r00 [24] 762 lcall _DLY_us
763 ; assignBit
00003A D2 96 [12] 764 setb _PP16
00003C 85*00 82 [24] 765 mov dpl,_ring_swd_half_period_us
00003F 85*01 83 [24] 766 mov dph,(_ring_swd_half_period_us + 1)
000042 12r00r00 [24] 767 lcall _DLY_us
000045 D0 03 [24] 768 pop ar3
000047 D0 04 [24] 769 pop ar4
000049 D0 05 [24] 770 pop ar5
00004B D0 06 [24] 771 pop ar6
00004D D0 07 [24] 772 pop ar7
773 ; assignBit
00004F C2 96 [12] 774 clr _PP16
775 ; src/dap.c:58: val >>= 1;
000051 EE [12] 776 mov a,r6
000052 C3 [12] 777 clr c
000053 13 [12] 778 rrc a
000054 FE [12] 779 mov r6,a
780 ; src/dap.c:59: n--;
000055 1D [12] 781 dec r5
000056 80 B2 [24] 782 sjmp 00103$
000058 783 00106$:
784 ; src/dap.c:61: }
000058 22 [24] 785 ret
786 ;------------------------------------------------------------
787 ;Allocation info for local variables in function 'SWD_Sequence'
788 ;------------------------------------------------------------
789 ;swdo Allocated with name '_SWD_Sequence_PARM_2'
790 ;swdi Allocated with name '_SWD_Sequence_PARM_3'
791 ;info Allocated to registers r7
792 ;val Allocated to registers r3
793 ;bits Allocated to registers r1
794 ;n Allocated to registers r6
795 ;k Allocated to registers r3
796 ;------------------------------------------------------------
797 ; src/dap.c:70: void SWD_Sequence(uint8_t info, const __xdata uint8_t *swdo, __xdata uint8_t *swdi) {
798 ; -----------------------------------------
799 ; function SWD_Sequence
800 ; -----------------------------------------
000059 801 _SWD_Sequence:
000059 AF 82 [24] 802 mov r7,dpl
803 ; src/dap.c:75: n = info & SWD_SEQUENCE_CLK;
00005B 74 3F [12] 804 mov a,#0x3f
00005D 5F [12] 805 anl a,r7
806 ; src/dap.c:76: if(n == 0U) n = 64U;
00005E FE [12] 807 mov r6,a
00005F 70 02 [24] 808 jnz 00102$
000061 7E 40 [12] 809 mov r6,#0x40
000063 810 00102$:
811 ; src/dap.c:78: if(info & SWD_SEQUENCE_DIN) {
000063 EF [12] 812 mov a,r7
000064 30 E7 71 [24] 813 jnb acc.7,00131$
814 ; src/dap.c:79: while(n) {
000067 AD*06 [24] 815 mov r5,_SWD_Sequence_PARM_3
000069 AF*07 [24] 816 mov r7,(_SWD_Sequence_PARM_3 + 1)
00006B 817 00104$:
00006B EE [12] 818 mov a,r6
00006C 70 01 [24] 819 jnz 00188$
00006E 22 [24] 820 ret
00006F 821 00188$:
822 ; src/dap.c:80: val = 0U;
00006F 7C 00 [12] 823 mov r4,#0x00
824 ; src/dap.c:81: for (k = 8U; k && n; k--, n--) {
000071 7B 08 [12] 825 mov r3,#0x08
000073 8E 02 [24] 826 mov ar2,r6
000075 827 00116$:
000075 EB [12] 828 mov a,r3
000076 60 45 [24] 829 jz 00135$
000078 EA [12] 830 mov a,r2
000079 60 42 [24] 831 jz 00135$
832 ; src/dap.c:82: SWD_READ_BIT(bits);
00007B A2 95 [12] 833 mov c,_PP15
00007D E4 [12] 834 clr a
00007E 33 [12] 835 rlc a
00007F F9 [12] 836 mov r1,a
000080 85*00 82 [24] 837 mov dpl,_ring_swd_half_period_us
000083 85*01 83 [24] 838 mov dph,(_ring_swd_half_period_us + 1)
000086 C0 07 [24] 839 push ar7
000088 C0 05 [24] 840 push ar5
00008A C0 04 [24] 841 push ar4
00008C C0 03 [24] 842 push ar3
00008E C0 02 [24] 843 push ar2
000090 C0 01 [24] 844 push ar1
000092 12r00r00 [24] 845 lcall _DLY_us
846 ; assignBit
000095 D2 96 [12] 847 setb _PP16
000097 85*00 82 [24] 848 mov dpl,_ring_swd_half_period_us
00009A 85*01 83 [24] 849 mov dph,(_ring_swd_half_period_us + 1)
00009D 12r00r00 [24] 850 lcall _DLY_us
0000A0 D0 01 [24] 851 pop ar1
0000A2 D0 02 [24] 852 pop ar2
0000A4 D0 03 [24] 853 pop ar3
0000A6 D0 04 [24] 854 pop ar4
0000A8 D0 05 [24] 855 pop ar5
0000AA D0 07 [24] 856 pop ar7
857 ; assignBit
0000AC C2 96 [12] 858 clr _PP16
859 ; src/dap.c:83: val >>= 1;
0000AE EC [12] 860 mov a,r4
0000AF C3 [12] 861 clr c
0000B0 13 [12] 862 rrc a
0000B1 F8 [12] 863 mov r0,a
864 ; src/dap.c:84: val |= bits << 7;
0000B2 E9 [12] 865 mov a,r1
0000B3 03 [12] 866 rr a
0000B4 54 80 [12] 867 anl a,#0x80
0000B6 F9 [12] 868 mov r1,a
0000B7 48 [12] 869 orl a,r0
0000B8 FC [12] 870 mov r4,a
871 ; src/dap.c:81: for (k = 8U; k && n; k--, n--) {
0000B9 1B [12] 872 dec r3
0000BA 1A [12] 873 dec r2
0000BB 80 B8 [24] 874 sjmp 00116$
0000BD 875 00135$:
0000BD 8A 06 [24] 876 mov ar6,r2
877 ; src/dap.c:86: val >>= k;
0000BF 8B F0 [24] 878 mov b,r3
0000C1 05 F0 [12] 879 inc b
0000C3 EC [12] 880 mov a,r4
0000C4 80 02 [24] 881 sjmp 00192$
0000C6 882 00191$:
0000C6 C3 [12] 883 clr c
0000C7 13 [12] 884 rrc a
0000C8 885 00192$:
0000C8 D5 F0 FB [24] 886 djnz b,00191$
887 ; src/dap.c:87: *swdi++ = (uint8_t)val;
0000CB FB [12] 888 mov r3,a
0000CC 8D 82 [24] 889 mov dpl,r5
0000CE 8F 83 [24] 890 mov dph,r7
0000D0 F0 [24] 891 movx @dptr,a
0000D1 A3 [24] 892 inc dptr
0000D2 AD 82 [24] 893 mov r5,dpl
0000D4 AF 83 [24] 894 mov r7,dph
895 ; src/dap.c:91: while(n) {
0000D6 80 93 [24] 896 sjmp 00104$
0000D8 897 00131$:
0000D8 AD*04 [24] 898 mov r5,_SWD_Sequence_PARM_2
0000DA AF*05 [24] 899 mov r7,(_SWD_Sequence_PARM_2 + 1)
0000DC 900 00108$:
0000DC EE [12] 901 mov a,r6
0000DD 60 50 [24] 902 jz 00122$
903 ; src/dap.c:92: val = *swdo++;
0000DF 8D 82 [24] 904 mov dpl,r5
0000E1 8F 83 [24] 905 mov dph,r7
0000E3 E0 [24] 906 movx a,@dptr
0000E4 FC [12] 907 mov r4,a
0000E5 A3 [24] 908 inc dptr
0000E6 AD 82 [24] 909 mov r5,dpl
0000E8 AF 83 [24] 910 mov r7,dph
911 ; src/dap.c:93: for(k = 8U; k && n; k--, n--) {
0000EA 7B 08 [12] 912 mov r3,#0x08
0000EC 8E 02 [24] 913 mov ar2,r6
0000EE 914 00120$:
0000EE EB [12] 915 mov a,r3
0000EF 60 EB [24] 916 jz 00108$
0000F1 EA [12] 917 mov a,r2
0000F2 60 E8 [24] 918 jz 00108$
919 ; src/dap.c:94: SWD_WRITE_BIT(val);
0000F4 EC [12] 920 mov a,r4
0000F5 54 01 [12] 921 anl a,#0x01
922 ; assignBit
0000F7 24 FF [12] 923 add a,#0xff
0000F9 92 95 [24] 924 mov _PP15,c
0000FB 85*00 82 [24] 925 mov dpl,_ring_swd_half_period_us
0000FE 85*01 83 [24] 926 mov dph,(_ring_swd_half_period_us + 1)
000101 C0 07 [24] 927 push ar7
000103 C0 05 [24] 928 push ar5
000105 C0 04 [24] 929 push ar4
000107 C0 03 [24] 930 push ar3
000109 C0 02 [24] 931 push ar2
00010B 12r00r00 [24] 932 lcall _DLY_us
933 ; assignBit
00010E D2 96 [12] 934 setb _PP16
000110 85*00 82 [24] 935 mov dpl,_ring_swd_half_period_us
000113 85*01 83 [24] 936 mov dph,(_ring_swd_half_period_us + 1)
000116 12r00r00 [24] 937 lcall _DLY_us
000119 D0 02 [24] 938 pop ar2
00011B D0 03 [24] 939 pop ar3
00011D D0 04 [24] 940 pop ar4
00011F D0 05 [24] 941 pop ar5
000121 D0 07 [24] 942 pop ar7
943 ; assignBit
000123 C2 96 [12] 944 clr _PP16
945 ; src/dap.c:95: val >>= 1;
000125 EC [12] 946 mov a,r4
000126 C3 [12] 947 clr c
000127 13 [12] 948 rrc a
000128 FC [12] 949 mov r4,a
950 ; src/dap.c:93: for(k = 8U; k && n; k--, n--) {
000129 1B [12] 951 dec r3
00012A 1A [12] 952 dec r2
00012B 8A 06 [24] 953 mov ar6,r2
00012D 80 BF [24] 954 sjmp 00120$
00012F 955 00122$:
956 ; src/dap.c:99: }
00012F 22 [24] 957 ret
958 ;------------------------------------------------------------
959 ;Allocation info for local variables in function 'SWD_Transfer'
960 ;------------------------------------------------------------
961 ;data Allocated with name '_SWD_Transfer_PARM_2'
962 ;req Allocated to registers r7
963 ;ack Allocated to registers r5
964 ;bits Allocated to registers r5
965 ;val Allocated to registers r4
966 ;parity Allocated to registers r6
967 ;m Allocated to registers r4
968 ;n Allocated to registers r7
969 ;------------------------------------------------------------
970 ; src/dap.c:108: uint8_t SWD_Transfer(uint8_t req, __xdata uint8_t *data) {
971 ; -----------------------------------------
972 ; function SWD_Transfer
973 ; -----------------------------------------
000130 974 _SWD_Transfer:
000130 AF 82 [24] 975 mov r7,dpl
976 ; src/dap.c:117: SWD_WRITE_BIT(1U); // start bit
977 ; assignBit
000132 D2 95 [12] 978 setb _PP15
000134 85*00 82 [24] 979 mov dpl,_ring_swd_half_period_us
000137 85*01 83 [24] 980 mov dph,(_ring_swd_half_period_us + 1)
00013A C0 07 [24] 981 push ar7
00013C 12r00r00 [24] 982 lcall _DLY_us
983 ; assignBit
00013F D2 96 [12] 984 setb _PP16
000141 85*00 82 [24] 985 mov dpl,_ring_swd_half_period_us
000144 85*01 83 [24] 986 mov dph,(_ring_swd_half_period_us + 1)
000147 12r00r00 [24] 987 lcall _DLY_us
00014A D0 07 [24] 988 pop ar7
989 ; assignBit
00014C C2 96 [12] 990 clr _PP16
991 ; src/dap.c:118: SWD_WRITE_BIT(bits); // APnDP bit
00014E EF [12] 992 mov a,r7
00014F 54 01 [12] 993 anl a,#0x01
994 ; assignBit
000151 24 FF [12] 995 add a,#0xff
000153 92 95 [24] 996 mov _PP15,c
000155 85*00 82 [24] 997 mov dpl,_ring_swd_half_period_us
000158 85*01 83 [24] 998 mov dph,(_ring_swd_half_period_us + 1)
00015B C0 07 [24] 999 push ar7
00015D 12r00r00 [24] 1000 lcall _DLY_us
1001 ; assignBit
000160 D2 96 [12] 1002 setb _PP16
000162 85*00 82 [24] 1003 mov dpl,_ring_swd_half_period_us
000165 85*01 83 [24] 1004 mov dph,(_ring_swd_half_period_us + 1)
000168 12r00r00 [24] 1005 lcall _DLY_us
00016B D0 07 [24] 1006 pop ar7
1007 ; assignBit
00016D C2 96 [12] 1008 clr _PP16
1009 ; src/dap.c:120: bits >>= 1;
00016F EF [12] 1010 mov a,r7
000170 C3 [12] 1011 clr c
000171 13 [12] 1012 rrc a
1013 ; src/dap.c:121: SWD_WRITE_BIT(bits); // RnW bit
000172 FE [12] 1014 mov r6,a
000173 54 01 [12] 1015 anl a,#0x01
1016 ; assignBit
000175 24 FF [12] 1017 add a,#0xff
000177 92 95 [24] 1018 mov _PP15,c
000179 85*00 82 [24] 1019 mov dpl,_ring_swd_half_period_us
00017C 85*01 83 [24] 1020 mov dph,(_ring_swd_half_period_us + 1)
00017F C0 07 [24] 1021 push ar7
000181 C0 06 [24] 1022 push ar6
000183 12r00r00 [24] 1023 lcall _DLY_us
1024 ; assignBit
000186 D2 96 [12] 1025 setb _PP16
000188 85*00 82 [24] 1026 mov dpl,_ring_swd_half_period_us
00018B 85*01 83 [24] 1027 mov dph,(_ring_swd_half_period_us + 1)
00018E 12r00r00 [24] 1028 lcall _DLY_us
000191 D0 06 [24] 1029 pop ar6
000193 D0 07 [24] 1030 pop ar7
1031 ; assignBit
000195 C2 96 [12] 1032 clr _PP16
1033 ; src/dap.c:122: parity += bits;
000197 EE [12] 1034 mov a,r6
000198 2F [12] 1035 add a,r7
000199 FD [12] 1036 mov r5,a
1037 ; src/dap.c:123: bits >>= 1;
00019A EE [12] 1038 mov a,r6
00019B C3 [12] 1039 clr c
00019C 13 [12] 1040 rrc a
1041 ; src/dap.c:124: SWD_WRITE_BIT(bits); // A2 bit
00019D FE [12] 1042 mov r6,a
00019E 54 01 [12] 1043 anl a,#0x01
1044 ; assignBit
0001A0 24 FF [12] 1045 add a,#0xff
0001A2 92 95 [24] 1046 mov _PP15,c
0001A4 85*00 82 [24] 1047 mov dpl,_ring_swd_half_period_us
0001A7 85*01 83 [24] 1048 mov dph,(_ring_swd_half_period_us + 1)
0001AA C0 07 [24] 1049 push ar7
0001AC C0 06 [24] 1050 push ar6
0001AE C0 05 [24] 1051 push ar5
0001B0 12r00r00 [24] 1052 lcall _DLY_us
1053 ; assignBit
0001B3 D2 96 [12] 1054 setb _PP16
0001B5 85*00 82 [24] 1055 mov dpl,_ring_swd_half_period_us
0001B8 85*01 83 [24] 1056 mov dph,(_ring_swd_half_period_us + 1)
0001BB 12r00r00 [24] 1057 lcall _DLY_us
0001BE D0 05 [24] 1058 pop ar5
0001C0 D0 06 [24] 1059 pop ar6
1060 ; assignBit
0001C2 C2 96 [12] 1061 clr _PP16
1062 ; src/dap.c:125: parity += bits;
0001C4 EE [12] 1063 mov a,r6
0001C5 2D [12] 1064 add a,r5
0001C6 FD [12] 1065 mov r5,a
1066 ; src/dap.c:126: bits >>= 1;
0001C7 EE [12] 1067 mov a,r6
0001C8 C3 [12] 1068 clr c
0001C9 13 [12] 1069 rrc a
1070 ; src/dap.c:127: SWD_WRITE_BIT(bits); // A3 bit
0001CA FE [12] 1071 mov r6,a
0001CB 54 01 [12] 1072 anl a,#0x01
1073 ; assignBit
0001CD 24 FF [12] 1074 add a,#0xff
0001CF 92 95 [24] 1075 mov _PP15,c
0001D1 85*00 82 [24] 1076 mov dpl,_ring_swd_half_period_us
0001D4 85*01 83 [24] 1077 mov dph,(_ring_swd_half_period_us + 1)
0001D7 C0 06 [24] 1078 push ar6
0001D9 C0 05 [24] 1079 push ar5
0001DB 12r00r00 [24] 1080 lcall _DLY_us
1081 ; assignBit
0001DE D2 96 [12] 1082 setb _PP16
0001E0 85*00 82 [24] 1083 mov dpl,_ring_swd_half_period_us
0001E3 85*01 83 [24] 1084 mov dph,(_ring_swd_half_period_us + 1)
0001E6 12r00r00 [24] 1085 lcall _DLY_us
0001E9 D0 05 [24] 1086 pop ar5
0001EB D0 06 [24] 1087 pop ar6
1088 ; assignBit
0001ED C2 96 [12] 1089 clr _PP16
1090 ; src/dap.c:128: parity += bits;
0001EF EE [12] 1091 mov a,r6
0001F0 2D [12] 1092 add a,r5
1093 ; src/dap.c:129: SWD_WRITE_BIT(parity); // parity bit
0001F1 54 01 [12] 1094 anl a,#0x01
1095 ; assignBit
0001F3 24 FF [12] 1096 add a,#0xff
0001F5 92 95 [24] 1097 mov _PP15,c
0001F7 85*00 82 [24] 1098 mov dpl,_ring_swd_half_period_us
0001FA 85*01 83 [24] 1099 mov dph,(_ring_swd_half_period_us + 1)
0001FD 12r00r00 [24] 1100 lcall _DLY_us
1101 ; assignBit
000200 D2 96 [12] 1102 setb _PP16
000202 85*00 82 [24] 1103 mov dpl,_ring_swd_half_period_us
000205 85*01 83 [24] 1104 mov dph,(_ring_swd_half_period_us + 1)
000208 12r00r00 [24] 1105 lcall _DLY_us
1106 ; assignBit
00020B C2 96 [12] 1107 clr _PP16
1108 ; src/dap.c:130: SWD_WRITE_BIT(0U); // stop bit
1109 ; assignBit
00020D C2 95 [12] 1110 clr _PP15
00020F 85*00 82 [24] 1111 mov dpl,_ring_swd_half_period_us
000212 85*01 83 [24] 1112 mov dph,(_ring_swd_half_period_us + 1)
000215 12r00r00 [24] 1113 lcall _DLY_us
1114 ; assignBit
000218 D2 96 [12] 1115 setb _PP16
00021A 85*00 82 [24] 1116 mov dpl,_ring_swd_half_period_us
00021D 85*01 83 [24] 1117 mov dph,(_ring_swd_half_period_us + 1)
000220 12r00r00 [24] 1118 lcall _DLY_us
1119 ; assignBit
000223 C2 96 [12] 1120 clr _PP16
1121 ; src/dap.c:131: SWD_WRITE_BIT(1U); // park bit
1122 ; assignBit
000225 D2 95 [12] 1123 setb _PP15
000227 85*00 82 [24] 1124 mov dpl,_ring_swd_half_period_us
00022A 85*01 83 [24] 1125 mov dph,(_ring_swd_half_period_us + 1)
00022D 12r00r00 [24] 1126 lcall _DLY_us
1127 ; assignBit
000230 D2 96 [12] 1128 setb _PP16
000232 85*00 82 [24] 1129 mov dpl,_ring_swd_half_period_us
000235 85*01 83 [24] 1130 mov dph,(_ring_swd_half_period_us + 1)
000238 12r00r00 [24] 1131 lcall _DLY_us
1132 ; assignBit
00023B C2 96 [12] 1133 clr _PP16
1134 ; src/dap.c:134: SWD_OUT_DISABLE();
00023D 53 93 DF [24] 1135 anl _P1_DIR_PU,#0xdf
000240 53 92 DF [24] 1136 anl _P1_MOD_OC,#0xdf
1137 ; src/dap.c:135: SWD_CLOCK_CYCLE();
000243 85*00 82 [24] 1138 mov dpl,_ring_swd_half_period_us
000246 85*01 83 [24] 1139 mov dph,(_ring_swd_half_period_us + 1)
000249 12r00r00 [24] 1140 lcall _DLY_us
1141 ; assignBit
00024C D2 96 [12] 1142 setb _PP16
00024E 85*00 82 [24] 1143 mov dpl,_ring_swd_half_period_us
000251 85*01 83 [24] 1144 mov dph,(_ring_swd_half_period_us + 1)
000254 12r00r00 [24] 1145 lcall _DLY_us
1146 ; assignBit
000257 C2 96 [12] 1147 clr _PP16
1148 ; src/dap.c:138: SWD_READ_BIT(bits);
000259 A2 95 [12] 1149 mov c,_PP15
00025B E4 [12] 1150 clr a
00025C 33 [12] 1151 rlc a
00025D FE [12] 1152 mov r6,a
00025E 85*00 82 [24] 1153 mov dpl,_ring_swd_half_period_us
000261 85*01 83 [24] 1154 mov dph,(_ring_swd_half_period_us + 1)
000264 C0 06 [24] 1155 push ar6
000266 12r00r00 [24] 1156 lcall _DLY_us
1157 ; assignBit
000269 D2 96 [12] 1158 setb _PP16
00026B 85*00 82 [24] 1159 mov dpl,_ring_swd_half_period_us
00026E 85*01 83 [24] 1160 mov dph,(_ring_swd_half_period_us + 1)
000271 12r00r00 [24] 1161 lcall _DLY_us
1162 ; assignBit
000274 C2 96 [12] 1163 clr _PP16
1164 ; src/dap.c:139: ack = bits << 0;
1165 ; src/dap.c:140: SWD_READ_BIT(bits);
000276 A2 95 [12] 1166 mov c,_PP15
000278 E4 [12] 1167 clr a
000279 33 [12] 1168 rlc a
00027A FD [12] 1169 mov r5,a
00027B 85*00 82 [24] 1170 mov dpl,_ring_swd_half_period_us
00027E 85*01 83 [24] 1171 mov dph,(_ring_swd_half_period_us + 1)
000281 C0 05 [24] 1172 push ar5
000283 12r00r00 [24] 1173 lcall _DLY_us
1174 ; assignBit
000286 D2 96 [12] 1175 setb _PP16
000288 85*00 82 [24] 1176 mov dpl,_ring_swd_half_period_us
00028B 85*01 83 [24] 1177 mov dph,(_ring_swd_half_period_us + 1)
00028E 12r00r00 [24] 1178 lcall _DLY_us
000291 D0 05 [24] 1179 pop ar5
000293 D0 06 [24] 1180 pop ar6
1181 ; assignBit
000295 C2 96 [12] 1182 clr _PP16
1183 ; src/dap.c:141: ack |= bits << 1;
000297 ED [12] 1184 mov a,r5
000298 2D [12] 1185 add a,r5
000299 FD [12] 1186 mov r5,a
00029A EE [12] 1187 mov a,r6
00029B 42 05 [12] 1188 orl ar5,a
1189 ; src/dap.c:142: SWD_READ_BIT(bits);
00029D A2 95 [12] 1190 mov c,_PP15
00029F E4 [12] 1191 clr a
0002A0 33 [12] 1192 rlc a
0002A1 FE [12] 1193 mov r6,a
0002A2 85*00 82 [24] 1194 mov dpl,_ring_swd_half_period_us
0002A5 85*01 83 [24] 1195 mov dph,(_ring_swd_half_period_us + 1)
0002A8 C0 06 [24] 1196 push ar6
0002AA C0 05 [24] 1197 push ar5
0002AC 12r00r00 [24] 1198 lcall _DLY_us
1199 ; assignBit
0002AF D2 96 [12] 1200 setb _PP16
0002B1 85*00 82 [24] 1201 mov dpl,_ring_swd_half_period_us
0002B4 85*01 83 [24] 1202 mov dph,(_ring_swd_half_period_us + 1)
0002B7 12r00r00 [24] 1203 lcall _DLY_us
0002BA D0 05 [24] 1204 pop ar5
0002BC D0 06 [24] 1205 pop ar6
0002BE D0 07 [24] 1206 pop ar7
1207 ; assignBit
0002C0 C2 96 [12] 1208 clr _PP16
1209 ; src/dap.c:143: ack |= bits << 2;
0002C2 EE [12] 1210 mov a,r6
0002C3 2E [12] 1211 add a,r6
0002C4 25 E0 [12] 1212 add a,acc
0002C6 FE [12] 1213 mov r6,a
0002C7 ED [12] 1214 mov a,r5
0002C8 42 06 [12] 1215 orl ar6,a
1216 ; src/dap.c:145: if(ack == DAP_TRANSFER_OK) {
0002CA BE 01 02 [24] 1217 cjne r6,#0x01,00245$
0002CD 80 03 [24] 1218 sjmp 00246$
0002CF 1219 00245$:
0002CF 02r04r53 [24] 1220 ljmp 00120$
0002D2 1221 00246$:
1222 ; src/dap.c:148: if(req & DAP_TRANSFER_RnW) { // read data
0002D2 EF [12] 1223 mov a,r7
0002D3 20 E1 03 [24] 1224 jb acc.1,00247$
0002D6 02r03r8C [24] 1225 ljmp 00114$
0002D9 1226 00247$:
1227 ; src/dap.c:149: val = 0U;
0002D9 7F 00 [12] 1228 mov r7,#0x00
1229 ; src/dap.c:150: parity = 0U;
0002DB 7D 00 [12] 1230 mov r5,#0x00
1231 ; src/dap.c:151: for(m = 0; m < 4; m++) {
0002DD 7C 00 [12] 1232 mov r4,#0x00
1233 ; src/dap.c:152: for(n = 8U; n; n--) {
0002DF 1234 00143$:
0002DF 7B 08 [12] 1235 mov r3,#0x08
0002E1 1236 00127$:
1237 ; src/dap.c:153: SWD_READ_BIT(bits); // read RDATA[0:31]
0002E1 A2 95 [12] 1238 mov c,_PP15
0002E3 E4 [12] 1239 clr a
0002E4 33 [12] 1240 rlc a
0002E5 FA [12] 1241 mov r2,a
0002E6 85*00 82 [24] 1242 mov dpl,_ring_swd_half_period_us
0002E9 85*01 83 [24] 1243 mov dph,(_ring_swd_half_period_us + 1)
0002EC C0 07 [24] 1244 push ar7
0002EE C0 06 [24] 1245 push ar6
0002F0 C0 05 [24] 1246 push ar5
0002F2 C0 04 [24] 1247 push ar4
0002F4 C0 03 [24] 1248 push ar3
0002F6 C0 02 [24] 1249 push ar2
0002F8 12r00r00 [24] 1250 lcall _DLY_us
1251 ; assignBit
0002FB D2 96 [12] 1252 setb _PP16
0002FD 85*00 82 [24] 1253 mov dpl,_ring_swd_half_period_us
000300 85*01 83 [24] 1254 mov dph,(_ring_swd_half_period_us + 1)
000303 12r00r00 [24] 1255 lcall _DLY_us
000306 D0 02 [24] 1256 pop ar2
000308 D0 03 [24] 1257 pop ar3
00030A D0 04 [24] 1258 pop ar4
00030C D0 05 [24] 1259 pop ar5
00030E D0 06 [24] 1260 pop ar6
000310 D0 07 [24] 1261 pop ar7
1262 ; assignBit
000312 C2 96 [12] 1263 clr _PP16
1264 ; src/dap.c:154: parity += bits;
000314 EA [12] 1265 mov a,r2
000315 2D [12] 1266 add a,r5
000316 FD [12] 1267 mov r5,a
1268 ; src/dap.c:155: val >>= 1;
000317 EF [12] 1269 mov a,r7
000318 C3 [12] 1270 clr c
000319 13 [12] 1271 rrc a
00031A FF [12] 1272 mov r7,a
1273 ; src/dap.c:156: if(bits) val |= 0x80;
00031B EA [12] 1274 mov a,r2
00031C 60 03 [24] 1275 jz 00128$
00031E 43 07 80 [24] 1276 orl ar7,#0x80
000321 1277 00128$:
1278 ; src/dap.c:152: for(n = 8U; n; n--) {
000321 DB BE [24] 1279 djnz r3,00127$
1280 ; src/dap.c:158: if(data) data[m] = val;
000323 E5*08 [12] 1281 mov a,_SWD_Transfer_PARM_2
000325 45*09 [12] 1282 orl a,(_SWD_Transfer_PARM_2 + 1)
000327 60 0C [24] 1283 jz 00130$
000329 EC [12] 1284 mov a,r4
00032A 25*08 [12] 1285 add a,_SWD_Transfer_PARM_2
00032C F5 82 [12] 1286 mov dpl,a
00032E E4 [12] 1287 clr a
00032F 35*09 [12] 1288 addc a,(_SWD_Transfer_PARM_2 + 1)
000331 F5 83 [12] 1289 mov dph,a
000333 EF [12] 1290 mov a,r7
000334 F0 [24] 1291 movx @dptr,a
000335 1292 00130$:
1293 ; src/dap.c:151: for(m = 0; m < 4; m++) {
000335 0C [12] 1294 inc r4
000336 BC 04 00 [24] 1295 cjne r4,#0x04,00251$
000339 1296 00251$:
000339 40 A4 [24] 1297 jc 00143$
1298 ; src/dap.c:160: SWD_READ_BIT(bits); // read parity
00033B A2 95 [12] 1299 mov c,_PP15
00033D E4 [12] 1300 clr a
00033E 33 [12] 1301 rlc a
00033F FF [12] 1302 mov r7,a
000340 85*00 82 [24] 1303 mov dpl,_ring_swd_half_period_us
000343 85*01 83 [24] 1304 mov dph,(_ring_swd_half_period_us + 1)
000346 C0 07 [24] 1305 push ar7
000348 C0 06 [24] 1306 push ar6
00034A C0 05 [24] 1307 push ar5
00034C 12r00r00 [24] 1308 lcall _DLY_us
1309 ; assignBit
00034F D2 96 [12] 1310 setb _PP16
000351 85*00 82 [24] 1311 mov dpl,_ring_swd_half_period_us
000354 85*01 83 [24] 1312 mov dph,(_ring_swd_half_period_us + 1)
000357 12r00r00 [24] 1313 lcall _DLY_us
00035A D0 05 [24] 1314 pop ar5
00035C D0 06 [24] 1315 pop ar6
00035E D0 07 [24] 1316 pop ar7
1317 ; assignBit
000360 C2 96 [12] 1318 clr _PP16
1319 ; src/dap.c:161: if((parity ^ bits) & 1U)
000362 EF [12] 1320 mov a,r7
000363 6D [12] 1321 xrl a,r5
000364 30 E0 02 [24] 1322 jnb acc.0,00108$
1323 ; src/dap.c:162: ack = DAP_TRANSFER_ERROR;
000367 7E 08 [12] 1324 mov r6,#0x08
000369 1325 00108$:
1326 ; src/dap.c:165: SWD_CLOCK_CYCLE();
000369 85*00 82 [24] 1327 mov dpl,_ring_swd_half_period_us
00036C 85*01 83 [24] 1328 mov dph,(_ring_swd_half_period_us + 1)
00036F C0 06 [24] 1329 push ar6
000371 12r00r00 [24] 1330 lcall _DLY_us
1331 ; assignBit
000374 D2 96 [12] 1332 setb _PP16
000376 85*00 82 [24] 1333 mov dpl,_ring_swd_half_period_us
000379 85*01 83 [24] 1334 mov dph,(_ring_swd_half_period_us + 1)
00037C 12r00r00 [24] 1335 lcall _DLY_us
00037F D0 06 [24] 1336 pop ar6
1337 ; assignBit
000381 C2 96 [12] 1338 clr _PP16
1339 ; src/dap.c:166: SWD_OUT_ENABLE();
000383 43 92 20 [24] 1340 orl _P1_MOD_OC,#0x20
000386 53 93 DF [24] 1341 anl _P1_DIR_PU,#0xdf
000389 02r04r22 [24] 1342 ljmp 00115$
00038C 1343 00114$:
1344 ; src/dap.c:170: SWD_CLOCK_CYCLE();
00038C 85*00 82 [24] 1345 mov dpl,_ring_swd_half_period_us
00038F 85*01 83 [24] 1346 mov dph,(_ring_swd_half_period_us + 1)
000392 C0 06 [24] 1347 push ar6
000394 12r00r00 [24] 1348 lcall _DLY_us
1349 ; assignBit
000397 D2 96 [12] 1350 setb _PP16
000399 85*00 82 [24] 1351 mov dpl,_ring_swd_half_period_us
00039C 85*01 83 [24] 1352 mov dph,(_ring_swd_half_period_us + 1)
00039F 12r00r00 [24] 1353 lcall _DLY_us
0003A2 D0 06 [24] 1354 pop ar6
1355 ; assignBit
0003A4 C2 96 [12] 1356 clr _PP16
1357 ; src/dap.c:171: SWD_OUT_ENABLE();
0003A6 43 92 20 [24] 1358 orl _P1_MOD_OC,#0x20
0003A9 53 93 DF [24] 1359 anl _P1_DIR_PU,#0xdf
1360 ; src/dap.c:175: for(m = 0; m < 4; m++) {
0003AC 7F 00 [12] 1361 mov r7,#0x00
0003AE 7D 00 [12] 1362 mov r5,#0x00
0003B0 1363 00133$:
1364 ; src/dap.c:176: val = data[m];
0003B0 ED [12] 1365 mov a,r5
0003B1 25*08 [12] 1366 add a,_SWD_Transfer_PARM_2
0003B3 F5 82 [12] 1367 mov dpl,a
0003B5 E4 [12] 1368 clr a
0003B6 35*09 [12] 1369 addc a,(_SWD_Transfer_PARM_2 + 1)
0003B8 F5 83 [12] 1370 mov dph,a
0003BA E0 [24] 1371 movx a,@dptr
0003BB FC [12] 1372 mov r4,a
1373 ; src/dap.c:177: ACC = val;
0003BC 8C E0 [24] 1374 mov _ACC,r4
1375 ; src/dap.c:178: if(P) parity++;
0003BE 30 D0 01 [24] 1376 jnb _P,00150$
0003C1 0F [12] 1377 inc r7
1378 ; src/dap.c:179: for(n = 8U; n; n--) {
0003C2 1379 00150$:
0003C2 7B 08 [12] 1380 mov r3,#0x08
0003C4 1381 00131$:
1382 ; src/dap.c:180: SWD_WRITE_BIT(val);
0003C4 EC [12] 1383 mov a,r4
0003C5 54 01 [12] 1384 anl a,#0x01
1385 ; assignBit
0003C7 24 FF [12] 1386 add a,#0xff
0003C9 92 95 [24] 1387 mov _PP15,c
0003CB 85*00 82 [24] 1388 mov dpl,_ring_swd_half_period_us
0003CE 85*01 83 [24] 1389 mov dph,(_ring_swd_half_period_us + 1)
0003D1 C0 07 [24] 1390 push ar7
0003D3 C0 06 [24] 1391 push ar6
0003D5 C0 05 [24] 1392 push ar5
0003D7 C0 04 [24] 1393 push ar4
0003D9 C0 03 [24] 1394 push ar3
0003DB 12r00r00 [24] 1395 lcall _DLY_us
1396 ; assignBit
0003DE D2 96 [12] 1397 setb _PP16
0003E0 85*00 82 [24] 1398 mov dpl,_ring_swd_half_period_us
0003E3 85*01 83 [24] 1399 mov dph,(_ring_swd_half_period_us + 1)
0003E6 12r00r00 [24] 1400 lcall _DLY_us
0003E9 D0 03 [24] 1401 pop ar3
0003EB D0 04 [24] 1402 pop ar4
0003ED D0 05 [24] 1403 pop ar5
0003EF D0 06 [24] 1404 pop ar6
0003F1 D0 07 [24] 1405 pop ar7
1406 ; assignBit
0003F3 C2 96 [12] 1407 clr _PP16
1408 ; src/dap.c:181: val >>= 1;
0003F5 EC [12] 1409 mov a,r4
0003F6 C3 [12] 1410 clr c
0003F7 13 [12] 1411 rrc a
0003F8 FC [12] 1412 mov r4,a
1413 ; src/dap.c:179: for(n = 8U; n; n--) {
0003F9 DB C9 [24] 1414 djnz r3,00131$
1415 ; src/dap.c:175: for(m = 0; m < 4; m++) {
0003FB 0D [12] 1416 inc r5
0003FC BD 04 00 [24] 1417 cjne r5,#0x04,00256$
0003FF 1418 00256$:
0003FF 40 AF [24] 1419 jc 00133$
1420 ; src/dap.c:184: SWD_WRITE_BIT(parity); // write parity bit
000401 EF [12] 1421 mov a,r7
000402 54 01 [12] 1422 anl a,#0x01
1423 ; assignBit
000404 24 FF [12] 1424 add a,#0xff
000406 92 95 [24] 1425 mov _PP15,c
000408 85*00 82 [24] 1426 mov dpl,_ring_swd_half_period_us
00040B 85*01 83 [24] 1427 mov dph,(_ring_swd_half_period_us + 1)
00040E C0 06 [24] 1428 push ar6
000410 12r00r00 [24] 1429 lcall _DLY_us
1430 ; assignBit
000413 D2 96 [12] 1431 setb _PP16
000415 85*00 82 [24] 1432 mov dpl,_ring_swd_half_period_us
000418 85*01 83 [24] 1433 mov dph,(_ring_swd_half_period_us + 1)
00041B 12r00r00 [24] 1434 lcall _DLY_us
00041E D0 06 [24] 1435 pop ar6
1436 ; assignBit
000420 C2 96 [12] 1437 clr _PP16
000422 1438 00115$:
1439 ; src/dap.c:187: SWD_SET(0);
1440 ; assignBit
000422 C2 95 [12] 1441 clr _PP15
1442 ; src/dap.c:188: n = idle_cycles;
000424 78r00 [12] 1443 mov r0,#_idle_cycles
1444 ; src/dap.c:189: if(n) {
000426 E6 [12] 1445 mov a,@r0
000427 FF [12] 1446 mov r7,a
000428 60 24 [24] 1447 jz 00118$
1448 ; src/dap.c:190: for(; n; n--) SWD_CLOCK_CYCLE();
00042A 1449 00136$:
00042A EF [12] 1450 mov a,r7
00042B 60 21 [24] 1451 jz 00118$
00042D 85*00 82 [24] 1452 mov dpl,_ring_swd_half_period_us
000430 85*01 83 [24] 1453 mov dph,(_ring_swd_half_period_us + 1)
000433 C0 07 [24] 1454 push ar7
000435 C0 06 [24] 1455 push ar6
000437 12r00r00 [24] 1456 lcall _DLY_us
1457 ; assignBit
00043A D2 96 [12] 1458 setb _PP16
00043C 85*00 82 [24] 1459 mov dpl,_ring_swd_half_period_us
00043F 85*01 83 [24] 1460 mov dph,(_ring_swd_half_period_us + 1)
000442 12r00r00 [24] 1461 lcall _DLY_us
000445 D0 06 [24] 1462 pop ar6
000447 D0 07 [24] 1463 pop ar7
1464 ; assignBit
000449 C2 96 [12] 1465 clr _PP16
00044B 1F [12] 1466 dec r7
00044C 80 DC [24] 1467 sjmp 00136$
00044E 1468 00118$:
1469 ; src/dap.c:192: SWD_SET(1);
1470 ; assignBit
00044E D2 95 [12] 1471 setb _PP15
1472 ; src/dap.c:193: return(ack);
000450 8E 82 [24] 1473 mov dpl,r6
000452 22 [24] 1474 ret
000453 1475 00120$:
1476 ; src/dap.c:196: if((ack == DAP_TRANSFER_WAIT) || (ack == DAP_TRANSFER_FAULT)) {
000453 BE 02 02 [24] 1477 cjne r6,#0x02,00260$
000456 80 03 [24] 1478 sjmp 00121$
000458 1479 00260$:
000458 BE 04 25 [24] 1480 cjne r6,#0x04,00157$
00045B 1481 00121$:
1482 ; src/dap.c:198: SWD_CLOCK_CYCLE();
00045B 85*00 82 [24] 1483 mov dpl,_ring_swd_half_period_us
00045E 85*01 83 [24] 1484 mov dph,(_ring_swd_half_period_us + 1)
000461 C0 06 [24] 1485 push ar6
000463 12r00r00 [24] 1486 lcall _DLY_us
1487 ; assignBit
000466 D2 96 [12] 1488 setb _PP16
000468 85*00 82 [24] 1489 mov dpl,_ring_swd_half_period_us
00046B 85*01 83 [24] 1490 mov dph,(_ring_swd_half_period_us + 1)
00046E 12r00r00 [24] 1491 lcall _DLY_us
000471 D0 06 [24] 1492 pop ar6
1493 ; assignBit
000473 C2 96 [12] 1494 clr _PP16
1495 ; src/dap.c:199: SWD_OUT_ENABLE();
000475 43 92 20 [24] 1496 orl _P1_MOD_OC,#0x20
000478 53 93 DF [24] 1497 anl _P1_DIR_PU,#0xdf
1498 ; src/dap.c:200: SWD_SET(1);
1499 ; assignBit
00047B D2 95 [12] 1500 setb _PP15
1501 ; src/dap.c:201: return(ack);
00047D 8E 82 [24] 1502 mov dpl,r6
1503 ; src/dap.c:206: do {
00047F 22 [24] 1504 ret
000480 1505 00157$:
000480 7F 22 [12] 1506 mov r7,#0x22
000482 1507 00124$:
1508 ; src/dap.c:207: SWD_CLOCK_CYCLE(); // back off data phase
000482 85*00 82 [24] 1509 mov dpl,_ring_swd_half_period_us
000485 85*01 83 [24] 1510 mov dph,(_ring_swd_half_period_us + 1)
000488 C0 07 [24] 1511 push ar7
00048A C0 06 [24] 1512 push ar6
00048C 12r00r00 [24] 1513 lcall _DLY_us
1514 ; assignBit
00048F D2 96 [12] 1515 setb _PP16
000491 85*00 82 [24] 1516 mov dpl,_ring_swd_half_period_us
000494 85*01 83 [24] 1517 mov dph,(_ring_swd_half_period_us + 1)
000497 12r00r00 [24] 1518 lcall _DLY_us
00049A D0 06 [24] 1519 pop ar6
00049C D0 07 [24] 1520 pop ar7
1521 ; assignBit
00049E C2 96 [12] 1522 clr _PP16
1523 ; src/dap.c:208: } while(--n);
0004A0 DF E0 [24] 1524 djnz r7,00124$
1525 ; src/dap.c:210: SWD_OUT_ENABLE();
0004A2 43 92 20 [24] 1526 orl _P1_MOD_OC,#0x20
0004A5 53 93 DF [24] 1527 anl _P1_DIR_PU,#0xdf
1528 ; src/dap.c:211: SWD_SET(1);
1529 ; assignBit
0004A8 D2 95 [12] 1530 setb _PP15
1531 ; src/dap.c:212: return(ack);
0004AA 8E 82 [24] 1532 mov dpl,r6
1533 ; src/dap.c:213: }
0004AC 22 [24] 1534 ret
1535 ;------------------------------------------------------------
1536 ;Allocation info for local variables in function 'DAP_Info'
1537 ;------------------------------------------------------------
1538 ;info Allocated with name '_DAP_Info_PARM_2'
1539 ;id Allocated to registers r7
1540 ;length Allocated to registers r6
1541 ;------------------------------------------------------------
1542 ; src/dap.c:221: static uint8_t DAP_Info(uint8_t id, __xdata uint8_t *info) {
1543 ; -----------------------------------------
1544 ; function DAP_Info
1545 ; -----------------------------------------
0004AD 1546 _DAP_Info:
0004AD AF 82 [24] 1547 mov r7,dpl
1548 ; src/dap.c:222: uint8_t length = 0U;
0004AF 7E 00 [12] 1549 mov r6,#0x00
1550 ; src/dap.c:223: switch(id) {
0004B1 BF 04 02 [24] 1551 cjne r7,#0x04,00125$
0004B4 80 0F [24] 1552 sjmp 00101$
0004B6 1553 00125$:
0004B6 BF F0 02 [24] 1554 cjne r7,#0xf0,00126$
0004B9 80 2A [24] 1555 sjmp 00102$
0004BB 1556 00126$:
0004BB BF FE 02 [24] 1557 cjne r7,#0xfe,00127$
0004BE 80 48 [24] 1558 sjmp 00104$
0004C0 1559 00127$:
1560 ; src/dap.c:224: case DAP_ID_FW_VER:
0004C0 BF FF 50 [24] 1561 cjne r7,#0xff,00106$
0004C3 80 2D [24] 1562 sjmp 00103$
0004C5 1563 00101$:
1564 ; src/dap.c:225: length = (uint8_t)sizeof(DAP_FW_VER);
0004C5 7E 06 [12] 1565 mov r6,#0x06
1566 ; src/dap.c:226: strcpy(info, DAP_FW_VER );
0004C7 AC*0A [24] 1567 mov r4,_DAP_Info_PARM_2
0004C9 AD*0B [24] 1568 mov r5,(_DAP_Info_PARM_2 + 1)
0004CB 7F 00 [12] 1569 mov r7,#0x00
0004CD 75*00r00 [24] 1570 mov _strcpy_PARM_2,#__str_0
0004D0 75*01s00 [24] 1571 mov (_strcpy_PARM_2 + 1),#(__str_0 >> 8)
0004D3 75*02 80 [24] 1572 mov (_strcpy_PARM_2 + 2),#0x80
0004D6 8C 82 [24] 1573 mov dpl,r4
0004D8 8D 83 [24] 1574 mov dph,r5
0004DA 8F F0 [24] 1575 mov b,r7
0004DC C0 06 [24] 1576 push ar6
0004DE 12r00r00 [24] 1577 lcall _strcpy
0004E1 D0 06 [24] 1578 pop ar6
1579 ; src/dap.c:227: break;
1580 ; src/dap.c:228: case DAP_ID_CAPABILITIES:
0004E3 80 2E [24] 1581 sjmp 00106$
0004E5 1582 00102$:
1583 ; src/dap.c:229: info[0] = DAP_PORT_SWD;
0004E5 85*0A 82 [24] 1584 mov dpl,_DAP_Info_PARM_2
0004E8 85*0B 83 [24] 1585 mov dph,(_DAP_Info_PARM_2 + 1)
0004EB 74 01 [12] 1586 mov a,#0x01
0004ED F0 [24] 1587 movx @dptr,a
1588 ; src/dap.c:230: length = 1U;
0004EE 7E 01 [12] 1589 mov r6,#0x01
1590 ; src/dap.c:231: break;
1591 ; src/dap.c:232: case DAP_ID_PACKET_SIZE:
0004F0 80 21 [24] 1592 sjmp 00106$
0004F2 1593 00103$:
1594 ; src/dap.c:233: info[0] = DAP_PACKET_SIZE;
0004F2 AD*0A [24] 1595 mov r5,_DAP_Info_PARM_2
0004F4 AF*0B [24] 1596 mov r7,(_DAP_Info_PARM_2 + 1)
0004F6 8D 82 [24] 1597 mov dpl,r5
0004F8 8F 83 [24] 1598 mov dph,r7
0004FA 74 40 [12] 1599 mov a,#0x40
0004FC F0 [24] 1600 movx @dptr,a
1601 ; src/dap.c:234: info[1] = 0;
0004FD 8D 82 [24] 1602 mov dpl,r5
0004FF 8F 83 [24] 1603 mov dph,r7
000501 A3 [24] 1604 inc dptr
000502 E4 [12] 1605 clr a
000503 F0 [24] 1606 movx @dptr,a
1607 ; src/dap.c:235: length = 2U;
000504 7E 02 [12] 1608 mov r6,#0x02
1609 ; src/dap.c:236: break;
1610 ; src/dap.c:237: case DAP_ID_PACKET_COUNT:
000506 80 0B [24] 1611 sjmp 00106$
000508 1612 00104$:
1613 ; src/dap.c:238: info[0] = DAP_PACKET_COUNT;
000508 85*0A 82 [24] 1614 mov dpl,_DAP_Info_PARM_2
00050B 85*0B 83 [24] 1615 mov dph,(_DAP_Info_PARM_2 + 1)
00050E 74 01 [12] 1616 mov a,#0x01
000510 F0 [24] 1617 movx @dptr,a
1618 ; src/dap.c:239: length = 1U;
000511 7E 01 [12] 1619 mov r6,#0x01
1620 ; src/dap.c:243: }
000513 1621 00106$:
1622 ; src/dap.c:244: return length;
000513 8E 82 [24] 1623 mov dpl,r6
1624 ; src/dap.c:245: }
000515 22 [24] 1625 ret
1626 ;------------------------------------------------------------
1627 ;Allocation info for local variables in function 'DAP_HostStatus'
1628 ;------------------------------------------------------------
1629 ;res Allocated with name '_DAP_HostStatus_PARM_2'
1630 ;req Allocated to registers r6 r7
1631 ;------------------------------------------------------------
1632 ; src/dap.c:253: static uint8_t DAP_HostStatus(const __xdata uint8_t *req, __xdata uint8_t *res) {
1633 ; -----------------------------------------
1634 ; function DAP_HostStatus
1635 ; -----------------------------------------
000516 1636 _DAP_HostStatus:
000516 AE 82 [24] 1637 mov r6,dpl
000518 AF 83 [24] 1638 mov r7,dph
1639 ; src/dap.c:254: *res = DAP_OK;
00051A AC*00 [24] 1640 mov r4,_DAP_HostStatus_PARM_2
00051C AD*01 [24] 1641 mov r5,(_DAP_HostStatus_PARM_2 + 1)
00051E 8C 82 [24] 1642 mov dpl,r4
000520 8D 83 [24] 1643 mov dph,r5
000522 E4 [12] 1644 clr a
000523 F0 [24] 1645 movx @dptr,a
1646 ; src/dap.c:255: switch(*req) {
000524 8E 82 [24] 1647 mov dpl,r6
000526 8F 83 [24] 1648 mov dph,r7
000528 E0 [24] 1649 movx a,@dptr
000529 FF [12] 1650 mov r7,a
00052A 60 0C [24] 1651 jz 00104$
00052C BF 01 02 [24] 1652 cjne r7,#0x01,00116$
00052F 80 07 [24] 1653 sjmp 00104$
000531 1654 00116$:
1655 ; src/dap.c:263: *res = DAP_ERROR;
000531 8C 82 [24] 1656 mov dpl,r4
000533 8D 83 [24] 1657 mov dph,r5
000535 74 FF [12] 1658 mov a,#0xff
000537 F0 [24] 1659 movx @dptr,a
1660 ; src/dap.c:264: }
000538 1661 00104$:
1662 ; src/dap.c:265: return 1;
000538 75 82 01 [24] 1663 mov dpl,#0x01
1664 ; src/dap.c:266: }
00053B 22 [24] 1665 ret
1666 ;------------------------------------------------------------
1667 ;Allocation info for local variables in function 'DAP_Connect'
1668 ;------------------------------------------------------------
1669 ;res Allocated with name '_DAP_Connect_PARM_2'
1670 ;req Allocated to registers r6 r7
1671 ;port Allocated to registers r6
1672 ;------------------------------------------------------------
1673 ; src/dap.c:275: static uint8_t DAP_Connect(const __xdata uint8_t *req, __xdata uint8_t *res) {
1674 ; -----------------------------------------
1675 ; function DAP_Connect
1676 ; -----------------------------------------
00053C 1677 _DAP_Connect:
1678 ; src/dap.c:277: if(*req == DAP_PORT_AUTODETECT) port = DAP_DEFAULT_PORT;
00053C E0 [24] 1679 movx a,@dptr
00053D FF [12] 1680 mov r7,a
00053E 70 04 [24] 1681 jnz 00102$
000540 7E 01 [12] 1682 mov r6,#0x01
000542 80 02 [24] 1683 sjmp 00103$
000544 1684 00102$:
1685 ; src/dap.c:278: else port = *req;
000544 8F 06 [24] 1686 mov ar6,r7
000546 1687 00103$:
1688 ; src/dap.c:280: switch(port) {
000546 BE 01 25 [24] 1689 cjne r6,#0x01,00108$
1690 ; src/dap.c:282: debug_port = DAP_PORT_SWD;
000549 78r01 [12] 1691 mov r0,#_debug_port
00054B 76 01 [12] 1692 mov @r0,#0x01
1693 ; src/dap.c:283: PORT_SWD_CONNECT();
1694 ; assignBit
00054D C2 94 [12] 1695 clr _PP14
00054F 75 82 01 [24] 1696 mov dpl,#0x01
000552 C0 06 [24] 1697 push ar6
000554 12r00r00 [24] 1698 lcall _ring_probe_reset
1699 ; assignBit
000557 D2 95 [12] 1700 setb _PP15
000559 43 92 20 [24] 1701 orl _P1_MOD_OC,#0x20
00055C 53 93 DF [24] 1702 anl _P1_DIR_PU,#0xdf
1703 ; assignBit
00055F C2 96 [12] 1704 clr _PP16
000561 53 92 BF [24] 1705 anl _P1_MOD_OC,#0xbf
000564 43 93 40 [24] 1706 orl _P1_DIR_PU,#0x40
000567 12r00r00 [24] 1707 lcall _ring_probe_enable
00056A D0 06 [24] 1708 pop ar6
1709 ; src/dap.c:284: break;
1710 ; src/dap.c:285: default:
00056C 80 02 [24] 1711 sjmp 00109$
00056E 1712 00108$:
1713 ; src/dap.c:286: port = DAP_PORT_DISABLED;
00056E 7E 00 [12] 1714 mov r6,#0x00
1715 ; src/dap.c:288: }
000570 1716 00109$:
1717 ; src/dap.c:290: *res = port;
000570 85*0C 82 [24] 1718 mov dpl,_DAP_Connect_PARM_2
000573 85*0D 83 [24] 1719 mov dph,(_DAP_Connect_PARM_2 + 1)
000576 EE [12] 1720 mov a,r6
000577 F0 [24] 1721 movx @dptr,a
1722 ; src/dap.c:291: return 1;
000578 75 82 01 [24] 1723 mov dpl,#0x01
1724 ; src/dap.c:292: }
00057B 22 [24] 1725 ret
1726 ;------------------------------------------------------------
1727 ;Allocation info for local variables in function 'DAP_Disconnect'
1728 ;------------------------------------------------------------
1729 ;res Allocated to registers r6 r7
1730 ;------------------------------------------------------------
1731 ; src/dap.c:299: static uint8_t DAP_Disconnect(__xdata uint8_t *res) {
1732 ; -----------------------------------------
1733 ; function DAP_Disconnect
1734 ; -----------------------------------------
00057C 1735 _DAP_Disconnect:
1736 ; src/dap.c:300: *res = DAP_OK;
00057C E4 [12] 1737 clr a
00057D F0 [24] 1738 movx @dptr,a
1739 ; src/dap.c:301: debug_port = DAP_PORT_DISABLED;
00057E 78r01 [12] 1740 mov r0,#_debug_port
000580 76 00 [12] 1741 mov @r0,#0x00
1742 ; src/dap.c:302: PORT_SWD_DISCONNECT();
1743 ; assignBit
000582 C2 94 [12] 1744 clr _PP14
000584 75 82 01 [24] 1745 mov dpl,#0x01
000587 12r00r00 [24] 1746 lcall _ring_probe_reset
00058A 53 93 DF [24] 1747 anl _P1_DIR_PU,#0xdf
00058D 53 92 DF [24] 1748 anl _P1_MOD_OC,#0xdf
000590 53 93 BF [24] 1749 anl _P1_DIR_PU,#0xbf
000593 53 92 BF [24] 1750 anl _P1_MOD_OC,#0xbf
1751 ; src/dap.c:303: return 1;
000596 75 82 01 [24] 1752 mov dpl,#0x01
1753 ; src/dap.c:304: }
000599 22 [24] 1754 ret
1755 ;------------------------------------------------------------
1756 ;Allocation info for local variables in function 'DAP_SWJ_Pins'
1757 ;------------------------------------------------------------
1758 ;res Allocated with name '_DAP_SWJ_Pins_PARM_2'
1759 ;req Allocated to registers r6 r7
1760 ;value Allocated to registers r7
1761 ;select Allocated to registers r4
1762 ;wait Allocated to registers r3 r2
1763 ;sloc0 Allocated with name '_DAP_SWJ_Pins_sloc0_1_0'
1764 ;sloc1 Allocated with name '_DAP_SWJ_Pins_sloc1_1_0'
1765 ;sloc2 Allocated with name '_DAP_SWJ_Pins_sloc2_1_0'
1766 ;sloc4 Allocated with name '_DAP_SWJ_Pins_sloc4_1_0'
1767 ;------------------------------------------------------------
1768 ; src/dap.c:312: static uint8_t DAP_SWJ_Pins(const __xdata uint8_t *req, __xdata uint8_t *res) {
1769 ; -----------------------------------------
1770 ; function DAP_SWJ_Pins
1771 ; -----------------------------------------
00059A 1772 _DAP_SWJ_Pins:
1773 ; src/dap.c:317: value = * (req + 0);
00059A AE 82 [24] 1774 mov r6,dpl
00059C AF 83 [24] 1775 mov r7,dph
00059E E0 [24] 1776 movx a,@dptr
00059F FD [12] 1777 mov r5,a
1778 ; src/dap.c:318: select = (uint8_t) * (req + 1);
0005A0 8E 82 [24] 1779 mov dpl,r6
0005A2 8F 83 [24] 1780 mov dph,r7
0005A4 A3 [24] 1781 inc dptr
0005A5 E0 [24] 1782 movx a,@dptr
0005A6 FC [12] 1783 mov r4,a
1784 ; src/dap.c:319: wait = (uint16_t)(*(req + 2) << 0) | (uint16_t)(*(req + 3) << 8);
0005A7 8E 82 [24] 1785 mov dpl,r6
0005A9 8F 83 [24] 1786 mov dph,r7
0005AB A3 [24] 1787 inc dptr
0005AC A3 [24] 1788 inc dptr
0005AD E0 [24] 1789 movx a,@dptr
0005AE FB [12] 1790 mov r3,a
0005AF 7A 00 [12] 1791 mov r2,#0x00
0005B1 8E 82 [24] 1792 mov dpl,r6
0005B3 8F 83 [24] 1793 mov dph,r7
0005B5 A3 [24] 1794 inc dptr
0005B6 A3 [24] 1795 inc dptr
0005B7 A3 [24] 1796 inc dptr
0005B8 E0 [24] 1797 movx a,@dptr
0005B9 F9 [12] 1798 mov r1,a
0005BA E4 [12] 1799 clr a
0005BB 42 03 [12] 1800 orl ar3,a
0005BD E9 [12] 1801 mov a,r1
0005BE 42 02 [12] 1802 orl ar2,a
1803 ; src/dap.c:320: if((uint8_t)(*(req + 4)) || (uint8_t)(*(req + 5))) wait |= 0x8000;
0005C0 74 04 [12] 1804 mov a,#0x04
0005C2 2E [12] 1805 add a,r6
0005C3 F8 [12] 1806 mov r0,a
0005C4 E4 [12] 1807 clr a
0005C5 3F [12] 1808 addc a,r7
0005C6 F9 [12] 1809 mov r1,a
0005C7 88 82 [24] 1810 mov dpl,r0
0005C9 89 83 [24] 1811 mov dph,r1
0005CB E0 [24] 1812 movx a,@dptr
0005CC 70 0E [24] 1813 jnz 00101$
0005CE 74 05 [12] 1814 mov a,#0x05
0005D0 2E [12] 1815 add a,r6
0005D1 FE [12] 1816 mov r6,a
0005D2 E4 [12] 1817 clr a
0005D3 3F [12] 1818 addc a,r7
0005D4 FF [12] 1819 mov r7,a
0005D5 8E 82 [24] 1820 mov dpl,r6
0005D7 8F 83 [24] 1821 mov dph,r7
0005D9 E0 [24] 1822 movx a,@dptr
0005DA 60 0B [24] 1823 jz 00102$
0005DC 1824 00101$:
0005DC 8B 06 [24] 1825 mov ar6,r3
0005DE 8A 07 [24] 1826 mov ar7,r2
0005E0 43 07 80 [24] 1827 orl ar7,#0x80
0005E3 8E 03 [24] 1828 mov ar3,r6
0005E5 8F 02 [24] 1829 mov ar2,r7
0005E7 1830 00102$:
1831 ; src/dap.c:322: if((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) {
0005E7 EC [12] 1832 mov a,r4
0005E8 30 E0 12 [24] 1833 jnb acc.0,00105$
1834 ; src/dap.c:323: ((value & DAP_SWJ_SWCLK_TCK_BIT) != 0U) ? (SWK_SET(1)) : (SWK_SET(0));
0005EB 8D 06 [24] 1835 mov ar6,r5
0005ED 7F 00 [12] 1836 mov r7,#0x00
0005EF EE [12] 1837 mov a,r6
0005F0 30 E0 06 [24] 1838 jnb acc.0,00129$
1839 ; assignBit
0005F3 D2 96 [12] 1840 setb _PP16
0005F5 A2 96 [12] 1841 mov c,_PP16
0005F7 80 04 [24] 1842 sjmp 00105$
0005F9 1843 00129$:
1844 ; assignBit
0005F9 C2 96 [12] 1845 clr _PP16
0005FB A2 96 [12] 1846 mov c,_PP16
0005FD 1847 00105$:
1848 ; src/dap.c:325: if((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) {
0005FD EC [12] 1849 mov a,r4
0005FE 30 E1 12 [24] 1850 jnb acc.1,00107$
1851 ; src/dap.c:326: ((value & DAP_SWJ_SWDIO_TMS_BIT) != 0U) ? (SWD_SET(1)) : (SWD_SET(0));
000601 8D 06 [24] 1852 mov ar6,r5
000603 7F 00 [12] 1853 mov r7,#0x00
000605 EE [12] 1854 mov a,r6
000606 30 E1 06 [24] 1855 jnb acc.1,00131$
1856 ; assignBit
000609 D2 95 [12] 1857 setb _PP15
00060B A2 95 [12] 1858 mov c,_PP15
00060D 80 04 [24] 1859 sjmp 00107$
00060F 1860 00131$:
1861 ; assignBit
00060F C2 95 [12] 1862 clr _PP15
000611 A2 95 [12] 1863 mov c,_PP15
000613 1864 00107$:
1865 ; src/dap.c:328: if((select & DAP_SWJ_nRESET_BIT) != 0U) {
000613 EC [12] 1866 mov a,r4
000614 30 E7 19 [24] 1867 jnb acc.7,00109$
1868 ; src/dap.c:329: RST_SET(value >> DAP_SWJ_nRESET);
000617 ED [12] 1869 mov a,r5
000618 23 [12] 1870 rl a
000619 54 01 [12] 1871 anl a,#0x01
00061B F5 82 [12] 1872 mov dpl,a
00061D C0 05 [24] 1873 push ar5
00061F C0 04 [24] 1874 push ar4
000621 C0 03 [24] 1875 push ar3
000623 C0 02 [24] 1876 push ar2
000625 12r00r00 [24] 1877 lcall _ring_probe_reset
000628 D0 02 [24] 1878 pop ar2
00062A D0 03 [24] 1879 pop ar3
00062C D0 04 [24] 1880 pop ar4
00062E D0 05 [24] 1881 pop ar5
000630 1882 00109$:
1883 ; src/dap.c:332: if(wait != 0U) {
000630 EB [12] 1884 mov a,r3
000631 4A [12] 1885 orl a,r2
000632 60 5B [24] 1886 jz 00126$
1887 ; src/dap.c:333: do {
000634 74 02 [12] 1888 mov a,#0x02
000636 5C [12] 1889 anl a,r4
000637 FE [12] 1890 mov r6,a
000638 7F 00 [12] 1891 mov r7,#0x00
00063A 74 80 [12] 1892 mov a,#0x80
00063C 5C [12] 1893 anl a,r4
00063D F8 [12] 1894 mov r0,a
00063E 79 00 [12] 1895 mov r1,#0x00
000640 ED [12] 1896 mov a,r5
000641 23 [12] 1897 rl a
000642 54 01 [12] 1898 anl a,#0x01
000644 F5*10 [12] 1899 mov _DAP_SWJ_Pins_sloc0_1_0,a
000646 ED [12] 1900 mov a,r5
000647 C3 [12] 1901 clr c
000648 13 [12] 1902 rrc a
000649 F5*11 [12] 1903 mov _DAP_SWJ_Pins_sloc1_1_0,a
00064B 8D*14 [24] 1904 mov _DAP_SWJ_Pins_sloc4_1_0,r5
00064D 74 01 [12] 1905 mov a,#0x01
00064F 5C [12] 1906 anl a,r4
000650 F5*12 [12] 1907 mov _DAP_SWJ_Pins_sloc2_1_0,a
1908 ; 1-genFromRTrack replaced mov (_DAP_SWJ_Pins_sloc2_1_0 + 1),#0x00
000652 8F*13 [24] 1909 mov (_DAP_SWJ_Pins_sloc2_1_0 + 1),r7
000654 8A 04 [24] 1910 mov ar4,r2
000656 1911 00122$:
1912 ; src/dap.c:334: if((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) {
000656 E5*12 [12] 1913 mov a,_DAP_SWJ_Pins_sloc2_1_0
000658 45*13 [12] 1914 orl a,(_DAP_SWJ_Pins_sloc2_1_0 + 1)
00065A 60 09 [24] 1915 jz 00113$
1916 ; src/dap.c:335: if((value >> DAP_SWJ_SWCLK_TCK) ^ (SWK_GET())) continue;
00065C A2 96 [12] 1917 mov c,_PP16
00065E E4 [12] 1918 clr a
00065F 33 [12] 1919 rlc a
000660 FA [12] 1920 mov r2,a
000661 65*14 [12] 1921 xrl a,_DAP_SWJ_Pins_sloc4_1_0
000663 70 1D [24] 1922 jnz 00123$
000665 1923 00113$:
1924 ; src/dap.c:337: if((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) {
000665 EE [12] 1925 mov a,r6
000666 4F [12] 1926 orl a,r7
000667 60 09 [24] 1927 jz 00117$
1928 ; src/dap.c:338: if((value >> DAP_SWJ_SWDIO_TMS) ^ (SWD_GET())) continue;
000669 A2 95 [12] 1929 mov c,_PP15
00066B E4 [12] 1930 clr a
00066C 33 [12] 1931 rlc a
00066D FA [12] 1932 mov r2,a
00066E 65*11 [12] 1933 xrl a,_DAP_SWJ_Pins_sloc1_1_0
000670 70 10 [24] 1934 jnz 00123$
000672 1935 00117$:
1936 ; src/dap.c:340: if((select & DAP_SWJ_nRESET_BIT) != 0U) {
000672 E8 [12] 1937 mov a,r0
000673 49 [12] 1938 orl a,r1
000674 60 19 [24] 1939 jz 00126$
1940 ; src/dap.c:341: if((value >> DAP_SWJ_nRESET) ^ (RST_GET())) continue;
000676 A2 97 [12] 1941 mov c,_PP17
000678 B3 [12] 1942 cpl c
000679 92*00 [24] 1943 mov _DAP_SWJ_Pins_sloc3_1_0,c
00067B E4 [12] 1944 clr a
00067C 33 [12] 1945 rlc a
00067D FA [12] 1946 mov r2,a
00067E 65*10 [12] 1947 xrl a,_DAP_SWJ_Pins_sloc0_1_0
000680 60 0D [24] 1948 jz 00126$
1949 ; src/dap.c:343: break;
000682 1950 00123$:
1951 ; src/dap.c:344: } while(wait--);
000682 8B 02 [24] 1952 mov ar2,r3
000684 8C 05 [24] 1953 mov ar5,r4
000686 1B [12] 1954 dec r3
000687 BB FF 01 [24] 1955 cjne r3,#0xff,00202$
00068A 1C [12] 1956 dec r4
00068B 1957 00202$:
00068B EA [12] 1958 mov a,r2
00068C 4D [12] 1959 orl a,r5
00068D 70 C7 [24] 1960 jnz 00122$
00068F 1961 00126$:
1962 ; src/dap.c:347: value = ((uint8_t)SWK_GET() << DAP_SWJ_SWCLK_TCK)
00068F A2 96 [12] 1963 mov c,_PP16
000691 E4 [12] 1964 clr a
000692 33 [12] 1965 rlc a
000693 FF [12] 1966 mov r7,a
1967 ; src/dap.c:348: | ((uint8_t)SWD_GET() << DAP_SWJ_SWDIO_TMS)
000694 A2 95 [12] 1968 mov c,_PP15
000696 E4 [12] 1969 clr a
000697 33 [12] 1970 rlc a
000698 25 E0 [12] 1971 add a,acc
00069A 42 07 [12] 1972 orl ar7,a
1973 ; src/dap.c:352: | ((uint8_t)RST_GET() << DAP_SWJ_nRESET);
00069C A2 97 [12] 1974 mov c,_PP17
00069E B3 [12] 1975 cpl c
00069F 92*00 [24] 1976 mov _DAP_SWJ_Pins_sloc3_1_0,c
0006A1 E4 [12] 1977 clr a
0006A2 33 [12] 1978 rlc a
0006A3 03 [12] 1979 rr a
0006A4 54 80 [12] 1980 anl a,#0x80
0006A6 42 07 [12] 1981 orl ar7,a
1982 ; src/dap.c:353: *res = value;
0006A8 85*0E 82 [24] 1983 mov dpl,_DAP_SWJ_Pins_PARM_2
0006AB 85*0F 83 [24] 1984 mov dph,(_DAP_SWJ_Pins_PARM_2 + 1)
0006AE EF [12] 1985 mov a,r7
0006AF F0 [24] 1986 movx @dptr,a
1987 ; src/dap.c:354: return 1;
0006B0 75 82 01 [24] 1988 mov dpl,#0x01
1989 ; src/dap.c:355: }
0006B3 22 [24] 1990 ret
1991 ;------------------------------------------------------------
1992 ;Allocation info for local variables in function 'DAP_SWJ_Sequence'
1993 ;------------------------------------------------------------
1994 ;res Allocated with name '_DAP_SWJ_Sequence_PARM_2'
1995 ;req Allocated to registers r6 r7
1996 ;count Allocated to registers r4
1997 ;------------------------------------------------------------
1998 ; src/dap.c:363: static uint8_t DAP_SWJ_Sequence(const __xdata uint8_t *req, __xdata uint8_t *res) {
1999 ; -----------------------------------------
2000 ; function DAP_SWJ_Sequence
2001 ; -----------------------------------------
0006B4 2002 _DAP_SWJ_Sequence:
2003 ; src/dap.c:365: count = *req++;
0006B4 AE 82 [24] 2004 mov r6,dpl
0006B6 AF 83 [24] 2005 mov r7,dph
0006B8 E0 [24] 2006 movx a,@dptr
0006B9 FD [12] 2007 mov r5,a
0006BA 0E [12] 2008 inc r6
0006BB BE 00 01 [24] 2009 cjne r6,#0x00,00110$
0006BE 0F [12] 2010 inc r7
0006BF 2011 00110$:
2012 ; src/dap.c:366: if(count == 0U) count = 255U;
0006BF ED [12] 2013 mov a,r5
0006C0 FC [12] 2014 mov r4,a
0006C1 70 02 [24] 2015 jnz 00102$
0006C3 7C FF [12] 2016 mov r4,#0xff
0006C5 2017 00102$:
2018 ; src/dap.c:367: SWJ_Sequence(count, req);
0006C5 8E*02 [24] 2019 mov _SWJ_Sequence_PARM_2,r6
0006C7 8F*03 [24] 2020 mov (_SWJ_Sequence_PARM_2 + 1),r7
0006C9 8C 82 [24] 2021 mov dpl,r4
0006CB 12r00r00 [24] 2022 lcall _SWJ_Sequence
2023 ; src/dap.c:368: *res = DAP_OK;
0006CE 85*15 82 [24] 2024 mov dpl,_DAP_SWJ_Sequence_PARM_2
0006D1 85*16 83 [24] 2025 mov dph,(_DAP_SWJ_Sequence_PARM_2 + 1)
0006D4 E4 [12] 2026 clr a
0006D5 F0 [24] 2027 movx @dptr,a
2028 ; src/dap.c:369: return 1;
0006D6 75 82 01 [24] 2029 mov dpl,#0x01
2030 ; src/dap.c:370: }
0006D9 22 [24] 2031 ret
2032 ;------------------------------------------------------------
2033 ;Allocation info for local variables in function 'DAP_SWD_Sequence'
2034 ;------------------------------------------------------------
2035 ;res Allocated with name '_DAP_SWD_Sequence_PARM_2'
2036 ;req Allocated to registers r6 r7
2037 ;sequence_info Allocated to registers r2
2038 ;sequence_count Allocated to registers
2039 ;request_count Allocated to registers r5
2040 ;response_count Allocated to registers r4
2041 ;count Allocated to registers r0
2042 ;------------------------------------------------------------
2043 ; src/dap.c:378: static uint8_t DAP_SWD_Sequence(const __xdata uint8_t *req, __xdata uint8_t *res) {
2044 ; -----------------------------------------
2045 ; function DAP_SWD_Sequence
2046 ; -----------------------------------------
0006DA 2047 _DAP_SWD_Sequence:
0006DA AE 82 [24] 2048 mov r6,dpl
0006DC AF 83 [24] 2049 mov r7,dph
2050 ; src/dap.c:385: *res++ = DAP_OK;
0006DE AC*17 [24] 2051 mov r4,_DAP_SWD_Sequence_PARM_2
0006E0 AD*18 [24] 2052 mov r5,(_DAP_SWD_Sequence_PARM_2 + 1)
0006E2 8C 82 [24] 2053 mov dpl,r4
0006E4 8D 83 [24] 2054 mov dph,r5
0006E6 E4 [12] 2055 clr a
0006E7 F0 [24] 2056 movx @dptr,a
0006E8 04 [12] 2057 inc a
0006E9 2C [12] 2058 add a,r4
0006EA F5*17 [12] 2059 mov _DAP_SWD_Sequence_PARM_2,a
0006EC E4 [12] 2060 clr a
0006ED 3D [12] 2061 addc a,r5
0006EE F5*18 [12] 2062 mov (_DAP_SWD_Sequence_PARM_2 + 1),a
2063 ; src/dap.c:386: request_count = 1U;
0006F0 7D 01 [12] 2064 mov r5,#0x01
2065 ; src/dap.c:387: response_count = 1U;
0006F2 7C 01 [12] 2066 mov r4,#0x01
2067 ; src/dap.c:388: sequence_count = *req++;
0006F4 8E 82 [24] 2068 mov dpl,r6
0006F6 8F 83 [24] 2069 mov dph,r7
0006F8 E0 [24] 2070 movx a,@dptr
0006F9 FB [12] 2071 mov r3,a
0006FA 0E [12] 2072 inc r6
0006FB BE 00 01 [24] 2073 cjne r6,#0x00,00139$
0006FE 0F [12] 2074 inc r7
0006FF 2075 00139$:
2076 ; src/dap.c:390: while(sequence_count--) {
0006FF 2077 00108$:
0006FF 8B 02 [24] 2078 mov ar2,r3
000701 1B [12] 2079 dec r3
000702 EA [12] 2080 mov a,r2
000703 70 03 [24] 2081 jnz 00140$
000705 02r07r86 [24] 2082 ljmp 00110$
000708 2083 00140$:
2084 ; src/dap.c:391: sequence_info = *req++;
000708 8E 82 [24] 2085 mov dpl,r6
00070A 8F 83 [24] 2086 mov dph,r7
00070C E0 [24] 2087 movx a,@dptr
00070D FA [12] 2088 mov r2,a
00070E A3 [24] 2089 inc dptr
00070F AE 82 [24] 2090 mov r6,dpl
000711 AF 83 [24] 2091 mov r7,dph
2092 ; src/dap.c:392: count = sequence_info & SWD_SEQUENCE_CLK;
000713 74 3F [12] 2093 mov a,#0x3f
000715 5A [12] 2094 anl a,r2
2095 ; src/dap.c:393: if(count == 0U) count = 64U;
000716 F9 [12] 2096 mov r1,a
000717 70 02 [24] 2097 jnz 00102$
000719 79 40 [12] 2098 mov r1,#0x40
00071B 2099 00102$:
2100 ; src/dap.c:394: count = (count + 7U) / 8U;
00071B 89 00 [24] 2101 mov ar0,r1
00071D 79 00 [12] 2102 mov r1,#0x00
00071F 74 07 [12] 2103 mov a,#0x07
000721 28 [12] 2104 add a,r0
000722 F8 [12] 2105 mov r0,a
000723 E4 [12] 2106 clr a
000724 39 [12] 2107 addc a,r1
000725 C4 [12] 2108 swap a
000726 23 [12] 2109 rl a
000727 C8 [12] 2110 xch a,r0
000728 C4 [12] 2111 swap a
000729 23 [12] 2112 rl a
00072A 54 1F [12] 2113 anl a,#0x1f
00072C 68 [12] 2114 xrl a,r0
00072D C8 [12] 2115 xch a,r0
00072E 54 1F [12] 2116 anl a,#0x1f
000730 C8 [12] 2117 xch a,r0
000731 68 [12] 2118 xrl a,r0
000732 C8 [12] 2119 xch a,r0
2120 ; src/dap.c:395: ((sequence_info & SWD_SEQUENCE_DIN) != 0U) ? (SWD_SET(1)) : (SWD_SET(1));
2121 ; assignBit
000733 D2 95 [12] 2122 setb _PP15
2123 ; src/dap.c:396: SWD_Sequence(sequence_info, req, res);
000735 8E*04 [24] 2124 mov _SWD_Sequence_PARM_2,r6
000737 8F*05 [24] 2125 mov (_SWD_Sequence_PARM_2 + 1),r7
000739 85*17*06 [24] 2126 mov _SWD_Sequence_PARM_3,_DAP_SWD_Sequence_PARM_2
00073C 85*18*07 [24] 2127 mov (_SWD_Sequence_PARM_3 + 1),(_DAP_SWD_Sequence_PARM_2 + 1)
00073F 8A 82 [24] 2128 mov dpl,r2
000741 C0 07 [24] 2129 push ar7
000743 C0 06 [24] 2130 push ar6
000745 C0 05 [24] 2131 push ar5
000747 C0 04 [24] 2132 push ar4
000749 C0 03 [24] 2133 push ar3
00074B C0 02 [24] 2134 push ar2
00074D C0 00 [24] 2135 push ar0
00074F 12r00r59 [24] 2136 lcall _SWD_Sequence
000752 D0 00 [24] 2137 pop ar0
000754 D0 02 [24] 2138 pop ar2
000756 D0 03 [24] 2139 pop ar3
000758 D0 04 [24] 2140 pop ar4
00075A D0 05 [24] 2141 pop ar5
00075C D0 06 [24] 2142 pop ar6
00075E D0 07 [24] 2143 pop ar7
2144 ; src/dap.c:397: if(sequence_count == 0U) SWD_SET(1);
000760 EB [12] 2145 mov a,r3
000761 70 02 [24] 2146 jnz 00104$
2147 ; assignBit
000763 D2 95 [12] 2148 setb _PP15
000765 2149 00104$:
2150 ; src/dap.c:398: if((sequence_info & SWD_SEQUENCE_DIN) != 0U) {
000765 EA [12] 2151 mov a,r2
000766 30 E7 10 [24] 2152 jnb acc.7,00106$
2153 ; src/dap.c:399: request_count++;
000769 0D [12] 2154 inc r5
2155 ; src/dap.c:400: res += count;
00076A E8 [12] 2156 mov a,r0
00076B 25*17 [12] 2157 add a,_DAP_SWD_Sequence_PARM_2
00076D F5*17 [12] 2158 mov _DAP_SWD_Sequence_PARM_2,a
00076F E4 [12] 2159 clr a
000770 35*18 [12] 2160 addc a,(_DAP_SWD_Sequence_PARM_2 + 1)
000772 F5*18 [12] 2161 mov (_DAP_SWD_Sequence_PARM_2 + 1),a
2162 ; src/dap.c:401: response_count += count;
000774 E8 [12] 2163 mov a,r0
000775 2C [12] 2164 add a,r4
000776 FC [12] 2165 mov r4,a
000777 80 86 [24] 2166 sjmp 00108$
000779 2167 00106$:
2168 ; src/dap.c:404: req += count;
000779 E8 [12] 2169 mov a,r0
00077A 2E [12] 2170 add a,r6
00077B FE [12] 2171 mov r6,a
00077C E4 [12] 2172 clr a
00077D 3F [12] 2173 addc a,r7
00077E FF [12] 2174 mov r7,a
2175 ; src/dap.c:405: request_count += count + 1U;
00077F E8 [12] 2176 mov a,r0
000780 04 [12] 2177 inc a
000781 2D [12] 2178 add a,r5
000782 FD [12] 2179 mov r5,a
000783 02r06rFF [24] 2180 ljmp 00108$
000786 2181 00110$:
2182 ; src/dap.c:408: return response_count;
000786 8C 82 [24] 2183 mov dpl,r4
2184 ; src/dap.c:409: }
000788 22 [24] 2185 ret
2186 ;------------------------------------------------------------
2187 ;Allocation info for local variables in function 'DAP_TransferConfigure'
2188 ;------------------------------------------------------------
2189 ;res Allocated with name '_DAP_TransferConfigure_PARM_2'
2190 ;req Allocated to registers r6 r7
2191 ;------------------------------------------------------------
2192 ; src/dap.c:419: static uint8_t DAP_TransferConfigure(const __xdata uint8_t *req, __xdata uint8_t *res) {
2193 ; -----------------------------------------
2194 ; function DAP_TransferConfigure
2195 ; -----------------------------------------
000789 2196 _DAP_TransferConfigure:
2197 ; src/dap.c:420: idle_cycles = *(req + 0);
000789 AE 82 [24] 2198 mov r6,dpl
00078B AF 83 [24] 2199 mov r7,dph
00078D 78r00 [12] 2200 mov r0,#_idle_cycles
00078F E0 [24] 2201 movx a,@dptr
000790 F6 [12] 2202 mov @r0,a
2203 ; src/dap.c:421: retry_count = (uint16_t) * (req + 1)
000791 8E 82 [24] 2204 mov dpl,r6
000793 8F 83 [24] 2205 mov dph,r7
000795 A3 [24] 2206 inc dptr
000796 E0 [24] 2207 movx a,@dptr
000797 FD [12] 2208 mov r5,a
000798 7C 00 [12] 2209 mov r4,#0x00
2210 ; src/dap.c:422: | (uint16_t)(*(req + 2) << 8);
00079A 8E 82 [24] 2211 mov dpl,r6
00079C 8F 83 [24] 2212 mov dph,r7
00079E A3 [24] 2213 inc dptr
00079F A3 [24] 2214 inc dptr
0007A0 E0 [24] 2215 movx a,@dptr
0007A1 FA [12] 2216 mov r2,a
0007A2 E4 [12] 2217 clr a
0007A3 42 05 [12] 2218 orl ar5,a
0007A5 EA [12] 2219 mov a,r2
0007A6 42 04 [12] 2220 orl ar4,a
0007A8 78r02 [12] 2221 mov r0,#_retry_count
0007AA A6 05 [24] 2222 mov @r0,ar5
0007AC 08 [12] 2223 inc r0
0007AD A6 04 [24] 2224 mov @r0,ar4
2225 ; src/dap.c:423: match_retry = (uint16_t) * (req + 3)
0007AF 8E 82 [24] 2226 mov dpl,r6
0007B1 8F 83 [24] 2227 mov dph,r7
0007B3 A3 [24] 2228 inc dptr
0007B4 A3 [24] 2229 inc dptr
0007B5 A3 [24] 2230 inc dptr
0007B6 E0 [24] 2231 movx a,@dptr
0007B7 FD [12] 2232 mov r5,a
0007B8 7C 00 [12] 2233 mov r4,#0x00
2234 ; src/dap.c:424: | (uint16_t)(*(req + 4) << 8);
0007BA 8E 82 [24] 2235 mov dpl,r6
0007BC 8F 83 [24] 2236 mov dph,r7
0007BE A3 [24] 2237 inc dptr
0007BF A3 [24] 2238 inc dptr
0007C0 A3 [24] 2239 inc dptr
0007C1 A3 [24] 2240 inc dptr
0007C2 E0 [24] 2241 movx a,@dptr
0007C3 FE [12] 2242 mov r6,a
0007C4 E4 [12] 2243 clr a
0007C5 42 05 [12] 2244 orl ar5,a
0007C7 EE [12] 2245 mov a,r6
0007C8 42 04 [12] 2246 orl ar4,a
0007CA 78r04 [12] 2247 mov r0,#_match_retry
0007CC A6 05 [24] 2248 mov @r0,ar5
0007CE 08 [12] 2249 inc r0
0007CF A6 04 [24] 2250 mov @r0,ar4
2251 ; src/dap.c:425: *res = DAP_OK;
0007D1 85*00 82 [24] 2252 mov dpl,_DAP_TransferConfigure_PARM_2
0007D4 85*01 83 [24] 2253 mov dph,(_DAP_TransferConfigure_PARM_2 + 1)
0007D7 E4 [12] 2254 clr a
0007D8 F0 [24] 2255 movx @dptr,a
2256 ; src/dap.c:426: return 1;
0007D9 75 82 01 [24] 2257 mov dpl,#0x01
2258 ; src/dap.c:427: }
0007DC 22 [24] 2259 ret
2260 ;------------------------------------------------------------
2261 ;Allocation info for local variables in function 'DAP_SWD_Transfer'
2262 ;------------------------------------------------------------
2263 ;res Allocated with name '_DAP_SWD_Transfer_PARM_2'
2264 ;req Allocated to registers r6 r7
2265 ;request_head Allocated to registers
2266 ;response_head Allocated with name '_DAP_SWD_Transfer_response_head_65536_140'
2267 ;post_read Allocated with name '_DAP_SWD_Transfer_post_read_65536_140'
2268 ;check_write Allocated with name '_DAP_SWD_Transfer_check_write_65536_140'
2269 ;sloc0 Allocated with name '_DAP_SWD_Transfer_sloc0_1_0'
2270 ;------------------------------------------------------------
2271 ; src/dap.c:444: static uint8_t DAP_SWD_Transfer(const __xdata uint8_t *req, __xdata uint8_t *res) {
2272 ; -----------------------------------------
2273 ; function DAP_SWD_Transfer
2274 ; -----------------------------------------
0007DD 2275 _DAP_SWD_Transfer:
0007DD AE 82 [24] 2276 mov r6,dpl
0007DF AF 83 [24] 2277 mov r7,dph
2278 ; src/dap.c:451: response_count = 0U;
0007E1 78r11 [12] 2279 mov r0,#_response_count
0007E3 76 00 [12] 2280 mov @r0,#0x00
2281 ; src/dap.c:452: response_value = 0U;
0007E5 78r12 [12] 2282 mov r0,#_response_value
0007E7 76 00 [12] 2283 mov @r0,#0x00
2284 ; src/dap.c:453: response_head = res;
0007E9 85*19*1B [24] 2285 mov _DAP_SWD_Transfer_response_head_65536_140,_DAP_SWD_Transfer_PARM_2
0007EC 85*1A*1C [24] 2286 mov (_DAP_SWD_Transfer_response_head_65536_140 + 1),(_DAP_SWD_Transfer_PARM_2 + 1)
2287 ; src/dap.c:454: res += 2;
0007EF 74 02 [12] 2288 mov a,#0x02
0007F1 25*1B [12] 2289 add a,_DAP_SWD_Transfer_response_head_65536_140
0007F3 F5*19 [12] 2290 mov _DAP_SWD_Transfer_PARM_2,a
0007F5 E4 [12] 2291 clr a
0007F6 35*1C [12] 2292 addc a,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
0007F8 F5*1A [12] 2293 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2294 ; src/dap.c:455: DAP_TransferAbort = 0U;
0007FA 78r0E [12] 2295 mov r0,#_DAP_TransferAbort
0007FC 76 00 [12] 2296 mov @r0,#0x00
2297 ; src/dap.c:456: post_read = 0U;
0007FE 75*1D 00 [24] 2298 mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
2299 ; src/dap.c:457: check_write = 0U;
000801 75*1E 00 [24] 2300 mov _DAP_SWD_Transfer_check_write_65536_140,#0x00
2301 ; src/dap.c:459: req++; // ignore DAP index
000804 0E [12] 2302 inc r6
000805 BE 00 01 [24] 2303 cjne r6,#0x00,00550$
000808 0F [12] 2304 inc r7
000809 2305 00550$:
2306 ; src/dap.c:460: request_count = *req++;
000809 8E 82 [24] 2307 mov dpl,r6
00080B 8F 83 [24] 2308 mov dph,r7
00080D 78r0F [12] 2309 mov r0,#_request_count
00080F E0 [24] 2310 movx a,@dptr
000810 F6 [12] 2311 mov @r0,a
000811 0E [12] 2312 inc r6
000812 BE 00 01 [24] 2313 cjne r6,#0x00,00551$
000815 0F [12] 2314 inc r7
000816 2315 00551$:
000816 2316 00223$:
2317 ; src/dap.c:461: for(; request_count != 0U; request_count--) {
000816 78r0F [12] 2318 mov r0,#_request_count
000818 E6 [12] 2319 mov a,@r0
000819 70 03 [24] 2320 jnz 00552$
00081B 02r0Dr43 [24] 2321 ljmp 00226$
00081E 2322 00552$:
2323 ; src/dap.c:462: request_value = *req++;
00081E 8E 82 [24] 2324 mov dpl,r6
000820 8F 83 [24] 2325 mov dph,r7
000822 E0 [24] 2326 movx a,@dptr
000823 F5*1F [12] 2327 mov _DAP_SWD_Transfer_sloc0_1_0,a
000825 A3 [24] 2328 inc dptr
000826 AE 82 [24] 2329 mov r6,dpl
000828 AF 83 [24] 2330 mov r7,dph
00082A 78r10 [12] 2331 mov r0,#_request_value
2332 ; src/dap.c:465: if(request_value & DAP_TRANSFER_RnW) {
00082C E5*1F [12] 2333 mov a,_DAP_SWD_Transfer_sloc0_1_0
00082E F6 [12] 2334 mov @r0,a
00082F 20 E1 03 [24] 2335 jb acc.1,00553$
000832 02r0BrD6 [24] 2336 ljmp 00191$
000835 2337 00553$:
2338 ; src/dap.c:467: if(post_read) {
000835 E5*1D [12] 2339 mov a,_DAP_SWD_Transfer_post_read_65536_140
000837 70 03 [24] 2340 jnz 00554$
000839 02r09r30 [24] 2341 ljmp 00117$
00083C 2342 00554$:
2343 ; src/dap.c:469: retry = retry_count;
00083C 78r02 [12] 2344 mov r0,#_retry_count
00083E 86 02 [24] 2345 mov ar2,@r0
000840 08 [12] 2346 inc r0
000841 86 05 [24] 2347 mov ar5,@r0
000843 78r13 [12] 2348 mov r0,#_retry
000845 A6 02 [24] 2349 mov @r0,ar2
000847 08 [12] 2350 inc r0
000848 A6 05 [24] 2351 mov @r0,ar5
2352 ; src/dap.c:470: if((request_value & (DAP_TRANSFER_APnDP | DAP_TRANSFER_MATCH_VALUE)) == DAP_TRANSFER_APnDP) {
00084A AC*1F [24] 2353 mov r4,_DAP_SWD_Transfer_sloc0_1_0
00084C 53 04 11 [24] 2354 anl ar4,#0x11
00084F 7D 00 [12] 2355 mov r5,#0x00
000851 BC 01 3E [24] 2356 cjne r4,#0x01,00108$
000854 BD 00 3B [24] 2357 cjne r5,#0x00,00108$
2358 ; src/dap.c:472: do {
000857 2359 00103$:
2360 ; src/dap.c:473: response_value = SWD_Transfer(request_value, data);
000857 75*08r00 [24] 2361 mov _SWD_Transfer_PARM_2,#_data
00085A 75*09s00 [24] 2362 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
00085D 78r10 [12] 2363 mov r0,#_request_value
00085F 86 82 [24] 2364 mov dpl,@r0
000861 C0 07 [24] 2365 push ar7
000863 C0 06 [24] 2366 push ar6
000865 12r01r30 [24] 2367 lcall _SWD_Transfer
000868 AD 82 [24] 2368 mov r5,dpl
00086A D0 06 [24] 2369 pop ar6
00086C D0 07 [24] 2370 pop ar7
00086E 78r12 [12] 2371 mov r0,#_response_value
000870 A6 05 [24] 2372 mov @r0,ar5
2373 ; src/dap.c:474: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000872 BD 02 58 [24] 2374 cjne r5,#0x02,00113$
000875 78r13 [12] 2375 mov r0,#_retry
000877 86 04 [24] 2376 mov ar4,@r0
000879 08 [12] 2377 inc r0
00087A 86 05 [24] 2378 mov ar5,@r0
00087C 78r13 [12] 2379 mov r0,#_retry
00087E EC [12] 2380 mov a,r4
00087F 24 FF [12] 2381 add a,#0xff
000881 F6 [12] 2382 mov @r0,a
000882 ED [12] 2383 mov a,r5
000883 34 FF [12] 2384 addc a,#0xff
000885 08 [12] 2385 inc r0
000886 F6 [12] 2386 mov @r0,a
000887 EC [12] 2387 mov a,r4
000888 4D [12] 2388 orl a,r5
000889 60 42 [24] 2389 jz 00113$
00088B 78r0E [12] 2390 mov r0,#_DAP_TransferAbort
00088D E6 [12] 2391 mov a,@r0
00088E 60 C7 [24] 2392 jz 00103$
2393 ; src/dap.c:478: do {
000890 80 3B [24] 2394 sjmp 00113$
000892 2395 00108$:
2396 ; src/dap.c:479: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
000892 75*08r00 [24] 2397 mov _SWD_Transfer_PARM_2,#_data
000895 75*09s00 [24] 2398 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000898 75 82 0E [24] 2399 mov dpl,#0x0e
00089B C0 07 [24] 2400 push ar7
00089D C0 06 [24] 2401 push ar6
00089F 12r01r30 [24] 2402 lcall _SWD_Transfer
0008A2 AD 82 [24] 2403 mov r5,dpl
0008A4 D0 06 [24] 2404 pop ar6
0008A6 D0 07 [24] 2405 pop ar7
0008A8 78r12 [12] 2406 mov r0,#_response_value
0008AA A6 05 [24] 2407 mov @r0,ar5
2408 ; src/dap.c:480: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0008AC BD 02 1B [24] 2409 cjne r5,#0x02,00110$
0008AF 78r13 [12] 2410 mov r0,#_retry
0008B1 86 04 [24] 2411 mov ar4,@r0
0008B3 08 [12] 2412 inc r0
0008B4 86 05 [24] 2413 mov ar5,@r0
0008B6 78r13 [12] 2414 mov r0,#_retry
0008B8 EC [12] 2415 mov a,r4
0008B9 24 FF [12] 2416 add a,#0xff
0008BB F6 [12] 2417 mov @r0,a
0008BC ED [12] 2418 mov a,r5
0008BD 34 FF [12] 2419 addc a,#0xff
0008BF 08 [12] 2420 inc r0
0008C0 F6 [12] 2421 mov @r0,a
0008C1 EC [12] 2422 mov a,r4
0008C2 4D [12] 2423 orl a,r5
0008C3 60 05 [24] 2424 jz 00110$
0008C5 78r0E [12] 2425 mov r0,#_DAP_TransferAbort
0008C7 E6 [12] 2426 mov a,@r0
0008C8 60 C8 [24] 2427 jz 00108$
0008CA 2428 00110$:
2429 ; src/dap.c:481: post_read = 0U;
0008CA 75*1D 00 [24] 2430 mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
0008CD 2431 00113$:
2432 ; src/dap.c:483: if(response_value != DAP_TRANSFER_OK) break;
0008CD 78r12 [12] 2433 mov r0,#_response_value
0008CF B6 01 02 [24] 2434 cjne @r0,#0x01,00565$
0008D2 80 03 [24] 2435 sjmp 00566$
0008D4 2436 00565$:
0008D4 02r0Dr43 [24] 2437 ljmp 00226$
0008D7 2438 00566$:
2439 ; src/dap.c:486: *res++ = (uint8_t)data[0];
0008D7 AC*19 [24] 2440 mov r4,_DAP_SWD_Transfer_PARM_2
0008D9 AD*1A [24] 2441 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
0008DB 90r00r00 [24] 2442 mov dptr,#_data
0008DE E0 [24] 2443 movx a,@dptr
0008DF 8C 82 [24] 2444 mov dpl,r4
0008E1 8D 83 [24] 2445 mov dph,r5
0008E3 F0 [24] 2446 movx @dptr,a
0008E4 74 01 [12] 2447 mov a,#0x01
0008E6 2C [12] 2448 add a,r4
0008E7 F5*19 [12] 2449 mov _DAP_SWD_Transfer_PARM_2,a
0008E9 E4 [12] 2450 clr a
0008EA 3D [12] 2451 addc a,r5
0008EB F5*1A [12] 2452 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2453 ; src/dap.c:487: *res++ = (uint8_t)data[1];
0008ED AC*19 [24] 2454 mov r4,_DAP_SWD_Transfer_PARM_2
0008EF AD*1A [24] 2455 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
0008F1 90r00r01 [24] 2456 mov dptr,#(_data + 0x0001)
0008F4 E0 [24] 2457 movx a,@dptr
0008F5 8C 82 [24] 2458 mov dpl,r4
0008F7 8D 83 [24] 2459 mov dph,r5
0008F9 F0 [24] 2460 movx @dptr,a
0008FA 74 01 [12] 2461 mov a,#0x01
0008FC 2C [12] 2462 add a,r4
0008FD F5*19 [12] 2463 mov _DAP_SWD_Transfer_PARM_2,a
0008FF E4 [12] 2464 clr a
000900 3D [12] 2465 addc a,r5
000901 F5*1A [12] 2466 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2467 ; src/dap.c:488: *res++ = (uint8_t)data[2];
000903 AC*19 [24] 2468 mov r4,_DAP_SWD_Transfer_PARM_2
000905 AD*1A [24] 2469 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000907 90r00r02 [24] 2470 mov dptr,#(_data + 0x0002)
00090A E0 [24] 2471 movx a,@dptr
00090B 8C 82 [24] 2472 mov dpl,r4
00090D 8D 83 [24] 2473 mov dph,r5
00090F F0 [24] 2474 movx @dptr,a
000910 74 01 [12] 2475 mov a,#0x01
000912 2C [12] 2476 add a,r4
000913 F5*19 [12] 2477 mov _DAP_SWD_Transfer_PARM_2,a
000915 E4 [12] 2478 clr a
000916 3D [12] 2479 addc a,r5
000917 F5*1A [12] 2480 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2481 ; src/dap.c:489: *res++ = (uint8_t)data[3];
000919 AC*19 [24] 2482 mov r4,_DAP_SWD_Transfer_PARM_2
00091B AD*1A [24] 2483 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
00091D 90r00r03 [24] 2484 mov dptr,#(_data + 0x0003)
000920 E0 [24] 2485 movx a,@dptr
000921 FA [12] 2486 mov r2,a
000922 8C 82 [24] 2487 mov dpl,r4
000924 8D 83 [24] 2488 mov dph,r5
000926 F0 [24] 2489 movx @dptr,a
000927 74 01 [12] 2490 mov a,#0x01
000929 2C [12] 2491 add a,r4
00092A F5*19 [12] 2492 mov _DAP_SWD_Transfer_PARM_2,a
00092C E4 [12] 2493 clr a
00092D 3D [12] 2494 addc a,r5
00092E F5*1A [12] 2495 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
000930 2496 00117$:
2497 ; src/dap.c:491: if((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) {
000930 78r10 [12] 2498 mov r0,#_request_value
000932 E6 [12] 2499 mov a,@r0
000933 FD [12] 2500 mov r5,a
000934 20 E4 03 [24] 2501 jb acc.4,00567$
000937 02r0ArD7 [24] 2502 ljmp 00169$
00093A 2503 00567$:
2504 ; src/dap.c:493: match_value[0] = (uint8_t)(*(req + 0));
00093A 8E 82 [24] 2505 mov dpl,r6
00093C 8F 83 [24] 2506 mov dph,r7
00093E E0 [24] 2507 movx a,@dptr
00093F FC [12] 2508 mov r4,a
000940 78r0A [12] 2509 mov r0,#_match_value
000942 A6 04 [24] 2510 mov @r0,ar4
2511 ; src/dap.c:494: match_value[1] = (uint8_t)(*(req + 1));
000944 8E 82 [24] 2512 mov dpl,r6
000946 8F 83 [24] 2513 mov dph,r7
000948 A3 [24] 2514 inc dptr
000949 E0 [24] 2515 movx a,@dptr
00094A FC [12] 2516 mov r4,a
00094B 78r0B [12] 2517 mov r0,#(_match_value + 0x0001)
00094D A6 04 [24] 2518 mov @r0,ar4
2519 ; src/dap.c:495: match_value[2] = (uint8_t)(*(req + 2));
00094F 8E 82 [24] 2520 mov dpl,r6
000951 8F 83 [24] 2521 mov dph,r7
000953 A3 [24] 2522 inc dptr
000954 A3 [24] 2523 inc dptr
000955 E0 [24] 2524 movx a,@dptr
000956 FC [12] 2525 mov r4,a
000957 78r0C [12] 2526 mov r0,#(_match_value + 0x0002)
000959 A6 04 [24] 2527 mov @r0,ar4
2528 ; src/dap.c:496: match_value[3] = (uint8_t)(*(req + 3));
00095B 8E 82 [24] 2529 mov dpl,r6
00095D 8F 83 [24] 2530 mov dph,r7
00095F A3 [24] 2531 inc dptr
000960 A3 [24] 2532 inc dptr
000961 A3 [24] 2533 inc dptr
000962 E0 [24] 2534 movx a,@dptr
000963 FC [12] 2535 mov r4,a
000964 78r0D [12] 2536 mov r0,#(_match_value + 0x0003)
000966 A6 04 [24] 2537 mov @r0,ar4
2538 ; src/dap.c:497: req += 4;
000968 74 04 [12] 2539 mov a,#0x04
00096A 2E [12] 2540 add a,r6
00096B FE [12] 2541 mov r6,a
00096C E4 [12] 2542 clr a
00096D 3F [12] 2543 addc a,r7
00096E FF [12] 2544 mov r7,a
2545 ; src/dap.c:498: match_retry = match_retry;
2546 ; src/dap.c:499: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
00096F 78r10 [12] 2547 mov r0,#_request_value
000971 E6 [12] 2548 mov a,@r0
000972 30 E0 4E [24] 2549 jnb acc.0,00139$
2550 ; src/dap.c:501: retry = retry_count;
000975 78r02 [12] 2551 mov r0,#_retry_count
000977 86 02 [24] 2552 mov ar2,@r0
000979 08 [12] 2553 inc r0
00097A 86 04 [24] 2554 mov ar4,@r0
00097C 78r13 [12] 2555 mov r0,#_retry
00097E A6 02 [24] 2556 mov @r0,ar2
000980 08 [12] 2557 inc r0
000981 A6 04 [24] 2558 mov @r0,ar4
2559 ; src/dap.c:502: do {
000983 2560 00120$:
2561 ; src/dap.c:503: response_value = SWD_Transfer(request_value, NULL);
000983 E4 [12] 2562 clr a
000984 F5*08 [12] 2563 mov _SWD_Transfer_PARM_2,a
000986 F5*09 [12] 2564 mov (_SWD_Transfer_PARM_2 + 1),a
000988 78r10 [12] 2565 mov r0,#_request_value
00098A 86 82 [24] 2566 mov dpl,@r0
00098C C0 07 [24] 2567 push ar7
00098E C0 06 [24] 2568 push ar6
000990 12r01r30 [24] 2569 lcall _SWD_Transfer
000993 AC 82 [24] 2570 mov r4,dpl
000995 D0 06 [24] 2571 pop ar6
000997 D0 07 [24] 2572 pop ar7
000999 78r12 [12] 2573 mov r0,#_response_value
00099B A6 04 [24] 2574 mov @r0,ar4
2575 ; src/dap.c:504: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
00099D BC 02 1B [24] 2576 cjne r4,#0x02,00122$
0009A0 78r13 [12] 2577 mov r0,#_retry
0009A2 86 02 [24] 2578 mov ar2,@r0
0009A4 08 [12] 2579 inc r0
0009A5 86 03 [24] 2580 mov ar3,@r0
0009A7 78r13 [12] 2581 mov r0,#_retry
0009A9 EA [12] 2582 mov a,r2
0009AA 24 FF [12] 2583 add a,#0xff
0009AC F6 [12] 2584 mov @r0,a
0009AD EB [12] 2585 mov a,r3
0009AE 34 FF [12] 2586 addc a,#0xff
0009B0 08 [12] 2587 inc r0
0009B1 F6 [12] 2588 mov @r0,a
0009B2 EA [12] 2589 mov a,r2
0009B3 4B [12] 2590 orl a,r3
0009B4 60 05 [24] 2591 jz 00122$
0009B6 78r0E [12] 2592 mov r0,#_DAP_TransferAbort
0009B8 E6 [12] 2593 mov a,@r0
0009B9 60 C8 [24] 2594 jz 00120$
0009BB 2595 00122$:
2596 ; src/dap.c:505: if(response_value != DAP_TRANSFER_OK) break;
0009BB BC 01 02 [24] 2597 cjne r4,#0x01,00573$
0009BE 80 03 [24] 2598 sjmp 00574$
0009C0 2599 00573$:
0009C0 02r0Dr43 [24] 2600 ljmp 00226$
0009C3 2601 00574$:
2602 ; src/dap.c:507: do {
0009C3 2603 00139$:
2604 ; src/dap.c:509: retry = retry_count;
0009C3 78r02 [12] 2605 mov r0,#_retry_count
0009C5 86 03 [24] 2606 mov ar3,@r0
0009C7 08 [12] 2607 inc r0
0009C8 86 04 [24] 2608 mov ar4,@r0
0009CA 78r13 [12] 2609 mov r0,#_retry
0009CC A6 03 [24] 2610 mov @r0,ar3
0009CE 08 [12] 2611 inc r0
0009CF A6 04 [24] 2612 mov @r0,ar4
2613 ; src/dap.c:510: do {
0009D1 2614 00129$:
2615 ; src/dap.c:511: response_value = SWD_Transfer(request_value, data);
0009D1 75*08r00 [24] 2616 mov _SWD_Transfer_PARM_2,#_data
0009D4 75*09s00 [24] 2617 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
0009D7 78r10 [12] 2618 mov r0,#_request_value
0009D9 86 82 [24] 2619 mov dpl,@r0
0009DB C0 07 [24] 2620 push ar7
0009DD C0 06 [24] 2621 push ar6
0009DF 12r01r30 [24] 2622 lcall _SWD_Transfer
0009E2 AC 82 [24] 2623 mov r4,dpl
0009E4 D0 06 [24] 2624 pop ar6
0009E6 D0 07 [24] 2625 pop ar7
0009E8 78r12 [12] 2626 mov r0,#_response_value
0009EA A6 04 [24] 2627 mov @r0,ar4
2628 ; src/dap.c:512: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0009EC BC 02 1B [24] 2629 cjne r4,#0x02,00131$
0009EF 78r13 [12] 2630 mov r0,#_retry
0009F1 86 03 [24] 2631 mov ar3,@r0
0009F3 08 [12] 2632 inc r0
0009F4 86 04 [24] 2633 mov ar4,@r0
0009F6 78r13 [12] 2634 mov r0,#_retry
0009F8 EB [12] 2635 mov a,r3
0009F9 24 FF [12] 2636 add a,#0xff
0009FB F6 [12] 2637 mov @r0,a
0009FC EC [12] 2638 mov a,r4
0009FD 34 FF [12] 2639 addc a,#0xff
0009FF 08 [12] 2640 inc r0
000A00 F6 [12] 2641 mov @r0,a
000A01 EB [12] 2642 mov a,r3
000A02 4C [12] 2643 orl a,r4
000A03 60 05 [24] 2644 jz 00131$
000A05 78r0E [12] 2645 mov r0,#_DAP_TransferAbort
000A07 E6 [12] 2646 mov a,@r0
000A08 60 C7 [24] 2647 jz 00129$
000A0A 2648 00131$:
2649 ; src/dap.c:513: if(response_value != DAP_TRANSFER_OK) break;
000A0A 78r12 [12] 2650 mov r0,#_response_value
000A0C B6 01 02 [24] 2651 cjne @r0,#0x01,00579$
000A0F 80 03 [24] 2652 sjmp 00580$
000A11 2653 00579$:
000A11 02r0Ar7C [24] 2654 ljmp 00141$
000A14 2655 00580$:
2656 ; src/dap.c:515: while(((data[0] & match_mask[0]) != match_value[0] ||
000A14 90r00r00 [24] 2657 mov dptr,#_data
000A17 E0 [24] 2658 movx a,@dptr
000A18 FC [12] 2659 mov r4,a
000A19 78r06 [12] 2660 mov r0,#_match_mask
000A1B E6 [12] 2661 mov a,@r0
000A1C 52 04 [12] 2662 anl ar4,a
000A1E 78r0A [12] 2663 mov r0,#_match_value
000A20 86 03 [24] 2664 mov ar3,@r0
000A22 EC [12] 2665 mov a,r4
000A23 B5 03 38 [24] 2666 cjne a,ar3,00137$
2667 ; src/dap.c:516: (data[1] & match_mask[1]) != match_value[1] ||
000A26 90r00r01 [24] 2668 mov dptr,#(_data + 0x0001)
000A29 E0 [24] 2669 movx a,@dptr
000A2A FC [12] 2670 mov r4,a
000A2B 78r07 [12] 2671 mov r0,#(_match_mask + 0x0001)
000A2D E6 [12] 2672 mov a,@r0
000A2E 52 04 [12] 2673 anl ar4,a
000A30 78r0B [12] 2674 mov r0,#(_match_value + 0x0001)
000A32 86 03 [24] 2675 mov ar3,@r0
000A34 EC [12] 2676 mov a,r4
000A35 B5 03 26 [24] 2677 cjne a,ar3,00137$
2678 ; src/dap.c:517: (data[2] & match_mask[2]) != match_value[2] ||
000A38 90r00r02 [24] 2679 mov dptr,#(_data + 0x0002)
000A3B E0 [24] 2680 movx a,@dptr
000A3C FC [12] 2681 mov r4,a
000A3D 78r08 [12] 2682 mov r0,#(_match_mask + 0x0002)
000A3F E6 [12] 2683 mov a,@r0
000A40 52 04 [12] 2684 anl ar4,a
000A42 78r0C [12] 2685 mov r0,#(_match_value + 0x0002)
000A44 86 03 [24] 2686 mov ar3,@r0
000A46 EC [12] 2687 mov a,r4
000A47 B5 03 14 [24] 2688 cjne a,ar3,00137$
2689 ; src/dap.c:518: (data[3] & match_mask[3]) != match_value[3]) &&
000A4A 90r00r03 [24] 2690 mov dptr,#(_data + 0x0003)
000A4D E0 [24] 2691 movx a,@dptr
000A4E FC [12] 2692 mov r4,a
000A4F 78r09 [12] 2693 mov r0,#(_match_mask + 0x0003)
000A51 E6 [12] 2694 mov a,@r0
000A52 52 04 [12] 2695 anl ar4,a
000A54 78r0D [12] 2696 mov r0,#(_match_value + 0x0003)
000A56 86 03 [24] 2697 mov ar3,@r0
000A58 EC [12] 2698 mov a,r4
000A59 B5 03 02 [24] 2699 cjne a,ar3,00587$
000A5C 80 1E [24] 2700 sjmp 00141$
000A5E 2701 00587$:
000A5E 2702 00137$:
2703 ; src/dap.c:519: match_retry-- && !DAP_TransferAbort);
000A5E 78r04 [12] 2704 mov r0,#_match_retry
000A60 86 03 [24] 2705 mov ar3,@r0
000A62 08 [12] 2706 inc r0
000A63 86 04 [24] 2707 mov ar4,@r0
000A65 78r04 [12] 2708 mov r0,#_match_retry
000A67 EB [12] 2709 mov a,r3
000A68 24 FF [12] 2710 add a,#0xff
000A6A F6 [12] 2711 mov @r0,a
000A6B EC [12] 2712 mov a,r4
000A6C 34 FF [12] 2713 addc a,#0xff
000A6E 08 [12] 2714 inc r0
000A6F F6 [12] 2715 mov @r0,a
000A70 EB [12] 2716 mov a,r3
000A71 4C [12] 2717 orl a,r4
000A72 60 08 [24] 2718 jz 00141$
000A74 78r0E [12] 2719 mov r0,#_DAP_TransferAbort
000A76 E6 [12] 2720 mov a,@r0
000A77 70 03 [24] 2721 jnz 00589$
000A79 02r09rC3 [24] 2722 ljmp 00139$
000A7C 2723 00589$:
000A7C 2724 00141$:
2725 ; src/dap.c:520: if((data[0] & match_mask[0]) != match_value[0] ||
000A7C 90r00r00 [24] 2726 mov dptr,#_data
000A7F E0 [24] 2727 movx a,@dptr
000A80 FC [12] 2728 mov r4,a
000A81 78r06 [12] 2729 mov r0,#_match_mask
000A83 E6 [12] 2730 mov a,@r0
000A84 52 04 [12] 2731 anl ar4,a
000A86 78r0A [12] 2732 mov r0,#_match_value
000A88 86 03 [24] 2733 mov ar3,@r0
000A8A EC [12] 2734 mov a,r4
000A8B B5 03 38 [24] 2735 cjne a,ar3,00142$
2736 ; src/dap.c:521: (data[1] & match_mask[1]) != match_value[1] ||
000A8E 90r00r01 [24] 2737 mov dptr,#(_data + 0x0001)
000A91 E0 [24] 2738 movx a,@dptr
000A92 FC [12] 2739 mov r4,a
000A93 78r07 [12] 2740 mov r0,#(_match_mask + 0x0001)
000A95 E6 [12] 2741 mov a,@r0
000A96 52 04 [12] 2742 anl ar4,a
000A98 78r0B [12] 2743 mov r0,#(_match_value + 0x0001)
000A9A 86 03 [24] 2744 mov ar3,@r0
000A9C EC [12] 2745 mov a,r4
000A9D B5 03 26 [24] 2746 cjne a,ar3,00142$
2747 ; src/dap.c:522: (data[2] & match_mask[2]) != match_value[2] ||
000AA0 90r00r02 [24] 2748 mov dptr,#(_data + 0x0002)
000AA3 E0 [24] 2749 movx a,@dptr
000AA4 FC [12] 2750 mov r4,a
000AA5 78r08 [12] 2751 mov r0,#(_match_mask + 0x0002)
000AA7 E6 [12] 2752 mov a,@r0
000AA8 52 04 [12] 2753 anl ar4,a
000AAA 78r0C [12] 2754 mov r0,#(_match_value + 0x0002)
000AAC 86 03 [24] 2755 mov ar3,@r0
000AAE EC [12] 2756 mov a,r4
000AAF B5 03 14 [24] 2757 cjne a,ar3,00142$
2758 ; src/dap.c:523: (data[3] & match_mask[3]) != match_value[3])
000AB2 90r00r03 [24] 2759 mov dptr,#(_data + 0x0003)
000AB5 E0 [24] 2760 movx a,@dptr
000AB6 FC [12] 2761 mov r4,a
000AB7 78r09 [12] 2762 mov r0,#(_match_mask + 0x0003)
000AB9 E6 [12] 2763 mov a,@r0
000ABA 52 04 [12] 2764 anl ar4,a
000ABC 78r0D [12] 2765 mov r0,#(_match_value + 0x0003)
000ABE 86 03 [24] 2766 mov ar3,@r0
000AC0 EC [12] 2767 mov a,r4
000AC1 B5 03 02 [24] 2768 cjne a,ar3,00596$
000AC4 80 06 [24] 2769 sjmp 00143$
000AC6 2770 00596$:
000AC6 2771 00142$:
2772 ; src/dap.c:524: response_value |= DAP_TRANSFER_MISMATCH;
000AC6 78r12 [12] 2773 mov r0,#_response_value
000AC8 E6 [12] 2774 mov a,@r0
000AC9 44 10 [12] 2775 orl a,#0x10
000ACB F6 [12] 2776 mov @r0,a
000ACC 2777 00143$:
2778 ; src/dap.c:525: if(response_value != DAP_TRANSFER_OK) break;
000ACC 78r12 [12] 2779 mov r0,#_response_value
000ACE B6 01 03 [24] 2780 cjne @r0,#0x01,00597$
000AD1 02r0BrD0 [24] 2781 ljmp 00170$
000AD4 2782 00597$:
000AD4 02r0Dr43 [24] 2783 ljmp 00226$
000AD7 2784 00169$:
2785 ; src/dap.c:529: retry = retry_count;
000AD7 78r02 [12] 2786 mov r0,#_retry_count
000AD9 86 03 [24] 2787 mov ar3,@r0
000ADB 08 [12] 2788 inc r0
000ADC 86 04 [24] 2789 mov ar4,@r0
000ADE 78r13 [12] 2790 mov r0,#_retry
000AE0 A6 03 [24] 2791 mov @r0,ar3
000AE2 08 [12] 2792 inc r0
000AE3 A6 04 [24] 2793 mov @r0,ar4
2794 ; src/dap.c:530: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
000AE5 ED [12] 2795 mov a,r5
000AE6 30 E0 4D [24] 2796 jnb acc.0,00160$
2797 ; src/dap.c:532: if(post_read == 0U) {
000AE9 E5*1D [12] 2798 mov a,_DAP_SWD_Transfer_post_read_65536_140
000AEB 60 03 [24] 2799 jz 00599$
000AED 02r0BrD0 [24] 2800 ljmp 00170$
000AF0 2801 00599$:
2802 ; src/dap.c:534: do {
000AF0 2803 00151$:
2804 ; src/dap.c:535: response_value = SWD_Transfer(request_value, NULL);
000AF0 E4 [12] 2805 clr a
000AF1 F5*08 [12] 2806 mov _SWD_Transfer_PARM_2,a
000AF3 F5*09 [12] 2807 mov (_SWD_Transfer_PARM_2 + 1),a
000AF5 78r10 [12] 2808 mov r0,#_request_value
000AF7 86 82 [24] 2809 mov dpl,@r0
000AF9 C0 07 [24] 2810 push ar7
000AFB C0 06 [24] 2811 push ar6
000AFD 12r01r30 [24] 2812 lcall _SWD_Transfer
000B00 AD 82 [24] 2813 mov r5,dpl
000B02 D0 06 [24] 2814 pop ar6
000B04 D0 07 [24] 2815 pop ar7
000B06 78r12 [12] 2816 mov r0,#_response_value
000B08 A6 05 [24] 2817 mov @r0,ar5
2818 ; src/dap.c:536: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000B0A BD 02 1B [24] 2819 cjne r5,#0x02,00153$
000B0D 78r13 [12] 2820 mov r0,#_retry
000B0F 86 03 [24] 2821 mov ar3,@r0
000B11 08 [12] 2822 inc r0
000B12 86 04 [24] 2823 mov ar4,@r0
000B14 78r13 [12] 2824 mov r0,#_retry
000B16 EB [12] 2825 mov a,r3
000B17 24 FF [12] 2826 add a,#0xff
000B19 F6 [12] 2827 mov @r0,a
000B1A EC [12] 2828 mov a,r4
000B1B 34 FF [12] 2829 addc a,#0xff
000B1D 08 [12] 2830 inc r0
000B1E F6 [12] 2831 mov @r0,a
000B1F EB [12] 2832 mov a,r3
000B20 4C [12] 2833 orl a,r4
000B21 60 05 [24] 2834 jz 00153$
000B23 78r0E [12] 2835 mov r0,#_DAP_TransferAbort
000B25 E6 [12] 2836 mov a,@r0
000B26 60 C8 [24] 2837 jz 00151$
000B28 2838 00153$:
2839 ; src/dap.c:537: if(response_value != DAP_TRANSFER_OK) break;
000B28 BD 01 02 [24] 2840 cjne r5,#0x01,00604$
000B2B 80 03 [24] 2841 sjmp 00605$
000B2D 2842 00604$:
000B2D 02r0Dr43 [24] 2843 ljmp 00226$
000B30 2844 00605$:
2845 ; src/dap.c:538: post_read = 1U;
000B30 75*1D 01 [24] 2846 mov _DAP_SWD_Transfer_post_read_65536_140,#0x01
000B33 02r0BrD0 [24] 2847 ljmp 00170$
2848 ; src/dap.c:543: do {
000B36 2849 00160$:
2850 ; src/dap.c:544: response_value = SWD_Transfer(request_value, data);
000B36 75*08r00 [24] 2851 mov _SWD_Transfer_PARM_2,#_data
000B39 75*09s00 [24] 2852 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000B3C 78r10 [12] 2853 mov r0,#_request_value
000B3E 86 82 [24] 2854 mov dpl,@r0
000B40 C0 07 [24] 2855 push ar7
000B42 C0 06 [24] 2856 push ar6
000B44 12r01r30 [24] 2857 lcall _SWD_Transfer
000B47 AD 82 [24] 2858 mov r5,dpl
000B49 D0 06 [24] 2859 pop ar6
000B4B D0 07 [24] 2860 pop ar7
000B4D 78r12 [12] 2861 mov r0,#_response_value
000B4F A6 05 [24] 2862 mov @r0,ar5
2863 ; src/dap.c:545: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000B51 BD 02 1B [24] 2864 cjne r5,#0x02,00162$
000B54 78r13 [12] 2865 mov r0,#_retry
000B56 86 03 [24] 2866 mov ar3,@r0
000B58 08 [12] 2867 inc r0
000B59 86 04 [24] 2868 mov ar4,@r0
000B5B 78r13 [12] 2869 mov r0,#_retry
000B5D EB [12] 2870 mov a,r3
000B5E 24 FF [12] 2871 add a,#0xff
000B60 F6 [12] 2872 mov @r0,a
000B61 EC [12] 2873 mov a,r4
000B62 34 FF [12] 2874 addc a,#0xff
000B64 08 [12] 2875 inc r0
000B65 F6 [12] 2876 mov @r0,a
000B66 EB [12] 2877 mov a,r3
000B67 4C [12] 2878 orl a,r4
000B68 60 05 [24] 2879 jz 00162$
000B6A 78r0E [12] 2880 mov r0,#_DAP_TransferAbort
000B6C E6 [12] 2881 mov a,@r0
000B6D 60 C7 [24] 2882 jz 00160$
000B6F 2883 00162$:
2884 ; src/dap.c:546: if(response_value != DAP_TRANSFER_OK) break;
000B6F BD 01 02 [24] 2885 cjne r5,#0x01,00610$
000B72 80 03 [24] 2886 sjmp 00611$
000B74 2887 00610$:
000B74 02r0Dr43 [24] 2888 ljmp 00226$
000B77 2889 00611$:
2890 ; src/dap.c:549: *res++ = data[0];
000B77 AC*19 [24] 2891 mov r4,_DAP_SWD_Transfer_PARM_2
000B79 AD*1A [24] 2892 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000B7B 90r00r00 [24] 2893 mov dptr,#_data
000B7E E0 [24] 2894 movx a,@dptr
000B7F 8C 82 [24] 2895 mov dpl,r4
000B81 8D 83 [24] 2896 mov dph,r5
000B83 F0 [24] 2897 movx @dptr,a
000B84 74 01 [12] 2898 mov a,#0x01
000B86 2C [12] 2899 add a,r4
000B87 F5*19 [12] 2900 mov _DAP_SWD_Transfer_PARM_2,a
000B89 E4 [12] 2901 clr a
000B8A 3D [12] 2902 addc a,r5
000B8B F5*1A [12] 2903 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2904 ; src/dap.c:550: *res++ = data[1];
000B8D AC*19 [24] 2905 mov r4,_DAP_SWD_Transfer_PARM_2
000B8F AD*1A [24] 2906 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000B91 90r00r01 [24] 2907 mov dptr,#(_data + 0x0001)
000B94 E0 [24] 2908 movx a,@dptr
000B95 8C 82 [24] 2909 mov dpl,r4
000B97 8D 83 [24] 2910 mov dph,r5
000B99 F0 [24] 2911 movx @dptr,a
000B9A 74 01 [12] 2912 mov a,#0x01
000B9C 2C [12] 2913 add a,r4
000B9D F5*19 [12] 2914 mov _DAP_SWD_Transfer_PARM_2,a
000B9F E4 [12] 2915 clr a
000BA0 3D [12] 2916 addc a,r5
000BA1 F5*1A [12] 2917 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2918 ; src/dap.c:551: *res++ = data[2];
000BA3 AC*19 [24] 2919 mov r4,_DAP_SWD_Transfer_PARM_2
000BA5 AD*1A [24] 2920 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000BA7 90r00r02 [24] 2921 mov dptr,#(_data + 0x0002)
000BAA E0 [24] 2922 movx a,@dptr
000BAB 8C 82 [24] 2923 mov dpl,r4
000BAD 8D 83 [24] 2924 mov dph,r5
000BAF F0 [24] 2925 movx @dptr,a
000BB0 74 01 [12] 2926 mov a,#0x01
000BB2 2C [12] 2927 add a,r4
000BB3 F5*19 [12] 2928 mov _DAP_SWD_Transfer_PARM_2,a
000BB5 E4 [12] 2929 clr a
000BB6 3D [12] 2930 addc a,r5
000BB7 F5*1A [12] 2931 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2932 ; src/dap.c:552: *res++ = data[3];
000BB9 AC*19 [24] 2933 mov r4,_DAP_SWD_Transfer_PARM_2
000BBB AD*1A [24] 2934 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000BBD 90r00r03 [24] 2935 mov dptr,#(_data + 0x0003)
000BC0 E0 [24] 2936 movx a,@dptr
000BC1 FB [12] 2937 mov r3,a
000BC2 8C 82 [24] 2938 mov dpl,r4
000BC4 8D 83 [24] 2939 mov dph,r5
000BC6 F0 [24] 2940 movx @dptr,a
000BC7 74 01 [12] 2941 mov a,#0x01
000BC9 2C [12] 2942 add a,r4
000BCA F5*19 [12] 2943 mov _DAP_SWD_Transfer_PARM_2,a
000BCC E4 [12] 2944 clr a
000BCD 3D [12] 2945 addc a,r5
000BCE F5*1A [12] 2946 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
000BD0 2947 00170$:
2948 ; src/dap.c:555: check_write = 0U;
000BD0 75*1E 00 [24] 2949 mov _DAP_SWD_Transfer_check_write_65536_140,#0x00
000BD3 02r0Dr35 [24] 2950 ljmp 00192$
000BD6 2951 00191$:
2952 ; src/dap.c:559: if(post_read) {
000BD6 E5*1D [12] 2953 mov a,_DAP_SWD_Transfer_post_read_65536_140
000BD8 70 03 [24] 2954 jnz 00612$
000BDA 02r0Cr87 [24] 2955 ljmp 00179$
000BDD 2956 00612$:
2957 ; src/dap.c:561: retry = retry_count;
000BDD 78r02 [12] 2958 mov r0,#_retry_count
000BDF 86 04 [24] 2959 mov ar4,@r0
000BE1 08 [12] 2960 inc r0
000BE2 86 05 [24] 2961 mov ar5,@r0
000BE4 78r13 [12] 2962 mov r0,#_retry
000BE6 A6 04 [24] 2963 mov @r0,ar4
000BE8 08 [12] 2964 inc r0
000BE9 A6 05 [24] 2965 mov @r0,ar5
2966 ; src/dap.c:562: do {
000BEB 2967 00173$:
2968 ; src/dap.c:563: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
000BEB 75*08r00 [24] 2969 mov _SWD_Transfer_PARM_2,#_data
000BEE 75*09s00 [24] 2970 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000BF1 75 82 0E [24] 2971 mov dpl,#0x0e
000BF4 C0 07 [24] 2972 push ar7
000BF6 C0 06 [24] 2973 push ar6
000BF8 12r01r30 [24] 2974 lcall _SWD_Transfer
000BFB AD 82 [24] 2975 mov r5,dpl
000BFD D0 06 [24] 2976 pop ar6
000BFF D0 07 [24] 2977 pop ar7
000C01 78r12 [12] 2978 mov r0,#_response_value
000C03 A6 05 [24] 2979 mov @r0,ar5
2980 ; src/dap.c:564: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000C05 BD 02 1B [24] 2981 cjne r5,#0x02,00175$
000C08 78r13 [12] 2982 mov r0,#_retry
000C0A 86 03 [24] 2983 mov ar3,@r0
000C0C 08 [12] 2984 inc r0
000C0D 86 04 [24] 2985 mov ar4,@r0
000C0F 78r13 [12] 2986 mov r0,#_retry
000C11 EB [12] 2987 mov a,r3
000C12 24 FF [12] 2988 add a,#0xff
000C14 F6 [12] 2989 mov @r0,a
000C15 EC [12] 2990 mov a,r4
000C16 34 FF [12] 2991 addc a,#0xff
000C18 08 [12] 2992 inc r0
000C19 F6 [12] 2993 mov @r0,a
000C1A EB [12] 2994 mov a,r3
000C1B 4C [12] 2995 orl a,r4
000C1C 60 05 [24] 2996 jz 00175$
000C1E 78r0E [12] 2997 mov r0,#_DAP_TransferAbort
000C20 E6 [12] 2998 mov a,@r0
000C21 60 C8 [24] 2999 jz 00173$
000C23 3000 00175$:
3001 ; src/dap.c:565: if(response_value != DAP_TRANSFER_OK) break;
000C23 BD 01 02 [24] 3002 cjne r5,#0x01,00617$
000C26 80 03 [24] 3003 sjmp 00618$
000C28 3004 00617$:
000C28 02r0Dr43 [24] 3005 ljmp 00226$
000C2B 3006 00618$:
3007 ; src/dap.c:568: *res++ = data[0];
000C2B AC*19 [24] 3008 mov r4,_DAP_SWD_Transfer_PARM_2
000C2D AD*1A [24] 3009 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000C2F 90r00r00 [24] 3010 mov dptr,#_data
000C32 E0 [24] 3011 movx a,@dptr
000C33 8C 82 [24] 3012 mov dpl,r4
000C35 8D 83 [24] 3013 mov dph,r5
000C37 F0 [24] 3014 movx @dptr,a
000C38 74 01 [12] 3015 mov a,#0x01
000C3A 2C [12] 3016 add a,r4
000C3B F5*19 [12] 3017 mov _DAP_SWD_Transfer_PARM_2,a
000C3D E4 [12] 3018 clr a
000C3E 3D [12] 3019 addc a,r5
000C3F F5*1A [12] 3020 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3021 ; src/dap.c:569: *res++ = data[1];
000C41 AC*19 [24] 3022 mov r4,_DAP_SWD_Transfer_PARM_2
000C43 AD*1A [24] 3023 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000C45 90r00r01 [24] 3024 mov dptr,#(_data + 0x0001)
000C48 E0 [24] 3025 movx a,@dptr
000C49 8C 82 [24] 3026 mov dpl,r4
000C4B 8D 83 [24] 3027 mov dph,r5
000C4D F0 [24] 3028 movx @dptr,a
000C4E 74 01 [12] 3029 mov a,#0x01
000C50 2C [12] 3030 add a,r4
000C51 F5*19 [12] 3031 mov _DAP_SWD_Transfer_PARM_2,a
000C53 E4 [12] 3032 clr a
000C54 3D [12] 3033 addc a,r5
000C55 F5*1A [12] 3034 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3035 ; src/dap.c:570: *res++ = data[2];
000C57 AC*19 [24] 3036 mov r4,_DAP_SWD_Transfer_PARM_2
000C59 AD*1A [24] 3037 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000C5B 90r00r02 [24] 3038 mov dptr,#(_data + 0x0002)
000C5E E0 [24] 3039 movx a,@dptr
000C5F 8C 82 [24] 3040 mov dpl,r4
000C61 8D 83 [24] 3041 mov dph,r5
000C63 F0 [24] 3042 movx @dptr,a
000C64 74 01 [12] 3043 mov a,#0x01
000C66 2C [12] 3044 add a,r4
000C67 F5*19 [12] 3045 mov _DAP_SWD_Transfer_PARM_2,a
000C69 E4 [12] 3046 clr a
000C6A 3D [12] 3047 addc a,r5
000C6B F5*1A [12] 3048 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3049 ; src/dap.c:571: *res++ = data[3];
000C6D AC*19 [24] 3050 mov r4,_DAP_SWD_Transfer_PARM_2
000C6F AD*1A [24] 3051 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000C71 90r00r03 [24] 3052 mov dptr,#(_data + 0x0003)
000C74 E0 [24] 3053 movx a,@dptr
000C75 FB [12] 3054 mov r3,a
000C76 8C 82 [24] 3055 mov dpl,r4
000C78 8D 83 [24] 3056 mov dph,r5
000C7A F0 [24] 3057 movx @dptr,a
000C7B 74 01 [12] 3058 mov a,#0x01
000C7D 2C [12] 3059 add a,r4
000C7E F5*19 [12] 3060 mov _DAP_SWD_Transfer_PARM_2,a
000C80 E4 [12] 3061 clr a
000C81 3D [12] 3062 addc a,r5
000C82 F5*1A [12] 3063 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3064 ; src/dap.c:572: post_read = 0U;
000C84 75*1D 00 [24] 3065 mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
000C87 3066 00179$:
3067 ; src/dap.c:575: data[0] = (uint8_t)(*(req + 0));
000C87 8E 82 [24] 3068 mov dpl,r6
000C89 8F 83 [24] 3069 mov dph,r7
000C8B E0 [24] 3070 movx a,@dptr
000C8C 90r00r00 [24] 3071 mov dptr,#_data
000C8F F0 [24] 3072 movx @dptr,a
3073 ; src/dap.c:576: data[1] = (uint8_t)(*(req + 1));
000C90 8E 82 [24] 3074 mov dpl,r6
000C92 8F 83 [24] 3075 mov dph,r7
000C94 A3 [24] 3076 inc dptr
000C95 E0 [24] 3077 movx a,@dptr
000C96 90r00r01 [24] 3078 mov dptr,#(_data + 0x0001)
000C99 F0 [24] 3079 movx @dptr,a
3080 ; src/dap.c:577: data[2] = (uint8_t)(*(req + 2));
000C9A 8E 82 [24] 3081 mov dpl,r6
000C9C 8F 83 [24] 3082 mov dph,r7
000C9E A3 [24] 3083 inc dptr
000C9F A3 [24] 3084 inc dptr
000CA0 E0 [24] 3085 movx a,@dptr
000CA1 90r00r02 [24] 3086 mov dptr,#(_data + 0x0002)
000CA4 F0 [24] 3087 movx @dptr,a
3088 ; src/dap.c:578: data[3] = (uint8_t)(*(req + 3));
000CA5 8E 82 [24] 3089 mov dpl,r6
000CA7 8F 83 [24] 3090 mov dph,r7
000CA9 A3 [24] 3091 inc dptr
000CAA A3 [24] 3092 inc dptr
000CAB A3 [24] 3093 inc dptr
000CAC E0 [24] 3094 movx a,@dptr
000CAD 90r00r03 [24] 3095 mov dptr,#(_data + 0x0003)
000CB0 F0 [24] 3096 movx @dptr,a
3097 ; src/dap.c:579: req += 4;
000CB1 74 04 [12] 3098 mov a,#0x04
000CB3 2E [12] 3099 add a,r6
000CB4 FE [12] 3100 mov r6,a
000CB5 E4 [12] 3101 clr a
000CB6 3F [12] 3102 addc a,r7
000CB7 FF [12] 3103 mov r7,a
3104 ; src/dap.c:580: if((request_value & DAP_TRANSFER_MATCH_MASK) != 0U) {
000CB8 78r10 [12] 3105 mov r0,#_request_value
000CBA E6 [12] 3106 mov a,@r0
000CBB 30 E5 2A [24] 3107 jnb acc.5,00188$
3108 ; src/dap.c:582: match_mask[0] = data[0];
000CBE 90r00r00 [24] 3109 mov dptr,#_data
000CC1 E0 [24] 3110 movx a,@dptr
000CC2 FD [12] 3111 mov r5,a
000CC3 78r06 [12] 3112 mov r0,#_match_mask
000CC5 A6 05 [24] 3113 mov @r0,ar5
3114 ; src/dap.c:583: match_mask[1] = data[1];
000CC7 90r00r01 [24] 3115 mov dptr,#(_data + 0x0001)
000CCA E0 [24] 3116 movx a,@dptr
000CCB FD [12] 3117 mov r5,a
000CCC 78r07 [12] 3118 mov r0,#(_match_mask + 0x0001)
000CCE A6 05 [24] 3119 mov @r0,ar5
3120 ; src/dap.c:584: match_mask[2] = data[2];
000CD0 90r00r02 [24] 3121 mov dptr,#(_data + 0x0002)
000CD3 E0 [24] 3122 movx a,@dptr
000CD4 FD [12] 3123 mov r5,a
000CD5 78r08 [12] 3124 mov r0,#(_match_mask + 0x0002)
000CD7 A6 05 [24] 3125 mov @r0,ar5
3126 ; src/dap.c:585: match_mask[3] = data[3];
000CD9 90r00r03 [24] 3127 mov dptr,#(_data + 0x0003)
000CDC E0 [24] 3128 movx a,@dptr
000CDD FD [12] 3129 mov r5,a
000CDE 78r09 [12] 3130 mov r0,#(_match_mask + 0x0003)
000CE0 A6 05 [24] 3131 mov @r0,ar5
3132 ; src/dap.c:586: response_value = DAP_TRANSFER_OK;
000CE2 78r12 [12] 3133 mov r0,#_response_value
000CE4 76 01 [12] 3134 mov @r0,#0x01
000CE6 80 4D [24] 3135 sjmp 00192$
000CE8 3136 00188$:
3137 ; src/dap.c:590: retry = retry_count;
000CE8 78r02 [12] 3138 mov r0,#_retry_count
000CEA 86 04 [24] 3139 mov ar4,@r0
000CEC 08 [12] 3140 inc r0
000CED 86 05 [24] 3141 mov ar5,@r0
000CEF 78r13 [12] 3142 mov r0,#_retry
000CF1 A6 04 [24] 3143 mov @r0,ar4
000CF3 08 [12] 3144 inc r0
000CF4 A6 05 [24] 3145 mov @r0,ar5
3146 ; src/dap.c:591: do {
000CF6 3147 00182$:
3148 ; src/dap.c:592: response_value = SWD_Transfer(request_value, data);
000CF6 75*08r00 [24] 3149 mov _SWD_Transfer_PARM_2,#_data
000CF9 75*09s00 [24] 3150 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000CFC 78r10 [12] 3151 mov r0,#_request_value
000CFE 86 82 [24] 3152 mov dpl,@r0
000D00 C0 07 [24] 3153 push ar7
000D02 C0 06 [24] 3154 push ar6
000D04 12r01r30 [24] 3155 lcall _SWD_Transfer
000D07 AD 82 [24] 3156 mov r5,dpl
000D09 D0 06 [24] 3157 pop ar6
000D0B D0 07 [24] 3158 pop ar7
000D0D 78r12 [12] 3159 mov r0,#_response_value
000D0F A6 05 [24] 3160 mov @r0,ar5
3161 ; src/dap.c:593: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000D11 BD 02 1B [24] 3162 cjne r5,#0x02,00184$
000D14 78r13 [12] 3163 mov r0,#_retry
000D16 86 03 [24] 3164 mov ar3,@r0
000D18 08 [12] 3165 inc r0
000D19 86 04 [24] 3166 mov ar4,@r0
000D1B 78r13 [12] 3167 mov r0,#_retry
000D1D EB [12] 3168 mov a,r3
000D1E 24 FF [12] 3169 add a,#0xff
000D20 F6 [12] 3170 mov @r0,a
000D21 EC [12] 3171 mov a,r4
000D22 34 FF [12] 3172 addc a,#0xff
000D24 08 [12] 3173 inc r0
000D25 F6 [12] 3174 mov @r0,a
000D26 EB [12] 3175 mov a,r3
000D27 4C [12] 3176 orl a,r4
000D28 60 05 [24] 3177 jz 00184$
000D2A 78r0E [12] 3178 mov r0,#_DAP_TransferAbort
000D2C E6 [12] 3179 mov a,@r0
000D2D 60 C7 [24] 3180 jz 00182$
000D2F 3181 00184$:
3182 ; src/dap.c:594: if(response_value != DAP_TRANSFER_OK) break;
000D2F BD 01 11 [24] 3183 cjne r5,#0x01,00226$
3184 ; src/dap.c:595: check_write = 1U;
000D32 75*1E 01 [24] 3185 mov _DAP_SWD_Transfer_check_write_65536_140,#0x01
000D35 3186 00192$:
3187 ; src/dap.c:598: response_count++;
000D35 78r11 [12] 3188 mov r0,#_response_count
000D37 06 [12] 3189 inc @r0
3190 ; src/dap.c:599: if(DAP_TransferAbort) break;
000D38 78r0E [12] 3191 mov r0,#_DAP_TransferAbort
000D3A E6 [12] 3192 mov a,@r0
000D3B 70 06 [24] 3193 jnz 00226$
3194 ; src/dap.c:461: for(; request_count != 0U; request_count--) {
000D3D 78r0F [12] 3195 mov r0,#_request_count
000D3F 16 [12] 3196 dec @r0
000D40 02r08r16 [24] 3197 ljmp 00223$
000D43 3198 00226$:
3199 ; src/dap.c:602: for(; request_count != 0U; request_count--) {
000D43 78r0F [12] 3200 mov r0,#_request_count
000D45 E6 [12] 3201 mov a,@r0
000D46 60 2C [24] 3202 jz 00201$
3203 ; src/dap.c:604: request_value = *req++;
000D48 8E 82 [24] 3204 mov dpl,r6
000D4A 8F 83 [24] 3205 mov dph,r7
000D4C E0 [24] 3206 movx a,@dptr
000D4D FD [12] 3207 mov r5,a
000D4E A3 [24] 3208 inc dptr
000D4F AE 82 [24] 3209 mov r6,dpl
000D51 AF 83 [24] 3210 mov r7,dph
000D53 78r10 [12] 3211 mov r0,#_request_value
000D55 A6 05 [24] 3212 mov @r0,ar5
3213 ; src/dap.c:605: if((request_value & DAP_TRANSFER_RnW) != 0U) { // Read register
000D57 ED [12] 3214 mov a,r5
000D58 30 E1 0D [24] 3215 jnb acc.1,00199$
3216 ; src/dap.c:606: if((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) req += 4;
000D5B ED [12] 3217 mov a,r5
000D5C 30 E4 10 [24] 3218 jnb acc.4,00227$
000D5F 74 04 [12] 3219 mov a,#0x04
000D61 2E [12] 3220 add a,r6
000D62 FE [12] 3221 mov r6,a
000D63 E4 [12] 3222 clr a
000D64 3F [12] 3223 addc a,r7
000D65 FF [12] 3224 mov r7,a
000D66 80 07 [24] 3225 sjmp 00227$
000D68 3226 00199$:
3227 ; src/dap.c:608: else req += 4; // Write register
000D68 74 04 [12] 3228 mov a,#0x04
000D6A 2E [12] 3229 add a,r6
000D6B FE [12] 3230 mov r6,a
000D6C E4 [12] 3231 clr a
000D6D 3F [12] 3232 addc a,r7
000D6E FF [12] 3233 mov r7,a
000D6F 3234 00227$:
3235 ; src/dap.c:602: for(; request_count != 0U; request_count--) {
000D6F 78r0F [12] 3236 mov r0,#_request_count
000D71 16 [12] 3237 dec @r0
000D72 80 CF [24] 3238 sjmp 00226$
000D74 3239 00201$:
3240 ; src/dap.c:611: if(response_value == DAP_TRANSFER_OK) {
000D74 78r12 [12] 3241 mov r0,#_response_value
000D76 B6 01 02 [24] 3242 cjne @r0,#0x01,00630$
000D79 80 03 [24] 3243 sjmp 00631$
000D7B 3244 00630$:
000D7B 02r0Er67 [24] 3245 ljmp 00221$
000D7E 3246 00631$:
3247 ; src/dap.c:612: if(post_read) {
000D7E E5*1D [12] 3248 mov a,_DAP_SWD_Transfer_post_read_65536_140
000D80 70 03 [24] 3249 jnz 00632$
000D82 02r0Er26 [24] 3250 ljmp 00217$
000D85 3251 00632$:
3252 ; src/dap.c:614: retry = retry_count;
000D85 78r02 [12] 3253 mov r0,#_retry_count
000D87 86 06 [24] 3254 mov ar6,@r0
000D89 08 [12] 3255 inc r0
000D8A 86 07 [24] 3256 mov ar7,@r0
000D8C 78r13 [12] 3257 mov r0,#_retry
000D8E A6 06 [24] 3258 mov @r0,ar6
000D90 08 [12] 3259 inc r0
000D91 A6 07 [24] 3260 mov @r0,ar7
3261 ; src/dap.c:615: do {
000D93 3262 00204$:
3263 ; src/dap.c:616: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
000D93 75*08r00 [24] 3264 mov _SWD_Transfer_PARM_2,#_data
000D96 75*09s00 [24] 3265 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000D99 75 82 0E [24] 3266 mov dpl,#0x0e
000D9C 12r01r30 [24] 3267 lcall _SWD_Transfer
000D9F AF 82 [24] 3268 mov r7,dpl
000DA1 78r12 [12] 3269 mov r0,#_response_value
000DA3 A6 07 [24] 3270 mov @r0,ar7
3271 ; src/dap.c:617: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000DA5 BF 02 1B [24] 3272 cjne r7,#0x02,00206$
000DA8 78r13 [12] 3273 mov r0,#_retry
000DAA 86 05 [24] 3274 mov ar5,@r0
000DAC 08 [12] 3275 inc r0
000DAD 86 06 [24] 3276 mov ar6,@r0
000DAF 78r13 [12] 3277 mov r0,#_retry
000DB1 ED [12] 3278 mov a,r5
000DB2 24 FF [12] 3279 add a,#0xff
000DB4 F6 [12] 3280 mov @r0,a
000DB5 EE [12] 3281 mov a,r6
000DB6 34 FF [12] 3282 addc a,#0xff
000DB8 08 [12] 3283 inc r0
000DB9 F6 [12] 3284 mov @r0,a
000DBA ED [12] 3285 mov a,r5
000DBB 4E [12] 3286 orl a,r6
000DBC 60 05 [24] 3287 jz 00206$
000DBE 78r0E [12] 3288 mov r0,#_DAP_TransferAbort
000DC0 E6 [12] 3289 mov a,@r0
000DC1 60 D0 [24] 3290 jz 00204$
000DC3 3291 00206$:
3292 ; src/dap.c:618: if(response_value != DAP_TRANSFER_OK) goto end;
000DC3 BF 01 02 [24] 3293 cjne r7,#0x01,00637$
000DC6 80 03 [24] 3294 sjmp 00638$
000DC8 3295 00637$:
000DC8 02r0Er67 [24] 3296 ljmp 00221$
000DCB 3297 00638$:
3298 ; src/dap.c:621: *res++ = (uint8_t)data[0];
000DCB AE*19 [24] 3299 mov r6,_DAP_SWD_Transfer_PARM_2
000DCD AF*1A [24] 3300 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000DCF 90r00r00 [24] 3301 mov dptr,#_data
000DD2 E0 [24] 3302 movx a,@dptr
000DD3 8E 82 [24] 3303 mov dpl,r6
000DD5 8F 83 [24] 3304 mov dph,r7
000DD7 F0 [24] 3305 movx @dptr,a
000DD8 74 01 [12] 3306 mov a,#0x01
000DDA 2E [12] 3307 add a,r6
000DDB F5*19 [12] 3308 mov _DAP_SWD_Transfer_PARM_2,a
000DDD E4 [12] 3309 clr a
000DDE 3F [12] 3310 addc a,r7
000DDF F5*1A [12] 3311 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3312 ; src/dap.c:622: *res++ = (uint8_t)data[1];
000DE1 AE*19 [24] 3313 mov r6,_DAP_SWD_Transfer_PARM_2
000DE3 AF*1A [24] 3314 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000DE5 90r00r01 [24] 3315 mov dptr,#(_data + 0x0001)
000DE8 E0 [24] 3316 movx a,@dptr
000DE9 8E 82 [24] 3317 mov dpl,r6
000DEB 8F 83 [24] 3318 mov dph,r7
000DED F0 [24] 3319 movx @dptr,a
000DEE 74 01 [12] 3320 mov a,#0x01
000DF0 2E [12] 3321 add a,r6
000DF1 F5*19 [12] 3322 mov _DAP_SWD_Transfer_PARM_2,a
000DF3 E4 [12] 3323 clr a
000DF4 3F [12] 3324 addc a,r7
000DF5 F5*1A [12] 3325 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3326 ; src/dap.c:623: *res++ = (uint8_t)data[2];
000DF7 AE*19 [24] 3327 mov r6,_DAP_SWD_Transfer_PARM_2
000DF9 AF*1A [24] 3328 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000DFB 90r00r02 [24] 3329 mov dptr,#(_data + 0x0002)
000DFE E0 [24] 3330 movx a,@dptr
000DFF 8E 82 [24] 3331 mov dpl,r6
000E01 8F 83 [24] 3332 mov dph,r7
000E03 F0 [24] 3333 movx @dptr,a
000E04 74 01 [12] 3334 mov a,#0x01
000E06 2E [12] 3335 add a,r6
000E07 F5*19 [12] 3336 mov _DAP_SWD_Transfer_PARM_2,a
000E09 E4 [12] 3337 clr a
000E0A 3F [12] 3338 addc a,r7
000E0B F5*1A [12] 3339 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3340 ; src/dap.c:624: *res++ = (uint8_t)data[3];
000E0D AE*19 [24] 3341 mov r6,_DAP_SWD_Transfer_PARM_2
000E0F AF*1A [24] 3342 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000E11 90r00r03 [24] 3343 mov dptr,#(_data + 0x0003)
000E14 E0 [24] 3344 movx a,@dptr
000E15 FD [12] 3345 mov r5,a
000E16 8E 82 [24] 3346 mov dpl,r6
000E18 8F 83 [24] 3347 mov dph,r7
000E1A F0 [24] 3348 movx @dptr,a
000E1B 74 01 [12] 3349 mov a,#0x01
000E1D 2E [12] 3350 add a,r6
000E1E F5*19 [12] 3351 mov _DAP_SWD_Transfer_PARM_2,a
000E20 E4 [12] 3352 clr a
000E21 3F [12] 3353 addc a,r7
000E22 F5*1A [12] 3354 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
000E24 80 41 [24] 3355 sjmp 00221$
000E26 3356 00217$:
3357 ; src/dap.c:626: else if(check_write) {
000E26 E5*1E [12] 3358 mov a,_DAP_SWD_Transfer_check_write_65536_140
000E28 60 3D [24] 3359 jz 00221$
3360 ; src/dap.c:628: retry = retry_count;
000E2A 78r02 [12] 3361 mov r0,#_retry_count
000E2C 86 06 [24] 3362 mov ar6,@r0
000E2E 08 [12] 3363 inc r0
000E2F 86 07 [24] 3364 mov ar7,@r0
000E31 78r13 [12] 3365 mov r0,#_retry
000E33 A6 06 [24] 3366 mov @r0,ar6
000E35 08 [12] 3367 inc r0
000E36 A6 07 [24] 3368 mov @r0,ar7
3369 ; src/dap.c:629: do {
000E38 3370 00211$:
3371 ; src/dap.c:630: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL);
000E38 E4 [12] 3372 clr a
000E39 F5*08 [12] 3373 mov _SWD_Transfer_PARM_2,a
000E3B F5*09 [12] 3374 mov (_SWD_Transfer_PARM_2 + 1),a
000E3D 75 82 0E [24] 3375 mov dpl,#0x0e
000E40 12r01r30 [24] 3376 lcall _SWD_Transfer
000E43 AF 82 [24] 3377 mov r7,dpl
000E45 78r12 [12] 3378 mov r0,#_response_value
000E47 A6 07 [24] 3379 mov @r0,ar7
3380 ; src/dap.c:631: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000E49 BF 02 1B [24] 3381 cjne r7,#0x02,00221$
000E4C 78r13 [12] 3382 mov r0,#_retry
000E4E 86 06 [24] 3383 mov ar6,@r0
000E50 08 [12] 3384 inc r0
000E51 86 07 [24] 3385 mov ar7,@r0
000E53 78r13 [12] 3386 mov r0,#_retry
000E55 EE [12] 3387 mov a,r6
000E56 24 FF [12] 3388 add a,#0xff
000E58 F6 [12] 3389 mov @r0,a
000E59 EF [12] 3390 mov a,r7
000E5A 34 FF [12] 3391 addc a,#0xff
000E5C 08 [12] 3392 inc r0
000E5D F6 [12] 3393 mov @r0,a
000E5E EE [12] 3394 mov a,r6
000E5F 4F [12] 3395 orl a,r7
000E60 60 05 [24] 3396 jz 00221$
000E62 78r0E [12] 3397 mov r0,#_DAP_TransferAbort
000E64 E6 [12] 3398 mov a,@r0
000E65 60 D1 [24] 3399 jz 00211$
3400 ; src/dap.c:635: end:
000E67 3401 00221$:
3402 ; src/dap.c:636: *(response_head + 0) = (uint8_t)response_count;
000E67 85*1B 82 [24] 3403 mov dpl,_DAP_SWD_Transfer_response_head_65536_140
000E6A 85*1C 83 [24] 3404 mov dph,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
000E6D 78r11 [12] 3405 mov r0,#_response_count
000E6F E6 [12] 3406 mov a,@r0
000E70 F0 [24] 3407 movx @dptr,a
3408 ; src/dap.c:637: *(response_head + 1) = (uint8_t)response_value;
000E71 85*1B 82 [24] 3409 mov dpl,_DAP_SWD_Transfer_response_head_65536_140
000E74 85*1C 83 [24] 3410 mov dph,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
000E77 A3 [24] 3411 inc dptr
000E78 78r12 [12] 3412 mov r0,#_response_value
000E7A E6 [12] 3413 mov a,@r0
000E7B F0 [24] 3414 movx @dptr,a
3415 ; src/dap.c:638: return((uint8_t)(res - response_head));
000E7C AF*19 [24] 3416 mov r7,_DAP_SWD_Transfer_PARM_2
000E7E AC*1B [24] 3417 mov r4,_DAP_SWD_Transfer_response_head_65536_140
000E80 EF [12] 3418 mov a,r7
000E81 C3 [12] 3419 clr c
000E82 9C [12] 3420 subb a,r4
000E83 F5 82 [12] 3421 mov dpl,a
3422 ; src/dap.c:639: }
000E85 22 [24] 3423 ret
3424 ;------------------------------------------------------------
3425 ;Allocation info for local variables in function 'DAP_SWD_TransferBlock'
3426 ;------------------------------------------------------------
3427 ;res Allocated with name '_DAP_SWD_TransferBlock_PARM_2'
3428 ;req Allocated to registers r6 r7
3429 ;response_head Allocated with name '_DAP_SWD_TransferBlock_response_head_65536_175'
3430 ;------------------------------------------------------------
3431 ; src/dap.c:647: static uint8_t DAP_SWD_TransferBlock(const __xdata uint8_t *req, __xdata uint8_t *res) {
3432 ; -----------------------------------------
3433 ; function DAP_SWD_TransferBlock
3434 ; -----------------------------------------
000E86 3435 _DAP_SWD_TransferBlock:
000E86 AE 82 [24] 3436 mov r6,dpl
000E88 AF 83 [24] 3437 mov r7,dph
3438 ; src/dap.c:649: response_count = 0U;
000E8A 78r11 [12] 3439 mov r0,#_response_count
000E8C 76 00 [12] 3440 mov @r0,#0x00
3441 ; src/dap.c:650: response_value = 0U;
000E8E 78r12 [12] 3442 mov r0,#_response_value
000E90 76 00 [12] 3443 mov @r0,#0x00
3444 ; src/dap.c:651: response_head = res;
000E92 85*20*22 [24] 3445 mov _DAP_SWD_TransferBlock_response_head_65536_175,_DAP_SWD_TransferBlock_PARM_2
000E95 85*21*23 [24] 3446 mov (_DAP_SWD_TransferBlock_response_head_65536_175 + 1),(_DAP_SWD_TransferBlock_PARM_2 + 1)
3447 ; src/dap.c:652: res += 3;
000E98 74 03 [12] 3448 mov a,#0x03
000E9A 25*22 [12] 3449 add a,_DAP_SWD_TransferBlock_response_head_65536_175
000E9C F5*20 [12] 3450 mov _DAP_SWD_TransferBlock_PARM_2,a
000E9E E4 [12] 3451 clr a
000E9F 35*23 [12] 3452 addc a,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
000EA1 F5*21 [12] 3453 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3454 ; src/dap.c:653: DAP_TransferAbort = 0U;
000EA3 78r0E [12] 3455 mov r0,#_DAP_TransferAbort
000EA5 76 00 [12] 3456 mov @r0,#0x00
3457 ; src/dap.c:654: req++; // ignore DAP index
000EA7 0E [12] 3458 inc r6
000EA8 BE 00 01 [24] 3459 cjne r6,#0x00,00261$
000EAB 0F [12] 3460 inc r7
000EAC 3461 00261$:
3462 ; src/dap.c:655: request_count = (uint16_t)(*(req + 0) << 0)
000EAC 8E 82 [24] 3463 mov dpl,r6
000EAE 8F 83 [24] 3464 mov dph,r7
000EB0 E0 [24] 3465 movx a,@dptr
000EB1 FB [12] 3466 mov r3,a
3467 ; src/dap.c:656: | (uint16_t)(*(req + 1) << 8);
000EB2 8E 82 [24] 3468 mov dpl,r6
000EB4 8F 83 [24] 3469 mov dph,r7
000EB6 A3 [24] 3470 inc dptr
000EB7 E0 [24] 3471 movx a,@dptr
000EB8 E4 [12] 3472 clr a
000EB9 FA [12] 3473 mov r2,a
000EBA 4B [12] 3474 orl a,r3
000EBB 78r0F [12] 3475 mov r0,#_request_count
000EBD F6 [12] 3476 mov @r0,a
3477 ; src/dap.c:657: req += 2;
000EBE 74 02 [12] 3478 mov a,#0x02
000EC0 2E [12] 3479 add a,r6
000EC1 FE [12] 3480 mov r6,a
000EC2 E4 [12] 3481 clr a
000EC3 3F [12] 3482 addc a,r7
000EC4 FF [12] 3483 mov r7,a
3484 ; src/dap.c:658: if(request_count == 0U) goto end;
000EC5 78r0F [12] 3485 mov r0,#_request_count
000EC7 E6 [12] 3486 mov a,@r0
000EC8 70 03 [24] 3487 jnz 00262$
000ECA 02r10rBE [24] 3488 ljmp 00143$
000ECD 3489 00262$:
3490 ; src/dap.c:660: request_value = *req++;
000ECD 8E 82 [24] 3491 mov dpl,r6
000ECF 8F 83 [24] 3492 mov dph,r7
000ED1 E0 [24] 3493 movx a,@dptr
000ED2 FB [12] 3494 mov r3,a
000ED3 0E [12] 3495 inc r6
000ED4 BE 00 01 [24] 3496 cjne r6,#0x00,00263$
000ED7 0F [12] 3497 inc r7
000ED8 3498 00263$:
000ED8 78r10 [12] 3499 mov r0,#_request_value
000EDA A6 03 [24] 3500 mov @r0,ar3
3501 ; src/dap.c:661: if((request_value & DAP_TRANSFER_RnW) != 0U) {
000EDC EB [12] 3502 mov a,r3
000EDD 20 E1 03 [24] 3503 jb acc.1,00264$
000EE0 02r0FrF1 [24] 3504 ljmp 00165$
000EE3 3505 00264$:
3506 ; src/dap.c:663: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
000EE3 EB [12] 3507 mov a,r3
000EE4 30 E0 46 [24] 3508 jnb acc.0,00159$
3509 ; src/dap.c:665: retry = retry_count;
000EE7 78r02 [12] 3510 mov r0,#_retry_count
000EE9 86 02 [24] 3511 mov ar2,@r0
000EEB 08 [12] 3512 inc r0
000EEC 86 03 [24] 3513 mov ar3,@r0
000EEE 78r13 [12] 3514 mov r0,#_retry
000EF0 A6 02 [24] 3515 mov @r0,ar2
000EF2 08 [12] 3516 inc r0
000EF3 A6 03 [24] 3517 mov @r0,ar3
3518 ; src/dap.c:666: do {
000EF5 3519 00105$:
3520 ; src/dap.c:667: response_value = SWD_Transfer(request_value, NULL);
000EF5 E4 [12] 3521 clr a
000EF6 F5*08 [12] 3522 mov _SWD_Transfer_PARM_2,a
000EF8 F5*09 [12] 3523 mov (_SWD_Transfer_PARM_2 + 1),a
000EFA 78r10 [12] 3524 mov r0,#_request_value
000EFC 86 82 [24] 3525 mov dpl,@r0
000EFE 12r01r30 [24] 3526 lcall _SWD_Transfer
000F01 AB 82 [24] 3527 mov r3,dpl
000F03 78r12 [12] 3528 mov r0,#_response_value
000F05 A6 03 [24] 3529 mov @r0,ar3
3530 ; src/dap.c:668: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000F07 BB 02 1B [24] 3531 cjne r3,#0x02,00107$
000F0A 78r13 [12] 3532 mov r0,#_retry
000F0C 86 02 [24] 3533 mov ar2,@r0
000F0E 08 [12] 3534 inc r0
000F0F 86 05 [24] 3535 mov ar5,@r0
000F11 78r13 [12] 3536 mov r0,#_retry
000F13 EA [12] 3537 mov a,r2
000F14 24 FF [12] 3538 add a,#0xff
000F16 F6 [12] 3539 mov @r0,a
000F17 ED [12] 3540 mov a,r5
000F18 34 FF [12] 3541 addc a,#0xff
000F1A 08 [12] 3542 inc r0
000F1B F6 [12] 3543 mov @r0,a
000F1C EA [12] 3544 mov a,r2
000F1D 4D [12] 3545 orl a,r5
000F1E 60 05 [24] 3546 jz 00107$
000F20 78r0E [12] 3547 mov r0,#_DAP_TransferAbort
000F22 E6 [12] 3548 mov a,@r0
000F23 60 D0 [24] 3549 jz 00105$
000F25 3550 00107$:
3551 ; src/dap.c:669: if(response_value != DAP_TRANSFER_OK) goto end;
000F25 BB 01 02 [24] 3552 cjne r3,#0x01,00270$
000F28 80 03 [24] 3553 sjmp 00271$
000F2A 3554 00270$:
000F2A 02r10rBE [24] 3555 ljmp 00143$
000F2D 3556 00271$:
3557 ; src/dap.c:671: while(request_count--) {
000F2D 3558 00159$:
000F2D 3559 00122$:
000F2D 78r0F [12] 3560 mov r0,#_request_count
000F2F 86 05 [24] 3561 mov ar5,@r0
000F31 78r0F [12] 3562 mov r0,#_request_count
000F33 ED [12] 3563 mov a,r5
000F34 14 [12] 3564 dec a
000F35 F6 [12] 3565 mov @r0,a
000F36 ED [12] 3566 mov a,r5
000F37 70 03 [24] 3567 jnz 00272$
000F39 02r10rBE [24] 3568 ljmp 00143$
000F3C 3569 00272$:
3570 ; src/dap.c:673: if((request_count == 0U) && ((request_value & DAP_TRANSFER_APnDP) != 0U))
000F3C 78r0F [12] 3571 mov r0,#_request_count
000F3E E6 [12] 3572 mov a,@r0
000F3F 70 0A [24] 3573 jnz 00113$
000F41 78r10 [12] 3574 mov r0,#_request_value
000F43 E6 [12] 3575 mov a,@r0
000F44 30 E0 04 [24] 3576 jnb acc.0,00113$
3577 ; src/dap.c:674: request_value = DP_RDBUFF | DAP_TRANSFER_RnW; // Last AP read
000F47 78r10 [12] 3578 mov r0,#_request_value
000F49 76 0E [12] 3579 mov @r0,#0x0e
000F4B 3580 00113$:
3581 ; src/dap.c:675: retry = retry_count;
000F4B 78r02 [12] 3582 mov r0,#_retry_count
000F4D 86 04 [24] 3583 mov ar4,@r0
000F4F 08 [12] 3584 inc r0
000F50 86 05 [24] 3585 mov ar5,@r0
000F52 78r13 [12] 3586 mov r0,#_retry
000F54 A6 04 [24] 3587 mov @r0,ar4
000F56 08 [12] 3588 inc r0
000F57 A6 05 [24] 3589 mov @r0,ar5
3590 ; src/dap.c:676: do {
000F59 3591 00117$:
3592 ; src/dap.c:677: response_value = SWD_Transfer(request_value, data);
000F59 75*08r00 [24] 3593 mov _SWD_Transfer_PARM_2,#_data
000F5C 75*09s00 [24] 3594 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000F5F 78r10 [12] 3595 mov r0,#_request_value
000F61 86 82 [24] 3596 mov dpl,@r0
000F63 12r01r30 [24] 3597 lcall _SWD_Transfer
000F66 AD 82 [24] 3598 mov r5,dpl
000F68 78r12 [12] 3599 mov r0,#_response_value
000F6A A6 05 [24] 3600 mov @r0,ar5
3601 ; src/dap.c:678: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000F6C BD 02 1B [24] 3602 cjne r5,#0x02,00119$
000F6F 78r13 [12] 3603 mov r0,#_retry
000F71 86 03 [24] 3604 mov ar3,@r0
000F73 08 [12] 3605 inc r0
000F74 86 04 [24] 3606 mov ar4,@r0
000F76 78r13 [12] 3607 mov r0,#_retry
000F78 EB [12] 3608 mov a,r3
000F79 24 FF [12] 3609 add a,#0xff
000F7B F6 [12] 3610 mov @r0,a
000F7C EC [12] 3611 mov a,r4
000F7D 34 FF [12] 3612 addc a,#0xff
000F7F 08 [12] 3613 inc r0
000F80 F6 [12] 3614 mov @r0,a
000F81 EB [12] 3615 mov a,r3
000F82 4C [12] 3616 orl a,r4
000F83 60 05 [24] 3617 jz 00119$
000F85 78r0E [12] 3618 mov r0,#_DAP_TransferAbort
000F87 E6 [12] 3619 mov a,@r0
000F88 60 CF [24] 3620 jz 00117$
000F8A 3621 00119$:
3622 ; src/dap.c:679: if(response_value != DAP_TRANSFER_OK) goto end;
000F8A BD 01 02 [24] 3623 cjne r5,#0x01,00279$
000F8D 80 03 [24] 3624 sjmp 00280$
000F8F 3625 00279$:
000F8F 02r10rBE [24] 3626 ljmp 00143$
000F92 3627 00280$:
3628 ; src/dap.c:682: *res++ = (uint8_t)data[0];
000F92 AC*20 [24] 3629 mov r4,_DAP_SWD_TransferBlock_PARM_2
000F94 AD*21 [24] 3630 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
000F96 90r00r00 [24] 3631 mov dptr,#_data
000F99 E0 [24] 3632 movx a,@dptr
000F9A 8C 82 [24] 3633 mov dpl,r4
000F9C 8D 83 [24] 3634 mov dph,r5
000F9E F0 [24] 3635 movx @dptr,a
000F9F 74 01 [12] 3636 mov a,#0x01
000FA1 2C [12] 3637 add a,r4
000FA2 F5*20 [12] 3638 mov _DAP_SWD_TransferBlock_PARM_2,a
000FA4 E4 [12] 3639 clr a
000FA5 3D [12] 3640 addc a,r5
000FA6 F5*21 [12] 3641 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3642 ; src/dap.c:683: *res++ = (uint8_t)data[1];
000FA8 AC*20 [24] 3643 mov r4,_DAP_SWD_TransferBlock_PARM_2
000FAA AD*21 [24] 3644 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
000FAC 90r00r01 [24] 3645 mov dptr,#(_data + 0x0001)
000FAF E0 [24] 3646 movx a,@dptr
000FB0 8C 82 [24] 3647 mov dpl,r4
000FB2 8D 83 [24] 3648 mov dph,r5
000FB4 F0 [24] 3649 movx @dptr,a
000FB5 74 01 [12] 3650 mov a,#0x01
000FB7 2C [12] 3651 add a,r4
000FB8 F5*20 [12] 3652 mov _DAP_SWD_TransferBlock_PARM_2,a
000FBA E4 [12] 3653 clr a
000FBB 3D [12] 3654 addc a,r5
000FBC F5*21 [12] 3655 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3656 ; src/dap.c:684: *res++ = (uint8_t)data[2];
000FBE AC*20 [24] 3657 mov r4,_DAP_SWD_TransferBlock_PARM_2
000FC0 AD*21 [24] 3658 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
000FC2 90r00r02 [24] 3659 mov dptr,#(_data + 0x0002)
000FC5 E0 [24] 3660 movx a,@dptr
000FC6 8C 82 [24] 3661 mov dpl,r4
000FC8 8D 83 [24] 3662 mov dph,r5
000FCA F0 [24] 3663 movx @dptr,a
000FCB 74 01 [12] 3664 mov a,#0x01
000FCD 2C [12] 3665 add a,r4
000FCE F5*20 [12] 3666 mov _DAP_SWD_TransferBlock_PARM_2,a
000FD0 E4 [12] 3667 clr a
000FD1 3D [12] 3668 addc a,r5
000FD2 F5*21 [12] 3669 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3670 ; src/dap.c:685: *res++ = (uint8_t)data[3];
000FD4 AC*20 [24] 3671 mov r4,_DAP_SWD_TransferBlock_PARM_2
000FD6 AD*21 [24] 3672 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
000FD8 90r00r03 [24] 3673 mov dptr,#(_data + 0x0003)
000FDB E0 [24] 3674 movx a,@dptr
000FDC FB [12] 3675 mov r3,a
000FDD 8C 82 [24] 3676 mov dpl,r4
000FDF 8D 83 [24] 3677 mov dph,r5
000FE1 F0 [24] 3678 movx @dptr,a
000FE2 74 01 [12] 3679 mov a,#0x01
000FE4 2C [12] 3680 add a,r4
000FE5 F5*20 [12] 3681 mov _DAP_SWD_TransferBlock_PARM_2,a
000FE7 E4 [12] 3682 clr a
000FE8 3D [12] 3683 addc a,r5
000FE9 F5*21 [12] 3684 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3685 ; src/dap.c:686: response_count++;
000FEB 78r11 [12] 3686 mov r0,#_response_count
000FED 06 [12] 3687 inc @r0
000FEE 02r0Fr2D [24] 3688 ljmp 00122$
3689 ; src/dap.c:691: while(request_count--) {
000FF1 3690 00165$:
000FF1 3691 00132$:
000FF1 78r0F [12] 3692 mov r0,#_request_count
000FF3 86 05 [24] 3693 mov ar5,@r0
000FF5 78r0F [12] 3694 mov r0,#_request_count
000FF7 ED [12] 3695 mov a,r5
000FF8 14 [12] 3696 dec a
000FF9 F6 [12] 3697 mov @r0,a
000FFA ED [12] 3698 mov a,r5
000FFB 70 03 [24] 3699 jnz 00281$
000FFD 02r10r81 [24] 3700 ljmp 00134$
001000 3701 00281$:
3702 ; src/dap.c:693: data[0] = (uint8_t)(*(req + 0));
001000 8E 82 [24] 3703 mov dpl,r6
001002 8F 83 [24] 3704 mov dph,r7
001004 E0 [24] 3705 movx a,@dptr
001005 90r00r00 [24] 3706 mov dptr,#_data
001008 F0 [24] 3707 movx @dptr,a
3708 ; src/dap.c:694: data[1] = (uint8_t)(*(req + 1));
001009 8E 82 [24] 3709 mov dpl,r6
00100B 8F 83 [24] 3710 mov dph,r7
00100D A3 [24] 3711 inc dptr
00100E E0 [24] 3712 movx a,@dptr
00100F 90r00r01 [24] 3713 mov dptr,#(_data + 0x0001)
001012 F0 [24] 3714 movx @dptr,a
3715 ; src/dap.c:695: data[2] = (uint8_t)(*(req + 2));
001013 8E 82 [24] 3716 mov dpl,r6
001015 8F 83 [24] 3717 mov dph,r7
001017 A3 [24] 3718 inc dptr
001018 A3 [24] 3719 inc dptr
001019 E0 [24] 3720 movx a,@dptr
00101A 90r00r02 [24] 3721 mov dptr,#(_data + 0x0002)
00101D F0 [24] 3722 movx @dptr,a
3723 ; src/dap.c:696: data[3] = (uint8_t)(*(req + 3));
00101E 8E 82 [24] 3724 mov dpl,r6
001020 8F 83 [24] 3725 mov dph,r7
001022 A3 [24] 3726 inc dptr
001023 A3 [24] 3727 inc dptr
001024 A3 [24] 3728 inc dptr
001025 E0 [24] 3729 movx a,@dptr
001026 90r00r03 [24] 3730 mov dptr,#(_data + 0x0003)
001029 F0 [24] 3731 movx @dptr,a
3732 ; src/dap.c:697: req += 4;
00102A 74 04 [12] 3733 mov a,#0x04
00102C 2E [12] 3734 add a,r6
00102D FE [12] 3735 mov r6,a
00102E E4 [12] 3736 clr a
00102F 3F [12] 3737 addc a,r7
001030 FF [12] 3738 mov r7,a
3739 ; src/dap.c:700: retry = retry_count;
001031 78r02 [12] 3740 mov r0,#_retry_count
001033 86 04 [24] 3741 mov ar4,@r0
001035 08 [12] 3742 inc r0
001036 86 05 [24] 3743 mov ar5,@r0
001038 78r13 [12] 3744 mov r0,#_retry
00103A A6 04 [24] 3745 mov @r0,ar4
00103C 08 [12] 3746 inc r0
00103D A6 05 [24] 3747 mov @r0,ar5
3748 ; src/dap.c:701: do {
00103F 3749 00127$:
3750 ; src/dap.c:702: response_value = SWD_Transfer(request_value, data);
00103F 75*08r00 [24] 3751 mov _SWD_Transfer_PARM_2,#_data
001042 75*09s00 [24] 3752 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
001045 78r10 [12] 3753 mov r0,#_request_value
001047 86 82 [24] 3754 mov dpl,@r0
001049 C0 07 [24] 3755 push ar7
00104B C0 06 [24] 3756 push ar6
00104D 12r01r30 [24] 3757 lcall _SWD_Transfer
001050 AD 82 [24] 3758 mov r5,dpl
001052 D0 06 [24] 3759 pop ar6
001054 D0 07 [24] 3760 pop ar7
001056 78r12 [12] 3761 mov r0,#_response_value
001058 A6 05 [24] 3762 mov @r0,ar5
3763 ; src/dap.c:703: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
00105A BD 02 1B [24] 3764 cjne r5,#0x02,00129$
00105D 78r13 [12] 3765 mov r0,#_retry
00105F 86 03 [24] 3766 mov ar3,@r0
001061 08 [12] 3767 inc r0
001062 86 04 [24] 3768 mov ar4,@r0
001064 78r13 [12] 3769 mov r0,#_retry
001066 EB [12] 3770 mov a,r3
001067 24 FF [12] 3771 add a,#0xff
001069 F6 [12] 3772 mov @r0,a
00106A EC [12] 3773 mov a,r4
00106B 34 FF [12] 3774 addc a,#0xff
00106D 08 [12] 3775 inc r0
00106E F6 [12] 3776 mov @r0,a
00106F EB [12] 3777 mov a,r3
001070 4C [12] 3778 orl a,r4
001071 60 05 [24] 3779 jz 00129$
001073 78r0E [12] 3780 mov r0,#_DAP_TransferAbort
001075 E6 [12] 3781 mov a,@r0
001076 60 C7 [24] 3782 jz 00127$
001078 3783 00129$:
3784 ; src/dap.c:704: if(response_value != DAP_TRANSFER_OK) goto end;
001078 BD 01 43 [24] 3785 cjne r5,#0x01,00143$
3786 ; src/dap.c:705: response_count++;
00107B 78r11 [12] 3787 mov r0,#_response_count
00107D 06 [12] 3788 inc @r0
00107E 02r0FrF1 [24] 3789 ljmp 00132$
001081 3790 00134$:
3791 ; src/dap.c:708: retry = retry_count;
001081 78r02 [12] 3792 mov r0,#_retry_count
001083 86 06 [24] 3793 mov ar6,@r0
001085 08 [12] 3794 inc r0
001086 86 07 [24] 3795 mov ar7,@r0
001088 78r13 [12] 3796 mov r0,#_retry
00108A A6 06 [24] 3797 mov @r0,ar6
00108C 08 [12] 3798 inc r0
00108D A6 07 [24] 3799 mov @r0,ar7
3800 ; src/dap.c:709: do {
00108F 3801 00137$:
3802 ; src/dap.c:710: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL);
00108F E4 [12] 3803 clr a
001090 F5*08 [12] 3804 mov _SWD_Transfer_PARM_2,a
001092 F5*09 [12] 3805 mov (_SWD_Transfer_PARM_2 + 1),a
001094 75 82 0E [24] 3806 mov dpl,#0x0e
001097 12r01r30 [24] 3807 lcall _SWD_Transfer
00109A AF 82 [24] 3808 mov r7,dpl
00109C 78r12 [12] 3809 mov r0,#_response_value
00109E A6 07 [24] 3810 mov @r0,ar7
3811 ; src/dap.c:711: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0010A0 BF 02 1B [24] 3812 cjne r7,#0x02,00143$
0010A3 78r13 [12] 3813 mov r0,#_retry
0010A5 86 06 [24] 3814 mov ar6,@r0
0010A7 08 [12] 3815 inc r0
0010A8 86 07 [24] 3816 mov ar7,@r0
0010AA 78r13 [12] 3817 mov r0,#_retry
0010AC EE [12] 3818 mov a,r6
0010AD 24 FF [12] 3819 add a,#0xff
0010AF F6 [12] 3820 mov @r0,a
0010B0 EF [12] 3821 mov a,r7
0010B1 34 FF [12] 3822 addc a,#0xff
0010B3 08 [12] 3823 inc r0
0010B4 F6 [12] 3824 mov @r0,a
0010B5 EE [12] 3825 mov a,r6
0010B6 4F [12] 3826 orl a,r7
0010B7 60 05 [24] 3827 jz 00143$
0010B9 78r0E [12] 3828 mov r0,#_DAP_TransferAbort
0010BB E6 [12] 3829 mov a,@r0
0010BC 60 D1 [24] 3830 jz 00137$
3831 ; src/dap.c:714: end:
0010BE 3832 00143$:
3833 ; src/dap.c:715: *(response_head + 0) = response_count;
0010BE 85*22 82 [24] 3834 mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
0010C1 85*23 83 [24] 3835 mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
0010C4 78r11 [12] 3836 mov r0,#_response_count
0010C6 E6 [12] 3837 mov a,@r0
0010C7 F0 [24] 3838 movx @dptr,a
3839 ; src/dap.c:716: *(response_head + 1) = 0;
0010C8 85*22 82 [24] 3840 mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
0010CB 85*23 83 [24] 3841 mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
0010CE A3 [24] 3842 inc dptr
0010CF E4 [12] 3843 clr a
0010D0 F0 [24] 3844 movx @dptr,a
3845 ; src/dap.c:717: *(response_head + 2) = response_value;
0010D1 85*22 82 [24] 3846 mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
0010D4 85*23 83 [24] 3847 mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
0010D7 A3 [24] 3848 inc dptr
0010D8 A3 [24] 3849 inc dptr
0010D9 78r12 [12] 3850 mov r0,#_response_value
0010DB E6 [12] 3851 mov a,@r0
0010DC F0 [24] 3852 movx @dptr,a
3853 ; src/dap.c:718: return((uint8_t)(res - response_head));
0010DD AF*20 [24] 3854 mov r7,_DAP_SWD_TransferBlock_PARM_2
0010DF AC*22 [24] 3855 mov r4,_DAP_SWD_TransferBlock_response_head_65536_175
0010E1 EF [12] 3856 mov a,r7
0010E2 C3 [12] 3857 clr c
0010E3 9C [12] 3858 subb a,r4
0010E4 F5 82 [12] 3859 mov dpl,a
3860 ; src/dap.c:719: }
0010E6 22 [24] 3861 ret
3862 ;------------------------------------------------------------
3863 ;Allocation info for local variables in function 'DAP_TransferBlock'
3864 ;------------------------------------------------------------
3865 ;res Allocated with name '_DAP_TransferBlock_PARM_2'
3866 ;req Allocated to registers r6 r7
3867 ;num Allocated to registers r7
3868 ;------------------------------------------------------------
3869 ; src/dap.c:727: static uint8_t DAP_TransferBlock(const __xdata uint8_t *req, __xdata uint8_t *res) {
3870 ; -----------------------------------------
3871 ; function DAP_TransferBlock
3872 ; -----------------------------------------
0010E7 3873 _DAP_TransferBlock:
0010E7 AE 82 [24] 3874 mov r6,dpl
0010E9 AF 83 [24] 3875 mov r7,dph
3876 ; src/dap.c:730: switch(debug_port) {
0010EB 78r01 [12] 3877 mov r0,#_debug_port
0010ED B6 01 11 [24] 3878 cjne @r0,#0x01,00102$
3879 ; src/dap.c:732: num = DAP_SWD_TransferBlock(req, res);
0010F0 85*24*20 [24] 3880 mov _DAP_SWD_TransferBlock_PARM_2,_DAP_TransferBlock_PARM_2
0010F3 85*25*21 [24] 3881 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),(_DAP_TransferBlock_PARM_2 + 1)
0010F6 8E 82 [24] 3882 mov dpl,r6
0010F8 8F 83 [24] 3883 mov dph,r7
0010FA 12r0Er86 [24] 3884 lcall _DAP_SWD_TransferBlock
0010FD AF 82 [24] 3885 mov r7,dpl
3886 ; src/dap.c:733: break;
3887 ; src/dap.c:734: default:
0010FF 80 19 [24] 3888 sjmp 00103$
001101 3889 00102$:
3890 ; src/dap.c:735: *(res + 0) = 0U; // res count [7:0]
001101 AD*24 [24] 3891 mov r5,_DAP_TransferBlock_PARM_2
001103 AE*25 [24] 3892 mov r6,(_DAP_TransferBlock_PARM_2 + 1)
001105 8D 82 [24] 3893 mov dpl,r5
001107 8E 83 [24] 3894 mov dph,r6
001109 E4 [12] 3895 clr a
00110A F0 [24] 3896 movx @dptr,a
3897 ; src/dap.c:736: *(res + 1) = 0U; // res count[15:8]
00110B 8D 82 [24] 3898 mov dpl,r5
00110D 8E 83 [24] 3899 mov dph,r6
00110F A3 [24] 3900 inc dptr
001110 F0 [24] 3901 movx @dptr,a
3902 ; src/dap.c:737: *(res + 2) = 0U; // res value
001111 8D 82 [24] 3903 mov dpl,r5
001113 8E 83 [24] 3904 mov dph,r6
001115 A3 [24] 3905 inc dptr
001116 A3 [24] 3906 inc dptr
001117 F0 [24] 3907 movx @dptr,a
3908 ; src/dap.c:738: num = 3U;
001118 7F 03 [12] 3909 mov r7,#0x03
3910 ; src/dap.c:740: }
00111A 3911 00103$:
3912 ; src/dap.c:741: return num;
00111A 8F 82 [24] 3913 mov dpl,r7
3914 ; src/dap.c:742: }
00111C 22 [24] 3915 ret
3916 ;------------------------------------------------------------
3917 ;Allocation info for local variables in function 'DAP_Thread'
3918 ;------------------------------------------------------------
3919 ;num Allocated to registers r6
3920 ;req Allocated to registers
3921 ;res Allocated to registers
3922 ;requested_hz Allocated with name '_DAP_Thread_requested_hz_196608_191'
3923 ;half Allocated to registers r3 r4 r5 r6
3924 ;sloc0 Allocated with name '_DAP_Thread_sloc0_1_0'
3925 ;------------------------------------------------------------
3926 ; src/dap.c:747: uint8_t DAP_Thread(void) {
3927 ; -----------------------------------------
3928 ; function DAP_Thread
3929 ; -----------------------------------------
00111D 3930 _DAP_Thread:
3931 ; src/dap.c:749: uint8_t __xdata *req = DAP_READ_BUF_PTR;
3932 ; src/dap.c:750: uint8_t __xdata *res = DAP_WRITE_BUF_PTR;
3933 ; src/dap.c:752: *res++ = *req;
00111D 90r00r00 [24] 3934 mov dptr,#_EP1_buffer
001120 E0 [24] 3935 movx a,@dptr
001121 90r00r40 [24] 3936 mov dptr,#(_EP1_buffer + 0x0040)
001124 F0 [24] 3937 movx @dptr,a
3938 ; src/dap.c:753: switch(*req++) {
001125 90r00r00 [24] 3939 mov dptr,#_EP1_buffer
001128 E0 [24] 3940 movx a,@dptr
001129 FF [12] 3941 mov r7,a
00112A 60 6B [24] 3942 jz 00103$
00112C BF 01 03 [24] 3943 cjne r7,#0x01,00202$
00112F 02r11rB9 [24] 3944 ljmp 00104$
001132 3945 00202$:
001132 BF 02 03 [24] 3946 cjne r7,#0x02,00203$
001135 02r11rCA [24] 3947 ljmp 00105$
001138 3948 00203$:
001138 BF 03 03 [24] 3949 cjne r7,#0x03,00204$
00113B 02r11rDB [24] 3950 ljmp 00106$
00113E 3951 00204$:
00113E BF 04 03 [24] 3952 cjne r7,#0x04,00205$
001141 02r12rF7 [24] 3953 ljmp 00117$
001144 3954 00205$:
001144 BF 05 02 [24] 3955 cjne r7,#0x05,00206$
001147 80 2C [24] 3956 sjmp 00101$
001149 3957 00206$:
001149 BF 06 02 [24] 3958 cjne r7,#0x06,00207$
00114C 80 38 [24] 3959 sjmp 00102$
00114E 3960 00207$:
00114E BF 08 03 [24] 3961 cjne r7,#0x08,00208$
001151 02r13r07 [24] 3962 ljmp 00118$
001154 3963 00208$:
001154 BF 10 03 [24] 3964 cjne r7,#0x10,00209$
001157 02r11rE6 [24] 3965 ljmp 00107$
00115A 3966 00209$:
00115A BF 11 03 [24] 3967 cjne r7,#0x11,00210$
00115D 02r11rF7 [24] 3968 ljmp 00108$
001160 3969 00210$:
001160 BF 12 03 [24] 3970 cjne r7,#0x12,00211$
001163 02r12rCE [24] 3971 ljmp 00114$
001166 3972 00211$:
001166 BF 13 03 [24] 3973 cjne r7,#0x13,00212$
001169 02r12rDE [24] 3974 ljmp 00115$
00116C 3975 00212$:
00116C BF 1D 03 [24] 3976 cjne r7,#0x1d,00213$
00116F 02r12rE7 [24] 3977 ljmp 00116$
001172 3978 00213$:
001172 02r13r10 [24] 3979 ljmp 00121$
3980 ; src/dap.c:754: case ID_DAP_Transfer:
001175 3981 00101$:
3982 ; src/dap.c:755: num = DAP_SWD_Transfer(req, res);
001175 75*19r41 [24] 3983 mov _DAP_SWD_Transfer_PARM_2,#(_EP1_buffer + 0x0041)
001178 75*1As00 [24] 3984 mov (_DAP_SWD_Transfer_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
00117B 90r00r01 [24] 3985 mov dptr,#(_EP1_buffer + 0x0001)
00117E 12r07rDD [24] 3986 lcall _DAP_SWD_Transfer
001181 AF 82 [24] 3987 mov r7,dpl
3988 ; src/dap.c:756: break;
001183 02r13r18 [24] 3989 ljmp 00122$
3990 ; src/dap.c:757: case ID_DAP_TransferBlock:
001186 3991 00102$:
3992 ; src/dap.c:758: num = DAP_TransferBlock(req, res);
001186 75*24r41 [24] 3993 mov _DAP_TransferBlock_PARM_2,#(_EP1_buffer + 0x0041)
001189 75*25s00 [24] 3994 mov (_DAP_TransferBlock_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
00118C 90r00r01 [24] 3995 mov dptr,#(_EP1_buffer + 0x0001)
00118F 12r10rE7 [24] 3996 lcall _DAP_TransferBlock
001192 AF 82 [24] 3997 mov r7,dpl
3998 ; src/dap.c:759: break;
001194 02r13r18 [24] 3999 ljmp 00122$
4000 ; src/dap.c:760: case ID_DAP_Info:
001197 4001 00103$:
4002 ; src/dap.c:761: num = DAP_Info(*req, res + 1);
001197 90r00r01 [24] 4003 mov dptr,#(_EP1_buffer + 0x0001)
00119A E0 [24] 4004 movx a,@dptr
00119B FE [12] 4005 mov r6,a
00119C 74 01 [12] 4006 mov a,#0x01
00119E 24r41 [12] 4007 add a,#(_EP1_buffer + 0x0041)
0011A0 F5*0A [12] 4008 mov _DAP_Info_PARM_2,a
0011A2 E4 [12] 4009 clr a
0011A3 34s00 [12] 4010 addc a,#((_EP1_buffer + 0x0041) >> 8)
0011A5 F5*0B [12] 4011 mov (_DAP_Info_PARM_2 + 1),a
0011A7 8E 82 [24] 4012 mov dpl,r6
0011A9 12r04rAD [24] 4013 lcall _DAP_Info
0011AC AE 82 [24] 4014 mov r6,dpl
4015 ; src/dap.c:762: *res = (uint8_t)num;
0011AE 90r00r41 [24] 4016 mov dptr,#(_EP1_buffer + 0x0041)
0011B1 EE [12] 4017 mov a,r6
0011B2 F0 [24] 4018 movx @dptr,a
4019 ; src/dap.c:763: num++;
0011B3 EE [12] 4020 mov a,r6
0011B4 04 [12] 4021 inc a
0011B5 FF [12] 4022 mov r7,a
4023 ; src/dap.c:764: break;
0011B6 02r13r18 [24] 4024 ljmp 00122$
4025 ; src/dap.c:765: case ID_DAP_HostStatus:
0011B9 4026 00104$:
4027 ; src/dap.c:766: num = DAP_HostStatus(req, res);
0011B9 75*00r41 [24] 4028 mov _DAP_HostStatus_PARM_2,#(_EP1_buffer + 0x0041)
0011BC 75*01s00 [24] 4029 mov (_DAP_HostStatus_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0011BF 90r00r01 [24] 4030 mov dptr,#(_EP1_buffer + 0x0001)
0011C2 12r05r16 [24] 4031 lcall _DAP_HostStatus
0011C5 AF 82 [24] 4032 mov r7,dpl
4033 ; src/dap.c:767: break;
0011C7 02r13r18 [24] 4034 ljmp 00122$
4035 ; src/dap.c:768: case ID_DAP_Connect:
0011CA 4036 00105$:
4037 ; src/dap.c:769: num = DAP_Connect(req, res);
0011CA 75*0Cr41 [24] 4038 mov _DAP_Connect_PARM_2,#(_EP1_buffer + 0x0041)
0011CD 75*0Ds00 [24] 4039 mov (_DAP_Connect_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0011D0 90r00r01 [24] 4040 mov dptr,#(_EP1_buffer + 0x0001)
0011D3 12r05r3C [24] 4041 lcall _DAP_Connect
0011D6 AF 82 [24] 4042 mov r7,dpl
4043 ; src/dap.c:770: break;
0011D8 02r13r18 [24] 4044 ljmp 00122$
4045 ; src/dap.c:771: case ID_DAP_Disconnect:
0011DB 4046 00106$:
4047 ; src/dap.c:772: num = DAP_Disconnect(res);
0011DB 90r00r41 [24] 4048 mov dptr,#(_EP1_buffer + 0x0041)
0011DE 12r05r7C [24] 4049 lcall _DAP_Disconnect
0011E1 AF 82 [24] 4050 mov r7,dpl
4051 ; src/dap.c:773: break;
0011E3 02r13r18 [24] 4052 ljmp 00122$
4053 ; src/dap.c:774: case ID_DAP_SWJ_Pins:
0011E6 4054 00107$:
4055 ; src/dap.c:775: num = DAP_SWJ_Pins(req, res);
0011E6 75*0Er41 [24] 4056 mov _DAP_SWJ_Pins_PARM_2,#(_EP1_buffer + 0x0041)
0011E9 75*0Fs00 [24] 4057 mov (_DAP_SWJ_Pins_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0011EC 90r00r01 [24] 4058 mov dptr,#(_EP1_buffer + 0x0001)
0011EF 12r05r9A [24] 4059 lcall _DAP_SWJ_Pins
0011F2 AF 82 [24] 4060 mov r7,dpl
4061 ; src/dap.c:776: break;
0011F4 02r13r18 [24] 4062 ljmp 00122$
4063 ; src/dap.c:777: case ID_DAP_SWJ_Clock: {
0011F7 4064 00108$:
4065 ; src/dap.c:778: uint32_t requested_hz = (uint32_t)req[0] | ((uint32_t)req[1]<<8)
0011F7 90r00r01 [24] 4066 mov dptr,#(_EP1_buffer + 0x0001)
0011FA E0 [24] 4067 movx a,@dptr
0011FB FE [12] 4068 mov r6,a
0011FC 8E*2A [24] 4069 mov _DAP_Thread_sloc0_1_0,r6
0011FE 75*2B 00 [24] 4070 mov (_DAP_Thread_sloc0_1_0 + 1),#0x00
001201 75*2C 00 [24] 4071 mov (_DAP_Thread_sloc0_1_0 + 2),#0x00
001204 75*2D 00 [24] 4072 mov (_DAP_Thread_sloc0_1_0 + 3),#0x00
001207 90r00r02 [24] 4073 mov dptr,#(_EP1_buffer + 0x0002)
00120A E0 [24] 4074 movx a,@dptr
00120B F8 [12] 4075 mov r0,a
00120C 79 00 [12] 4076 mov r1,#0x00
00120E 7A 00 [12] 4077 mov r2,#0x00
001210 8A 06 [24] 4078 mov ar6,r2
001212 89 02 [24] 4079 mov ar2,r1
001214 88 01 [24] 4080 mov ar1,r0
001216 E4 [12] 4081 clr a
001217 42*2A [12] 4082 orl _DAP_Thread_sloc0_1_0,a
001219 E9 [12] 4083 mov a,r1
00121A 42*2B [12] 4084 orl (_DAP_Thread_sloc0_1_0 + 1),a
00121C EA [12] 4085 mov a,r2
00121D 42*2C [12] 4086 orl (_DAP_Thread_sloc0_1_0 + 2),a
00121F EE [12] 4087 mov a,r6
001220 42*2D [12] 4088 orl (_DAP_Thread_sloc0_1_0 + 3),a
001222 90r00r03 [24] 4089 mov dptr,#(_EP1_buffer + 0x0003)
001225 E0 [24] 4090 movx a,@dptr
001226 FB [12] 4091 mov r3,a
001227 7C 00 [12] 4092 mov r4,#0x00
001229 8C 06 [24] 4093 mov ar6,r4
00122B 8B 05 [24] 4094 mov ar5,r3
00122D E4 [12] 4095 clr a
00122E FB [12] 4096 mov r3,a
00122F FC [12] 4097 mov r4,a
001230 42*2A [12] 4098 orl _DAP_Thread_sloc0_1_0,a
001232 EC [12] 4099 mov a,r4
001233 42*2B [12] 4100 orl (_DAP_Thread_sloc0_1_0 + 1),a
001235 ED [12] 4101 mov a,r5
001236 42*2C [12] 4102 orl (_DAP_Thread_sloc0_1_0 + 2),a
001238 EE [12] 4103 mov a,r6
001239 42*2D [12] 4104 orl (_DAP_Thread_sloc0_1_0 + 3),a
00123B 90r00r04 [24] 4105 mov dptr,#(_EP1_buffer + 0x0004)
00123E E0 [24] 4106 movx a,@dptr
00123F FE [12] 4107 mov r6,a
001240 E4 [12] 4108 clr a
001241 F8 [12] 4109 mov r0,a
001242 F9 [12] 4110 mov r1,a
001243 FA [12] 4111 mov r2,a
001244 E8 [12] 4112 mov a,r0
001245 45*2A [12] 4113 orl a,_DAP_Thread_sloc0_1_0
001247 F5*26 [12] 4114 mov _DAP_Thread_requested_hz_196608_191,a
001249 E9 [12] 4115 mov a,r1
00124A 45*2B [12] 4116 orl a,(_DAP_Thread_sloc0_1_0 + 1)
00124C F5*27 [12] 4117 mov (_DAP_Thread_requested_hz_196608_191 + 1),a
00124E EA [12] 4118 mov a,r2
00124F 45*2C [12] 4119 orl a,(_DAP_Thread_sloc0_1_0 + 2)
001251 F5*28 [12] 4120 mov (_DAP_Thread_requested_hz_196608_191 + 2),a
001253 EE [12] 4121 mov a,r6
001254 45*2D [12] 4122 orl a,(_DAP_Thread_sloc0_1_0 + 3)
001256 F5*29 [12] 4123 mov (_DAP_Thread_requested_hz_196608_191 + 3),a
4124 ; src/dap.c:781: if(requested_hz < 8UL) { *res = DAP_ERROR; }
001258 C3 [12] 4125 clr c
001259 E5*26 [12] 4126 mov a,_DAP_Thread_requested_hz_196608_191
00125B 94 08 [12] 4127 subb a,#0x08
00125D E5*27 [12] 4128 mov a,(_DAP_Thread_requested_hz_196608_191 + 1)
00125F 94 00 [12] 4129 subb a,#0x00
001261 E5*28 [12] 4130 mov a,(_DAP_Thread_requested_hz_196608_191 + 2)
001263 94 00 [12] 4131 subb a,#0x00
001265 E5*29 [12] 4132 mov a,(_DAP_Thread_requested_hz_196608_191 + 3)
001267 94 00 [12] 4133 subb a,#0x00
001269 50 08 [24] 4134 jnc 00112$
00126B 90r00r41 [24] 4135 mov dptr,#(_EP1_buffer + 0x0041)
00126E 74 FF [12] 4136 mov a,#0xff
001270 F0 [24] 4137 movx @dptr,a
001271 80 57 [24] 4138 sjmp 00113$
001273 4139 00112$:
4140 ; src/dap.c:783: if(requested_hz > 100000UL) requested_hz = 100000UL;
001273 C3 [12] 4141 clr c
001274 74 A0 [12] 4142 mov a,#0xa0
001276 95*26 [12] 4143 subb a,_DAP_Thread_requested_hz_196608_191
001278 74 86 [12] 4144 mov a,#0x86
00127A 95*27 [12] 4145 subb a,(_DAP_Thread_requested_hz_196608_191 + 1)
00127C 74 01 [12] 4146 mov a,#0x01
00127E 95*28 [12] 4147 subb a,(_DAP_Thread_requested_hz_196608_191 + 2)
001280 E4 [12] 4148 clr a
001281 95*29 [12] 4149 subb a,(_DAP_Thread_requested_hz_196608_191 + 3)
001283 50 0C [24] 4150 jnc 00110$
001285 75*26 A0 [24] 4151 mov _DAP_Thread_requested_hz_196608_191,#0xa0
001288 75*27 86 [24] 4152 mov (_DAP_Thread_requested_hz_196608_191 + 1),#0x86
00128B 75*28 01 [24] 4153 mov (_DAP_Thread_requested_hz_196608_191 + 2),#0x01
00128E 75*29 00 [24] 4154 mov (_DAP_Thread_requested_hz_196608_191 + 3),#0x00
001291 4155 00110$:
4156 ; src/dap.c:784: half = (500000UL + requested_hz - 1UL) / requested_hz;
001291 74 1F [12] 4157 mov a,#0x1f
001293 25*26 [12] 4158 add a,_DAP_Thread_requested_hz_196608_191
001295 F8 [12] 4159 mov r0,a
001296 74 A1 [12] 4160 mov a,#0xa1
001298 35*27 [12] 4161 addc a,(_DAP_Thread_requested_hz_196608_191 + 1)
00129A F9 [12] 4162 mov r1,a
00129B 74 07 [12] 4163 mov a,#0x07
00129D 35*28 [12] 4164 addc a,(_DAP_Thread_requested_hz_196608_191 + 2)
00129F FA [12] 4165 mov r2,a
0012A0 E4 [12] 4166 clr a
0012A1 35*29 [12] 4167 addc a,(_DAP_Thread_requested_hz_196608_191 + 3)
0012A3 FE [12] 4168 mov r6,a
0012A4 85*26*00 [24] 4169 mov __divulong_PARM_2,_DAP_Thread_requested_hz_196608_191
0012A7 85*27*01 [24] 4170 mov (__divulong_PARM_2 + 1),(_DAP_Thread_requested_hz_196608_191 + 1)
0012AA 85*28*02 [24] 4171 mov (__divulong_PARM_2 + 2),(_DAP_Thread_requested_hz_196608_191 + 2)
0012AD 85*29*03 [24] 4172 mov (__divulong_PARM_2 + 3),(_DAP_Thread_requested_hz_196608_191 + 3)
0012B0 88 82 [24] 4173 mov dpl,r0
0012B2 89 83 [24] 4174 mov dph,r1
0012B4 8A F0 [24] 4175 mov b,r2
0012B6 EE [12] 4176 mov a,r6
0012B7 12r00r00 [24] 4177 lcall __divulong
0012BA AB 82 [24] 4178 mov r3,dpl
0012BC AC 83 [24] 4179 mov r4,dph
0012BE AD F0 [24] 4180 mov r5,b
0012C0 FE [12] 4181 mov r6,a
4182 ; src/dap.c:785: ring_swd_half_period_us = (uint16_t)half;
0012C1 8B*00 [24] 4183 mov _ring_swd_half_period_us,r3
0012C3 8C*01 [24] 4184 mov (_ring_swd_half_period_us + 1),r4
4185 ; src/dap.c:786: *res = DAP_OK;
0012C5 90r00r41 [24] 4186 mov dptr,#(_EP1_buffer + 0x0041)
0012C8 E4 [12] 4187 clr a
0012C9 F0 [24] 4188 movx @dptr,a
0012CA 4189 00113$:
4190 ; src/dap.c:788: num = 1;
0012CA 7F 01 [12] 4191 mov r7,#0x01
4192 ; src/dap.c:789: break;
4193 ; src/dap.c:791: case ID_DAP_SWJ_Sequence:
0012CC 80 4A [24] 4194 sjmp 00122$
0012CE 4195 00114$:
4196 ; src/dap.c:792: num = DAP_SWJ_Sequence(req, res);
0012CE 75*15r41 [24] 4197 mov _DAP_SWJ_Sequence_PARM_2,#(_EP1_buffer + 0x0041)
0012D1 75*16s00 [24] 4198 mov (_DAP_SWJ_Sequence_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0012D4 90r00r01 [24] 4199 mov dptr,#(_EP1_buffer + 0x0001)
0012D7 12r06rB4 [24] 4200 lcall _DAP_SWJ_Sequence
0012DA AF 82 [24] 4201 mov r7,dpl
4202 ; src/dap.c:793: break;
4203 ; src/dap.c:794: case ID_DAP_SWD_Configure:
0012DC 80 3A [24] 4204 sjmp 00122$
0012DE 4205 00115$:
4206 ; src/dap.c:795: *res = DAP_OK;
0012DE 90r00r41 [24] 4207 mov dptr,#(_EP1_buffer + 0x0041)
0012E1 E4 [12] 4208 clr a
0012E2 F0 [24] 4209 movx @dptr,a
4210 ; src/dap.c:796: num = 1;
0012E3 7F 01 [12] 4211 mov r7,#0x01
4212 ; src/dap.c:797: break;
4213 ; src/dap.c:798: case ID_DAP_SWD_Sequence:
0012E5 80 31 [24] 4214 sjmp 00122$
0012E7 4215 00116$:
4216 ; src/dap.c:799: num = DAP_SWD_Sequence(req, res);
0012E7 75*17r41 [24] 4217 mov _DAP_SWD_Sequence_PARM_2,#(_EP1_buffer + 0x0041)
0012EA 75*18s00 [24] 4218 mov (_DAP_SWD_Sequence_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0012ED 90r00r01 [24] 4219 mov dptr,#(_EP1_buffer + 0x0001)
0012F0 12r06rDA [24] 4220 lcall _DAP_SWD_Sequence
0012F3 AF 82 [24] 4221 mov r7,dpl
4222 ; src/dap.c:800: break;
4223 ; src/dap.c:801: case ID_DAP_TransferConfigure:
0012F5 80 21 [24] 4224 sjmp 00122$
0012F7 4225 00117$:
4226 ; src/dap.c:802: num = DAP_TransferConfigure(req, res);
0012F7 75*00r41 [24] 4227 mov _DAP_TransferConfigure_PARM_2,#(_EP1_buffer + 0x0041)
0012FA 75*01s00 [24] 4228 mov (_DAP_TransferConfigure_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0012FD 90r00r01 [24] 4229 mov dptr,#(_EP1_buffer + 0x0001)
001300 12r07r89 [24] 4230 lcall _DAP_TransferConfigure
001303 AF 82 [24] 4231 mov r7,dpl
4232 ; src/dap.c:803: break;
4233 ; src/dap.c:804: case ID_DAP_WriteABORT:
001305 80 11 [24] 4234 sjmp 00122$
001307 4235 00118$:
4236 ; src/dap.c:805: *res = DAP_OK;
001307 90r00r41 [24] 4237 mov dptr,#(_EP1_buffer + 0x0041)
00130A E4 [12] 4238 clr a
00130B F0 [24] 4239 movx @dptr,a
4240 ; src/dap.c:806: num = 1;
00130C 7F 01 [12] 4241 mov r7,#0x01
4242 ; src/dap.c:807: break;
4243 ; src/dap.c:810: default:
00130E 80 08 [24] 4244 sjmp 00122$
001310 4245 00121$:
4246 ; src/dap.c:811: *(res - 1) = ID_DAP_Invalid;
001310 90r00r40 [24] 4247 mov dptr,#(_EP1_buffer + 0x0040)
001313 74 FF [12] 4248 mov a,#0xff
001315 F0 [24] 4249 movx @dptr,a
4250 ; src/dap.c:812: num = 1;
001316 7F 01 [12] 4251 mov r7,#0x01
4252 ; src/dap.c:814: }
001318 4253 00122$:
4254 ; src/dap.c:815: return(num + 1);
001318 EF [12] 4255 mov a,r7
001319 04 [12] 4256 inc a
00131A F5 82 [12] 4257 mov dpl,a
4258 ; src/dap.c:816: }
00131C 22 [24] 4259 ret
4260 .area CSEG (CODE)
4261 .area CONST (CODE)
4262 .area CONST (CODE)
000000 4263 __str_0:
000000 31 2E 32 2E 31 4264 .ascii "1.2.1"
000005 00 4265 .db 0x00
4266 .area CSEG (CODE)
4267 .area CABS (ABS,CODE)