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.rst
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)
000022 556 _ring_swd_half_period_us::
000022 557 .ds 2
000024 558 _SWJ_Sequence_PARM_2:
000024 559 .ds 2
000026 560 _SWD_Sequence_PARM_2:
000026 561 .ds 2
000028 562 _SWD_Sequence_PARM_3:
000028 563 .ds 2
00002A 564 _SWD_Transfer_PARM_2:
00002A 565 .ds 2
00002C 566 _DAP_Info_PARM_2:
00002C 567 .ds 2
00002E 568 _DAP_Connect_PARM_2:
00002E 569 .ds 2
000030 570 _DAP_SWJ_Pins_PARM_2:
000030 571 .ds 2
000032 572 _DAP_SWJ_Pins_sloc0_1_0:
000032 573 .ds 1
000033 574 _DAP_SWJ_Pins_sloc1_1_0:
000033 575 .ds 1
000034 576 _DAP_SWJ_Pins_sloc2_1_0:
000034 577 .ds 2
000036 578 _DAP_SWJ_Pins_sloc4_1_0:
000036 579 .ds 1
000037 580 _DAP_SWJ_Sequence_PARM_2:
000037 581 .ds 2
000039 582 _DAP_SWD_Sequence_PARM_2:
000039 583 .ds 2
00003B 584 _DAP_SWD_Transfer_PARM_2:
00003B 585 .ds 2
00003D 586 _DAP_SWD_Transfer_response_head_65536_140:
00003D 587 .ds 2
00003F 588 _DAP_SWD_Transfer_post_read_65536_140:
00003F 589 .ds 1
000040 590 _DAP_SWD_Transfer_check_write_65536_140:
000040 591 .ds 1
000041 592 _DAP_SWD_Transfer_sloc0_1_0:
000041 593 .ds 1
000042 594 _DAP_SWD_TransferBlock_PARM_2:
000042 595 .ds 2
000044 596 _DAP_SWD_TransferBlock_response_head_65536_175:
000044 597 .ds 2
000046 598 _DAP_TransferBlock_PARM_2:
000046 599 .ds 2
000048 600 _DAP_Thread_requested_hz_196608_191:
000048 601 .ds 4
00004C 602 _DAP_Thread_sloc0_1_0:
00004C 603 .ds 4
604 ;--------------------------------------------------------
605 ; overlayable items in internal ram
606 ;--------------------------------------------------------
607 .area OSEG (OVR,DATA)
000010 608 _DAP_HostStatus_PARM_2:
000010 609 .ds 2
610 .area OSEG (OVR,DATA)
000010 611 _DAP_TransferConfigure_PARM_2:
000010 612 .ds 2
613 ;--------------------------------------------------------
614 ; indirectly addressable internal ram data
615 ;--------------------------------------------------------
616 .area ISEG (DATA)
000050 617 _idle_cycles::
000050 618 .ds 1
000051 619 _debug_port::
000051 620 .ds 1
000052 621 _retry_count::
000052 622 .ds 2
000054 623 _match_retry::
000054 624 .ds 2
000056 625 _match_mask::
000056 626 .ds 4
00005A 627 _match_value::
00005A 628 .ds 4
00005E 629 _DAP_TransferAbort::
00005E 630 .ds 1
00005F 631 _request_count::
00005F 632 .ds 1
000060 633 _request_value::
000060 634 .ds 1
000061 635 _response_count::
000061 636 .ds 1
000062 637 _response_value::
000062 638 .ds 1
000063 639 _retry::
000063 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)
000100 660 _data::
000100 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;
00005C 75 22 05 [24] 687 mov _ring_swd_half_period_us,#0x05
00005F 75 23 00 [24] 688 mov (_ring_swd_half_period_us + 1),#0x00
689 ; src/dap.c:438: __idata uint8_t DAP_TransferAbort = 0U;
000062 78 5E [12] 690 mov r0,#_DAP_TransferAbort
000064 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 ; -----------------------------------------
000151 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
000151 AF 82 [24] 722 mov r7,dpl
723 ; src/dap.c:49: val = 0U;
000153 7E 00 [12] 724 mov r6,#0x00
725 ; src/dap.c:50: n = 0U;
000155 7D 00 [12] 726 mov r5,#0x00
727 ; src/dap.c:51: while(count--) {
000157 AB 24 [24] 728 mov r3,_SWJ_Sequence_PARM_2
000159 AC 25 [24] 729 mov r4,(_SWJ_Sequence_PARM_2 + 1)
00015B 730 00103$:
00015B 8F 02 [24] 731 mov ar2,r7
00015D 1F [12] 732 dec r7
00015E EA [12] 733 mov a,r2
00015F 60 48 [24] 734 jz 00106$
735 ; src/dap.c:52: if(n == 0U) {
000161 ED [12] 736 mov a,r5
000162 70 0D [24] 737 jnz 00102$
738 ; src/dap.c:53: val = *data++;
000164 8B 82 [24] 739 mov dpl,r3
000166 8C 83 [24] 740 mov dph,r4
000168 E0 [24] 741 movx a,@dptr
000169 FE [12] 742 mov r6,a
00016A A3 [24] 743 inc dptr
00016B AB 82 [24] 744 mov r3,dpl
00016D AC 83 [24] 745 mov r4,dph
746 ; src/dap.c:54: n = 8U;
00016F 7D 08 [12] 747 mov r5,#0x08
000171 748 00102$:
749 ; src/dap.c:57: SWD_WRITE_BIT(val);
000171 EE [12] 750 mov a,r6
000172 54 01 [12] 751 anl a,#0x01
752 ; assignBit
000174 24 FF [12] 753 add a,#0xff
000176 92 95 [24] 754 mov _PP15,c
000178 85 22 82 [24] 755 mov dpl,_ring_swd_half_period_us
00017B 85 23 83 [24] 756 mov dph,(_ring_swd_half_period_us + 1)
00017E C0 07 [24] 757 push ar7
000180 C0 06 [24] 758 push ar6
000182 C0 05 [24] 759 push ar5
000184 C0 04 [24] 760 push ar4
000186 C0 03 [24] 761 push ar3
000188 12 14 6E [24] 762 lcall _DLY_us
763 ; assignBit
00018B D2 96 [12] 764 setb _PP16
00018D 85 22 82 [24] 765 mov dpl,_ring_swd_half_period_us
000190 85 23 83 [24] 766 mov dph,(_ring_swd_half_period_us + 1)
000193 12 14 6E [24] 767 lcall _DLY_us
000196 D0 03 [24] 768 pop ar3
000198 D0 04 [24] 769 pop ar4
00019A D0 05 [24] 770 pop ar5
00019C D0 06 [24] 771 pop ar6
00019E D0 07 [24] 772 pop ar7
773 ; assignBit
0001A0 C2 96 [12] 774 clr _PP16
775 ; src/dap.c:58: val >>= 1;
0001A2 EE [12] 776 mov a,r6
0001A3 C3 [12] 777 clr c
0001A4 13 [12] 778 rrc a
0001A5 FE [12] 779 mov r6,a
780 ; src/dap.c:59: n--;
0001A6 1D [12] 781 dec r5
0001A7 80 B2 [24] 782 sjmp 00103$
0001A9 783 00106$:
784 ; src/dap.c:61: }
0001A9 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 ; -----------------------------------------
0001AA 801 _SWD_Sequence:
0001AA AF 82 [24] 802 mov r7,dpl
803 ; src/dap.c:75: n = info & SWD_SEQUENCE_CLK;
0001AC 74 3F [12] 804 mov a,#0x3f
0001AE 5F [12] 805 anl a,r7
806 ; src/dap.c:76: if(n == 0U) n = 64U;
0001AF FE [12] 807 mov r6,a
0001B0 70 02 [24] 808 jnz 00102$
0001B2 7E 40 [12] 809 mov r6,#0x40
0001B4 810 00102$:
811 ; src/dap.c:78: if(info & SWD_SEQUENCE_DIN) {
0001B4 EF [12] 812 mov a,r7
0001B5 30 E7 71 [24] 813 jnb acc.7,00131$
814 ; src/dap.c:79: while(n) {
0001B8 AD 28 [24] 815 mov r5,_SWD_Sequence_PARM_3
0001BA AF 29 [24] 816 mov r7,(_SWD_Sequence_PARM_3 + 1)
0001BC 817 00104$:
0001BC EE [12] 818 mov a,r6
0001BD 70 01 [24] 819 jnz 00188$
0001BF 22 [24] 820 ret
0001C0 821 00188$:
822 ; src/dap.c:80: val = 0U;
0001C0 7C 00 [12] 823 mov r4,#0x00
824 ; src/dap.c:81: for (k = 8U; k && n; k--, n--) {
0001C2 7B 08 [12] 825 mov r3,#0x08
0001C4 8E 02 [24] 826 mov ar2,r6
0001C6 827 00116$:
0001C6 EB [12] 828 mov a,r3
0001C7 60 45 [24] 829 jz 00135$
0001C9 EA [12] 830 mov a,r2
0001CA 60 42 [24] 831 jz 00135$
832 ; src/dap.c:82: SWD_READ_BIT(bits);
0001CC A2 95 [12] 833 mov c,_PP15
0001CE E4 [12] 834 clr a
0001CF 33 [12] 835 rlc a
0001D0 F9 [12] 836 mov r1,a
0001D1 85 22 82 [24] 837 mov dpl,_ring_swd_half_period_us
0001D4 85 23 83 [24] 838 mov dph,(_ring_swd_half_period_us + 1)
0001D7 C0 07 [24] 839 push ar7
0001D9 C0 05 [24] 840 push ar5
0001DB C0 04 [24] 841 push ar4
0001DD C0 03 [24] 842 push ar3
0001DF C0 02 [24] 843 push ar2
0001E1 C0 01 [24] 844 push ar1
0001E3 12 14 6E [24] 845 lcall _DLY_us
846 ; assignBit
0001E6 D2 96 [12] 847 setb _PP16
0001E8 85 22 82 [24] 848 mov dpl,_ring_swd_half_period_us
0001EB 85 23 83 [24] 849 mov dph,(_ring_swd_half_period_us + 1)
0001EE 12 14 6E [24] 850 lcall _DLY_us
0001F1 D0 01 [24] 851 pop ar1
0001F3 D0 02 [24] 852 pop ar2
0001F5 D0 03 [24] 853 pop ar3
0001F7 D0 04 [24] 854 pop ar4
0001F9 D0 05 [24] 855 pop ar5
0001FB D0 07 [24] 856 pop ar7
857 ; assignBit
0001FD C2 96 [12] 858 clr _PP16
859 ; src/dap.c:83: val >>= 1;
0001FF EC [12] 860 mov a,r4
000200 C3 [12] 861 clr c
000201 13 [12] 862 rrc a
000202 F8 [12] 863 mov r0,a
864 ; src/dap.c:84: val |= bits << 7;
000203 E9 [12] 865 mov a,r1
000204 03 [12] 866 rr a
000205 54 80 [12] 867 anl a,#0x80
000207 F9 [12] 868 mov r1,a
000208 48 [12] 869 orl a,r0
000209 FC [12] 870 mov r4,a
871 ; src/dap.c:81: for (k = 8U; k && n; k--, n--) {
00020A 1B [12] 872 dec r3
00020B 1A [12] 873 dec r2
00020C 80 B8 [24] 874 sjmp 00116$
00020E 875 00135$:
00020E 8A 06 [24] 876 mov ar6,r2
877 ; src/dap.c:86: val >>= k;
000210 8B F0 [24] 878 mov b,r3
000212 05 F0 [12] 879 inc b
000214 EC [12] 880 mov a,r4
000215 80 02 [24] 881 sjmp 00192$
000217 882 00191$:
000217 C3 [12] 883 clr c
000218 13 [12] 884 rrc a
000219 885 00192$:
000219 D5 F0 FB [24] 886 djnz b,00191$
887 ; src/dap.c:87: *swdi++ = (uint8_t)val;
00021C FB [12] 888 mov r3,a
00021D 8D 82 [24] 889 mov dpl,r5
00021F 8F 83 [24] 890 mov dph,r7
000221 F0 [24] 891 movx @dptr,a
000222 A3 [24] 892 inc dptr
000223 AD 82 [24] 893 mov r5,dpl
000225 AF 83 [24] 894 mov r7,dph
895 ; src/dap.c:91: while(n) {
000227 80 93 [24] 896 sjmp 00104$
000229 897 00131$:
000229 AD 26 [24] 898 mov r5,_SWD_Sequence_PARM_2
00022B AF 27 [24] 899 mov r7,(_SWD_Sequence_PARM_2 + 1)
00022D 900 00108$:
00022D EE [12] 901 mov a,r6
00022E 60 50 [24] 902 jz 00122$
903 ; src/dap.c:92: val = *swdo++;
000230 8D 82 [24] 904 mov dpl,r5
000232 8F 83 [24] 905 mov dph,r7
000234 E0 [24] 906 movx a,@dptr
000235 FC [12] 907 mov r4,a
000236 A3 [24] 908 inc dptr
000237 AD 82 [24] 909 mov r5,dpl
000239 AF 83 [24] 910 mov r7,dph
911 ; src/dap.c:93: for(k = 8U; k && n; k--, n--) {
00023B 7B 08 [12] 912 mov r3,#0x08
00023D 8E 02 [24] 913 mov ar2,r6
00023F 914 00120$:
00023F EB [12] 915 mov a,r3
000240 60 EB [24] 916 jz 00108$
000242 EA [12] 917 mov a,r2
000243 60 E8 [24] 918 jz 00108$
919 ; src/dap.c:94: SWD_WRITE_BIT(val);
000245 EC [12] 920 mov a,r4
000246 54 01 [12] 921 anl a,#0x01
922 ; assignBit
000248 24 FF [12] 923 add a,#0xff
00024A 92 95 [24] 924 mov _PP15,c
00024C 85 22 82 [24] 925 mov dpl,_ring_swd_half_period_us
00024F 85 23 83 [24] 926 mov dph,(_ring_swd_half_period_us + 1)
000252 C0 07 [24] 927 push ar7
000254 C0 05 [24] 928 push ar5
000256 C0 04 [24] 929 push ar4
000258 C0 03 [24] 930 push ar3
00025A C0 02 [24] 931 push ar2
00025C 12 14 6E [24] 932 lcall _DLY_us
933 ; assignBit
00025F D2 96 [12] 934 setb _PP16
000261 85 22 82 [24] 935 mov dpl,_ring_swd_half_period_us
000264 85 23 83 [24] 936 mov dph,(_ring_swd_half_period_us + 1)
000267 12 14 6E [24] 937 lcall _DLY_us
00026A D0 02 [24] 938 pop ar2
00026C D0 03 [24] 939 pop ar3
00026E D0 04 [24] 940 pop ar4
000270 D0 05 [24] 941 pop ar5
000272 D0 07 [24] 942 pop ar7
943 ; assignBit
000274 C2 96 [12] 944 clr _PP16
945 ; src/dap.c:95: val >>= 1;
000276 EC [12] 946 mov a,r4
000277 C3 [12] 947 clr c
000278 13 [12] 948 rrc a
000279 FC [12] 949 mov r4,a
950 ; src/dap.c:93: for(k = 8U; k && n; k--, n--) {
00027A 1B [12] 951 dec r3
00027B 1A [12] 952 dec r2
00027C 8A 06 [24] 953 mov ar6,r2
00027E 80 BF [24] 954 sjmp 00120$
000280 955 00122$:
956 ; src/dap.c:99: }
000280 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 ; -----------------------------------------
000281 974 _SWD_Transfer:
000281 AF 82 [24] 975 mov r7,dpl
976 ; src/dap.c:117: SWD_WRITE_BIT(1U); // start bit
977 ; assignBit
000283 D2 95 [12] 978 setb _PP15
000285 85 22 82 [24] 979 mov dpl,_ring_swd_half_period_us
000288 85 23 83 [24] 980 mov dph,(_ring_swd_half_period_us + 1)
00028B C0 07 [24] 981 push ar7
00028D 12 14 6E [24] 982 lcall _DLY_us
983 ; assignBit
000290 D2 96 [12] 984 setb _PP16
000292 85 22 82 [24] 985 mov dpl,_ring_swd_half_period_us
000295 85 23 83 [24] 986 mov dph,(_ring_swd_half_period_us + 1)
000298 12 14 6E [24] 987 lcall _DLY_us
00029B D0 07 [24] 988 pop ar7
989 ; assignBit
00029D C2 96 [12] 990 clr _PP16
991 ; src/dap.c:118: SWD_WRITE_BIT(bits); // APnDP bit
00029F EF [12] 992 mov a,r7
0002A0 54 01 [12] 993 anl a,#0x01
994 ; assignBit
0002A2 24 FF [12] 995 add a,#0xff
0002A4 92 95 [24] 996 mov _PP15,c
0002A6 85 22 82 [24] 997 mov dpl,_ring_swd_half_period_us
0002A9 85 23 83 [24] 998 mov dph,(_ring_swd_half_period_us + 1)
0002AC C0 07 [24] 999 push ar7
0002AE 12 14 6E [24] 1000 lcall _DLY_us
1001 ; assignBit
0002B1 D2 96 [12] 1002 setb _PP16
0002B3 85 22 82 [24] 1003 mov dpl,_ring_swd_half_period_us
0002B6 85 23 83 [24] 1004 mov dph,(_ring_swd_half_period_us + 1)
0002B9 12 14 6E [24] 1005 lcall _DLY_us
0002BC D0 07 [24] 1006 pop ar7
1007 ; assignBit
0002BE C2 96 [12] 1008 clr _PP16
1009 ; src/dap.c:120: bits >>= 1;
0002C0 EF [12] 1010 mov a,r7
0002C1 C3 [12] 1011 clr c
0002C2 13 [12] 1012 rrc a
1013 ; src/dap.c:121: SWD_WRITE_BIT(bits); // RnW bit
0002C3 FE [12] 1014 mov r6,a
0002C4 54 01 [12] 1015 anl a,#0x01
1016 ; assignBit
0002C6 24 FF [12] 1017 add a,#0xff
0002C8 92 95 [24] 1018 mov _PP15,c
0002CA 85 22 82 [24] 1019 mov dpl,_ring_swd_half_period_us
0002CD 85 23 83 [24] 1020 mov dph,(_ring_swd_half_period_us + 1)
0002D0 C0 07 [24] 1021 push ar7
0002D2 C0 06 [24] 1022 push ar6
0002D4 12 14 6E [24] 1023 lcall _DLY_us
1024 ; assignBit
0002D7 D2 96 [12] 1025 setb _PP16
0002D9 85 22 82 [24] 1026 mov dpl,_ring_swd_half_period_us
0002DC 85 23 83 [24] 1027 mov dph,(_ring_swd_half_period_us + 1)
0002DF 12 14 6E [24] 1028 lcall _DLY_us
0002E2 D0 06 [24] 1029 pop ar6
0002E4 D0 07 [24] 1030 pop ar7
1031 ; assignBit
0002E6 C2 96 [12] 1032 clr _PP16
1033 ; src/dap.c:122: parity += bits;
0002E8 EE [12] 1034 mov a,r6
0002E9 2F [12] 1035 add a,r7
0002EA FD [12] 1036 mov r5,a
1037 ; src/dap.c:123: bits >>= 1;
0002EB EE [12] 1038 mov a,r6
0002EC C3 [12] 1039 clr c
0002ED 13 [12] 1040 rrc a
1041 ; src/dap.c:124: SWD_WRITE_BIT(bits); // A2 bit
0002EE FE [12] 1042 mov r6,a
0002EF 54 01 [12] 1043 anl a,#0x01
1044 ; assignBit
0002F1 24 FF [12] 1045 add a,#0xff
0002F3 92 95 [24] 1046 mov _PP15,c
0002F5 85 22 82 [24] 1047 mov dpl,_ring_swd_half_period_us
0002F8 85 23 83 [24] 1048 mov dph,(_ring_swd_half_period_us + 1)
0002FB C0 07 [24] 1049 push ar7
0002FD C0 06 [24] 1050 push ar6
0002FF C0 05 [24] 1051 push ar5
000301 12 14 6E [24] 1052 lcall _DLY_us
1053 ; assignBit
000304 D2 96 [12] 1054 setb _PP16
000306 85 22 82 [24] 1055 mov dpl,_ring_swd_half_period_us
000309 85 23 83 [24] 1056 mov dph,(_ring_swd_half_period_us + 1)
00030C 12 14 6E [24] 1057 lcall _DLY_us
00030F D0 05 [24] 1058 pop ar5
000311 D0 06 [24] 1059 pop ar6
1060 ; assignBit
000313 C2 96 [12] 1061 clr _PP16
1062 ; src/dap.c:125: parity += bits;
000315 EE [12] 1063 mov a,r6
000316 2D [12] 1064 add a,r5
000317 FD [12] 1065 mov r5,a
1066 ; src/dap.c:126: bits >>= 1;
000318 EE [12] 1067 mov a,r6
000319 C3 [12] 1068 clr c
00031A 13 [12] 1069 rrc a
1070 ; src/dap.c:127: SWD_WRITE_BIT(bits); // A3 bit
00031B FE [12] 1071 mov r6,a
00031C 54 01 [12] 1072 anl a,#0x01
1073 ; assignBit
00031E 24 FF [12] 1074 add a,#0xff
000320 92 95 [24] 1075 mov _PP15,c
000322 85 22 82 [24] 1076 mov dpl,_ring_swd_half_period_us
000325 85 23 83 [24] 1077 mov dph,(_ring_swd_half_period_us + 1)
000328 C0 06 [24] 1078 push ar6
00032A C0 05 [24] 1079 push ar5
00032C 12 14 6E [24] 1080 lcall _DLY_us
1081 ; assignBit
00032F D2 96 [12] 1082 setb _PP16
000331 85 22 82 [24] 1083 mov dpl,_ring_swd_half_period_us
000334 85 23 83 [24] 1084 mov dph,(_ring_swd_half_period_us + 1)
000337 12 14 6E [24] 1085 lcall _DLY_us
00033A D0 05 [24] 1086 pop ar5
00033C D0 06 [24] 1087 pop ar6
1088 ; assignBit
00033E C2 96 [12] 1089 clr _PP16
1090 ; src/dap.c:128: parity += bits;
000340 EE [12] 1091 mov a,r6
000341 2D [12] 1092 add a,r5
1093 ; src/dap.c:129: SWD_WRITE_BIT(parity); // parity bit
000342 54 01 [12] 1094 anl a,#0x01
1095 ; assignBit
000344 24 FF [12] 1096 add a,#0xff
000346 92 95 [24] 1097 mov _PP15,c
000348 85 22 82 [24] 1098 mov dpl,_ring_swd_half_period_us
00034B 85 23 83 [24] 1099 mov dph,(_ring_swd_half_period_us + 1)
00034E 12 14 6E [24] 1100 lcall _DLY_us
1101 ; assignBit
000351 D2 96 [12] 1102 setb _PP16
000353 85 22 82 [24] 1103 mov dpl,_ring_swd_half_period_us
000356 85 23 83 [24] 1104 mov dph,(_ring_swd_half_period_us + 1)
000359 12 14 6E [24] 1105 lcall _DLY_us
1106 ; assignBit
00035C C2 96 [12] 1107 clr _PP16
1108 ; src/dap.c:130: SWD_WRITE_BIT(0U); // stop bit
1109 ; assignBit
00035E C2 95 [12] 1110 clr _PP15
000360 85 22 82 [24] 1111 mov dpl,_ring_swd_half_period_us
000363 85 23 83 [24] 1112 mov dph,(_ring_swd_half_period_us + 1)
000366 12 14 6E [24] 1113 lcall _DLY_us
1114 ; assignBit
000369 D2 96 [12] 1115 setb _PP16
00036B 85 22 82 [24] 1116 mov dpl,_ring_swd_half_period_us
00036E 85 23 83 [24] 1117 mov dph,(_ring_swd_half_period_us + 1)
000371 12 14 6E [24] 1118 lcall _DLY_us
1119 ; assignBit
000374 C2 96 [12] 1120 clr _PP16
1121 ; src/dap.c:131: SWD_WRITE_BIT(1U); // park bit
1122 ; assignBit
000376 D2 95 [12] 1123 setb _PP15
000378 85 22 82 [24] 1124 mov dpl,_ring_swd_half_period_us
00037B 85 23 83 [24] 1125 mov dph,(_ring_swd_half_period_us + 1)
00037E 12 14 6E [24] 1126 lcall _DLY_us
1127 ; assignBit
000381 D2 96 [12] 1128 setb _PP16
000383 85 22 82 [24] 1129 mov dpl,_ring_swd_half_period_us
000386 85 23 83 [24] 1130 mov dph,(_ring_swd_half_period_us + 1)
000389 12 14 6E [24] 1131 lcall _DLY_us
1132 ; assignBit
00038C C2 96 [12] 1133 clr _PP16
1134 ; src/dap.c:134: SWD_OUT_DISABLE();
00038E 53 93 DF [24] 1135 anl _P1_DIR_PU,#0xdf
000391 53 92 DF [24] 1136 anl _P1_MOD_OC,#0xdf
1137 ; src/dap.c:135: SWD_CLOCK_CYCLE();
000394 85 22 82 [24] 1138 mov dpl,_ring_swd_half_period_us
000397 85 23 83 [24] 1139 mov dph,(_ring_swd_half_period_us + 1)
00039A 12 14 6E [24] 1140 lcall _DLY_us
1141 ; assignBit
00039D D2 96 [12] 1142 setb _PP16
00039F 85 22 82 [24] 1143 mov dpl,_ring_swd_half_period_us
0003A2 85 23 83 [24] 1144 mov dph,(_ring_swd_half_period_us + 1)
0003A5 12 14 6E [24] 1145 lcall _DLY_us
1146 ; assignBit
0003A8 C2 96 [12] 1147 clr _PP16
1148 ; src/dap.c:138: SWD_READ_BIT(bits);
0003AA A2 95 [12] 1149 mov c,_PP15
0003AC E4 [12] 1150 clr a
0003AD 33 [12] 1151 rlc a
0003AE FE [12] 1152 mov r6,a
0003AF 85 22 82 [24] 1153 mov dpl,_ring_swd_half_period_us
0003B2 85 23 83 [24] 1154 mov dph,(_ring_swd_half_period_us + 1)
0003B5 C0 06 [24] 1155 push ar6
0003B7 12 14 6E [24] 1156 lcall _DLY_us
1157 ; assignBit
0003BA D2 96 [12] 1158 setb _PP16
0003BC 85 22 82 [24] 1159 mov dpl,_ring_swd_half_period_us
0003BF 85 23 83 [24] 1160 mov dph,(_ring_swd_half_period_us + 1)
0003C2 12 14 6E [24] 1161 lcall _DLY_us
1162 ; assignBit
0003C5 C2 96 [12] 1163 clr _PP16
1164 ; src/dap.c:139: ack = bits << 0;
1165 ; src/dap.c:140: SWD_READ_BIT(bits);
0003C7 A2 95 [12] 1166 mov c,_PP15
0003C9 E4 [12] 1167 clr a
0003CA 33 [12] 1168 rlc a
0003CB FD [12] 1169 mov r5,a
0003CC 85 22 82 [24] 1170 mov dpl,_ring_swd_half_period_us
0003CF 85 23 83 [24] 1171 mov dph,(_ring_swd_half_period_us + 1)
0003D2 C0 05 [24] 1172 push ar5
0003D4 12 14 6E [24] 1173 lcall _DLY_us
1174 ; assignBit
0003D7 D2 96 [12] 1175 setb _PP16
0003D9 85 22 82 [24] 1176 mov dpl,_ring_swd_half_period_us
0003DC 85 23 83 [24] 1177 mov dph,(_ring_swd_half_period_us + 1)
0003DF 12 14 6E [24] 1178 lcall _DLY_us
0003E2 D0 05 [24] 1179 pop ar5
0003E4 D0 06 [24] 1180 pop ar6
1181 ; assignBit
0003E6 C2 96 [12] 1182 clr _PP16
1183 ; src/dap.c:141: ack |= bits << 1;
0003E8 ED [12] 1184 mov a,r5
0003E9 2D [12] 1185 add a,r5
0003EA FD [12] 1186 mov r5,a
0003EB EE [12] 1187 mov a,r6
0003EC 42 05 [12] 1188 orl ar5,a
1189 ; src/dap.c:142: SWD_READ_BIT(bits);
0003EE A2 95 [12] 1190 mov c,_PP15
0003F0 E4 [12] 1191 clr a
0003F1 33 [12] 1192 rlc a
0003F2 FE [12] 1193 mov r6,a
0003F3 85 22 82 [24] 1194 mov dpl,_ring_swd_half_period_us
0003F6 85 23 83 [24] 1195 mov dph,(_ring_swd_half_period_us + 1)
0003F9 C0 06 [24] 1196 push ar6
0003FB C0 05 [24] 1197 push ar5
0003FD 12 14 6E [24] 1198 lcall _DLY_us
1199 ; assignBit
000400 D2 96 [12] 1200 setb _PP16
000402 85 22 82 [24] 1201 mov dpl,_ring_swd_half_period_us
000405 85 23 83 [24] 1202 mov dph,(_ring_swd_half_period_us + 1)
000408 12 14 6E [24] 1203 lcall _DLY_us
00040B D0 05 [24] 1204 pop ar5
00040D D0 06 [24] 1205 pop ar6
00040F D0 07 [24] 1206 pop ar7
1207 ; assignBit
000411 C2 96 [12] 1208 clr _PP16
1209 ; src/dap.c:143: ack |= bits << 2;
000413 EE [12] 1210 mov a,r6
000414 2E [12] 1211 add a,r6
000415 25 E0 [12] 1212 add a,acc
000417 FE [12] 1213 mov r6,a
000418 ED [12] 1214 mov a,r5
000419 42 06 [12] 1215 orl ar6,a
1216 ; src/dap.c:145: if(ack == DAP_TRANSFER_OK) {
00041B BE 01 02 [24] 1217 cjne r6,#0x01,00245$
00041E 80 03 [24] 1218 sjmp 00246$
000420 1219 00245$:
000420 02 05 A4 [24] 1220 ljmp 00120$
000423 1221 00246$:
1222 ; src/dap.c:148: if(req & DAP_TRANSFER_RnW) { // read data
000423 EF [12] 1223 mov a,r7
000424 20 E1 03 [24] 1224 jb acc.1,00247$
000427 02 04 DD [24] 1225 ljmp 00114$
00042A 1226 00247$:
1227 ; src/dap.c:149: val = 0U;
00042A 7F 00 [12] 1228 mov r7,#0x00
1229 ; src/dap.c:150: parity = 0U;
00042C 7D 00 [12] 1230 mov r5,#0x00
1231 ; src/dap.c:151: for(m = 0; m < 4; m++) {
00042E 7C 00 [12] 1232 mov r4,#0x00
1233 ; src/dap.c:152: for(n = 8U; n; n--) {
000430 1234 00143$:
000430 7B 08 [12] 1235 mov r3,#0x08
000432 1236 00127$:
1237 ; src/dap.c:153: SWD_READ_BIT(bits); // read RDATA[0:31]
000432 A2 95 [12] 1238 mov c,_PP15
000434 E4 [12] 1239 clr a
000435 33 [12] 1240 rlc a
000436 FA [12] 1241 mov r2,a
000437 85 22 82 [24] 1242 mov dpl,_ring_swd_half_period_us
00043A 85 23 83 [24] 1243 mov dph,(_ring_swd_half_period_us + 1)
00043D C0 07 [24] 1244 push ar7
00043F C0 06 [24] 1245 push ar6
000441 C0 05 [24] 1246 push ar5
000443 C0 04 [24] 1247 push ar4
000445 C0 03 [24] 1248 push ar3
000447 C0 02 [24] 1249 push ar2
000449 12 14 6E [24] 1250 lcall _DLY_us
1251 ; assignBit
00044C D2 96 [12] 1252 setb _PP16
00044E 85 22 82 [24] 1253 mov dpl,_ring_swd_half_period_us
000451 85 23 83 [24] 1254 mov dph,(_ring_swd_half_period_us + 1)
000454 12 14 6E [24] 1255 lcall _DLY_us
000457 D0 02 [24] 1256 pop ar2
000459 D0 03 [24] 1257 pop ar3
00045B D0 04 [24] 1258 pop ar4
00045D D0 05 [24] 1259 pop ar5
00045F D0 06 [24] 1260 pop ar6
000461 D0 07 [24] 1261 pop ar7
1262 ; assignBit
000463 C2 96 [12] 1263 clr _PP16
1264 ; src/dap.c:154: parity += bits;
000465 EA [12] 1265 mov a,r2
000466 2D [12] 1266 add a,r5
000467 FD [12] 1267 mov r5,a
1268 ; src/dap.c:155: val >>= 1;
000468 EF [12] 1269 mov a,r7
000469 C3 [12] 1270 clr c
00046A 13 [12] 1271 rrc a
00046B FF [12] 1272 mov r7,a
1273 ; src/dap.c:156: if(bits) val |= 0x80;
00046C EA [12] 1274 mov a,r2
00046D 60 03 [24] 1275 jz 00128$
00046F 43 07 80 [24] 1276 orl ar7,#0x80
000472 1277 00128$:
1278 ; src/dap.c:152: for(n = 8U; n; n--) {
000472 DB BE [24] 1279 djnz r3,00127$
1280 ; src/dap.c:158: if(data) data[m] = val;
000474 E5 2A [12] 1281 mov a,_SWD_Transfer_PARM_2
000476 45 2B [12] 1282 orl a,(_SWD_Transfer_PARM_2 + 1)
000478 60 0C [24] 1283 jz 00130$
00047A EC [12] 1284 mov a,r4
00047B 25 2A [12] 1285 add a,_SWD_Transfer_PARM_2
00047D F5 82 [12] 1286 mov dpl,a
00047F E4 [12] 1287 clr a
000480 35 2B [12] 1288 addc a,(_SWD_Transfer_PARM_2 + 1)
000482 F5 83 [12] 1289 mov dph,a
000484 EF [12] 1290 mov a,r7
000485 F0 [24] 1291 movx @dptr,a
000486 1292 00130$:
1293 ; src/dap.c:151: for(m = 0; m < 4; m++) {
000486 0C [12] 1294 inc r4
000487 BC 04 00 [24] 1295 cjne r4,#0x04,00251$
00048A 1296 00251$:
00048A 40 A4 [24] 1297 jc 00143$
1298 ; src/dap.c:160: SWD_READ_BIT(bits); // read parity
00048C A2 95 [12] 1299 mov c,_PP15
00048E E4 [12] 1300 clr a
00048F 33 [12] 1301 rlc a
000490 FF [12] 1302 mov r7,a
000491 85 22 82 [24] 1303 mov dpl,_ring_swd_half_period_us
000494 85 23 83 [24] 1304 mov dph,(_ring_swd_half_period_us + 1)
000497 C0 07 [24] 1305 push ar7
000499 C0 06 [24] 1306 push ar6
00049B C0 05 [24] 1307 push ar5
00049D 12 14 6E [24] 1308 lcall _DLY_us
1309 ; assignBit
0004A0 D2 96 [12] 1310 setb _PP16
0004A2 85 22 82 [24] 1311 mov dpl,_ring_swd_half_period_us
0004A5 85 23 83 [24] 1312 mov dph,(_ring_swd_half_period_us + 1)
0004A8 12 14 6E [24] 1313 lcall _DLY_us
0004AB D0 05 [24] 1314 pop ar5
0004AD D0 06 [24] 1315 pop ar6
0004AF D0 07 [24] 1316 pop ar7
1317 ; assignBit
0004B1 C2 96 [12] 1318 clr _PP16
1319 ; src/dap.c:161: if((parity ^ bits) & 1U)
0004B3 EF [12] 1320 mov a,r7
0004B4 6D [12] 1321 xrl a,r5
0004B5 30 E0 02 [24] 1322 jnb acc.0,00108$
1323 ; src/dap.c:162: ack = DAP_TRANSFER_ERROR;
0004B8 7E 08 [12] 1324 mov r6,#0x08
0004BA 1325 00108$:
1326 ; src/dap.c:165: SWD_CLOCK_CYCLE();
0004BA 85 22 82 [24] 1327 mov dpl,_ring_swd_half_period_us
0004BD 85 23 83 [24] 1328 mov dph,(_ring_swd_half_period_us + 1)
0004C0 C0 06 [24] 1329 push ar6
0004C2 12 14 6E [24] 1330 lcall _DLY_us
1331 ; assignBit
0004C5 D2 96 [12] 1332 setb _PP16
0004C7 85 22 82 [24] 1333 mov dpl,_ring_swd_half_period_us
0004CA 85 23 83 [24] 1334 mov dph,(_ring_swd_half_period_us + 1)
0004CD 12 14 6E [24] 1335 lcall _DLY_us
0004D0 D0 06 [24] 1336 pop ar6
1337 ; assignBit
0004D2 C2 96 [12] 1338 clr _PP16
1339 ; src/dap.c:166: SWD_OUT_ENABLE();
0004D4 43 92 20 [24] 1340 orl _P1_MOD_OC,#0x20
0004D7 53 93 DF [24] 1341 anl _P1_DIR_PU,#0xdf
0004DA 02 05 73 [24] 1342 ljmp 00115$
0004DD 1343 00114$:
1344 ; src/dap.c:170: SWD_CLOCK_CYCLE();
0004DD 85 22 82 [24] 1345 mov dpl,_ring_swd_half_period_us
0004E0 85 23 83 [24] 1346 mov dph,(_ring_swd_half_period_us + 1)
0004E3 C0 06 [24] 1347 push ar6
0004E5 12 14 6E [24] 1348 lcall _DLY_us
1349 ; assignBit
0004E8 D2 96 [12] 1350 setb _PP16
0004EA 85 22 82 [24] 1351 mov dpl,_ring_swd_half_period_us
0004ED 85 23 83 [24] 1352 mov dph,(_ring_swd_half_period_us + 1)
0004F0 12 14 6E [24] 1353 lcall _DLY_us
0004F3 D0 06 [24] 1354 pop ar6
1355 ; assignBit
0004F5 C2 96 [12] 1356 clr _PP16
1357 ; src/dap.c:171: SWD_OUT_ENABLE();
0004F7 43 92 20 [24] 1358 orl _P1_MOD_OC,#0x20
0004FA 53 93 DF [24] 1359 anl _P1_DIR_PU,#0xdf
1360 ; src/dap.c:175: for(m = 0; m < 4; m++) {
0004FD 7F 00 [12] 1361 mov r7,#0x00
0004FF 7D 00 [12] 1362 mov r5,#0x00
000501 1363 00133$:
1364 ; src/dap.c:176: val = data[m];
000501 ED [12] 1365 mov a,r5
000502 25 2A [12] 1366 add a,_SWD_Transfer_PARM_2
000504 F5 82 [12] 1367 mov dpl,a
000506 E4 [12] 1368 clr a
000507 35 2B [12] 1369 addc a,(_SWD_Transfer_PARM_2 + 1)
000509 F5 83 [12] 1370 mov dph,a
00050B E0 [24] 1371 movx a,@dptr
00050C FC [12] 1372 mov r4,a
1373 ; src/dap.c:177: ACC = val;
00050D 8C E0 [24] 1374 mov _ACC,r4
1375 ; src/dap.c:178: if(P) parity++;
00050F 30 D0 01 [24] 1376 jnb _P,00150$
000512 0F [12] 1377 inc r7
1378 ; src/dap.c:179: for(n = 8U; n; n--) {
000513 1379 00150$:
000513 7B 08 [12] 1380 mov r3,#0x08
000515 1381 00131$:
1382 ; src/dap.c:180: SWD_WRITE_BIT(val);
000515 EC [12] 1383 mov a,r4
000516 54 01 [12] 1384 anl a,#0x01
1385 ; assignBit
000518 24 FF [12] 1386 add a,#0xff
00051A 92 95 [24] 1387 mov _PP15,c
00051C 85 22 82 [24] 1388 mov dpl,_ring_swd_half_period_us
00051F 85 23 83 [24] 1389 mov dph,(_ring_swd_half_period_us + 1)
000522 C0 07 [24] 1390 push ar7
000524 C0 06 [24] 1391 push ar6
000526 C0 05 [24] 1392 push ar5
000528 C0 04 [24] 1393 push ar4
00052A C0 03 [24] 1394 push ar3
00052C 12 14 6E [24] 1395 lcall _DLY_us
1396 ; assignBit
00052F D2 96 [12] 1397 setb _PP16
000531 85 22 82 [24] 1398 mov dpl,_ring_swd_half_period_us
000534 85 23 83 [24] 1399 mov dph,(_ring_swd_half_period_us + 1)
000537 12 14 6E [24] 1400 lcall _DLY_us
00053A D0 03 [24] 1401 pop ar3
00053C D0 04 [24] 1402 pop ar4
00053E D0 05 [24] 1403 pop ar5
000540 D0 06 [24] 1404 pop ar6
000542 D0 07 [24] 1405 pop ar7
1406 ; assignBit
000544 C2 96 [12] 1407 clr _PP16
1408 ; src/dap.c:181: val >>= 1;
000546 EC [12] 1409 mov a,r4
000547 C3 [12] 1410 clr c
000548 13 [12] 1411 rrc a
000549 FC [12] 1412 mov r4,a
1413 ; src/dap.c:179: for(n = 8U; n; n--) {
00054A DB C9 [24] 1414 djnz r3,00131$
1415 ; src/dap.c:175: for(m = 0; m < 4; m++) {
00054C 0D [12] 1416 inc r5
00054D BD 04 00 [24] 1417 cjne r5,#0x04,00256$
000550 1418 00256$:
000550 40 AF [24] 1419 jc 00133$
1420 ; src/dap.c:184: SWD_WRITE_BIT(parity); // write parity bit
000552 EF [12] 1421 mov a,r7
000553 54 01 [12] 1422 anl a,#0x01
1423 ; assignBit
000555 24 FF [12] 1424 add a,#0xff
000557 92 95 [24] 1425 mov _PP15,c
000559 85 22 82 [24] 1426 mov dpl,_ring_swd_half_period_us
00055C 85 23 83 [24] 1427 mov dph,(_ring_swd_half_period_us + 1)
00055F C0 06 [24] 1428 push ar6
000561 12 14 6E [24] 1429 lcall _DLY_us
1430 ; assignBit
000564 D2 96 [12] 1431 setb _PP16
000566 85 22 82 [24] 1432 mov dpl,_ring_swd_half_period_us
000569 85 23 83 [24] 1433 mov dph,(_ring_swd_half_period_us + 1)
00056C 12 14 6E [24] 1434 lcall _DLY_us
00056F D0 06 [24] 1435 pop ar6
1436 ; assignBit
000571 C2 96 [12] 1437 clr _PP16
000573 1438 00115$:
1439 ; src/dap.c:187: SWD_SET(0);
1440 ; assignBit
000573 C2 95 [12] 1441 clr _PP15
1442 ; src/dap.c:188: n = idle_cycles;
000575 78 50 [12] 1443 mov r0,#_idle_cycles
1444 ; src/dap.c:189: if(n) {
000577 E6 [12] 1445 mov a,@r0
000578 FF [12] 1446 mov r7,a
000579 60 24 [24] 1447 jz 00118$
1448 ; src/dap.c:190: for(; n; n--) SWD_CLOCK_CYCLE();
00057B 1449 00136$:
00057B EF [12] 1450 mov a,r7
00057C 60 21 [24] 1451 jz 00118$
00057E 85 22 82 [24] 1452 mov dpl,_ring_swd_half_period_us
000581 85 23 83 [24] 1453 mov dph,(_ring_swd_half_period_us + 1)
000584 C0 07 [24] 1454 push ar7
000586 C0 06 [24] 1455 push ar6
000588 12 14 6E [24] 1456 lcall _DLY_us
1457 ; assignBit
00058B D2 96 [12] 1458 setb _PP16
00058D 85 22 82 [24] 1459 mov dpl,_ring_swd_half_period_us
000590 85 23 83 [24] 1460 mov dph,(_ring_swd_half_period_us + 1)
000593 12 14 6E [24] 1461 lcall _DLY_us
000596 D0 06 [24] 1462 pop ar6
000598 D0 07 [24] 1463 pop ar7
1464 ; assignBit
00059A C2 96 [12] 1465 clr _PP16
00059C 1F [12] 1466 dec r7
00059D 80 DC [24] 1467 sjmp 00136$
00059F 1468 00118$:
1469 ; src/dap.c:192: SWD_SET(1);
1470 ; assignBit
00059F D2 95 [12] 1471 setb _PP15
1472 ; src/dap.c:193: return(ack);
0005A1 8E 82 [24] 1473 mov dpl,r6
0005A3 22 [24] 1474 ret
0005A4 1475 00120$:
1476 ; src/dap.c:196: if((ack == DAP_TRANSFER_WAIT) || (ack == DAP_TRANSFER_FAULT)) {
0005A4 BE 02 02 [24] 1477 cjne r6,#0x02,00260$
0005A7 80 03 [24] 1478 sjmp 00121$
0005A9 1479 00260$:
0005A9 BE 04 25 [24] 1480 cjne r6,#0x04,00157$
0005AC 1481 00121$:
1482 ; src/dap.c:198: SWD_CLOCK_CYCLE();
0005AC 85 22 82 [24] 1483 mov dpl,_ring_swd_half_period_us
0005AF 85 23 83 [24] 1484 mov dph,(_ring_swd_half_period_us + 1)
0005B2 C0 06 [24] 1485 push ar6
0005B4 12 14 6E [24] 1486 lcall _DLY_us
1487 ; assignBit
0005B7 D2 96 [12] 1488 setb _PP16
0005B9 85 22 82 [24] 1489 mov dpl,_ring_swd_half_period_us
0005BC 85 23 83 [24] 1490 mov dph,(_ring_swd_half_period_us + 1)
0005BF 12 14 6E [24] 1491 lcall _DLY_us
0005C2 D0 06 [24] 1492 pop ar6
1493 ; assignBit
0005C4 C2 96 [12] 1494 clr _PP16
1495 ; src/dap.c:199: SWD_OUT_ENABLE();
0005C6 43 92 20 [24] 1496 orl _P1_MOD_OC,#0x20
0005C9 53 93 DF [24] 1497 anl _P1_DIR_PU,#0xdf
1498 ; src/dap.c:200: SWD_SET(1);
1499 ; assignBit
0005CC D2 95 [12] 1500 setb _PP15
1501 ; src/dap.c:201: return(ack);
0005CE 8E 82 [24] 1502 mov dpl,r6
1503 ; src/dap.c:206: do {
0005D0 22 [24] 1504 ret
0005D1 1505 00157$:
0005D1 7F 22 [12] 1506 mov r7,#0x22
0005D3 1507 00124$:
1508 ; src/dap.c:207: SWD_CLOCK_CYCLE(); // back off data phase
0005D3 85 22 82 [24] 1509 mov dpl,_ring_swd_half_period_us
0005D6 85 23 83 [24] 1510 mov dph,(_ring_swd_half_period_us + 1)
0005D9 C0 07 [24] 1511 push ar7
0005DB C0 06 [24] 1512 push ar6
0005DD 12 14 6E [24] 1513 lcall _DLY_us
1514 ; assignBit
0005E0 D2 96 [12] 1515 setb _PP16
0005E2 85 22 82 [24] 1516 mov dpl,_ring_swd_half_period_us
0005E5 85 23 83 [24] 1517 mov dph,(_ring_swd_half_period_us + 1)
0005E8 12 14 6E [24] 1518 lcall _DLY_us
0005EB D0 06 [24] 1519 pop ar6
0005ED D0 07 [24] 1520 pop ar7
1521 ; assignBit
0005EF C2 96 [12] 1522 clr _PP16
1523 ; src/dap.c:208: } while(--n);
0005F1 DF E0 [24] 1524 djnz r7,00124$
1525 ; src/dap.c:210: SWD_OUT_ENABLE();
0005F3 43 92 20 [24] 1526 orl _P1_MOD_OC,#0x20
0005F6 53 93 DF [24] 1527 anl _P1_DIR_PU,#0xdf
1528 ; src/dap.c:211: SWD_SET(1);
1529 ; assignBit
0005F9 D2 95 [12] 1530 setb _PP15
1531 ; src/dap.c:212: return(ack);
0005FB 8E 82 [24] 1532 mov dpl,r6
1533 ; src/dap.c:213: }
0005FD 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 ; -----------------------------------------
0005FE 1546 _DAP_Info:
0005FE AF 82 [24] 1547 mov r7,dpl
1548 ; src/dap.c:222: uint8_t length = 0U;
000600 7E 00 [12] 1549 mov r6,#0x00
1550 ; src/dap.c:223: switch(id) {
000602 BF 04 02 [24] 1551 cjne r7,#0x04,00125$
000605 80 0F [24] 1552 sjmp 00101$
000607 1553 00125$:
000607 BF F0 02 [24] 1554 cjne r7,#0xf0,00126$
00060A 80 2A [24] 1555 sjmp 00102$
00060C 1556 00126$:
00060C BF FE 02 [24] 1557 cjne r7,#0xfe,00127$
00060F 80 48 [24] 1558 sjmp 00104$
000611 1559 00127$:
1560 ; src/dap.c:224: case DAP_ID_FW_VER:
000611 BF FF 50 [24] 1561 cjne r7,#0xff,00106$
000614 80 2D [24] 1562 sjmp 00103$
000616 1563 00101$:
1564 ; src/dap.c:225: length = (uint8_t)sizeof(DAP_FW_VER);
000616 7E 06 [12] 1565 mov r6,#0x06
1566 ; src/dap.c:226: strcpy(info, DAP_FW_VER );
000618 AC 2C [24] 1567 mov r4,_DAP_Info_PARM_2
00061A AD 2D [24] 1568 mov r5,(_DAP_Info_PARM_2 + 1)
00061C 7F 00 [12] 1569 mov r7,#0x00
00061E 75 10 42 [24] 1570 mov _strcpy_PARM_2,#__str_0
000621 75 11 19 [24] 1571 mov (_strcpy_PARM_2 + 1),#(__str_0 >> 8)
000624 75 12 80 [24] 1572 mov (_strcpy_PARM_2 + 2),#0x80
000627 8C 82 [24] 1573 mov dpl,r4
000629 8D 83 [24] 1574 mov dph,r5
00062B 8F F0 [24] 1575 mov b,r7
00062D C0 06 [24] 1576 push ar6
00062F 12 18 62 [24] 1577 lcall _strcpy
000632 D0 06 [24] 1578 pop ar6
1579 ; src/dap.c:227: break;
1580 ; src/dap.c:228: case DAP_ID_CAPABILITIES:
000634 80 2E [24] 1581 sjmp 00106$
000636 1582 00102$:
1583 ; src/dap.c:229: info[0] = DAP_PORT_SWD;
000636 85 2C 82 [24] 1584 mov dpl,_DAP_Info_PARM_2
000639 85 2D 83 [24] 1585 mov dph,(_DAP_Info_PARM_2 + 1)
00063C 74 01 [12] 1586 mov a,#0x01
00063E F0 [24] 1587 movx @dptr,a
1588 ; src/dap.c:230: length = 1U;
00063F 7E 01 [12] 1589 mov r6,#0x01
1590 ; src/dap.c:231: break;
1591 ; src/dap.c:232: case DAP_ID_PACKET_SIZE:
000641 80 21 [24] 1592 sjmp 00106$
000643 1593 00103$:
1594 ; src/dap.c:233: info[0] = DAP_PACKET_SIZE;
000643 AD 2C [24] 1595 mov r5,_DAP_Info_PARM_2
000645 AF 2D [24] 1596 mov r7,(_DAP_Info_PARM_2 + 1)
000647 8D 82 [24] 1597 mov dpl,r5
000649 8F 83 [24] 1598 mov dph,r7
00064B 74 40 [12] 1599 mov a,#0x40
00064D F0 [24] 1600 movx @dptr,a
1601 ; src/dap.c:234: info[1] = 0;
00064E 8D 82 [24] 1602 mov dpl,r5
000650 8F 83 [24] 1603 mov dph,r7
000652 A3 [24] 1604 inc dptr
000653 E4 [12] 1605 clr a
000654 F0 [24] 1606 movx @dptr,a
1607 ; src/dap.c:235: length = 2U;
000655 7E 02 [12] 1608 mov r6,#0x02
1609 ; src/dap.c:236: break;
1610 ; src/dap.c:237: case DAP_ID_PACKET_COUNT:
000657 80 0B [24] 1611 sjmp 00106$
000659 1612 00104$:
1613 ; src/dap.c:238: info[0] = DAP_PACKET_COUNT;
000659 85 2C 82 [24] 1614 mov dpl,_DAP_Info_PARM_2
00065C 85 2D 83 [24] 1615 mov dph,(_DAP_Info_PARM_2 + 1)
00065F 74 01 [12] 1616 mov a,#0x01
000661 F0 [24] 1617 movx @dptr,a
1618 ; src/dap.c:239: length = 1U;
000662 7E 01 [12] 1619 mov r6,#0x01
1620 ; src/dap.c:243: }
000664 1621 00106$:
1622 ; src/dap.c:244: return length;
000664 8E 82 [24] 1623 mov dpl,r6
1624 ; src/dap.c:245: }
000666 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 ; -----------------------------------------
000667 1636 _DAP_HostStatus:
000667 AE 82 [24] 1637 mov r6,dpl
000669 AF 83 [24] 1638 mov r7,dph
1639 ; src/dap.c:254: *res = DAP_OK;
00066B AC 10 [24] 1640 mov r4,_DAP_HostStatus_PARM_2
00066D AD 11 [24] 1641 mov r5,(_DAP_HostStatus_PARM_2 + 1)
00066F 8C 82 [24] 1642 mov dpl,r4
000671 8D 83 [24] 1643 mov dph,r5
000673 E4 [12] 1644 clr a
000674 F0 [24] 1645 movx @dptr,a
1646 ; src/dap.c:255: switch(*req) {
000675 8E 82 [24] 1647 mov dpl,r6
000677 8F 83 [24] 1648 mov dph,r7
000679 E0 [24] 1649 movx a,@dptr
00067A FF [12] 1650 mov r7,a
00067B 60 0C [24] 1651 jz 00104$
00067D BF 01 02 [24] 1652 cjne r7,#0x01,00116$
000680 80 07 [24] 1653 sjmp 00104$
000682 1654 00116$:
1655 ; src/dap.c:263: *res = DAP_ERROR;
000682 8C 82 [24] 1656 mov dpl,r4
000684 8D 83 [24] 1657 mov dph,r5
000686 74 FF [12] 1658 mov a,#0xff
000688 F0 [24] 1659 movx @dptr,a
1660 ; src/dap.c:264: }
000689 1661 00104$:
1662 ; src/dap.c:265: return 1;
000689 75 82 01 [24] 1663 mov dpl,#0x01
1664 ; src/dap.c:266: }
00068C 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 ; -----------------------------------------
00068D 1677 _DAP_Connect:
1678 ; src/dap.c:277: if(*req == DAP_PORT_AUTODETECT) port = DAP_DEFAULT_PORT;
00068D E0 [24] 1679 movx a,@dptr
00068E FF [12] 1680 mov r7,a
00068F 70 04 [24] 1681 jnz 00102$
000691 7E 01 [12] 1682 mov r6,#0x01
000693 80 02 [24] 1683 sjmp 00103$
000695 1684 00102$:
1685 ; src/dap.c:278: else port = *req;
000695 8F 06 [24] 1686 mov ar6,r7
000697 1687 00103$:
1688 ; src/dap.c:280: switch(port) {
000697 BE 01 25 [24] 1689 cjne r6,#0x01,00108$
1690 ; src/dap.c:282: debug_port = DAP_PORT_SWD;
00069A 78 51 [12] 1691 mov r0,#_debug_port
00069C 76 01 [12] 1692 mov @r0,#0x01
1693 ; src/dap.c:283: PORT_SWD_CONNECT();
1694 ; assignBit
00069E C2 94 [12] 1695 clr _PP14
0006A0 75 82 01 [24] 1696 mov dpl,#0x01
0006A3 C0 06 [24] 1697 push ar6
0006A5 12 00 84 [24] 1698 lcall _ring_probe_reset
1699 ; assignBit
0006A8 D2 95 [12] 1700 setb _PP15
0006AA 43 92 20 [24] 1701 orl _P1_MOD_OC,#0x20
0006AD 53 93 DF [24] 1702 anl _P1_DIR_PU,#0xdf
1703 ; assignBit
0006B0 C2 96 [12] 1704 clr _PP16
0006B2 53 92 BF [24] 1705 anl _P1_MOD_OC,#0xbf
0006B5 43 93 40 [24] 1706 orl _P1_DIR_PU,#0x40
0006B8 12 00 69 [24] 1707 lcall _ring_probe_enable
0006BB D0 06 [24] 1708 pop ar6
1709 ; src/dap.c:284: break;
1710 ; src/dap.c:285: default:
0006BD 80 02 [24] 1711 sjmp 00109$
0006BF 1712 00108$:
1713 ; src/dap.c:286: port = DAP_PORT_DISABLED;
0006BF 7E 00 [12] 1714 mov r6,#0x00
1715 ; src/dap.c:288: }
0006C1 1716 00109$:
1717 ; src/dap.c:290: *res = port;
0006C1 85 2E 82 [24] 1718 mov dpl,_DAP_Connect_PARM_2
0006C4 85 2F 83 [24] 1719 mov dph,(_DAP_Connect_PARM_2 + 1)
0006C7 EE [12] 1720 mov a,r6
0006C8 F0 [24] 1721 movx @dptr,a
1722 ; src/dap.c:291: return 1;
0006C9 75 82 01 [24] 1723 mov dpl,#0x01
1724 ; src/dap.c:292: }
0006CC 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 ; -----------------------------------------
0006CD 1735 _DAP_Disconnect:
1736 ; src/dap.c:300: *res = DAP_OK;
0006CD E4 [12] 1737 clr a
0006CE F0 [24] 1738 movx @dptr,a
1739 ; src/dap.c:301: debug_port = DAP_PORT_DISABLED;
0006CF 78 51 [12] 1740 mov r0,#_debug_port
0006D1 76 00 [12] 1741 mov @r0,#0x00
1742 ; src/dap.c:302: PORT_SWD_DISCONNECT();
1743 ; assignBit
0006D3 C2 94 [12] 1744 clr _PP14
0006D5 75 82 01 [24] 1745 mov dpl,#0x01
0006D8 12 00 84 [24] 1746 lcall _ring_probe_reset
0006DB 53 93 DF [24] 1747 anl _P1_DIR_PU,#0xdf
0006DE 53 92 DF [24] 1748 anl _P1_MOD_OC,#0xdf
0006E1 53 93 BF [24] 1749 anl _P1_DIR_PU,#0xbf
0006E4 53 92 BF [24] 1750 anl _P1_MOD_OC,#0xbf
1751 ; src/dap.c:303: return 1;
0006E7 75 82 01 [24] 1752 mov dpl,#0x01
1753 ; src/dap.c:304: }
0006EA 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 ; -----------------------------------------
0006EB 1772 _DAP_SWJ_Pins:
1773 ; src/dap.c:317: value = * (req + 0);
0006EB AE 82 [24] 1774 mov r6,dpl
0006ED AF 83 [24] 1775 mov r7,dph
0006EF E0 [24] 1776 movx a,@dptr
0006F0 FD [12] 1777 mov r5,a
1778 ; src/dap.c:318: select = (uint8_t) * (req + 1);
0006F1 8E 82 [24] 1779 mov dpl,r6
0006F3 8F 83 [24] 1780 mov dph,r7
0006F5 A3 [24] 1781 inc dptr
0006F6 E0 [24] 1782 movx a,@dptr
0006F7 FC [12] 1783 mov r4,a
1784 ; src/dap.c:319: wait = (uint16_t)(*(req + 2) << 0) | (uint16_t)(*(req + 3) << 8);
0006F8 8E 82 [24] 1785 mov dpl,r6
0006FA 8F 83 [24] 1786 mov dph,r7
0006FC A3 [24] 1787 inc dptr
0006FD A3 [24] 1788 inc dptr
0006FE E0 [24] 1789 movx a,@dptr
0006FF FB [12] 1790 mov r3,a
000700 7A 00 [12] 1791 mov r2,#0x00
000702 8E 82 [24] 1792 mov dpl,r6
000704 8F 83 [24] 1793 mov dph,r7
000706 A3 [24] 1794 inc dptr
000707 A3 [24] 1795 inc dptr
000708 A3 [24] 1796 inc dptr
000709 E0 [24] 1797 movx a,@dptr
00070A F9 [12] 1798 mov r1,a
00070B E4 [12] 1799 clr a
00070C 42 03 [12] 1800 orl ar3,a
00070E E9 [12] 1801 mov a,r1
00070F 42 02 [12] 1802 orl ar2,a
1803 ; src/dap.c:320: if((uint8_t)(*(req + 4)) || (uint8_t)(*(req + 5))) wait |= 0x8000;
000711 74 04 [12] 1804 mov a,#0x04
000713 2E [12] 1805 add a,r6
000714 F8 [12] 1806 mov r0,a
000715 E4 [12] 1807 clr a
000716 3F [12] 1808 addc a,r7
000717 F9 [12] 1809 mov r1,a
000718 88 82 [24] 1810 mov dpl,r0
00071A 89 83 [24] 1811 mov dph,r1
00071C E0 [24] 1812 movx a,@dptr
00071D 70 0E [24] 1813 jnz 00101$
00071F 74 05 [12] 1814 mov a,#0x05
000721 2E [12] 1815 add a,r6
000722 FE [12] 1816 mov r6,a
000723 E4 [12] 1817 clr a
000724 3F [12] 1818 addc a,r7
000725 FF [12] 1819 mov r7,a
000726 8E 82 [24] 1820 mov dpl,r6
000728 8F 83 [24] 1821 mov dph,r7
00072A E0 [24] 1822 movx a,@dptr
00072B 60 0B [24] 1823 jz 00102$
00072D 1824 00101$:
00072D 8B 06 [24] 1825 mov ar6,r3
00072F 8A 07 [24] 1826 mov ar7,r2
000731 43 07 80 [24] 1827 orl ar7,#0x80
000734 8E 03 [24] 1828 mov ar3,r6
000736 8F 02 [24] 1829 mov ar2,r7
000738 1830 00102$:
1831 ; src/dap.c:322: if((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) {
000738 EC [12] 1832 mov a,r4
000739 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));
00073C 8D 06 [24] 1835 mov ar6,r5
00073E 7F 00 [12] 1836 mov r7,#0x00
000740 EE [12] 1837 mov a,r6
000741 30 E0 06 [24] 1838 jnb acc.0,00129$
1839 ; assignBit
000744 D2 96 [12] 1840 setb _PP16
000746 A2 96 [12] 1841 mov c,_PP16
000748 80 04 [24] 1842 sjmp 00105$
00074A 1843 00129$:
1844 ; assignBit
00074A C2 96 [12] 1845 clr _PP16
00074C A2 96 [12] 1846 mov c,_PP16
00074E 1847 00105$:
1848 ; src/dap.c:325: if((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) {
00074E EC [12] 1849 mov a,r4
00074F 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));
000752 8D 06 [24] 1852 mov ar6,r5
000754 7F 00 [12] 1853 mov r7,#0x00
000756 EE [12] 1854 mov a,r6
000757 30 E1 06 [24] 1855 jnb acc.1,00131$
1856 ; assignBit
00075A D2 95 [12] 1857 setb _PP15
00075C A2 95 [12] 1858 mov c,_PP15
00075E 80 04 [24] 1859 sjmp 00107$
000760 1860 00131$:
1861 ; assignBit
000760 C2 95 [12] 1862 clr _PP15
000762 A2 95 [12] 1863 mov c,_PP15
000764 1864 00107$:
1865 ; src/dap.c:328: if((select & DAP_SWJ_nRESET_BIT) != 0U) {
000764 EC [12] 1866 mov a,r4
000765 30 E7 19 [24] 1867 jnb acc.7,00109$
1868 ; src/dap.c:329: RST_SET(value >> DAP_SWJ_nRESET);
000768 ED [12] 1869 mov a,r5
000769 23 [12] 1870 rl a
00076A 54 01 [12] 1871 anl a,#0x01
00076C F5 82 [12] 1872 mov dpl,a
00076E C0 05 [24] 1873 push ar5
000770 C0 04 [24] 1874 push ar4
000772 C0 03 [24] 1875 push ar3
000774 C0 02 [24] 1876 push ar2
000776 12 00 84 [24] 1877 lcall _ring_probe_reset
000779 D0 02 [24] 1878 pop ar2
00077B D0 03 [24] 1879 pop ar3
00077D D0 04 [24] 1880 pop ar4
00077F D0 05 [24] 1881 pop ar5
000781 1882 00109$:
1883 ; src/dap.c:332: if(wait != 0U) {
000781 EB [12] 1884 mov a,r3
000782 4A [12] 1885 orl a,r2
000783 60 5B [24] 1886 jz 00126$
1887 ; src/dap.c:333: do {
000785 74 02 [12] 1888 mov a,#0x02
000787 5C [12] 1889 anl a,r4
000788 FE [12] 1890 mov r6,a
000789 7F 00 [12] 1891 mov r7,#0x00
00078B 74 80 [12] 1892 mov a,#0x80
00078D 5C [12] 1893 anl a,r4
00078E F8 [12] 1894 mov r0,a
00078F 79 00 [12] 1895 mov r1,#0x00
000791 ED [12] 1896 mov a,r5
000792 23 [12] 1897 rl a
000793 54 01 [12] 1898 anl a,#0x01
000795 F5 32 [12] 1899 mov _DAP_SWJ_Pins_sloc0_1_0,a
000797 ED [12] 1900 mov a,r5
000798 C3 [12] 1901 clr c
000799 13 [12] 1902 rrc a
00079A F5 33 [12] 1903 mov _DAP_SWJ_Pins_sloc1_1_0,a
00079C 8D 36 [24] 1904 mov _DAP_SWJ_Pins_sloc4_1_0,r5
00079E 74 01 [12] 1905 mov a,#0x01
0007A0 5C [12] 1906 anl a,r4
0007A1 F5 34 [12] 1907 mov _DAP_SWJ_Pins_sloc2_1_0,a
1908 ; 1-genFromRTrack replaced mov (_DAP_SWJ_Pins_sloc2_1_0 + 1),#0x00
0007A3 8F 35 [24] 1909 mov (_DAP_SWJ_Pins_sloc2_1_0 + 1),r7
0007A5 8A 04 [24] 1910 mov ar4,r2
0007A7 1911 00122$:
1912 ; src/dap.c:334: if((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) {
0007A7 E5 34 [12] 1913 mov a,_DAP_SWJ_Pins_sloc2_1_0
0007A9 45 35 [12] 1914 orl a,(_DAP_SWJ_Pins_sloc2_1_0 + 1)
0007AB 60 09 [24] 1915 jz 00113$
1916 ; src/dap.c:335: if((value >> DAP_SWJ_SWCLK_TCK) ^ (SWK_GET())) continue;
0007AD A2 96 [12] 1917 mov c,_PP16
0007AF E4 [12] 1918 clr a
0007B0 33 [12] 1919 rlc a
0007B1 FA [12] 1920 mov r2,a
0007B2 65 36 [12] 1921 xrl a,_DAP_SWJ_Pins_sloc4_1_0
0007B4 70 1D [24] 1922 jnz 00123$
0007B6 1923 00113$:
1924 ; src/dap.c:337: if((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) {
0007B6 EE [12] 1925 mov a,r6
0007B7 4F [12] 1926 orl a,r7
0007B8 60 09 [24] 1927 jz 00117$
1928 ; src/dap.c:338: if((value >> DAP_SWJ_SWDIO_TMS) ^ (SWD_GET())) continue;
0007BA A2 95 [12] 1929 mov c,_PP15
0007BC E4 [12] 1930 clr a
0007BD 33 [12] 1931 rlc a
0007BE FA [12] 1932 mov r2,a
0007BF 65 33 [12] 1933 xrl a,_DAP_SWJ_Pins_sloc1_1_0
0007C1 70 10 [24] 1934 jnz 00123$
0007C3 1935 00117$:
1936 ; src/dap.c:340: if((select & DAP_SWJ_nRESET_BIT) != 0U) {
0007C3 E8 [12] 1937 mov a,r0
0007C4 49 [12] 1938 orl a,r1
0007C5 60 19 [24] 1939 jz 00126$
1940 ; src/dap.c:341: if((value >> DAP_SWJ_nRESET) ^ (RST_GET())) continue;
0007C7 A2 97 [12] 1941 mov c,_PP17
0007C9 B3 [12] 1942 cpl c
0007CA 92 00 [24] 1943 mov _DAP_SWJ_Pins_sloc3_1_0,c
0007CC E4 [12] 1944 clr a
0007CD 33 [12] 1945 rlc a
0007CE FA [12] 1946 mov r2,a
0007CF 65 32 [12] 1947 xrl a,_DAP_SWJ_Pins_sloc0_1_0
0007D1 60 0D [24] 1948 jz 00126$
1949 ; src/dap.c:343: break;
0007D3 1950 00123$:
1951 ; src/dap.c:344: } while(wait--);
0007D3 8B 02 [24] 1952 mov ar2,r3
0007D5 8C 05 [24] 1953 mov ar5,r4
0007D7 1B [12] 1954 dec r3
0007D8 BB FF 01 [24] 1955 cjne r3,#0xff,00202$
0007DB 1C [12] 1956 dec r4
0007DC 1957 00202$:
0007DC EA [12] 1958 mov a,r2
0007DD 4D [12] 1959 orl a,r5
0007DE 70 C7 [24] 1960 jnz 00122$
0007E0 1961 00126$:
1962 ; src/dap.c:347: value = ((uint8_t)SWK_GET() << DAP_SWJ_SWCLK_TCK)
0007E0 A2 96 [12] 1963 mov c,_PP16
0007E2 E4 [12] 1964 clr a
0007E3 33 [12] 1965 rlc a
0007E4 FF [12] 1966 mov r7,a
1967 ; src/dap.c:348: | ((uint8_t)SWD_GET() << DAP_SWJ_SWDIO_TMS)
0007E5 A2 95 [12] 1968 mov c,_PP15
0007E7 E4 [12] 1969 clr a
0007E8 33 [12] 1970 rlc a
0007E9 25 E0 [12] 1971 add a,acc
0007EB 42 07 [12] 1972 orl ar7,a
1973 ; src/dap.c:352: | ((uint8_t)RST_GET() << DAP_SWJ_nRESET);
0007ED A2 97 [12] 1974 mov c,_PP17
0007EF B3 [12] 1975 cpl c
0007F0 92 00 [24] 1976 mov _DAP_SWJ_Pins_sloc3_1_0,c
0007F2 E4 [12] 1977 clr a
0007F3 33 [12] 1978 rlc a
0007F4 03 [12] 1979 rr a
0007F5 54 80 [12] 1980 anl a,#0x80
0007F7 42 07 [12] 1981 orl ar7,a
1982 ; src/dap.c:353: *res = value;
0007F9 85 30 82 [24] 1983 mov dpl,_DAP_SWJ_Pins_PARM_2
0007FC 85 31 83 [24] 1984 mov dph,(_DAP_SWJ_Pins_PARM_2 + 1)
0007FF EF [12] 1985 mov a,r7
000800 F0 [24] 1986 movx @dptr,a
1987 ; src/dap.c:354: return 1;
000801 75 82 01 [24] 1988 mov dpl,#0x01
1989 ; src/dap.c:355: }
000804 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 ; -----------------------------------------
000805 2002 _DAP_SWJ_Sequence:
2003 ; src/dap.c:365: count = *req++;
000805 AE 82 [24] 2004 mov r6,dpl
000807 AF 83 [24] 2005 mov r7,dph
000809 E0 [24] 2006 movx a,@dptr
00080A FD [12] 2007 mov r5,a
00080B 0E [12] 2008 inc r6
00080C BE 00 01 [24] 2009 cjne r6,#0x00,00110$
00080F 0F [12] 2010 inc r7
000810 2011 00110$:
2012 ; src/dap.c:366: if(count == 0U) count = 255U;
000810 ED [12] 2013 mov a,r5
000811 FC [12] 2014 mov r4,a
000812 70 02 [24] 2015 jnz 00102$
000814 7C FF [12] 2016 mov r4,#0xff
000816 2017 00102$:
2018 ; src/dap.c:367: SWJ_Sequence(count, req);
000816 8E 24 [24] 2019 mov _SWJ_Sequence_PARM_2,r6
000818 8F 25 [24] 2020 mov (_SWJ_Sequence_PARM_2 + 1),r7
00081A 8C 82 [24] 2021 mov dpl,r4
00081C 12 01 51 [24] 2022 lcall _SWJ_Sequence
2023 ; src/dap.c:368: *res = DAP_OK;
00081F 85 37 82 [24] 2024 mov dpl,_DAP_SWJ_Sequence_PARM_2
000822 85 38 83 [24] 2025 mov dph,(_DAP_SWJ_Sequence_PARM_2 + 1)
000825 E4 [12] 2026 clr a
000826 F0 [24] 2027 movx @dptr,a
2028 ; src/dap.c:369: return 1;
000827 75 82 01 [24] 2029 mov dpl,#0x01
2030 ; src/dap.c:370: }
00082A 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 ; -----------------------------------------
00082B 2047 _DAP_SWD_Sequence:
00082B AE 82 [24] 2048 mov r6,dpl
00082D AF 83 [24] 2049 mov r7,dph
2050 ; src/dap.c:385: *res++ = DAP_OK;
00082F AC 39 [24] 2051 mov r4,_DAP_SWD_Sequence_PARM_2
000831 AD 3A [24] 2052 mov r5,(_DAP_SWD_Sequence_PARM_2 + 1)
000833 8C 82 [24] 2053 mov dpl,r4
000835 8D 83 [24] 2054 mov dph,r5
000837 E4 [12] 2055 clr a
000838 F0 [24] 2056 movx @dptr,a
000839 04 [12] 2057 inc a
00083A 2C [12] 2058 add a,r4
00083B F5 39 [12] 2059 mov _DAP_SWD_Sequence_PARM_2,a
00083D E4 [12] 2060 clr a
00083E 3D [12] 2061 addc a,r5
00083F F5 3A [12] 2062 mov (_DAP_SWD_Sequence_PARM_2 + 1),a
2063 ; src/dap.c:386: request_count = 1U;
000841 7D 01 [12] 2064 mov r5,#0x01
2065 ; src/dap.c:387: response_count = 1U;
000843 7C 01 [12] 2066 mov r4,#0x01
2067 ; src/dap.c:388: sequence_count = *req++;
000845 8E 82 [24] 2068 mov dpl,r6
000847 8F 83 [24] 2069 mov dph,r7
000849 E0 [24] 2070 movx a,@dptr
00084A FB [12] 2071 mov r3,a
00084B 0E [12] 2072 inc r6
00084C BE 00 01 [24] 2073 cjne r6,#0x00,00139$
00084F 0F [12] 2074 inc r7
000850 2075 00139$:
2076 ; src/dap.c:390: while(sequence_count--) {
000850 2077 00108$:
000850 8B 02 [24] 2078 mov ar2,r3
000852 1B [12] 2079 dec r3
000853 EA [12] 2080 mov a,r2
000854 70 03 [24] 2081 jnz 00140$
000856 02 08 D7 [24] 2082 ljmp 00110$
000859 2083 00140$:
2084 ; src/dap.c:391: sequence_info = *req++;
000859 8E 82 [24] 2085 mov dpl,r6
00085B 8F 83 [24] 2086 mov dph,r7
00085D E0 [24] 2087 movx a,@dptr
00085E FA [12] 2088 mov r2,a
00085F A3 [24] 2089 inc dptr
000860 AE 82 [24] 2090 mov r6,dpl
000862 AF 83 [24] 2091 mov r7,dph
2092 ; src/dap.c:392: count = sequence_info & SWD_SEQUENCE_CLK;
000864 74 3F [12] 2093 mov a,#0x3f
000866 5A [12] 2094 anl a,r2
2095 ; src/dap.c:393: if(count == 0U) count = 64U;
000867 F9 [12] 2096 mov r1,a
000868 70 02 [24] 2097 jnz 00102$
00086A 79 40 [12] 2098 mov r1,#0x40
00086C 2099 00102$:
2100 ; src/dap.c:394: count = (count + 7U) / 8U;
00086C 89 00 [24] 2101 mov ar0,r1
00086E 79 00 [12] 2102 mov r1,#0x00
000870 74 07 [12] 2103 mov a,#0x07
000872 28 [12] 2104 add a,r0
000873 F8 [12] 2105 mov r0,a
000874 E4 [12] 2106 clr a
000875 39 [12] 2107 addc a,r1
000876 C4 [12] 2108 swap a
000877 23 [12] 2109 rl a
000878 C8 [12] 2110 xch a,r0
000879 C4 [12] 2111 swap a
00087A 23 [12] 2112 rl a
00087B 54 1F [12] 2113 anl a,#0x1f
00087D 68 [12] 2114 xrl a,r0
00087E C8 [12] 2115 xch a,r0
00087F 54 1F [12] 2116 anl a,#0x1f
000881 C8 [12] 2117 xch a,r0
000882 68 [12] 2118 xrl a,r0
000883 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
000884 D2 95 [12] 2122 setb _PP15
2123 ; src/dap.c:396: SWD_Sequence(sequence_info, req, res);
000886 8E 26 [24] 2124 mov _SWD_Sequence_PARM_2,r6
000888 8F 27 [24] 2125 mov (_SWD_Sequence_PARM_2 + 1),r7
00088A 85 39 28 [24] 2126 mov _SWD_Sequence_PARM_3,_DAP_SWD_Sequence_PARM_2
00088D 85 3A 29 [24] 2127 mov (_SWD_Sequence_PARM_3 + 1),(_DAP_SWD_Sequence_PARM_2 + 1)
000890 8A 82 [24] 2128 mov dpl,r2
000892 C0 07 [24] 2129 push ar7
000894 C0 06 [24] 2130 push ar6
000896 C0 05 [24] 2131 push ar5
000898 C0 04 [24] 2132 push ar4
00089A C0 03 [24] 2133 push ar3
00089C C0 02 [24] 2134 push ar2
00089E C0 00 [24] 2135 push ar0
0008A0 12 01 AA [24] 2136 lcall _SWD_Sequence
0008A3 D0 00 [24] 2137 pop ar0
0008A5 D0 02 [24] 2138 pop ar2
0008A7 D0 03 [24] 2139 pop ar3
0008A9 D0 04 [24] 2140 pop ar4
0008AB D0 05 [24] 2141 pop ar5
0008AD D0 06 [24] 2142 pop ar6
0008AF D0 07 [24] 2143 pop ar7
2144 ; src/dap.c:397: if(sequence_count == 0U) SWD_SET(1);
0008B1 EB [12] 2145 mov a,r3
0008B2 70 02 [24] 2146 jnz 00104$
2147 ; assignBit
0008B4 D2 95 [12] 2148 setb _PP15
0008B6 2149 00104$:
2150 ; src/dap.c:398: if((sequence_info & SWD_SEQUENCE_DIN) != 0U) {
0008B6 EA [12] 2151 mov a,r2
0008B7 30 E7 10 [24] 2152 jnb acc.7,00106$
2153 ; src/dap.c:399: request_count++;
0008BA 0D [12] 2154 inc r5
2155 ; src/dap.c:400: res += count;
0008BB E8 [12] 2156 mov a,r0
0008BC 25 39 [12] 2157 add a,_DAP_SWD_Sequence_PARM_2
0008BE F5 39 [12] 2158 mov _DAP_SWD_Sequence_PARM_2,a
0008C0 E4 [12] 2159 clr a
0008C1 35 3A [12] 2160 addc a,(_DAP_SWD_Sequence_PARM_2 + 1)
0008C3 F5 3A [12] 2161 mov (_DAP_SWD_Sequence_PARM_2 + 1),a
2162 ; src/dap.c:401: response_count += count;
0008C5 E8 [12] 2163 mov a,r0
0008C6 2C [12] 2164 add a,r4
0008C7 FC [12] 2165 mov r4,a
0008C8 80 86 [24] 2166 sjmp 00108$
0008CA 2167 00106$:
2168 ; src/dap.c:404: req += count;
0008CA E8 [12] 2169 mov a,r0
0008CB 2E [12] 2170 add a,r6
0008CC FE [12] 2171 mov r6,a
0008CD E4 [12] 2172 clr a
0008CE 3F [12] 2173 addc a,r7
0008CF FF [12] 2174 mov r7,a
2175 ; src/dap.c:405: request_count += count + 1U;
0008D0 E8 [12] 2176 mov a,r0
0008D1 04 [12] 2177 inc a
0008D2 2D [12] 2178 add a,r5
0008D3 FD [12] 2179 mov r5,a
0008D4 02 08 50 [24] 2180 ljmp 00108$
0008D7 2181 00110$:
2182 ; src/dap.c:408: return response_count;
0008D7 8C 82 [24] 2183 mov dpl,r4
2184 ; src/dap.c:409: }
0008D9 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 ; -----------------------------------------
0008DA 2196 _DAP_TransferConfigure:
2197 ; src/dap.c:420: idle_cycles = *(req + 0);
0008DA AE 82 [24] 2198 mov r6,dpl
0008DC AF 83 [24] 2199 mov r7,dph
0008DE 78 50 [12] 2200 mov r0,#_idle_cycles
0008E0 E0 [24] 2201 movx a,@dptr
0008E1 F6 [12] 2202 mov @r0,a
2203 ; src/dap.c:421: retry_count = (uint16_t) * (req + 1)
0008E2 8E 82 [24] 2204 mov dpl,r6
0008E4 8F 83 [24] 2205 mov dph,r7
0008E6 A3 [24] 2206 inc dptr
0008E7 E0 [24] 2207 movx a,@dptr
0008E8 FD [12] 2208 mov r5,a
0008E9 7C 00 [12] 2209 mov r4,#0x00
2210 ; src/dap.c:422: | (uint16_t)(*(req + 2) << 8);
0008EB 8E 82 [24] 2211 mov dpl,r6
0008ED 8F 83 [24] 2212 mov dph,r7
0008EF A3 [24] 2213 inc dptr
0008F0 A3 [24] 2214 inc dptr
0008F1 E0 [24] 2215 movx a,@dptr
0008F2 FA [12] 2216 mov r2,a
0008F3 E4 [12] 2217 clr a
0008F4 42 05 [12] 2218 orl ar5,a
0008F6 EA [12] 2219 mov a,r2
0008F7 42 04 [12] 2220 orl ar4,a
0008F9 78 52 [12] 2221 mov r0,#_retry_count
0008FB A6 05 [24] 2222 mov @r0,ar5
0008FD 08 [12] 2223 inc r0
0008FE A6 04 [24] 2224 mov @r0,ar4
2225 ; src/dap.c:423: match_retry = (uint16_t) * (req + 3)
000900 8E 82 [24] 2226 mov dpl,r6
000902 8F 83 [24] 2227 mov dph,r7
000904 A3 [24] 2228 inc dptr
000905 A3 [24] 2229 inc dptr
000906 A3 [24] 2230 inc dptr
000907 E0 [24] 2231 movx a,@dptr
000908 FD [12] 2232 mov r5,a
000909 7C 00 [12] 2233 mov r4,#0x00
2234 ; src/dap.c:424: | (uint16_t)(*(req + 4) << 8);
00090B 8E 82 [24] 2235 mov dpl,r6
00090D 8F 83 [24] 2236 mov dph,r7
00090F A3 [24] 2237 inc dptr
000910 A3 [24] 2238 inc dptr
000911 A3 [24] 2239 inc dptr
000912 A3 [24] 2240 inc dptr
000913 E0 [24] 2241 movx a,@dptr
000914 FE [12] 2242 mov r6,a
000915 E4 [12] 2243 clr a
000916 42 05 [12] 2244 orl ar5,a
000918 EE [12] 2245 mov a,r6
000919 42 04 [12] 2246 orl ar4,a
00091B 78 54 [12] 2247 mov r0,#_match_retry
00091D A6 05 [24] 2248 mov @r0,ar5
00091F 08 [12] 2249 inc r0
000920 A6 04 [24] 2250 mov @r0,ar4
2251 ; src/dap.c:425: *res = DAP_OK;
000922 85 10 82 [24] 2252 mov dpl,_DAP_TransferConfigure_PARM_2
000925 85 11 83 [24] 2253 mov dph,(_DAP_TransferConfigure_PARM_2 + 1)
000928 E4 [12] 2254 clr a
000929 F0 [24] 2255 movx @dptr,a
2256 ; src/dap.c:426: return 1;
00092A 75 82 01 [24] 2257 mov dpl,#0x01
2258 ; src/dap.c:427: }
00092D 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 ; -----------------------------------------
00092E 2275 _DAP_SWD_Transfer:
00092E AE 82 [24] 2276 mov r6,dpl
000930 AF 83 [24] 2277 mov r7,dph
2278 ; src/dap.c:451: response_count = 0U;
000932 78 61 [12] 2279 mov r0,#_response_count
000934 76 00 [12] 2280 mov @r0,#0x00
2281 ; src/dap.c:452: response_value = 0U;
000936 78 62 [12] 2282 mov r0,#_response_value
000938 76 00 [12] 2283 mov @r0,#0x00
2284 ; src/dap.c:453: response_head = res;
00093A 85 3B 3D [24] 2285 mov _DAP_SWD_Transfer_response_head_65536_140,_DAP_SWD_Transfer_PARM_2
00093D 85 3C 3E [24] 2286 mov (_DAP_SWD_Transfer_response_head_65536_140 + 1),(_DAP_SWD_Transfer_PARM_2 + 1)
2287 ; src/dap.c:454: res += 2;
000940 74 02 [12] 2288 mov a,#0x02
000942 25 3D [12] 2289 add a,_DAP_SWD_Transfer_response_head_65536_140
000944 F5 3B [12] 2290 mov _DAP_SWD_Transfer_PARM_2,a
000946 E4 [12] 2291 clr a
000947 35 3E [12] 2292 addc a,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
000949 F5 3C [12] 2293 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2294 ; src/dap.c:455: DAP_TransferAbort = 0U;
00094B 78 5E [12] 2295 mov r0,#_DAP_TransferAbort
00094D 76 00 [12] 2296 mov @r0,#0x00
2297 ; src/dap.c:456: post_read = 0U;
00094F 75 3F 00 [24] 2298 mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
2299 ; src/dap.c:457: check_write = 0U;
000952 75 40 00 [24] 2300 mov _DAP_SWD_Transfer_check_write_65536_140,#0x00
2301 ; src/dap.c:459: req++; // ignore DAP index
000955 0E [12] 2302 inc r6
000956 BE 00 01 [24] 2303 cjne r6,#0x00,00550$
000959 0F [12] 2304 inc r7
00095A 2305 00550$:
2306 ; src/dap.c:460: request_count = *req++;
00095A 8E 82 [24] 2307 mov dpl,r6
00095C 8F 83 [24] 2308 mov dph,r7
00095E 78 5F [12] 2309 mov r0,#_request_count
000960 E0 [24] 2310 movx a,@dptr
000961 F6 [12] 2311 mov @r0,a
000962 0E [12] 2312 inc r6
000963 BE 00 01 [24] 2313 cjne r6,#0x00,00551$
000966 0F [12] 2314 inc r7
000967 2315 00551$:
000967 2316 00223$:
2317 ; src/dap.c:461: for(; request_count != 0U; request_count--) {
000967 78 5F [12] 2318 mov r0,#_request_count
000969 E6 [12] 2319 mov a,@r0
00096A 70 03 [24] 2320 jnz 00552$
00096C 02 0E 94 [24] 2321 ljmp 00226$
00096F 2322 00552$:
2323 ; src/dap.c:462: request_value = *req++;
00096F 8E 82 [24] 2324 mov dpl,r6
000971 8F 83 [24] 2325 mov dph,r7
000973 E0 [24] 2326 movx a,@dptr
000974 F5 41 [12] 2327 mov _DAP_SWD_Transfer_sloc0_1_0,a
000976 A3 [24] 2328 inc dptr
000977 AE 82 [24] 2329 mov r6,dpl
000979 AF 83 [24] 2330 mov r7,dph
00097B 78 60 [12] 2331 mov r0,#_request_value
2332 ; src/dap.c:465: if(request_value & DAP_TRANSFER_RnW) {
00097D E5 41 [12] 2333 mov a,_DAP_SWD_Transfer_sloc0_1_0
00097F F6 [12] 2334 mov @r0,a
000980 20 E1 03 [24] 2335 jb acc.1,00553$
000983 02 0D 27 [24] 2336 ljmp 00191$
000986 2337 00553$:
2338 ; src/dap.c:467: if(post_read) {
000986 E5 3F [12] 2339 mov a,_DAP_SWD_Transfer_post_read_65536_140
000988 70 03 [24] 2340 jnz 00554$
00098A 02 0A 81 [24] 2341 ljmp 00117$
00098D 2342 00554$:
2343 ; src/dap.c:469: retry = retry_count;
00098D 78 52 [12] 2344 mov r0,#_retry_count
00098F 86 02 [24] 2345 mov ar2,@r0
000991 08 [12] 2346 inc r0
000992 86 05 [24] 2347 mov ar5,@r0
000994 78 63 [12] 2348 mov r0,#_retry
000996 A6 02 [24] 2349 mov @r0,ar2
000998 08 [12] 2350 inc r0
000999 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) {
00099B AC 41 [24] 2353 mov r4,_DAP_SWD_Transfer_sloc0_1_0
00099D 53 04 11 [24] 2354 anl ar4,#0x11
0009A0 7D 00 [12] 2355 mov r5,#0x00
0009A2 BC 01 3E [24] 2356 cjne r4,#0x01,00108$
0009A5 BD 00 3B [24] 2357 cjne r5,#0x00,00108$
2358 ; src/dap.c:472: do {
0009A8 2359 00103$:
2360 ; src/dap.c:473: response_value = SWD_Transfer(request_value, data);
0009A8 75 2A 00 [24] 2361 mov _SWD_Transfer_PARM_2,#_data
0009AB 75 2B 01 [24] 2362 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
0009AE 78 60 [12] 2363 mov r0,#_request_value
0009B0 86 82 [24] 2364 mov dpl,@r0
0009B2 C0 07 [24] 2365 push ar7
0009B4 C0 06 [24] 2366 push ar6
0009B6 12 02 81 [24] 2367 lcall _SWD_Transfer
0009B9 AD 82 [24] 2368 mov r5,dpl
0009BB D0 06 [24] 2369 pop ar6
0009BD D0 07 [24] 2370 pop ar7
0009BF 78 62 [12] 2371 mov r0,#_response_value
0009C1 A6 05 [24] 2372 mov @r0,ar5
2373 ; src/dap.c:474: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0009C3 BD 02 58 [24] 2374 cjne r5,#0x02,00113$
0009C6 78 63 [12] 2375 mov r0,#_retry
0009C8 86 04 [24] 2376 mov ar4,@r0
0009CA 08 [12] 2377 inc r0
0009CB 86 05 [24] 2378 mov ar5,@r0
0009CD 78 63 [12] 2379 mov r0,#_retry
0009CF EC [12] 2380 mov a,r4
0009D0 24 FF [12] 2381 add a,#0xff
0009D2 F6 [12] 2382 mov @r0,a
0009D3 ED [12] 2383 mov a,r5
0009D4 34 FF [12] 2384 addc a,#0xff
0009D6 08 [12] 2385 inc r0
0009D7 F6 [12] 2386 mov @r0,a
0009D8 EC [12] 2387 mov a,r4
0009D9 4D [12] 2388 orl a,r5
0009DA 60 42 [24] 2389 jz 00113$
0009DC 78 5E [12] 2390 mov r0,#_DAP_TransferAbort
0009DE E6 [12] 2391 mov a,@r0
0009DF 60 C7 [24] 2392 jz 00103$
2393 ; src/dap.c:478: do {
0009E1 80 3B [24] 2394 sjmp 00113$
0009E3 2395 00108$:
2396 ; src/dap.c:479: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
0009E3 75 2A 00 [24] 2397 mov _SWD_Transfer_PARM_2,#_data
0009E6 75 2B 01 [24] 2398 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
0009E9 75 82 0E [24] 2399 mov dpl,#0x0e
0009EC C0 07 [24] 2400 push ar7
0009EE C0 06 [24] 2401 push ar6
0009F0 12 02 81 [24] 2402 lcall _SWD_Transfer
0009F3 AD 82 [24] 2403 mov r5,dpl
0009F5 D0 06 [24] 2404 pop ar6
0009F7 D0 07 [24] 2405 pop ar7
0009F9 78 62 [12] 2406 mov r0,#_response_value
0009FB A6 05 [24] 2407 mov @r0,ar5
2408 ; src/dap.c:480: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0009FD BD 02 1B [24] 2409 cjne r5,#0x02,00110$
000A00 78 63 [12] 2410 mov r0,#_retry
000A02 86 04 [24] 2411 mov ar4,@r0
000A04 08 [12] 2412 inc r0
000A05 86 05 [24] 2413 mov ar5,@r0
000A07 78 63 [12] 2414 mov r0,#_retry
000A09 EC [12] 2415 mov a,r4
000A0A 24 FF [12] 2416 add a,#0xff
000A0C F6 [12] 2417 mov @r0,a
000A0D ED [12] 2418 mov a,r5
000A0E 34 FF [12] 2419 addc a,#0xff
000A10 08 [12] 2420 inc r0
000A11 F6 [12] 2421 mov @r0,a
000A12 EC [12] 2422 mov a,r4
000A13 4D [12] 2423 orl a,r5
000A14 60 05 [24] 2424 jz 00110$
000A16 78 5E [12] 2425 mov r0,#_DAP_TransferAbort
000A18 E6 [12] 2426 mov a,@r0
000A19 60 C8 [24] 2427 jz 00108$
000A1B 2428 00110$:
2429 ; src/dap.c:481: post_read = 0U;
000A1B 75 3F 00 [24] 2430 mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
000A1E 2431 00113$:
2432 ; src/dap.c:483: if(response_value != DAP_TRANSFER_OK) break;
000A1E 78 62 [12] 2433 mov r0,#_response_value
000A20 B6 01 02 [24] 2434 cjne @r0,#0x01,00565$
000A23 80 03 [24] 2435 sjmp 00566$
000A25 2436 00565$:
000A25 02 0E 94 [24] 2437 ljmp 00226$
000A28 2438 00566$:
2439 ; src/dap.c:486: *res++ = (uint8_t)data[0];
000A28 AC 3B [24] 2440 mov r4,_DAP_SWD_Transfer_PARM_2
000A2A AD 3C [24] 2441 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000A2C 90 01 00 [24] 2442 mov dptr,#_data
000A2F E0 [24] 2443 movx a,@dptr
000A30 8C 82 [24] 2444 mov dpl,r4
000A32 8D 83 [24] 2445 mov dph,r5
000A34 F0 [24] 2446 movx @dptr,a
000A35 74 01 [12] 2447 mov a,#0x01
000A37 2C [12] 2448 add a,r4
000A38 F5 3B [12] 2449 mov _DAP_SWD_Transfer_PARM_2,a
000A3A E4 [12] 2450 clr a
000A3B 3D [12] 2451 addc a,r5
000A3C F5 3C [12] 2452 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2453 ; src/dap.c:487: *res++ = (uint8_t)data[1];
000A3E AC 3B [24] 2454 mov r4,_DAP_SWD_Transfer_PARM_2
000A40 AD 3C [24] 2455 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000A42 90 01 01 [24] 2456 mov dptr,#(_data + 0x0001)
000A45 E0 [24] 2457 movx a,@dptr
000A46 8C 82 [24] 2458 mov dpl,r4
000A48 8D 83 [24] 2459 mov dph,r5
000A4A F0 [24] 2460 movx @dptr,a
000A4B 74 01 [12] 2461 mov a,#0x01
000A4D 2C [12] 2462 add a,r4
000A4E F5 3B [12] 2463 mov _DAP_SWD_Transfer_PARM_2,a
000A50 E4 [12] 2464 clr a
000A51 3D [12] 2465 addc a,r5
000A52 F5 3C [12] 2466 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2467 ; src/dap.c:488: *res++ = (uint8_t)data[2];
000A54 AC 3B [24] 2468 mov r4,_DAP_SWD_Transfer_PARM_2
000A56 AD 3C [24] 2469 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000A58 90 01 02 [24] 2470 mov dptr,#(_data + 0x0002)
000A5B E0 [24] 2471 movx a,@dptr
000A5C 8C 82 [24] 2472 mov dpl,r4
000A5E 8D 83 [24] 2473 mov dph,r5
000A60 F0 [24] 2474 movx @dptr,a
000A61 74 01 [12] 2475 mov a,#0x01
000A63 2C [12] 2476 add a,r4
000A64 F5 3B [12] 2477 mov _DAP_SWD_Transfer_PARM_2,a
000A66 E4 [12] 2478 clr a
000A67 3D [12] 2479 addc a,r5
000A68 F5 3C [12] 2480 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2481 ; src/dap.c:489: *res++ = (uint8_t)data[3];
000A6A AC 3B [24] 2482 mov r4,_DAP_SWD_Transfer_PARM_2
000A6C AD 3C [24] 2483 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000A6E 90 01 03 [24] 2484 mov dptr,#(_data + 0x0003)
000A71 E0 [24] 2485 movx a,@dptr
000A72 FA [12] 2486 mov r2,a
000A73 8C 82 [24] 2487 mov dpl,r4
000A75 8D 83 [24] 2488 mov dph,r5
000A77 F0 [24] 2489 movx @dptr,a
000A78 74 01 [12] 2490 mov a,#0x01
000A7A 2C [12] 2491 add a,r4
000A7B F5 3B [12] 2492 mov _DAP_SWD_Transfer_PARM_2,a
000A7D E4 [12] 2493 clr a
000A7E 3D [12] 2494 addc a,r5
000A7F F5 3C [12] 2495 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
000A81 2496 00117$:
2497 ; src/dap.c:491: if((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) {
000A81 78 60 [12] 2498 mov r0,#_request_value
000A83 E6 [12] 2499 mov a,@r0
000A84 FD [12] 2500 mov r5,a
000A85 20 E4 03 [24] 2501 jb acc.4,00567$
000A88 02 0C 28 [24] 2502 ljmp 00169$
000A8B 2503 00567$:
2504 ; src/dap.c:493: match_value[0] = (uint8_t)(*(req + 0));
000A8B 8E 82 [24] 2505 mov dpl,r6
000A8D 8F 83 [24] 2506 mov dph,r7
000A8F E0 [24] 2507 movx a,@dptr
000A90 FC [12] 2508 mov r4,a
000A91 78 5A [12] 2509 mov r0,#_match_value
000A93 A6 04 [24] 2510 mov @r0,ar4
2511 ; src/dap.c:494: match_value[1] = (uint8_t)(*(req + 1));
000A95 8E 82 [24] 2512 mov dpl,r6
000A97 8F 83 [24] 2513 mov dph,r7
000A99 A3 [24] 2514 inc dptr
000A9A E0 [24] 2515 movx a,@dptr
000A9B FC [12] 2516 mov r4,a
000A9C 78 5B [12] 2517 mov r0,#(_match_value + 0x0001)
000A9E A6 04 [24] 2518 mov @r0,ar4
2519 ; src/dap.c:495: match_value[2] = (uint8_t)(*(req + 2));
000AA0 8E 82 [24] 2520 mov dpl,r6
000AA2 8F 83 [24] 2521 mov dph,r7
000AA4 A3 [24] 2522 inc dptr
000AA5 A3 [24] 2523 inc dptr
000AA6 E0 [24] 2524 movx a,@dptr
000AA7 FC [12] 2525 mov r4,a
000AA8 78 5C [12] 2526 mov r0,#(_match_value + 0x0002)
000AAA A6 04 [24] 2527 mov @r0,ar4
2528 ; src/dap.c:496: match_value[3] = (uint8_t)(*(req + 3));
000AAC 8E 82 [24] 2529 mov dpl,r6
000AAE 8F 83 [24] 2530 mov dph,r7
000AB0 A3 [24] 2531 inc dptr
000AB1 A3 [24] 2532 inc dptr
000AB2 A3 [24] 2533 inc dptr
000AB3 E0 [24] 2534 movx a,@dptr
000AB4 FC [12] 2535 mov r4,a
000AB5 78 5D [12] 2536 mov r0,#(_match_value + 0x0003)
000AB7 A6 04 [24] 2537 mov @r0,ar4
2538 ; src/dap.c:497: req += 4;
000AB9 74 04 [12] 2539 mov a,#0x04
000ABB 2E [12] 2540 add a,r6
000ABC FE [12] 2541 mov r6,a
000ABD E4 [12] 2542 clr a
000ABE 3F [12] 2543 addc a,r7
000ABF 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) {
000AC0 78 60 [12] 2547 mov r0,#_request_value
000AC2 E6 [12] 2548 mov a,@r0
000AC3 30 E0 4E [24] 2549 jnb acc.0,00139$
2550 ; src/dap.c:501: retry = retry_count;
000AC6 78 52 [12] 2551 mov r0,#_retry_count
000AC8 86 02 [24] 2552 mov ar2,@r0
000ACA 08 [12] 2553 inc r0
000ACB 86 04 [24] 2554 mov ar4,@r0
000ACD 78 63 [12] 2555 mov r0,#_retry
000ACF A6 02 [24] 2556 mov @r0,ar2
000AD1 08 [12] 2557 inc r0
000AD2 A6 04 [24] 2558 mov @r0,ar4
2559 ; src/dap.c:502: do {
000AD4 2560 00120$:
2561 ; src/dap.c:503: response_value = SWD_Transfer(request_value, NULL);
000AD4 E4 [12] 2562 clr a
000AD5 F5 2A [12] 2563 mov _SWD_Transfer_PARM_2,a
000AD7 F5 2B [12] 2564 mov (_SWD_Transfer_PARM_2 + 1),a
000AD9 78 60 [12] 2565 mov r0,#_request_value
000ADB 86 82 [24] 2566 mov dpl,@r0
000ADD C0 07 [24] 2567 push ar7
000ADF C0 06 [24] 2568 push ar6
000AE1 12 02 81 [24] 2569 lcall _SWD_Transfer
000AE4 AC 82 [24] 2570 mov r4,dpl
000AE6 D0 06 [24] 2571 pop ar6
000AE8 D0 07 [24] 2572 pop ar7
000AEA 78 62 [12] 2573 mov r0,#_response_value
000AEC A6 04 [24] 2574 mov @r0,ar4
2575 ; src/dap.c:504: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000AEE BC 02 1B [24] 2576 cjne r4,#0x02,00122$
000AF1 78 63 [12] 2577 mov r0,#_retry
000AF3 86 02 [24] 2578 mov ar2,@r0
000AF5 08 [12] 2579 inc r0
000AF6 86 03 [24] 2580 mov ar3,@r0
000AF8 78 63 [12] 2581 mov r0,#_retry
000AFA EA [12] 2582 mov a,r2
000AFB 24 FF [12] 2583 add a,#0xff
000AFD F6 [12] 2584 mov @r0,a
000AFE EB [12] 2585 mov a,r3
000AFF 34 FF [12] 2586 addc a,#0xff
000B01 08 [12] 2587 inc r0
000B02 F6 [12] 2588 mov @r0,a
000B03 EA [12] 2589 mov a,r2
000B04 4B [12] 2590 orl a,r3
000B05 60 05 [24] 2591 jz 00122$
000B07 78 5E [12] 2592 mov r0,#_DAP_TransferAbort
000B09 E6 [12] 2593 mov a,@r0
000B0A 60 C8 [24] 2594 jz 00120$
000B0C 2595 00122$:
2596 ; src/dap.c:505: if(response_value != DAP_TRANSFER_OK) break;
000B0C BC 01 02 [24] 2597 cjne r4,#0x01,00573$
000B0F 80 03 [24] 2598 sjmp 00574$
000B11 2599 00573$:
000B11 02 0E 94 [24] 2600 ljmp 00226$
000B14 2601 00574$:
2602 ; src/dap.c:507: do {
000B14 2603 00139$:
2604 ; src/dap.c:509: retry = retry_count;
000B14 78 52 [12] 2605 mov r0,#_retry_count
000B16 86 03 [24] 2606 mov ar3,@r0
000B18 08 [12] 2607 inc r0
000B19 86 04 [24] 2608 mov ar4,@r0
000B1B 78 63 [12] 2609 mov r0,#_retry
000B1D A6 03 [24] 2610 mov @r0,ar3
000B1F 08 [12] 2611 inc r0
000B20 A6 04 [24] 2612 mov @r0,ar4
2613 ; src/dap.c:510: do {
000B22 2614 00129$:
2615 ; src/dap.c:511: response_value = SWD_Transfer(request_value, data);
000B22 75 2A 00 [24] 2616 mov _SWD_Transfer_PARM_2,#_data
000B25 75 2B 01 [24] 2617 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000B28 78 60 [12] 2618 mov r0,#_request_value
000B2A 86 82 [24] 2619 mov dpl,@r0
000B2C C0 07 [24] 2620 push ar7
000B2E C0 06 [24] 2621 push ar6
000B30 12 02 81 [24] 2622 lcall _SWD_Transfer
000B33 AC 82 [24] 2623 mov r4,dpl
000B35 D0 06 [24] 2624 pop ar6
000B37 D0 07 [24] 2625 pop ar7
000B39 78 62 [12] 2626 mov r0,#_response_value
000B3B A6 04 [24] 2627 mov @r0,ar4
2628 ; src/dap.c:512: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000B3D BC 02 1B [24] 2629 cjne r4,#0x02,00131$
000B40 78 63 [12] 2630 mov r0,#_retry
000B42 86 03 [24] 2631 mov ar3,@r0
000B44 08 [12] 2632 inc r0
000B45 86 04 [24] 2633 mov ar4,@r0
000B47 78 63 [12] 2634 mov r0,#_retry
000B49 EB [12] 2635 mov a,r3
000B4A 24 FF [12] 2636 add a,#0xff
000B4C F6 [12] 2637 mov @r0,a
000B4D EC [12] 2638 mov a,r4
000B4E 34 FF [12] 2639 addc a,#0xff
000B50 08 [12] 2640 inc r0
000B51 F6 [12] 2641 mov @r0,a
000B52 EB [12] 2642 mov a,r3
000B53 4C [12] 2643 orl a,r4
000B54 60 05 [24] 2644 jz 00131$
000B56 78 5E [12] 2645 mov r0,#_DAP_TransferAbort
000B58 E6 [12] 2646 mov a,@r0
000B59 60 C7 [24] 2647 jz 00129$
000B5B 2648 00131$:
2649 ; src/dap.c:513: if(response_value != DAP_TRANSFER_OK) break;
000B5B 78 62 [12] 2650 mov r0,#_response_value
000B5D B6 01 02 [24] 2651 cjne @r0,#0x01,00579$
000B60 80 03 [24] 2652 sjmp 00580$
000B62 2653 00579$:
000B62 02 0B CD [24] 2654 ljmp 00141$
000B65 2655 00580$:
2656 ; src/dap.c:515: while(((data[0] & match_mask[0]) != match_value[0] ||
000B65 90 01 00 [24] 2657 mov dptr,#_data
000B68 E0 [24] 2658 movx a,@dptr
000B69 FC [12] 2659 mov r4,a
000B6A 78 56 [12] 2660 mov r0,#_match_mask
000B6C E6 [12] 2661 mov a,@r0
000B6D 52 04 [12] 2662 anl ar4,a
000B6F 78 5A [12] 2663 mov r0,#_match_value
000B71 86 03 [24] 2664 mov ar3,@r0
000B73 EC [12] 2665 mov a,r4
000B74 B5 03 38 [24] 2666 cjne a,ar3,00137$
2667 ; src/dap.c:516: (data[1] & match_mask[1]) != match_value[1] ||
000B77 90 01 01 [24] 2668 mov dptr,#(_data + 0x0001)
000B7A E0 [24] 2669 movx a,@dptr
000B7B FC [12] 2670 mov r4,a
000B7C 78 57 [12] 2671 mov r0,#(_match_mask + 0x0001)
000B7E E6 [12] 2672 mov a,@r0
000B7F 52 04 [12] 2673 anl ar4,a
000B81 78 5B [12] 2674 mov r0,#(_match_value + 0x0001)
000B83 86 03 [24] 2675 mov ar3,@r0
000B85 EC [12] 2676 mov a,r4
000B86 B5 03 26 [24] 2677 cjne a,ar3,00137$
2678 ; src/dap.c:517: (data[2] & match_mask[2]) != match_value[2] ||
000B89 90 01 02 [24] 2679 mov dptr,#(_data + 0x0002)
000B8C E0 [24] 2680 movx a,@dptr
000B8D FC [12] 2681 mov r4,a
000B8E 78 58 [12] 2682 mov r0,#(_match_mask + 0x0002)
000B90 E6 [12] 2683 mov a,@r0
000B91 52 04 [12] 2684 anl ar4,a
000B93 78 5C [12] 2685 mov r0,#(_match_value + 0x0002)
000B95 86 03 [24] 2686 mov ar3,@r0
000B97 EC [12] 2687 mov a,r4
000B98 B5 03 14 [24] 2688 cjne a,ar3,00137$
2689 ; src/dap.c:518: (data[3] & match_mask[3]) != match_value[3]) &&
000B9B 90 01 03 [24] 2690 mov dptr,#(_data + 0x0003)
000B9E E0 [24] 2691 movx a,@dptr
000B9F FC [12] 2692 mov r4,a
000BA0 78 59 [12] 2693 mov r0,#(_match_mask + 0x0003)
000BA2 E6 [12] 2694 mov a,@r0
000BA3 52 04 [12] 2695 anl ar4,a
000BA5 78 5D [12] 2696 mov r0,#(_match_value + 0x0003)
000BA7 86 03 [24] 2697 mov ar3,@r0
000BA9 EC [12] 2698 mov a,r4
000BAA B5 03 02 [24] 2699 cjne a,ar3,00587$
000BAD 80 1E [24] 2700 sjmp 00141$
000BAF 2701 00587$:
000BAF 2702 00137$:
2703 ; src/dap.c:519: match_retry-- && !DAP_TransferAbort);
000BAF 78 54 [12] 2704 mov r0,#_match_retry
000BB1 86 03 [24] 2705 mov ar3,@r0
000BB3 08 [12] 2706 inc r0
000BB4 86 04 [24] 2707 mov ar4,@r0
000BB6 78 54 [12] 2708 mov r0,#_match_retry
000BB8 EB [12] 2709 mov a,r3
000BB9 24 FF [12] 2710 add a,#0xff
000BBB F6 [12] 2711 mov @r0,a
000BBC EC [12] 2712 mov a,r4
000BBD 34 FF [12] 2713 addc a,#0xff
000BBF 08 [12] 2714 inc r0
000BC0 F6 [12] 2715 mov @r0,a
000BC1 EB [12] 2716 mov a,r3
000BC2 4C [12] 2717 orl a,r4
000BC3 60 08 [24] 2718 jz 00141$
000BC5 78 5E [12] 2719 mov r0,#_DAP_TransferAbort
000BC7 E6 [12] 2720 mov a,@r0
000BC8 70 03 [24] 2721 jnz 00589$
000BCA 02 0B 14 [24] 2722 ljmp 00139$
000BCD 2723 00589$:
000BCD 2724 00141$:
2725 ; src/dap.c:520: if((data[0] & match_mask[0]) != match_value[0] ||
000BCD 90 01 00 [24] 2726 mov dptr,#_data
000BD0 E0 [24] 2727 movx a,@dptr
000BD1 FC [12] 2728 mov r4,a
000BD2 78 56 [12] 2729 mov r0,#_match_mask
000BD4 E6 [12] 2730 mov a,@r0
000BD5 52 04 [12] 2731 anl ar4,a
000BD7 78 5A [12] 2732 mov r0,#_match_value
000BD9 86 03 [24] 2733 mov ar3,@r0
000BDB EC [12] 2734 mov a,r4
000BDC B5 03 38 [24] 2735 cjne a,ar3,00142$
2736 ; src/dap.c:521: (data[1] & match_mask[1]) != match_value[1] ||
000BDF 90 01 01 [24] 2737 mov dptr,#(_data + 0x0001)
000BE2 E0 [24] 2738 movx a,@dptr
000BE3 FC [12] 2739 mov r4,a
000BE4 78 57 [12] 2740 mov r0,#(_match_mask + 0x0001)
000BE6 E6 [12] 2741 mov a,@r0
000BE7 52 04 [12] 2742 anl ar4,a
000BE9 78 5B [12] 2743 mov r0,#(_match_value + 0x0001)
000BEB 86 03 [24] 2744 mov ar3,@r0
000BED EC [12] 2745 mov a,r4
000BEE B5 03 26 [24] 2746 cjne a,ar3,00142$
2747 ; src/dap.c:522: (data[2] & match_mask[2]) != match_value[2] ||
000BF1 90 01 02 [24] 2748 mov dptr,#(_data + 0x0002)
000BF4 E0 [24] 2749 movx a,@dptr
000BF5 FC [12] 2750 mov r4,a
000BF6 78 58 [12] 2751 mov r0,#(_match_mask + 0x0002)
000BF8 E6 [12] 2752 mov a,@r0
000BF9 52 04 [12] 2753 anl ar4,a
000BFB 78 5C [12] 2754 mov r0,#(_match_value + 0x0002)
000BFD 86 03 [24] 2755 mov ar3,@r0
000BFF EC [12] 2756 mov a,r4
000C00 B5 03 14 [24] 2757 cjne a,ar3,00142$
2758 ; src/dap.c:523: (data[3] & match_mask[3]) != match_value[3])
000C03 90 01 03 [24] 2759 mov dptr,#(_data + 0x0003)
000C06 E0 [24] 2760 movx a,@dptr
000C07 FC [12] 2761 mov r4,a
000C08 78 59 [12] 2762 mov r0,#(_match_mask + 0x0003)
000C0A E6 [12] 2763 mov a,@r0
000C0B 52 04 [12] 2764 anl ar4,a
000C0D 78 5D [12] 2765 mov r0,#(_match_value + 0x0003)
000C0F 86 03 [24] 2766 mov ar3,@r0
000C11 EC [12] 2767 mov a,r4
000C12 B5 03 02 [24] 2768 cjne a,ar3,00596$
000C15 80 06 [24] 2769 sjmp 00143$
000C17 2770 00596$:
000C17 2771 00142$:
2772 ; src/dap.c:524: response_value |= DAP_TRANSFER_MISMATCH;
000C17 78 62 [12] 2773 mov r0,#_response_value
000C19 E6 [12] 2774 mov a,@r0
000C1A 44 10 [12] 2775 orl a,#0x10
000C1C F6 [12] 2776 mov @r0,a
000C1D 2777 00143$:
2778 ; src/dap.c:525: if(response_value != DAP_TRANSFER_OK) break;
000C1D 78 62 [12] 2779 mov r0,#_response_value
000C1F B6 01 03 [24] 2780 cjne @r0,#0x01,00597$
000C22 02 0D 21 [24] 2781 ljmp 00170$
000C25 2782 00597$:
000C25 02 0E 94 [24] 2783 ljmp 00226$
000C28 2784 00169$:
2785 ; src/dap.c:529: retry = retry_count;
000C28 78 52 [12] 2786 mov r0,#_retry_count
000C2A 86 03 [24] 2787 mov ar3,@r0
000C2C 08 [12] 2788 inc r0
000C2D 86 04 [24] 2789 mov ar4,@r0
000C2F 78 63 [12] 2790 mov r0,#_retry
000C31 A6 03 [24] 2791 mov @r0,ar3
000C33 08 [12] 2792 inc r0
000C34 A6 04 [24] 2793 mov @r0,ar4
2794 ; src/dap.c:530: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
000C36 ED [12] 2795 mov a,r5
000C37 30 E0 4D [24] 2796 jnb acc.0,00160$
2797 ; src/dap.c:532: if(post_read == 0U) {
000C3A E5 3F [12] 2798 mov a,_DAP_SWD_Transfer_post_read_65536_140
000C3C 60 03 [24] 2799 jz 00599$
000C3E 02 0D 21 [24] 2800 ljmp 00170$
000C41 2801 00599$:
2802 ; src/dap.c:534: do {
000C41 2803 00151$:
2804 ; src/dap.c:535: response_value = SWD_Transfer(request_value, NULL);
000C41 E4 [12] 2805 clr a
000C42 F5 2A [12] 2806 mov _SWD_Transfer_PARM_2,a
000C44 F5 2B [12] 2807 mov (_SWD_Transfer_PARM_2 + 1),a
000C46 78 60 [12] 2808 mov r0,#_request_value
000C48 86 82 [24] 2809 mov dpl,@r0
000C4A C0 07 [24] 2810 push ar7
000C4C C0 06 [24] 2811 push ar6
000C4E 12 02 81 [24] 2812 lcall _SWD_Transfer
000C51 AD 82 [24] 2813 mov r5,dpl
000C53 D0 06 [24] 2814 pop ar6
000C55 D0 07 [24] 2815 pop ar7
000C57 78 62 [12] 2816 mov r0,#_response_value
000C59 A6 05 [24] 2817 mov @r0,ar5
2818 ; src/dap.c:536: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000C5B BD 02 1B [24] 2819 cjne r5,#0x02,00153$
000C5E 78 63 [12] 2820 mov r0,#_retry
000C60 86 03 [24] 2821 mov ar3,@r0
000C62 08 [12] 2822 inc r0
000C63 86 04 [24] 2823 mov ar4,@r0
000C65 78 63 [12] 2824 mov r0,#_retry
000C67 EB [12] 2825 mov a,r3
000C68 24 FF [12] 2826 add a,#0xff
000C6A F6 [12] 2827 mov @r0,a
000C6B EC [12] 2828 mov a,r4
000C6C 34 FF [12] 2829 addc a,#0xff
000C6E 08 [12] 2830 inc r0
000C6F F6 [12] 2831 mov @r0,a
000C70 EB [12] 2832 mov a,r3
000C71 4C [12] 2833 orl a,r4
000C72 60 05 [24] 2834 jz 00153$
000C74 78 5E [12] 2835 mov r0,#_DAP_TransferAbort
000C76 E6 [12] 2836 mov a,@r0
000C77 60 C8 [24] 2837 jz 00151$
000C79 2838 00153$:
2839 ; src/dap.c:537: if(response_value != DAP_TRANSFER_OK) break;
000C79 BD 01 02 [24] 2840 cjne r5,#0x01,00604$
000C7C 80 03 [24] 2841 sjmp 00605$
000C7E 2842 00604$:
000C7E 02 0E 94 [24] 2843 ljmp 00226$
000C81 2844 00605$:
2845 ; src/dap.c:538: post_read = 1U;
000C81 75 3F 01 [24] 2846 mov _DAP_SWD_Transfer_post_read_65536_140,#0x01
000C84 02 0D 21 [24] 2847 ljmp 00170$
2848 ; src/dap.c:543: do {
000C87 2849 00160$:
2850 ; src/dap.c:544: response_value = SWD_Transfer(request_value, data);
000C87 75 2A 00 [24] 2851 mov _SWD_Transfer_PARM_2,#_data
000C8A 75 2B 01 [24] 2852 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000C8D 78 60 [12] 2853 mov r0,#_request_value
000C8F 86 82 [24] 2854 mov dpl,@r0
000C91 C0 07 [24] 2855 push ar7
000C93 C0 06 [24] 2856 push ar6
000C95 12 02 81 [24] 2857 lcall _SWD_Transfer
000C98 AD 82 [24] 2858 mov r5,dpl
000C9A D0 06 [24] 2859 pop ar6
000C9C D0 07 [24] 2860 pop ar7
000C9E 78 62 [12] 2861 mov r0,#_response_value
000CA0 A6 05 [24] 2862 mov @r0,ar5
2863 ; src/dap.c:545: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000CA2 BD 02 1B [24] 2864 cjne r5,#0x02,00162$
000CA5 78 63 [12] 2865 mov r0,#_retry
000CA7 86 03 [24] 2866 mov ar3,@r0
000CA9 08 [12] 2867 inc r0
000CAA 86 04 [24] 2868 mov ar4,@r0
000CAC 78 63 [12] 2869 mov r0,#_retry
000CAE EB [12] 2870 mov a,r3
000CAF 24 FF [12] 2871 add a,#0xff
000CB1 F6 [12] 2872 mov @r0,a
000CB2 EC [12] 2873 mov a,r4
000CB3 34 FF [12] 2874 addc a,#0xff
000CB5 08 [12] 2875 inc r0
000CB6 F6 [12] 2876 mov @r0,a
000CB7 EB [12] 2877 mov a,r3
000CB8 4C [12] 2878 orl a,r4
000CB9 60 05 [24] 2879 jz 00162$
000CBB 78 5E [12] 2880 mov r0,#_DAP_TransferAbort
000CBD E6 [12] 2881 mov a,@r0
000CBE 60 C7 [24] 2882 jz 00160$
000CC0 2883 00162$:
2884 ; src/dap.c:546: if(response_value != DAP_TRANSFER_OK) break;
000CC0 BD 01 02 [24] 2885 cjne r5,#0x01,00610$
000CC3 80 03 [24] 2886 sjmp 00611$
000CC5 2887 00610$:
000CC5 02 0E 94 [24] 2888 ljmp 00226$
000CC8 2889 00611$:
2890 ; src/dap.c:549: *res++ = data[0];
000CC8 AC 3B [24] 2891 mov r4,_DAP_SWD_Transfer_PARM_2
000CCA AD 3C [24] 2892 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000CCC 90 01 00 [24] 2893 mov dptr,#_data
000CCF E0 [24] 2894 movx a,@dptr
000CD0 8C 82 [24] 2895 mov dpl,r4
000CD2 8D 83 [24] 2896 mov dph,r5
000CD4 F0 [24] 2897 movx @dptr,a
000CD5 74 01 [12] 2898 mov a,#0x01
000CD7 2C [12] 2899 add a,r4
000CD8 F5 3B [12] 2900 mov _DAP_SWD_Transfer_PARM_2,a
000CDA E4 [12] 2901 clr a
000CDB 3D [12] 2902 addc a,r5
000CDC F5 3C [12] 2903 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2904 ; src/dap.c:550: *res++ = data[1];
000CDE AC 3B [24] 2905 mov r4,_DAP_SWD_Transfer_PARM_2
000CE0 AD 3C [24] 2906 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000CE2 90 01 01 [24] 2907 mov dptr,#(_data + 0x0001)
000CE5 E0 [24] 2908 movx a,@dptr
000CE6 8C 82 [24] 2909 mov dpl,r4
000CE8 8D 83 [24] 2910 mov dph,r5
000CEA F0 [24] 2911 movx @dptr,a
000CEB 74 01 [12] 2912 mov a,#0x01
000CED 2C [12] 2913 add a,r4
000CEE F5 3B [12] 2914 mov _DAP_SWD_Transfer_PARM_2,a
000CF0 E4 [12] 2915 clr a
000CF1 3D [12] 2916 addc a,r5
000CF2 F5 3C [12] 2917 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2918 ; src/dap.c:551: *res++ = data[2];
000CF4 AC 3B [24] 2919 mov r4,_DAP_SWD_Transfer_PARM_2
000CF6 AD 3C [24] 2920 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000CF8 90 01 02 [24] 2921 mov dptr,#(_data + 0x0002)
000CFB E0 [24] 2922 movx a,@dptr
000CFC 8C 82 [24] 2923 mov dpl,r4
000CFE 8D 83 [24] 2924 mov dph,r5
000D00 F0 [24] 2925 movx @dptr,a
000D01 74 01 [12] 2926 mov a,#0x01
000D03 2C [12] 2927 add a,r4
000D04 F5 3B [12] 2928 mov _DAP_SWD_Transfer_PARM_2,a
000D06 E4 [12] 2929 clr a
000D07 3D [12] 2930 addc a,r5
000D08 F5 3C [12] 2931 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
2932 ; src/dap.c:552: *res++ = data[3];
000D0A AC 3B [24] 2933 mov r4,_DAP_SWD_Transfer_PARM_2
000D0C AD 3C [24] 2934 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000D0E 90 01 03 [24] 2935 mov dptr,#(_data + 0x0003)
000D11 E0 [24] 2936 movx a,@dptr
000D12 FB [12] 2937 mov r3,a
000D13 8C 82 [24] 2938 mov dpl,r4
000D15 8D 83 [24] 2939 mov dph,r5
000D17 F0 [24] 2940 movx @dptr,a
000D18 74 01 [12] 2941 mov a,#0x01
000D1A 2C [12] 2942 add a,r4
000D1B F5 3B [12] 2943 mov _DAP_SWD_Transfer_PARM_2,a
000D1D E4 [12] 2944 clr a
000D1E 3D [12] 2945 addc a,r5
000D1F F5 3C [12] 2946 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
000D21 2947 00170$:
2948 ; src/dap.c:555: check_write = 0U;
000D21 75 40 00 [24] 2949 mov _DAP_SWD_Transfer_check_write_65536_140,#0x00
000D24 02 0E 86 [24] 2950 ljmp 00192$
000D27 2951 00191$:
2952 ; src/dap.c:559: if(post_read) {
000D27 E5 3F [12] 2953 mov a,_DAP_SWD_Transfer_post_read_65536_140
000D29 70 03 [24] 2954 jnz 00612$
000D2B 02 0D D8 [24] 2955 ljmp 00179$
000D2E 2956 00612$:
2957 ; src/dap.c:561: retry = retry_count;
000D2E 78 52 [12] 2958 mov r0,#_retry_count
000D30 86 04 [24] 2959 mov ar4,@r0
000D32 08 [12] 2960 inc r0
000D33 86 05 [24] 2961 mov ar5,@r0
000D35 78 63 [12] 2962 mov r0,#_retry
000D37 A6 04 [24] 2963 mov @r0,ar4
000D39 08 [12] 2964 inc r0
000D3A A6 05 [24] 2965 mov @r0,ar5
2966 ; src/dap.c:562: do {
000D3C 2967 00173$:
2968 ; src/dap.c:563: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
000D3C 75 2A 00 [24] 2969 mov _SWD_Transfer_PARM_2,#_data
000D3F 75 2B 01 [24] 2970 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000D42 75 82 0E [24] 2971 mov dpl,#0x0e
000D45 C0 07 [24] 2972 push ar7
000D47 C0 06 [24] 2973 push ar6
000D49 12 02 81 [24] 2974 lcall _SWD_Transfer
000D4C AD 82 [24] 2975 mov r5,dpl
000D4E D0 06 [24] 2976 pop ar6
000D50 D0 07 [24] 2977 pop ar7
000D52 78 62 [12] 2978 mov r0,#_response_value
000D54 A6 05 [24] 2979 mov @r0,ar5
2980 ; src/dap.c:564: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000D56 BD 02 1B [24] 2981 cjne r5,#0x02,00175$
000D59 78 63 [12] 2982 mov r0,#_retry
000D5B 86 03 [24] 2983 mov ar3,@r0
000D5D 08 [12] 2984 inc r0
000D5E 86 04 [24] 2985 mov ar4,@r0
000D60 78 63 [12] 2986 mov r0,#_retry
000D62 EB [12] 2987 mov a,r3
000D63 24 FF [12] 2988 add a,#0xff
000D65 F6 [12] 2989 mov @r0,a
000D66 EC [12] 2990 mov a,r4
000D67 34 FF [12] 2991 addc a,#0xff
000D69 08 [12] 2992 inc r0
000D6A F6 [12] 2993 mov @r0,a
000D6B EB [12] 2994 mov a,r3
000D6C 4C [12] 2995 orl a,r4
000D6D 60 05 [24] 2996 jz 00175$
000D6F 78 5E [12] 2997 mov r0,#_DAP_TransferAbort
000D71 E6 [12] 2998 mov a,@r0
000D72 60 C8 [24] 2999 jz 00173$
000D74 3000 00175$:
3001 ; src/dap.c:565: if(response_value != DAP_TRANSFER_OK) break;
000D74 BD 01 02 [24] 3002 cjne r5,#0x01,00617$
000D77 80 03 [24] 3003 sjmp 00618$
000D79 3004 00617$:
000D79 02 0E 94 [24] 3005 ljmp 00226$
000D7C 3006 00618$:
3007 ; src/dap.c:568: *res++ = data[0];
000D7C AC 3B [24] 3008 mov r4,_DAP_SWD_Transfer_PARM_2
000D7E AD 3C [24] 3009 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000D80 90 01 00 [24] 3010 mov dptr,#_data
000D83 E0 [24] 3011 movx a,@dptr
000D84 8C 82 [24] 3012 mov dpl,r4
000D86 8D 83 [24] 3013 mov dph,r5
000D88 F0 [24] 3014 movx @dptr,a
000D89 74 01 [12] 3015 mov a,#0x01
000D8B 2C [12] 3016 add a,r4
000D8C F5 3B [12] 3017 mov _DAP_SWD_Transfer_PARM_2,a
000D8E E4 [12] 3018 clr a
000D8F 3D [12] 3019 addc a,r5
000D90 F5 3C [12] 3020 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3021 ; src/dap.c:569: *res++ = data[1];
000D92 AC 3B [24] 3022 mov r4,_DAP_SWD_Transfer_PARM_2
000D94 AD 3C [24] 3023 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000D96 90 01 01 [24] 3024 mov dptr,#(_data + 0x0001)
000D99 E0 [24] 3025 movx a,@dptr
000D9A 8C 82 [24] 3026 mov dpl,r4
000D9C 8D 83 [24] 3027 mov dph,r5
000D9E F0 [24] 3028 movx @dptr,a
000D9F 74 01 [12] 3029 mov a,#0x01
000DA1 2C [12] 3030 add a,r4
000DA2 F5 3B [12] 3031 mov _DAP_SWD_Transfer_PARM_2,a
000DA4 E4 [12] 3032 clr a
000DA5 3D [12] 3033 addc a,r5
000DA6 F5 3C [12] 3034 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3035 ; src/dap.c:570: *res++ = data[2];
000DA8 AC 3B [24] 3036 mov r4,_DAP_SWD_Transfer_PARM_2
000DAA AD 3C [24] 3037 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000DAC 90 01 02 [24] 3038 mov dptr,#(_data + 0x0002)
000DAF E0 [24] 3039 movx a,@dptr
000DB0 8C 82 [24] 3040 mov dpl,r4
000DB2 8D 83 [24] 3041 mov dph,r5
000DB4 F0 [24] 3042 movx @dptr,a
000DB5 74 01 [12] 3043 mov a,#0x01
000DB7 2C [12] 3044 add a,r4
000DB8 F5 3B [12] 3045 mov _DAP_SWD_Transfer_PARM_2,a
000DBA E4 [12] 3046 clr a
000DBB 3D [12] 3047 addc a,r5
000DBC F5 3C [12] 3048 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3049 ; src/dap.c:571: *res++ = data[3];
000DBE AC 3B [24] 3050 mov r4,_DAP_SWD_Transfer_PARM_2
000DC0 AD 3C [24] 3051 mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
000DC2 90 01 03 [24] 3052 mov dptr,#(_data + 0x0003)
000DC5 E0 [24] 3053 movx a,@dptr
000DC6 FB [12] 3054 mov r3,a
000DC7 8C 82 [24] 3055 mov dpl,r4
000DC9 8D 83 [24] 3056 mov dph,r5
000DCB F0 [24] 3057 movx @dptr,a
000DCC 74 01 [12] 3058 mov a,#0x01
000DCE 2C [12] 3059 add a,r4
000DCF F5 3B [12] 3060 mov _DAP_SWD_Transfer_PARM_2,a
000DD1 E4 [12] 3061 clr a
000DD2 3D [12] 3062 addc a,r5
000DD3 F5 3C [12] 3063 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3064 ; src/dap.c:572: post_read = 0U;
000DD5 75 3F 00 [24] 3065 mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
000DD8 3066 00179$:
3067 ; src/dap.c:575: data[0] = (uint8_t)(*(req + 0));
000DD8 8E 82 [24] 3068 mov dpl,r6
000DDA 8F 83 [24] 3069 mov dph,r7
000DDC E0 [24] 3070 movx a,@dptr
000DDD 90 01 00 [24] 3071 mov dptr,#_data
000DE0 F0 [24] 3072 movx @dptr,a
3073 ; src/dap.c:576: data[1] = (uint8_t)(*(req + 1));
000DE1 8E 82 [24] 3074 mov dpl,r6
000DE3 8F 83 [24] 3075 mov dph,r7
000DE5 A3 [24] 3076 inc dptr
000DE6 E0 [24] 3077 movx a,@dptr
000DE7 90 01 01 [24] 3078 mov dptr,#(_data + 0x0001)
000DEA F0 [24] 3079 movx @dptr,a
3080 ; src/dap.c:577: data[2] = (uint8_t)(*(req + 2));
000DEB 8E 82 [24] 3081 mov dpl,r6
000DED 8F 83 [24] 3082 mov dph,r7
000DEF A3 [24] 3083 inc dptr
000DF0 A3 [24] 3084 inc dptr
000DF1 E0 [24] 3085 movx a,@dptr
000DF2 90 01 02 [24] 3086 mov dptr,#(_data + 0x0002)
000DF5 F0 [24] 3087 movx @dptr,a
3088 ; src/dap.c:578: data[3] = (uint8_t)(*(req + 3));
000DF6 8E 82 [24] 3089 mov dpl,r6
000DF8 8F 83 [24] 3090 mov dph,r7
000DFA A3 [24] 3091 inc dptr
000DFB A3 [24] 3092 inc dptr
000DFC A3 [24] 3093 inc dptr
000DFD E0 [24] 3094 movx a,@dptr
000DFE 90 01 03 [24] 3095 mov dptr,#(_data + 0x0003)
000E01 F0 [24] 3096 movx @dptr,a
3097 ; src/dap.c:579: req += 4;
000E02 74 04 [12] 3098 mov a,#0x04
000E04 2E [12] 3099 add a,r6
000E05 FE [12] 3100 mov r6,a
000E06 E4 [12] 3101 clr a
000E07 3F [12] 3102 addc a,r7
000E08 FF [12] 3103 mov r7,a
3104 ; src/dap.c:580: if((request_value & DAP_TRANSFER_MATCH_MASK) != 0U) {
000E09 78 60 [12] 3105 mov r0,#_request_value
000E0B E6 [12] 3106 mov a,@r0
000E0C 30 E5 2A [24] 3107 jnb acc.5,00188$
3108 ; src/dap.c:582: match_mask[0] = data[0];
000E0F 90 01 00 [24] 3109 mov dptr,#_data
000E12 E0 [24] 3110 movx a,@dptr
000E13 FD [12] 3111 mov r5,a
000E14 78 56 [12] 3112 mov r0,#_match_mask
000E16 A6 05 [24] 3113 mov @r0,ar5
3114 ; src/dap.c:583: match_mask[1] = data[1];
000E18 90 01 01 [24] 3115 mov dptr,#(_data + 0x0001)
000E1B E0 [24] 3116 movx a,@dptr
000E1C FD [12] 3117 mov r5,a
000E1D 78 57 [12] 3118 mov r0,#(_match_mask + 0x0001)
000E1F A6 05 [24] 3119 mov @r0,ar5
3120 ; src/dap.c:584: match_mask[2] = data[2];
000E21 90 01 02 [24] 3121 mov dptr,#(_data + 0x0002)
000E24 E0 [24] 3122 movx a,@dptr
000E25 FD [12] 3123 mov r5,a
000E26 78 58 [12] 3124 mov r0,#(_match_mask + 0x0002)
000E28 A6 05 [24] 3125 mov @r0,ar5
3126 ; src/dap.c:585: match_mask[3] = data[3];
000E2A 90 01 03 [24] 3127 mov dptr,#(_data + 0x0003)
000E2D E0 [24] 3128 movx a,@dptr
000E2E FD [12] 3129 mov r5,a
000E2F 78 59 [12] 3130 mov r0,#(_match_mask + 0x0003)
000E31 A6 05 [24] 3131 mov @r0,ar5
3132 ; src/dap.c:586: response_value = DAP_TRANSFER_OK;
000E33 78 62 [12] 3133 mov r0,#_response_value
000E35 76 01 [12] 3134 mov @r0,#0x01
000E37 80 4D [24] 3135 sjmp 00192$
000E39 3136 00188$:
3137 ; src/dap.c:590: retry = retry_count;
000E39 78 52 [12] 3138 mov r0,#_retry_count
000E3B 86 04 [24] 3139 mov ar4,@r0
000E3D 08 [12] 3140 inc r0
000E3E 86 05 [24] 3141 mov ar5,@r0
000E40 78 63 [12] 3142 mov r0,#_retry
000E42 A6 04 [24] 3143 mov @r0,ar4
000E44 08 [12] 3144 inc r0
000E45 A6 05 [24] 3145 mov @r0,ar5
3146 ; src/dap.c:591: do {
000E47 3147 00182$:
3148 ; src/dap.c:592: response_value = SWD_Transfer(request_value, data);
000E47 75 2A 00 [24] 3149 mov _SWD_Transfer_PARM_2,#_data
000E4A 75 2B 01 [24] 3150 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000E4D 78 60 [12] 3151 mov r0,#_request_value
000E4F 86 82 [24] 3152 mov dpl,@r0
000E51 C0 07 [24] 3153 push ar7
000E53 C0 06 [24] 3154 push ar6
000E55 12 02 81 [24] 3155 lcall _SWD_Transfer
000E58 AD 82 [24] 3156 mov r5,dpl
000E5A D0 06 [24] 3157 pop ar6
000E5C D0 07 [24] 3158 pop ar7
000E5E 78 62 [12] 3159 mov r0,#_response_value
000E60 A6 05 [24] 3160 mov @r0,ar5
3161 ; src/dap.c:593: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000E62 BD 02 1B [24] 3162 cjne r5,#0x02,00184$
000E65 78 63 [12] 3163 mov r0,#_retry
000E67 86 03 [24] 3164 mov ar3,@r0
000E69 08 [12] 3165 inc r0
000E6A 86 04 [24] 3166 mov ar4,@r0
000E6C 78 63 [12] 3167 mov r0,#_retry
000E6E EB [12] 3168 mov a,r3
000E6F 24 FF [12] 3169 add a,#0xff
000E71 F6 [12] 3170 mov @r0,a
000E72 EC [12] 3171 mov a,r4
000E73 34 FF [12] 3172 addc a,#0xff
000E75 08 [12] 3173 inc r0
000E76 F6 [12] 3174 mov @r0,a
000E77 EB [12] 3175 mov a,r3
000E78 4C [12] 3176 orl a,r4
000E79 60 05 [24] 3177 jz 00184$
000E7B 78 5E [12] 3178 mov r0,#_DAP_TransferAbort
000E7D E6 [12] 3179 mov a,@r0
000E7E 60 C7 [24] 3180 jz 00182$
000E80 3181 00184$:
3182 ; src/dap.c:594: if(response_value != DAP_TRANSFER_OK) break;
000E80 BD 01 11 [24] 3183 cjne r5,#0x01,00226$
3184 ; src/dap.c:595: check_write = 1U;
000E83 75 40 01 [24] 3185 mov _DAP_SWD_Transfer_check_write_65536_140,#0x01
000E86 3186 00192$:
3187 ; src/dap.c:598: response_count++;
000E86 78 61 [12] 3188 mov r0,#_response_count
000E88 06 [12] 3189 inc @r0
3190 ; src/dap.c:599: if(DAP_TransferAbort) break;
000E89 78 5E [12] 3191 mov r0,#_DAP_TransferAbort
000E8B E6 [12] 3192 mov a,@r0
000E8C 70 06 [24] 3193 jnz 00226$
3194 ; src/dap.c:461: for(; request_count != 0U; request_count--) {
000E8E 78 5F [12] 3195 mov r0,#_request_count
000E90 16 [12] 3196 dec @r0
000E91 02 09 67 [24] 3197 ljmp 00223$
000E94 3198 00226$:
3199 ; src/dap.c:602: for(; request_count != 0U; request_count--) {
000E94 78 5F [12] 3200 mov r0,#_request_count
000E96 E6 [12] 3201 mov a,@r0
000E97 60 2C [24] 3202 jz 00201$
3203 ; src/dap.c:604: request_value = *req++;
000E99 8E 82 [24] 3204 mov dpl,r6
000E9B 8F 83 [24] 3205 mov dph,r7
000E9D E0 [24] 3206 movx a,@dptr
000E9E FD [12] 3207 mov r5,a
000E9F A3 [24] 3208 inc dptr
000EA0 AE 82 [24] 3209 mov r6,dpl
000EA2 AF 83 [24] 3210 mov r7,dph
000EA4 78 60 [12] 3211 mov r0,#_request_value
000EA6 A6 05 [24] 3212 mov @r0,ar5
3213 ; src/dap.c:605: if((request_value & DAP_TRANSFER_RnW) != 0U) { // Read register
000EA8 ED [12] 3214 mov a,r5
000EA9 30 E1 0D [24] 3215 jnb acc.1,00199$
3216 ; src/dap.c:606: if((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) req += 4;
000EAC ED [12] 3217 mov a,r5
000EAD 30 E4 10 [24] 3218 jnb acc.4,00227$
000EB0 74 04 [12] 3219 mov a,#0x04
000EB2 2E [12] 3220 add a,r6
000EB3 FE [12] 3221 mov r6,a
000EB4 E4 [12] 3222 clr a
000EB5 3F [12] 3223 addc a,r7
000EB6 FF [12] 3224 mov r7,a
000EB7 80 07 [24] 3225 sjmp 00227$
000EB9 3226 00199$:
3227 ; src/dap.c:608: else req += 4; // Write register
000EB9 74 04 [12] 3228 mov a,#0x04
000EBB 2E [12] 3229 add a,r6
000EBC FE [12] 3230 mov r6,a
000EBD E4 [12] 3231 clr a
000EBE 3F [12] 3232 addc a,r7
000EBF FF [12] 3233 mov r7,a
000EC0 3234 00227$:
3235 ; src/dap.c:602: for(; request_count != 0U; request_count--) {
000EC0 78 5F [12] 3236 mov r0,#_request_count
000EC2 16 [12] 3237 dec @r0
000EC3 80 CF [24] 3238 sjmp 00226$
000EC5 3239 00201$:
3240 ; src/dap.c:611: if(response_value == DAP_TRANSFER_OK) {
000EC5 78 62 [12] 3241 mov r0,#_response_value
000EC7 B6 01 02 [24] 3242 cjne @r0,#0x01,00630$
000ECA 80 03 [24] 3243 sjmp 00631$
000ECC 3244 00630$:
000ECC 02 0F B8 [24] 3245 ljmp 00221$
000ECF 3246 00631$:
3247 ; src/dap.c:612: if(post_read) {
000ECF E5 3F [12] 3248 mov a,_DAP_SWD_Transfer_post_read_65536_140
000ED1 70 03 [24] 3249 jnz 00632$
000ED3 02 0F 77 [24] 3250 ljmp 00217$
000ED6 3251 00632$:
3252 ; src/dap.c:614: retry = retry_count;
000ED6 78 52 [12] 3253 mov r0,#_retry_count
000ED8 86 06 [24] 3254 mov ar6,@r0
000EDA 08 [12] 3255 inc r0
000EDB 86 07 [24] 3256 mov ar7,@r0
000EDD 78 63 [12] 3257 mov r0,#_retry
000EDF A6 06 [24] 3258 mov @r0,ar6
000EE1 08 [12] 3259 inc r0
000EE2 A6 07 [24] 3260 mov @r0,ar7
3261 ; src/dap.c:615: do {
000EE4 3262 00204$:
3263 ; src/dap.c:616: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
000EE4 75 2A 00 [24] 3264 mov _SWD_Transfer_PARM_2,#_data
000EE7 75 2B 01 [24] 3265 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
000EEA 75 82 0E [24] 3266 mov dpl,#0x0e
000EED 12 02 81 [24] 3267 lcall _SWD_Transfer
000EF0 AF 82 [24] 3268 mov r7,dpl
000EF2 78 62 [12] 3269 mov r0,#_response_value
000EF4 A6 07 [24] 3270 mov @r0,ar7
3271 ; src/dap.c:617: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000EF6 BF 02 1B [24] 3272 cjne r7,#0x02,00206$
000EF9 78 63 [12] 3273 mov r0,#_retry
000EFB 86 05 [24] 3274 mov ar5,@r0
000EFD 08 [12] 3275 inc r0
000EFE 86 06 [24] 3276 mov ar6,@r0
000F00 78 63 [12] 3277 mov r0,#_retry
000F02 ED [12] 3278 mov a,r5
000F03 24 FF [12] 3279 add a,#0xff
000F05 F6 [12] 3280 mov @r0,a
000F06 EE [12] 3281 mov a,r6
000F07 34 FF [12] 3282 addc a,#0xff
000F09 08 [12] 3283 inc r0
000F0A F6 [12] 3284 mov @r0,a
000F0B ED [12] 3285 mov a,r5
000F0C 4E [12] 3286 orl a,r6
000F0D 60 05 [24] 3287 jz 00206$
000F0F 78 5E [12] 3288 mov r0,#_DAP_TransferAbort
000F11 E6 [12] 3289 mov a,@r0
000F12 60 D0 [24] 3290 jz 00204$
000F14 3291 00206$:
3292 ; src/dap.c:618: if(response_value != DAP_TRANSFER_OK) goto end;
000F14 BF 01 02 [24] 3293 cjne r7,#0x01,00637$
000F17 80 03 [24] 3294 sjmp 00638$
000F19 3295 00637$:
000F19 02 0F B8 [24] 3296 ljmp 00221$
000F1C 3297 00638$:
3298 ; src/dap.c:621: *res++ = (uint8_t)data[0];
000F1C AE 3B [24] 3299 mov r6,_DAP_SWD_Transfer_PARM_2
000F1E AF 3C [24] 3300 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000F20 90 01 00 [24] 3301 mov dptr,#_data
000F23 E0 [24] 3302 movx a,@dptr
000F24 8E 82 [24] 3303 mov dpl,r6
000F26 8F 83 [24] 3304 mov dph,r7
000F28 F0 [24] 3305 movx @dptr,a
000F29 74 01 [12] 3306 mov a,#0x01
000F2B 2E [12] 3307 add a,r6
000F2C F5 3B [12] 3308 mov _DAP_SWD_Transfer_PARM_2,a
000F2E E4 [12] 3309 clr a
000F2F 3F [12] 3310 addc a,r7
000F30 F5 3C [12] 3311 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3312 ; src/dap.c:622: *res++ = (uint8_t)data[1];
000F32 AE 3B [24] 3313 mov r6,_DAP_SWD_Transfer_PARM_2
000F34 AF 3C [24] 3314 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000F36 90 01 01 [24] 3315 mov dptr,#(_data + 0x0001)
000F39 E0 [24] 3316 movx a,@dptr
000F3A 8E 82 [24] 3317 mov dpl,r6
000F3C 8F 83 [24] 3318 mov dph,r7
000F3E F0 [24] 3319 movx @dptr,a
000F3F 74 01 [12] 3320 mov a,#0x01
000F41 2E [12] 3321 add a,r6
000F42 F5 3B [12] 3322 mov _DAP_SWD_Transfer_PARM_2,a
000F44 E4 [12] 3323 clr a
000F45 3F [12] 3324 addc a,r7
000F46 F5 3C [12] 3325 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3326 ; src/dap.c:623: *res++ = (uint8_t)data[2];
000F48 AE 3B [24] 3327 mov r6,_DAP_SWD_Transfer_PARM_2
000F4A AF 3C [24] 3328 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000F4C 90 01 02 [24] 3329 mov dptr,#(_data + 0x0002)
000F4F E0 [24] 3330 movx a,@dptr
000F50 8E 82 [24] 3331 mov dpl,r6
000F52 8F 83 [24] 3332 mov dph,r7
000F54 F0 [24] 3333 movx @dptr,a
000F55 74 01 [12] 3334 mov a,#0x01
000F57 2E [12] 3335 add a,r6
000F58 F5 3B [12] 3336 mov _DAP_SWD_Transfer_PARM_2,a
000F5A E4 [12] 3337 clr a
000F5B 3F [12] 3338 addc a,r7
000F5C F5 3C [12] 3339 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
3340 ; src/dap.c:624: *res++ = (uint8_t)data[3];
000F5E AE 3B [24] 3341 mov r6,_DAP_SWD_Transfer_PARM_2
000F60 AF 3C [24] 3342 mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
000F62 90 01 03 [24] 3343 mov dptr,#(_data + 0x0003)
000F65 E0 [24] 3344 movx a,@dptr
000F66 FD [12] 3345 mov r5,a
000F67 8E 82 [24] 3346 mov dpl,r6
000F69 8F 83 [24] 3347 mov dph,r7
000F6B F0 [24] 3348 movx @dptr,a
000F6C 74 01 [12] 3349 mov a,#0x01
000F6E 2E [12] 3350 add a,r6
000F6F F5 3B [12] 3351 mov _DAP_SWD_Transfer_PARM_2,a
000F71 E4 [12] 3352 clr a
000F72 3F [12] 3353 addc a,r7
000F73 F5 3C [12] 3354 mov (_DAP_SWD_Transfer_PARM_2 + 1),a
000F75 80 41 [24] 3355 sjmp 00221$
000F77 3356 00217$:
3357 ; src/dap.c:626: else if(check_write) {
000F77 E5 40 [12] 3358 mov a,_DAP_SWD_Transfer_check_write_65536_140
000F79 60 3D [24] 3359 jz 00221$
3360 ; src/dap.c:628: retry = retry_count;
000F7B 78 52 [12] 3361 mov r0,#_retry_count
000F7D 86 06 [24] 3362 mov ar6,@r0
000F7F 08 [12] 3363 inc r0
000F80 86 07 [24] 3364 mov ar7,@r0
000F82 78 63 [12] 3365 mov r0,#_retry
000F84 A6 06 [24] 3366 mov @r0,ar6
000F86 08 [12] 3367 inc r0
000F87 A6 07 [24] 3368 mov @r0,ar7
3369 ; src/dap.c:629: do {
000F89 3370 00211$:
3371 ; src/dap.c:630: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL);
000F89 E4 [12] 3372 clr a
000F8A F5 2A [12] 3373 mov _SWD_Transfer_PARM_2,a
000F8C F5 2B [12] 3374 mov (_SWD_Transfer_PARM_2 + 1),a
000F8E 75 82 0E [24] 3375 mov dpl,#0x0e
000F91 12 02 81 [24] 3376 lcall _SWD_Transfer
000F94 AF 82 [24] 3377 mov r7,dpl
000F96 78 62 [12] 3378 mov r0,#_response_value
000F98 A6 07 [24] 3379 mov @r0,ar7
3380 ; src/dap.c:631: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
000F9A BF 02 1B [24] 3381 cjne r7,#0x02,00221$
000F9D 78 63 [12] 3382 mov r0,#_retry
000F9F 86 06 [24] 3383 mov ar6,@r0
000FA1 08 [12] 3384 inc r0
000FA2 86 07 [24] 3385 mov ar7,@r0
000FA4 78 63 [12] 3386 mov r0,#_retry
000FA6 EE [12] 3387 mov a,r6
000FA7 24 FF [12] 3388 add a,#0xff
000FA9 F6 [12] 3389 mov @r0,a
000FAA EF [12] 3390 mov a,r7
000FAB 34 FF [12] 3391 addc a,#0xff
000FAD 08 [12] 3392 inc r0
000FAE F6 [12] 3393 mov @r0,a
000FAF EE [12] 3394 mov a,r6
000FB0 4F [12] 3395 orl a,r7
000FB1 60 05 [24] 3396 jz 00221$
000FB3 78 5E [12] 3397 mov r0,#_DAP_TransferAbort
000FB5 E6 [12] 3398 mov a,@r0
000FB6 60 D1 [24] 3399 jz 00211$
3400 ; src/dap.c:635: end:
000FB8 3401 00221$:
3402 ; src/dap.c:636: *(response_head + 0) = (uint8_t)response_count;
000FB8 85 3D 82 [24] 3403 mov dpl,_DAP_SWD_Transfer_response_head_65536_140
000FBB 85 3E 83 [24] 3404 mov dph,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
000FBE 78 61 [12] 3405 mov r0,#_response_count
000FC0 E6 [12] 3406 mov a,@r0
000FC1 F0 [24] 3407 movx @dptr,a
3408 ; src/dap.c:637: *(response_head + 1) = (uint8_t)response_value;
000FC2 85 3D 82 [24] 3409 mov dpl,_DAP_SWD_Transfer_response_head_65536_140
000FC5 85 3E 83 [24] 3410 mov dph,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
000FC8 A3 [24] 3411 inc dptr
000FC9 78 62 [12] 3412 mov r0,#_response_value
000FCB E6 [12] 3413 mov a,@r0
000FCC F0 [24] 3414 movx @dptr,a
3415 ; src/dap.c:638: return((uint8_t)(res - response_head));
000FCD AF 3B [24] 3416 mov r7,_DAP_SWD_Transfer_PARM_2
000FCF AC 3D [24] 3417 mov r4,_DAP_SWD_Transfer_response_head_65536_140
000FD1 EF [12] 3418 mov a,r7
000FD2 C3 [12] 3419 clr c
000FD3 9C [12] 3420 subb a,r4
000FD4 F5 82 [12] 3421 mov dpl,a
3422 ; src/dap.c:639: }
000FD6 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 ; -----------------------------------------
000FD7 3435 _DAP_SWD_TransferBlock:
000FD7 AE 82 [24] 3436 mov r6,dpl
000FD9 AF 83 [24] 3437 mov r7,dph
3438 ; src/dap.c:649: response_count = 0U;
000FDB 78 61 [12] 3439 mov r0,#_response_count
000FDD 76 00 [12] 3440 mov @r0,#0x00
3441 ; src/dap.c:650: response_value = 0U;
000FDF 78 62 [12] 3442 mov r0,#_response_value
000FE1 76 00 [12] 3443 mov @r0,#0x00
3444 ; src/dap.c:651: response_head = res;
000FE3 85 42 44 [24] 3445 mov _DAP_SWD_TransferBlock_response_head_65536_175,_DAP_SWD_TransferBlock_PARM_2
000FE6 85 43 45 [24] 3446 mov (_DAP_SWD_TransferBlock_response_head_65536_175 + 1),(_DAP_SWD_TransferBlock_PARM_2 + 1)
3447 ; src/dap.c:652: res += 3;
000FE9 74 03 [12] 3448 mov a,#0x03
000FEB 25 44 [12] 3449 add a,_DAP_SWD_TransferBlock_response_head_65536_175
000FED F5 42 [12] 3450 mov _DAP_SWD_TransferBlock_PARM_2,a
000FEF E4 [12] 3451 clr a
000FF0 35 45 [12] 3452 addc a,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
000FF2 F5 43 [12] 3453 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3454 ; src/dap.c:653: DAP_TransferAbort = 0U;
000FF4 78 5E [12] 3455 mov r0,#_DAP_TransferAbort
000FF6 76 00 [12] 3456 mov @r0,#0x00
3457 ; src/dap.c:654: req++; // ignore DAP index
000FF8 0E [12] 3458 inc r6
000FF9 BE 00 01 [24] 3459 cjne r6,#0x00,00261$
000FFC 0F [12] 3460 inc r7
000FFD 3461 00261$:
3462 ; src/dap.c:655: request_count = (uint16_t)(*(req + 0) << 0)
000FFD 8E 82 [24] 3463 mov dpl,r6
000FFF 8F 83 [24] 3464 mov dph,r7
001001 E0 [24] 3465 movx a,@dptr
001002 FB [12] 3466 mov r3,a
3467 ; src/dap.c:656: | (uint16_t)(*(req + 1) << 8);
001003 8E 82 [24] 3468 mov dpl,r6
001005 8F 83 [24] 3469 mov dph,r7
001007 A3 [24] 3470 inc dptr
001008 E0 [24] 3471 movx a,@dptr
001009 E4 [12] 3472 clr a
00100A FA [12] 3473 mov r2,a
00100B 4B [12] 3474 orl a,r3
00100C 78 5F [12] 3475 mov r0,#_request_count
00100E F6 [12] 3476 mov @r0,a
3477 ; src/dap.c:657: req += 2;
00100F 74 02 [12] 3478 mov a,#0x02
001011 2E [12] 3479 add a,r6
001012 FE [12] 3480 mov r6,a
001013 E4 [12] 3481 clr a
001014 3F [12] 3482 addc a,r7
001015 FF [12] 3483 mov r7,a
3484 ; src/dap.c:658: if(request_count == 0U) goto end;
001016 78 5F [12] 3485 mov r0,#_request_count
001018 E6 [12] 3486 mov a,@r0
001019 70 03 [24] 3487 jnz 00262$
00101B 02 12 0F [24] 3488 ljmp 00143$
00101E 3489 00262$:
3490 ; src/dap.c:660: request_value = *req++;
00101E 8E 82 [24] 3491 mov dpl,r6
001020 8F 83 [24] 3492 mov dph,r7
001022 E0 [24] 3493 movx a,@dptr
001023 FB [12] 3494 mov r3,a
001024 0E [12] 3495 inc r6
001025 BE 00 01 [24] 3496 cjne r6,#0x00,00263$
001028 0F [12] 3497 inc r7
001029 3498 00263$:
001029 78 60 [12] 3499 mov r0,#_request_value
00102B A6 03 [24] 3500 mov @r0,ar3
3501 ; src/dap.c:661: if((request_value & DAP_TRANSFER_RnW) != 0U) {
00102D EB [12] 3502 mov a,r3
00102E 20 E1 03 [24] 3503 jb acc.1,00264$
001031 02 11 42 [24] 3504 ljmp 00165$
001034 3505 00264$:
3506 ; src/dap.c:663: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
001034 EB [12] 3507 mov a,r3
001035 30 E0 46 [24] 3508 jnb acc.0,00159$
3509 ; src/dap.c:665: retry = retry_count;
001038 78 52 [12] 3510 mov r0,#_retry_count
00103A 86 02 [24] 3511 mov ar2,@r0
00103C 08 [12] 3512 inc r0
00103D 86 03 [24] 3513 mov ar3,@r0
00103F 78 63 [12] 3514 mov r0,#_retry
001041 A6 02 [24] 3515 mov @r0,ar2
001043 08 [12] 3516 inc r0
001044 A6 03 [24] 3517 mov @r0,ar3
3518 ; src/dap.c:666: do {
001046 3519 00105$:
3520 ; src/dap.c:667: response_value = SWD_Transfer(request_value, NULL);
001046 E4 [12] 3521 clr a
001047 F5 2A [12] 3522 mov _SWD_Transfer_PARM_2,a
001049 F5 2B [12] 3523 mov (_SWD_Transfer_PARM_2 + 1),a
00104B 78 60 [12] 3524 mov r0,#_request_value
00104D 86 82 [24] 3525 mov dpl,@r0
00104F 12 02 81 [24] 3526 lcall _SWD_Transfer
001052 AB 82 [24] 3527 mov r3,dpl
001054 78 62 [12] 3528 mov r0,#_response_value
001056 A6 03 [24] 3529 mov @r0,ar3
3530 ; src/dap.c:668: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
001058 BB 02 1B [24] 3531 cjne r3,#0x02,00107$
00105B 78 63 [12] 3532 mov r0,#_retry
00105D 86 02 [24] 3533 mov ar2,@r0
00105F 08 [12] 3534 inc r0
001060 86 05 [24] 3535 mov ar5,@r0
001062 78 63 [12] 3536 mov r0,#_retry
001064 EA [12] 3537 mov a,r2
001065 24 FF [12] 3538 add a,#0xff
001067 F6 [12] 3539 mov @r0,a
001068 ED [12] 3540 mov a,r5
001069 34 FF [12] 3541 addc a,#0xff
00106B 08 [12] 3542 inc r0
00106C F6 [12] 3543 mov @r0,a
00106D EA [12] 3544 mov a,r2
00106E 4D [12] 3545 orl a,r5
00106F 60 05 [24] 3546 jz 00107$
001071 78 5E [12] 3547 mov r0,#_DAP_TransferAbort
001073 E6 [12] 3548 mov a,@r0
001074 60 D0 [24] 3549 jz 00105$
001076 3550 00107$:
3551 ; src/dap.c:669: if(response_value != DAP_TRANSFER_OK) goto end;
001076 BB 01 02 [24] 3552 cjne r3,#0x01,00270$
001079 80 03 [24] 3553 sjmp 00271$
00107B 3554 00270$:
00107B 02 12 0F [24] 3555 ljmp 00143$
00107E 3556 00271$:
3557 ; src/dap.c:671: while(request_count--) {
00107E 3558 00159$:
00107E 3559 00122$:
00107E 78 5F [12] 3560 mov r0,#_request_count
001080 86 05 [24] 3561 mov ar5,@r0
001082 78 5F [12] 3562 mov r0,#_request_count
001084 ED [12] 3563 mov a,r5
001085 14 [12] 3564 dec a
001086 F6 [12] 3565 mov @r0,a
001087 ED [12] 3566 mov a,r5
001088 70 03 [24] 3567 jnz 00272$
00108A 02 12 0F [24] 3568 ljmp 00143$
00108D 3569 00272$:
3570 ; src/dap.c:673: if((request_count == 0U) && ((request_value & DAP_TRANSFER_APnDP) != 0U))
00108D 78 5F [12] 3571 mov r0,#_request_count
00108F E6 [12] 3572 mov a,@r0
001090 70 0A [24] 3573 jnz 00113$
001092 78 60 [12] 3574 mov r0,#_request_value
001094 E6 [12] 3575 mov a,@r0
001095 30 E0 04 [24] 3576 jnb acc.0,00113$
3577 ; src/dap.c:674: request_value = DP_RDBUFF | DAP_TRANSFER_RnW; // Last AP read
001098 78 60 [12] 3578 mov r0,#_request_value
00109A 76 0E [12] 3579 mov @r0,#0x0e
00109C 3580 00113$:
3581 ; src/dap.c:675: retry = retry_count;
00109C 78 52 [12] 3582 mov r0,#_retry_count
00109E 86 04 [24] 3583 mov ar4,@r0
0010A0 08 [12] 3584 inc r0
0010A1 86 05 [24] 3585 mov ar5,@r0
0010A3 78 63 [12] 3586 mov r0,#_retry
0010A5 A6 04 [24] 3587 mov @r0,ar4
0010A7 08 [12] 3588 inc r0
0010A8 A6 05 [24] 3589 mov @r0,ar5
3590 ; src/dap.c:676: do {
0010AA 3591 00117$:
3592 ; src/dap.c:677: response_value = SWD_Transfer(request_value, data);
0010AA 75 2A 00 [24] 3593 mov _SWD_Transfer_PARM_2,#_data
0010AD 75 2B 01 [24] 3594 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
0010B0 78 60 [12] 3595 mov r0,#_request_value
0010B2 86 82 [24] 3596 mov dpl,@r0
0010B4 12 02 81 [24] 3597 lcall _SWD_Transfer
0010B7 AD 82 [24] 3598 mov r5,dpl
0010B9 78 62 [12] 3599 mov r0,#_response_value
0010BB A6 05 [24] 3600 mov @r0,ar5
3601 ; src/dap.c:678: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0010BD BD 02 1B [24] 3602 cjne r5,#0x02,00119$
0010C0 78 63 [12] 3603 mov r0,#_retry
0010C2 86 03 [24] 3604 mov ar3,@r0
0010C4 08 [12] 3605 inc r0
0010C5 86 04 [24] 3606 mov ar4,@r0
0010C7 78 63 [12] 3607 mov r0,#_retry
0010C9 EB [12] 3608 mov a,r3
0010CA 24 FF [12] 3609 add a,#0xff
0010CC F6 [12] 3610 mov @r0,a
0010CD EC [12] 3611 mov a,r4
0010CE 34 FF [12] 3612 addc a,#0xff
0010D0 08 [12] 3613 inc r0
0010D1 F6 [12] 3614 mov @r0,a
0010D2 EB [12] 3615 mov a,r3
0010D3 4C [12] 3616 orl a,r4
0010D4 60 05 [24] 3617 jz 00119$
0010D6 78 5E [12] 3618 mov r0,#_DAP_TransferAbort
0010D8 E6 [12] 3619 mov a,@r0
0010D9 60 CF [24] 3620 jz 00117$
0010DB 3621 00119$:
3622 ; src/dap.c:679: if(response_value != DAP_TRANSFER_OK) goto end;
0010DB BD 01 02 [24] 3623 cjne r5,#0x01,00279$
0010DE 80 03 [24] 3624 sjmp 00280$
0010E0 3625 00279$:
0010E0 02 12 0F [24] 3626 ljmp 00143$
0010E3 3627 00280$:
3628 ; src/dap.c:682: *res++ = (uint8_t)data[0];
0010E3 AC 42 [24] 3629 mov r4,_DAP_SWD_TransferBlock_PARM_2
0010E5 AD 43 [24] 3630 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
0010E7 90 01 00 [24] 3631 mov dptr,#_data
0010EA E0 [24] 3632 movx a,@dptr
0010EB 8C 82 [24] 3633 mov dpl,r4
0010ED 8D 83 [24] 3634 mov dph,r5
0010EF F0 [24] 3635 movx @dptr,a
0010F0 74 01 [12] 3636 mov a,#0x01
0010F2 2C [12] 3637 add a,r4
0010F3 F5 42 [12] 3638 mov _DAP_SWD_TransferBlock_PARM_2,a
0010F5 E4 [12] 3639 clr a
0010F6 3D [12] 3640 addc a,r5
0010F7 F5 43 [12] 3641 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3642 ; src/dap.c:683: *res++ = (uint8_t)data[1];
0010F9 AC 42 [24] 3643 mov r4,_DAP_SWD_TransferBlock_PARM_2
0010FB AD 43 [24] 3644 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
0010FD 90 01 01 [24] 3645 mov dptr,#(_data + 0x0001)
001100 E0 [24] 3646 movx a,@dptr
001101 8C 82 [24] 3647 mov dpl,r4
001103 8D 83 [24] 3648 mov dph,r5
001105 F0 [24] 3649 movx @dptr,a
001106 74 01 [12] 3650 mov a,#0x01
001108 2C [12] 3651 add a,r4
001109 F5 42 [12] 3652 mov _DAP_SWD_TransferBlock_PARM_2,a
00110B E4 [12] 3653 clr a
00110C 3D [12] 3654 addc a,r5
00110D F5 43 [12] 3655 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3656 ; src/dap.c:684: *res++ = (uint8_t)data[2];
00110F AC 42 [24] 3657 mov r4,_DAP_SWD_TransferBlock_PARM_2
001111 AD 43 [24] 3658 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
001113 90 01 02 [24] 3659 mov dptr,#(_data + 0x0002)
001116 E0 [24] 3660 movx a,@dptr
001117 8C 82 [24] 3661 mov dpl,r4
001119 8D 83 [24] 3662 mov dph,r5
00111B F0 [24] 3663 movx @dptr,a
00111C 74 01 [12] 3664 mov a,#0x01
00111E 2C [12] 3665 add a,r4
00111F F5 42 [12] 3666 mov _DAP_SWD_TransferBlock_PARM_2,a
001121 E4 [12] 3667 clr a
001122 3D [12] 3668 addc a,r5
001123 F5 43 [12] 3669 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3670 ; src/dap.c:685: *res++ = (uint8_t)data[3];
001125 AC 42 [24] 3671 mov r4,_DAP_SWD_TransferBlock_PARM_2
001127 AD 43 [24] 3672 mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
001129 90 01 03 [24] 3673 mov dptr,#(_data + 0x0003)
00112C E0 [24] 3674 movx a,@dptr
00112D FB [12] 3675 mov r3,a
00112E 8C 82 [24] 3676 mov dpl,r4
001130 8D 83 [24] 3677 mov dph,r5
001132 F0 [24] 3678 movx @dptr,a
001133 74 01 [12] 3679 mov a,#0x01
001135 2C [12] 3680 add a,r4
001136 F5 42 [12] 3681 mov _DAP_SWD_TransferBlock_PARM_2,a
001138 E4 [12] 3682 clr a
001139 3D [12] 3683 addc a,r5
00113A F5 43 [12] 3684 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
3685 ; src/dap.c:686: response_count++;
00113C 78 61 [12] 3686 mov r0,#_response_count
00113E 06 [12] 3687 inc @r0
00113F 02 10 7E [24] 3688 ljmp 00122$
3689 ; src/dap.c:691: while(request_count--) {
001142 3690 00165$:
001142 3691 00132$:
001142 78 5F [12] 3692 mov r0,#_request_count
001144 86 05 [24] 3693 mov ar5,@r0
001146 78 5F [12] 3694 mov r0,#_request_count
001148 ED [12] 3695 mov a,r5
001149 14 [12] 3696 dec a
00114A F6 [12] 3697 mov @r0,a
00114B ED [12] 3698 mov a,r5
00114C 70 03 [24] 3699 jnz 00281$
00114E 02 11 D2 [24] 3700 ljmp 00134$
001151 3701 00281$:
3702 ; src/dap.c:693: data[0] = (uint8_t)(*(req + 0));
001151 8E 82 [24] 3703 mov dpl,r6
001153 8F 83 [24] 3704 mov dph,r7
001155 E0 [24] 3705 movx a,@dptr
001156 90 01 00 [24] 3706 mov dptr,#_data
001159 F0 [24] 3707 movx @dptr,a
3708 ; src/dap.c:694: data[1] = (uint8_t)(*(req + 1));
00115A 8E 82 [24] 3709 mov dpl,r6
00115C 8F 83 [24] 3710 mov dph,r7
00115E A3 [24] 3711 inc dptr
00115F E0 [24] 3712 movx a,@dptr
001160 90 01 01 [24] 3713 mov dptr,#(_data + 0x0001)
001163 F0 [24] 3714 movx @dptr,a
3715 ; src/dap.c:695: data[2] = (uint8_t)(*(req + 2));
001164 8E 82 [24] 3716 mov dpl,r6
001166 8F 83 [24] 3717 mov dph,r7
001168 A3 [24] 3718 inc dptr
001169 A3 [24] 3719 inc dptr
00116A E0 [24] 3720 movx a,@dptr
00116B 90 01 02 [24] 3721 mov dptr,#(_data + 0x0002)
00116E F0 [24] 3722 movx @dptr,a
3723 ; src/dap.c:696: data[3] = (uint8_t)(*(req + 3));
00116F 8E 82 [24] 3724 mov dpl,r6
001171 8F 83 [24] 3725 mov dph,r7
001173 A3 [24] 3726 inc dptr
001174 A3 [24] 3727 inc dptr
001175 A3 [24] 3728 inc dptr
001176 E0 [24] 3729 movx a,@dptr
001177 90 01 03 [24] 3730 mov dptr,#(_data + 0x0003)
00117A F0 [24] 3731 movx @dptr,a
3732 ; src/dap.c:697: req += 4;
00117B 74 04 [12] 3733 mov a,#0x04
00117D 2E [12] 3734 add a,r6
00117E FE [12] 3735 mov r6,a
00117F E4 [12] 3736 clr a
001180 3F [12] 3737 addc a,r7
001181 FF [12] 3738 mov r7,a
3739 ; src/dap.c:700: retry = retry_count;
001182 78 52 [12] 3740 mov r0,#_retry_count
001184 86 04 [24] 3741 mov ar4,@r0
001186 08 [12] 3742 inc r0
001187 86 05 [24] 3743 mov ar5,@r0
001189 78 63 [12] 3744 mov r0,#_retry
00118B A6 04 [24] 3745 mov @r0,ar4
00118D 08 [12] 3746 inc r0
00118E A6 05 [24] 3747 mov @r0,ar5
3748 ; src/dap.c:701: do {
001190 3749 00127$:
3750 ; src/dap.c:702: response_value = SWD_Transfer(request_value, data);
001190 75 2A 00 [24] 3751 mov _SWD_Transfer_PARM_2,#_data
001193 75 2B 01 [24] 3752 mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
001196 78 60 [12] 3753 mov r0,#_request_value
001198 86 82 [24] 3754 mov dpl,@r0
00119A C0 07 [24] 3755 push ar7
00119C C0 06 [24] 3756 push ar6
00119E 12 02 81 [24] 3757 lcall _SWD_Transfer
0011A1 AD 82 [24] 3758 mov r5,dpl
0011A3 D0 06 [24] 3759 pop ar6
0011A5 D0 07 [24] 3760 pop ar7
0011A7 78 62 [12] 3761 mov r0,#_response_value
0011A9 A6 05 [24] 3762 mov @r0,ar5
3763 ; src/dap.c:703: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0011AB BD 02 1B [24] 3764 cjne r5,#0x02,00129$
0011AE 78 63 [12] 3765 mov r0,#_retry
0011B0 86 03 [24] 3766 mov ar3,@r0
0011B2 08 [12] 3767 inc r0
0011B3 86 04 [24] 3768 mov ar4,@r0
0011B5 78 63 [12] 3769 mov r0,#_retry
0011B7 EB [12] 3770 mov a,r3
0011B8 24 FF [12] 3771 add a,#0xff
0011BA F6 [12] 3772 mov @r0,a
0011BB EC [12] 3773 mov a,r4
0011BC 34 FF [12] 3774 addc a,#0xff
0011BE 08 [12] 3775 inc r0
0011BF F6 [12] 3776 mov @r0,a
0011C0 EB [12] 3777 mov a,r3
0011C1 4C [12] 3778 orl a,r4
0011C2 60 05 [24] 3779 jz 00129$
0011C4 78 5E [12] 3780 mov r0,#_DAP_TransferAbort
0011C6 E6 [12] 3781 mov a,@r0
0011C7 60 C7 [24] 3782 jz 00127$
0011C9 3783 00129$:
3784 ; src/dap.c:704: if(response_value != DAP_TRANSFER_OK) goto end;
0011C9 BD 01 43 [24] 3785 cjne r5,#0x01,00143$
3786 ; src/dap.c:705: response_count++;
0011CC 78 61 [12] 3787 mov r0,#_response_count
0011CE 06 [12] 3788 inc @r0
0011CF 02 11 42 [24] 3789 ljmp 00132$
0011D2 3790 00134$:
3791 ; src/dap.c:708: retry = retry_count;
0011D2 78 52 [12] 3792 mov r0,#_retry_count
0011D4 86 06 [24] 3793 mov ar6,@r0
0011D6 08 [12] 3794 inc r0
0011D7 86 07 [24] 3795 mov ar7,@r0
0011D9 78 63 [12] 3796 mov r0,#_retry
0011DB A6 06 [24] 3797 mov @r0,ar6
0011DD 08 [12] 3798 inc r0
0011DE A6 07 [24] 3799 mov @r0,ar7
3800 ; src/dap.c:709: do {
0011E0 3801 00137$:
3802 ; src/dap.c:710: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL);
0011E0 E4 [12] 3803 clr a
0011E1 F5 2A [12] 3804 mov _SWD_Transfer_PARM_2,a
0011E3 F5 2B [12] 3805 mov (_SWD_Transfer_PARM_2 + 1),a
0011E5 75 82 0E [24] 3806 mov dpl,#0x0e
0011E8 12 02 81 [24] 3807 lcall _SWD_Transfer
0011EB AF 82 [24] 3808 mov r7,dpl
0011ED 78 62 [12] 3809 mov r0,#_response_value
0011EF A6 07 [24] 3810 mov @r0,ar7
3811 ; src/dap.c:711: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
0011F1 BF 02 1B [24] 3812 cjne r7,#0x02,00143$
0011F4 78 63 [12] 3813 mov r0,#_retry
0011F6 86 06 [24] 3814 mov ar6,@r0
0011F8 08 [12] 3815 inc r0
0011F9 86 07 [24] 3816 mov ar7,@r0
0011FB 78 63 [12] 3817 mov r0,#_retry
0011FD EE [12] 3818 mov a,r6
0011FE 24 FF [12] 3819 add a,#0xff
001200 F6 [12] 3820 mov @r0,a
001201 EF [12] 3821 mov a,r7
001202 34 FF [12] 3822 addc a,#0xff
001204 08 [12] 3823 inc r0
001205 F6 [12] 3824 mov @r0,a
001206 EE [12] 3825 mov a,r6
001207 4F [12] 3826 orl a,r7
001208 60 05 [24] 3827 jz 00143$
00120A 78 5E [12] 3828 mov r0,#_DAP_TransferAbort
00120C E6 [12] 3829 mov a,@r0
00120D 60 D1 [24] 3830 jz 00137$
3831 ; src/dap.c:714: end:
00120F 3832 00143$:
3833 ; src/dap.c:715: *(response_head + 0) = response_count;
00120F 85 44 82 [24] 3834 mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
001212 85 45 83 [24] 3835 mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
001215 78 61 [12] 3836 mov r0,#_response_count
001217 E6 [12] 3837 mov a,@r0
001218 F0 [24] 3838 movx @dptr,a
3839 ; src/dap.c:716: *(response_head + 1) = 0;
001219 85 44 82 [24] 3840 mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
00121C 85 45 83 [24] 3841 mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
00121F A3 [24] 3842 inc dptr
001220 E4 [12] 3843 clr a
001221 F0 [24] 3844 movx @dptr,a
3845 ; src/dap.c:717: *(response_head + 2) = response_value;
001222 85 44 82 [24] 3846 mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
001225 85 45 83 [24] 3847 mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
001228 A3 [24] 3848 inc dptr
001229 A3 [24] 3849 inc dptr
00122A 78 62 [12] 3850 mov r0,#_response_value
00122C E6 [12] 3851 mov a,@r0
00122D F0 [24] 3852 movx @dptr,a
3853 ; src/dap.c:718: return((uint8_t)(res - response_head));
00122E AF 42 [24] 3854 mov r7,_DAP_SWD_TransferBlock_PARM_2
001230 AC 44 [24] 3855 mov r4,_DAP_SWD_TransferBlock_response_head_65536_175
001232 EF [12] 3856 mov a,r7
001233 C3 [12] 3857 clr c
001234 9C [12] 3858 subb a,r4
001235 F5 82 [12] 3859 mov dpl,a
3860 ; src/dap.c:719: }
001237 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 ; -----------------------------------------
001238 3873 _DAP_TransferBlock:
001238 AE 82 [24] 3874 mov r6,dpl
00123A AF 83 [24] 3875 mov r7,dph
3876 ; src/dap.c:730: switch(debug_port) {
00123C 78 51 [12] 3877 mov r0,#_debug_port
00123E B6 01 11 [24] 3878 cjne @r0,#0x01,00102$
3879 ; src/dap.c:732: num = DAP_SWD_TransferBlock(req, res);
001241 85 46 42 [24] 3880 mov _DAP_SWD_TransferBlock_PARM_2,_DAP_TransferBlock_PARM_2
001244 85 47 43 [24] 3881 mov (_DAP_SWD_TransferBlock_PARM_2 + 1),(_DAP_TransferBlock_PARM_2 + 1)
001247 8E 82 [24] 3882 mov dpl,r6
001249 8F 83 [24] 3883 mov dph,r7
00124B 12 0F D7 [24] 3884 lcall _DAP_SWD_TransferBlock
00124E AF 82 [24] 3885 mov r7,dpl
3886 ; src/dap.c:733: break;
3887 ; src/dap.c:734: default:
001250 80 19 [24] 3888 sjmp 00103$
001252 3889 00102$:
3890 ; src/dap.c:735: *(res + 0) = 0U; // res count [7:0]
001252 AD 46 [24] 3891 mov r5,_DAP_TransferBlock_PARM_2
001254 AE 47 [24] 3892 mov r6,(_DAP_TransferBlock_PARM_2 + 1)
001256 8D 82 [24] 3893 mov dpl,r5
001258 8E 83 [24] 3894 mov dph,r6
00125A E4 [12] 3895 clr a
00125B F0 [24] 3896 movx @dptr,a
3897 ; src/dap.c:736: *(res + 1) = 0U; // res count[15:8]
00125C 8D 82 [24] 3898 mov dpl,r5
00125E 8E 83 [24] 3899 mov dph,r6
001260 A3 [24] 3900 inc dptr
001261 F0 [24] 3901 movx @dptr,a
3902 ; src/dap.c:737: *(res + 2) = 0U; // res value
001262 8D 82 [24] 3903 mov dpl,r5
001264 8E 83 [24] 3904 mov dph,r6
001266 A3 [24] 3905 inc dptr
001267 A3 [24] 3906 inc dptr
001268 F0 [24] 3907 movx @dptr,a
3908 ; src/dap.c:738: num = 3U;
001269 7F 03 [12] 3909 mov r7,#0x03
3910 ; src/dap.c:740: }
00126B 3911 00103$:
3912 ; src/dap.c:741: return num;
00126B 8F 82 [24] 3913 mov dpl,r7
3914 ; src/dap.c:742: }
00126D 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 ; -----------------------------------------
00126E 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;
00126E 90 00 0A [24] 3934 mov dptr,#_EP1_buffer
001271 E0 [24] 3935 movx a,@dptr
001272 90 00 4A [24] 3936 mov dptr,#(_EP1_buffer + 0x0040)
001275 F0 [24] 3937 movx @dptr,a
3938 ; src/dap.c:753: switch(*req++) {
001276 90 00 0A [24] 3939 mov dptr,#_EP1_buffer
001279 E0 [24] 3940 movx a,@dptr
00127A FF [12] 3941 mov r7,a
00127B 60 6B [24] 3942 jz 00103$
00127D BF 01 03 [24] 3943 cjne r7,#0x01,00202$
001280 02 13 0A [24] 3944 ljmp 00104$
001283 3945 00202$:
001283 BF 02 03 [24] 3946 cjne r7,#0x02,00203$
001286 02 13 1B [24] 3947 ljmp 00105$
001289 3948 00203$:
001289 BF 03 03 [24] 3949 cjne r7,#0x03,00204$
00128C 02 13 2C [24] 3950 ljmp 00106$
00128F 3951 00204$:
00128F BF 04 03 [24] 3952 cjne r7,#0x04,00205$
001292 02 14 48 [24] 3953 ljmp 00117$
001295 3954 00205$:
001295 BF 05 02 [24] 3955 cjne r7,#0x05,00206$
001298 80 2C [24] 3956 sjmp 00101$
00129A 3957 00206$:
00129A BF 06 02 [24] 3958 cjne r7,#0x06,00207$
00129D 80 38 [24] 3959 sjmp 00102$
00129F 3960 00207$:
00129F BF 08 03 [24] 3961 cjne r7,#0x08,00208$
0012A2 02 14 58 [24] 3962 ljmp 00118$
0012A5 3963 00208$:
0012A5 BF 10 03 [24] 3964 cjne r7,#0x10,00209$
0012A8 02 13 37 [24] 3965 ljmp 00107$
0012AB 3966 00209$:
0012AB BF 11 03 [24] 3967 cjne r7,#0x11,00210$
0012AE 02 13 48 [24] 3968 ljmp 00108$
0012B1 3969 00210$:
0012B1 BF 12 03 [24] 3970 cjne r7,#0x12,00211$
0012B4 02 14 1F [24] 3971 ljmp 00114$
0012B7 3972 00211$:
0012B7 BF 13 03 [24] 3973 cjne r7,#0x13,00212$
0012BA 02 14 2F [24] 3974 ljmp 00115$
0012BD 3975 00212$:
0012BD BF 1D 03 [24] 3976 cjne r7,#0x1d,00213$
0012C0 02 14 38 [24] 3977 ljmp 00116$
0012C3 3978 00213$:
0012C3 02 14 61 [24] 3979 ljmp 00121$
3980 ; src/dap.c:754: case ID_DAP_Transfer:
0012C6 3981 00101$:
3982 ; src/dap.c:755: num = DAP_SWD_Transfer(req, res);
0012C6 75 3B 4B [24] 3983 mov _DAP_SWD_Transfer_PARM_2,#(_EP1_buffer + 0x0041)
0012C9 75 3C 00 [24] 3984 mov (_DAP_SWD_Transfer_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0012CC 90 00 0B [24] 3985 mov dptr,#(_EP1_buffer + 0x0001)
0012CF 12 09 2E [24] 3986 lcall _DAP_SWD_Transfer
0012D2 AF 82 [24] 3987 mov r7,dpl
3988 ; src/dap.c:756: break;
0012D4 02 14 69 [24] 3989 ljmp 00122$
3990 ; src/dap.c:757: case ID_DAP_TransferBlock:
0012D7 3991 00102$:
3992 ; src/dap.c:758: num = DAP_TransferBlock(req, res);
0012D7 75 46 4B [24] 3993 mov _DAP_TransferBlock_PARM_2,#(_EP1_buffer + 0x0041)
0012DA 75 47 00 [24] 3994 mov (_DAP_TransferBlock_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
0012DD 90 00 0B [24] 3995 mov dptr,#(_EP1_buffer + 0x0001)
0012E0 12 12 38 [24] 3996 lcall _DAP_TransferBlock
0012E3 AF 82 [24] 3997 mov r7,dpl
3998 ; src/dap.c:759: break;
0012E5 02 14 69 [24] 3999 ljmp 00122$
4000 ; src/dap.c:760: case ID_DAP_Info:
0012E8 4001 00103$:
4002 ; src/dap.c:761: num = DAP_Info(*req, res + 1);
0012E8 90 00 0B [24] 4003 mov dptr,#(_EP1_buffer + 0x0001)
0012EB E0 [24] 4004 movx a,@dptr
0012EC FE [12] 4005 mov r6,a
0012ED 74 01 [12] 4006 mov a,#0x01
0012EF 24 4B [12] 4007 add a,#(_EP1_buffer + 0x0041)
0012F1 F5 2C [12] 4008 mov _DAP_Info_PARM_2,a
0012F3 E4 [12] 4009 clr a
0012F4 34 00 [12] 4010 addc a,#((_EP1_buffer + 0x0041) >> 8)
0012F6 F5 2D [12] 4011 mov (_DAP_Info_PARM_2 + 1),a
0012F8 8E 82 [24] 4012 mov dpl,r6
0012FA 12 05 FE [24] 4013 lcall _DAP_Info
0012FD AE 82 [24] 4014 mov r6,dpl
4015 ; src/dap.c:762: *res = (uint8_t)num;
0012FF 90 00 4B [24] 4016 mov dptr,#(_EP1_buffer + 0x0041)
001302 EE [12] 4017 mov a,r6
001303 F0 [24] 4018 movx @dptr,a
4019 ; src/dap.c:763: num++;
001304 EE [12] 4020 mov a,r6
001305 04 [12] 4021 inc a
001306 FF [12] 4022 mov r7,a
4023 ; src/dap.c:764: break;
001307 02 14 69 [24] 4024 ljmp 00122$
4025 ; src/dap.c:765: case ID_DAP_HostStatus:
00130A 4026 00104$:
4027 ; src/dap.c:766: num = DAP_HostStatus(req, res);
00130A 75 10 4B [24] 4028 mov _DAP_HostStatus_PARM_2,#(_EP1_buffer + 0x0041)
00130D 75 11 00 [24] 4029 mov (_DAP_HostStatus_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
001310 90 00 0B [24] 4030 mov dptr,#(_EP1_buffer + 0x0001)
001313 12 06 67 [24] 4031 lcall _DAP_HostStatus
001316 AF 82 [24] 4032 mov r7,dpl
4033 ; src/dap.c:767: break;
001318 02 14 69 [24] 4034 ljmp 00122$
4035 ; src/dap.c:768: case ID_DAP_Connect:
00131B 4036 00105$:
4037 ; src/dap.c:769: num = DAP_Connect(req, res);
00131B 75 2E 4B [24] 4038 mov _DAP_Connect_PARM_2,#(_EP1_buffer + 0x0041)
00131E 75 2F 00 [24] 4039 mov (_DAP_Connect_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
001321 90 00 0B [24] 4040 mov dptr,#(_EP1_buffer + 0x0001)
001324 12 06 8D [24] 4041 lcall _DAP_Connect
001327 AF 82 [24] 4042 mov r7,dpl
4043 ; src/dap.c:770: break;
001329 02 14 69 [24] 4044 ljmp 00122$
4045 ; src/dap.c:771: case ID_DAP_Disconnect:
00132C 4046 00106$:
4047 ; src/dap.c:772: num = DAP_Disconnect(res);
00132C 90 00 4B [24] 4048 mov dptr,#(_EP1_buffer + 0x0041)
00132F 12 06 CD [24] 4049 lcall _DAP_Disconnect
001332 AF 82 [24] 4050 mov r7,dpl
4051 ; src/dap.c:773: break;
001334 02 14 69 [24] 4052 ljmp 00122$
4053 ; src/dap.c:774: case ID_DAP_SWJ_Pins:
001337 4054 00107$:
4055 ; src/dap.c:775: num = DAP_SWJ_Pins(req, res);
001337 75 30 4B [24] 4056 mov _DAP_SWJ_Pins_PARM_2,#(_EP1_buffer + 0x0041)
00133A 75 31 00 [24] 4057 mov (_DAP_SWJ_Pins_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
00133D 90 00 0B [24] 4058 mov dptr,#(_EP1_buffer + 0x0001)
001340 12 06 EB [24] 4059 lcall _DAP_SWJ_Pins
001343 AF 82 [24] 4060 mov r7,dpl
4061 ; src/dap.c:776: break;
001345 02 14 69 [24] 4062 ljmp 00122$
4063 ; src/dap.c:777: case ID_DAP_SWJ_Clock: {
001348 4064 00108$:
4065 ; src/dap.c:778: uint32_t requested_hz = (uint32_t)req[0] | ((uint32_t)req[1]<<8)
001348 90 00 0B [24] 4066 mov dptr,#(_EP1_buffer + 0x0001)
00134B E0 [24] 4067 movx a,@dptr
00134C FE [12] 4068 mov r6,a
00134D 8E 4C [24] 4069 mov _DAP_Thread_sloc0_1_0,r6
00134F 75 4D 00 [24] 4070 mov (_DAP_Thread_sloc0_1_0 + 1),#0x00
001352 75 4E 00 [24] 4071 mov (_DAP_Thread_sloc0_1_0 + 2),#0x00
001355 75 4F 00 [24] 4072 mov (_DAP_Thread_sloc0_1_0 + 3),#0x00
001358 90 00 0C [24] 4073 mov dptr,#(_EP1_buffer + 0x0002)
00135B E0 [24] 4074 movx a,@dptr
00135C F8 [12] 4075 mov r0,a
00135D 79 00 [12] 4076 mov r1,#0x00
00135F 7A 00 [12] 4077 mov r2,#0x00
001361 8A 06 [24] 4078 mov ar6,r2
001363 89 02 [24] 4079 mov ar2,r1
001365 88 01 [24] 4080 mov ar1,r0
001367 E4 [12] 4081 clr a
001368 42 4C [12] 4082 orl _DAP_Thread_sloc0_1_0,a
00136A E9 [12] 4083 mov a,r1
00136B 42 4D [12] 4084 orl (_DAP_Thread_sloc0_1_0 + 1),a
00136D EA [12] 4085 mov a,r2
00136E 42 4E [12] 4086 orl (_DAP_Thread_sloc0_1_0 + 2),a
001370 EE [12] 4087 mov a,r6
001371 42 4F [12] 4088 orl (_DAP_Thread_sloc0_1_0 + 3),a
001373 90 00 0D [24] 4089 mov dptr,#(_EP1_buffer + 0x0003)
001376 E0 [24] 4090 movx a,@dptr
001377 FB [12] 4091 mov r3,a
001378 7C 00 [12] 4092 mov r4,#0x00
00137A 8C 06 [24] 4093 mov ar6,r4
00137C 8B 05 [24] 4094 mov ar5,r3
00137E E4 [12] 4095 clr a
00137F FB [12] 4096 mov r3,a
001380 FC [12] 4097 mov r4,a
001381 42 4C [12] 4098 orl _DAP_Thread_sloc0_1_0,a
001383 EC [12] 4099 mov a,r4
001384 42 4D [12] 4100 orl (_DAP_Thread_sloc0_1_0 + 1),a
001386 ED [12] 4101 mov a,r5
001387 42 4E [12] 4102 orl (_DAP_Thread_sloc0_1_0 + 2),a
001389 EE [12] 4103 mov a,r6
00138A 42 4F [12] 4104 orl (_DAP_Thread_sloc0_1_0 + 3),a
00138C 90 00 0E [24] 4105 mov dptr,#(_EP1_buffer + 0x0004)
00138F E0 [24] 4106 movx a,@dptr
001390 FE [12] 4107 mov r6,a
001391 E4 [12] 4108 clr a
001392 F8 [12] 4109 mov r0,a
001393 F9 [12] 4110 mov r1,a
001394 FA [12] 4111 mov r2,a
001395 E8 [12] 4112 mov a,r0
001396 45 4C [12] 4113 orl a,_DAP_Thread_sloc0_1_0
001398 F5 48 [12] 4114 mov _DAP_Thread_requested_hz_196608_191,a
00139A E9 [12] 4115 mov a,r1
00139B 45 4D [12] 4116 orl a,(_DAP_Thread_sloc0_1_0 + 1)
00139D F5 49 [12] 4117 mov (_DAP_Thread_requested_hz_196608_191 + 1),a
00139F EA [12] 4118 mov a,r2
0013A0 45 4E [12] 4119 orl a,(_DAP_Thread_sloc0_1_0 + 2)
0013A2 F5 4A [12] 4120 mov (_DAP_Thread_requested_hz_196608_191 + 2),a
0013A4 EE [12] 4121 mov a,r6
0013A5 45 4F [12] 4122 orl a,(_DAP_Thread_sloc0_1_0 + 3)
0013A7 F5 4B [12] 4123 mov (_DAP_Thread_requested_hz_196608_191 + 3),a
4124 ; src/dap.c:781: if(requested_hz < 8UL) { *res = DAP_ERROR; }
0013A9 C3 [12] 4125 clr c
0013AA E5 48 [12] 4126 mov a,_DAP_Thread_requested_hz_196608_191
0013AC 94 08 [12] 4127 subb a,#0x08
0013AE E5 49 [12] 4128 mov a,(_DAP_Thread_requested_hz_196608_191 + 1)
0013B0 94 00 [12] 4129 subb a,#0x00
0013B2 E5 4A [12] 4130 mov a,(_DAP_Thread_requested_hz_196608_191 + 2)
0013B4 94 00 [12] 4131 subb a,#0x00
0013B6 E5 4B [12] 4132 mov a,(_DAP_Thread_requested_hz_196608_191 + 3)
0013B8 94 00 [12] 4133 subb a,#0x00
0013BA 50 08 [24] 4134 jnc 00112$
0013BC 90 00 4B [24] 4135 mov dptr,#(_EP1_buffer + 0x0041)
0013BF 74 FF [12] 4136 mov a,#0xff
0013C1 F0 [24] 4137 movx @dptr,a
0013C2 80 57 [24] 4138 sjmp 00113$
0013C4 4139 00112$:
4140 ; src/dap.c:783: if(requested_hz > 100000UL) requested_hz = 100000UL;
0013C4 C3 [12] 4141 clr c
0013C5 74 A0 [12] 4142 mov a,#0xa0
0013C7 95 48 [12] 4143 subb a,_DAP_Thread_requested_hz_196608_191
0013C9 74 86 [12] 4144 mov a,#0x86
0013CB 95 49 [12] 4145 subb a,(_DAP_Thread_requested_hz_196608_191 + 1)
0013CD 74 01 [12] 4146 mov a,#0x01
0013CF 95 4A [12] 4147 subb a,(_DAP_Thread_requested_hz_196608_191 + 2)
0013D1 E4 [12] 4148 clr a
0013D2 95 4B [12] 4149 subb a,(_DAP_Thread_requested_hz_196608_191 + 3)
0013D4 50 0C [24] 4150 jnc 00110$
0013D6 75 48 A0 [24] 4151 mov _DAP_Thread_requested_hz_196608_191,#0xa0
0013D9 75 49 86 [24] 4152 mov (_DAP_Thread_requested_hz_196608_191 + 1),#0x86
0013DC 75 4A 01 [24] 4153 mov (_DAP_Thread_requested_hz_196608_191 + 2),#0x01
0013DF 75 4B 00 [24] 4154 mov (_DAP_Thread_requested_hz_196608_191 + 3),#0x00
0013E2 4155 00110$:
4156 ; src/dap.c:784: half = (500000UL + requested_hz - 1UL) / requested_hz;
0013E2 74 1F [12] 4157 mov a,#0x1f
0013E4 25 48 [12] 4158 add a,_DAP_Thread_requested_hz_196608_191
0013E6 F8 [12] 4159 mov r0,a
0013E7 74 A1 [12] 4160 mov a,#0xa1
0013E9 35 49 [12] 4161 addc a,(_DAP_Thread_requested_hz_196608_191 + 1)
0013EB F9 [12] 4162 mov r1,a
0013EC 74 07 [12] 4163 mov a,#0x07
0013EE 35 4A [12] 4164 addc a,(_DAP_Thread_requested_hz_196608_191 + 2)
0013F0 FA [12] 4165 mov r2,a
0013F1 E4 [12] 4166 clr a
0013F2 35 4B [12] 4167 addc a,(_DAP_Thread_requested_hz_196608_191 + 3)
0013F4 FE [12] 4168 mov r6,a
0013F5 85 48 10 [24] 4169 mov __divulong_PARM_2,_DAP_Thread_requested_hz_196608_191
0013F8 85 49 11 [24] 4170 mov (__divulong_PARM_2 + 1),(_DAP_Thread_requested_hz_196608_191 + 1)
0013FB 85 4A 12 [24] 4171 mov (__divulong_PARM_2 + 2),(_DAP_Thread_requested_hz_196608_191 + 2)
0013FE 85 4B 13 [24] 4172 mov (__divulong_PARM_2 + 3),(_DAP_Thread_requested_hz_196608_191 + 3)
001401 88 82 [24] 4173 mov dpl,r0
001403 89 83 [24] 4174 mov dph,r1
001405 8A F0 [24] 4175 mov b,r2
001407 EE [12] 4176 mov a,r6
001408 12 18 A2 [24] 4177 lcall __divulong
00140B AB 82 [24] 4178 mov r3,dpl
00140D AC 83 [24] 4179 mov r4,dph
00140F AD F0 [24] 4180 mov r5,b
001411 FE [12] 4181 mov r6,a
4182 ; src/dap.c:785: ring_swd_half_period_us = (uint16_t)half;
001412 8B 22 [24] 4183 mov _ring_swd_half_period_us,r3
001414 8C 23 [24] 4184 mov (_ring_swd_half_period_us + 1),r4
4185 ; src/dap.c:786: *res = DAP_OK;
001416 90 00 4B [24] 4186 mov dptr,#(_EP1_buffer + 0x0041)
001419 E4 [12] 4187 clr a
00141A F0 [24] 4188 movx @dptr,a
00141B 4189 00113$:
4190 ; src/dap.c:788: num = 1;
00141B 7F 01 [12] 4191 mov r7,#0x01
4192 ; src/dap.c:789: break;
4193 ; src/dap.c:791: case ID_DAP_SWJ_Sequence:
00141D 80 4A [24] 4194 sjmp 00122$
00141F 4195 00114$:
4196 ; src/dap.c:792: num = DAP_SWJ_Sequence(req, res);
00141F 75 37 4B [24] 4197 mov _DAP_SWJ_Sequence_PARM_2,#(_EP1_buffer + 0x0041)
001422 75 38 00 [24] 4198 mov (_DAP_SWJ_Sequence_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
001425 90 00 0B [24] 4199 mov dptr,#(_EP1_buffer + 0x0001)
001428 12 08 05 [24] 4200 lcall _DAP_SWJ_Sequence
00142B AF 82 [24] 4201 mov r7,dpl
4202 ; src/dap.c:793: break;
4203 ; src/dap.c:794: case ID_DAP_SWD_Configure:
00142D 80 3A [24] 4204 sjmp 00122$
00142F 4205 00115$:
4206 ; src/dap.c:795: *res = DAP_OK;
00142F 90 00 4B [24] 4207 mov dptr,#(_EP1_buffer + 0x0041)
001432 E4 [12] 4208 clr a
001433 F0 [24] 4209 movx @dptr,a
4210 ; src/dap.c:796: num = 1;
001434 7F 01 [12] 4211 mov r7,#0x01
4212 ; src/dap.c:797: break;
4213 ; src/dap.c:798: case ID_DAP_SWD_Sequence:
001436 80 31 [24] 4214 sjmp 00122$
001438 4215 00116$:
4216 ; src/dap.c:799: num = DAP_SWD_Sequence(req, res);
001438 75 39 4B [24] 4217 mov _DAP_SWD_Sequence_PARM_2,#(_EP1_buffer + 0x0041)
00143B 75 3A 00 [24] 4218 mov (_DAP_SWD_Sequence_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
00143E 90 00 0B [24] 4219 mov dptr,#(_EP1_buffer + 0x0001)
001441 12 08 2B [24] 4220 lcall _DAP_SWD_Sequence
001444 AF 82 [24] 4221 mov r7,dpl
4222 ; src/dap.c:800: break;
4223 ; src/dap.c:801: case ID_DAP_TransferConfigure:
001446 80 21 [24] 4224 sjmp 00122$
001448 4225 00117$:
4226 ; src/dap.c:802: num = DAP_TransferConfigure(req, res);
001448 75 10 4B [24] 4227 mov _DAP_TransferConfigure_PARM_2,#(_EP1_buffer + 0x0041)
00144B 75 11 00 [24] 4228 mov (_DAP_TransferConfigure_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
00144E 90 00 0B [24] 4229 mov dptr,#(_EP1_buffer + 0x0001)
001451 12 08 DA [24] 4230 lcall _DAP_TransferConfigure
001454 AF 82 [24] 4231 mov r7,dpl
4232 ; src/dap.c:803: break;
4233 ; src/dap.c:804: case ID_DAP_WriteABORT:
001456 80 11 [24] 4234 sjmp 00122$
001458 4235 00118$:
4236 ; src/dap.c:805: *res = DAP_OK;
001458 90 00 4B [24] 4237 mov dptr,#(_EP1_buffer + 0x0041)
00145B E4 [12] 4238 clr a
00145C F0 [24] 4239 movx @dptr,a
4240 ; src/dap.c:806: num = 1;
00145D 7F 01 [12] 4241 mov r7,#0x01
4242 ; src/dap.c:807: break;
4243 ; src/dap.c:810: default:
00145F 80 08 [24] 4244 sjmp 00122$
001461 4245 00121$:
4246 ; src/dap.c:811: *(res - 1) = ID_DAP_Invalid;
001461 90 00 4A [24] 4247 mov dptr,#(_EP1_buffer + 0x0040)
001464 74 FF [12] 4248 mov a,#0xff
001466 F0 [24] 4249 movx @dptr,a
4250 ; src/dap.c:812: num = 1;
001467 7F 01 [12] 4251 mov r7,#0x01
4252 ; src/dap.c:814: }
001469 4253 00122$:
4254 ; src/dap.c:815: return(num + 1);
001469 EF [12] 4255 mov a,r7
00146A 04 [12] 4256 inc a
00146B F5 82 [12] 4257 mov dpl,a
4258 ; src/dap.c:816: }
00146D 22 [24] 4259 ret
4260 .area CSEG (CODE)
4261 .area CONST (CODE)
4262 .area CONST (CODE)
001942 4263 __str_0:
001942 31 2E 32 2E 31 4264 .ascii "1.2.1"
001947 00 4265 .db 0x00
4266 .area CSEG (CODE)
4267 .area CABS (ABS,CODE)