abse/smart-ring-flex
A tscircuit package created by abse.
- Version
- 0.0.24
- License
- unset
- Stars
- 0
firmware/onboard-programmer/ring-service-candidate/picodap.rst
1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 4.2.0 #13081 (Linux)
4 ;--------------------------------------------------------
5 .module picodap
6 .optsdcc -mmcs51 --model-small
7
8 ;--------------------------------------------------------
9 ; Public variables in this module
10 ;--------------------------------------------------------
11 .globl _main
12 .globl _USB_ISR
13 .globl _USB_interrupt
14 .globl _ring_probe_release
15 .globl _DAP_Thread
16 .globl _USB_init
17 .globl _DLY_ms
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 _ring_probe_enable
269 .globl _ring_probe_reset
270 ;--------------------------------------------------------
271 ; special function registers
272 ;--------------------------------------------------------
273 .area RSEG (ABS,DATA)
000000 274 .org 0x0000
0000D0 275 _PSW = 0x00d0
0000E0 276 _ACC = 0x00e0
0000F0 277 _B = 0x00f0
000081 278 _SP = 0x0081
000082 279 _DPL = 0x0082
000083 280 _DPH = 0x0083
0000A1 281 _SAFE_MOD = 0x00a1
0000B1 282 _GLOBAL_CFG = 0x00b1
000087 283 _PCON = 0x0087
0000B9 284 _CLOCK_CFG = 0x00b9
0000A9 285 _WAKE_CTRL = 0x00a9
0000FE 286 _RESET_KEEP = 0x00fe
0000FF 287 _WDOG_COUNT = 0x00ff
0000A8 288 _IE = 0x00a8
0000B8 289 _IP = 0x00b8
0000E8 290 _IE_EX = 0x00e8
0000E9 291 _IP_EX = 0x00e9
0000C7 292 _GPIO_IE = 0x00c7
008584 293 _ROM_ADDR = 0x8584
000084 294 _ROM_ADDR_L = 0x0084
000085 295 _ROM_ADDR_H = 0x0085
008F8E 296 _ROM_DATA = 0x8f8e
00008E 297 _ROM_DATA_L = 0x008e
00008F 298 _ROM_DATA_H = 0x008f
000086 299 _ROM_CTRL = 0x0086
000090 300 _P1 = 0x0090
000092 301 _P1_MOD_OC = 0x0092
000093 302 _P1_DIR_PU = 0x0093
0000A0 303 _P2 = 0x00a0
0000B0 304 _P3 = 0x00b0
000096 305 _P3_MOD_OC = 0x0096
000097 306 _P3_DIR_PU = 0x0097
0000C6 307 _PIN_FUNC = 0x00c6
0000A2 308 _XBUS_AUX = 0x00a2
000088 309 _TCON = 0x0088
000089 310 _TMOD = 0x0089
00008A 311 _TL0 = 0x008a
00008B 312 _TL1 = 0x008b
00008C 313 _TH0 = 0x008c
00008D 314 _TH1 = 0x008d
000098 315 _SCON = 0x0098
000099 316 _SBUF = 0x0099
0000C8 317 _T2CON = 0x00c8
0000C9 318 _T2MOD = 0x00c9
00CBCA 319 _RCAP2 = 0xcbca
0000CA 320 _RCAP2L = 0x00ca
0000CB 321 _RCAP2H = 0x00cb
00CDCC 322 _T2COUNT = 0xcdcc
0000CC 323 _TL2 = 0x00cc
0000CD 324 _TH2 = 0x00cd
00CFCE 325 _T2CAP1 = 0xcfce
0000CE 326 _T2CAP1L = 0x00ce
0000CF 327 _T2CAP1H = 0x00cf
00009B 328 _PWM_DATA2 = 0x009b
00009C 329 _PWM_DATA1 = 0x009c
00009D 330 _PWM_CTRL = 0x009d
00009E 331 _PWM_CK_SE = 0x009e
0000F8 332 _SPI0_STAT = 0x00f8
0000F9 333 _SPI0_DATA = 0x00f9
0000FA 334 _SPI0_CTRL = 0x00fa
0000FB 335 _SPI0_CK_SE = 0x00fb
0000FC 336 _SPI0_SETUP = 0x00fc
0000C0 337 _SCON1 = 0x00c0
0000C1 338 _SBUF1 = 0x00c1
0000C2 339 _SBAUD1 = 0x00c2
000080 340 _ADC_CTRL = 0x0080
00009A 341 _ADC_CFG = 0x009a
00009F 342 _ADC_DATA = 0x009f
0000C3 343 _TKEY_CTRL = 0x00c3
00C5C4 344 _TKEY_DAT = 0xc5c4
0000C4 345 _TKEY_DATL = 0x00c4
0000C5 346 _TKEY_DATH = 0x00c5
000091 347 _USB_C_CTRL = 0x0091
0000D1 348 _UDEV_CTRL = 0x00d1
0000D2 349 _UEP1_CTRL = 0x00d2
0000D3 350 _UEP1_T_LEN = 0x00d3
0000D4 351 _UEP2_CTRL = 0x00d4
0000D5 352 _UEP2_T_LEN = 0x00d5
0000D6 353 _UEP3_CTRL = 0x00d6
0000D7 354 _UEP3_T_LEN = 0x00d7
0000D8 355 _USB_INT_FG = 0x00d8
0000D9 356 _USB_INT_ST = 0x00d9
0000DA 357 _USB_MIS_ST = 0x00da
0000DB 358 _USB_RX_LEN = 0x00db
0000DC 359 _UEP0_CTRL = 0x00dc
0000DD 360 _UEP0_T_LEN = 0x00dd
0000DE 361 _UEP4_CTRL = 0x00de
0000DF 362 _UEP4_T_LEN = 0x00df
0000E1 363 _USB_INT_EN = 0x00e1
0000E2 364 _USB_CTRL = 0x00e2
0000E3 365 _USB_DEV_AD = 0x00e3
00E5E4 366 _UEP2_DMA = 0xe5e4
0000E4 367 _UEP2_DMA_L = 0x00e4
0000E5 368 _UEP2_DMA_H = 0x00e5
00E7E6 369 _UEP3_DMA = 0xe7e6
0000E6 370 _UEP3_DMA_L = 0x00e6
0000E7 371 _UEP3_DMA_H = 0x00e7
0000EA 372 _UEP4_1_MOD = 0x00ea
0000EB 373 _UEP2_3_MOD = 0x00eb
00EDEC 374 _UEP0_DMA = 0xedec
0000EC 375 _UEP0_DMA_L = 0x00ec
0000ED 376 _UEP0_DMA_H = 0x00ed
00EFEE 377 _UEP1_DMA = 0xefee
0000EE 378 _UEP1_DMA_L = 0x00ee
0000EF 379 _UEP1_DMA_H = 0x00ef
380 ;--------------------------------------------------------
381 ; special function bits
382 ;--------------------------------------------------------
383 .area RSEG (ABS,DATA)
000000 384 .org 0x0000
0000D7 385 _CY = 0x00d7
0000D6 386 _AC = 0x00d6
0000D5 387 _F0 = 0x00d5
0000D4 388 _RS1 = 0x00d4
0000D3 389 _RS0 = 0x00d3
0000D2 390 _OV = 0x00d2
0000D1 391 _F1 = 0x00d1
0000D0 392 _P = 0x00d0
0000AF 393 _EA = 0x00af
0000AE 394 _E_DIS = 0x00ae
0000AD 395 _ET2 = 0x00ad
0000AC 396 _ES = 0x00ac
0000AB 397 _ET1 = 0x00ab
0000AA 398 _EX1 = 0x00aa
0000A9 399 _ET0 = 0x00a9
0000A8 400 _EX0 = 0x00a8
0000BF 401 _PH_FLAG = 0x00bf
0000BE 402 _PL_FLAG = 0x00be
0000BD 403 _PT2 = 0x00bd
0000BC 404 _PS = 0x00bc
0000BB 405 _PT1 = 0x00bb
0000BA 406 _PX1 = 0x00ba
0000B9 407 _PT0 = 0x00b9
0000B8 408 _PX0 = 0x00b8
0000EF 409 _IE_WDOG = 0x00ef
0000EE 410 _IE_GPIO = 0x00ee
0000ED 411 _IE_PWMX = 0x00ed
0000EC 412 _IE_UART1 = 0x00ec
0000EB 413 _IE_ADC = 0x00eb
0000EA 414 _IE_USB = 0x00ea
0000E9 415 _IE_TKEY = 0x00e9
0000E8 416 _IE_SPI0 = 0x00e8
000097 417 _SCK = 0x0097
000097 418 _TXD1 = 0x0097
000097 419 _TIN5 = 0x0097
000096 420 _MISO = 0x0096
000096 421 _RXD1 = 0x0096
000096 422 _TIN4 = 0x0096
000095 423 _MOSI = 0x0095
000095 424 _PWM1 = 0x0095
000095 425 _TIN3 = 0x0095
000095 426 _UCC2 = 0x0095
000095 427 _AIN2 = 0x0095
000094 428 _T2_ = 0x0094
000094 429 _CAP1_ = 0x0094
000094 430 _SCS = 0x0094
000094 431 _TIN2 = 0x0094
000094 432 _UCC1 = 0x0094
000094 433 _AIN1 = 0x0094
000093 434 _TXD_ = 0x0093
000092 435 _RXD_ = 0x0092
000091 436 _T2EX = 0x0091
000091 437 _CAP2 = 0x0091
000091 438 _TIN1 = 0x0091
000091 439 _VBUS2 = 0x0091
000091 440 _AIN0 = 0x0091
000090 441 _T2 = 0x0090
000090 442 _CAP1 = 0x0090
000090 443 _TIN0 = 0x0090
0000B7 444 _UDM = 0x00b7
0000B6 445 _UDP = 0x00b6
0000B5 446 _T1 = 0x00b5
0000B4 447 _PWM2 = 0x00b4
0000B4 448 _RXD1_ = 0x00b4
0000B4 449 _T0 = 0x00b4
0000B3 450 _INT1 = 0x00b3
0000B2 451 _TXD1_ = 0x00b2
0000B2 452 _INT0 = 0x00b2
0000B2 453 _VBUS1 = 0x00b2
0000B2 454 _AIN3 = 0x00b2
0000B1 455 _PWM2_ = 0x00b1
0000B1 456 _TXD = 0x00b1
0000B0 457 _PWM1_ = 0x00b0
0000B0 458 _RXD = 0x00b0
00008F 459 _TF1 = 0x008f
00008E 460 _TR1 = 0x008e
00008D 461 _TF0 = 0x008d
00008C 462 _TR0 = 0x008c
00008B 463 _IE1 = 0x008b
00008A 464 _IT1 = 0x008a
000089 465 _IE0 = 0x0089
000088 466 _IT0 = 0x0088
00009F 467 _SM0 = 0x009f
00009E 468 _SM1 = 0x009e
00009D 469 _SM2 = 0x009d
00009C 470 _REN = 0x009c
00009B 471 _TB8 = 0x009b
00009A 472 _RB8 = 0x009a
000099 473 _TI = 0x0099
000098 474 _RI = 0x0098
0000CF 475 _TF2 = 0x00cf
0000CF 476 _CAP1F = 0x00cf
0000CE 477 _EXF2 = 0x00ce
0000CD 478 _RCLK = 0x00cd
0000CC 479 _TCLK = 0x00cc
0000CB 480 _EXEN2 = 0x00cb
0000CA 481 _TR2 = 0x00ca
0000C9 482 _C_T2 = 0x00c9
0000C8 483 _CP_RL2 = 0x00c8
0000FF 484 _S0_FST_ACT = 0x00ff
0000FE 485 _S0_IF_OV = 0x00fe
0000FD 486 _S0_IF_FIRST = 0x00fd
0000FC 487 _S0_IF_BYTE = 0x00fc
0000FB 488 _S0_FREE = 0x00fb
0000FA 489 _S0_T_FIFO = 0x00fa
0000F8 490 _S0_R_FIFO = 0x00f8
0000C7 491 _U1SM0 = 0x00c7
0000C5 492 _U1SMOD = 0x00c5
0000C4 493 _U1REN = 0x00c4
0000C3 494 _U1TB8 = 0x00c3
0000C2 495 _U1RB8 = 0x00c2
0000C1 496 _U1TI = 0x00c1
0000C0 497 _U1RI = 0x00c0
000087 498 _CMPO = 0x0087
000086 499 _CMP_IF = 0x0086
000085 500 _ADC_IF = 0x0085
000084 501 _ADC_START = 0x0084
000083 502 _CMP_CHAN = 0x0083
000081 503 _ADC_CHAN1 = 0x0081
000080 504 _ADC_CHAN0 = 0x0080
0000DF 505 _U_IS_NAK = 0x00df
0000DE 506 _U_TOG_OK = 0x00de
0000DD 507 _U_SIE_FREE = 0x00dd
0000DC 508 _UIF_FIFO_OV = 0x00dc
0000DB 509 _UIF_HST_SOF = 0x00db
0000DA 510 _UIF_SUSPEND = 0x00da
0000D9 511 _UIF_TRANSFER = 0x00d9
0000D8 512 _UIF_DETECT = 0x00d8
0000D8 513 _UIF_BUS_RST = 0x00d8
000090 514 _PP10 = 0x0090
000091 515 _PP11 = 0x0091
000092 516 _PP12 = 0x0092
000093 517 _PP13 = 0x0093
000094 518 _PP14 = 0x0094
000095 519 _PP15 = 0x0095
000096 520 _PP16 = 0x0096
000097 521 _PP17 = 0x0097
0000B0 522 _PP30 = 0x00b0
0000B1 523 _PP31 = 0x00b1
0000B2 524 _PP32 = 0x00b2
0000B3 525 _PP33 = 0x00b3
0000B4 526 _PP34 = 0x00b4
0000B5 527 _PP35 = 0x00b5
0000B6 528 _PP36 = 0x00b6
0000B7 529 _PP37 = 0x00b7
530 ;--------------------------------------------------------
531 ; overlayable register banks
532 ;--------------------------------------------------------
533 .area REG_BANK_0 (REL,OVR,DATA)
000000 534 .ds 8
535 ;--------------------------------------------------------
536 ; overlayable bit register bank
537 ;--------------------------------------------------------
538 .area BIT_BANK (REL,OVR,DATA)
000021 539 bits:
000021 540 .ds 1
008000 541 b0 = bits[0]
008100 542 b1 = bits[1]
008200 543 b2 = bits[2]
008300 544 b3 = bits[3]
008400 545 b4 = bits[4]
008500 546 b5 = bits[5]
008600 547 b6 = bits[6]
008700 548 b7 = bits[7]
549 ;--------------------------------------------------------
550 ; internal ram data
551 ;--------------------------------------------------------
552 .area DSEG (DATA)
553 ;--------------------------------------------------------
554 ; overlayable items in internal ram
555 ;--------------------------------------------------------
556 ;--------------------------------------------------------
557 ; Stack segment in internal ram
558 ;--------------------------------------------------------
559 .area SSEG
000065 560 __start__stack:
000065 561 .ds 1
562
563 ;--------------------------------------------------------
564 ; indirectly addressable internal ram data
565 ;--------------------------------------------------------
566 .area ISEG (DATA)
567 ;--------------------------------------------------------
568 ; absolute internal ram data
569 ;--------------------------------------------------------
570 .area IABS (ABS,DATA)
571 .area IABS (ABS,DATA)
572 ;--------------------------------------------------------
573 ; bit data
574 ;--------------------------------------------------------
575 .area BSEG (BIT)
576 ;--------------------------------------------------------
577 ; paged external ram data
578 ;--------------------------------------------------------
579 .area PSEG (PAG,XDATA)
580 ;--------------------------------------------------------
581 ; external ram data
582 ;--------------------------------------------------------
583 .area XSEG (XDATA)
584 ;--------------------------------------------------------
585 ; absolute external ram data
586 ;--------------------------------------------------------
587 .area XABS (ABS,XDATA)
588 ;--------------------------------------------------------
589 ; external initialized ram data
590 ;--------------------------------------------------------
591 .area HOME (CODE)
592 .area GSINIT0 (CODE)
593 .area GSINIT1 (CODE)
594 .area GSINIT2 (CODE)
595 .area GSINIT3 (CODE)
596 .area GSINIT4 (CODE)
597 .area GSINIT5 (CODE)
598 .area GSINIT (CODE)
599 .area GSFINAL (CODE)
600 .area CSEG (CODE)
601 ;--------------------------------------------------------
602 ; interrupt vector
603 ;--------------------------------------------------------
604 .area HOME (CODE)
000000 605 __interrupt_vect:
000000 02 00 49 [24] 606 ljmp __sdcc_gsinit_startup
000003 32 [24] 607 reti
000004 608 .ds 7
00000B 32 [24] 609 reti
00000C 610 .ds 7
000013 32 [24] 611 reti
000014 612 .ds 7
00001B 32 [24] 613 reti
00001C 614 .ds 7
000023 32 [24] 615 reti
000024 616 .ds 7
00002B 32 [24] 617 reti
00002C 618 .ds 7
000033 32 [24] 619 reti
000034 620 .ds 7
00003B 32 [24] 621 reti
00003C 622 .ds 7
000043 02 00 C3 [24] 623 ljmp _USB_ISR
624 ;--------------------------------------------------------
625 ; global & static initialisations
626 ;--------------------------------------------------------
627 .area HOME (CODE)
628 .area GSINIT (CODE)
629 .area GSFINAL (CODE)
630 .area GSINIT (CODE)
631 .globl __sdcc_gsinit_startup
632 .globl __sdcc_program_startup
633 .globl __start__stack
634 .globl __mcs51_genRAMCLEAR
635 .area GSFINAL (CODE)
000066 02 00 46 [24] 636 ljmp __sdcc_program_startup
637 ;--------------------------------------------------------
638 ; Home
639 ;--------------------------------------------------------
640 .area HOME (CODE)
641 .area HOME (CODE)
000046 642 __sdcc_program_startup:
000046 02 01 02 [24] 643 ljmp _main
644 ; return from main will return to caller
645 ;--------------------------------------------------------
646 ; code
647 ;--------------------------------------------------------
648 .area CSEG (CODE)
649 ;------------------------------------------------------------
650 ;Allocation info for local variables in function 'ring_probe_enable'
651 ;------------------------------------------------------------
652 ;saved_ea Allocated to registers r7
653 ;------------------------------------------------------------
654 ; picodap.c:62: void ring_probe_enable(void) __reentrant {
655 ; -----------------------------------------
656 ; function ring_probe_enable
657 ; -----------------------------------------
000069 658 _ring_probe_enable:
000007 659 ar7 = 0x07
000006 660 ar6 = 0x06
000005 661 ar5 = 0x05
000004 662 ar4 = 0x04
000003 663 ar3 = 0x03
000002 664 ar2 = 0x02
000001 665 ar1 = 0x01
000000 666 ar0 = 0x00
667 ; picodap.c:63: uint8_t saved_ea = EA;
000069 A2 AF [12] 668 mov c,_EA
00006B E4 [12] 669 clr a
00006C 33 [12] 670 rlc a
00006D FF [12] 671 mov r7,a
672 ; picodap.c:64: EA = 0;
673 ; assignBit
00006E C2 AF [12] 674 clr _EA
675 ; picodap.c:65: if(USB_ENUM_OK && !(USB_MIS_ST & bUMS_SUSPEND)) PIN_high(PIN_XLAT_EN);
000070 30 01 09 [24] 676 jnb _USB_ENUM_OK,00102$
000073 E5 DA [12] 677 mov a,_USB_MIS_ST
000075 20 E2 04 [24] 678 jb acc.2,00102$
679 ; assignBit
000078 D2 94 [12] 680 setb _PP14
00007A 80 02 [24] 681 sjmp 00103$
00007C 682 00102$:
683 ; picodap.c:66: else PIN_low(PIN_XLAT_EN);
684 ; assignBit
00007C C2 94 [12] 685 clr _PP14
00007E 686 00103$:
687 ; picodap.c:67: EA = saved_ea;
688 ; assignBit
00007E EF [12] 689 mov a,r7
00007F 24 FF [12] 690 add a,#0xff
000081 92 AF [24] 691 mov _EA,c
692 ; picodap.c:68: }
000083 22 [24] 693 ret
694 ;------------------------------------------------------------
695 ;Allocation info for local variables in function 'ring_probe_reset'
696 ;------------------------------------------------------------
697 ;value Allocated to registers r7
698 ;saved_ea Allocated to registers r6
699 ;------------------------------------------------------------
700 ; picodap.c:69: void ring_probe_reset(uint8_t value) __reentrant {
701 ; -----------------------------------------
702 ; function ring_probe_reset
703 ; -----------------------------------------
000084 704 _ring_probe_reset:
000084 AF 82 [24] 705 mov r7,dpl
706 ; picodap.c:70: uint8_t saved_ea = EA;
000086 A2 AF [12] 707 mov c,_EA
000088 E4 [12] 708 clr a
000089 33 [12] 709 rlc a
00008A FE [12] 710 mov r6,a
711 ; picodap.c:71: EA = 0;
712 ; assignBit
00008B C2 AF [12] 713 clr _EA
714 ; picodap.c:72: if(USB_ENUM_OK && !(USB_MIS_ST & bUMS_SUSPEND)) PIN_write(PIN_RST, !(value & 1));
00008D 30 01 16 [24] 715 jnb _USB_ENUM_OK,00102$
000090 E5 DA [12] 716 mov a,_USB_MIS_ST
000092 20 E2 11 [24] 717 jb acc.2,00102$
000095 EF [12] 718 mov a,r7
000096 54 01 [12] 719 anl a,#0x01
000098 FF [12] 720 mov r7,a
000099 B4 01 00 [24] 721 cjne a,#0x01,00117$
00009C 722 00117$:
00009C 92 08 [24] 723 mov b0,c
00009E E4 [12] 724 clr a
00009F 33 [12] 725 rlc a
0000A0 24 FF [12] 726 add a,#0xff
0000A2 92 97 [24] 727 mov _PP17,c
0000A4 80 02 [24] 728 sjmp 00103$
0000A6 729 00102$:
730 ; picodap.c:73: else PIN_low(PIN_RST); // USB loss always releases the external reset sink.
731 ; assignBit
0000A6 C2 97 [12] 732 clr _PP17
0000A8 733 00103$:
734 ; picodap.c:74: EA = saved_ea;
735 ; assignBit
0000A8 EE [12] 736 mov a,r6
0000A9 24 FF [12] 737 add a,#0xff
0000AB 92 AF [24] 738 mov _EA,c
739 ; picodap.c:75: }
0000AD 22 [24] 740 ret
741 ;------------------------------------------------------------
742 ;Allocation info for local variables in function 'ring_probe_release'
743 ;------------------------------------------------------------
744 ; picodap.c:76: void ring_probe_release(void) { PORT_SWD_DISCONNECT(); }
745 ; -----------------------------------------
746 ; function ring_probe_release
747 ; -----------------------------------------
0000AE 748 _ring_probe_release:
749 ; assignBit
0000AE C2 94 [12] 750 clr _PP14
0000B0 75 82 01 [24] 751 mov dpl,#0x01
0000B3 12 00 84 [24] 752 lcall _ring_probe_reset
0000B6 53 93 DF [24] 753 anl _P1_DIR_PU,#0xdf
0000B9 53 92 DF [24] 754 anl _P1_MOD_OC,#0xdf
0000BC 53 93 BF [24] 755 anl _P1_DIR_PU,#0xbf
0000BF 53 92 BF [24] 756 anl _P1_MOD_OC,#0xbf
0000C2 22 [24] 757 ret
758 ;------------------------------------------------------------
759 ;Allocation info for local variables in function 'USB_ISR'
760 ;------------------------------------------------------------
761 ; picodap.c:80: void USB_ISR(void) __interrupt(INT_NO_USB) {
762 ; -----------------------------------------
763 ; function USB_ISR
764 ; -----------------------------------------
0000C3 765 _USB_ISR:
0000C3 C0 21 [24] 766 push bits
0000C5 C0 E0 [24] 767 push acc
0000C7 C0 F0 [24] 768 push b
0000C9 C0 82 [24] 769 push dpl
0000CB C0 83 [24] 770 push dph
0000CD C0 07 [24] 771 push (0+7)
0000CF C0 06 [24] 772 push (0+6)
0000D1 C0 05 [24] 773 push (0+5)
0000D3 C0 04 [24] 774 push (0+4)
0000D5 C0 03 [24] 775 push (0+3)
0000D7 C0 02 [24] 776 push (0+2)
0000D9 C0 01 [24] 777 push (0+1)
0000DB C0 00 [24] 778 push (0+0)
0000DD C0 D0 [24] 779 push psw
0000DF 75 D0 00 [24] 780 mov psw,#0x00
781 ; picodap.c:81: USB_interrupt();
0000E2 12 17 A8 [24] 782 lcall _USB_interrupt
783 ; picodap.c:82: }
0000E5 D0 D0 [24] 784 pop psw
0000E7 D0 00 [24] 785 pop (0+0)
0000E9 D0 01 [24] 786 pop (0+1)
0000EB D0 02 [24] 787 pop (0+2)
0000ED D0 03 [24] 788 pop (0+3)
0000EF D0 04 [24] 789 pop (0+4)
0000F1 D0 05 [24] 790 pop (0+5)
0000F3 D0 06 [24] 791 pop (0+6)
0000F5 D0 07 [24] 792 pop (0+7)
0000F7 D0 83 [24] 793 pop dph
0000F9 D0 82 [24] 794 pop dpl
0000FB D0 F0 [24] 795 pop b
0000FD D0 E0 [24] 796 pop acc
0000FF D0 21 [24] 797 pop bits
000101 32 [24] 798 reti
799 ;------------------------------------------------------------
800 ;Allocation info for local variables in function 'main'
801 ;------------------------------------------------------------
802 ; picodap.c:91: void main(void) {
803 ; -----------------------------------------
804 ; function main
805 ; -----------------------------------------
000102 806 _main:
807 ; src/system.h:84: SAFE_MOD = 0x55;
000102 75 A1 55 [24] 808 mov _SAFE_MOD,#0x55
809 ; src/system.h:85: SAFE_MOD = 0xAA; // enter safe mode
000105 75 A1 AA [24] 810 mov _SAFE_MOD,#0xaa
811 ; src/system.h:93: __asm__("anl _CLOCK_CFG, #0b11111000");
000108 53 B9 F8 [24] 812 anl _CLOCK_CFG, #0b11111000
813 ; src/system.h:94: __asm__("orl _CLOCK_CFG, #0b00000101"); // 16MHz
00010B 43 B9 05 [24] 814 orl _CLOCK_CFG, #0b00000101
815 ; src/system.h:113: SAFE_MOD = 0x00; // terminate safe mode
00010E 75 A1 00 [24] 816 mov _SAFE_MOD,#0x00
817 ; picodap.c:94: DLY_ms(10); // wait for clock to settle
000111 90 00 0A [24] 818 mov dptr,#0x000a
000114 12 14 84 [24] 819 lcall _DLY_ms
820 ; picodap.c:95: DAP_init(); // init CMSIS-DAP
000117 12 14 B1 [24] 821 lcall _USB_init
822 ; assignBit
00011A C2 94 [12] 823 clr _PP14
00011C 53 92 EF [24] 824 anl _P1_MOD_OC,#0xef
00011F 43 93 10 [24] 825 orl _P1_DIR_PU,#0x10
826 ; assignBit
000122 C2 97 [12] 827 clr _PP17
000124 53 92 7F [24] 828 anl _P1_MOD_OC,#0x7f
000127 43 93 80 [24] 829 orl _P1_DIR_PU,#0x80
00012A 53 93 DF [24] 830 anl _P1_DIR_PU,#0xdf
00012D 53 92 DF [24] 831 anl _P1_MOD_OC,#0xdf
000130 53 93 BF [24] 832 anl _P1_DIR_PU,#0xbf
000133 53 92 BF [24] 833 anl _P1_MOD_OC,#0xbf
834 ; picodap.c:98: while(1) {
000136 835 00108$:
836 ; picodap.c:99: if(HID_readByteCount && !HID_writeBusyFlag) { // DAP packet transmitted & received?
000136 90 01 04 [24] 837 mov dptr,#_HID_readByteCount
000139 E0 [24] 838 movx a,@dptr
00013A 60 FA [24] 839 jz 00108$
00013C 20 04 F7 [24] 840 jb _HID_writeBusyFlag,00108$
841 ; picodap.c:100: DAP_Thread(); // handle DAP packet
00013F 12 12 6E [24] 842 lcall _DAP_Thread
843 ; picodap.c:101: HID_readByteCount = 0; // clear byte counter
000142 90 01 04 [24] 844 mov dptr,#_HID_readByteCount
000145 E4 [12] 845 clr a
000146 F0 [24] 846 movx @dptr,a
847 ; picodap.c:102: HID_writeBusyFlag = 1; // set write busy flag
848 ; assignBit
000147 D2 04 [12] 849 setb _HID_writeBusyFlag
850 ; picodap.c:103: UEP1_T_LEN = 64; // send 64 bytes
000149 75 D3 40 [24] 851 mov _UEP1_T_LEN,#0x40
852 ; picodap.c:104: UEP1_CTRL &= ~(MASK_UEP_R_RES | MASK_UEP_T_RES); // send & receive packet
00014C 53 D2 F0 [24] 853 anl _UEP1_CTRL,#0xf0
854 ; picodap.c:107: }
00014F 80 E5 [24] 855 sjmp 00108$
856 .area CSEG (CODE)
857 .area CONST (CODE)
858 .area CABS (ABS,CODE)