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) 000000 508 _g_tx_enable:: 000000 509 .ds 1 000001 510 _g_rx_enable:: 000001 511 .ds 1 000002 512 _g_rx_overrun:: 000002 513 .ds 1 000003 514 _g_tx_underrun:: 000003 515 .ds 1 000004 516 _isr_tick_count_65536_87: 000004 517 .ds 1 518 ;-------------------------------------------------------- 519 ; overlayable items in internal ram 520 ;-------------------------------------------------------- 521 ;-------------------------------------------------------- 522 ; Stack segment in internal ram 523 ;-------------------------------------------------------- 524 .area SSEG 000000 525 __start__stack: 000000 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 000000 726 _patch_usb_descriptors_hw_rev_65536_90: 000000 727 .ds 1 000001 728 _patch_usb_descriptors_serial_no_65536_90: 000001 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) 000000 751 __interrupt_vect: 000000 02r00r00 [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; 000000 75*04 01 [24] 770 mov _isr_tick_count_65536_87,#0x01 771 ; usrp_main.c:55: unsigned char g_tx_enable = 0; 000003 75*00 00 [24] 772 mov _g_tx_enable,#0x00 773 ; usrp_main.c:56: unsigned char g_rx_enable = 0; 000006 75*01 00 [24] 774 mov _g_rx_enable,#0x00 775 ; usrp_main.c:57: unsigned char g_rx_overrun = 0; 000009 75*02 00 [24] 776 mov _g_rx_overrun,#0x00 777 ; usrp_main.c:58: unsigned char g_tx_underrun = 0; 00000C 75*03 00 [24] 778 mov _g_tx_underrun,#0x00 779 .area GSFINAL (CODE) 000000 02r00r03 [24] 780 ljmp __sdcc_program_startup 781 ;-------------------------------------------------------- 782 ; Home 783 ;-------------------------------------------------------- 784 .area HOME (CODE) 785 .area HOME (CODE) 000003 786 __sdcc_program_startup: 000003 02r03r71 [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 ; ----------------------------------------- 000000 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 000000 90 E6 8B [24] 810 mov dptr,#_EP0BCL 000003 E4 [12] 811 clr a 000004 F0 [24] 812 movx @dptr,a 813 ; usrp_main.c:72: while (EP0CS & bmEPBUSY) // wait for busy to clear 000005 814 00101$: 000005 90 E6 A0 [24] 815 mov dptr,#_EP0CS 000008 E0 [24] 816 movx a,@dptr 000009 20 E1 F9 [24] 817 jb acc.1,00101$ 818 ; usrp_main.c:74: } 00000C 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 ; ----------------------------------------- 00000D 827 _app_vendor_cmd: 828 ; usrp_main.c:83: if (bRequestType == VRT_VENDOR_IN){ 00000D 90 E6 B8 [24] 829 mov dptr,#_SETUPDAT 000010 E0 [24] 830 movx a,@dptr 000011 FF [12] 831 mov r7,a 000012 BF C0 02 [24] 832 cjne r7,#0xc0,00214$ 000015 80 03 [24] 833 sjmp 00215$ 000017 834 00214$: 000017 02r00rE0 [24] 835 ljmp 00142$ 00001A 836 00215$: 837 ; usrp_main.c:89: switch (bRequest){ 00001A 90 E6 B9 [24] 838 mov dptr,#(_SETUPDAT + 0x0001) 00001D E0 [24] 839 movx a,@dptr 00001E FF [12] 840 mov r7,a 00001F BF 80 02 [24] 841 cjne r7,#0x80,00216$ 000022 80 0E [24] 842 sjmp 00101$ 000024 843 00216$: 000024 BF 81 02 [24] 844 cjne r7,#0x81,00217$ 000027 80 45 [24] 845 sjmp 00106$ 000029 846 00217$: 000029 BF 82 03 [24] 847 cjne r7,#0x82,00218$ 00002C 02r00r9C [24] 848 ljmp 00109$ 00002F 849 00218$: 00002F 02r00rDC [24] 850 ljmp 00112$ 851 ; usrp_main.c:91: case VRQ_GET_STATUS: 000032 852 00101$: 853 ; usrp_main.c:92: switch (wIndexL){ 000032 90 E6 BC [24] 854 mov dptr,#(_SETUPDAT + 0x0004) 000035 E0 [24] 855 movx a,@dptr 000036 FF [12] 856 mov r7,a 000037 60 05 [24] 857 jz 00102$ 858 ; usrp_main.c:94: case GS_TX_UNDERRUN: 000039 BF 01 2E [24] 859 cjne r7,#0x01,00104$ 00003C 80 16 [24] 860 sjmp 00103$ 00003E 861 00102$: 862 ; usrp_main.c:95: EP0BUF[0] = g_tx_underrun; 00003E 90 E7 40 [24] 863 mov dptr,#_EP0BUF 000041 E5*03 [12] 864 mov a,_g_tx_underrun 000043 F0 [24] 865 movx @dptr,a 866 ; usrp_main.c:96: g_tx_underrun = 0; 000044 75*03 00 [24] 867 mov _g_tx_underrun,#0x00 868 ; usrp_main.c:97: EP0BCH = 0; 000047 90 E6 8A [24] 869 mov dptr,#_EP0BCH 00004A E4 [12] 870 clr a 00004B F0 [24] 871 movx @dptr,a 872 ; usrp_main.c:98: EP0BCL = 1; 00004C 90 E6 8B [24] 873 mov dptr,#_EP0BCL 00004F 04 [12] 874 inc a 000050 F0 [24] 875 movx @dptr,a 876 ; usrp_main.c:99: break; 000051 02r02r05 [24] 877 ljmp 00143$ 878 ; usrp_main.c:101: case GS_RX_OVERRUN: 000054 879 00103$: 880 ; usrp_main.c:102: EP0BUF[0] = g_rx_overrun; 000054 90 E7 40 [24] 881 mov dptr,#_EP0BUF 000057 E5*02 [12] 882 mov a,_g_rx_overrun 000059 F0 [24] 883 movx @dptr,a 884 ; usrp_main.c:103: g_rx_overrun = 0; 00005A 75*02 00 [24] 885 mov _g_rx_overrun,#0x00 886 ; usrp_main.c:104: EP0BCH = 0; 00005D 90 E6 8A [24] 887 mov dptr,#_EP0BCH 000060 E4 [12] 888 clr a 000061 F0 [24] 889 movx @dptr,a 890 ; usrp_main.c:105: EP0BCL = 1; 000062 90 E6 8B [24] 891 mov dptr,#_EP0BCL 000065 04 [12] 892 inc a 000066 F0 [24] 893 movx @dptr,a 894 ; usrp_main.c:106: break; 000067 02r02r05 [24] 895 ljmp 00143$ 896 ; usrp_main.c:108: default: 00006A 897 00104$: 898 ; usrp_main.c:109: return 0; 00006A 75 82 00 [24] 899 mov dpl,#0x00 00006D 22 [24] 900 ret 901 ; usrp_main.c:113: case VRQ_I2C_READ: 00006E 902 00106$: 903 ; usrp_main.c:114: if (!i2c_read (wValueL, EP0BUF, wLengthL)) 00006E 90 E6 BA [24] 904 mov dptr,#(_SETUPDAT + 0x0002) 000071 E0 [24] 905 movx a,@dptr 000072 FF [12] 906 mov r7,a 000073 75*00 40 [24] 907 mov _i2c_read_PARM_2,#_EP0BUF 000076 75*01 E7 [24] 908 mov (_i2c_read_PARM_2 + 1),#(_EP0BUF >> 8) 000079 90 E6 BE [24] 909 mov dptr,#(_SETUPDAT + 0x0006) 00007C E0 [24] 910 movx a,@dptr 00007D F5*00 [12] 911 mov _i2c_read_PARM_3,a 00007F 8F 82 [24] 912 mov dpl,r7 000081 12r00r00 [24] 913 lcall _i2c_read 000084 E5 82 [12] 914 mov a,dpl 915 ; usrp_main.c:115: return 0; 000086 70 03 [24] 916 jnz 00108$ 000088 F5 82 [12] 917 mov dpl,a 00008A 22 [24] 918 ret 00008B 919 00108$: 920 ; usrp_main.c:117: EP0BCH = 0; 00008B 90 E6 8A [24] 921 mov dptr,#_EP0BCH 00008E E4 [12] 922 clr a 00008F F0 [24] 923 movx @dptr,a 924 ; usrp_main.c:118: EP0BCL = wLengthL; 000090 90 E6 BE [24] 925 mov dptr,#(_SETUPDAT + 0x0006) 000093 E0 [24] 926 movx a,@dptr 000094 FF [12] 927 mov r7,a 000095 90 E6 8B [24] 928 mov dptr,#_EP0BCL 000098 F0 [24] 929 movx @dptr,a 930 ; usrp_main.c:119: break; 000099 02r02r05 [24] 931 ljmp 00143$ 932 ; usrp_main.c:121: case VRQ_SPI_READ: 00009C 933 00109$: 934 ; usrp_main.c:122: if (!spi_read (wValueH, wValueL, wIndexH, wIndexL, EP0BUF, wLengthL)) 00009C 90 E6 BB [24] 935 mov dptr,#(_SETUPDAT + 0x0003) 00009F E0 [24] 936 movx a,@dptr 0000A0 FF [12] 937 mov r7,a 0000A1 90 E6 BA [24] 938 mov dptr,#(_SETUPDAT + 0x0002) 0000A4 E0 [24] 939 movx a,@dptr 0000A5 F5*00 [12] 940 mov _spi_read_PARM_2,a 0000A7 90 E6 BD [24] 941 mov dptr,#(_SETUPDAT + 0x0005) 0000AA E0 [24] 942 movx a,@dptr 0000AB F5*00 [12] 943 mov _spi_read_PARM_3,a 0000AD 90 E6 BC [24] 944 mov dptr,#(_SETUPDAT + 0x0004) 0000B0 E0 [24] 945 movx a,@dptr 0000B1 F5*00 [12] 946 mov _spi_read_PARM_4,a 0000B3 75*00 40 [24] 947 mov _spi_read_PARM_5,#_EP0BUF 0000B6 75*01 E7 [24] 948 mov (_spi_read_PARM_5 + 1),#(_EP0BUF >> 8) 0000B9 90 E6 BE [24] 949 mov dptr,#(_SETUPDAT + 0x0006) 0000BC E0 [24] 950 movx a,@dptr 0000BD F5*00 [12] 951 mov _spi_read_PARM_6,a 0000BF 8F 82 [24] 952 mov dpl,r7 0000C1 12r00r00 [24] 953 lcall _spi_read 0000C4 E5 82 [12] 954 mov a,dpl 955 ; usrp_main.c:123: return 0; 0000C6 70 03 [24] 956 jnz 00111$ 0000C8 F5 82 [12] 957 mov dpl,a 0000CA 22 [24] 958 ret 0000CB 959 00111$: 960 ; usrp_main.c:125: EP0BCH = 0; 0000CB 90 E6 8A [24] 961 mov dptr,#_EP0BCH 0000CE E4 [12] 962 clr a 0000CF F0 [24] 963 movx @dptr,a 964 ; usrp_main.c:126: EP0BCL = wLengthL; 0000D0 90 E6 BE [24] 965 mov dptr,#(_SETUPDAT + 0x0006) 0000D3 E0 [24] 966 movx a,@dptr 0000D4 FF [12] 967 mov r7,a 0000D5 90 E6 8B [24] 968 mov dptr,#_EP0BCL 0000D8 F0 [24] 969 movx @dptr,a 970 ; usrp_main.c:127: break; 0000D9 02r02r05 [24] 971 ljmp 00143$ 972 ; usrp_main.c:129: default: 0000DC 973 00112$: 974 ; usrp_main.c:130: return 0; 0000DC 75 82 00 [24] 975 mov dpl,#0x00 0000DF 22 [24] 976 ret 977 ; usrp_main.c:131: } 0000E0 978 00142$: 979 ; usrp_main.c:134: else if (bRequestType == VRT_VENDOR_OUT){ 0000E0 90 E6 B8 [24] 980 mov dptr,#_SETUPDAT 0000E3 E0 [24] 981 movx a,@dptr 0000E4 FF [12] 982 mov r7,a 0000E5 BF 40 02 [24] 983 cjne r7,#0x40,00223$ 0000E8 80 03 [24] 984 sjmp 00224$ 0000EA 985 00223$: 0000EA 02r02r01 [24] 986 ljmp 00139$ 0000ED 987 00224$: 988 ; usrp_main.c:140: switch (bRequest){ 0000ED 90 E6 B9 [24] 989 mov dptr,#(_SETUPDAT + 0x0001) 0000F0 E0 [24] 990 movx a,@dptr 0000F1 FF [12] 991 mov r7,a 0000F2 24 F4 [12] 992 add a,#0xff - 0x0b 0000F4 50 03 [24] 993 jnc 00225$ 0000F6 02r01rFD [24] 994 ljmp 00136$ 0000F9 995 00225$: 0000F9 EF [12] 996 mov a,r7 0000FA 24 0A [12] 997 add a,#(00226$-3-.) 0000FC 83 [24] 998 movc a,@a+pc 0000FD F5 82 [12] 999 mov dpl,a 0000FF EF [12] 1000 mov a,r7 000100 24 10 [12] 1001 add a,#(00227$-3-.) 000102 83 [24] 1002 movc a,@a+pc 000103 F5 83 [12] 1003 mov dph,a 000105 E4 [12] 1004 clr a 000106 73 [24] 1005 jmp @a+dptr 000107 1006 00226$: 000107rFD 1007 .db 00136$ 000108r1F 1008 .db 00114$ 000109r47 1009 .db 00119$ 00010ArFD 1010 .db 00136$ 00010Br71 1011 .db 00125$ 00010Cr7D 1012 .db 00126$ 00010Dr89 1013 .db 00127$ 00010ErFD 1014 .db 00136$ 00010FrAB 1015 .db 00130$ 000110rCB 1016 .db 00133$ 000111r95 1017 .db 00128$ 000112rA0 1018 .db 00129$ 000113 1019 00227$: 000113s01 1020 .db 00136$>>8 000114s01 1021 .db 00114$>>8 000115s01 1022 .db 00119$>>8 000116s01 1023 .db 00136$>>8 000117s01 1024 .db 00125$>>8 000118s01 1025 .db 00126$>>8 000119s01 1026 .db 00127$>>8 00011As01 1027 .db 00136$>>8 00011Bs01 1028 .db 00130$>>8 00011Cs01 1029 .db 00133$>>8 00011Ds01 1030 .db 00128$>>8 00011Es01 1031 .db 00129$>>8 1032 ; usrp_main.c:142: case VRQ_SET_LED: 00011F 1033 00114$: 1034 ; usrp_main.c:143: switch (wIndexL){ 00011F 90 E6 BC [24] 1035 mov dptr,#(_SETUPDAT + 0x0004) 000122 E0 [24] 1036 movx a,@dptr 000123 FF [12] 1037 mov r7,a 000124 60 05 [24] 1038 jz 00115$ 1039 ; usrp_main.c:144: case 0: 000126 BF 01 1A [24] 1040 cjne r7,#0x01,00117$ 000129 80 0C [24] 1041 sjmp 00116$ 00012B 1042 00115$: 1043 ; usrp_main.c:145: set_led_0 (wValueL); 00012B 90 E6 BA [24] 1044 mov dptr,#(_SETUPDAT + 0x0002) 00012E E0 [24] 1045 movx a,@dptr 00012F F5 82 [12] 1046 mov dpl,a 000131 12r00r00 [24] 1047 lcall _set_led_0 1048 ; usrp_main.c:146: break; 000134 02r02r05 [24] 1049 ljmp 00143$ 1050 ; usrp_main.c:148: case 1: 000137 1051 00116$: 1052 ; usrp_main.c:149: set_led_1 (wValueL); 000137 90 E6 BA [24] 1053 mov dptr,#(_SETUPDAT + 0x0002) 00013A E0 [24] 1054 movx a,@dptr 00013B F5 82 [12] 1055 mov dpl,a 00013D 12r00r00 [24] 1056 lcall _set_led_1 1057 ; usrp_main.c:150: break; 000140 02r02r05 [24] 1058 ljmp 00143$ 1059 ; usrp_main.c:152: default: 000143 1060 00117$: 1061 ; usrp_main.c:153: return 0; 000143 75 82 00 [24] 1062 mov dpl,#0x00 000146 22 [24] 1063 ret 1064 ; usrp_main.c:157: case VRQ_FPGA_LOAD: 000147 1065 00119$: 1066 ; usrp_main.c:158: switch (wIndexL){ // sub-command 000147 90 E6 BC [24] 1067 mov dptr,#(_SETUPDAT + 0x0004) 00014A E0 [24] 1068 movx a,@dptr 00014B FF [12] 1069 mov r7,a 00014C 60 0A [24] 1070 jz 00120$ 00014E BF 01 02 [24] 1071 cjne r7,#0x01,00231$ 000151 80 08 [24] 1072 sjmp 00121$ 000153 1073 00231$: 1074 ; usrp_main.c:159: case FL_BEGIN: 000153 BF 02 17 [24] 1075 cjne r7,#0x02,00123$ 000156 80 12 [24] 1076 sjmp 00122$ 000158 1077 00120$: 1078 ; usrp_main.c:160: return fpga_load_begin (); 000158 02r00r00 [24] 1079 ljmp _fpga_load_begin 1080 ; usrp_main.c:162: case FL_XFER: 00015B 1081 00121$: 1082 ; usrp_main.c:163: get_ep0_data (); 00015B 12r00r00 [24] 1083 lcall _get_ep0_data 1084 ; usrp_main.c:164: return fpga_load_xfer (EP0BUF, EP0BCL); 00015E 90 E6 8B [24] 1085 mov dptr,#_EP0BCL 000161 E0 [24] 1086 movx a,@dptr 000162 F5*00 [12] 1087 mov _fpga_load_xfer_PARM_2,a 000164 90 E7 40 [24] 1088 mov dptr,#_EP0BUF 000167 02r00r00 [24] 1089 ljmp _fpga_load_xfer 1090 ; usrp_main.c:166: case FL_END: 00016A 1091 00122$: 1092 ; usrp_main.c:167: return fpga_load_end (); 00016A 02r00r00 [24] 1093 ljmp _fpga_load_end 1094 ; usrp_main.c:169: default: 00016D 1095 00123$: 1096 ; usrp_main.c:170: return 0; 00016D 75 82 00 [24] 1097 mov dpl,#0x00 000170 22 [24] 1098 ret 1099 ; usrp_main.c:175: case VRQ_FPGA_SET_RESET: 000171 1100 00125$: 1101 ; usrp_main.c:176: fpga_set_reset (wValueL); 000171 90 E6 BA [24] 1102 mov dptr,#(_SETUPDAT + 0x0002) 000174 E0 [24] 1103 movx a,@dptr 000175 F5 82 [12] 1104 mov dpl,a 000177 12r00r00 [24] 1105 lcall _fpga_set_reset 1106 ; usrp_main.c:177: break; 00017A 02r02r05 [24] 1107 ljmp 00143$ 1108 ; usrp_main.c:179: case VRQ_FPGA_SET_TX_ENABLE: 00017D 1109 00126$: 1110 ; usrp_main.c:180: fpga_set_tx_enable (wValueL); 00017D 90 E6 BA [24] 1111 mov dptr,#(_SETUPDAT + 0x0002) 000180 E0 [24] 1112 movx a,@dptr 000181 F5 82 [12] 1113 mov dpl,a 000183 12r00r00 [24] 1114 lcall _fpga_set_tx_enable 1115 ; usrp_main.c:181: break; 000186 02r02r05 [24] 1116 ljmp 00143$ 1117 ; usrp_main.c:183: case VRQ_FPGA_SET_RX_ENABLE: 000189 1118 00127$: 1119 ; usrp_main.c:184: fpga_set_rx_enable (wValueL); 000189 90 E6 BA [24] 1120 mov dptr,#(_SETUPDAT + 0x0002) 00018C E0 [24] 1121 movx a,@dptr 00018D F5 82 [12] 1122 mov dpl,a 00018F 12r00r00 [24] 1123 lcall _fpga_set_rx_enable 1124 ; usrp_main.c:185: break; 000192 02r02r05 [24] 1125 ljmp 00143$ 1126 ; usrp_main.c:187: case VRQ_FPGA_SET_TX_RESET: 000195 1127 00128$: 1128 ; usrp_main.c:188: fpga_set_tx_reset (wValueL); 000195 90 E6 BA [24] 1129 mov dptr,#(_SETUPDAT + 0x0002) 000198 E0 [24] 1130 movx a,@dptr 000199 F5 82 [12] 1131 mov dpl,a 00019B 12r00r00 [24] 1132 lcall _fpga_set_tx_reset 1133 ; usrp_main.c:189: break; 1134 ; usrp_main.c:191: case VRQ_FPGA_SET_RX_RESET: 00019E 80 65 [24] 1135 sjmp 00143$ 0001A0 1136 00129$: 1137 ; usrp_main.c:192: fpga_set_rx_reset (wValueL); 0001A0 90 E6 BA [24] 1138 mov dptr,#(_SETUPDAT + 0x0002) 0001A3 E0 [24] 1139 movx a,@dptr 0001A4 F5 82 [12] 1140 mov dpl,a 0001A6 12r00r00 [24] 1141 lcall _fpga_set_rx_reset 1142 ; usrp_main.c:193: break; 1143 ; usrp_main.c:195: case VRQ_I2C_WRITE: 0001A9 80 5A [24] 1144 sjmp 00143$ 0001AB 1145 00130$: 1146 ; usrp_main.c:196: get_ep0_data (); 0001AB 12r00r00 [24] 1147 lcall _get_ep0_data 1148 ; usrp_main.c:197: if (!i2c_write (wValueL, EP0BUF, EP0BCL)) 0001AE 90 E6 BA [24] 1149 mov dptr,#(_SETUPDAT + 0x0002) 0001B1 E0 [24] 1150 movx a,@dptr 0001B2 FF [12] 1151 mov r7,a 0001B3 75*00 40 [24] 1152 mov _i2c_write_PARM_2,#_EP0BUF 0001B6 75*01 E7 [24] 1153 mov (_i2c_write_PARM_2 + 1),#(_EP0BUF >> 8) 0001B9 90 E6 8B [24] 1154 mov dptr,#_EP0BCL 0001BC E0 [24] 1155 movx a,@dptr 0001BD F5*00 [12] 1156 mov _i2c_write_PARM_3,a 0001BF 8F 82 [24] 1157 mov dpl,r7 0001C1 12r00r00 [24] 1158 lcall _i2c_write 0001C4 E5 82 [12] 1159 mov a,dpl 1160 ; usrp_main.c:198: return 0; 0001C6 70 3D [24] 1161 jnz 00143$ 0001C8 F5 82 [12] 1162 mov dpl,a 1163 ; usrp_main.c:201: case VRQ_SPI_WRITE: 0001CA 22 [24] 1164 ret 0001CB 1165 00133$: 1166 ; usrp_main.c:202: get_ep0_data (); 0001CB 12r00r00 [24] 1167 lcall _get_ep0_data 1168 ; usrp_main.c:203: if (!spi_write (wValueH, wValueL, wIndexH, wIndexL, EP0BUF, EP0BCL)) 0001CE 90 E6 BB [24] 1169 mov dptr,#(_SETUPDAT + 0x0003) 0001D1 E0 [24] 1170 movx a,@dptr 0001D2 FF [12] 1171 mov r7,a 0001D3 90 E6 BA [24] 1172 mov dptr,#(_SETUPDAT + 0x0002) 0001D6 E0 [24] 1173 movx a,@dptr 0001D7 F5*00 [12] 1174 mov _spi_write_PARM_2,a 0001D9 90 E6 BD [24] 1175 mov dptr,#(_SETUPDAT + 0x0005) 0001DC E0 [24] 1176 movx a,@dptr 0001DD F5*00 [12] 1177 mov _spi_write_PARM_3,a 0001DF 90 E6 BC [24] 1178 mov dptr,#(_SETUPDAT + 0x0004) 0001E2 E0 [24] 1179 movx a,@dptr 0001E3 F5*00 [12] 1180 mov _spi_write_PARM_4,a 0001E5 75*00 40 [24] 1181 mov _spi_write_PARM_5,#_EP0BUF 0001E8 75*01 E7 [24] 1182 mov (_spi_write_PARM_5 + 1),#(_EP0BUF >> 8) 0001EB 90 E6 8B [24] 1183 mov dptr,#_EP0BCL 0001EE E0 [24] 1184 movx a,@dptr 0001EF F5*00 [12] 1185 mov _spi_write_PARM_6,a 0001F1 8F 82 [24] 1186 mov dpl,r7 0001F3 12r00r00 [24] 1187 lcall _spi_write 0001F6 E5 82 [12] 1188 mov a,dpl 1189 ; usrp_main.c:204: return 0; 0001F8 70 0B [24] 1190 jnz 00143$ 0001FA F5 82 [12] 1191 mov dpl,a 1192 ; usrp_main.c:207: default: 0001FC 22 [24] 1193 ret 0001FD 1194 00136$: 1195 ; usrp_main.c:208: return 0; 0001FD 75 82 00 [24] 1196 mov dpl,#0x00 1197 ; usrp_main.c:209: } 000200 22 [24] 1198 ret 000201 1199 00139$: 1200 ; usrp_main.c:213: return 0; // invalid bRequestType 000201 75 82 00 [24] 1201 mov dpl,#0x00 000204 22 [24] 1202 ret 000205 1203 00143$: 1204 ; usrp_main.c:215: return 1; 000205 75 82 01 [24] 1205 mov dpl,#0x01 1206 ; usrp_main.c:216: } 000208 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 ; ----------------------------------------- 000209 1215 _main_loop: 1216 ; usrp_main.c:223: setup_flowstate_common (); 000209 90 E6 C6 [24] 1217 mov dptr,#_FLOWSTATE 00020C 74 81 [12] 1218 mov a,#0x81 00020E F0 [24] 1219 movx @dptr,a 00020F 90 E6 C7 [24] 1220 mov dptr,#_FLOWLOGIC 000212 74 2D [12] 1221 mov a,#0x2d 000214 F0 [24] 1222 movx @dptr,a 000215 90 E6 C8 [24] 1223 mov dptr,#_FLOWEQ0CTL 000218 74 26 [12] 1224 mov a,#0x26 00021A F0 [24] 1225 movx @dptr,a 00021B 90 E6 C9 [24] 1226 mov dptr,#_FLOWEQ1CTL 00021E E4 [12] 1227 clr a 00021F F0 [24] 1228 movx @dptr,a 000220 90 E6 CA [24] 1229 mov dptr,#_FLOWHOLDOFF 000223 74 04 [12] 1230 mov a,#0x04 000225 F0 [24] 1231 movx @dptr,a 000226 90 E6 CB [24] 1232 mov dptr,#_FLOWSTB 000229 F0 [24] 1233 movx @dptr,a 00022A 90 E6 CC [24] 1234 mov dptr,#_FLOWSTBEDGE 00022D 14 [12] 1235 dec a 00022E F0 [24] 1236 movx @dptr,a 00022F 90 E6 CD [24] 1237 mov dptr,#_FLOWSTBHPERIOD 000232 14 [12] 1238 dec a 000233 F0 [24] 1239 movx @dptr,a 000234 90 E6 0C [24] 1240 mov dptr,#_GPIFHOLDAMOUNT 000237 E4 [12] 1241 clr a 000238 F0 [24] 1242 movx @dptr,a 1243 ; usrp_main.c:225: while (1){ 000239 1244 00140$: 1245 ; usrp_main.c:227: if (usb_setup_packet_avail ()) 000239 30*00 03 [24] 1246 jnb __usb_got_SUDAV,00105$ 1247 ; usrp_main.c:228: usb_handle_setup_packet (); 00023C 12r00r00 [24] 1248 lcall _usb_handle_setup_packet 00023F 1249 00105$: 1250 ; usrp_main.c:231: if (GPIFTRIG & bmGPIF_IDLE){ 00023F E5 BB [12] 1251 mov a,_GPIFTRIG 000241 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))){ 000244 E5 80 [12] 1254 mov a,_IOA 000246 54 C0 [12] 1255 anl a,#0xc0 000248 60 16 [24] 1256 jz 00114$ 1257 ; usrp_main.c:240: if (USRP_PA & bmPA_TX_UNDERRUN) 00024A E5 80 [12] 1258 mov a,_IOA 00024C 30 E7 03 [24] 1259 jnb acc.7,00107$ 1260 ; usrp_main.c:241: g_tx_underrun = 1; 00024F 75*03 01 [24] 1261 mov _g_tx_underrun,#0x01 000252 1262 00107$: 1263 ; usrp_main.c:243: if (USRP_PA & bmPA_RX_OVERRUN) 000252 E5 80 [12] 1264 mov a,_IOA 000254 30 E6 03 [24] 1265 jnb acc.6,00110$ 1266 ; usrp_main.c:244: g_rx_overrun = 1; 000257 75*02 01 [24] 1267 mov _g_rx_overrun,#0x01 1268 ; usrp_main.c:247: fpga_clear_flags (); 00025A 1269 00110$: 00025A 43 B1 08 [24] 1270 orl _IOE,#0x08 00025D 53 B1 F7 [24] 1271 anl _IOE,#0xf7 000260 1272 00114$: 1273 ; usrp_main.c:253: if (g_tx_enable && !(EP24FIFOFLGS & 0x02)){ // USB end point fifo is not empty... 000260 E5*00 [12] 1274 mov a,_g_tx_enable 000262 60 53 [24] 1275 jz 00125$ 000264 E5 AB [12] 1276 mov a,_EP24FIFOFLGS 000266 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 000269 90 E6 F4 [24] 1279 mov dptr,#_GPIFREADYSTAT 00026C E0 [24] 1280 movx a,@dptr 00026D 30 E0 47 [24] 1281 jnb acc.0,00125$ 1282 ; usrp_main.c:257: GPIFTCB1 = 0x01; SYNCDELAY; 000270 90 E6 D0 [24] 1283 mov dptr,#_GPIFTCB1 000273 74 01 [12] 1284 mov a,#0x01 000275 F0 [24] 1285 movx @dptr,a 000276 00 [12] 1286 nop; nop; nop; 1287 ; usrp_main.c:258: GPIFTCB0 = 0x00; SYNCDELAY; 000277 90 E6 D1 [24] 1288 mov dptr,#_GPIFTCB0 00027A E4 [12] 1289 clr a 00027B F0 [24] 1290 movx @dptr,a 00027C 00 [12] 1291 nop; nop; nop; 1292 ; usrp_main.c:260: setup_flowstate_write (); 00027D 90 E6 C6 [24] 1293 mov dptr,#_FLOWSTATE 000280 74 81 [12] 1294 mov a,#0x81 000282 F0 [24] 1295 movx @dptr,a 000283 90 E6 C7 [24] 1296 mov dptr,#_FLOWLOGIC 000286 74 2D [12] 1297 mov a,#0x2d 000288 F0 [24] 1298 movx @dptr,a 000289 90 E6 C8 [24] 1299 mov dptr,#_FLOWEQ0CTL 00028C 74 21 [12] 1300 mov a,#0x21 00028E F0 [24] 1301 movx @dptr,a 00028F 90 E6 C9 [24] 1302 mov dptr,#_FLOWEQ1CTL 000292 E4 [12] 1303 clr a 000293 F0 [24] 1304 movx @dptr,a 000294 90 E6 CA [24] 1305 mov dptr,#_FLOWHOLDOFF 000297 74 04 [12] 1306 mov a,#0x04 000299 F0 [24] 1307 movx @dptr,a 00029A 90 E6 CB [24] 1308 mov dptr,#_FLOWSTB 00029D F0 [24] 1309 movx @dptr,a 00029E 90 E6 CC [24] 1310 mov dptr,#_FLOWSTBEDGE 0002A1 14 [12] 1311 dec a 0002A2 F0 [24] 1312 movx @dptr,a 0002A3 90 E6 CD [24] 1313 mov dptr,#_FLOWSTBHPERIOD 0002A6 14 [12] 1314 dec a 0002A7 F0 [24] 1315 movx @dptr,a 0002A8 90 E6 0C [24] 1316 mov dptr,#_GPIFHOLDAMOUNT 0002AB E4 [12] 1317 clr a 0002AC F0 [24] 1318 movx @dptr,a 1319 ; usrp_main.c:262: SYNCDELAY; 0002AD 00 [12] 1320 nop; nop; nop; 1321 ; usrp_main.c:263: GPIFTRIG = bmGPIF_EP2_START | bmGPIF_WRITE; // start the xfer 0002AE 75 BB 00 [24] 1322 mov _GPIFTRIG,#0x00 1323 ; usrp_main.c:264: SYNCDELAY; 0002B1 00 [12] 1324 nop; nop; nop; 1325 ; usrp_main.c:266: while (!(GPIFTRIG & bmGPIF_IDLE)){ 0002B2 1326 00119$: 0002B2 E5 BB [12] 1327 mov a,_GPIFTRIG 0002B4 30 E7 FB [24] 1328 jnb acc.7,00119$ 0002B7 1329 00125$: 1330 ; usrp_main.c:275: if (g_rx_enable && !(EP6CS & bmEPFULL)){ // USB end point fifo is not full... 0002B7 E5*01 [12] 1331 mov a,_g_rx_enable 0002B9 70 03 [24] 1332 jnz 00213$ 0002BB 02r02r39 [24] 1333 ljmp 00140$ 0002BE 1334 00213$: 0002BE 90 E6 A5 [24] 1335 mov dptr,#_EP6CS 0002C1 E0 [24] 1336 movx a,@dptr 0002C2 30 E3 03 [24] 1337 jnb acc.3,00214$ 0002C5 02r02r39 [24] 1338 ljmp 00140$ 0002C8 1339 00214$: 1340 ; usrp_main.c:277: if (fpga_has_packet_avail ()){ // ... and FPGA has packet available 0002C8 90 E6 F4 [24] 1341 mov dptr,#_GPIFREADYSTAT 0002CB E0 [24] 1342 movx a,@dptr 0002CC 20 E1 03 [24] 1343 jb acc.1,00215$ 0002CF 02r02r39 [24] 1344 ljmp 00140$ 0002D2 1345 00215$: 1346 ; usrp_main.c:279: GPIFTCB1 = 0x01; SYNCDELAY; 0002D2 90 E6 D0 [24] 1347 mov dptr,#_GPIFTCB1 0002D5 74 01 [12] 1348 mov a,#0x01 0002D7 F0 [24] 1349 movx @dptr,a 0002D8 00 [12] 1350 nop; nop; nop; 1351 ; usrp_main.c:280: GPIFTCB0 = 0x00; SYNCDELAY; 0002D9 90 E6 D1 [24] 1352 mov dptr,#_GPIFTCB0 0002DC E4 [12] 1353 clr a 0002DD F0 [24] 1354 movx @dptr,a 0002DE 00 [12] 1355 nop; nop; nop; 1356 ; usrp_main.c:284: SYNCDELAY; 0002DF 00 [12] 1357 nop; nop; nop; 1358 ; usrp_main.c:285: GPIFTRIG = bmGPIF_EP6_START | bmGPIF_READ; // start the xfer 0002E0 75 BB 06 [24] 1359 mov _GPIFTRIG,#0x06 1360 ; usrp_main.c:286: SYNCDELAY; 0002E3 00 [12] 1361 nop; nop; nop; 1362 ; usrp_main.c:288: while (!(GPIFTRIG & bmGPIF_IDLE)){ 0002E4 1363 00129$: 0002E4 E5 BB [12] 1364 mov a,_GPIFTRIG 0002E6 30 E7 FB [24] 1365 jnb acc.7,00129$ 1366 ; usrp_main.c:292: SYNCDELAY; 0002E9 00 [12] 1367 nop; nop; nop; 1368 ; usrp_main.c:293: INPKTEND = 6; // tell USB we filled buffer (6 is our endpoint num) 0002EA 90 E6 48 [24] 1369 mov dptr,#_INPKTEND 0002ED 74 06 [12] 1370 mov a,#0x06 0002EF F0 [24] 1371 movx @dptr,a 1372 ; usrp_main.c:298: } 0002F0 02r02r39 [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 ; ----------------------------------------- 0002F3 1383 _isr_tick: 0002F3 C0 E0 [24] 1384 push acc 1385 ; usrp_main.c:311: if (--count == 0){ 0002F5 D5*04 06 [24] 1386 djnz _isr_tick_count_65536_87,00102$ 1387 ; usrp_main.c:312: count = 50; 0002F8 75*04 32 [24] 1388 mov _isr_tick_count_65536_87,#0x32 1389 ; usrp_main.c:313: USRP_LED_REG ^= bmLED0; 0002FB 63 A0 40 [24] 1390 xrl _IOC,#0x40 0002FE 1391 00102$: 1392 ; usrp_main.c:316: clear_timer_irq (); 1393 ; assignBit 0002FE C2 CF [12] 1394 clr _TF2 1395 ; usrp_main.c:317: } 000300 D0 E0 [24] 1396 pop acc 000302 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 ; ----------------------------------------- 000303 1415 _patch_usb_descriptors: 1416 ; usrp_main.c:330: eeprom_read(I2C_ADDR_BOOT, HW_REV_OFFSET, &hw_rev, 1); // LSB of device id 000303 75*00r00 [24] 1417 mov _eeprom_read_PARM_3,#_patch_usb_descriptors_hw_rev_65536_90 000306 75*01s00 [24] 1418 mov (_eeprom_read_PARM_3 + 1),#(_patch_usb_descriptors_hw_rev_65536_90 >> 8) 000309 75*00 05 [24] 1419 mov _eeprom_read_PARM_2,#0x05 00030C 75*00 01 [24] 1420 mov _eeprom_read_PARM_4,#0x01 00030F 75 82 50 [24] 1421 mov dpl,#0x50 000312 12r00r00 [24] 1422 lcall _eeprom_read 1423 ; usrp_main.c:331: usb_desc_hw_rev_binary_patch_location_0[0] = hw_rev; 000315 90r00r00 [24] 1424 mov dptr,#_patch_usb_descriptors_hw_rev_65536_90 000318 E0 [24] 1425 movx a,@dptr 000319 90r00r00 [24] 1426 mov dptr,#_usb_desc_hw_rev_binary_patch_location_0 00031C F0 [24] 1427 movx @dptr,a 1428 ; usrp_main.c:332: usb_desc_hw_rev_binary_patch_location_1[0] = hw_rev; 00031D 90r00r00 [24] 1429 mov dptr,#_patch_usb_descriptors_hw_rev_65536_90 000320 E0 [24] 1430 movx a,@dptr 000321 90r00r00 [24] 1431 mov dptr,#_usb_desc_hw_rev_binary_patch_location_1 000324 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 000325 90r00r00 [24] 1434 mov dptr,#_patch_usb_descriptors_hw_rev_65536_90 000328 E0 [24] 1435 movx a,@dptr 000329 24 30 [12] 1436 add a,#0x30 00032B 90r00r00 [24] 1437 mov dptr,#_usb_desc_hw_rev_ascii_patch_location_0 00032E F0 [24] 1438 movx @dptr,a 1439 ; usrp_main.c:335: eeprom_read(I2C_ADDR_BOOT, SERIAL_NO_OFFSET, serial_no, SERIAL_NO_LEN); 00032F 75*00r01 [24] 1440 mov _eeprom_read_PARM_3,#_patch_usb_descriptors_serial_no_65536_90 000332 75*01s00 [24] 1441 mov (_eeprom_read_PARM_3 + 1),#(_patch_usb_descriptors_serial_no_65536_90 >> 8) 000335 75*00 F8 [24] 1442 mov _eeprom_read_PARM_2,#0xf8 000338 75*00 08 [24] 1443 mov _eeprom_read_PARM_4,#0x08 00033B 75 82 50 [24] 1444 mov dpl,#0x50 00033E 12r00r00 [24] 1445 lcall _eeprom_read 1446 ; usrp_main.c:337: for (i = 0; i < SERIAL_NO_LEN; i++){ 000341 7F 00 [12] 1447 mov r7,#0x00 000343 1448 00104$: 1449 ; usrp_main.c:338: unsigned char ch = serial_no[i]; 000343 EF [12] 1450 mov a,r7 000344 24r01 [12] 1451 add a,#_patch_usb_descriptors_serial_no_65536_90 000346 F5 82 [12] 1452 mov dpl,a 000348 E4 [12] 1453 clr a 000349 34s00 [12] 1454 addc a,#(_patch_usb_descriptors_serial_no_65536_90 >> 8) 00034B F5 83 [12] 1455 mov dph,a 00034D E0 [24] 1456 movx a,@dptr 00034E FE [12] 1457 mov r6,a 1458 ; usrp_main.c:339: if (ch == 0xff) // make unprogrammed EEPROM default to '0' 00034F BE FF 02 [24] 1459 cjne r6,#0xff,00102$ 1460 ; usrp_main.c:340: ch = '0'; 000352 7E 30 [12] 1461 mov r6,#0x30 000354 1462 00102$: 1463 ; usrp_main.c:341: usb_desc_serial_number_ascii[i << 1] = ch; 000354 8F 04 [24] 1464 mov ar4,r7 000356 7D 00 [12] 1465 mov r5,#0x00 000358 EC [12] 1466 mov a,r4 000359 2C [12] 1467 add a,r4 00035A FC [12] 1468 mov r4,a 00035B ED [12] 1469 mov a,r5 00035C 33 [12] 1470 rlc a 00035D FD [12] 1471 mov r5,a 00035E EC [12] 1472 mov a,r4 00035F 24r00 [12] 1473 add a,#_usb_desc_serial_number_ascii 000361 F5 82 [12] 1474 mov dpl,a 000363 ED [12] 1475 mov a,r5 000364 34s00 [12] 1476 addc a,#(_usb_desc_serial_number_ascii >> 8) 000366 F5 83 [12] 1477 mov dph,a 000368 EE [12] 1478 mov a,r6 000369 F0 [24] 1479 movx @dptr,a 1480 ; usrp_main.c:337: for (i = 0; i < SERIAL_NO_LEN; i++){ 00036A 0F [12] 1481 inc r7 00036B BF 08 00 [24] 1482 cjne r7,#0x08,00119$ 00036E 1483 00119$: 00036E 40 D3 [24] 1484 jc 00104$ 1485 ; usrp_main.c:343: } 000370 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 ; ----------------------------------------- 000371 1494 _main: 1495 ; usrp_main.c:355: memset (hash1, 0, USRP_HASH_SIZE); // zero fpga bitstream hash. This forces reload 000371 75*00 00 [24] 1496 mov _memset_PARM_2,#0x00 000374 75*00 10 [24] 1497 mov _memset_PARM_3,#0x10 000377 75*01 00 [24] 1498 mov (_memset_PARM_3 + 1),#0x00 00037A 90 E1 F0 [24] 1499 mov dptr,#_hash1 00037D 75 F0 00 [24] 1500 mov b,#0x00 000380 12r00r00 [24] 1501 lcall _memset 1502 ; usrp_main.c:357: init_usrp (); 000383 12r00r00 [24] 1503 lcall _init_usrp 1504 ; usrp_main.c:358: init_gpif (); 000386 12r00r00 [24] 1505 lcall _init_gpif 1506 ; usrp_main.c:361: IFCONFIG |= bmGSTATE; // no conflict, start with it on 000389 90 E6 01 [24] 1507 mov dptr,#_IFCONFIG 00038C E0 [24] 1508 movx a,@dptr 00038D 43 E0 04 [24] 1509 orl acc,#0x04 000390 F0 [24] 1510 movx @dptr,a 1511 ; usrp_main.c:363: set_led_0 (0); 000391 75 82 00 [24] 1512 mov dpl,#0x00 000394 12r00r00 [24] 1513 lcall _set_led_0 1514 ; usrp_main.c:364: set_led_1 (0); 000397 75 82 00 [24] 1515 mov dpl,#0x00 00039A 12r00r00 [24] 1516 lcall _set_led_1 1517 ; usrp_main.c:366: EA = 0; // disable all interrupts 1518 ; assignBit 00039D C2 AF [12] 1519 clr _EA 1520 ; usrp_main.c:368: patch_usb_descriptors(); 00039F 12r03r03 [24] 1521 lcall _patch_usb_descriptors 1522 ; usrp_main.c:370: setup_autovectors (); 0003A2 12r00r00 [24] 1523 lcall _setup_autovectors 1524 ; usrp_main.c:371: usb_install_handlers (); 0003A5 12r00r00 [24] 1525 lcall _usb_install_handlers 1526 ; usrp_main.c:372: hook_timer_tick ((unsigned short) isr_tick); 0003A8 7ErF3 [12] 1527 mov r6,#_isr_tick 0003AA 7Fs02 [12] 1528 mov r7,#(_isr_tick >> 8) 0003AC 8E 82 [24] 1529 mov dpl,r6 0003AE 8F 83 [24] 1530 mov dph,r7 0003B0 12r00r00 [24] 1531 lcall _hook_timer_tick 1532 ; usrp_main.c:374: EIEX4 = 1; // disable INT4 FIXME 1533 ; assignBit 0003B3 D2 EA [12] 1534 setb _EIEX4 1535 ; usrp_main.c:375: EA = 1; // global interrupt enable 1536 ; assignBit 0003B5 D2 AF [12] 1537 setb _EA 1538 ; usrp_main.c:377: fx2_renumerate (); // simulates disconnect / reconnect 0003B7 12r00r00 [24] 1539 lcall _fx2_renumerate 1540 ; usrp_main.c:379: main_loop (); 1541 ; usrp_main.c:380: } 0003BA 02r02r09 [24] 1542 ljmp _main_loop 1543 .area CSEG (CODE) 1544 .area CONST (CODE) 1545 .area CABS (ABS,CODE)