1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-07-01 17:33:15 +00:00
gnss-sdr/firmware/GN3S_v2/lib/usb_common.lst
Javier Arribas b849b20a8c Added optional support for Sparkfun SiGe GN3S USB GPS RF sampler:
- Added a pre-compiled custom GN3S firmware.
- Added a fully-compliant GNU Radio source block for GN3S USB dongle. It can be used also from GNU Radio companion and from Python applications.
- Added a new GN3S_Signal_Source block. It is possible to disable the GN3S signal source compilation. See README.

git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@217 64b25241-fba3-4117-9849-534c7e92360d
2012-07-30 15:46:07 +00:00

1596 lines
84 KiB
Plaintext

1 ;--------------------------------------------------------
2 ; File Created by SDCC : free open source ANSI-C Compiler
3 ; Version 2.9.0 #5416 (Feb 3 2010) (UNIX)
4 ; This file was generated Mon Jul 30 11:40:53 2012
5 ;--------------------------------------------------------
6 .module usb_common
7 .optsdcc -mmcs51 --model-small
8
9 ;--------------------------------------------------------
10 ; Public variables in this module
11 ;--------------------------------------------------------
12 .globl _epcs
13 .globl _plausible_endpoint
14 .globl _EIPX6
15 .globl _EIPX5
16 .globl _EIPX4
17 .globl _PI2C
18 .globl _PUSB
19 .globl _EIEX6
20 .globl _EIEX5
21 .globl _EIEX4
22 .globl _EI2C
23 .globl _EIUSB
24 .globl _SMOD1
25 .globl _ERESI
26 .globl _RESI
27 .globl _INT6
28 .globl _CY
29 .globl _AC
30 .globl _F0
31 .globl _RS1
32 .globl _RS0
33 .globl _OV
34 .globl _FL
35 .globl _P
36 .globl _TF2
37 .globl _EXF2
38 .globl _RCLK
39 .globl _TCLK
40 .globl _EXEN2
41 .globl _TR2
42 .globl _C_T2
43 .globl _CP_RL2
44 .globl _SM01
45 .globl _SM11
46 .globl _SM21
47 .globl _REN1
48 .globl _TB81
49 .globl _RB81
50 .globl _TI1
51 .globl _RI1
52 .globl _PS1
53 .globl _PT2
54 .globl _PS0
55 .globl _PT1
56 .globl _PX1
57 .globl _PT0
58 .globl _PX0
59 .globl _D7
60 .globl _D6
61 .globl _D5
62 .globl _D4
63 .globl _D3
64 .globl _D2
65 .globl _D1
66 .globl _D0
67 .globl _EA
68 .globl _ES1
69 .globl _ET2
70 .globl _ES0
71 .globl _ET1
72 .globl _EX1
73 .globl _ET0
74 .globl _EX0
75 .globl _SM0
76 .globl _SM1
77 .globl _SM2
78 .globl _REN
79 .globl _TB8
80 .globl _RB8
81 .globl _TI
82 .globl _RI
83 .globl _TF1
84 .globl _TR1
85 .globl _TF0
86 .globl _TR0
87 .globl _IE1
88 .globl _IT1
89 .globl _IE0
90 .globl _IT0
91 .globl _SEL
92 .globl _A7
93 .globl _A6
94 .globl _A5
95 .globl _A4
96 .globl _A3
97 .globl _A2
98 .globl _A1
99 .globl _A0
100 .globl _EIP
101 .globl _B
102 .globl _EIE
103 .globl _ACC
104 .globl _EICON
105 .globl _PSW
106 .globl _TH2
107 .globl _TL2
108 .globl _RCAP2H
109 .globl _RCAP2L
110 .globl _T2CON
111 .globl _SBUF1
112 .globl _SCON1
113 .globl _GPIFSGLDATLNOX
114 .globl _GPIFSGLDATLX
115 .globl _GPIFSGLDATH
116 .globl _GPIFTRIG
117 .globl _EP01STAT
118 .globl _IP
119 .globl _OEE
120 .globl _OED
121 .globl _OEC
122 .globl _OEB
123 .globl _OEA
124 .globl _IOE
125 .globl _IOD
126 .globl _AUTOPTRSETUP
127 .globl _EP68FIFOFLGS
128 .globl _EP24FIFOFLGS
129 .globl _EP2468STAT
130 .globl _IE
131 .globl _INT4CLR
132 .globl _INT2CLR
133 .globl _IOC
134 .globl _AUTODAT2
135 .globl _AUTOPTRL2
136 .globl _AUTOPTRH2
137 .globl _AUTODAT1
138 .globl _APTR1L
139 .globl _APTR1H
140 .globl _SBUF0
141 .globl _SCON0
142 .globl _MPAGE
143 .globl _EXIF
144 .globl _IOB
145 .globl _CKCON
146 .globl _TH1
147 .globl _TH0
148 .globl _TL1
149 .globl _TL0
150 .globl _TMOD
151 .globl _TCON
152 .globl _PCON
153 .globl _DPS
154 .globl _DPH1
155 .globl _DPL1
156 .globl _DPH
157 .globl _DPL
158 .globl _SP
159 .globl _IOA
160 .globl _EP8FIFOBUF
161 .globl _EP6FIFOBUF
162 .globl _EP4FIFOBUF
163 .globl _EP2FIFOBUF
164 .globl _EP1INBUF
165 .globl _EP1OUTBUF
166 .globl _EP0BUF
167 .globl _CT4
168 .globl _CT3
169 .globl _CT2
170 .globl _CT1
171 .globl _USBTEST
172 .globl _TESTCFG
173 .globl _DBUG
174 .globl _UDMACRCQUAL
175 .globl _UDMACRCL
176 .globl _UDMACRCH
177 .globl _GPIFHOLDAMOUNT
178 .globl _FLOWSTBHPERIOD
179 .globl _FLOWSTBEDGE
180 .globl _FLOWSTB
181 .globl _FLOWHOLDOFF
182 .globl _FLOWEQ1CTL
183 .globl _FLOWEQ0CTL
184 .globl _FLOWLOGIC
185 .globl _FLOWSTATE
186 .globl _GPIFABORT
187 .globl _GPIFREADYSTAT
188 .globl _GPIFREADYCFG
189 .globl _XGPIFSGLDATLNOX
190 .globl _XGPIFSGLDATLX
191 .globl _XGPIFSGLDATH
192 .globl _EP8GPIFTRIG
193 .globl _EP8GPIFPFSTOP
194 .globl _EP8GPIFFLGSEL
195 .globl _EP6GPIFTRIG
196 .globl _EP6GPIFPFSTOP
197 .globl _EP6GPIFFLGSEL
198 .globl _EP4GPIFTRIG
199 .globl _EP4GPIFPFSTOP
200 .globl _EP4GPIFFLGSEL
201 .globl _EP2GPIFTRIG
202 .globl _EP2GPIFPFSTOP
203 .globl _EP2GPIFFLGSEL
204 .globl _GPIFTCB0
205 .globl _GPIFTCB1
206 .globl _GPIFTCB2
207 .globl _GPIFTCB3
208 .globl _GPIFADRL
209 .globl _GPIFADRH
210 .globl _GPIFCTLCFG
211 .globl _GPIFIDLECTL
212 .globl _GPIFIDLECS
213 .globl _GPIFWFSELECT
214 .globl _SETUPDAT
215 .globl _SUDPTRCTL
216 .globl _SUDPTRL
217 .globl _SUDPTRH
218 .globl _EP8FIFOBCL
219 .globl _EP8FIFOBCH
220 .globl _EP6FIFOBCL
221 .globl _EP6FIFOBCH
222 .globl _EP4FIFOBCL
223 .globl _EP4FIFOBCH
224 .globl _EP2FIFOBCL
225 .globl _EP2FIFOBCH
226 .globl _EP8FIFOFLGS
227 .globl _EP6FIFOFLGS
228 .globl _EP4FIFOFLGS
229 .globl _EP2FIFOFLGS
230 .globl _EP8CS
231 .globl _EP6CS
232 .globl _EP4CS
233 .globl _EP2CS
234 .globl _EP1INCS
235 .globl _EP1OUTCS
236 .globl _EP0CS
237 .globl _EP8BCL
238 .globl _EP8BCH
239 .globl _EP6BCL
240 .globl _EP6BCH
241 .globl _EP4BCL
242 .globl _EP4BCH
243 .globl _EP2BCL
244 .globl _EP2BCH
245 .globl _EP1INBC
246 .globl _EP1OUTBC
247 .globl _EP0BCL
248 .globl _EP0BCH
249 .globl _FNADDR
250 .globl _MICROFRAME
251 .globl _USBFRAMEL
252 .globl _USBFRAMEH
253 .globl _TOGCTL
254 .globl _WAKEUPCS
255 .globl _SUSPEND
256 .globl _USBCS
257 .globl _XAUTODAT2
258 .globl _XAUTODAT1
259 .globl _I2CTL
260 .globl _I2DAT
261 .globl _I2CS
262 .globl _PORTECFG
263 .globl _PORTCCFG
264 .globl _PORTACFG
265 .globl _INTSETUP
266 .globl _INT4IVEC
267 .globl _INT2IVEC
268 .globl _CLRERRCNT
269 .globl _ERRCNTLIM
270 .globl _USBERRIRQ
271 .globl _USBERRIE
272 .globl _GPIFIRQ
273 .globl _GPIFIE
274 .globl _EPIRQ
275 .globl _EPIE
276 .globl _USBIRQ
277 .globl _USBIE
278 .globl _NAKIRQ
279 .globl _NAKIE
280 .globl _IBNIRQ
281 .globl _IBNIE
282 .globl _EP8FIFOIRQ
283 .globl _EP8FIFOIE
284 .globl _EP6FIFOIRQ
285 .globl _EP6FIFOIE
286 .globl _EP4FIFOIRQ
287 .globl _EP4FIFOIE
288 .globl _EP2FIFOIRQ
289 .globl _EP2FIFOIE
290 .globl _OUTPKTEND
291 .globl _INPKTEND
292 .globl _EP8ISOINPKTS
293 .globl _EP6ISOINPKTS
294 .globl _EP4ISOINPKTS
295 .globl _EP2ISOINPKTS
296 .globl _EP8FIFOPFL
297 .globl _EP8FIFOPFH
298 .globl _EP6FIFOPFL
299 .globl _EP6FIFOPFH
300 .globl _EP4FIFOPFL
301 .globl _EP4FIFOPFH
302 .globl _EP2FIFOPFL
303 .globl _EP2FIFOPFH
304 .globl _EP8AUTOINLENL
305 .globl _EP8AUTOINLENH
306 .globl _EP6AUTOINLENL
307 .globl _EP6AUTOINLENH
308 .globl _EP4AUTOINLENL
309 .globl _EP4AUTOINLENH
310 .globl _EP2AUTOINLENL
311 .globl _EP2AUTOINLENH
312 .globl _EP8FIFOCFG
313 .globl _EP6FIFOCFG
314 .globl _EP4FIFOCFG
315 .globl _EP2FIFOCFG
316 .globl _EP8CFG
317 .globl _EP6CFG
318 .globl _EP4CFG
319 .globl _EP2CFG
320 .globl _EP1INCFG
321 .globl _EP1OUTCFG
322 .globl _REVCTL
323 .globl _REVID
324 .globl _FIFOPINPOLAR
325 .globl _UART230
326 .globl _BPADDRL
327 .globl _BPADDRH
328 .globl _BREAKPT
329 .globl _FIFORESET
330 .globl _PINFLAGSCD
331 .globl _PINFLAGSAB
332 .globl _IFCONFIG
333 .globl _CPUCS
334 .globl _RES_WAVEDATA_END
335 .globl _GPIF_WAVE_DATA
336 .globl __usb_rx_overrun
337 .globl __usb_got_SUDAV
338 .globl _other_config_descr
339 .globl _current_config_descr
340 .globl _current_devqual_descr
341 .globl _current_device_descr
342 .globl __usb_alt_setting
343 .globl __usb_config
344 .globl _usb_install_handlers
345 .globl _usb_handle_setup_packet
346 ;--------------------------------------------------------
347 ; special function registers
348 ;--------------------------------------------------------
349 .area RSEG (DATA)
0080 350 _IOA = 0x0080
0081 351 _SP = 0x0081
0082 352 _DPL = 0x0082
0083 353 _DPH = 0x0083
0084 354 _DPL1 = 0x0084
0085 355 _DPH1 = 0x0085
0086 356 _DPS = 0x0086
0087 357 _PCON = 0x0087
0088 358 _TCON = 0x0088
0089 359 _TMOD = 0x0089
008A 360 _TL0 = 0x008a
008B 361 _TL1 = 0x008b
008C 362 _TH0 = 0x008c
008D 363 _TH1 = 0x008d
008E 364 _CKCON = 0x008e
0090 365 _IOB = 0x0090
0091 366 _EXIF = 0x0091
0092 367 _MPAGE = 0x0092
0098 368 _SCON0 = 0x0098
0099 369 _SBUF0 = 0x0099
009A 370 _APTR1H = 0x009a
009B 371 _APTR1L = 0x009b
009C 372 _AUTODAT1 = 0x009c
009D 373 _AUTOPTRH2 = 0x009d
009E 374 _AUTOPTRL2 = 0x009e
009F 375 _AUTODAT2 = 0x009f
00A0 376 _IOC = 0x00a0
00A1 377 _INT2CLR = 0x00a1
00A2 378 _INT4CLR = 0x00a2
00A8 379 _IE = 0x00a8
00AA 380 _EP2468STAT = 0x00aa
00AB 381 _EP24FIFOFLGS = 0x00ab
00AC 382 _EP68FIFOFLGS = 0x00ac
00AF 383 _AUTOPTRSETUP = 0x00af
00B0 384 _IOD = 0x00b0
00B1 385 _IOE = 0x00b1
00B2 386 _OEA = 0x00b2
00B3 387 _OEB = 0x00b3
00B4 388 _OEC = 0x00b4
00B5 389 _OED = 0x00b5
00B6 390 _OEE = 0x00b6
00B8 391 _IP = 0x00b8
00BA 392 _EP01STAT = 0x00ba
00BB 393 _GPIFTRIG = 0x00bb
00BD 394 _GPIFSGLDATH = 0x00bd
00BE 395 _GPIFSGLDATLX = 0x00be
00BF 396 _GPIFSGLDATLNOX = 0x00bf
00C0 397 _SCON1 = 0x00c0
00C1 398 _SBUF1 = 0x00c1
00C8 399 _T2CON = 0x00c8
00CA 400 _RCAP2L = 0x00ca
00CB 401 _RCAP2H = 0x00cb
00CC 402 _TL2 = 0x00cc
00CD 403 _TH2 = 0x00cd
00D0 404 _PSW = 0x00d0
00D8 405 _EICON = 0x00d8
00E0 406 _ACC = 0x00e0
00E8 407 _EIE = 0x00e8
00F0 408 _B = 0x00f0
00F8 409 _EIP = 0x00f8
410 ;--------------------------------------------------------
411 ; special function bits
412 ;--------------------------------------------------------
413 .area RSEG (DATA)
0080 414 _A0 = 0x0080
0081 415 _A1 = 0x0081
0082 416 _A2 = 0x0082
0083 417 _A3 = 0x0083
0084 418 _A4 = 0x0084
0085 419 _A5 = 0x0085
0086 420 _A6 = 0x0086
0087 421 _A7 = 0x0087
0086 422 _SEL = 0x0086
0088 423 _IT0 = 0x0088
0089 424 _IE0 = 0x0089
008A 425 _IT1 = 0x008a
008B 426 _IE1 = 0x008b
008C 427 _TR0 = 0x008c
008D 428 _TF0 = 0x008d
008E 429 _TR1 = 0x008e
008F 430 _TF1 = 0x008f
0098 431 _RI = 0x0098
0099 432 _TI = 0x0099
009A 433 _RB8 = 0x009a
009B 434 _TB8 = 0x009b
009C 435 _REN = 0x009c
009D 436 _SM2 = 0x009d
009E 437 _SM1 = 0x009e
009F 438 _SM0 = 0x009f
00A8 439 _EX0 = 0x00a8
00A9 440 _ET0 = 0x00a9
00AA 441 _EX1 = 0x00aa
00AB 442 _ET1 = 0x00ab
00AC 443 _ES0 = 0x00ac
00AD 444 _ET2 = 0x00ad
00AE 445 _ES1 = 0x00ae
00AF 446 _EA = 0x00af
00B0 447 _D0 = 0x00b0
00B1 448 _D1 = 0x00b1
00B2 449 _D2 = 0x00b2
00B3 450 _D3 = 0x00b3
00B4 451 _D4 = 0x00b4
00B5 452 _D5 = 0x00b5
00B6 453 _D6 = 0x00b6
00B7 454 _D7 = 0x00b7
00B8 455 _PX0 = 0x00b8
00B9 456 _PT0 = 0x00b9
00BA 457 _PX1 = 0x00ba
00BB 458 _PT1 = 0x00bb
00BC 459 _PS0 = 0x00bc
00BD 460 _PT2 = 0x00bd
00BE 461 _PS1 = 0x00be
00C0 462 _RI1 = 0x00c0
00C1 463 _TI1 = 0x00c1
00C2 464 _RB81 = 0x00c2
00C3 465 _TB81 = 0x00c3
00C4 466 _REN1 = 0x00c4
00C5 467 _SM21 = 0x00c5
00C6 468 _SM11 = 0x00c6
00C7 469 _SM01 = 0x00c7
00C8 470 _CP_RL2 = 0x00c8
00C9 471 _C_T2 = 0x00c9
00CA 472 _TR2 = 0x00ca
00CB 473 _EXEN2 = 0x00cb
00CC 474 _TCLK = 0x00cc
00CD 475 _RCLK = 0x00cd
00CE 476 _EXF2 = 0x00ce
00CF 477 _TF2 = 0x00cf
00D0 478 _P = 0x00d0
00D1 479 _FL = 0x00d1
00D2 480 _OV = 0x00d2
00D3 481 _RS0 = 0x00d3
00D4 482 _RS1 = 0x00d4
00D5 483 _F0 = 0x00d5
00D6 484 _AC = 0x00d6
00D7 485 _CY = 0x00d7
00DB 486 _INT6 = 0x00db
00DC 487 _RESI = 0x00dc
00DD 488 _ERESI = 0x00dd
00DF 489 _SMOD1 = 0x00df
00E8 490 _EIUSB = 0x00e8
00E9 491 _EI2C = 0x00e9
00EA 492 _EIEX4 = 0x00ea
00EB 493 _EIEX5 = 0x00eb
00EC 494 _EIEX6 = 0x00ec
00F8 495 _PUSB = 0x00f8
00F9 496 _PI2C = 0x00f9
00FA 497 _EIPX4 = 0x00fa
00FB 498 _EIPX5 = 0x00fb
00FC 499 _EIPX6 = 0x00fc
500 ;--------------------------------------------------------
501 ; overlayable register banks
502 ;--------------------------------------------------------
503 .area REG_BANK_0 (REL,OVR,DATA)
0000 504 .ds 8
505 ;--------------------------------------------------------
506 ; overlayable bit register bank
507 ;--------------------------------------------------------
508 .area BIT_BANK (REL,OVR,DATA)
0000 509 bits:
0000 510 .ds 1
8000 511 b0 = bits[0]
8100 512 b1 = bits[1]
8200 513 b2 = bits[2]
8300 514 b3 = bits[3]
8400 515 b4 = bits[4]
8500 516 b5 = bits[5]
8600 517 b6 = bits[6]
8700 518 b7 = bits[7]
519 ;--------------------------------------------------------
520 ; internal ram data
521 ;--------------------------------------------------------
522 .area DSEG (DATA)
0000 523 __usb_config::
0000 524 .ds 1
0001 525 __usb_alt_setting::
0001 526 .ds 1
0002 527 _current_device_descr::
0002 528 .ds 2
0004 529 _current_devqual_descr::
0004 530 .ds 2
0006 531 _current_config_descr::
0006 532 .ds 2
0008 533 _other_config_descr::
0008 534 .ds 2
535 ;--------------------------------------------------------
536 ; overlayable items in internal ram
537 ;--------------------------------------------------------
538 .area OSEG (OVR,DATA)
539 .area OSEG (OVR,DATA)
540 ;--------------------------------------------------------
541 ; indirectly addressable internal ram data
542 ;--------------------------------------------------------
543 .area ISEG (DATA)
544 ;--------------------------------------------------------
545 ; absolute internal ram data
546 ;--------------------------------------------------------
547 .area IABS (ABS,DATA)
548 .area IABS (ABS,DATA)
549 ;--------------------------------------------------------
550 ; bit data
551 ;--------------------------------------------------------
552 .area BSEG (BIT)
0000 553 __usb_got_SUDAV::
0000 554 .ds 1
0001 555 __usb_rx_overrun::
0001 556 .ds 1
557 ;--------------------------------------------------------
558 ; paged external ram data
559 ;--------------------------------------------------------
560 .area PSEG (PAG,XDATA)
561 ;--------------------------------------------------------
562 ; external ram data
563 ;--------------------------------------------------------
564 .area XSEG (XDATA)
E400 565 _GPIF_WAVE_DATA = 0xe400
E480 566 _RES_WAVEDATA_END = 0xe480
E600 567 _CPUCS = 0xe600
E601 568 _IFCONFIG = 0xe601
E602 569 _PINFLAGSAB = 0xe602
E603 570 _PINFLAGSCD = 0xe603
E604 571 _FIFORESET = 0xe604
E605 572 _BREAKPT = 0xe605
E606 573 _BPADDRH = 0xe606
E607 574 _BPADDRL = 0xe607
E608 575 _UART230 = 0xe608
E609 576 _FIFOPINPOLAR = 0xe609
E60A 577 _REVID = 0xe60a
E60B 578 _REVCTL = 0xe60b
E610 579 _EP1OUTCFG = 0xe610
E611 580 _EP1INCFG = 0xe611
E612 581 _EP2CFG = 0xe612
E613 582 _EP4CFG = 0xe613
E614 583 _EP6CFG = 0xe614
E615 584 _EP8CFG = 0xe615
E618 585 _EP2FIFOCFG = 0xe618
E619 586 _EP4FIFOCFG = 0xe619
E61A 587 _EP6FIFOCFG = 0xe61a
E61B 588 _EP8FIFOCFG = 0xe61b
E620 589 _EP2AUTOINLENH = 0xe620
E621 590 _EP2AUTOINLENL = 0xe621
E622 591 _EP4AUTOINLENH = 0xe622
E623 592 _EP4AUTOINLENL = 0xe623
E624 593 _EP6AUTOINLENH = 0xe624
E625 594 _EP6AUTOINLENL = 0xe625
E626 595 _EP8AUTOINLENH = 0xe626
E627 596 _EP8AUTOINLENL = 0xe627
E630 597 _EP2FIFOPFH = 0xe630
E631 598 _EP2FIFOPFL = 0xe631
E632 599 _EP4FIFOPFH = 0xe632
E633 600 _EP4FIFOPFL = 0xe633
E634 601 _EP6FIFOPFH = 0xe634
E635 602 _EP6FIFOPFL = 0xe635
E636 603 _EP8FIFOPFH = 0xe636
E637 604 _EP8FIFOPFL = 0xe637
E640 605 _EP2ISOINPKTS = 0xe640
E641 606 _EP4ISOINPKTS = 0xe641
E642 607 _EP6ISOINPKTS = 0xe642
E643 608 _EP8ISOINPKTS = 0xe643
E648 609 _INPKTEND = 0xe648
E649 610 _OUTPKTEND = 0xe649
E650 611 _EP2FIFOIE = 0xe650
E651 612 _EP2FIFOIRQ = 0xe651
E652 613 _EP4FIFOIE = 0xe652
E653 614 _EP4FIFOIRQ = 0xe653
E654 615 _EP6FIFOIE = 0xe654
E655 616 _EP6FIFOIRQ = 0xe655
E656 617 _EP8FIFOIE = 0xe656
E657 618 _EP8FIFOIRQ = 0xe657
E658 619 _IBNIE = 0xe658
E659 620 _IBNIRQ = 0xe659
E65A 621 _NAKIE = 0xe65a
E65B 622 _NAKIRQ = 0xe65b
E65C 623 _USBIE = 0xe65c
E65D 624 _USBIRQ = 0xe65d
E65E 625 _EPIE = 0xe65e
E65F 626 _EPIRQ = 0xe65f
E660 627 _GPIFIE = 0xe660
E661 628 _GPIFIRQ = 0xe661
E662 629 _USBERRIE = 0xe662
E663 630 _USBERRIRQ = 0xe663
E664 631 _ERRCNTLIM = 0xe664
E665 632 _CLRERRCNT = 0xe665
E666 633 _INT2IVEC = 0xe666
E667 634 _INT4IVEC = 0xe667
E668 635 _INTSETUP = 0xe668
E670 636 _PORTACFG = 0xe670
E671 637 _PORTCCFG = 0xe671
E672 638 _PORTECFG = 0xe672
E678 639 _I2CS = 0xe678
E679 640 _I2DAT = 0xe679
E67A 641 _I2CTL = 0xe67a
E67B 642 _XAUTODAT1 = 0xe67b
E67C 643 _XAUTODAT2 = 0xe67c
E680 644 _USBCS = 0xe680
E681 645 _SUSPEND = 0xe681
E682 646 _WAKEUPCS = 0xe682
E683 647 _TOGCTL = 0xe683
E684 648 _USBFRAMEH = 0xe684
E685 649 _USBFRAMEL = 0xe685
E686 650 _MICROFRAME = 0xe686
E687 651 _FNADDR = 0xe687
E68A 652 _EP0BCH = 0xe68a
E68B 653 _EP0BCL = 0xe68b
E68D 654 _EP1OUTBC = 0xe68d
E68F 655 _EP1INBC = 0xe68f
E690 656 _EP2BCH = 0xe690
E691 657 _EP2BCL = 0xe691
E694 658 _EP4BCH = 0xe694
E695 659 _EP4BCL = 0xe695
E698 660 _EP6BCH = 0xe698
E699 661 _EP6BCL = 0xe699
E69C 662 _EP8BCH = 0xe69c
E69D 663 _EP8BCL = 0xe69d
E6A0 664 _EP0CS = 0xe6a0
E6A1 665 _EP1OUTCS = 0xe6a1
E6A2 666 _EP1INCS = 0xe6a2
E6A3 667 _EP2CS = 0xe6a3
E6A4 668 _EP4CS = 0xe6a4
E6A5 669 _EP6CS = 0xe6a5
E6A6 670 _EP8CS = 0xe6a6
E6A7 671 _EP2FIFOFLGS = 0xe6a7
E6A8 672 _EP4FIFOFLGS = 0xe6a8
E6A9 673 _EP6FIFOFLGS = 0xe6a9
E6AA 674 _EP8FIFOFLGS = 0xe6aa
E6AB 675 _EP2FIFOBCH = 0xe6ab
E6AC 676 _EP2FIFOBCL = 0xe6ac
E6AD 677 _EP4FIFOBCH = 0xe6ad
E6AE 678 _EP4FIFOBCL = 0xe6ae
E6AF 679 _EP6FIFOBCH = 0xe6af
E6B0 680 _EP6FIFOBCL = 0xe6b0
E6B1 681 _EP8FIFOBCH = 0xe6b1
E6B2 682 _EP8FIFOBCL = 0xe6b2
E6B3 683 _SUDPTRH = 0xe6b3
E6B4 684 _SUDPTRL = 0xe6b4
E6B5 685 _SUDPTRCTL = 0xe6b5
E6B8 686 _SETUPDAT = 0xe6b8
E6C0 687 _GPIFWFSELECT = 0xe6c0
E6C1 688 _GPIFIDLECS = 0xe6c1
E6C2 689 _GPIFIDLECTL = 0xe6c2
E6C3 690 _GPIFCTLCFG = 0xe6c3
E6C4 691 _GPIFADRH = 0xe6c4
E6C5 692 _GPIFADRL = 0xe6c5
E6CE 693 _GPIFTCB3 = 0xe6ce
E6CF 694 _GPIFTCB2 = 0xe6cf
E6D0 695 _GPIFTCB1 = 0xe6d0
E6D1 696 _GPIFTCB0 = 0xe6d1
E6D2 697 _EP2GPIFFLGSEL = 0xe6d2
E6D3 698 _EP2GPIFPFSTOP = 0xe6d3
E6D4 699 _EP2GPIFTRIG = 0xe6d4
E6DA 700 _EP4GPIFFLGSEL = 0xe6da
E6DB 701 _EP4GPIFPFSTOP = 0xe6db
E6DC 702 _EP4GPIFTRIG = 0xe6dc
E6E2 703 _EP6GPIFFLGSEL = 0xe6e2
E6E3 704 _EP6GPIFPFSTOP = 0xe6e3
E6E4 705 _EP6GPIFTRIG = 0xe6e4
E6EA 706 _EP8GPIFFLGSEL = 0xe6ea
E6EB 707 _EP8GPIFPFSTOP = 0xe6eb
E6EC 708 _EP8GPIFTRIG = 0xe6ec
E6F0 709 _XGPIFSGLDATH = 0xe6f0
E6F1 710 _XGPIFSGLDATLX = 0xe6f1
E6F2 711 _XGPIFSGLDATLNOX = 0xe6f2
E6F3 712 _GPIFREADYCFG = 0xe6f3
E6F4 713 _GPIFREADYSTAT = 0xe6f4
E6F5 714 _GPIFABORT = 0xe6f5
E6C6 715 _FLOWSTATE = 0xe6c6
E6C7 716 _FLOWLOGIC = 0xe6c7
E6C8 717 _FLOWEQ0CTL = 0xe6c8
E6C9 718 _FLOWEQ1CTL = 0xe6c9
E6CA 719 _FLOWHOLDOFF = 0xe6ca
E6CB 720 _FLOWSTB = 0xe6cb
E6CC 721 _FLOWSTBEDGE = 0xe6cc
E6CD 722 _FLOWSTBHPERIOD = 0xe6cd
E60C 723 _GPIFHOLDAMOUNT = 0xe60c
E67D 724 _UDMACRCH = 0xe67d
E67E 725 _UDMACRCL = 0xe67e
E67F 726 _UDMACRCQUAL = 0xe67f
E6F8 727 _DBUG = 0xe6f8
E6F9 728 _TESTCFG = 0xe6f9
E6FA 729 _USBTEST = 0xe6fa
E6FB 730 _CT1 = 0xe6fb
E6FC 731 _CT2 = 0xe6fc
E6FD 732 _CT3 = 0xe6fd
E6FE 733 _CT4 = 0xe6fe
E740 734 _EP0BUF = 0xe740
E780 735 _EP1OUTBUF = 0xe780
E7C0 736 _EP1INBUF = 0xe7c0
F000 737 _EP2FIFOBUF = 0xf000
F400 738 _EP4FIFOBUF = 0xf400
F800 739 _EP6FIFOBUF = 0xf800
FC00 740 _EP8FIFOBUF = 0xfc00
741 ;--------------------------------------------------------
742 ; absolute external ram data
743 ;--------------------------------------------------------
744 .area XABS (ABS,XDATA)
745 ;--------------------------------------------------------
746 ; external initialized ram data
747 ;--------------------------------------------------------
748 .area HOME (CODE)
749 .area GSINIT0 (CODE)
750 .area GSINIT1 (CODE)
751 .area GSINIT2 (CODE)
752 .area GSINIT3 (CODE)
753 .area GSINIT4 (CODE)
754 .area GSINIT5 (CODE)
755 .area GSINIT (CODE)
756 .area GSFINAL (CODE)
757 .area CSEG (CODE)
758 ;--------------------------------------------------------
759 ; global & static initialisations
760 ;--------------------------------------------------------
761 .area HOME (CODE)
762 .area GSINIT (CODE)
763 .area GSFINAL (CODE)
764 .area GSINIT (CODE)
765 ; usb_common.c:72: unsigned char _usb_config = 0;
0000 75*00 00 766 mov __usb_config,#0x00
767 ; usb_common.c:73: unsigned char _usb_alt_setting = 0; // FIXME really 1/interface
0003 75*01 00 768 mov __usb_alt_setting,#0x00
769 ;--------------------------------------------------------
770 ; Home
771 ;--------------------------------------------------------
772 .area HOME (CODE)
773 .area HOME (CODE)
774 ;--------------------------------------------------------
775 ; code
776 ;--------------------------------------------------------
777 .area CSEG (CODE)
778 ;------------------------------------------------------------
779 ;Allocation info for local variables in function 'setup_descriptors'
780 ;------------------------------------------------------------
781 ;------------------------------------------------------------
782 ; usb_common.c:81: setup_descriptors (void)
783 ; -----------------------------------------
784 ; function setup_descriptors
785 ; -----------------------------------------
0000 786 _setup_descriptors:
0002 787 ar2 = 0x02
0003 788 ar3 = 0x03
0004 789 ar4 = 0x04
0005 790 ar5 = 0x05
0006 791 ar6 = 0x06
0007 792 ar7 = 0x07
0000 793 ar0 = 0x00
0001 794 ar1 = 0x01
795 ; usb_common.c:83: if (USBCS & bmHSM){ // high speed mode
0000 90 E6 80 796 mov dptr,#_USBCS
0003 E0 797 movx a,@dptr
0004 FA 798 mov r2,a
0005 30 E7 19 799 jnb acc.7,00102$
800 ; usb_common.c:84: current_device_descr = high_speed_device_descr;
0008 75*02r00 801 mov _current_device_descr,#_high_speed_device_descr
000B 75*03s00 802 mov (_current_device_descr + 1),#(_high_speed_device_descr >> 8)
803 ; usb_common.c:85: current_devqual_descr = high_speed_devqual_descr;
000E 75*04r00 804 mov _current_devqual_descr,#_high_speed_devqual_descr
0011 75*05s00 805 mov (_current_devqual_descr + 1),#(_high_speed_devqual_descr >> 8)
806 ; usb_common.c:86: current_config_descr = high_speed_config_descr;
0014 75*06r00 807 mov _current_config_descr,#_high_speed_config_descr
0017 75*07s00 808 mov (_current_config_descr + 1),#(_high_speed_config_descr >> 8)
809 ; usb_common.c:87: other_config_descr = full_speed_config_descr;
001A 75*08r00 810 mov _other_config_descr,#_full_speed_config_descr
001D 75*09s00 811 mov (_other_config_descr + 1),#(_full_speed_config_descr >> 8)
0020 22 812 ret
0021 813 00102$:
814 ; usb_common.c:90: current_device_descr = full_speed_device_descr;
0021 75*02r00 815 mov _current_device_descr,#_full_speed_device_descr
0024 75*03s00 816 mov (_current_device_descr + 1),#(_full_speed_device_descr >> 8)
817 ; usb_common.c:91: current_devqual_descr = full_speed_devqual_descr;
0027 75*04r00 818 mov _current_devqual_descr,#_full_speed_devqual_descr
002A 75*05s00 819 mov (_current_devqual_descr + 1),#(_full_speed_devqual_descr >> 8)
820 ; usb_common.c:92: current_config_descr = full_speed_config_descr;
002D 75*06r00 821 mov _current_config_descr,#_full_speed_config_descr
0030 75*07s00 822 mov (_current_config_descr + 1),#(_full_speed_config_descr >> 8)
823 ; usb_common.c:93: other_config_descr = high_speed_config_descr;
0033 75*08r00 824 mov _other_config_descr,#_high_speed_config_descr
0036 75*09s00 825 mov (_other_config_descr + 1),#(_high_speed_config_descr >> 8)
0039 22 826 ret
827 ;------------------------------------------------------------
828 ;Allocation info for local variables in function 'isr_SUDAV'
829 ;------------------------------------------------------------
830 ;------------------------------------------------------------
831 ; usb_common.c:103: isr_SUDAV (void) interrupt
832 ; -----------------------------------------
833 ; function isr_SUDAV
834 ; -----------------------------------------
003A 835 _isr_SUDAV:
836 ; usb_common.c:105: clear_usb_irq ();
003A 53 91 EF 837 anl _EXIF,#0xEF
003D 75 A1 00 838 mov _INT2CLR,#0x00
839 ; usb_common.c:106: _usb_got_SUDAV = 1;
0040 D2*00 840 setb __usb_got_SUDAV
0042 32 841 reti
842 ; eliminated unneeded push/pop psw
843 ; eliminated unneeded push/pop dpl
844 ; eliminated unneeded push/pop dph
845 ; eliminated unneeded push/pop b
846 ; eliminated unneeded push/pop acc
847 ;------------------------------------------------------------
848 ;Allocation info for local variables in function 'isr_USBRESET'
849 ;------------------------------------------------------------
850 ;------------------------------------------------------------
851 ; usb_common.c:111: isr_USBRESET (void) interrupt
852 ; -----------------------------------------
853 ; function isr_USBRESET
854 ; -----------------------------------------
0043 855 _isr_USBRESET:
0043 C0*00 856 push bits
0045 C0 E0 857 push acc
0047 C0 F0 858 push b
0049 C0 82 859 push dpl
004B C0 83 860 push dph
004D C0 02 861 push (0+2)
004F C0 03 862 push (0+3)
0051 C0 04 863 push (0+4)
0053 C0 05 864 push (0+5)
0055 C0 06 865 push (0+6)
0057 C0 07 866 push (0+7)
0059 C0 00 867 push (0+0)
005B C0 01 868 push (0+1)
005D C0 D0 869 push psw
005F 75 D0 00 870 mov psw,#0x00
871 ; usb_common.c:113: clear_usb_irq ();
0062 53 91 EF 872 anl _EXIF,#0xEF
0065 75 A1 00 873 mov _INT2CLR,#0x00
874 ; usb_common.c:114: setup_descriptors ();
0068 12s00r00 875 lcall _setup_descriptors
006B D0 D0 876 pop psw
006D D0 01 877 pop (0+1)
006F D0 00 878 pop (0+0)
0071 D0 07 879 pop (0+7)
0073 D0 06 880 pop (0+6)
0075 D0 05 881 pop (0+5)
0077 D0 04 882 pop (0+4)
0079 D0 03 883 pop (0+3)
007B D0 02 884 pop (0+2)
007D D0 83 885 pop dph
007F D0 82 886 pop dpl
0081 D0 F0 887 pop b
0083 D0 E0 888 pop acc
0085 D0*00 889 pop bits
0087 32 890 reti
891 ;------------------------------------------------------------
892 ;Allocation info for local variables in function 'isr_HIGHSPEED'
893 ;------------------------------------------------------------
894 ;------------------------------------------------------------
895 ; usb_common.c:118: isr_HIGHSPEED (void) interrupt
896 ; -----------------------------------------
897 ; function isr_HIGHSPEED
898 ; -----------------------------------------
0088 899 _isr_HIGHSPEED:
0088 C0*00 900 push bits
008A C0 E0 901 push acc
008C C0 F0 902 push b
008E C0 82 903 push dpl
0090 C0 83 904 push dph
0092 C0 02 905 push (0+2)
0094 C0 03 906 push (0+3)
0096 C0 04 907 push (0+4)
0098 C0 05 908 push (0+5)
009A C0 06 909 push (0+6)
009C C0 07 910 push (0+7)
009E C0 00 911 push (0+0)
00A0 C0 01 912 push (0+1)
00A2 C0 D0 913 push psw
00A4 75 D0 00 914 mov psw,#0x00
915 ; usb_common.c:120: clear_usb_irq ();
00A7 53 91 EF 916 anl _EXIF,#0xEF
00AA 75 A1 00 917 mov _INT2CLR,#0x00
918 ; usb_common.c:121: setup_descriptors ();
00AD 12s00r00 919 lcall _setup_descriptors
00B0 D0 D0 920 pop psw
00B2 D0 01 921 pop (0+1)
00B4 D0 00 922 pop (0+0)
00B6 D0 07 923 pop (0+7)
00B8 D0 06 924 pop (0+6)
00BA D0 05 925 pop (0+5)
00BC D0 04 926 pop (0+4)
00BE D0 03 927 pop (0+3)
00C0 D0 02 928 pop (0+2)
00C2 D0 83 929 pop dph
00C4 D0 82 930 pop dpl
00C6 D0 F0 931 pop b
00C8 D0 E0 932 pop acc
00CA D0*00 933 pop bits
00CC 32 934 reti
935 ;------------------------------------------------------------
936 ;Allocation info for local variables in function 'usb_install_handlers'
937 ;------------------------------------------------------------
938 ;------------------------------------------------------------
939 ; usb_common.c:125: usb_install_handlers (void)
940 ; -----------------------------------------
941 ; function usb_install_handlers
942 ; -----------------------------------------
00CD 943 _usb_install_handlers:
944 ; usb_common.c:127: setup_descriptors (); // ensure that they're set before use
00CD 12s00r00 945 lcall _setup_descriptors
946 ; usb_common.c:129: hook_uv (UV_SUDAV, (unsigned short) isr_SUDAV);
00D0 75*00r3A 947 mov _hook_uv_PARM_2,#_isr_SUDAV
00D3 75*01s00 948 mov (_hook_uv_PARM_2 + 1),#(_isr_SUDAV >> 8)
00D6 75 82 00 949 mov dpl,#0x00
00D9 12s00r00 950 lcall _hook_uv
951 ; usb_common.c:130: hook_uv (UV_USBRESET, (unsigned short) isr_USBRESET);
00DC 75*00r43 952 mov _hook_uv_PARM_2,#_isr_USBRESET
00DF 75*01s00 953 mov (_hook_uv_PARM_2 + 1),#(_isr_USBRESET >> 8)
00E2 75 82 10 954 mov dpl,#0x10
00E5 12s00r00 955 lcall _hook_uv
956 ; usb_common.c:131: hook_uv (UV_HIGHSPEED, (unsigned short) isr_HIGHSPEED);
00E8 75*00r88 957 mov _hook_uv_PARM_2,#_isr_HIGHSPEED
00EB 75*01s00 958 mov (_hook_uv_PARM_2 + 1),#(_isr_HIGHSPEED >> 8)
00EE 75 82 14 959 mov dpl,#0x14
00F1 12s00r00 960 lcall _hook_uv
961 ; usb_common.c:133: USBIE = bmSUDAV | bmURES | bmHSGRANT;
00F4 90 E6 5C 962 mov dptr,#_USBIE
00F7 74 31 963 mov a,#0x31
00F9 F0 964 movx @dptr,a
00FA 22 965 ret
966 ;------------------------------------------------------------
967 ;Allocation info for local variables in function 'plausible_endpoint'
968 ;------------------------------------------------------------
969 ;ep Allocated to registers r2
970 ;------------------------------------------------------------
971 ; usb_common.c:140: plausible_endpoint (unsigned char ep)
972 ; -----------------------------------------
973 ; function plausible_endpoint
974 ; -----------------------------------------
00FB 975 _plausible_endpoint:
976 ; usb_common.c:142: ep &= ~0x80; // ignore direction bit
977 ; usb_common.c:144: if (ep > 8)
00FB E5 82 978 mov a,dpl
00FD 54 7F 979 anl a,#0x7F
00FF FA 980 mov r2,a
0100 24 F7 981 add a,#0xff - 0x08
0102 50 04 982 jnc 00102$
983 ; usb_common.c:145: return 0;
0104 75 82 00 984 mov dpl,#0x00
0107 22 985 ret
0108 986 00102$:
987 ; usb_common.c:147: if (ep == 1)
0108 BA 01 04 988 cjne r2,#0x01,00104$
989 ; usb_common.c:148: return 1;
010B 75 82 01 990 mov dpl,#0x01
010E 22 991 ret
010F 992 00104$:
993 ; usb_common.c:150: return (ep & 0x1) == 0; // must be even
010F 53 02 01 994 anl ar2,#0x01
0112 E4 995 clr a
0113 BA 00 01 996 cjne r2,#0x00,00112$
0116 04 997 inc a
0117 998 00112$:
0117 F5 82 999 mov dpl,a
0119 22 1000 ret
1001 ;------------------------------------------------------------
1002 ;Allocation info for local variables in function 'epcs'
1003 ;------------------------------------------------------------
1004 ;ep Allocated to registers r2
1005 ;------------------------------------------------------------
1006 ; usb_common.c:157: epcs (unsigned char ep)
1007 ; -----------------------------------------
1008 ; function epcs
1009 ; -----------------------------------------
011A 1010 _epcs:
011A AA 82 1011 mov r2,dpl
1012 ; usb_common.c:159: if (ep == 0x01) // ep1 has different in and out CS regs
011C BA 01 0C 1013 cjne r2,#0x01,00102$
1014 ; usb_common.c:160: return EP1OUTCS;
011F 90 E6 A1 1015 mov dptr,#_EP1OUTCS
0122 E0 1016 movx a,@dptr
0123 FB 1017 mov r3,a
0124 7C 00 1018 mov r4,#0x00
0126 8B 82 1019 mov dpl,r3
0128 8C 83 1020 mov dph,r4
012A 22 1021 ret
012B 1022 00102$:
1023 ; usb_common.c:162: if (ep == 0x81)
012B BA 81 0C 1024 cjne r2,#0x81,00104$
1025 ; usb_common.c:163: return EP1INCS;
012E 90 E6 A2 1026 mov dptr,#_EP1INCS
0131 E0 1027 movx a,@dptr
0132 FB 1028 mov r3,a
0133 7C 00 1029 mov r4,#0x00
0135 8B 82 1030 mov dpl,r3
0137 8C 83 1031 mov dph,r4
0139 22 1032 ret
013A 1033 00104$:
1034 ; usb_common.c:165: ep &= ~0x80; // ignore direction bit
013A 53 02 7F 1035 anl ar2,#0x7F
1036 ; usb_common.c:167: if (ep == 0x00) // ep0
013D EA 1037 mov a,r2
013E 70 0C 1038 jnz 00106$
1039 ; usb_common.c:168: return EP0CS;
0140 90 E6 A0 1040 mov dptr,#_EP0CS
0143 E0 1041 movx a,@dptr
0144 FB 1042 mov r3,a
0145 7C 00 1043 mov r4,#0x00
0147 8B 82 1044 mov dpl,r3
0149 8C 83 1045 mov dph,r4
014B 22 1046 ret
014C 1047 00106$:
1048 ; usb_common.c:170: return EP2CS + (ep >> 1); // 2, 4, 6, 8 are consecutive
014C 90 E6 A3 1049 mov dptr,#_EP2CS
014F E0 1050 movx a,@dptr
0150 FB 1051 mov r3,a
0151 7C 00 1052 mov r4,#0x00
0153 EA 1053 mov a,r2
0154 C3 1054 clr c
0155 13 1055 rrc a
0156 FA 1056 mov r2,a
0157 7D 00 1057 mov r5,#0x00
0159 EA 1058 mov a,r2
015A 2B 1059 add a,r3
015B FB 1060 mov r3,a
015C ED 1061 mov a,r5
015D 3C 1062 addc a,r4
015E 8B 82 1063 mov dpl,r3
0160 F5 83 1064 mov dph,a
0162 22 1065 ret
1066 ;------------------------------------------------------------
1067 ;Allocation info for local variables in function 'usb_handle_setup_packet'
1068 ;------------------------------------------------------------
1069 ;p Allocated to registers r2 r3
1070 ;__00060000 Allocated to registers r2 r3
1071 ;__00050001 Allocated to registers r2 r3
1072 ;------------------------------------------------------------
1073 ; usb_common.c:174: usb_handle_setup_packet (void)
1074 ; -----------------------------------------
1075 ; function usb_handle_setup_packet
1076 ; -----------------------------------------
0163 1077 _usb_handle_setup_packet:
1078 ; usb_common.c:176: _usb_got_SUDAV = 0;
0163 C2*00 1079 clr __usb_got_SUDAV
1080 ; usb_common.c:180: switch (bRequestType & bmRT_TYPE_MASK){
0165 90 E6 B8 1081 mov dptr,#_SETUPDAT
0168 E0 1082 movx a,@dptr
0169 FA 1083 mov r2,a
016A 53 02 60 1084 anl ar2,#0x60
016D BA 00 02 1085 cjne r2,#0x00,00206$
0170 80 28 1086 sjmp 00106$
0172 1087 00206$:
0172 BA 20 02 1088 cjne r2,#0x20,00207$
0175 80 0D 1089 sjmp 00102$
0177 1090 00207$:
0177 BA 40 02 1091 cjne r2,#0x40,00208$
017A 80 0E 1092 sjmp 00103$
017C 1093 00208$:
017C BA 60 02 1094 cjne r2,#0x60,00209$
017F 80 03 1095 sjmp 00210$
0181 1096 00209$:
0181 02s04r1C 1097 ljmp 00175$
0184 1098 00210$:
1099 ; usb_common.c:183: case bmRT_TYPE_RESERVED:
0184 1100 00102$:
1101 ; usb_common.c:184: fx2_stall_ep0 (); // we don't handle these. indicate error
0184 12s00r00 1102 lcall _fx2_stall_ep0
1103 ; usb_common.c:185: break;
0187 02s04r1C 1104 ljmp 00175$
1105 ; usb_common.c:187: case bmRT_TYPE_VENDOR:
018A 1106 00103$:
1107 ; usb_common.c:191: if (!app_vendor_cmd ())
018A 12s00r00 1108 lcall _app_vendor_cmd
018D E5 82 1109 mov a,dpl
018F 60 03 1110 jz 00211$
0191 02s04r1C 1111 ljmp 00175$
0194 1112 00211$:
1113 ; usb_common.c:192: fx2_stall_ep0 ();
0194 12s00r00 1114 lcall _fx2_stall_ep0
1115 ; usb_common.c:193: break;
0197 02s04r1C 1116 ljmp 00175$
1117 ; usb_common.c:195: case bmRT_TYPE_STD:
019A 1118 00106$:
1119 ; usb_common.c:198: if ((bRequestType & bmRT_DIR_MASK) == bmRT_DIR_IN){
019A 90 E6 B8 1120 mov dptr,#_SETUPDAT
019D E0 1121 movx a,@dptr
019E FA 1122 mov r2,a
019F 53 02 80 1123 anl ar2,#0x80
01A2 BA 80 02 1124 cjne r2,#0x80,00212$
01A5 80 03 1125 sjmp 00213$
01A7 1126 00212$:
01A7 02s03r1D 1127 ljmp 00173$
01AA 1128 00213$:
1129 ; usb_common.c:204: switch (bRequest){
01AA 90 E6 B9 1130 mov dptr,#(_SETUPDAT + 0x0001)
01AD E0 1131 movx a,@dptr
01AE FA 1132 mov r2,a
01AF BA 00 03 1133 cjne r2,#0x00,00214$
01B2 02s02r9B 1134 ljmp 00128$
01B5 1135 00214$:
01B5 BA 06 02 1136 cjne r2,#0x06,00215$
01B8 80 35 1137 sjmp 00109$
01BA 1138 00215$:
01BA BA 08 02 1139 cjne r2,#0x08,00216$
01BD 80 08 1140 sjmp 00107$
01BF 1141 00216$:
01BF BA 0A 02 1142 cjne r2,#0x0A,00217$
01C2 80 17 1143 sjmp 00108$
01C4 1144 00217$:
01C4 02s03r17 1145 ljmp 00138$
1146 ; usb_common.c:206: case RQ_GET_CONFIG:
01C7 1147 00107$:
1148 ; usb_common.c:207: EP0BUF[0] = _usb_config; // FIXME app should handle
01C7 90 E7 40 1149 mov dptr,#_EP0BUF
01CA E5*00 1150 mov a,__usb_config
01CC F0 1151 movx @dptr,a
1152 ; usb_common.c:208: EP0BCH = 0;
01CD 90 E6 8A 1153 mov dptr,#_EP0BCH
01D0 E4 1154 clr a
01D1 F0 1155 movx @dptr,a
1156 ; usb_common.c:209: EP0BCL = 1;
01D2 90 E6 8B 1157 mov dptr,#_EP0BCL
01D5 74 01 1158 mov a,#0x01
01D7 F0 1159 movx @dptr,a
1160 ; usb_common.c:210: break;
01D8 02s04r1C 1161 ljmp 00175$
1162 ; usb_common.c:214: case RQ_GET_INTERFACE:
01DB 1163 00108$:
1164 ; usb_common.c:215: EP0BUF[0] = _usb_alt_setting; // FIXME app should handle
01DB 90 E7 40 1165 mov dptr,#_EP0BUF
01DE E5*01 1166 mov a,__usb_alt_setting
01E0 F0 1167 movx @dptr,a
1168 ; usb_common.c:216: EP0BCH = 0;
01E1 90 E6 8A 1169 mov dptr,#_EP0BCH
01E4 E4 1170 clr a
01E5 F0 1171 movx @dptr,a
1172 ; usb_common.c:217: EP0BCL = 1;
01E6 90 E6 8B 1173 mov dptr,#_EP0BCL
01E9 74 01 1174 mov a,#0x01
01EB F0 1175 movx @dptr,a
1176 ; usb_common.c:218: break;
01EC 02s04r1C 1177 ljmp 00175$
1178 ; usb_common.c:222: case RQ_GET_DESCR:
01EF 1179 00109$:
1180 ; usb_common.c:223: switch (wValueH){
01EF 90 E6 BB 1181 mov dptr,#(_SETUPDAT + 0x0003)
01F2 E0 1182 movx a,@dptr
01F3 FA 1183 mov r2,a
01F4 BA 01 02 1184 cjne r2,#0x01,00218$
01F7 80 17 1185 sjmp 00110$
01F9 1186 00218$:
01F9 BA 02 02 1187 cjne r2,#0x02,00219$
01FC 80 38 1188 sjmp 00114$
01FE 1189 00219$:
01FE BA 03 02 1190 cjne r2,#0x03,00220$
0201 80 59 1191 sjmp 00122$
0203 1192 00220$:
0203 BA 06 02 1193 cjne r2,#0x06,00221$
0206 80 1B 1194 sjmp 00111$
0208 1195 00221$:
0208 BA 07 02 1196 cjne r2,#0x07,00222$
020B 80 3C 1197 sjmp 00119$
020D 1198 00222$:
020D 02s02r95 1199 ljmp 00126$
1200 ; usb_common.c:225: case DT_DEVICE:
0210 1201 00110$:
1202 ; usb_common.c:226: SUDPTRH = MSB (current_device_descr);
0210 AA*02 1203 mov r2,_current_device_descr
0212 AB*03 1204 mov r3,(_current_device_descr + 1)
0214 90 E6 B3 1205 mov dptr,#_SUDPTRH
0217 EB 1206 mov a,r3
0218 F0 1207 movx @dptr,a
1208 ; usb_common.c:227: SUDPTRL = LSB (current_device_descr);
0219 7B 00 1209 mov r3,#0x00
021B 90 E6 B4 1210 mov dptr,#_SUDPTRL
021E EA 1211 mov a,r2
021F F0 1212 movx @dptr,a
1213 ; usb_common.c:228: break;
0220 02s04r1C 1214 ljmp 00175$
1215 ; usb_common.c:230: case DT_DEVQUAL:
0223 1216 00111$:
1217 ; usb_common.c:231: SUDPTRH = MSB (current_devqual_descr);
0223 AA*04 1218 mov r2,_current_devqual_descr
0225 AB*05 1219 mov r3,(_current_devqual_descr + 1)
0227 90 E6 B3 1220 mov dptr,#_SUDPTRH
022A EB 1221 mov a,r3
022B F0 1222 movx @dptr,a
1223 ; usb_common.c:232: SUDPTRL = LSB (current_devqual_descr);
022C 7B 00 1224 mov r3,#0x00
022E 90 E6 B4 1225 mov dptr,#_SUDPTRL
0231 EA 1226 mov a,r2
0232 F0 1227 movx @dptr,a
1228 ; usb_common.c:233: break;
0233 02s04r1C 1229 ljmp 00175$
1230 ; usb_common.c:237: fx2_stall_ep0 ();
0236 1231 00114$:
1232 ; usb_common.c:239: SUDPTRH = MSB (current_config_descr);
0236 AA*06 1233 mov r2,_current_config_descr
0238 AB*07 1234 mov r3,(_current_config_descr + 1)
023A 90 E6 B3 1235 mov dptr,#_SUDPTRH
023D EB 1236 mov a,r3
023E F0 1237 movx @dptr,a
1238 ; usb_common.c:240: SUDPTRL = LSB (current_config_descr);
023F 7B 00 1239 mov r3,#0x00
0241 90 E6 B4 1240 mov dptr,#_SUDPTRL
0244 EA 1241 mov a,r2
0245 F0 1242 movx @dptr,a
1243 ; usb_common.c:242: break;
0246 02s04r1C 1244 ljmp 00175$
1245 ; usb_common.c:246: fx2_stall_ep0 ();
0249 1246 00119$:
1247 ; usb_common.c:248: SUDPTRH = MSB (other_config_descr);
0249 AA*08 1248 mov r2,_other_config_descr
024B AB*09 1249 mov r3,(_other_config_descr + 1)
024D 90 E6 B3 1250 mov dptr,#_SUDPTRH
0250 EB 1251 mov a,r3
0251 F0 1252 movx @dptr,a
1253 ; usb_common.c:249: SUDPTRL = LSB (other_config_descr);
0252 7B 00 1254 mov r3,#0x00
0254 90 E6 B4 1255 mov dptr,#_SUDPTRL
0257 EA 1256 mov a,r2
0258 F0 1257 movx @dptr,a
1258 ; usb_common.c:251: break;
0259 02s04r1C 1259 ljmp 00175$
1260 ; usb_common.c:253: case DT_STRING:
025C 1261 00122$:
1262 ; usb_common.c:254: if (wValueL >= nstring_descriptors)
025C 90 E6 BA 1263 mov dptr,#(_SETUPDAT + 0x0002)
025F E0 1264 movx a,@dptr
0260 FA 1265 mov r2,a
0261 90s00r00 1266 mov dptr,#_nstring_descriptors
0264 E0 1267 movx a,@dptr
0265 FB 1268 mov r3,a
0266 C3 1269 clr c
0267 EA 1270 mov a,r2
0268 9B 1271 subb a,r3
0269 40 06 1272 jc 00124$
1273 ; usb_common.c:255: fx2_stall_ep0 ();
026B 12s00r00 1274 lcall _fx2_stall_ep0
026E 02s04r1C 1275 ljmp 00175$
0271 1276 00124$:
1277 ; usb_common.c:257: xdata char *p = string_descriptors[wValueL];
0271 90 E6 BA 1278 mov dptr,#(_SETUPDAT + 0x0002)
0274 E0 1279 movx a,@dptr
0275 75 F0 02 1280 mov b,#0x02
0278 A4 1281 mul ab
0279 24r00 1282 add a,#_string_descriptors
027B F5 82 1283 mov dpl,a
027D 74s00 1284 mov a,#(_string_descriptors >> 8)
027F 35 F0 1285 addc a,b
0281 F5 83 1286 mov dph,a
0283 E0 1287 movx a,@dptr
0284 FA 1288 mov r2,a
0285 A3 1289 inc dptr
0286 E0 1290 movx a,@dptr
1291 ; usb_common.c:258: SUDPTRH = MSB (p);
0287 90 E6 B3 1292 mov dptr,#_SUDPTRH
028A F0 1293 movx @dptr,a
1294 ; usb_common.c:259: SUDPTRL = LSB (p);
028B 7B 00 1295 mov r3,#0x00
028D 90 E6 B4 1296 mov dptr,#_SUDPTRL
0290 EA 1297 mov a,r2
0291 F0 1298 movx @dptr,a
1299 ; usb_common.c:261: break;
0292 02s04r1C 1300 ljmp 00175$
1301 ; usb_common.c:263: default:
0295 1302 00126$:
1303 ; usb_common.c:264: fx2_stall_ep0 (); // invalid request
0295 12s00r00 1304 lcall _fx2_stall_ep0
1305 ; usb_common.c:267: break;
0298 02s04r1C 1306 ljmp 00175$
1307 ; usb_common.c:271: case RQ_GET_STATUS:
029B 1308 00128$:
1309 ; usb_common.c:272: switch (bRequestType & bmRT_RECIP_MASK){
029B 90 E6 B8 1310 mov dptr,#_SETUPDAT
029E E0 1311 movx a,@dptr
029F FA 1312 mov r2,a
02A0 53 02 1F 1313 anl ar2,#0x1F
02A3 BA 00 02 1314 cjne r2,#0x00,00224$
02A6 80 0A 1315 sjmp 00129$
02A8 1316 00224$:
02A8 BA 01 02 1317 cjne r2,#0x01,00225$
02AB 80 1C 1318 sjmp 00130$
02AD 1319 00225$:
1320 ; usb_common.c:273: case bmRT_RECIP_DEVICE:
02AD BA 02 64 1321 cjne r2,#0x02,00135$
02B0 80 2C 1322 sjmp 00131$
02B2 1323 00129$:
1324 ; usb_common.c:274: EP0BUF[0] = bmGSDA_SELF_POWERED; // FIXME app should handle
02B2 90 E7 40 1325 mov dptr,#_EP0BUF
02B5 74 01 1326 mov a,#0x01
02B7 F0 1327 movx @dptr,a
1328 ; usb_common.c:275: EP0BUF[1] = 0;
02B8 90 E7 41 1329 mov dptr,#(_EP0BUF + 0x0001)
1330 ; usb_common.c:276: EP0BCH = 0;
02BB E4 1331 clr a
02BC F0 1332 movx @dptr,a
02BD 90 E6 8A 1333 mov dptr,#_EP0BCH
02C0 F0 1334 movx @dptr,a
1335 ; usb_common.c:277: EP0BCL = 2;
02C1 90 E6 8B 1336 mov dptr,#_EP0BCL
02C4 74 02 1337 mov a,#0x02
02C6 F0 1338 movx @dptr,a
1339 ; usb_common.c:278: break;
1340 ; usb_common.c:280: case bmRT_RECIP_INTERFACE:
02C7 80 4E 1341 sjmp 00138$
02C9 1342 00130$:
1343 ; usb_common.c:281: EP0BUF[0] = 0;
02C9 90 E7 40 1344 mov dptr,#_EP0BUF
1345 ; usb_common.c:282: EP0BUF[1] = 0;
1346 ; usb_common.c:283: EP0BCH = 0;
02CC E4 1347 clr a
02CD F0 1348 movx @dptr,a
02CE 90 E7 41 1349 mov dptr,#(_EP0BUF + 0x0001)
02D1 F0 1350 movx @dptr,a
02D2 90 E6 8A 1351 mov dptr,#_EP0BCH
02D5 F0 1352 movx @dptr,a
1353 ; usb_common.c:284: EP0BCL = 2;
02D6 90 E6 8B 1354 mov dptr,#_EP0BCL
02D9 74 02 1355 mov a,#0x02
02DB F0 1356 movx @dptr,a
1357 ; usb_common.c:285: break;
1358 ; usb_common.c:287: case bmRT_RECIP_ENDPOINT:
02DC 80 39 1359 sjmp 00138$
02DE 1360 00131$:
1361 ; usb_common.c:288: if (plausible_endpoint (wIndexL)){
02DE 90 E6 BC 1362 mov dptr,#(_SETUPDAT + 0x0004)
02E1 E0 1363 movx a,@dptr
02E2 F5 82 1364 mov dpl,a
02E4 12s00rFB 1365 lcall _plausible_endpoint
02E7 E5 82 1366 mov a,dpl
02E9 60 24 1367 jz 00133$
1368 ; usb_common.c:289: EP0BUF[0] = *epcs (wIndexL) & bmEPSTALL;
02EB 90 E6 BC 1369 mov dptr,#(_SETUPDAT + 0x0004)
02EE E0 1370 movx a,@dptr
02EF F5 82 1371 mov dpl,a
02F1 12s01r1A 1372 lcall _epcs
02F4 E0 1373 movx a,@dptr
02F5 FA 1374 mov r2,a
02F6 53 02 01 1375 anl ar2,#0x01
02F9 90 E7 40 1376 mov dptr,#_EP0BUF
02FC EA 1377 mov a,r2
02FD F0 1378 movx @dptr,a
1379 ; usb_common.c:290: EP0BUF[1] = 0;
02FE 90 E7 41 1380 mov dptr,#(_EP0BUF + 0x0001)
1381 ; usb_common.c:291: EP0BCH = 0;
0301 E4 1382 clr a
0302 F0 1383 movx @dptr,a
0303 90 E6 8A 1384 mov dptr,#_EP0BCH
0306 F0 1385 movx @dptr,a
1386 ; usb_common.c:292: EP0BCL = 2;
0307 90 E6 8B 1387 mov dptr,#_EP0BCL
030A 74 02 1388 mov a,#0x02
030C F0 1389 movx @dptr,a
030D 80 08 1390 sjmp 00138$
030F 1391 00133$:
1392 ; usb_common.c:295: fx2_stall_ep0 ();
030F 12s00r00 1393 lcall _fx2_stall_ep0
1394 ; usb_common.c:296: break;
1395 ; usb_common.c:298: default:
0312 80 03 1396 sjmp 00138$
0314 1397 00135$:
1398 ; usb_common.c:299: fx2_stall_ep0 ();
0314 12s00r00 1399 lcall _fx2_stall_ep0
1400 ; usb_common.c:306: default:
0317 1401 00138$:
1402 ; usb_common.c:307: fx2_stall_ep0 ();
0317 12s00r00 1403 lcall _fx2_stall_ep0
1404 ; usb_common.c:309: }
031A 02s04r1C 1405 ljmp 00175$
031D 1406 00173$:
1407 ; usb_common.c:318: switch (bRequest){
031D 90 E6 B9 1408 mov dptr,#(_SETUPDAT + 0x0001)
0320 E0 1409 movx a,@dptr
0321 FA 1410 mov r2,a
0322 24 F4 1411 add a,#0xff - 0x0B
0324 50 03 1412 jnc 00228$
0326 02s04r19 1413 ljmp 00170$
0329 1414 00228$:
0329 EA 1415 mov a,r2
032A 2A 1416 add a,r2
032B 2A 1417 add a,r2
032C 90s03r30 1418 mov dptr,#00229$
032F 73 1419 jmp @a+dptr
0330 1420 00229$:
0330 02s04r19 1421 ljmp 00170$
0333 02s03r66 1422 ljmp 00142$
0336 02s03rE1 1423 ljmp 00161$
0339 02s03rC2 1424 ljmp 00154$
033C 02s04r19 1425 ljmp 00170$
033F 02s04r19 1426 ljmp 00168$
0342 02s04r19 1427 ljmp 00170$
0345 02s04r19 1428 ljmp 00169$
0348 02s04r19 1429 ljmp 00170$
034B 02s03r54 1430 ljmp 00140$
034E 02s04r19 1431 ljmp 00170$
0351 02s03r5D 1432 ljmp 00141$
1433 ; usb_common.c:320: case RQ_SET_CONFIG:
0354 1434 00140$:
1435 ; usb_common.c:321: _usb_config = wValueL; // FIXME app should handle
0354 90 E6 BA 1436 mov dptr,#(_SETUPDAT + 0x0002)
0357 E0 1437 movx a,@dptr
0358 F5*00 1438 mov __usb_config,a
1439 ; usb_common.c:322: break;
035A 02s04r1C 1440 ljmp 00175$
1441 ; usb_common.c:324: case RQ_SET_INTERFACE:
035D 1442 00141$:
1443 ; usb_common.c:325: _usb_alt_setting = wValueL; // FIXME app should handle
035D 90 E6 BA 1444 mov dptr,#(_SETUPDAT + 0x0002)
0360 E0 1445 movx a,@dptr
0361 F5*01 1446 mov __usb_alt_setting,a
1447 ; usb_common.c:326: break;
0363 02s04r1C 1448 ljmp 00175$
1449 ; usb_common.c:330: case RQ_CLEAR_FEATURE:
0366 1450 00142$:
1451 ; usb_common.c:331: switch (bRequestType & bmRT_RECIP_MASK){
0366 90 E6 B8 1452 mov dptr,#_SETUPDAT
0369 E0 1453 movx a,@dptr
036A FA 1454 mov r2,a
036B 53 02 1F 1455 anl ar2,#0x1F
036E BA 00 02 1456 cjne r2,#0x00,00230$
0371 80 05 1457 sjmp 00143$
0373 1458 00230$:
1459 ; usb_common.c:333: case bmRT_RECIP_DEVICE:
0373 BA 02 47 1460 cjne r2,#0x02,00152$
0376 80 0A 1461 sjmp 00147$
0378 1462 00143$:
1463 ; usb_common.c:334: switch (wValueL){
0378 90 E6 BA 1464 mov dptr,#(_SETUPDAT + 0x0002)
037B E0 1465 movx a,@dptr
1466 ; usb_common.c:337: fx2_stall_ep0 ();
037C 12s00r00 1467 lcall _fx2_stall_ep0
1468 ; usb_common.c:339: break;
037F 02s04r1C 1469 ljmp 00175$
1470 ; usb_common.c:341: case bmRT_RECIP_ENDPOINT:
0382 1471 00147$:
1472 ; usb_common.c:342: if (wValueL == FS_ENDPOINT_HALT && plausible_endpoint (wIndexL)){
0382 90 E6 BA 1473 mov dptr,#(_SETUPDAT + 0x0002)
0385 E0 1474 movx a,@dptr
0386 70 30 1475 jnz 00149$
0388 90 E6 BC 1476 mov dptr,#(_SETUPDAT + 0x0004)
038B E0 1477 movx a,@dptr
038C F5 82 1478 mov dpl,a
038E 12s00rFB 1479 lcall _plausible_endpoint
0391 E5 82 1480 mov a,dpl
0393 60 23 1481 jz 00149$
1482 ; usb_common.c:343: *epcs (wIndexL) &= ~bmEPSTALL;
0395 90 E6 BC 1483 mov dptr,#(_SETUPDAT + 0x0004)
0398 E0 1484 movx a,@dptr
0399 F5 82 1485 mov dpl,a
039B 12s01r1A 1486 lcall _epcs
039E AA 82 1487 mov r2,dpl
03A0 AB 83 1488 mov r3,dph
03A2 E0 1489 movx a,@dptr
03A3 FC 1490 mov r4,a
03A4 53 04 FE 1491 anl ar4,#0xFE
03A7 8A 82 1492 mov dpl,r2
03A9 8B 83 1493 mov dph,r3
03AB EC 1494 mov a,r4
03AC F0 1495 movx @dptr,a
1496 ; usb_common.c:344: fx2_reset_data_toggle (wIndexL);
03AD 90 E6 BC 1497 mov dptr,#(_SETUPDAT + 0x0004)
03B0 E0 1498 movx a,@dptr
03B1 F5 82 1499 mov dpl,a
03B3 12s00r00 1500 lcall _fx2_reset_data_toggle
03B6 80 64 1501 sjmp 00175$
03B8 1502 00149$:
1503 ; usb_common.c:347: fx2_stall_ep0 ();
03B8 12s00r00 1504 lcall _fx2_stall_ep0
1505 ; usb_common.c:348: break;
1506 ; usb_common.c:350: default:
03BB 80 5F 1507 sjmp 00175$
03BD 1508 00152$:
1509 ; usb_common.c:351: fx2_stall_ep0 ();
03BD 12s00r00 1510 lcall _fx2_stall_ep0
1511 ; usb_common.c:354: break;
1512 ; usb_common.c:358: case RQ_SET_FEATURE:
03C0 80 5A 1513 sjmp 00175$
03C2 1514 00154$:
1515 ; usb_common.c:359: switch (bRequestType & bmRT_RECIP_MASK){
03C2 90 E6 B8 1516 mov dptr,#_SETUPDAT
03C5 E0 1517 movx a,@dptr
03C6 FA 1518 mov r2,a
03C7 53 02 1F 1519 anl ar2,#0x1F
03CA BA 00 4F 1520 cjne r2,#0x00,00175$
1521 ; usb_common.c:362: switch (wValueL){
03CD 90 E6 BA 1522 mov dptr,#(_SETUPDAT + 0x0002)
03D0 E0 1523 movx a,@dptr
03D1 FA 1524 mov r2,a
03D2 BA 01 02 1525 cjne r2,#0x01,00236$
03D5 80 05 1526 sjmp 00158$
03D7 1527 00236$:
03D7 BA 02 02 1528 cjne r2,#0x02,00237$
03DA 80 40 1529 sjmp 00175$
03DC 1530 00237$:
1531 ; usb_common.c:368: default:
03DC 1532 00158$:
1533 ; usb_common.c:369: fx2_stall_ep0 ();
03DC 12s00r00 1534 lcall _fx2_stall_ep0
1535 ; usb_common.c:373: break;
1536 ; usb_common.c:375: case bmRT_RECIP_ENDPOINT:
03DF 80 3B 1537 sjmp 00175$
03E1 1538 00161$:
1539 ; usb_common.c:376: switch (wValueL){
03E1 90 E6 BA 1540 mov dptr,#(_SETUPDAT + 0x0002)
03E4 E0 1541 movx a,@dptr
03E5 FA 1542 mov r2,a
03E6 70 2C 1543 jnz 00166$
1544 ; usb_common.c:378: if (plausible_endpoint (wIndexL))
03E8 90 E6 BC 1545 mov dptr,#(_SETUPDAT + 0x0004)
03EB E0 1546 movx a,@dptr
03EC F5 82 1547 mov dpl,a
03EE 12s00rFB 1548 lcall _plausible_endpoint
03F1 E5 82 1549 mov a,dpl
03F3 60 1A 1550 jz 00164$
1551 ; usb_common.c:379: *epcs (wIndexL) |= bmEPSTALL;
03F5 90 E6 BC 1552 mov dptr,#(_SETUPDAT + 0x0004)
03F8 E0 1553 movx a,@dptr
03F9 F5 82 1554 mov dpl,a
03FB 12s01r1A 1555 lcall _epcs
03FE AA 82 1556 mov r2,dpl
0400 AB 83 1557 mov r3,dph
0402 E0 1558 movx a,@dptr
0403 FC 1559 mov r4,a
0404 43 04 01 1560 orl ar4,#0x01
0407 8A 82 1561 mov dpl,r2
0409 8B 83 1562 mov dph,r3
040B EC 1563 mov a,r4
040C F0 1564 movx @dptr,a
040D 80 0D 1565 sjmp 00175$
040F 1566 00164$:
1567 ; usb_common.c:381: fx2_stall_ep0 ();
040F 12s00r00 1568 lcall _fx2_stall_ep0
1569 ; usb_common.c:382: break;
1570 ; usb_common.c:384: default:
0412 80 08 1571 sjmp 00175$
0414 1572 00166$:
1573 ; usb_common.c:385: fx2_stall_ep0 ();
0414 12s00r00 1574 lcall _fx2_stall_ep0
1575 ; usb_common.c:388: break;
1576 ; usb_common.c:392: case RQ_SET_ADDRESS: // handled by fx2 hardware
0417 80 03 1577 sjmp 00175$
0419 1578 00168$:
1579 ; usb_common.c:393: case RQ_SET_DESCR: // not implemented
0419 1580 00169$:
1581 ; usb_common.c:394: default:
0419 1582 00170$:
1583 ; usb_common.c:395: fx2_stall_ep0 ();
0419 12s00r00 1584 lcall _fx2_stall_ep0
1585 ; usb_common.c:401: } // bmRT_TYPE_MASK
041C 1586 00175$:
1587 ; usb_common.c:404: EP0CS |= bmHSNAK;
041C 90 E6 A0 1588 mov dptr,#_EP0CS
041F E0 1589 movx a,@dptr
0420 44 80 1590 orl a,#0x80
0422 F0 1591 movx @dptr,a
0423 22 1592 ret
1593 .area CSEG (CODE)
1594 .area CONST (CODE)
1595 .area CABS (ABS,CODE)