1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 4.2.0 #13081 (Linux) 4 ;-------------------------------------------------------- 5 .module usrp_main 6 .optsdcc -mmcs51 --model-small 7 8 ;-------------------------------------------------------- 9 ; Public variables in this module 10 ;-------------------------------------------------------- 11 .globl _main 12 .globl _patch_usb_descriptors 13 .globl _isr_tick 14 .globl _eeprom_read 15 .globl _spi_write 16 .globl _spi_read 17 .globl _memset 18 .globl _fx2_renumerate 19 .globl _usb_handle_setup_packet 20 .globl _usb_install_handlers 21 .globl _setup_autovectors 22 .globl _i2c_write 23 .globl _i2c_read 24 .globl _hook_timer_tick 25 .globl _fpga_set_rx_reset 26 .globl _fpga_set_tx_reset 27 .globl _fpga_set_rx_enable 28 .globl _fpga_set_tx_enable 29 .globl _fpga_set_reset 30 .globl _fpga_load_end 31 .globl _fpga_load_xfer 32 .globl _fpga_load_begin 33 .globl _set_led_1 34 .globl _set_led_0 35 .globl _init_gpif 36 .globl _init_usrp 37 .globl _bitALTERA_DCLK 38 .globl _bitALTERA_DATA0 39 .globl _bitS_IN 40 .globl _bitS_OUT 41 .globl _bitS_CLK 42 .globl _EIPX6 43 .globl _EIPX5 44 .globl _EIPX4 45 .globl _PI2C 46 .globl _PUSB 47 .globl _EIEX6 48 .globl _EIEX5 49 .globl _EIEX4 50 .globl _EI2C 51 .globl _EIUSB 52 .globl _SMOD1 53 .globl _ERESI 54 .globl _RESI 55 .globl _INT6 56 .globl _CY 57 .globl _AC 58 .globl _F0 59 .globl _RS1 60 .globl _RS0 61 .globl _OV 62 .globl _FL 63 .globl _P 64 .globl _TF2 65 .globl _EXF2 66 .globl _RCLK 67 .globl _TCLK 68 .globl _EXEN2 69 .globl _TR2 70 .globl _C_T2 71 .globl _CP_RL2 72 .globl _SM01 73 .globl _SM11 74 .globl _SM21 75 .globl _REN1 76 .globl _TB81 77 .globl _RB81 78 .globl _TI1 79 .globl _RI1 80 .globl _PS1 81 .globl _PT2 82 .globl _PS0 83 .globl _PT1 84 .globl _PX1 85 .globl _PT0 86 .globl _PX0 87 .globl _EA 88 .globl _ES1 89 .globl _ET2 90 .globl _ES0 91 .globl _ET1 92 .globl _EX1 93 .globl _ET0 94 .globl _EX0 95 .globl _SM0 96 .globl _SM1 97 .globl _SM2 98 .globl _REN 99 .globl _TB8 100 .globl _RB8 101 .globl _TI 102 .globl _RI 103 .globl _TF1 104 .globl _TR1 105 .globl _TF0 106 .globl _TR0 107 .globl _IE1 108 .globl _IT1 109 .globl _IE0 110 .globl _IT0 111 .globl _SEL 112 .globl _EIP 113 .globl _B 114 .globl _EIE 115 .globl _ACC 116 .globl _EICON 117 .globl _PSW 118 .globl _TH2 119 .globl _TL2 120 .globl _RCAP2H 121 .globl _RCAP2L 122 .globl _T2CON 123 .globl _SBUF1 124 .globl _SCON1 125 .globl _GPIFSGLDATLNOX 126 .globl _GPIFSGLDATLX 127 .globl _GPIFSGLDATH 128 .globl _GPIFTRIG 129 .globl _EP01STAT 130 .globl _IP 131 .globl _OEE 132 .globl _OED 133 .globl _OEC 134 .globl _OEB 135 .globl _OEA 136 .globl _IOE 137 .globl _IOD 138 .globl _AUTOPTRSETUP 139 .globl _EP68FIFOFLGS 140 .globl _EP24FIFOFLGS 141 .globl _EP2468STAT 142 .globl _IE 143 .globl _INT4CLR 144 .globl _INT2CLR 145 .globl _IOC 146 .globl _AUTODAT2 147 .globl _AUTOPTRL2 148 .globl _AUTOPTRH2 149 .globl _AUTODAT1 150 .globl _APTR1L 151 .globl _APTR1H 152 .globl _SBUF0 153 .globl _SCON0 154 .globl _MPAGE 155 .globl _EXIF 156 .globl _IOB 157 .globl _CKCON 158 .globl _TH1 159 .globl _TH0 160 .globl _TL1 161 .globl _TL0 162 .globl _TMOD 163 .globl _TCON 164 .globl _PCON 165 .globl _DPS 166 .globl _DPH1 167 .globl _DPL1 168 .globl _DPH 169 .globl _DPL 170 .globl _SP 171 .globl _IOA 172 .globl _hash1 173 .globl _EP8FIFOBUF 174 .globl _EP6FIFOBUF 175 .globl _EP4FIFOBUF 176 .globl _EP2FIFOBUF 177 .globl _EP1INBUF 178 .globl _EP1OUTBUF 179 .globl _EP0BUF 180 .globl _CT4 181 .globl _CT3 182 .globl _CT2 183 .globl _CT1 184 .globl _USBTEST 185 .globl _TESTCFG 186 .globl _DBUG 187 .globl _UDMACRCQUAL 188 .globl _UDMACRCL 189 .globl _UDMACRCH 190 .globl _GPIFHOLDAMOUNT 191 .globl _FLOWSTBHPERIOD 192 .globl _FLOWSTBEDGE 193 .globl _FLOWSTB 194 .globl _FLOWHOLDOFF 195 .globl _FLOWEQ1CTL 196 .globl _FLOWEQ0CTL 197 .globl _FLOWLOGIC 198 .globl _FLOWSTATE 199 .globl _GPIFABORT 200 .globl _GPIFREADYSTAT 201 .globl _GPIFREADYCFG 202 .globl _XGPIFSGLDATLNOX 203 .globl _XGPIFSGLDATLX 204 .globl _XGPIFSGLDATH 205 .globl _EP8GPIFTRIG 206 .globl _EP8GPIFPFSTOP 207 .globl _EP8GPIFFLGSEL 208 .globl _EP6GPIFTRIG 209 .globl _EP6GPIFPFSTOP 210 .globl _EP6GPIFFLGSEL 211 .globl _EP4GPIFTRIG 212 .globl _EP4GPIFPFSTOP 213 .globl _EP4GPIFFLGSEL 214 .globl _EP2GPIFTRIG 215 .globl _EP2GPIFPFSTOP 216 .globl _EP2GPIFFLGSEL 217 .globl _GPIFTCB0 218 .globl _GPIFTCB1 219 .globl _GPIFTCB2 220 .globl _GPIFTCB3 221 .globl _GPIFADRL 222 .globl _GPIFADRH 223 .globl _GPIFCTLCFG 224 .globl _GPIFIDLECTL 225 .globl _GPIFIDLECS 226 .globl _GPIFWFSELECT 227 .globl _SETUPDAT 228 .globl _SUDPTRCTL 229 .globl _SUDPTRL 230 .globl _SUDPTRH 231 .globl _EP8FIFOBCL 232 .globl _EP8FIFOBCH 233 .globl _EP6FIFOBCL 234 .globl _EP6FIFOBCH 235 .globl _EP4FIFOBCL 236 .globl _EP4FIFOBCH 237 .globl _EP2FIFOBCL 238 .globl _EP2FIFOBCH 239 .globl _EP8FIFOFLGS 240 .globl _EP6FIFOFLGS 241 .globl _EP4FIFOFLGS 242 .globl _EP2FIFOFLGS 243 .globl _EP8CS 244 .globl _EP6CS 245 .globl _EP4CS 246 .globl _EP2CS 247 .globl _EP1INCS 248 .globl _EP1OUTCS 249 .globl _EP0CS 250 .globl _EP8BCL 251 .globl _EP8BCH 252 .globl _EP6BCL 253 .globl _EP6BCH 254 .globl _EP4BCL 255 .globl _EP4BCH 256 .globl _EP2BCL 257 .globl _EP2BCH 258 .globl _EP1INBC 259 .globl _EP1OUTBC 260 .globl _EP0BCL 261 .globl _EP0BCH 262 .globl _FNADDR 263 .globl _MICROFRAME 264 .globl _USBFRAMEL 265 .globl _USBFRAMEH 266 .globl _TOGCTL 267 .globl _WAKEUPCS 268 .globl _SUSPEND 269 .globl _USBCS 270 .globl _XAUTODAT2 271 .globl _XAUTODAT1 272 .globl _I2CTL 273 .globl _I2DAT 274 .globl _I2CS 275 .globl _PORTECFG 276 .globl _PORTCCFG 277 .globl _PORTACFG 278 .globl _INTSETUP 279 .globl _INT4IVEC 280 .globl _INT2IVEC 281 .globl _CLRERRCNT 282 .globl _ERRCNTLIM 283 .globl _USBERRIRQ 284 .globl _USBERRIE 285 .globl _GPIFIRQ 286 .globl _GPIFIE 287 .globl _EPIRQ 288 .globl _EPIE 289 .globl _USBIRQ 290 .globl _USBIE 291 .globl _NAKIRQ 292 .globl _NAKIE 293 .globl _IBNIRQ 294 .globl _IBNIE 295 .globl _EP8FIFOIRQ 296 .globl _EP8FIFOIE 297 .globl _EP6FIFOIRQ 298 .globl _EP6FIFOIE 299 .globl _EP4FIFOIRQ 300 .globl _EP4FIFOIE 301 .globl _EP2FIFOIRQ 302 .globl _EP2FIFOIE 303 .globl _OUTPKTEND 304 .globl _INPKTEND 305 .globl _EP8ISOINPKTS 306 .globl _EP6ISOINPKTS 307 .globl _EP4ISOINPKTS 308 .globl _EP2ISOINPKTS 309 .globl _EP8FIFOPFL 310 .globl _EP8FIFOPFH 311 .globl _EP6FIFOPFL 312 .globl _EP6FIFOPFH 313 .globl _EP4FIFOPFL 314 .globl _EP4FIFOPFH 315 .globl _EP2FIFOPFL 316 .globl _EP2FIFOPFH 317 .globl _EP8AUTOINLENL 318 .globl _EP8AUTOINLENH 319 .globl _EP6AUTOINLENL 320 .globl _EP6AUTOINLENH 321 .globl _EP4AUTOINLENL 322 .globl _EP4AUTOINLENH 323 .globl _EP2AUTOINLENL 324 .globl _EP2AUTOINLENH 325 .globl _EP8FIFOCFG 326 .globl _EP6FIFOCFG 327 .globl _EP4FIFOCFG 328 .globl _EP2FIFOCFG 329 .globl _EP8CFG 330 .globl _EP6CFG 331 .globl _EP4CFG 332 .globl _EP2CFG 333 .globl _EP1INCFG 334 .globl _EP1OUTCFG 335 .globl _REVCTL 336 .globl _REVID 337 .globl _FIFOPINPOLAR 338 .globl _UART230 339 .globl _BPADDRL 340 .globl _BPADDRH 341 .globl _BREAKPT 342 .globl _FIFORESET 343 .globl _PINFLAGSCD 344 .globl _PINFLAGSAB 345 .globl _IFCONFIG 346 .globl _CPUCS 347 .globl _RES_WAVEDATA_END 348 .globl _GPIF_WAVE_DATA 349 .globl _g_tx_underrun 350 .globl _g_rx_overrun 351 .globl _g_rx_enable 352 .globl _g_tx_enable 353 .globl _app_vendor_cmd 354 ;-------------------------------------------------------- 355 ; special function registers 356 ;-------------------------------------------------------- 357 .area RSEG (ABS,DATA) 000000 358 .org 0x0000 000080 359 _IOA = 0x0080 000081 360 _SP = 0x0081 000082 361 _DPL = 0x0082 000083 362 _DPH = 0x0083 000084 363 _DPL1 = 0x0084 000085 364 _DPH1 = 0x0085 000086 365 _DPS = 0x0086 000087 366 _PCON = 0x0087 000088 367 _TCON = 0x0088 000089 368 _TMOD = 0x0089 00008A 369 _TL0 = 0x008a 00008B 370 _TL1 = 0x008b 00008C 371 _TH0 = 0x008c 00008D 372 _TH1 = 0x008d 00008E 373 _CKCON = 0x008e 000090 374 _IOB = 0x0090 000091 375 _EXIF = 0x0091 000092 376 _MPAGE = 0x0092 000098 377 _SCON0 = 0x0098 000099 378 _SBUF0 = 0x0099 00009A 379 _APTR1H = 0x009a 00009B 380 _APTR1L = 0x009b 00009C 381 _AUTODAT1 = 0x009c 00009D 382 _AUTOPTRH2 = 0x009d 00009E 383 _AUTOPTRL2 = 0x009e 00009F 384 _AUTODAT2 = 0x009f 0000A0 385 _IOC = 0x00a0 0000A1 386 _INT2CLR = 0x00a1 0000A2 387 _INT4CLR = 0x00a2 0000A8 388 _IE = 0x00a8 0000AA 389 _EP2468STAT = 0x00aa 0000AB 390 _EP24FIFOFLGS = 0x00ab 0000AC 391 _EP68FIFOFLGS = 0x00ac 0000AF 392 _AUTOPTRSETUP = 0x00af 0000B0 393 _IOD = 0x00b0 0000B1 394 _IOE = 0x00b1 0000B2 395 _OEA = 0x00b2 0000B3 396 _OEB = 0x00b3 0000B4 397 _OEC = 0x00b4 0000B5 398 _OED = 0x00b5 0000B6 399 _OEE = 0x00b6 0000B8 400 _IP = 0x00b8 0000BA 401 _EP01STAT = 0x00ba 0000BB 402 _GPIFTRIG = 0x00bb 0000BD 403 _GPIFSGLDATH = 0x00bd 0000BE 404 _GPIFSGLDATLX = 0x00be 0000BF 405 _GPIFSGLDATLNOX = 0x00bf 0000C0 406 _SCON1 = 0x00c0 0000C1 407 _SBUF1 = 0x00c1 0000C8 408 _T2CON = 0x00c8 0000CA 409 _RCAP2L = 0x00ca 0000CB 410 _RCAP2H = 0x00cb 0000CC 411 _TL2 = 0x00cc 0000CD 412 _TH2 = 0x00cd 0000D0 413 _PSW = 0x00d0 0000D8 414 _EICON = 0x00d8 0000E0 415 _ACC = 0x00e0 0000E8 416 _EIE = 0x00e8 0000F0 417 _B = 0x00f0 0000F8 418 _EIP = 0x00f8 419 ;-------------------------------------------------------- 420 ; special function bits 421 ;-------------------------------------------------------- 422 .area RSEG (ABS,DATA) 000000 423 .org 0x0000 000086 424 _SEL = 0x0086 000088 425 _IT0 = 0x0088 000089 426 _IE0 = 0x0089 00008A 427 _IT1 = 0x008a 00008B 428 _IE1 = 0x008b 00008C 429 _TR0 = 0x008c 00008D 430 _TF0 = 0x008d 00008E 431 _TR1 = 0x008e 00008F 432 _TF1 = 0x008f 000098 433 _RI = 0x0098 000099 434 _TI = 0x0099 00009A 435 _RB8 = 0x009a 00009B 436 _TB8 = 0x009b 00009C 437 _REN = 0x009c 00009D 438 _SM2 = 0x009d 00009E 439 _SM1 = 0x009e 00009F 440 _SM0 = 0x009f 0000A8 441 _EX0 = 0x00a8 0000A9 442 _ET0 = 0x00a9 0000AA 443 _EX1 = 0x00aa 0000AB 444 _ET1 = 0x00ab 0000AC 445 _ES0 = 0x00ac 0000AD 446 _ET2 = 0x00ad 0000AE 447 _ES1 = 0x00ae 0000AF 448 _EA = 0x00af 0000B8 449 _PX0 = 0x00b8 0000B9 450 _PT0 = 0x00b9 0000BA 451 _PX1 = 0x00ba 0000BB 452 _PT1 = 0x00bb 0000BC 453 _PS0 = 0x00bc 0000BD 454 _PT2 = 0x00bd 0000BE 455 _PS1 = 0x00be 0000C0 456 _RI1 = 0x00c0 0000C1 457 _TI1 = 0x00c1 0000C2 458 _RB81 = 0x00c2 0000C3 459 _TB81 = 0x00c3 0000C4 460 _REN1 = 0x00c4 0000C5 461 _SM21 = 0x00c5 0000C6 462 _SM11 = 0x00c6 0000C7 463 _SM01 = 0x00c7 0000C8 464 _CP_RL2 = 0x00c8 0000C9 465 _C_T2 = 0x00c9 0000CA 466 _TR2 = 0x00ca 0000CB 467 _EXEN2 = 0x00cb 0000CC 468 _TCLK = 0x00cc 0000CD 469 _RCLK = 0x00cd 0000CE 470 _EXF2 = 0x00ce 0000CF 471 _TF2 = 0x00cf 0000D0 472 _P = 0x00d0 0000D1 473 _FL = 0x00d1 0000D2 474 _OV = 0x00d2 0000D3 475 _RS0 = 0x00d3 0000D4 476 _RS1 = 0x00d4 0000D5 477 _F0 = 0x00d5 0000D6 478 _AC = 0x00d6 0000D7 479 _CY = 0x00d7 0000DB 480 _INT6 = 0x00db 0000DC 481 _RESI = 0x00dc 0000DD 482 _ERESI = 0x00dd 0000DF 483 _SMOD1 = 0x00df 0000E8 484 _EIUSB = 0x00e8 0000E9 485 _EI2C = 0x00e9 0000EA 486 _EIEX4 = 0x00ea 0000EB 487 _EIEX5 = 0x00eb 0000EC 488 _EIEX6 = 0x00ec 0000F8 489 _PUSB = 0x00f8 0000F9 490 _PI2C = 0x00f9 0000FA 491 _EIPX4 = 0x00fa 0000FB 492 _EIPX5 = 0x00fb 0000FC 493 _EIPX6 = 0x00fc 000080 494 _bitS_CLK = 0x0080 000081 495 _bitS_OUT = 0x0081 000082 496 _bitS_IN = 0x0082 0000A1 497 _bitALTERA_DATA0 = 0x00a1 0000A3 498 _bitALTERA_DCLK = 0x00a3 499 ;-------------------------------------------------------- 500 ; overlayable register banks 501 ;-------------------------------------------------------- 502 .area REG_BANK_0 (REL,OVR,DATA) 000000 503 .ds 8 504 ;-------------------------------------------------------- 505 ; internal ram data 506 ;-------------------------------------------------------- 507 .area DSEG (DATA) 000008 508 _g_tx_enable:: 000008 509 .ds 1 000009 510 _g_rx_enable:: 000009 511 .ds 1 00000A 512 _g_rx_overrun:: 00000A 513 .ds 1 00000B 514 _g_tx_underrun:: 00000B 515 .ds 1 00000C 516 _isr_tick_count_65536_87: 00000C 517 .ds 1 518 ;-------------------------------------------------------- 519 ; overlayable items in internal ram 520 ;-------------------------------------------------------- 521 ;-------------------------------------------------------- 522 ; Stack segment in internal ram 523 ;-------------------------------------------------------- 524 .area SSEG 00003A 525 __start__stack: 00003A 526 .ds 1 527 528 ;-------------------------------------------------------- 529 ; indirectly addressable internal ram data 530 ;-------------------------------------------------------- 531 .area ISEG (DATA) 532 ;-------------------------------------------------------- 533 ; absolute internal ram data 534 ;-------------------------------------------------------- 535 .area IABS (ABS,DATA) 536 .area IABS (ABS,DATA) 537 ;-------------------------------------------------------- 538 ; bit data 539 ;-------------------------------------------------------- 540 .area BSEG (BIT) 541 ;-------------------------------------------------------- 542 ; paged external ram data 543 ;-------------------------------------------------------- 544 .area PSEG (PAG,XDATA) 545 ;-------------------------------------------------------- 546 ; external ram data 547 ;-------------------------------------------------------- 548 .area XSEG (XDATA) 00E400 549 _GPIF_WAVE_DATA = 0xe400 00E480 550 _RES_WAVEDATA_END = 0xe480 00E600 551 _CPUCS = 0xe600 00E601 552 _IFCONFIG = 0xe601 00E602 553 _PINFLAGSAB = 0xe602 00E603 554 _PINFLAGSCD = 0xe603 00E604 555 _FIFORESET = 0xe604 00E605 556 _BREAKPT = 0xe605 00E606 557 _BPADDRH = 0xe606 00E607 558 _BPADDRL = 0xe607 00E608 559 _UART230 = 0xe608 00E609 560 _FIFOPINPOLAR = 0xe609 00E60A 561 _REVID = 0xe60a 00E60B 562 _REVCTL = 0xe60b 00E610 563 _EP1OUTCFG = 0xe610 00E611 564 _EP1INCFG = 0xe611 00E612 565 _EP2CFG = 0xe612 00E613 566 _EP4CFG = 0xe613 00E614 567 _EP6CFG = 0xe614 00E615 568 _EP8CFG = 0xe615 00E618 569 _EP2FIFOCFG = 0xe618 00E619 570 _EP4FIFOCFG = 0xe619 00E61A 571 _EP6FIFOCFG = 0xe61a 00E61B 572 _EP8FIFOCFG = 0xe61b 00E620 573 _EP2AUTOINLENH = 0xe620 00E621 574 _EP2AUTOINLENL = 0xe621 00E622 575 _EP4AUTOINLENH = 0xe622 00E623 576 _EP4AUTOINLENL = 0xe623 00E624 577 _EP6AUTOINLENH = 0xe624 00E625 578 _EP6AUTOINLENL = 0xe625 00E626 579 _EP8AUTOINLENH = 0xe626 00E627 580 _EP8AUTOINLENL = 0xe627 00E630 581 _EP2FIFOPFH = 0xe630 00E631 582 _EP2FIFOPFL = 0xe631 00E632 583 _EP4FIFOPFH = 0xe632 00E633 584 _EP4FIFOPFL = 0xe633 00E634 585 _EP6FIFOPFH = 0xe634 00E635 586 _EP6FIFOPFL = 0xe635 00E636 587 _EP8FIFOPFH = 0xe636 00E637 588 _EP8FIFOPFL = 0xe637 00E640 589 _EP2ISOINPKTS = 0xe640 00E641 590 _EP4ISOINPKTS = 0xe641 00E642 591 _EP6ISOINPKTS = 0xe642 00E643 592 _EP8ISOINPKTS = 0xe643 00E648 593 _INPKTEND = 0xe648 00E649 594 _OUTPKTEND = 0xe649 00E650 595 _EP2FIFOIE = 0xe650 00E651 596 _EP2FIFOIRQ = 0xe651 00E652 597 _EP4FIFOIE = 0xe652 00E653 598 _EP4FIFOIRQ = 0xe653 00E654 599 _EP6FIFOIE = 0xe654 00E655 600 _EP6FIFOIRQ = 0xe655 00E656 601 _EP8FIFOIE = 0xe656 00E657 602 _EP8FIFOIRQ = 0xe657 00E658 603 _IBNIE = 0xe658 00E659 604 _IBNIRQ = 0xe659 00E65A 605 _NAKIE = 0xe65a 00E65B 606 _NAKIRQ = 0xe65b 00E65C 607 _USBIE = 0xe65c 00E65D 608 _USBIRQ = 0xe65d 00E65E 609 _EPIE = 0xe65e 00E65F 610 _EPIRQ = 0xe65f 00E660 611 _GPIFIE = 0xe660 00E661 612 _GPIFIRQ = 0xe661 00E662 613 _USBERRIE = 0xe662 00E663 614 _USBERRIRQ = 0xe663 00E664 615 _ERRCNTLIM = 0xe664 00E665 616 _CLRERRCNT = 0xe665 00E666 617 _INT2IVEC = 0xe666 00E667 618 _INT4IVEC = 0xe667 00E668 619 _INTSETUP = 0xe668 00E670 620 _PORTACFG = 0xe670 00E671 621 _PORTCCFG = 0xe671 00E672 622 _PORTECFG = 0xe672 00E678 623 _I2CS = 0xe678 00E679 624 _I2DAT = 0xe679 00E67A 625 _I2CTL = 0xe67a 00E67B 626 _XAUTODAT1 = 0xe67b 00E67C 627 _XAUTODAT2 = 0xe67c 00E680 628 _USBCS = 0xe680 00E681 629 _SUSPEND = 0xe681 00E682 630 _WAKEUPCS = 0xe682 00E683 631 _TOGCTL = 0xe683 00E684 632 _USBFRAMEH = 0xe684 00E685 633 _USBFRAMEL = 0xe685 00E686 634 _MICROFRAME = 0xe686 00E687 635 _FNADDR = 0xe687 00E68A 636 _EP0BCH = 0xe68a 00E68B 637 _EP0BCL = 0xe68b 00E68D 638 _EP1OUTBC = 0xe68d 00E68F 639 _EP1INBC = 0xe68f 00E690 640 _EP2BCH = 0xe690 00E691 641 _EP2BCL = 0xe691 00E694 642 _EP4BCH = 0xe694 00E695 643 _EP4BCL = 0xe695 00E698 644 _EP6BCH = 0xe698 00E699 645 _EP6BCL = 0xe699 00E69C 646 _EP8BCH = 0xe69c 00E69D 647 _EP8BCL = 0xe69d 00E6A0 648 _EP0CS = 0xe6a0 00E6A1 649 _EP1OUTCS = 0xe6a1 00E6A2 650 _EP1INCS = 0xe6a2 00E6A3 651 _EP2CS = 0xe6a3 00E6A4 652 _EP4CS = 0xe6a4 00E6A5 653 _EP6CS = 0xe6a5 00E6A6 654 _EP8CS = 0xe6a6 00E6A7 655 _EP2FIFOFLGS = 0xe6a7 00E6A8 656 _EP4FIFOFLGS = 0xe6a8 00E6A9 657 _EP6FIFOFLGS = 0xe6a9 00E6AA 658 _EP8FIFOFLGS = 0xe6aa 00E6AB 659 _EP2FIFOBCH = 0xe6ab 00E6AC 660 _EP2FIFOBCL = 0xe6ac 00E6AD 661 _EP4FIFOBCH = 0xe6ad 00E6AE 662 _EP4FIFOBCL = 0xe6ae 00E6AF 663 _EP6FIFOBCH = 0xe6af 00E6B0 664 _EP6FIFOBCL = 0xe6b0 00E6B1 665 _EP8FIFOBCH = 0xe6b1 00E6B2 666 _EP8FIFOBCL = 0xe6b2 00E6B3 667 _SUDPTRH = 0xe6b3 00E6B4 668 _SUDPTRL = 0xe6b4 00E6B5 669 _SUDPTRCTL = 0xe6b5 00E6B8 670 _SETUPDAT = 0xe6b8 00E6C0 671 _GPIFWFSELECT = 0xe6c0 00E6C1 672 _GPIFIDLECS = 0xe6c1 00E6C2 673 _GPIFIDLECTL = 0xe6c2 00E6C3 674 _GPIFCTLCFG = 0xe6c3 00E6C4 675 _GPIFADRH = 0xe6c4 00E6C5 676 _GPIFADRL = 0xe6c5 00E6CE 677 _GPIFTCB3 = 0xe6ce 00E6CF 678 _GPIFTCB2 = 0xe6cf 00E6D0 679 _GPIFTCB1 = 0xe6d0 00E6D1 680 _GPIFTCB0 = 0xe6d1 00E6D2 681 _EP2GPIFFLGSEL = 0xe6d2 00E6D3 682 _EP2GPIFPFSTOP = 0xe6d3 00E6D4 683 _EP2GPIFTRIG = 0xe6d4 00E6DA 684 _EP4GPIFFLGSEL = 0xe6da 00E6DB 685 _EP4GPIFPFSTOP = 0xe6db 00E6DC 686 _EP4GPIFTRIG = 0xe6dc 00E6E2 687 _EP6GPIFFLGSEL = 0xe6e2 00E6E3 688 _EP6GPIFPFSTOP = 0xe6e3 00E6E4 689 _EP6GPIFTRIG = 0xe6e4 00E6EA 690 _EP8GPIFFLGSEL = 0xe6ea 00E6EB 691 _EP8GPIFPFSTOP = 0xe6eb 00E6EC 692 _EP8GPIFTRIG = 0xe6ec 00E6F0 693 _XGPIFSGLDATH = 0xe6f0 00E6F1 694 _XGPIFSGLDATLX = 0xe6f1 00E6F2 695 _XGPIFSGLDATLNOX = 0xe6f2 00E6F3 696 _GPIFREADYCFG = 0xe6f3 00E6F4 697 _GPIFREADYSTAT = 0xe6f4 00E6F5 698 _GPIFABORT = 0xe6f5 00E6C6 699 _FLOWSTATE = 0xe6c6 00E6C7 700 _FLOWLOGIC = 0xe6c7 00E6C8 701 _FLOWEQ0CTL = 0xe6c8 00E6C9 702 _FLOWEQ1CTL = 0xe6c9 00E6CA 703 _FLOWHOLDOFF = 0xe6ca 00E6CB 704 _FLOWSTB = 0xe6cb 00E6CC 705 _FLOWSTBEDGE = 0xe6cc 00E6CD 706 _FLOWSTBHPERIOD = 0xe6cd 00E60C 707 _GPIFHOLDAMOUNT = 0xe60c 00E67D 708 _UDMACRCH = 0xe67d 00E67E 709 _UDMACRCL = 0xe67e 00E67F 710 _UDMACRCQUAL = 0xe67f 00E6F8 711 _DBUG = 0xe6f8 00E6F9 712 _TESTCFG = 0xe6f9 00E6FA 713 _USBTEST = 0xe6fa 00E6FB 714 _CT1 = 0xe6fb 00E6FC 715 _CT2 = 0xe6fc 00E6FD 716 _CT3 = 0xe6fd 00E6FE 717 _CT4 = 0xe6fe 00E740 718 _EP0BUF = 0xe740 00E780 719 _EP1OUTBUF = 0xe780 00E7C0 720 _EP1INBUF = 0xe7c0 00F000 721 _EP2FIFOBUF = 0xf000 00F400 722 _EP4FIFOBUF = 0xf400 00F800 723 _EP6FIFOBUF = 0xf800 00FC00 724 _EP8FIFOBUF = 0xfc00 00E1F0 725 _hash1 = 0xe1f0 001800 726 _patch_usb_descriptors_hw_rev_65536_90: 001800 727 .ds 1 001801 728 _patch_usb_descriptors_serial_no_65536_90: 001801 729 .ds 8 730 ;-------------------------------------------------------- 731 ; absolute external ram data 732 ;-------------------------------------------------------- 733 .area XABS (ABS,XDATA) 734 ;-------------------------------------------------------- 735 ; external initialized ram data 736 ;-------------------------------------------------------- 737 .area HOME (CODE) 738 .area GSINIT0 (CODE) 739 .area GSINIT1 (CODE) 740 .area GSINIT2 (CODE) 741 .area GSINIT3 (CODE) 742 .area GSINIT4 (CODE) 743 .area GSINIT5 (CODE) 744 .area GSINIT (CODE) 745 .area GSFINAL (CODE) 746 .area CSEG (CODE) 747 ;-------------------------------------------------------- 748 ; interrupt vector 749 ;-------------------------------------------------------- 750 .area HOME (CODE) 001284 751 __interrupt_vect: 001284 02 12 8A [24] 752 ljmp __sdcc_gsinit_startup 753 ;-------------------------------------------------------- 754 ; global & static initialisations 755 ;-------------------------------------------------------- 756 .area HOME (CODE) 757 .area GSINIT (CODE) 758 .area GSFINAL (CODE) 759 .area GSINIT (CODE) 760 .globl __sdcc_gsinit_startup 761 .globl __sdcc_program_startup 762 .globl __start__stack 763 .globl __mcs51_genRAMCLEAR 764 ;------------------------------------------------------------ 765 ;Allocation info for local variables in function 'isr_tick' 766 ;------------------------------------------------------------ 767 ;count Allocated with name '_isr_tick_count_65536_87' 768 ;------------------------------------------------------------ 769 ; usrp_main.c:309: static unsigned char count = 1; 001258 75 0C 01 [24] 770 mov _isr_tick_count_65536_87,#0x01 771 ; usrp_main.c:55: unsigned char g_tx_enable = 0; 00125B 75 08 00 [24] 772 mov _g_tx_enable,#0x00 773 ; usrp_main.c:56: unsigned char g_rx_enable = 0; 00125E 75 09 00 [24] 774 mov _g_rx_enable,#0x00 775 ; usrp_main.c:57: unsigned char g_rx_overrun = 0; 001261 75 0A 00 [24] 776 mov _g_rx_overrun,#0x00 777 ; usrp_main.c:58: unsigned char g_tx_underrun = 0; 001264 75 0B 00 [24] 778 mov _g_tx_underrun,#0x00 779 .area GSFINAL (CODE) 00129D 02 12 87 [24] 780 ljmp __sdcc_program_startup 781 ;-------------------------------------------------------- 782 ; Home 783 ;-------------------------------------------------------- 784 .area HOME (CODE) 785 .area HOME (CODE) 001287 786 __sdcc_program_startup: 001287 02 04 F1 [24] 787 ljmp _main 788 ; return from main will return to caller 789 ;-------------------------------------------------------- 790 ; code 791 ;-------------------------------------------------------- 792 .area CSEG (CODE) 793 ;------------------------------------------------------------ 794 ;Allocation info for local variables in function 'get_ep0_data' 795 ;------------------------------------------------------------ 796 ; usrp_main.c:68: get_ep0_data (void) 797 ; ----------------------------------------- 798 ; function get_ep0_data 799 ; ----------------------------------------- 000180 800 _get_ep0_data: 000007 801 ar7 = 0x07 000006 802 ar6 = 0x06 000005 803 ar5 = 0x05 000004 804 ar4 = 0x04 000003 805 ar3 = 0x03 000002 806 ar2 = 0x02 000001 807 ar1 = 0x01 000000 808 ar0 = 0x00 809 ; usrp_main.c:70: EP0BCL = 0; // arm EP0 for OUT xfer. This sets the busy bit 000180 90 E6 8B [24] 810 mov dptr,#_EP0BCL 000183 E4 [12] 811 clr a 000184 F0 [24] 812 movx @dptr,a 813 ; usrp_main.c:72: while (EP0CS & bmEPBUSY) // wait for busy to clear 000185 814 00101$: 000185 90 E6 A0 [24] 815 mov dptr,#_EP0CS 000188 E0 [24] 816 movx a,@dptr 000189 20 E1 F9 [24] 817 jb acc.1,00101$ 818 ; usrp_main.c:74: } 00018C 22 [24] 819 ret 820 ;------------------------------------------------------------ 821 ;Allocation info for local variables in function 'app_vendor_cmd' 822 ;------------------------------------------------------------ 823 ; usrp_main.c:81: app_vendor_cmd (void) 824 ; ----------------------------------------- 825 ; function app_vendor_cmd 826 ; ----------------------------------------- 00018D 827 _app_vendor_cmd: 828 ; usrp_main.c:83: if (bRequestType == VRT_VENDOR_IN){ 00018D 90 E6 B8 [24] 829 mov dptr,#_SETUPDAT 000190 E0 [24] 830 movx a,@dptr 000191 FF [12] 831 mov r7,a 000192 BF C0 02 [24] 832 cjne r7,#0xc0,00214$ 000195 80 03 [24] 833 sjmp 00215$ 000197 834 00214$: 000197 02 02 60 [24] 835 ljmp 00142$ 00019A 836 00215$: 837 ; usrp_main.c:89: switch (bRequest){ 00019A 90 E6 B9 [24] 838 mov dptr,#(_SETUPDAT + 0x0001) 00019D E0 [24] 839 movx a,@dptr 00019E FF [12] 840 mov r7,a 00019F BF 80 02 [24] 841 cjne r7,#0x80,00216$ 0001A2 80 0E [24] 842 sjmp 00101$ 0001A4 843 00216$: 0001A4 BF 81 02 [24] 844 cjne r7,#0x81,00217$ 0001A7 80 45 [24] 845 sjmp 00106$ 0001A9 846 00217$: 0001A9 BF 82 03 [24] 847 cjne r7,#0x82,00218$ 0001AC 02 02 1C [24] 848 ljmp 00109$ 0001AF 849 00218$: 0001AF 02 02 5C [24] 850 ljmp 00112$ 851 ; usrp_main.c:91: case VRQ_GET_STATUS: 0001B2 852 00101$: 853 ; usrp_main.c:92: switch (wIndexL){ 0001B2 90 E6 BC [24] 854 mov dptr,#(_SETUPDAT + 0x0004) 0001B5 E0 [24] 855 movx a,@dptr 0001B6 FF [12] 856 mov r7,a 0001B7 60 05 [24] 857 jz 00102$ 858 ; usrp_main.c:94: case GS_TX_UNDERRUN: 0001B9 BF 01 2E [24] 859 cjne r7,#0x01,00104$ 0001BC 80 16 [24] 860 sjmp 00103$ 0001BE 861 00102$: 862 ; usrp_main.c:95: EP0BUF[0] = g_tx_underrun; 0001BE 90 E7 40 [24] 863 mov dptr,#_EP0BUF 0001C1 E5 0B [12] 864 mov a,_g_tx_underrun 0001C3 F0 [24] 865 movx @dptr,a 866 ; usrp_main.c:96: g_tx_underrun = 0; 0001C4 75 0B 00 [24] 867 mov _g_tx_underrun,#0x00 868 ; usrp_main.c:97: EP0BCH = 0; 0001C7 90 E6 8A [24] 869 mov dptr,#_EP0BCH 0001CA E4 [12] 870 clr a 0001CB F0 [24] 871 movx @dptr,a 872 ; usrp_main.c:98: EP0BCL = 1; 0001CC 90 E6 8B [24] 873 mov dptr,#_EP0BCL 0001CF 04 [12] 874 inc a 0001D0 F0 [24] 875 movx @dptr,a 876 ; usrp_main.c:99: break; 0001D1 02 03 85 [24] 877 ljmp 00143$ 878 ; usrp_main.c:101: case GS_RX_OVERRUN: 0001D4 879 00103$: 880 ; usrp_main.c:102: EP0BUF[0] = g_rx_overrun; 0001D4 90 E7 40 [24] 881 mov dptr,#_EP0BUF 0001D7 E5 0A [12] 882 mov a,_g_rx_overrun 0001D9 F0 [24] 883 movx @dptr,a 884 ; usrp_main.c:103: g_rx_overrun = 0; 0001DA 75 0A 00 [24] 885 mov _g_rx_overrun,#0x00 886 ; usrp_main.c:104: EP0BCH = 0; 0001DD 90 E6 8A [24] 887 mov dptr,#_EP0BCH 0001E0 E4 [12] 888 clr a 0001E1 F0 [24] 889 movx @dptr,a 890 ; usrp_main.c:105: EP0BCL = 1; 0001E2 90 E6 8B [24] 891 mov dptr,#_EP0BCL 0001E5 04 [12] 892 inc a 0001E6 F0 [24] 893 movx @dptr,a 894 ; usrp_main.c:106: break; 0001E7 02 03 85 [24] 895 ljmp 00143$ 896 ; usrp_main.c:108: default: 0001EA 897 00104$: 898 ; usrp_main.c:109: return 0; 0001EA 75 82 00 [24] 899 mov dpl,#0x00 0001ED 22 [24] 900 ret 901 ; usrp_main.c:113: case VRQ_I2C_READ: 0001EE 902 00106$: 903 ; usrp_main.c:114: if (!i2c_read (wValueL, EP0BUF, wLengthL)) 0001EE 90 E6 BA [24] 904 mov dptr,#(_SETUPDAT + 0x0002) 0001F1 E0 [24] 905 movx a,@dptr 0001F2 FF [12] 906 mov r7,a 0001F3 75 1B 40 [24] 907 mov _i2c_read_PARM_2,#_EP0BUF 0001F6 75 1C E7 [24] 908 mov (_i2c_read_PARM_2 + 1),#(_EP0BUF >> 8) 0001F9 90 E6 BE [24] 909 mov dptr,#(_SETUPDAT + 0x0006) 0001FC E0 [24] 910 movx a,@dptr 0001FD F5 1D [12] 911 mov _i2c_read_PARM_3,a 0001FF 8F 82 [24] 912 mov dpl,r7 000201 12 0A D4 [24] 913 lcall _i2c_read 000204 E5 82 [12] 914 mov a,dpl 915 ; usrp_main.c:115: return 0; 000206 70 03 [24] 916 jnz 00108$ 000208 F5 82 [12] 917 mov dpl,a 00020A 22 [24] 918 ret 00020B 919 00108$: 920 ; usrp_main.c:117: EP0BCH = 0; 00020B 90 E6 8A [24] 921 mov dptr,#_EP0BCH 00020E E4 [12] 922 clr a 00020F F0 [24] 923 movx @dptr,a 924 ; usrp_main.c:118: EP0BCL = wLengthL; 000210 90 E6 BE [24] 925 mov dptr,#(_SETUPDAT + 0x0006) 000213 E0 [24] 926 movx a,@dptr 000214 FF [12] 927 mov r7,a 000215 90 E6 8B [24] 928 mov dptr,#_EP0BCL 000218 F0 [24] 929 movx @dptr,a 930 ; usrp_main.c:119: break; 000219 02 03 85 [24] 931 ljmp 00143$ 932 ; usrp_main.c:121: case VRQ_SPI_READ: 00021C 933 00109$: 934 ; usrp_main.c:122: if (!spi_read (wValueH, wValueL, wIndexH, wIndexL, EP0BUF, wLengthL)) 00021C 90 E6 BB [24] 935 mov dptr,#(_SETUPDAT + 0x0003) 00021F E0 [24] 936 movx a,@dptr 000220 FF [12] 937 mov r7,a 000221 90 E6 BA [24] 938 mov dptr,#(_SETUPDAT + 0x0002) 000224 E0 [24] 939 movx a,@dptr 000225 F5 22 [12] 940 mov _spi_read_PARM_2,a 000227 90 E6 BD [24] 941 mov dptr,#(_SETUPDAT + 0x0005) 00022A E0 [24] 942 movx a,@dptr 00022B F5 23 [12] 943 mov _spi_read_PARM_3,a 00022D 90 E6 BC [24] 944 mov dptr,#(_SETUPDAT + 0x0004) 000230 E0 [24] 945 movx a,@dptr 000231 F5 24 [12] 946 mov _spi_read_PARM_4,a 000233 75 25 40 [24] 947 mov _spi_read_PARM_5,#_EP0BUF 000236 75 26 E7 [24] 948 mov (_spi_read_PARM_5 + 1),#(_EP0BUF >> 8) 000239 90 E6 BE [24] 949 mov dptr,#(_SETUPDAT + 0x0006) 00023C E0 [24] 950 movx a,@dptr 00023D F5 27 [12] 951 mov _spi_read_PARM_6,a 00023F 8F 82 [24] 952 mov dpl,r7 000241 12 08 6E [24] 953 lcall _spi_read 000244 E5 82 [12] 954 mov a,dpl 955 ; usrp_main.c:123: return 0; 000246 70 03 [24] 956 jnz 00111$ 000248 F5 82 [12] 957 mov dpl,a 00024A 22 [24] 958 ret 00024B 959 00111$: 960 ; usrp_main.c:125: EP0BCH = 0; 00024B 90 E6 8A [24] 961 mov dptr,#_EP0BCH 00024E E4 [12] 962 clr a 00024F F0 [24] 963 movx @dptr,a 964 ; usrp_main.c:126: EP0BCL = wLengthL; 000250 90 E6 BE [24] 965 mov dptr,#(_SETUPDAT + 0x0006) 000253 E0 [24] 966 movx a,@dptr 000254 FF [12] 967 mov r7,a 000255 90 E6 8B [24] 968 mov dptr,#_EP0BCL 000258 F0 [24] 969 movx @dptr,a 970 ; usrp_main.c:127: break; 000259 02 03 85 [24] 971 ljmp 00143$ 972 ; usrp_main.c:129: default: 00025C 973 00112$: 974 ; usrp_main.c:130: return 0; 00025C 75 82 00 [24] 975 mov dpl,#0x00 00025F 22 [24] 976 ret 977 ; usrp_main.c:131: } 000260 978 00142$: 979 ; usrp_main.c:134: else if (bRequestType == VRT_VENDOR_OUT){ 000260 90 E6 B8 [24] 980 mov dptr,#_SETUPDAT 000263 E0 [24] 981 movx a,@dptr 000264 FF [12] 982 mov r7,a 000265 BF 40 02 [24] 983 cjne r7,#0x40,00223$ 000268 80 03 [24] 984 sjmp 00224$ 00026A 985 00223$: 00026A 02 03 81 [24] 986 ljmp 00139$ 00026D 987 00224$: 988 ; usrp_main.c:140: switch (bRequest){ 00026D 90 E6 B9 [24] 989 mov dptr,#(_SETUPDAT + 0x0001) 000270 E0 [24] 990 movx a,@dptr 000271 FF [12] 991 mov r7,a 000272 24 F4 [12] 992 add a,#0xff - 0x0b 000274 50 03 [24] 993 jnc 00225$ 000276 02 03 7D [24] 994 ljmp 00136$ 000279 995 00225$: 000279 EF [12] 996 mov a,r7 00027A 24 0A [12] 997 add a,#(00226$-3-.) 00027C 83 [24] 998 movc a,@a+pc 00027D F5 82 [12] 999 mov dpl,a 00027F EF [12] 1000 mov a,r7 000280 24 10 [12] 1001 add a,#(00227$-3-.) 000282 83 [24] 1002 movc a,@a+pc 000283 F5 83 [12] 1003 mov dph,a 000285 E4 [12] 1004 clr a 000286 73 [24] 1005 jmp @a+dptr 000287 1006 00226$: 000287 7D 1007 .db 00136$ 000288 9F 1008 .db 00114$ 000289 C7 1009 .db 00119$ 00028A 7D 1010 .db 00136$ 00028B F1 1011 .db 00125$ 00028C FD 1012 .db 00126$ 00028D 09 1013 .db 00127$ 00028E 7D 1014 .db 00136$ 00028F 2B 1015 .db 00130$ 000290 4B 1016 .db 00133$ 000291 15 1017 .db 00128$ 000292 20 1018 .db 00129$ 000293 1019 00227$: 000293 03 1020 .db 00136$>>8 000294 02 1021 .db 00114$>>8 000295 02 1022 .db 00119$>>8 000296 03 1023 .db 00136$>>8 000297 02 1024 .db 00125$>>8 000298 02 1025 .db 00126$>>8 000299 03 1026 .db 00127$>>8 00029A 03 1027 .db 00136$>>8 00029B 03 1028 .db 00130$>>8 00029C 03 1029 .db 00133$>>8 00029D 03 1030 .db 00128$>>8 00029E 03 1031 .db 00129$>>8 1032 ; usrp_main.c:142: case VRQ_SET_LED: 00029F 1033 00114$: 1034 ; usrp_main.c:143: switch (wIndexL){ 00029F 90 E6 BC [24] 1035 mov dptr,#(_SETUPDAT + 0x0004) 0002A2 E0 [24] 1036 movx a,@dptr 0002A3 FF [12] 1037 mov r7,a 0002A4 60 05 [24] 1038 jz 00115$ 1039 ; usrp_main.c:144: case 0: 0002A6 BF 01 1A [24] 1040 cjne r7,#0x01,00117$ 0002A9 80 0C [24] 1041 sjmp 00116$ 0002AB 1042 00115$: 1043 ; usrp_main.c:145: set_led_0 (wValueL); 0002AB 90 E6 BA [24] 1044 mov dptr,#(_SETUPDAT + 0x0002) 0002AE E0 [24] 1045 movx a,@dptr 0002AF F5 82 [12] 1046 mov dpl,a 0002B1 12 05 E1 [24] 1047 lcall _set_led_0 1048 ; usrp_main.c:146: break; 0002B4 02 03 85 [24] 1049 ljmp 00143$ 1050 ; usrp_main.c:148: case 1: 0002B7 1051 00116$: 1052 ; usrp_main.c:149: set_led_1 (wValueL); 0002B7 90 E6 BA [24] 1053 mov dptr,#(_SETUPDAT + 0x0002) 0002BA E0 [24] 1054 movx a,@dptr 0002BB F5 82 [12] 1055 mov dpl,a 0002BD 12 05 ED [24] 1056 lcall _set_led_1 1057 ; usrp_main.c:150: break; 0002C0 02 03 85 [24] 1058 ljmp 00143$ 1059 ; usrp_main.c:152: default: 0002C3 1060 00117$: 1061 ; usrp_main.c:153: return 0; 0002C3 75 82 00 [24] 1062 mov dpl,#0x00 0002C6 22 [24] 1063 ret 1064 ; usrp_main.c:157: case VRQ_FPGA_LOAD: 0002C7 1065 00119$: 1066 ; usrp_main.c:158: switch (wIndexL){ // sub-command 0002C7 90 E6 BC [24] 1067 mov dptr,#(_SETUPDAT + 0x0004) 0002CA E0 [24] 1068 movx a,@dptr 0002CB FF [12] 1069 mov r7,a 0002CC 60 0A [24] 1070 jz 00120$ 0002CE BF 01 02 [24] 1071 cjne r7,#0x01,00231$ 0002D1 80 08 [24] 1072 sjmp 00121$ 0002D3 1073 00231$: 1074 ; usrp_main.c:159: case FL_BEGIN: 0002D3 BF 02 17 [24] 1075 cjne r7,#0x02,00123$ 0002D6 80 12 [24] 1076 sjmp 00122$ 0002D8 1077 00120$: 1078 ; usrp_main.c:160: return fpga_load_begin (); 0002D8 02 06 7E [24] 1079 ljmp _fpga_load_begin 1080 ; usrp_main.c:162: case FL_XFER: 0002DB 1081 00121$: 1082 ; usrp_main.c:163: get_ep0_data (); 0002DB 12 01 80 [24] 1083 lcall _get_ep0_data 1084 ; usrp_main.c:164: return fpga_load_xfer (EP0BUF, EP0BCL); 0002DE 90 E6 8B [24] 1085 mov dptr,#_EP0BCL 0002E1 E0 [24] 1086 movx a,@dptr 0002E2 F5 12 [12] 1087 mov _fpga_load_xfer_PARM_2,a 0002E4 90 E7 40 [24] 1088 mov dptr,#_EP0BUF 0002E7 02 06 ED [24] 1089 ljmp _fpga_load_xfer 1090 ; usrp_main.c:166: case FL_END: 0002EA 1091 00122$: 1092 ; usrp_main.c:167: return fpga_load_end (); 0002EA 02 06 FD [24] 1093 ljmp _fpga_load_end 1094 ; usrp_main.c:169: default: 0002ED 1095 00123$: 1096 ; usrp_main.c:170: return 0; 0002ED 75 82 00 [24] 1097 mov dpl,#0x00 0002F0 22 [24] 1098 ret 1099 ; usrp_main.c:175: case VRQ_FPGA_SET_RESET: 0002F1 1100 00125$: 1101 ; usrp_main.c:176: fpga_set_reset (wValueL); 0002F1 90 E6 BA [24] 1102 mov dptr,#(_SETUPDAT + 0x0002) 0002F4 E0 [24] 1103 movx a,@dptr 0002F5 F5 82 [12] 1104 mov dpl,a 0002F7 12 07 64 [24] 1105 lcall _fpga_set_reset 1106 ; usrp_main.c:177: break; 0002FA 02 03 85 [24] 1107 ljmp 00143$ 1108 ; usrp_main.c:179: case VRQ_FPGA_SET_TX_ENABLE: 0002FD 1109 00126$: 1110 ; usrp_main.c:180: fpga_set_tx_enable (wValueL); 0002FD 90 E6 BA [24] 1111 mov dptr,#(_SETUPDAT + 0x0002) 000300 E0 [24] 1112 movx a,@dptr 000301 F5 82 [12] 1113 mov dpl,a 000303 12 07 7D [24] 1114 lcall _fpga_set_tx_enable 1115 ; usrp_main.c:181: break; 000306 02 03 85 [24] 1116 ljmp 00143$ 1117 ; usrp_main.c:183: case VRQ_FPGA_SET_RX_ENABLE: 000309 1118 00127$: 1119 ; usrp_main.c:184: fpga_set_rx_enable (wValueL); 000309 90 E6 BA [24] 1120 mov dptr,#(_SETUPDAT + 0x0002) 00030C E0 [24] 1121 movx a,@dptr 00030D F5 82 [12] 1122 mov dpl,a 00030F 12 07 98 [24] 1123 lcall _fpga_set_rx_enable 1124 ; usrp_main.c:185: break; 000312 02 03 85 [24] 1125 ljmp 00143$ 1126 ; usrp_main.c:187: case VRQ_FPGA_SET_TX_RESET: 000315 1127 00128$: 1128 ; usrp_main.c:188: fpga_set_tx_reset (wValueL); 000315 90 E6 BA [24] 1129 mov dptr,#(_SETUPDAT + 0x0002) 000318 E0 [24] 1130 movx a,@dptr 000319 F5 82 [12] 1131 mov dpl,a 00031B 12 07 B3 [24] 1132 lcall _fpga_set_tx_reset 1133 ; usrp_main.c:189: break; 1134 ; usrp_main.c:191: case VRQ_FPGA_SET_RX_RESET: 00031E 80 65 [24] 1135 sjmp 00143$ 000320 1136 00129$: 1137 ; usrp_main.c:192: fpga_set_rx_reset (wValueL); 000320 90 E6 BA [24] 1138 mov dptr,#(_SETUPDAT + 0x0002) 000323 E0 [24] 1139 movx a,@dptr 000324 F5 82 [12] 1140 mov dpl,a 000326 12 07 BD [24] 1141 lcall _fpga_set_rx_reset 1142 ; usrp_main.c:193: break; 1143 ; usrp_main.c:195: case VRQ_I2C_WRITE: 000329 80 5A [24] 1144 sjmp 00143$ 00032B 1145 00130$: 1146 ; usrp_main.c:196: get_ep0_data (); 00032B 12 01 80 [24] 1147 lcall _get_ep0_data 1148 ; usrp_main.c:197: if (!i2c_write (wValueL, EP0BUF, EP0BCL)) 00032E 90 E6 BA [24] 1149 mov dptr,#(_SETUPDAT + 0x0002) 000331 E0 [24] 1150 movx a,@dptr 000332 FF [12] 1151 mov r7,a 000333 75 1B 40 [24] 1152 mov _i2c_write_PARM_2,#_EP0BUF 000336 75 1C E7 [24] 1153 mov (_i2c_write_PARM_2 + 1),#(_EP0BUF >> 8) 000339 90 E6 8B [24] 1154 mov dptr,#_EP0BCL 00033C E0 [24] 1155 movx a,@dptr 00033D F5 1D [12] 1156 mov _i2c_write_PARM_3,a 00033F 8F 82 [24] 1157 mov dpl,r7 000341 12 0B 8E [24] 1158 lcall _i2c_write 000344 E5 82 [12] 1159 mov a,dpl 1160 ; usrp_main.c:198: return 0; 000346 70 3D [24] 1161 jnz 00143$ 000348 F5 82 [12] 1162 mov dpl,a 1163 ; usrp_main.c:201: case VRQ_SPI_WRITE: 00034A 22 [24] 1164 ret 00034B 1165 00133$: 1166 ; usrp_main.c:202: get_ep0_data (); 00034B 12 01 80 [24] 1167 lcall _get_ep0_data 1168 ; usrp_main.c:203: if (!spi_write (wValueH, wValueL, wIndexH, wIndexL, EP0BUF, EP0BCL)) 00034E 90 E6 BB [24] 1169 mov dptr,#(_SETUPDAT + 0x0003) 000351 E0 [24] 1170 movx a,@dptr 000352 FF [12] 1171 mov r7,a 000353 90 E6 BA [24] 1172 mov dptr,#(_SETUPDAT + 0x0002) 000356 E0 [24] 1173 movx a,@dptr 000357 F5 28 [12] 1174 mov _spi_write_PARM_2,a 000359 90 E6 BD [24] 1175 mov dptr,#(_SETUPDAT + 0x0005) 00035C E0 [24] 1176 movx a,@dptr 00035D F5 29 [12] 1177 mov _spi_write_PARM_3,a 00035F 90 E6 BC [24] 1178 mov dptr,#(_SETUPDAT + 0x0004) 000362 E0 [24] 1179 movx a,@dptr 000363 F5 2A [12] 1180 mov _spi_write_PARM_4,a 000365 75 2B 40 [24] 1181 mov _spi_write_PARM_5,#_EP0BUF 000368 75 2C E7 [24] 1182 mov (_spi_write_PARM_5 + 1),#(_EP0BUF >> 8) 00036B 90 E6 8B [24] 1183 mov dptr,#_EP0BCL 00036E E0 [24] 1184 movx a,@dptr 00036F F5 2D [12] 1185 mov _spi_write_PARM_6,a 000371 8F 82 [24] 1186 mov dpl,r7 000373 12 08 E0 [24] 1187 lcall _spi_write 000376 E5 82 [12] 1188 mov a,dpl 1189 ; usrp_main.c:204: return 0; 000378 70 0B [24] 1190 jnz 00143$ 00037A F5 82 [12] 1191 mov dpl,a 1192 ; usrp_main.c:207: default: 00037C 22 [24] 1193 ret 00037D 1194 00136$: 1195 ; usrp_main.c:208: return 0; 00037D 75 82 00 [24] 1196 mov dpl,#0x00 1197 ; usrp_main.c:209: } 000380 22 [24] 1198 ret 000381 1199 00139$: 1200 ; usrp_main.c:213: return 0; // invalid bRequestType 000381 75 82 00 [24] 1201 mov dpl,#0x00 000384 22 [24] 1202 ret 000385 1203 00143$: 1204 ; usrp_main.c:215: return 1; 000385 75 82 01 [24] 1205 mov dpl,#0x01 1206 ; usrp_main.c:216: } 000388 22 [24] 1207 ret 1208 ;------------------------------------------------------------ 1209 ;Allocation info for local variables in function 'main_loop' 1210 ;------------------------------------------------------------ 1211 ; usrp_main.c:221: main_loop (void) 1212 ; ----------------------------------------- 1213 ; function main_loop 1214 ; ----------------------------------------- 000389 1215 _main_loop: 1216 ; usrp_main.c:223: setup_flowstate_common (); 000389 90 E6 C6 [24] 1217 mov dptr,#_FLOWSTATE 00038C 74 81 [12] 1218 mov a,#0x81 00038E F0 [24] 1219 movx @dptr,a 00038F 90 E6 C7 [24] 1220 mov dptr,#_FLOWLOGIC 000392 74 2D [12] 1221 mov a,#0x2d 000394 F0 [24] 1222 movx @dptr,a 000395 90 E6 C8 [24] 1223 mov dptr,#_FLOWEQ0CTL 000398 74 26 [12] 1224 mov a,#0x26 00039A F0 [24] 1225 movx @dptr,a 00039B 90 E6 C9 [24] 1226 mov dptr,#_FLOWEQ1CTL 00039E E4 [12] 1227 clr a 00039F F0 [24] 1228 movx @dptr,a 0003A0 90 E6 CA [24] 1229 mov dptr,#_FLOWHOLDOFF 0003A3 74 04 [12] 1230 mov a,#0x04 0003A5 F0 [24] 1231 movx @dptr,a 0003A6 90 E6 CB [24] 1232 mov dptr,#_FLOWSTB 0003A9 F0 [24] 1233 movx @dptr,a 0003AA 90 E6 CC [24] 1234 mov dptr,#_FLOWSTBEDGE 0003AD 14 [12] 1235 dec a 0003AE F0 [24] 1236 movx @dptr,a 0003AF 90 E6 CD [24] 1237 mov dptr,#_FLOWSTBHPERIOD 0003B2 14 [12] 1238 dec a 0003B3 F0 [24] 1239 movx @dptr,a 0003B4 90 E6 0C [24] 1240 mov dptr,#_GPIFHOLDAMOUNT 0003B7 E4 [12] 1241 clr a 0003B8 F0 [24] 1242 movx @dptr,a 1243 ; usrp_main.c:225: while (1){ 0003B9 1244 00140$: 1245 ; usrp_main.c:227: if (usb_setup_packet_avail ()) 0003B9 30 00 03 [24] 1246 jnb __usb_got_SUDAV,00105$ 1247 ; usrp_main.c:228: usb_handle_setup_packet (); 0003BC 12 0D 86 [24] 1248 lcall _usb_handle_setup_packet 0003BF 1249 00105$: 1250 ; usrp_main.c:231: if (GPIFTRIG & bmGPIF_IDLE){ 0003BF E5 BB [12] 1251 mov a,_GPIFTRIG 0003C1 30 E7 F5 [24] 1252 jnb acc.7,00140$ 1253 ; usrp_main.c:237: if (UC_BOARD_HAS_FPGA && (USRP_PA & (bmPA_TX_UNDERRUN | bmPA_RX_OVERRUN))){ 0003C4 E5 80 [12] 1254 mov a,_IOA 0003C6 54 C0 [12] 1255 anl a,#0xc0 0003C8 60 16 [24] 1256 jz 00114$ 1257 ; usrp_main.c:240: if (USRP_PA & bmPA_TX_UNDERRUN) 0003CA E5 80 [12] 1258 mov a,_IOA 0003CC 30 E7 03 [24] 1259 jnb acc.7,00107$ 1260 ; usrp_main.c:241: g_tx_underrun = 1; 0003CF 75 0B 01 [24] 1261 mov _g_tx_underrun,#0x01 0003D2 1262 00107$: 1263 ; usrp_main.c:243: if (USRP_PA & bmPA_RX_OVERRUN) 0003D2 E5 80 [12] 1264 mov a,_IOA 0003D4 30 E6 03 [24] 1265 jnb acc.6,00110$ 1266 ; usrp_main.c:244: g_rx_overrun = 1; 0003D7 75 0A 01 [24] 1267 mov _g_rx_overrun,#0x01 1268 ; usrp_main.c:247: fpga_clear_flags (); 0003DA 1269 00110$: 0003DA 43 B1 08 [24] 1270 orl _IOE,#0x08 0003DD 53 B1 F7 [24] 1271 anl _IOE,#0xf7 0003E0 1272 00114$: 1273 ; usrp_main.c:253: if (g_tx_enable && !(EP24FIFOFLGS & 0x02)){ // USB end point fifo is not empty... 0003E0 E5 08 [12] 1274 mov a,_g_tx_enable 0003E2 60 53 [24] 1275 jz 00125$ 0003E4 E5 AB [12] 1276 mov a,_EP24FIFOFLGS 0003E6 20 E1 4E [24] 1277 jb acc.1,00125$ 1278 ; usrp_main.c:255: if (fpga_has_room_for_packet ()){ // ... and FPGA has room for packet 0003E9 90 E6 F4 [24] 1279 mov dptr,#_GPIFREADYSTAT 0003EC E0 [24] 1280 movx a,@dptr 0003ED 30 E0 47 [24] 1281 jnb acc.0,00125$ 1282 ; usrp_main.c:257: GPIFTCB1 = 0x01; SYNCDELAY; 0003F0 90 E6 D0 [24] 1283 mov dptr,#_GPIFTCB1 0003F3 74 01 [12] 1284 mov a,#0x01 0003F5 F0 [24] 1285 movx @dptr,a 0003F6 00 [12] 1286 nop; nop; nop; 1287 ; usrp_main.c:258: GPIFTCB0 = 0x00; SYNCDELAY; 0003F7 90 E6 D1 [24] 1288 mov dptr,#_GPIFTCB0 0003FA E4 [12] 1289 clr a 0003FB F0 [24] 1290 movx @dptr,a 0003FC 00 [12] 1291 nop; nop; nop; 1292 ; usrp_main.c:260: setup_flowstate_write (); 0003FD 90 E6 C6 [24] 1293 mov dptr,#_FLOWSTATE 000400 74 81 [12] 1294 mov a,#0x81 000402 F0 [24] 1295 movx @dptr,a 000403 90 E6 C7 [24] 1296 mov dptr,#_FLOWLOGIC 000406 74 2D [12] 1297 mov a,#0x2d 000408 F0 [24] 1298 movx @dptr,a 000409 90 E6 C8 [24] 1299 mov dptr,#_FLOWEQ0CTL 00040C 74 21 [12] 1300 mov a,#0x21 00040E F0 [24] 1301 movx @dptr,a 00040F 90 E6 C9 [24] 1302 mov dptr,#_FLOWEQ1CTL 000412 E4 [12] 1303 clr a 000413 F0 [24] 1304 movx @dptr,a 000414 90 E6 CA [24] 1305 mov dptr,#_FLOWHOLDOFF 000417 74 04 [12] 1306 mov a,#0x04 000419 F0 [24] 1307 movx @dptr,a 00041A 90 E6 CB [24] 1308 mov dptr,#_FLOWSTB 00041D F0 [24] 1309 movx @dptr,a 00041E 90 E6 CC [24] 1310 mov dptr,#_FLOWSTBEDGE 000421 14 [12] 1311 dec a 000422 F0 [24] 1312 movx @dptr,a 000423 90 E6 CD [24] 1313 mov dptr,#_FLOWSTBHPERIOD 000426 14 [12] 1314 dec a 000427 F0 [24] 1315 movx @dptr,a 000428 90 E6 0C [24] 1316 mov dptr,#_GPIFHOLDAMOUNT 00042B E4 [12] 1317 clr a 00042C F0 [24] 1318 movx @dptr,a 1319 ; usrp_main.c:262: SYNCDELAY; 00042D 00 [12] 1320 nop; nop; nop; 1321 ; usrp_main.c:263: GPIFTRIG = bmGPIF_EP2_START | bmGPIF_WRITE; // start the xfer 00042E 75 BB 00 [24] 1322 mov _GPIFTRIG,#0x00 1323 ; usrp_main.c:264: SYNCDELAY; 000431 00 [12] 1324 nop; nop; nop; 1325 ; usrp_main.c:266: while (!(GPIFTRIG & bmGPIF_IDLE)){ 000432 1326 00119$: 000432 E5 BB [12] 1327 mov a,_GPIFTRIG 000434 30 E7 FB [24] 1328 jnb acc.7,00119$ 000437 1329 00125$: 1330 ; usrp_main.c:275: if (g_rx_enable && !(EP6CS & bmEPFULL)){ // USB end point fifo is not full... 000437 E5 09 [12] 1331 mov a,_g_rx_enable 000439 70 03 [24] 1332 jnz 00213$ 00043B 02 03 B9 [24] 1333 ljmp 00140$ 00043E 1334 00213$: 00043E 90 E6 A5 [24] 1335 mov dptr,#_EP6CS 000441 E0 [24] 1336 movx a,@dptr 000442 30 E3 03 [24] 1337 jnb acc.3,00214$ 000445 02 03 B9 [24] 1338 ljmp 00140$ 000448 1339 00214$: 1340 ; usrp_main.c:277: if (fpga_has_packet_avail ()){ // ... and FPGA has packet available 000448 90 E6 F4 [24] 1341 mov dptr,#_GPIFREADYSTAT 00044B E0 [24] 1342 movx a,@dptr 00044C 20 E1 03 [24] 1343 jb acc.1,00215$ 00044F 02 03 B9 [24] 1344 ljmp 00140$ 000452 1345 00215$: 1346 ; usrp_main.c:279: GPIFTCB1 = 0x01; SYNCDELAY; 000452 90 E6 D0 [24] 1347 mov dptr,#_GPIFTCB1 000455 74 01 [12] 1348 mov a,#0x01 000457 F0 [24] 1349 movx @dptr,a 000458 00 [12] 1350 nop; nop; nop; 1351 ; usrp_main.c:280: GPIFTCB0 = 0x00; SYNCDELAY; 000459 90 E6 D1 [24] 1352 mov dptr,#_GPIFTCB0 00045C E4 [12] 1353 clr a 00045D F0 [24] 1354 movx @dptr,a 00045E 00 [12] 1355 nop; nop; nop; 1356 ; usrp_main.c:284: SYNCDELAY; 00045F 00 [12] 1357 nop; nop; nop; 1358 ; usrp_main.c:285: GPIFTRIG = bmGPIF_EP6_START | bmGPIF_READ; // start the xfer 000460 75 BB 06 [24] 1359 mov _GPIFTRIG,#0x06 1360 ; usrp_main.c:286: SYNCDELAY; 000463 00 [12] 1361 nop; nop; nop; 1362 ; usrp_main.c:288: while (!(GPIFTRIG & bmGPIF_IDLE)){ 000464 1363 00129$: 000464 E5 BB [12] 1364 mov a,_GPIFTRIG 000466 30 E7 FB [24] 1365 jnb acc.7,00129$ 1366 ; usrp_main.c:292: SYNCDELAY; 000469 00 [12] 1367 nop; nop; nop; 1368 ; usrp_main.c:293: INPKTEND = 6; // tell USB we filled buffer (6 is our endpoint num) 00046A 90 E6 48 [24] 1369 mov dptr,#_INPKTEND 00046D 74 06 [12] 1370 mov a,#0x06 00046F F0 [24] 1371 movx @dptr,a 1372 ; usrp_main.c:298: } 000470 02 03 B9 [24] 1373 ljmp 00140$ 1374 ;------------------------------------------------------------ 1375 ;Allocation info for local variables in function 'isr_tick' 1376 ;------------------------------------------------------------ 1377 ;count Allocated with name '_isr_tick_count_65536_87' 1378 ;------------------------------------------------------------ 1379 ; usrp_main.c:307: isr_tick (void) __interrupt 1380 ; ----------------------------------------- 1381 ; function isr_tick 1382 ; ----------------------------------------- 000473 1383 _isr_tick: 000473 C0 E0 [24] 1384 push acc 1385 ; usrp_main.c:311: if (--count == 0){ 000475 D5 0C 06 [24] 1386 djnz _isr_tick_count_65536_87,00102$ 1387 ; usrp_main.c:312: count = 50; 000478 75 0C 32 [24] 1388 mov _isr_tick_count_65536_87,#0x32 1389 ; usrp_main.c:313: USRP_LED_REG ^= bmLED0; 00047B 63 A0 40 [24] 1390 xrl _IOC,#0x40 00047E 1391 00102$: 1392 ; usrp_main.c:316: clear_timer_irq (); 1393 ; assignBit 00047E C2 CF [12] 1394 clr _TF2 1395 ; usrp_main.c:317: } 000480 D0 E0 [24] 1396 pop acc 000482 32 [24] 1397 reti 1398 ; eliminated unneeded mov psw,# (no regs used in bank) 1399 ; eliminated unneeded push/pop not_psw 1400 ; eliminated unneeded push/pop dpl 1401 ; eliminated unneeded push/pop dph 1402 ; eliminated unneeded push/pop b 1403 ;------------------------------------------------------------ 1404 ;Allocation info for local variables in function 'patch_usb_descriptors' 1405 ;------------------------------------------------------------ 1406 ;i Allocated to registers r7 1407 ;ch Allocated to registers r6 1408 ;hw_rev Allocated with name '_patch_usb_descriptors_hw_rev_65536_90' 1409 ;serial_no Allocated with name '_patch_usb_descriptors_serial_no_65536_90' 1410 ;------------------------------------------------------------ 1411 ; usrp_main.c:324: patch_usb_descriptors(void) 1412 ; ----------------------------------------- 1413 ; function patch_usb_descriptors 1414 ; ----------------------------------------- 000483 1415 _patch_usb_descriptors: 1416 ; usrp_main.c:330: eeprom_read(I2C_ADDR_BOOT, HW_REV_OFFSET, &hw_rev, 1); // LSB of device id 000483 75 18 00 [24] 1417 mov _eeprom_read_PARM_3,#_patch_usb_descriptors_hw_rev_65536_90 000486 75 19 18 [24] 1418 mov (_eeprom_read_PARM_3 + 1),#(_patch_usb_descriptors_hw_rev_65536_90 >> 8) 000489 75 17 05 [24] 1419 mov _eeprom_read_PARM_2,#0x05 00048C 75 1A 01 [24] 1420 mov _eeprom_read_PARM_4,#0x01 00048F 75 82 50 [24] 1421 mov dpl,#0x50 000492 12 0A 2C [24] 1422 lcall _eeprom_read 1423 ; usrp_main.c:331: usb_desc_hw_rev_binary_patch_location_0[0] = hw_rev; 000495 90 18 00 [24] 1424 mov dptr,#_patch_usb_descriptors_hw_rev_65536_90 000498 E0 [24] 1425 movx a,@dptr 000499 90 E0 0C [24] 1426 mov dptr,#_usb_desc_hw_rev_binary_patch_location_0 00049C F0 [24] 1427 movx @dptr,a 1428 ; usrp_main.c:332: usb_desc_hw_rev_binary_patch_location_1[0] = hw_rev; 00049D 90 18 00 [24] 1429 mov dptr,#_patch_usb_descriptors_hw_rev_65536_90 0004A0 E0 [24] 1430 movx a,@dptr 0004A1 90 E0 5A [24] 1431 mov dptr,#_usb_desc_hw_rev_binary_patch_location_1 0004A4 F0 [24] 1432 movx @dptr,a 1433 ; usrp_main.c:333: usb_desc_hw_rev_ascii_patch_location_0[0] = hw_rev + '0'; // FIXME if we get > 9 0004A5 90 18 00 [24] 1434 mov dptr,#_patch_usb_descriptors_hw_rev_65536_90 0004A8 E0 [24] 1435 movx a,@dptr 0004A9 24 30 [12] 1436 add a,#0x30 0004AB 90 E0 CE [24] 1437 mov dptr,#_usb_desc_hw_rev_ascii_patch_location_0 0004AE F0 [24] 1438 movx @dptr,a 1439 ; usrp_main.c:335: eeprom_read(I2C_ADDR_BOOT, SERIAL_NO_OFFSET, serial_no, SERIAL_NO_LEN); 0004AF 75 18 01 [24] 1440 mov _eeprom_read_PARM_3,#_patch_usb_descriptors_serial_no_65536_90 0004B2 75 19 18 [24] 1441 mov (_eeprom_read_PARM_3 + 1),#(_patch_usb_descriptors_serial_no_65536_90 >> 8) 0004B5 75 17 F8 [24] 1442 mov _eeprom_read_PARM_2,#0xf8 0004B8 75 1A 08 [24] 1443 mov _eeprom_read_PARM_4,#0x08 0004BB 75 82 50 [24] 1444 mov dpl,#0x50 0004BE 12 0A 2C [24] 1445 lcall _eeprom_read 1446 ; usrp_main.c:337: for (i = 0; i < SERIAL_NO_LEN; i++){ 0004C1 7F 00 [12] 1447 mov r7,#0x00 0004C3 1448 00104$: 1449 ; usrp_main.c:338: unsigned char ch = serial_no[i]; 0004C3 EF [12] 1450 mov a,r7 0004C4 24 01 [12] 1451 add a,#_patch_usb_descriptors_serial_no_65536_90 0004C6 F5 82 [12] 1452 mov dpl,a 0004C8 E4 [12] 1453 clr a 0004C9 34 18 [12] 1454 addc a,#(_patch_usb_descriptors_serial_no_65536_90 >> 8) 0004CB F5 83 [12] 1455 mov dph,a 0004CD E0 [24] 1456 movx a,@dptr 0004CE FE [12] 1457 mov r6,a 1458 ; usrp_main.c:339: if (ch == 0xff) // make unprogrammed EEPROM default to '0' 0004CF BE FF 02 [24] 1459 cjne r6,#0xff,00102$ 1460 ; usrp_main.c:340: ch = '0'; 0004D2 7E 30 [12] 1461 mov r6,#0x30 0004D4 1462 00102$: 1463 ; usrp_main.c:341: usb_desc_serial_number_ascii[i << 1] = ch; 0004D4 8F 04 [24] 1464 mov ar4,r7 0004D6 7D 00 [12] 1465 mov r5,#0x00 0004D8 EC [12] 1466 mov a,r4 0004D9 2C [12] 1467 add a,r4 0004DA FC [12] 1468 mov r4,a 0004DB ED [12] 1469 mov a,r5 0004DC 33 [12] 1470 rlc a 0004DD FD [12] 1471 mov r5,a 0004DE EC [12] 1472 mov a,r4 0004DF 24 2A [12] 1473 add a,#_usb_desc_serial_number_ascii 0004E1 F5 82 [12] 1474 mov dpl,a 0004E3 ED [12] 1475 mov a,r5 0004E4 34 E1 [12] 1476 addc a,#(_usb_desc_serial_number_ascii >> 8) 0004E6 F5 83 [12] 1477 mov dph,a 0004E8 EE [12] 1478 mov a,r6 0004E9 F0 [24] 1479 movx @dptr,a 1480 ; usrp_main.c:337: for (i = 0; i < SERIAL_NO_LEN; i++){ 0004EA 0F [12] 1481 inc r7 0004EB BF 08 00 [24] 1482 cjne r7,#0x08,00119$ 0004EE 1483 00119$: 0004EE 40 D3 [24] 1484 jc 00104$ 1485 ; usrp_main.c:343: } 0004F0 22 [24] 1486 ret 1487 ;------------------------------------------------------------ 1488 ;Allocation info for local variables in function 'main' 1489 ;------------------------------------------------------------ 1490 ; usrp_main.c:346: main (void) 1491 ; ----------------------------------------- 1492 ; function main 1493 ; ----------------------------------------- 0004F1 1494 _main: 1495 ; usrp_main.c:355: memset (hash1, 0, USRP_HASH_SIZE); // zero fpga bitstream hash. This forces reload 0004F1 75 1B 00 [24] 1496 mov _memset_PARM_2,#0x00 0004F4 75 1C 10 [24] 1497 mov _memset_PARM_3,#0x10 0004F7 75 1D 00 [24] 1498 mov (_memset_PARM_3 + 1),#0x00 0004FA 90 E1 F0 [24] 1499 mov dptr,#_hash1 0004FD 75 F0 00 [24] 1500 mov b,#0x00 000500 12 0C 02 [24] 1501 lcall _memset 1502 ; usrp_main.c:357: init_usrp (); 000503 12 05 3D [24] 1503 lcall _init_usrp 1504 ; usrp_main.c:358: init_gpif (); 000506 12 07 C7 [24] 1505 lcall _init_gpif 1506 ; usrp_main.c:361: IFCONFIG |= bmGSTATE; // no conflict, start with it on 000509 90 E6 01 [24] 1507 mov dptr,#_IFCONFIG 00050C E0 [24] 1508 movx a,@dptr 00050D 43 E0 04 [24] 1509 orl acc,#0x04 000510 F0 [24] 1510 movx @dptr,a 1511 ; usrp_main.c:363: set_led_0 (0); 000511 75 82 00 [24] 1512 mov dpl,#0x00 000514 12 05 E1 [24] 1513 lcall _set_led_0 1514 ; usrp_main.c:364: set_led_1 (0); 000517 75 82 00 [24] 1515 mov dpl,#0x00 00051A 12 05 ED [24] 1516 lcall _set_led_1 1517 ; usrp_main.c:366: EA = 0; // disable all interrupts 1518 ; assignBit 00051D C2 AF [12] 1519 clr _EA 1520 ; usrp_main.c:368: patch_usb_descriptors(); 00051F 12 04 83 [24] 1521 lcall _patch_usb_descriptors 1522 ; usrp_main.c:370: setup_autovectors (); 000522 12 11 71 [24] 1523 lcall _setup_autovectors 1524 ; usrp_main.c:371: usb_install_handlers (); 000525 12 0C ED [24] 1525 lcall _usb_install_handlers 1526 ; usrp_main.c:372: hook_timer_tick ((unsigned short) isr_tick); 000528 7E 73 [12] 1527 mov r6,#_isr_tick 00052A 7F 04 [12] 1528 mov r7,#(_isr_tick >> 8) 00052C 8E 82 [24] 1529 mov dpl,r6 00052E 8F 83 [24] 1530 mov dph,r7 000530 12 12 17 [24] 1531 lcall _hook_timer_tick 1532 ; usrp_main.c:374: EIEX4 = 1; // disable INT4 FIXME 1533 ; assignBit 000533 D2 EA [12] 1534 setb _EIEX4 1535 ; usrp_main.c:375: EA = 1; // global interrupt enable 1536 ; assignBit 000535 D2 AF [12] 1537 setb _EA 1538 ; usrp_main.c:377: fx2_renumerate (); // simulates disconnect / reconnect 000537 12 0A B0 [24] 1539 lcall _fx2_renumerate 1540 ; usrp_main.c:379: main_loop (); 1541 ; usrp_main.c:380: } 00053A 02 03 89 [24] 1542 ljmp _main_loop 1543 .area CSEG (CODE) 1544 .area CONST (CODE) 1545 .area CABS (ABS,CODE)