Subversion Repositories Bart

Rev

Blame | Last modification | View Log | RSS feed

  1. ;--------------------------------------------------------
  2. ; File Created by SDCC : FreeWare ANSI-C Compiler
  3. ; Version 2.4.4 #831 (Sep  8 2004)
  4. ; This file generated Sat Sep 18 08:25:03 2004
  5. ;--------------------------------------------------------
  6.         .module rt_serial
  7.         .optsdcc -mmcs51 --model-large
  8.        
  9. ;--------------------------------------------------------
  10. ; Public variables in this module
  11. ;--------------------------------------------------------
  12.         .globl _TF1
  13.         .globl _TR1
  14.         .globl _TF0
  15.         .globl _TR0
  16.         .globl _IE1
  17.         .globl _IT1
  18.         .globl _IE0
  19.         .globl _IT0
  20.         .globl _T2CON_7
  21.         .globl _T2CON_6
  22.         .globl _T2CON_5
  23.         .globl _T2CON_4
  24.         .globl _T2CON_3
  25.         .globl _T2CON_2
  26.         .globl _T2CON_1
  27.         .globl _T2CON_0
  28.         .globl _TF2
  29.         .globl _EXF2
  30.         .globl _RCLK
  31.         .globl _TCLK
  32.         .globl _EXEN2
  33.         .globl _TR2
  34.         .globl _C_T2
  35.         .globl _CP_RL2
  36.         .globl _SM0
  37.         .globl _SM1
  38.         .globl _SM2
  39.         .globl _REN
  40.         .globl _TB8
  41.         .globl _RB8
  42.         .globl _TI
  43.         .globl _RI
  44.         .globl _CY
  45.         .globl _AC
  46.         .globl _F0
  47.         .globl _RS1
  48.         .globl _RS0
  49.         .globl _OV
  50.         .globl _F1
  51.         .globl _P
  52.         .globl _P5_7
  53.         .globl _P5_6
  54.         .globl _P5_5
  55.         .globl _P5_4
  56.         .globl _P5_3
  57.         .globl _P5_2
  58.         .globl _P5_1
  59.         .globl _P5_0
  60.         .globl _P4_7
  61.         .globl _P4_6
  62.         .globl _P4_5
  63.         .globl _P4_4
  64.         .globl _P4_3
  65.         .globl _P4_2
  66.         .globl _P4_1
  67.         .globl _P4_0
  68.         .globl _RD
  69.         .globl _WR
  70.         .globl _T1
  71.         .globl _T0
  72.         .globl _INT1
  73.         .globl _INT0
  74.         .globl _TXD0
  75.         .globl _TXD
  76.         .globl _RXD0
  77.         .globl _RXD
  78.         .globl _P3_7
  79.         .globl _P3_6
  80.         .globl _P3_5
  81.         .globl _P3_4
  82.         .globl _P3_3
  83.         .globl _P3_2
  84.         .globl _P3_1
  85.         .globl _P3_0
  86.         .globl _P2_7
  87.         .globl _P2_6
  88.         .globl _P2_5
  89.         .globl _P2_4
  90.         .globl _P2_3
  91.         .globl _P2_2
  92.         .globl _P2_1
  93.         .globl _P2_0
  94.         .globl _P1_7
  95.         .globl _P1_6
  96.         .globl _P1_5
  97.         .globl _P1_4
  98.         .globl _P1_3
  99.         .globl _P1_2
  100.         .globl _P1_1
  101.         .globl _P1_0
  102.         .globl _P0_7
  103.         .globl _P0_6
  104.         .globl _P0_5
  105.         .globl _P0_4
  106.         .globl _P0_3
  107.         .globl _P0_2
  108.         .globl _P0_1
  109.         .globl _P0_0
  110.         .globl _PPC
  111.         .globl _PT2
  112.         .globl _PS
  113.         .globl _PT1
  114.         .globl _PX1
  115.         .globl _PT0
  116.         .globl _PX0
  117.         .globl _EA
  118.         .globl _EC
  119.         .globl _ET2
  120.         .globl _ES
  121.         .globl _ET1
  122.         .globl _EX1
  123.         .globl _ET0
  124.         .globl _EX0
  125.         .globl _CF
  126.         .globl _CR
  127.         .globl _CCF4
  128.         .globl _CCF3
  129.         .globl _CCF2
  130.         .globl _CCF1
  131.         .globl _CCF0
  132.         .globl _BREG_F7
  133.         .globl _BREG_F6
  134.         .globl _BREG_F5
  135.         .globl _BREG_F4
  136.         .globl _BREG_F3
  137.         .globl _BREG_F2
  138.         .globl _BREG_F1
  139.         .globl _BREG_F0
  140.         .globl _WDTRST
  141.         .globl _WDTPRG
  142.         .globl _TMOD
  143.         .globl _TL2
  144.         .globl _TL1
  145.         .globl _TL0
  146.         .globl _TH2
  147.         .globl _TH1
  148.         .globl _TH0
  149.         .globl _TCON
  150.         .globl _T2CON
  151.         .globl _SP
  152.         .globl _SCON
  153.         .globl _SBUF0
  154.         .globl _SBUF
  155.         .globl _SADEN0
  156.         .globl _RCAP2L
  157.         .globl _RCAP2H
  158.         .globl _PSW
  159.         .globl _PCON
  160.         .globl _P5
  161.         .globl _P4
  162.         .globl _P3
  163.         .globl _P2
  164.         .globl _P1
  165.         .globl _P0
  166.         .globl _IPH
  167.         .globl _IP
  168.         .globl _IE
  169.         .globl _FCON
  170.         .globl _EETIM
  171.         .globl _EECON
  172.         .globl _DP0L
  173.         .globl _DPL
  174.         .globl _DP0H
  175.         .globl _DPH
  176.         .globl _CMOD
  177.         .globl _CL
  178.         .globl _CKCON
  179.         .globl _CH
  180.         .globl _CCON
  181.         .globl _CCAPM4
  182.         .globl _CCAPM3
  183.         .globl _CCAPM2
  184.         .globl _CCAPM1
  185.         .globl _CCAPM0
  186.         .globl _CCAP4L
  187.         .globl _CCAP3L
  188.         .globl _CCAP2L
  189.         .globl _CCAP1L
  190.         .globl _CCAP0L
  191.         .globl _CCAP4H
  192.         .globl _CCAP3H
  193.         .globl _CCAP2H
  194.         .globl _CCAP1H
  195.         .globl _CCAP0H
  196.         .globl _AUXR1
  197.         .globl _B
  198.         .globl _AUXR
  199.         .globl _ACC
  200.         .globl _SIO1_break_PARM_2
  201.         .globl _SIO2_BitCnt
  202.         .globl _SIO2_RxCount
  203.         .globl _SIO1_TxCount
  204.         .globl _SIO1_TxBusy
  205.         .globl _rt_serial_init
  206.         .globl _SIOInterrupt
  207.         .globl _T2Interrupt
  208.         .globl _putchar
  209.         .globl _getchar
  210.         .globl _SIO2_getchar
  211.         .globl _SIO1_pollchar
  212.         .globl _SIO2_pollchar
  213.         .globl _SIO1_flush
  214.         .globl _SIO2_flush
  215.         .globl _SIO1_break
  216.         .globl _SendStringCode
  217.         .globl _SendStringXdata
  218.         .globl _SendHex
  219.         .globl _SIOTakeSemaphore
  220.         .globl _SIOPutSemaphore
  221.         .globl _SIOSetSemaphore
  222. ;--------------------------------------------------------
  223. ; special function registers
  224. ;--------------------------------------------------------
  225.         .area RSEG    (DATA)
  226. G$ACC$0$0 == 0x00e0
  227. _ACC    =       0x00e0
  228. G$AUXR$0$0 == 0x008e
  229. _AUXR   =       0x008e
  230. G$B$0$0 == 0x00f0
  231. _B      =       0x00f0
  232. G$AUXR1$0$0 == 0x00a2
  233. _AUXR1  =       0x00a2
  234. G$CCAP0H$0$0 == 0x00fa
  235. _CCAP0H =       0x00fa
  236. G$CCAP1H$0$0 == 0x00fb
  237. _CCAP1H =       0x00fb
  238. G$CCAP2H$0$0 == 0x00fc
  239. _CCAP2H =       0x00fc
  240. G$CCAP3H$0$0 == 0x00fd
  241. _CCAP3H =       0x00fd
  242. G$CCAP4H$0$0 == 0x00fe
  243. _CCAP4H =       0x00fe
  244. G$CCAP0L$0$0 == 0x00ea
  245. _CCAP0L =       0x00ea
  246. G$CCAP1L$0$0 == 0x00eb
  247. _CCAP1L =       0x00eb
  248. G$CCAP2L$0$0 == 0x00ec
  249. _CCAP2L =       0x00ec
  250. G$CCAP3L$0$0 == 0x00ed
  251. _CCAP3L =       0x00ed
  252. G$CCAP4L$0$0 == 0x00ee
  253. _CCAP4L =       0x00ee
  254. G$CCAPM0$0$0 == 0x00da
  255. _CCAPM0 =       0x00da
  256. G$CCAPM1$0$0 == 0x00db
  257. _CCAPM1 =       0x00db
  258. G$CCAPM2$0$0 == 0x00dc
  259. _CCAPM2 =       0x00dc
  260. G$CCAPM3$0$0 == 0x00dd
  261. _CCAPM3 =       0x00dd
  262. G$CCAPM4$0$0 == 0x00de
  263. _CCAPM4 =       0x00de
  264. G$CCON$0$0 == 0x00d8
  265. _CCON   =       0x00d8
  266. G$CH$0$0 == 0x00f9
  267. _CH     =       0x00f9
  268. G$CKCON$0$0 == 0x008f
  269. _CKCON  =       0x008f
  270. G$CL$0$0 == 0x00e9
  271. _CL     =       0x00e9
  272. G$CMOD$0$0 == 0x00d9
  273. _CMOD   =       0x00d9
  274. G$DPH$0$0 == 0x0083
  275. _DPH    =       0x0083
  276. G$DP0H$0$0 == 0x0083
  277. _DP0H   =       0x0083
  278. G$DPL$0$0 == 0x0082
  279. _DPL    =       0x0082
  280. G$DP0L$0$0 == 0x0082
  281. _DP0L   =       0x0082
  282. G$EECON$0$0 == 0x00d2
  283. _EECON  =       0x00d2
  284. G$EETIM$0$0 == 0x00d3
  285. _EETIM  =       0x00d3
  286. G$FCON$0$0 == 0x00d1
  287. _FCON   =       0x00d1
  288. G$IE$0$0 == 0x00a8
  289. _IE     =       0x00a8
  290. G$IP$0$0 == 0x00b8
  291. _IP     =       0x00b8
  292. G$IPH$0$0 == 0x00b7
  293. _IPH    =       0x00b7
  294. G$P0$0$0 == 0x0080
  295. _P0     =       0x0080
  296. G$P1$0$0 == 0x0090
  297. _P1     =       0x0090
  298. G$P2$0$0 == 0x00a0
  299. _P2     =       0x00a0
  300. G$P3$0$0 == 0x00b0
  301. _P3     =       0x00b0
  302. G$P4$0$0 == 0x00c0
  303. _P4     =       0x00c0
  304. G$P5$0$0 == 0x00e8
  305. _P5     =       0x00e8
  306. G$PCON$0$0 == 0x0087
  307. _PCON   =       0x0087
  308. G$PSW$0$0 == 0x00d0
  309. _PSW    =       0x00d0
  310. G$RCAP2H$0$0 == 0x00cb
  311. _RCAP2H =       0x00cb
  312. G$RCAP2L$0$0 == 0x00ca
  313. _RCAP2L =       0x00ca
  314. G$SADEN0$0$0 == 0x00b9
  315. _SADEN0 =       0x00b9
  316. G$SBUF$0$0 == 0x0099
  317. _SBUF   =       0x0099
  318. G$SBUF0$0$0 == 0x0099
  319. _SBUF0  =       0x0099
  320. G$SCON$0$0 == 0x0098
  321. _SCON   =       0x0098
  322. G$SP$0$0 == 0x0081
  323. _SP     =       0x0081
  324. G$T2CON$0$0 == 0x00c8
  325. _T2CON  =       0x00c8
  326. G$TCON$0$0 == 0x0088
  327. _TCON   =       0x0088
  328. G$TH0$0$0 == 0x008c
  329. _TH0    =       0x008c
  330. G$TH1$0$0 == 0x008d
  331. _TH1    =       0x008d
  332. G$TH2$0$0 == 0x00cd
  333. _TH2    =       0x00cd
  334. G$TL0$0$0 == 0x008a
  335. _TL0    =       0x008a
  336. G$TL1$0$0 == 0x008b
  337. _TL1    =       0x008b
  338. G$TL2$0$0 == 0x00cc
  339. _TL2    =       0x00cc
  340. G$TMOD$0$0 == 0x0089
  341. _TMOD   =       0x0089
  342. G$WDTPRG$0$0 == 0x00a7
  343. _WDTPRG =       0x00a7
  344. G$WDTRST$0$0 == 0x00a6
  345. _WDTRST =       0x00a6
  346. ;--------------------------------------------------------
  347. ; special function bits
  348. ;--------------------------------------------------------
  349.         .area RSEG    (DATA)
  350. G$BREG_F0$0$0 == 0x00f0
  351. _BREG_F0        =       0x00f0
  352. G$BREG_F1$0$0 == 0x00f1
  353. _BREG_F1        =       0x00f1
  354. G$BREG_F2$0$0 == 0x00f2
  355. _BREG_F2        =       0x00f2
  356. G$BREG_F3$0$0 == 0x00f3
  357. _BREG_F3        =       0x00f3
  358. G$BREG_F4$0$0 == 0x00f4
  359. _BREG_F4        =       0x00f4
  360. G$BREG_F5$0$0 == 0x00f5
  361. _BREG_F5        =       0x00f5
  362. G$BREG_F6$0$0 == 0x00f6
  363. _BREG_F6        =       0x00f6
  364. G$BREG_F7$0$0 == 0x00f7
  365. _BREG_F7        =       0x00f7
  366. G$CCF0$0$0 == 0x00d8
  367. _CCF0   =       0x00d8
  368. G$CCF1$0$0 == 0x00d9
  369. _CCF1   =       0x00d9
  370. G$CCF2$0$0 == 0x00da
  371. _CCF2   =       0x00da
  372. G$CCF3$0$0 == 0x00db
  373. _CCF3   =       0x00db
  374. G$CCF4$0$0 == 0x00dc
  375. _CCF4   =       0x00dc
  376. G$CR$0$0 == 0x00de
  377. _CR     =       0x00de
  378. G$CF$0$0 == 0x00df
  379. _CF     =       0x00df
  380. G$EX0$0$0 == 0x00a8
  381. _EX0    =       0x00a8
  382. G$ET0$0$0 == 0x00a9
  383. _ET0    =       0x00a9
  384. G$EX1$0$0 == 0x00aa
  385. _EX1    =       0x00aa
  386. G$ET1$0$0 == 0x00ab
  387. _ET1    =       0x00ab
  388. G$ES$0$0 == 0x00ac
  389. _ES     =       0x00ac
  390. G$ET2$0$0 == 0x00ad
  391. _ET2    =       0x00ad
  392. G$EC$0$0 == 0x00ae
  393. _EC     =       0x00ae
  394. G$EA$0$0 == 0x00af
  395. _EA     =       0x00af
  396. G$PX0$0$0 == 0x00b8
  397. _PX0    =       0x00b8
  398. G$PT0$0$0 == 0x00b9
  399. _PT0    =       0x00b9
  400. G$PX1$0$0 == 0x00ba
  401. _PX1    =       0x00ba
  402. G$PT1$0$0 == 0x00bb
  403. _PT1    =       0x00bb
  404. G$PS$0$0 == 0x00bc
  405. _PS     =       0x00bc
  406. G$PT2$0$0 == 0x00bd
  407. _PT2    =       0x00bd
  408. G$PPC$0$0 == 0x00be
  409. _PPC    =       0x00be
  410. G$P0_0$0$0 == 0x0080
  411. _P0_0   =       0x0080
  412. G$P0_1$0$0 == 0x0081
  413. _P0_1   =       0x0081
  414. G$P0_2$0$0 == 0x0082
  415. _P0_2   =       0x0082
  416. G$P0_3$0$0 == 0x0083
  417. _P0_3   =       0x0083
  418. G$P0_4$0$0 == 0x0084
  419. _P0_4   =       0x0084
  420. G$P0_5$0$0 == 0x0085
  421. _P0_5   =       0x0085
  422. G$P0_6$0$0 == 0x0086
  423. _P0_6   =       0x0086
  424. G$P0_7$0$0 == 0x0087
  425. _P0_7   =       0x0087
  426. G$P1_0$0$0 == 0x0090
  427. _P1_0   =       0x0090
  428. G$P1_1$0$0 == 0x0091
  429. _P1_1   =       0x0091
  430. G$P1_2$0$0 == 0x0092
  431. _P1_2   =       0x0092
  432. G$P1_3$0$0 == 0x0093
  433. _P1_3   =       0x0093
  434. G$P1_4$0$0 == 0x0094
  435. _P1_4   =       0x0094
  436. G$P1_5$0$0 == 0x0095
  437. _P1_5   =       0x0095
  438. G$P1_6$0$0 == 0x0096
  439. _P1_6   =       0x0096
  440. G$P1_7$0$0 == 0x0097
  441. _P1_7   =       0x0097
  442. G$P2_0$0$0 == 0x00a0
  443. _P2_0   =       0x00a0
  444. G$P2_1$0$0 == 0x00a1
  445. _P2_1   =       0x00a1
  446. G$P2_2$0$0 == 0x00a2
  447. _P2_2   =       0x00a2
  448. G$P2_3$0$0 == 0x00a3
  449. _P2_3   =       0x00a3
  450. G$P2_4$0$0 == 0x00a4
  451. _P2_4   =       0x00a4
  452. G$P2_5$0$0 == 0x00a5
  453. _P2_5   =       0x00a5
  454. G$P2_6$0$0 == 0x00a6
  455. _P2_6   =       0x00a6
  456. G$P2_7$0$0 == 0x00a7
  457. _P2_7   =       0x00a7
  458. G$P3_0$0$0 == 0x00b0
  459. _P3_0   =       0x00b0
  460. G$P3_1$0$0 == 0x00b1
  461. _P3_1   =       0x00b1
  462. G$P3_2$0$0 == 0x00b2
  463. _P3_2   =       0x00b2
  464. G$P3_3$0$0 == 0x00b3
  465. _P3_3   =       0x00b3
  466. G$P3_4$0$0 == 0x00b4
  467. _P3_4   =       0x00b4
  468. G$P3_5$0$0 == 0x00b5
  469. _P3_5   =       0x00b5
  470. G$P3_6$0$0 == 0x00b6
  471. _P3_6   =       0x00b6
  472. G$P3_7$0$0 == 0x00b7
  473. _P3_7   =       0x00b7
  474. G$RXD$0$0 == 0x00b0
  475. _RXD    =       0x00b0
  476. G$RXD0$0$0 == 0x00b0
  477. _RXD0   =       0x00b0
  478. G$TXD$0$0 == 0x00b1
  479. _TXD    =       0x00b1
  480. G$TXD0$0$0 == 0x00b1
  481. _TXD0   =       0x00b1
  482. G$INT0$0$0 == 0x00b2
  483. _INT0   =       0x00b2
  484. G$INT1$0$0 == 0x00b3
  485. _INT1   =       0x00b3
  486. G$T0$0$0 == 0x00b4
  487. _T0     =       0x00b4
  488. G$T1$0$0 == 0x00b5
  489. _T1     =       0x00b5
  490. G$WR$0$0 == 0x00b6
  491. _WR     =       0x00b6
  492. G$RD$0$0 == 0x00b7
  493. _RD     =       0x00b7
  494. G$P4_0$0$0 == 0x00c0
  495. _P4_0   =       0x00c0
  496. G$P4_1$0$0 == 0x00c1
  497. _P4_1   =       0x00c1
  498. G$P4_2$0$0 == 0x00c2
  499. _P4_2   =       0x00c2
  500. G$P4_3$0$0 == 0x00c3
  501. _P4_3   =       0x00c3
  502. G$P4_4$0$0 == 0x00c4
  503. _P4_4   =       0x00c4
  504. G$P4_5$0$0 == 0x00c5
  505. _P4_5   =       0x00c5
  506. G$P4_6$0$0 == 0x00c6
  507. _P4_6   =       0x00c6
  508. G$P4_7$0$0 == 0x00c7
  509. _P4_7   =       0x00c7
  510. G$P5_0$0$0 == 0x00e8
  511. _P5_0   =       0x00e8
  512. G$P5_1$0$0 == 0x00e9
  513. _P5_1   =       0x00e9
  514. G$P5_2$0$0 == 0x00ea
  515. _P5_2   =       0x00ea
  516. G$P5_3$0$0 == 0x00eb
  517. _P5_3   =       0x00eb
  518. G$P5_4$0$0 == 0x00ec
  519. _P5_4   =       0x00ec
  520. G$P5_5$0$0 == 0x00ed
  521. _P5_5   =       0x00ed
  522. G$P5_6$0$0 == 0x00ee
  523. _P5_6   =       0x00ee
  524. G$P5_7$0$0 == 0x00ef
  525. _P5_7   =       0x00ef
  526. G$P$0$0 == 0x00d0
  527. _P      =       0x00d0
  528. G$F1$0$0 == 0x00d1
  529. _F1     =       0x00d1
  530. G$OV$0$0 == 0x00d2
  531. _OV     =       0x00d2
  532. G$RS0$0$0 == 0x00d3
  533. _RS0    =       0x00d3
  534. G$RS1$0$0 == 0x00d4
  535. _RS1    =       0x00d4
  536. G$F0$0$0 == 0x00d5
  537. _F0     =       0x00d5
  538. G$AC$0$0 == 0x00d6
  539. _AC     =       0x00d6
  540. G$CY$0$0 == 0x00d7
  541. _CY     =       0x00d7
  542. G$RI$0$0 == 0x0098
  543. _RI     =       0x0098
  544. G$TI$0$0 == 0x0099
  545. _TI     =       0x0099
  546. G$RB8$0$0 == 0x009a
  547. _RB8    =       0x009a
  548. G$TB8$0$0 == 0x009b
  549. _TB8    =       0x009b
  550. G$REN$0$0 == 0x009c
  551. _REN    =       0x009c
  552. G$SM2$0$0 == 0x009d
  553. _SM2    =       0x009d
  554. G$SM1$0$0 == 0x009e
  555. _SM1    =       0x009e
  556. G$SM0$0$0 == 0x009f
  557. _SM0    =       0x009f
  558. G$CP_RL2$0$0 == 0x00c8
  559. _CP_RL2 =       0x00c8
  560. G$C_T2$0$0 == 0x00c9
  561. _C_T2   =       0x00c9
  562. G$TR2$0$0 == 0x00ca
  563. _TR2    =       0x00ca
  564. G$EXEN2$0$0 == 0x00cb
  565. _EXEN2  =       0x00cb
  566. G$TCLK$0$0 == 0x00cc
  567. _TCLK   =       0x00cc
  568. G$RCLK$0$0 == 0x00cd
  569. _RCLK   =       0x00cd
  570. G$EXF2$0$0 == 0x00ce
  571. _EXF2   =       0x00ce
  572. G$TF2$0$0 == 0x00cf
  573. _TF2    =       0x00cf
  574. G$T2CON_0$0$0 == 0x00c8
  575. _T2CON_0        =       0x00c8
  576. G$T2CON_1$0$0 == 0x00c9
  577. _T2CON_1        =       0x00c9
  578. G$T2CON_2$0$0 == 0x00ca
  579. _T2CON_2        =       0x00ca
  580. G$T2CON_3$0$0 == 0x00cb
  581. _T2CON_3        =       0x00cb
  582. G$T2CON_4$0$0 == 0x00cc
  583. _T2CON_4        =       0x00cc
  584. G$T2CON_5$0$0 == 0x00cd
  585. _T2CON_5        =       0x00cd
  586. G$T2CON_6$0$0 == 0x00ce
  587. _T2CON_6        =       0x00ce
  588. G$T2CON_7$0$0 == 0x00cf
  589. _T2CON_7        =       0x00cf
  590. G$IT0$0$0 == 0x0088
  591. _IT0    =       0x0088
  592. G$IE0$0$0 == 0x0089
  593. _IE0    =       0x0089
  594. G$IT1$0$0 == 0x008a
  595. _IT1    =       0x008a
  596. G$IE1$0$0 == 0x008b
  597. _IE1    =       0x008b
  598. G$TR0$0$0 == 0x008c
  599. _TR0    =       0x008c
  600. G$TF0$0$0 == 0x008d
  601. _TF0    =       0x008d
  602. G$TR1$0$0 == 0x008e
  603. _TR1    =       0x008e
  604. G$TF1$0$0 == 0x008f
  605. _TF1    =       0x008f
  606. ;--------------------------------------------------------
  607. ; overlayable register banks
  608. ;--------------------------------------------------------
  609.         .area REG_BANK_0        (REL,OVR,DATA)
  610.         .ds 8
  611.         .area REG_BANK_1        (REL,OVR,DATA)
  612.         .ds 8
  613.         .area REG_BANK_2        (REL,OVR,DATA)
  614.         .ds 8
  615.         .area REG_BANK_3        (REL,OVR,DATA)
  616.         .ds 8
  617. ;--------------------------------------------------------
  618. ; internal ram data
  619. ;--------------------------------------------------------
  620.         .area DSEG    (DATA)
  621. ;--------------------------------------------------------
  622. ; overlayable items in internal ram
  623. ;--------------------------------------------------------
  624.         .area OSEG    (OVR,DATA)
  625. ;--------------------------------------------------------
  626. ; indirectly addressable internal ram data
  627. ;--------------------------------------------------------
  628.         .area ISEG    (DATA)
  629. ;--------------------------------------------------------
  630. ; bit data
  631. ;--------------------------------------------------------
  632.         .area BSEG    (BIT)
  633. G$SIO1_TxBusy$0$0==.
  634. _SIO1_TxBusy::
  635.         .ds 1
  636. Frt_serial$SIO_put_semaphore$0$0==.
  637. _SIO_put_semaphore:
  638.         .ds 1
  639. Lputchar$EA_local$1$1==.
  640. _putchar_EA_local_1_1:
  641.         .ds 1
  642. Lgetchar$EA_local$1$1==.
  643. _getchar_EA_local_1_1:
  644.         .ds 1
  645. LSIO2_getchar$EA_local$1$1==.
  646. _SIO2_getchar_EA_local_1_1:
  647.         .ds 1
  648. LSIO1_flush$EA_local$1$1==.
  649. _SIO1_flush_EA_local_1_1:
  650.         .ds 1
  651. LSIO2_flush$EA_local$1$1==.
  652. _SIO2_flush_EA_local_1_1:
  653.         .ds 1
  654. LSIOTakeSemaphore$EA_local$1$1==.
  655. _SIOTakeSemaphore_EA_local_1_1:
  656.         .ds 1
  657. LSIOSetSemaphore$EA_local$1$1==.
  658. _SIOSetSemaphore_EA_local_1_1:
  659.         .ds 1
  660. ;--------------------------------------------------------
  661. ; external ram data
  662. ;--------------------------------------------------------
  663.         .area XSEG    (XDATA)
  664. Frt_serial$SIO1_TXFIFO$0$0==.
  665. _SIO1_TXFIFO:
  666.         .ds 128
  667. Frt_serial$SIO1_RXFIFO$0$0==.
  668. _SIO1_RXFIFO:
  669.         .ds 32
  670. Frt_serial$SIO2_RXFIFO$0$0==.
  671. _SIO2_RXFIFO:
  672.         .ds 64
  673. Frt_serial$SIO1_TxPtr$0$0==.
  674. _SIO1_TxPtr:
  675.         .ds 1
  676. G$SIO1_TxCount$0$0==.
  677. _SIO1_TxCount::
  678.         .ds 1
  679. Frt_serial$SIO1_RxPtr$0$0==.
  680. _SIO1_RxPtr:
  681.         .ds 1
  682. Frt_serial$SIO1_RxCount$0$0==.
  683. _SIO1_RxCount:
  684.         .ds 1
  685. Frt_serial$SIO2_RxPtr$0$0==.
  686. _SIO2_RxPtr:
  687.         .ds 1
  688. G$SIO2_RxCount$0$0==.
  689. _SIO2_RxCount::
  690.         .ds 1
  691. Frt_serial$SIO2_Byte$0$0==.
  692. _SIO2_Byte:
  693.         .ds 1
  694. G$SIO2_BitCnt$0$0==.
  695. _SIO2_BitCnt::
  696.         .ds 1
  697. LSIOInterrupt$Chr$2$2==.
  698. _SIOInterrupt_Chr_2_2::
  699.         .ds 1
  700. Lputchar$c$1$1==.
  701. _putchar_c_1_1::
  702.         .ds 1
  703. LSIO1_break$ticks$1$1==.
  704. _SIO1_break_PARM_2::
  705.         .ds 1
  706. LSIO1_break$level$1$1==.
  707. _SIO1_break_level_1_1::
  708.         .ds 1
  709. LSendStringCode$s$1$1==.
  710. _SendStringCode_s_1_1::
  711.         .ds 2
  712. LSendStringXdata$s$1$1==.
  713. _SendStringXdata_s_1_1::
  714.         .ds 2
  715. LSendHex$x$1$1==.
  716. _SendHex_x_1_1::
  717.         .ds 1
  718. ;--------------------------------------------------------
  719. ; external initialized ram data
  720. ;--------------------------------------------------------
  721.         .area XISEG   (XDATA)
  722.         .area CSEG    (CODE)
  723.         .area GSINIT0 (CODE)
  724.         .area GSINIT1 (CODE)
  725.         .area GSINIT2 (CODE)
  726.         .area GSINIT3 (CODE)
  727.         .area GSINIT4 (CODE)
  728.         .area GSINIT5 (CODE)
  729. ;--------------------------------------------------------
  730. ; global & static initialisations
  731. ;--------------------------------------------------------
  732.         .area GSINIT  (CODE)
  733.         .area GSFINAL (CODE)
  734.         .area GSINIT  (CODE)
  735. ;--------------------------------------------------------
  736. ; Home
  737. ;--------------------------------------------------------
  738.         .area HOME    (CODE)
  739.         .area CSEG    (CODE)
  740. ;--------------------------------------------------------
  741. ; code
  742. ;--------------------------------------------------------
  743.         .area CSEG    (CODE)
  744. ;------------------------------------------------------------
  745. ;Allocation info for local variables in function 'rt_serial_init'
  746. ;------------------------------------------------------------
  747. ;------------------------------------------------------------
  748.         G$rt_serial_init$0$0 ==.
  749.         C$rt_serial.c$180$0$0 ==.
  750. ;rt_serial.c:180: void rt_serial_init (void)
  751. ;       -----------------------------------------
  752. ;        function rt_serial_init
  753. ;       -----------------------------------------
  754. _rt_serial_init:
  755.         ar2 = 0x02
  756.         ar3 = 0x03
  757.         ar4 = 0x04
  758.         ar5 = 0x05
  759.         ar6 = 0x06
  760.         ar7 = 0x07
  761.         ar0 = 0x00
  762.         ar1 = 0x01
  763.         C$rt_serial.c$183$1$1 ==.
  764. ;rt_serial.c:183: SIO1_TxPtr    = 0;
  765. ;     genAssign
  766.         mov     dptr,#_SIO1_TxPtr
  767. ;       Peephole 181    changed mov to clr
  768.         C$rt_serial.c$184$1$1 ==.
  769. ;rt_serial.c:184: SIO1_RxPtr    = 0;
  770. ;     genAssign
  771. ;       Peephole 181    changed mov to clr
  772. ;       Peephole 219    removed redundant clear
  773.         C$rt_serial.c$185$1$1 ==.
  774. ;rt_serial.c:185: SIO1_TxCount  = 0;
  775. ;     genAssign
  776. ;       Peephole 181    changed mov to clr
  777.         C$rt_serial.c$186$1$1 ==.
  778. ;rt_serial.c:186: SIO1_RxCount  = 0;
  779. ;     genAssign
  780. ;       Peephole 181    changed mov to clr
  781. ;       Peephole 219    removed redundant clear
  782. ;       Peephole 219.a  removed redundant clear
  783.         clr     a
  784.         movx    @dptr,a
  785.         mov     dptr,#_SIO1_RxPtr
  786.         movx    @dptr,a
  787.         mov     dptr,#_SIO1_TxCount
  788.         movx    @dptr,a
  789.         mov     dptr,#_SIO1_RxCount
  790.         movx    @dptr,a
  791.         C$rt_serial.c$187$1$1 ==.
  792. ;rt_serial.c:187: SIO1_TxBusy   = FALSE;
  793. ;     genAssign
  794.         clr     _SIO1_TxBusy
  795.         C$rt_serial.c$188$1$1 ==.
  796. ;rt_serial.c:188: SIO1_TxPtr    = 0;
  797. ;     genAssign
  798.         mov     dptr,#_SIO1_TxPtr
  799. ;       Peephole 181    changed mov to clr
  800.         C$rt_serial.c$190$1$1 ==.
  801. ;rt_serial.c:190: SIO2_RxPtr    = 0;
  802. ;     genAssign
  803. ;       Peephole 181    changed mov to clr
  804. ;       Peephole 219    removed redundant clear
  805.         C$rt_serial.c$191$1$1 ==.
  806. ;rt_serial.c:191: SIO2_RxCount  = 0;
  807. ;     genAssign
  808. ;       Peephole 181    changed mov to clr
  809. ;       Peephole 219.a  removed redundant clear
  810.         clr     a
  811.         movx    @dptr,a
  812.         mov     dptr,#_SIO2_RxPtr
  813.         movx    @dptr,a
  814.         mov     dptr,#_SIO2_RxCount
  815.         movx    @dptr,a
  816.         C$rt_serial.c$204$1$1 ==.
  817. ;rt_serial.c:204: SIO1_CTS       = FALSE; /* assert CTS */
  818. ;     genAssign
  819.         clr     _P1_5
  820.         C$rt_serial.c$207$1$1 ==.
  821. ;rt_serial.c:207: SIO_put_semaphore = TRUE;
  822. ;     genAssign
  823.         setb    _SIO_put_semaphore
  824.         C$rt_serial.c$209$1$1 ==.
  825. ;rt_serial.c:209: TR1 = FALSE;
  826. ;     genAssign
  827.         clr     _TR1
  828.         C$rt_serial.c$210$1$1 ==.
  829. ;rt_serial.c:210: SCON=   0x50;    /* select mode 1 (8bit variable baudrate) */
  830. ;     genAssign
  831.         mov     _SCON,#0x50
  832.         C$rt_serial.c$212$1$1 ==.
  833. ;rt_serial.c:212: TH1 =  SIO1_BAUDCODE;    /* set timer 1 for SIO1 baud   */
  834. ;     genAssign
  835.         mov     _TH1,#0xFD
  836.         C$rt_serial.c$213$1$1 ==.
  837. ;rt_serial.c:213: TL1 =  SIO1_BAUDCODE;    /* set timer 1*/
  838. ;     genAssign
  839.         mov     _TL1,#0xFD
  840.         C$rt_serial.c$214$1$1 ==.
  841. ;rt_serial.c:214: TR1 =   TRUE;    /* set timer 1 running                    */
  842. ;     genAssign
  843.         setb    _TR1
  844.         C$rt_serial.c$219$1$1 ==.
  845. ;rt_serial.c:219: T2CON = 0; /* 16 bit auto reload */
  846. ;     genAssign
  847.         mov     _T2CON,#0x00
  848.         C$rt_serial.c$221$1$1 ==.
  849. ;rt_serial.c:221: EXEN2 = TRUE; /* allow for falling edge IRQ */
  850. ;     genAssign
  851.         setb    _EXEN2
  852.         C$rt_serial.c$223$1$1 ==.
  853. ;rt_serial.c:223: ET2   = TRUE;  /*TURNED OFF to allow further debug  allow for T2 interrupt */  
  854. ;     genAssign
  855.         setb    _ET2
  856.         C$rt_serial.c$225$1$1 ==.
  857. ;rt_serial.c:225: TR2   = TRUE; /* only edges now */
  858. ;     genAssign
  859.         setb    _TR2
  860.         C$rt_serial.c$228$1$1 ==.
  861. ;rt_serial.c:228: PT2   = TRUE; /* up priority */
  862. ;     genAssign
  863.         setb    _PT2
  864.         C$rt_serial.c$229$1$1 ==.
  865. ;rt_serial.c:229: IPH   |=PT2H;
  866. ;     genOr
  867.         orl     _IPH,#0x20
  868.         C$rt_serial.c$233$1$1 ==.
  869. ;rt_serial.c:233: RCAP2H    =  SIO2_BAUDCODE_START / 256;   /* setup for 4800 baud */
  870. ;     genAssign
  871.         mov     _RCAP2H,#0xFF
  872.         C$rt_serial.c$234$1$1 ==.
  873. ;rt_serial.c:234: RCAP2L    =  SIO2_BAUDCODE_START & 255;   /* start bit */
  874. ;     genAssign
  875.         mov     _RCAP2L,#0xA0
  876.         C$rt_serial.c$237$1$1 ==.
  877. ;rt_serial.c:237: REN = TRUE;                           // Receive characters.
  878. ;     genAssign
  879.         setb    _REN
  880.         C$rt_serial.c$239$1$1 ==.
  881. ;rt_serial.c:239: ES = TRUE;
  882. ;     genAssign
  883.         setb    _ES
  884.         C$rt_serial.c$242$1$1 ==.
  885. ;rt_serial.c:242: SIO1_RTS = FALSE; /* enable output by forcing ready status*/
  886. ;     genAssign
  887.         clr     _P1_4
  888. 00101$:
  889.         C$rt_serial.c$245$1$1 ==.
  890.         XG$rt_serial_init$0$0 ==.
  891.         ret
  892. ;------------------------------------------------------------
  893. ;Allocation info for local variables in function 'SIOInterrupt'
  894. ;------------------------------------------------------------
  895. ;Chr                       Allocated with name '_SIOInterrupt_Chr_2_2'
  896. ;TempPtr                   Allocated with name '_SIOInterrupt_TempPtr_4_5'
  897. ;c                         Allocated with name '_SIOInterrupt_c_4_9'
  898. ;------------------------------------------------------------
  899.         G$SIOInterrupt$0$0 ==.
  900.         C$rt_serial.c$253$1$1 ==.
  901. ;rt_serial.c:253: void SIOInterrupt(void) interrupt SIO_INTVEC using SIO_INTERRUPT_BANK
  902. ;       -----------------------------------------
  903. ;        function SIOInterrupt
  904. ;       -----------------------------------------
  905. _SIOInterrupt:
  906.         ar2 = 0x0a
  907.         ar3 = 0x0b
  908.         ar4 = 0x0c
  909.         ar5 = 0x0d
  910.         ar6 = 0x0e
  911.         ar7 = 0x0f
  912.         ar0 = 0x08
  913.         ar1 = 0x09
  914.         push    acc
  915.         push    dpl
  916.         push    dph
  917.         push    psw
  918.         mov     psw,#0x08
  919.         C$rt_serial.c$260$1$1 ==.
  920. ;rt_serial.c:260: if(RI)   /* receive handler */
  921. ;     genIfx
  922. ;     genIfxJump
  923. ;       Peephole 111    removed ljmp by inverse jump logic
  924.         C$rt_serial.c$265$2$2 ==.
  925. ;rt_serial.c:265: RI = 0;
  926. ;     genAssign
  927. ;       Peephole 250.a  using atomic test and clear
  928.         jbc     _RI,00124$
  929.         sjmp    00108$
  930. 00124$:
  931.         C$rt_serial.c$266$2$2 ==.
  932. ;rt_serial.c:266: Chr = SBUF;
  933. ;     genAssign
  934.         mov     dptr,#_SIOInterrupt_Chr_2_2
  935.         mov     a,_SBUF
  936.         movx    @dptr,a
  937.         C$rt_serial.c$296$3$3 ==.
  938. ;rt_serial.c:296: if (SIO1_RxCount >= SIO1_RX_FIFOFULL-1)
  939. ;     genAssign
  940.         mov     dptr,#_SIO1_RxCount
  941.         movx    a,@dptr
  942.         mov     r2,a
  943. ;     genCmpLt
  944. ;     genCmp
  945.         cjne    r2,#0x1F,00125$
  946. 00125$:
  947. ;     genIfxJump
  948. ;       Peephole 112.b  changed ljmp to sjmp
  949. ;       Peephole 160    removed sjmp by inverse jump logic
  950.         jc      00102$
  951. 00126$:
  952.         C$rt_serial.c$298$4$4 ==.
  953. ;rt_serial.c:298: SIO1_CTS     = TRUE;
  954. ;     genAssign
  955.         setb    _P1_5
  956. 00102$:
  957.         C$rt_serial.c$302$3$3 ==.
  958. ;rt_serial.c:302: if(SIO1_RxCount != SIO1_RX_FIFOFULL)       /* is there room left in the Rx FIFO ?    */
  959. ;     genAssign
  960.         mov     dptr,#_SIO1_RxCount
  961.         movx    a,@dptr
  962.         mov     r2,a
  963. ;     genCmpEq
  964.         cjne    r2,#0x20,00127$
  965. ;       Peephole 112.b  changed ljmp to sjmp
  966.         sjmp    00104$
  967. 00127$:
  968.         C$rt_serial.c$304$4$5 ==.
  969. ;rt_serial.c:304: Byte TempPtr = (SIO1_RxPtr+SIO1_RxCount) & SIO1_RX_FIFOMASK;
  970. ;     genAssign
  971.         mov     dptr,#_SIO1_RxCount
  972.         movx    a,@dptr
  973.         mov     r2,a
  974. ;     genAssign
  975.         mov     dptr,#_SIO1_RxPtr
  976.         movx    a,@dptr
  977.         mov     r3,a
  978. ;     genPlus
  979. ;       Peephole 236.g  used r2 instead of ar2
  980.         mov     a,r2
  981. ;       Peephole 236.a  used r3 instead of ar3
  982.         add     a,r3
  983. ;     genAnd
  984.         anl     a,#0x1F
  985.         C$rt_serial.c$305$4$5 ==.
  986. ;rt_serial.c:305: SIO1_RXFIFO[TempPtr] = Chr;
  987. ;     genPlus
  988. ;       Peephole 177.b  removed redundant mov
  989. ;       Peephole 215    removed some moves
  990.         add     a,#_SIO1_RXFIFO
  991.         mov     r2,a
  992. ;       Peephole 181    changed mov to clr
  993.         clr     a
  994.         addc    a,#(_SIO1_RXFIFO >> 8)
  995.         mov     r3,a
  996. ;     genAssign
  997.         mov     dptr,#_SIOInterrupt_Chr_2_2
  998.         movx    a,@dptr
  999. ;     genPointerSet
  1000. ;     genFarPointerSet
  1001. ;       Peephole 136    removed redundant moves
  1002.         mov     r4,a
  1003.         mov     dpl,r2
  1004.         mov     dph,r3
  1005.         movx    @dptr,a
  1006.         C$rt_serial.c$306$4$5 ==.
  1007. ;rt_serial.c:306: SIO1_RxCount++;
  1008. ;     genPlus
  1009.         mov     dptr,#_SIO1_RxCount
  1010.         movx    a,@dptr
  1011.         add     a,#0x01
  1012.         movx    @dptr,a
  1013. 00104$:
  1014.         C$rt_serial.c$310$2$2 ==.
  1015. ;rt_serial.c:310: INT_SIGNAL(SIO1_TASK,SERIAL_SIG);
  1016. ;     genPointerGet
  1017. ;     genNearPointerGet
  1018.         mov     r0,#(_task_signals + 0x0002)
  1019.         mov     ar2,@r0
  1020. ;     genOr
  1021.         mov     a,#0x40
  1022.         orl     a,r2
  1023. ;     genPointerSet
  1024. ;     genNearPointerSet
  1025.         mov     r0,#(_task_signals + 0x0002)
  1026.         mov     @r0,acc
  1027. ;     genPointerGet
  1028. ;     genNearPointerGet
  1029.         mov     r0,#(_task_signals + 0x0002)
  1030.         mov     ar2,@r0
  1031. ;     genPointerGet
  1032. ;     genNearPointerGet
  1033.         mov     r0,#(_task_masks + 0x0002)
  1034.         mov     ar3,@r0
  1035. ;     genAnd
  1036.         mov     a,r3
  1037.         anl     a,r2
  1038. ;     genIfx
  1039. ;     genIfxJump
  1040. ;       Peephole 110    removed ljmp by inverse jump logic
  1041.         jz      00108$
  1042. 00128$:
  1043. ;     genOr
  1044.         orl     _ready,#0x04
  1045. 00108$:
  1046.         C$rt_serial.c$314$1$1 ==.
  1047. ;rt_serial.c:314: if(TI)  /* handle transmit interrupt */
  1048. ;     genIfx
  1049. ;     genIfxJump
  1050. ;       Peephole 111    removed ljmp by inverse jump logic
  1051.         C$rt_serial.c$316$2$7 ==.
  1052. ;rt_serial.c:316: TI = 0;
  1053. ;     genAssign
  1054. ;       Peephole 250.a  using atomic test and clear
  1055.         jbc     _TI,00129$
  1056.         sjmp    00115$
  1057. 00129$:
  1058.         C$rt_serial.c$332$3$8 ==.
  1059. ;rt_serial.c:332: if(!SIO1_RTS && SIO1_TxCount)
  1060. ;     genIfx
  1061. ;     genIfxJump
  1062. ;       Peephole 112.a  removed ljmp by inverse jump logic
  1063.         jb      _P1_4,00110$
  1064. 00130$:
  1065. ;     genAssign
  1066.         mov     dptr,#_SIO1_TxCount
  1067.         movx    a,@dptr
  1068. ;     genIfx
  1069. ;       Peephole 105    removed redundant mov
  1070.         mov     r2,a
  1071. ;     genIfxJump
  1072. ;       Peephole 110    removed ljmp by inverse jump logic
  1073.         jz      00110$
  1074. 00131$:
  1075.         C$rt_serial.c$340$4$9 ==.
  1076. ;rt_serial.c:340: SIO1_TxCount--;
  1077. ;     genMinus
  1078.         mov     dptr,#_SIO1_TxCount
  1079. ;     genMinusDec
  1080.         movx    a,@dptr
  1081.         dec     a
  1082. ;     genAssign
  1083.         mov     dptr,#_SIO1_TxCount
  1084.         movx    @dptr,a
  1085.         C$rt_serial.c$341$4$9 ==.
  1086. ;rt_serial.c:341: c      = SIO1_TXFIFO[SIO1_TxPtr++];  /* send next char if there is one, and  */
  1087. ;     genAssign
  1088.         mov     dptr,#_SIO1_TxPtr
  1089.         movx    a,@dptr
  1090.         mov     r2,a
  1091. ;     genPlus
  1092.         mov     dptr,#_SIO1_TxPtr
  1093.         movx    a,@dptr
  1094.         add     a,#0x01
  1095.         movx    @dptr,a
  1096. ;     genPlus
  1097. ;       Peephole 236.g  used r2 instead of ar2
  1098.         mov     a,r2
  1099.         add     a,#_SIO1_TXFIFO
  1100.         mov     dpl,a
  1101. ;       Peephole 181    changed mov to clr
  1102.         clr     a
  1103.         addc    a,#(_SIO1_TXFIFO >> 8)
  1104.         mov     dph,a
  1105. ;     genPointerGet
  1106. ;     genFarPointerGet
  1107.         movx    a,@dptr
  1108.         mov     r2,a
  1109.         C$rt_serial.c$342$4$9 ==.
  1110. ;rt_serial.c:342: SIO1_TxPtr &= SIO1_TX_FIFOMASK;
  1111. ;     genAssign
  1112. ;     genAnd
  1113. ;       Peephole 248.b  optimized and to xdata
  1114.         mov     dptr,#_SIO1_TxPtr
  1115.         movx    a,@dptr
  1116.         mov     r3,a
  1117.         anl     a,#0x7F
  1118.         movx    @dptr,a
  1119.         C$rt_serial.c$343$4$9 ==.
  1120. ;rt_serial.c:343: SIO1_TxBusy = TRUE;                  /* flow has not been stopped            */
  1121. ;     genAssign
  1122.         setb    _SIO1_TxBusy
  1123.         C$rt_serial.c$344$4$9 ==.
  1124. ;rt_serial.c:344: SBUF   = c;
  1125. ;     genAssign
  1126.         mov     _SBUF,r2
  1127. ;       Peephole 112.b  changed ljmp to sjmp
  1128.         sjmp    00115$
  1129. 00110$:
  1130.         C$rt_serial.c$348$4$10 ==.
  1131. ;rt_serial.c:348: SIO1_TxBusy = FALSE;
  1132. ;     genAssign
  1133.         clr     _SIO1_TxBusy
  1134. 00115$:
  1135.         pop     psw
  1136.         pop     dph
  1137.         pop     dpl
  1138.         pop     acc
  1139.         C$rt_serial.c$355$3$1 ==.
  1140.         XG$SIOInterrupt$0$0 ==.
  1141.         reti
  1142. ;       eliminated unneeded push/pop b
  1143. ;------------------------------------------------------------
  1144. ;Allocation info for local variables in function 'T2Interrupt'
  1145. ;------------------------------------------------------------
  1146. ;TempPtr                   Allocated with name '_T2Interrupt_TempPtr_6_10'
  1147. ;------------------------------------------------------------
  1148.         G$T2Interrupt$0$0 ==.
  1149.         C$rt_serial.c$362$3$1 ==.
  1150. ;rt_serial.c:362: void T2Interrupt(void) interrupt T2_INTVEC using T2_INTERRUPT_BANK
  1151. ;       -----------------------------------------
  1152. ;        function T2Interrupt
  1153. ;       -----------------------------------------
  1154. _T2Interrupt:
  1155.         ar2 = 0x1a
  1156.         ar3 = 0x1b
  1157.         ar4 = 0x1c
  1158.         ar5 = 0x1d
  1159.         ar6 = 0x1e
  1160.         ar7 = 0x1f
  1161.         ar0 = 0x18
  1162.         ar1 = 0x19
  1163.         push    acc
  1164.         push    dpl
  1165.         push    dph
  1166.         push    psw
  1167.         mov     psw,#0x18
  1168.         C$rt_serial.c$366$1$1 ==.
  1169. ;rt_serial.c:366: if (EXF2)
  1170. ;     genIfx
  1171. ;     genIfxJump
  1172. ;       Peephole 111    removed ljmp by inverse jump logic
  1173.         C$rt_serial.c$369$2$2 ==.
  1174. ;rt_serial.c:369: EXF2  = FALSE;
  1175. ;     genAssign
  1176. ;       Peephole 250.a  using atomic test and clear
  1177.         jbc     _EXF2,00133$
  1178.         sjmp    00102$
  1179. 00133$:
  1180.         C$rt_serial.c$370$2$2 ==.
  1181. ;rt_serial.c:370: TF2    = FALSE;  
  1182. ;     genAssign
  1183.         clr     _TF2
  1184.         C$rt_serial.c$372$2$2 ==.
  1185. ;rt_serial.c:372: EXEN2 = FALSE; /* turn off the ext2 IRQ */
  1186. ;     genAssign
  1187.         clr     _EXEN2
  1188.         C$rt_serial.c$376$2$2 ==.
  1189. ;rt_serial.c:376: RCAP2H =  SIO2_BAUDCODE_BIT / 256;
  1190. ;     genAssign
  1191.         mov     _RCAP2H,#0xFF
  1192.         C$rt_serial.c$377$2$2 ==.
  1193. ;rt_serial.c:377: RCAP2L =  SIO2_BAUDCODE_BIT & 255;    /* set timer 2 for 4800 baud   */
  1194. ;     genAssign
  1195.         mov     _RCAP2L,#0x40
  1196.         C$rt_serial.c$379$2$2 ==.
  1197. ;rt_serial.c:379: SIO2_BitCnt = 0;   /* count up incl start bit to 8 */
  1198. ;     genAssign
  1199.         mov     dptr,#_SIO2_BitCnt
  1200. ;       Peephole 181    changed mov to clr
  1201.         clr     a
  1202.         movx    @dptr,a
  1203. 00102$:
  1204.         C$rt_serial.c$387$1$1 ==.
  1205. ;rt_serial.c:387: if (TF2)
  1206. ;     genIfx
  1207. ;     genIfxJump
  1208.         C$rt_serial.c$390$2$3 ==.
  1209. ;rt_serial.c:390: TF2 = FALSE;
  1210. ;     genAssign
  1211. ;       Peephole 250.b  using atomic test and clear
  1212.         jbc     _TF2,00134$
  1213.         ljmp    00122$
  1214. 00134$:
  1215.         C$rt_serial.c$440$2$3 ==.
  1216. ;rt_serial.c:440: if(!EXEN2)
  1217. ;     genIfx
  1218. ;     genIfxJump
  1219.         jnb     _EXEN2,00135$
  1220.         ljmp    00122$
  1221. 00135$:
  1222.         C$rt_serial.c$443$3$4 ==.
  1223. ;rt_serial.c:443: if(SIO2_BitCnt == 0)
  1224. ;     genAssign
  1225.         mov     dptr,#_SIO2_BitCnt
  1226.         movx    a,@dptr
  1227.         mov     r2,a
  1228. ;     genCmpEq
  1229. ;       Peephole 112.b  changed ljmp to sjmp
  1230. ;       Peephole 199    optimized misc jump sequence
  1231.         cjne    r2,#0x00,00116$
  1232. ;00136$:
  1233. ;       Peephole 200    removed redundant sjmp
  1234. 00137$:
  1235. ;     genIfx
  1236. ;     genIfxJump
  1237. ;       Peephole 111    removed ljmp by inverse jump logic
  1238.         jnb     _P1_1,00104$
  1239. 00138$:
  1240.         C$rt_serial.c$448$5$6 ==.
  1241. ;rt_serial.c:448: RCAP2H    =  SIO2_BAUDCODE_START / 256;   /* setup for 4800 baud */
  1242. ;     genAssign
  1243.         mov     _RCAP2H,#0xFF
  1244.         C$rt_serial.c$449$5$6 ==.
  1245. ;rt_serial.c:449: RCAP2L    =  SIO2_BAUDCODE_START & 255;   /* start bit */
  1246. ;     genAssign
  1247.         mov     _RCAP2L,#0xA0
  1248.         C$rt_serial.c$450$5$6 ==.
  1249. ;rt_serial.c:450: EXF2      = FALSE;
  1250. ;     genAssign
  1251.         clr     _EXF2
  1252.         C$rt_serial.c$451$5$6 ==.
  1253. ;rt_serial.c:451: EXEN2     = TRUE;
  1254. ;     genAssign
  1255.         setb    _EXEN2
  1256.         C$rt_serial.c$452$5$6 ==.
  1257. ;rt_serial.c:452: TR2       = TRUE; /* Keep running counter */
  1258. ;     genAssign
  1259.         setb    _TR2
  1260.         ljmp    00122$
  1261. 00104$:
  1262.         C$rt_serial.c$459$5$7 ==.
  1263. ;rt_serial.c:459: SIO2_BitCnt++;
  1264. ;     genPlus
  1265.         mov     dptr,#_SIO2_BitCnt
  1266.         movx    a,@dptr
  1267.         add     a,#0x01
  1268.         movx    @dptr,a
  1269.         ljmp    00122$
  1270. 00116$:
  1271.         C$rt_serial.c$464$4$8 ==.
  1272. ;rt_serial.c:464: SIO2_Byte = (SIO2_Byte >> 1) | (SIO2_RXD << 7);
  1273. ;     genAssign
  1274.         mov     dptr,#_SIO2_Byte
  1275.         movx    a,@dptr
  1276. ;     genRightShift
  1277. ;     genRightShiftLiteral
  1278. ;     genrshOne
  1279. ;       Peephole 105    removed redundant mov
  1280.         mov     r2,a
  1281.         clr     c
  1282.         rrc     a
  1283.         mov     r2,a
  1284. ;     genAssign
  1285.         clr     a
  1286.         mov     c,_P1_1
  1287.         rlc     a
  1288. ;     genLeftShift
  1289. ;     genLeftShiftLiteral
  1290. ;     genlshOne
  1291. ;       Peephole 105    removed redundant mov
  1292.         mov     r3,a
  1293.         rr      a
  1294.         anl     a,#0x80
  1295. ;     genOr
  1296. ;       Peephole 177.d  removed redundant move
  1297.         mov     r3,a
  1298.         mov     dptr,#_SIO2_Byte
  1299.         orl     a,r2
  1300.         movx    @dptr,a
  1301.         C$rt_serial.c$466$4$8 ==.
  1302. ;rt_serial.c:466: if (SIO2_BitCnt==8 )
  1303. ;     genAssign
  1304.         mov     dptr,#_SIO2_BitCnt
  1305.         movx    a,@dptr
  1306.         mov     r2,a
  1307. ;     genCmpEq
  1308. ;       Peephole 112.b  changed ljmp to sjmp
  1309. ;       Peephole 199    optimized misc jump sequence
  1310.         cjne    r2,#0x08,00111$
  1311. ;00139$:
  1312. ;       Peephole 200    removed redundant sjmp
  1313. 00140$:
  1314.         C$rt_serial.c$468$5$9 ==.
  1315. ;rt_serial.c:468: if(SIO2_RxCount != SIO2_RX_FIFOFULL)       /* is there room left in the Rx FIFO ?    */
  1316. ;     genAssign
  1317.         mov     dptr,#_SIO2_RxCount
  1318.         movx    a,@dptr
  1319.         mov     r2,a
  1320. ;     genCmpEq
  1321.         cjne    r2,#0x40,00141$
  1322. ;       Peephole 112.b  changed ljmp to sjmp
  1323.         sjmp    00107$
  1324. 00141$:
  1325.         C$rt_serial.c$470$6$10 ==.
  1326. ;rt_serial.c:470: Byte TempPtr = (SIO2_RxPtr+SIO2_RxCount) & SIO2_RX_FIFOMASK;
  1327. ;     genAssign
  1328.         mov     dptr,#_SIO2_RxCount
  1329.         movx    a,@dptr
  1330.         mov     r2,a
  1331. ;     genAssign
  1332.         mov     dptr,#_SIO2_RxPtr
  1333.         movx    a,@dptr
  1334.         mov     r3,a
  1335. ;     genPlus
  1336. ;       Peephole 236.g  used r2 instead of ar2
  1337.         mov     a,r2
  1338. ;       Peephole 236.a  used r3 instead of ar3
  1339.         add     a,r3
  1340. ;     genAnd
  1341.         anl     a,#0x3F
  1342.         C$rt_serial.c$471$6$10 ==.
  1343. ;rt_serial.c:471: SIO2_RXFIFO[TempPtr] = SIO2_Byte;
  1344. ;     genPlus
  1345. ;       Peephole 177.b  removed redundant mov
  1346. ;       Peephole 215    removed some moves
  1347.         add     a,#_SIO2_RXFIFO
  1348.         mov     r2,a
  1349. ;       Peephole 181    changed mov to clr
  1350.         clr     a
  1351.         addc    a,#(_SIO2_RXFIFO >> 8)
  1352.         mov     r3,a
  1353. ;     genAssign
  1354.         mov     dptr,#_SIO2_Byte
  1355.         movx    a,@dptr
  1356. ;     genPointerSet
  1357. ;     genFarPointerSet
  1358. ;       Peephole 136    removed redundant moves
  1359.         mov     r4,a
  1360.         mov     dpl,r2
  1361.         mov     dph,r3
  1362.         movx    @dptr,a
  1363.         C$rt_serial.c$472$6$10 ==.
  1364. ;rt_serial.c:472: SIO2_RxCount++;
  1365. ;     genPlus
  1366.         mov     dptr,#_SIO2_RxCount
  1367.         movx    a,@dptr
  1368.         add     a,#0x01
  1369.         movx    @dptr,a
  1370. 00107$:
  1371.         C$rt_serial.c$475$5$9 ==.
  1372. ;rt_serial.c:475: INT_SIGNAL(SIO2_TASK,SERIAL_SIG);
  1373. ;     genPointerGet
  1374. ;     genNearPointerGet
  1375.         mov     r0,#(_task_signals + 0x0001)
  1376.         mov     ar2,@r0
  1377. ;     genOr
  1378.         mov     a,#0x40
  1379.         orl     a,r2
  1380. ;     genPointerSet
  1381. ;     genNearPointerSet
  1382.         mov     r0,#(_task_signals + 0x0001)
  1383.         mov     @r0,acc
  1384. ;     genPointerGet
  1385. ;     genNearPointerGet
  1386.         mov     r0,#(_task_signals + 0x0001)
  1387.         mov     ar2,@r0
  1388. ;     genPointerGet
  1389. ;     genNearPointerGet
  1390.         mov     r0,#(_task_masks + 0x0001)
  1391.         mov     ar3,@r0
  1392. ;     genAnd
  1393.         mov     a,r3
  1394.         anl     a,r2
  1395. ;     genIfx
  1396. ;     genIfxJump
  1397. ;       Peephole 110    removed ljmp by inverse jump logic
  1398.         jz      00111$
  1399. 00142$:
  1400. ;     genOr
  1401.         orl     _ready,#0x02
  1402. 00111$:
  1403.         C$rt_serial.c$479$4$8 ==.
  1404. ;rt_serial.c:479: if(SIO2_BitCnt <8 )
  1405. ;     genAssign
  1406.         mov     dptr,#_SIO2_BitCnt
  1407.         movx    a,@dptr
  1408.         mov     r2,a
  1409. ;     genCmpLt
  1410. ;     genCmp
  1411.         cjne    r2,#0x08,00143$
  1412. 00143$:
  1413. ;     genIfxJump
  1414. ;       Peephole 108    removed ljmp by inverse jump logic
  1415.         jnc     00113$
  1416. 00144$:
  1417.         C$rt_serial.c$481$5$12 ==.
  1418. ;rt_serial.c:481: SIO2_BitCnt++;
  1419. ;     genPlus
  1420.         mov     dptr,#_SIO2_BitCnt
  1421.         movx    a,@dptr
  1422.         add     a,#0x01
  1423.         movx    @dptr,a
  1424. ;       Peephole 112.b  changed ljmp to sjmp
  1425.         sjmp    00122$
  1426. 00113$:
  1427.         C$rt_serial.c$497$6$14 ==.
  1428. ;rt_serial.c:497: RCAP2H    =  SIO2_BAUDCODE_START / 256;   /* setup for 4800 baud */
  1429. ;     genAssign
  1430.         mov     _RCAP2H,#0xFF
  1431.         C$rt_serial.c$498$6$14 ==.
  1432. ;rt_serial.c:498: RCAP2L    =  SIO2_BAUDCODE_START & 255;   /* start bit */
  1433. ;     genAssign
  1434.         mov     _RCAP2L,#0xA0
  1435.         C$rt_serial.c$499$6$14 ==.
  1436. ;rt_serial.c:499: EXF2    = FALSE;
  1437. ;     genAssign
  1438.         clr     _EXF2
  1439.         C$rt_serial.c$500$6$14 ==.
  1440. ;rt_serial.c:500: EXEN2   = TRUE;
  1441. ;     genAssign
  1442.         setb    _EXEN2
  1443.         C$rt_serial.c$501$6$14 ==.
  1444. ;rt_serial.c:501: TR2     = TRUE; /* Keep running counter */
  1445. ;     genAssign
  1446.         setb    _TR2
  1447. 00122$:
  1448.         pop     psw
  1449.         pop     dph
  1450.         pop     dpl
  1451.         pop     acc
  1452.         C$rt_serial.c$507$1$1 ==.
  1453.         XG$T2Interrupt$0$0 ==.
  1454.         reti
  1455. ;       eliminated unneeded push/pop b
  1456. ;------------------------------------------------------------
  1457. ;Allocation info for local variables in function 'putchar'
  1458. ;------------------------------------------------------------
  1459. ;c                         Allocated with name '_putchar_c_1_1'
  1460. ;------------------------------------------------------------
  1461.         G$putchar$0$0 ==.
  1462.         C$rt_serial.c$525$1$1 ==.
  1463. ;rt_serial.c:525: void putchar(char c)
  1464. ;       -----------------------------------------
  1465. ;        function putchar
  1466. ;       -----------------------------------------
  1467. _putchar:
  1468.         ar2 = 0x02
  1469.         ar3 = 0x03
  1470.         ar4 = 0x04
  1471.         ar5 = 0x05
  1472.         ar6 = 0x06
  1473.         ar7 = 0x07
  1474.         ar0 = 0x00
  1475.         ar1 = 0x01
  1476. ;     genReceive
  1477.         mov     a,dpl
  1478.         mov     dptr,#_putchar_c_1_1
  1479.         movx    @dptr,a
  1480.         C$rt_serial.c$528$2$2 ==.
  1481. ;rt_serial.c:528: BEGIN_CRITICAL;
  1482. ;     genIfx
  1483. ;     genIfxJump
  1484. ;       Peephole 111    removed ljmp by inverse jump logic
  1485. ;     genAssign
  1486. ;       Peephole 250.a  using atomic test and clear
  1487.         jbc     _EA,00119$
  1488.         sjmp    00102$
  1489. 00119$:
  1490. ;     genAssign
  1491.         setb    _putchar_EA_local_1_1
  1492. ;       Peephole 112.b  changed ljmp to sjmp
  1493.         sjmp    00107$
  1494. 00102$:
  1495. ;     genAssign
  1496.         clr     _putchar_EA_local_1_1
  1497.         C$rt_serial.c$530$1$1 ==.
  1498. ;rt_serial.c:530: while(SIO1_TxCount == SIO1_TX_FIFOFULL)
  1499. 00107$:
  1500. ;     genAssign
  1501.         mov     dptr,#_SIO1_TxCount
  1502.         movx    a,@dptr
  1503.         mov     r2,a
  1504. ;     genCmpEq
  1505. ;       Peephole 112.b  changed ljmp to sjmp
  1506. ;       Peephole 199    optimized misc jump sequence
  1507.         cjne    r2,#0x80,00109$
  1508. ;00120$:
  1509. ;       Peephole 200    removed redundant sjmp
  1510. 00121$:
  1511.         C$rt_serial.c$533$3$6 ==.
  1512. ;rt_serial.c:533: END_CRITICAL;
  1513. ;     genAssign
  1514.         mov     c,_putchar_EA_local_1_1
  1515.         mov     _EA,c
  1516.         C$rt_serial.c$534$2$5 ==.
  1517. ;rt_serial.c:534: RESCHEDULE;
  1518. ;     genCall
  1519.         lcall   _reschedule
  1520.         C$rt_serial.c$536$3$7 ==.
  1521. ;rt_serial.c:536: BEGIN_CRITICAL;
  1522. ;     genIfx
  1523. ;     genIfxJump
  1524. ;       Peephole 111    removed ljmp by inverse jump logic
  1525. ;     genAssign
  1526. ;       Peephole 250.a  using atomic test and clear
  1527.         jbc     _EA,00122$
  1528.         sjmp    00105$
  1529. 00122$:
  1530. ;     genAssign
  1531.         setb    _putchar_EA_local_1_1
  1532. ;       Peephole 112.b  changed ljmp to sjmp
  1533.         sjmp    00107$
  1534. 00105$:
  1535. ;     genAssign
  1536.         clr     _putchar_EA_local_1_1
  1537. ;       Peephole 112.b  changed ljmp to sjmp
  1538.         sjmp    00107$
  1539. 00109$:
  1540.         C$rt_serial.c$540$1$1 ==.
  1541. ;rt_serial.c:540: SIO1_TXFIFO[(SIO1_TxPtr+SIO1_TxCount) & SIO1_TX_FIFOMASK] = c;     /* place character into buffer */
  1542. ;     genAssign
  1543.         mov     dptr,#_SIO1_TxCount
  1544.         movx    a,@dptr
  1545.         mov     r2,a
  1546. ;     genAssign
  1547.         mov     dptr,#_SIO1_TxPtr
  1548.         movx    a,@dptr
  1549. ;     genPlus
  1550. ;       Peephole 236.g  used r2 instead of ar2
  1551. ;       Peephole 236.a  used r3 instead of ar3
  1552. ;       Peephole 214    reduced some extra moves
  1553.         mov     r3,a
  1554.         add     a,r2
  1555. ;     genAnd
  1556.         anl     a,#0x7F
  1557. ;     genPlus
  1558.         add     a,#_SIO1_TXFIFO
  1559.         mov     r2,a
  1560. ;       Peephole 240    use clr instead of addc a,#0
  1561.         clr     a
  1562.         addc    a,#(_SIO1_TXFIFO >> 8)
  1563.         mov     r3,a
  1564. ;     genAssign
  1565.         mov     dptr,#_putchar_c_1_1
  1566.         movx    a,@dptr
  1567. ;     genPointerSet
  1568. ;     genFarPointerSet
  1569. ;       Peephole 136    removed redundant moves
  1570.         mov     r4,a
  1571.         mov     dpl,r2
  1572.         mov     dph,r3
  1573.         movx    @dptr,a
  1574.         C$rt_serial.c$541$1$1 ==.
  1575. ;rt_serial.c:541: SIO1_TxCount++;
  1576. ;     genPlus
  1577.         mov     dptr,#_SIO1_TxCount
  1578.         movx    a,@dptr
  1579.         add     a,#0x01
  1580.         movx    @dptr,a
  1581.         C$rt_serial.c$542$2$10 ==.
  1582. ;rt_serial.c:542: END_CRITICAL;
  1583. ;     genAssign
  1584.         mov     c,_putchar_EA_local_1_1
  1585.         mov     _EA,c
  1586.         C$rt_serial.c$544$1$1 ==.
  1587. ;rt_serial.c:544: if (!SIO1_TxBusy)
  1588. ;     genIfx
  1589. ;     genIfxJump
  1590. ;       Peephole 112.a  removed ljmp by inverse jump logic
  1591.         jb      _SIO1_TxBusy,00112$
  1592. 00123$:
  1593.         C$rt_serial.c$546$2$11 ==.
  1594. ;rt_serial.c:546: TI=1;
  1595. ;     genAssign
  1596.         setb    _TI
  1597. 00112$:
  1598.         C$rt_serial.c$569$2$1 ==.
  1599.         XG$putchar$0$0 ==.
  1600.         ret
  1601. ;------------------------------------------------------------
  1602. ;Allocation info for local variables in function 'getchar'
  1603. ;------------------------------------------------------------
  1604. ;Chr                       Allocated with name '_getchar_Chr_1_1'
  1605. ;------------------------------------------------------------
  1606.         G$getchar$0$0 ==.
  1607.         C$rt_serial.c$620$2$1 ==.
  1608. ;rt_serial.c:620: char getchar(void)
  1609. ;       -----------------------------------------
  1610. ;        function getchar
  1611. ;       -----------------------------------------
  1612. _getchar:
  1613.         C$rt_serial.c$624$1$1 ==.
  1614. ;rt_serial.c:624: while (!SIO1_RxCount)
  1615. 00101$:
  1616. ;     genAssign
  1617.         mov     dptr,#_SIO1_RxCount
  1618.         movx    a,@dptr
  1619. ;     genIfx
  1620. ;       Peephole 105    removed redundant mov
  1621.         mov     r2,a
  1622. ;     genIfxJump
  1623. ;       Peephole 109    removed ljmp by inverse jump logic
  1624.         jnz     00103$
  1625. 00115$:
  1626.         C$rt_serial.c$626$2$2 ==.
  1627. ;rt_serial.c:626: RESCHEDULE;  
  1628. ;     genCall
  1629.         lcall   _reschedule
  1630. ;       Peephole 112.b  changed ljmp to sjmp
  1631.         sjmp    00101$
  1632. 00103$:
  1633.         C$rt_serial.c$629$2$3 ==.
  1634. ;rt_serial.c:629: BEGIN_CRITICAL;
  1635. ;     genIfx
  1636. ;     genIfxJump
  1637. ;       Peephole 111    removed ljmp by inverse jump logic
  1638. ;     genAssign
  1639. ;       Peephole 250.a  using atomic test and clear
  1640.         jbc     _EA,00116$
  1641.         sjmp    00105$
  1642. 00116$:
  1643. ;     genAssign
  1644.         setb    _getchar_EA_local_1_1
  1645. ;       Peephole 112.b  changed ljmp to sjmp
  1646.         sjmp    00106$
  1647. 00105$:
  1648. ;     genAssign
  1649.         clr     _getchar_EA_local_1_1
  1650. 00106$:
  1651.         C$rt_serial.c$631$1$1 ==.
  1652. ;rt_serial.c:631: Chr = SIO1_RXFIFO[SIO1_RxPtr];  /* get next char out of RxFIFO */
  1653. ;     genAssign
  1654.         mov     dptr,#_SIO1_RxPtr
  1655.         movx    a,@dptr
  1656. ;     genPlus
  1657. ;       Peephole 177.b  removed redundant mov
  1658.         mov     r2,a
  1659.         add     a,#_SIO1_RXFIFO
  1660.         mov     dpl,a
  1661. ;       Peephole 181    changed mov to clr
  1662.         clr     a
  1663.         addc    a,#(_SIO1_RXFIFO >> 8)
  1664.         mov     dph,a
  1665. ;     genPointerGet
  1666. ;     genFarPointerGet
  1667.         movx    a,@dptr
  1668.         mov     r2,a
  1669.         C$rt_serial.c$632$1$1 ==.
  1670. ;rt_serial.c:632: SIO1_RxPtr++;
  1671. ;     genPlus
  1672.         mov     dptr,#_SIO1_RxPtr
  1673.         movx    a,@dptr
  1674.         add     a,#0x01
  1675.         movx    @dptr,a
  1676.         C$rt_serial.c$633$1$1 ==.
  1677. ;rt_serial.c:633: SIO1_RxPtr   &= SIO1_RX_FIFOMASK;
  1678. ;     genAssign
  1679. ;     genAnd
  1680. ;       Peephole 248.b  optimized and to xdata
  1681.         mov     dptr,#_SIO1_RxPtr
  1682.         movx    a,@dptr
  1683.         mov     r3,a
  1684.         anl     a,#0x1F
  1685.         movx    @dptr,a
  1686.         C$rt_serial.c$634$1$1 ==.
  1687. ;rt_serial.c:634: SIO1_RxCount--;
  1688. ;     genMinus
  1689.         mov     dptr,#_SIO1_RxCount
  1690. ;     genMinusDec
  1691.         movx    a,@dptr
  1692.         dec     a
  1693. ;     genAssign
  1694.         mov     dptr,#_SIO1_RxCount
  1695.         movx    @dptr,a
  1696.         C$rt_serial.c$635$1$1 ==.
  1697. ;rt_serial.c:635: SIO1_RxCount &= SIO1_RX_FIFOMASK;
  1698. ;     genAssign
  1699. ;     genAnd
  1700. ;       Peephole 248.b  optimized and to xdata
  1701.         mov     dptr,#_SIO1_RxCount
  1702.         movx    a,@dptr
  1703.         mov     r3,a
  1704.         anl     a,#0x1F
  1705.         movx    @dptr,a
  1706.         C$rt_serial.c$647$1$1 ==.
  1707. ;rt_serial.c:647: if(SIO1_RxCount <= (Byte) SIO1_RX_FIFO_LWM)  /* when space in FIFO restart */
  1708. ;     genAssign
  1709.         mov     dptr,#_SIO1_RxCount
  1710.         movx    a,@dptr
  1711.         mov     r3,a
  1712. ;     genCmpGt
  1713. ;     genCmp
  1714.         clr     c
  1715.         mov     a,#0x08
  1716.         subb    a,r3
  1717. ;     genIfxJump
  1718. ;       Peephole 112.b  changed ljmp to sjmp
  1719. ;       Peephole 160    removed sjmp by inverse jump logic
  1720.         jc      00108$
  1721. 00117$:
  1722.         C$rt_serial.c$649$2$6 ==.
  1723. ;rt_serial.c:649: SIO1_CTS     = FALSE;
  1724. ;     genAssign
  1725.         clr     _P1_5
  1726. 00108$:
  1727.         C$rt_serial.c$653$2$7 ==.
  1728. ;rt_serial.c:653: END_CRITICAL;
  1729. ;     genAssign
  1730.         mov     c,_getchar_EA_local_1_1
  1731.         mov     _EA,c
  1732.         C$rt_serial.c$655$1$1 ==.
  1733. ;rt_serial.c:655: return Chr;
  1734. ;     genRet
  1735.         mov     dpl,r2
  1736. 00109$:
  1737.         C$rt_serial.c$656$1$1 ==.
  1738.         XG$getchar$0$0 ==.
  1739.         ret
  1740. ;------------------------------------------------------------
  1741. ;Allocation info for local variables in function 'SIO2_getchar'
  1742. ;------------------------------------------------------------
  1743. ;Chr                       Allocated with name '_SIO2_getchar_Chr_1_1'
  1744. ;------------------------------------------------------------
  1745.         G$SIO2_getchar$0$0 ==.
  1746.         C$rt_serial.c$662$1$1 ==.
  1747. ;rt_serial.c:662: char SIO2_getchar(void)
  1748. ;       -----------------------------------------
  1749. ;        function SIO2_getchar
  1750. ;       -----------------------------------------
  1751. _SIO2_getchar:
  1752.         C$rt_serial.c$667$1$1 ==.
  1753. ;rt_serial.c:667: while (!SIO2_RxCount)
  1754. 00101$:
  1755. ;     genAssign
  1756.         mov     dptr,#_SIO2_RxCount
  1757.         movx    a,@dptr
  1758. ;     genIfx
  1759. ;       Peephole 105    removed redundant mov
  1760.         mov     r2,a
  1761. ;     genIfxJump
  1762. ;       Peephole 109    removed ljmp by inverse jump logic
  1763.         jnz     00103$
  1764. 00112$:
  1765.         C$rt_serial.c$669$2$2 ==.
  1766. ;rt_serial.c:669: RESCHEDULE;
  1767. ;     genCall
  1768.         lcall   _reschedule
  1769. ;       Peephole 112.b  changed ljmp to sjmp
  1770.         sjmp    00101$
  1771. 00103$:
  1772.         C$rt_serial.c$672$2$3 ==.
  1773. ;rt_serial.c:672: BEGIN_CRITICAL;
  1774. ;     genIfx
  1775. ;     genIfxJump
  1776. ;       Peephole 111    removed ljmp by inverse jump logic
  1777. ;     genAssign
  1778. ;       Peephole 250.a  using atomic test and clear
  1779.         jbc     _EA,00113$
  1780.         sjmp    00105$
  1781. 00113$:
  1782. ;     genAssign
  1783.         setb    _SIO2_getchar_EA_local_1_1
  1784. ;       Peephole 112.b  changed ljmp to sjmp
  1785.         sjmp    00106$
  1786. 00105$:
  1787. ;     genAssign
  1788.         clr     _SIO2_getchar_EA_local_1_1
  1789. 00106$:
  1790.         C$rt_serial.c$674$1$1 ==.
  1791. ;rt_serial.c:674: Chr = SIO2_RXFIFO[SIO2_RxPtr];  /* get next char out of RxFIFO */
  1792. ;     genAssign
  1793.         mov     dptr,#_SIO2_RxPtr
  1794.         movx    a,@dptr
  1795. ;     genPlus
  1796. ;       Peephole 177.b  removed redundant mov
  1797.         mov     r2,a
  1798.         add     a,#_SIO2_RXFIFO
  1799.         mov     dpl,a
  1800. ;       Peephole 181    changed mov to clr
  1801.         clr     a
  1802.         addc    a,#(_SIO2_RXFIFO >> 8)
  1803.         mov     dph,a
  1804. ;     genPointerGet
  1805. ;     genFarPointerGet
  1806.         movx    a,@dptr
  1807.         mov     r2,a
  1808.         C$rt_serial.c$675$1$1 ==.
  1809. ;rt_serial.c:675: SIO2_RxPtr++;
  1810. ;     genPlus
  1811.         mov     dptr,#_SIO2_RxPtr
  1812.         movx    a,@dptr
  1813.         add     a,#0x01
  1814.         movx    @dptr,a
  1815.         C$rt_serial.c$676$1$1 ==.
  1816. ;rt_serial.c:676: SIO2_RxPtr   &= SIO2_RX_FIFOMASK;
  1817. ;     genAssign
  1818. ;     genAnd
  1819. ;       Peephole 248.b  optimized and to xdata
  1820.         mov     dptr,#_SIO2_RxPtr
  1821.         movx    a,@dptr
  1822.         mov     r3,a
  1823.         anl     a,#0x3F
  1824.         movx    @dptr,a
  1825.         C$rt_serial.c$677$1$1 ==.
  1826. ;rt_serial.c:677: SIO2_RxCount--;
  1827. ;     genMinus
  1828.         mov     dptr,#_SIO2_RxCount
  1829. ;     genMinusDec
  1830.         movx    a,@dptr
  1831.         dec     a
  1832. ;     genAssign
  1833.         mov     dptr,#_SIO2_RxCount
  1834.         movx    @dptr,a
  1835.         C$rt_serial.c$678$1$1 ==.
  1836. ;rt_serial.c:678: SIO2_RxCount &= SIO2_RX_FIFOMASK;
  1837. ;     genAssign
  1838. ;     genAnd
  1839. ;       Peephole 248.b  optimized and to xdata
  1840.         mov     dptr,#_SIO2_RxCount
  1841.         movx    a,@dptr
  1842.         mov     r3,a
  1843.         anl     a,#0x3F
  1844.         movx    @dptr,a
  1845.         C$rt_serial.c$680$2$6 ==.
  1846. ;rt_serial.c:680: END_CRITICAL;
  1847. ;     genAssign
  1848.         mov     c,_SIO2_getchar_EA_local_1_1
  1849.         mov     _EA,c
  1850.         C$rt_serial.c$682$1$1 ==.
  1851. ;rt_serial.c:682: return Chr;
  1852. ;     genRet
  1853.         mov     dpl,r2
  1854. 00107$:
  1855.         C$rt_serial.c$683$1$1 ==.
  1856.         XG$SIO2_getchar$0$0 ==.
  1857.         ret
  1858. ;------------------------------------------------------------
  1859. ;Allocation info for local variables in function 'SIO1_pollchar'
  1860. ;------------------------------------------------------------
  1861. ;------------------------------------------------------------
  1862.         G$SIO1_pollchar$0$0 ==.
  1863.         C$rt_serial.c$694$1$1 ==.
  1864. ;rt_serial.c:694: char  SIO1_pollchar(void)
  1865. ;       -----------------------------------------
  1866. ;        function SIO1_pollchar
  1867. ;       -----------------------------------------
  1868. _SIO1_pollchar:
  1869.         C$rt_serial.c$696$1$1 ==.
  1870. ;rt_serial.c:696: return SIO1_RxCount;
  1871. ;     genAssign
  1872.         mov     dptr,#_SIO1_RxCount
  1873.         movx    a,@dptr
  1874. ;     genRet
  1875.         C$rt_serial.c$697$1$1 ==.
  1876.         XG$SIO1_pollchar$0$0 ==.
  1877. ;       Peephole 234    loading dpl directly from a(ccumulator), r2 not set
  1878.         mov     dpl,a
  1879. 00101$:
  1880.         ret
  1881. ;------------------------------------------------------------
  1882. ;Allocation info for local variables in function 'SIO2_pollchar'
  1883. ;------------------------------------------------------------
  1884. ;------------------------------------------------------------
  1885.         G$SIO2_pollchar$0$0 ==.
  1886.         C$rt_serial.c$700$1$1 ==.
  1887. ;rt_serial.c:700: char  SIO2_pollchar(void)
  1888. ;       -----------------------------------------
  1889. ;        function SIO2_pollchar
  1890. ;       -----------------------------------------
  1891. _SIO2_pollchar:
  1892.         C$rt_serial.c$702$1$1 ==.
  1893. ;rt_serial.c:702: return SIO2_RxCount;
  1894. ;     genAssign
  1895.         mov     dptr,#_SIO2_RxCount
  1896.         movx    a,@dptr
  1897. ;     genRet
  1898.         C$rt_serial.c$703$1$1 ==.
  1899.         XG$SIO2_pollchar$0$0 ==.
  1900. ;       Peephole 234    loading dpl directly from a(ccumulator), r2 not set
  1901.         mov     dpl,a
  1902. 00101$:
  1903.         ret
  1904. ;------------------------------------------------------------
  1905. ;Allocation info for local variables in function 'SIO1_flush'
  1906. ;------------------------------------------------------------
  1907. ;------------------------------------------------------------
  1908.         G$SIO1_flush$0$0 ==.
  1909.         C$rt_serial.c$706$1$1 ==.
  1910. ;rt_serial.c:706: void SIO1_flush(void)
  1911. ;       -----------------------------------------
  1912. ;        function SIO1_flush
  1913. ;       -----------------------------------------
  1914. _SIO1_flush:
  1915.         C$rt_serial.c$709$2$2 ==.
  1916. ;rt_serial.c:709: BEGIN_CRITICAL;
  1917. ;     genIfx
  1918. ;     genIfxJump
  1919. ;       Peephole 111    removed ljmp by inverse jump logic
  1920. ;     genAssign
  1921. ;       Peephole 250.a  using atomic test and clear
  1922.         jbc     _EA,00107$
  1923.         sjmp    00102$
  1924. 00107$:
  1925. ;     genAssign
  1926.         setb    _SIO1_flush_EA_local_1_1
  1927. ;       Peephole 112.b  changed ljmp to sjmp
  1928.         sjmp    00103$
  1929. 00102$:
  1930. ;     genAssign
  1931.         clr     _SIO1_flush_EA_local_1_1
  1932. 00103$:
  1933.         C$rt_serial.c$710$1$1 ==.
  1934. ;rt_serial.c:710: SIO1_RxPtr    = 0;
  1935. ;     genAssign
  1936.         mov     dptr,#_SIO1_RxPtr
  1937. ;       Peephole 181    changed mov to clr
  1938.         C$rt_serial.c$711$1$1 ==.
  1939. ;rt_serial.c:711: SIO1_RxCount  = 0;
  1940. ;     genAssign
  1941. ;       Peephole 181    changed mov to clr
  1942. ;       Peephole 219    removed redundant clear
  1943.         clr     a
  1944.         movx    @dptr,a
  1945.         mov     dptr,#_SIO1_RxCount
  1946.         movx    @dptr,a
  1947.         C$rt_serial.c$712$2$5 ==.
  1948. ;rt_serial.c:712: END_CRITICAL;
  1949. ;     genAssign
  1950.         mov     c,_SIO1_flush_EA_local_1_1
  1951.         mov     _EA,c
  1952. 00104$:
  1953.         C$rt_serial.c$713$2$5 ==.
  1954.         XG$SIO1_flush$0$0 ==.
  1955.         ret
  1956. ;------------------------------------------------------------
  1957. ;Allocation info for local variables in function 'SIO2_flush'
  1958. ;------------------------------------------------------------
  1959. ;------------------------------------------------------------
  1960.         G$SIO2_flush$0$0 ==.
  1961.         C$rt_serial.c$716$2$5 ==.
  1962. ;rt_serial.c:716: void SIO2_flush(void)
  1963. ;       -----------------------------------------
  1964. ;        function SIO2_flush
  1965. ;       -----------------------------------------
  1966. _SIO2_flush:
  1967.         C$rt_serial.c$719$2$2 ==.
  1968. ;rt_serial.c:719: BEGIN_CRITICAL;
  1969. ;     genIfx
  1970. ;     genIfxJump
  1971. ;       Peephole 111    removed ljmp by inverse jump logic
  1972. ;     genAssign
  1973. ;       Peephole 250.a  using atomic test and clear
  1974.         jbc     _EA,00107$
  1975.         sjmp    00102$
  1976. 00107$:
  1977. ;     genAssign
  1978.         setb    _SIO2_flush_EA_local_1_1
  1979. ;       Peephole 112.b  changed ljmp to sjmp
  1980.         sjmp    00103$
  1981. 00102$:
  1982. ;     genAssign
  1983.         clr     _SIO2_flush_EA_local_1_1
  1984. 00103$:
  1985.         C$rt_serial.c$720$1$1 ==.
  1986. ;rt_serial.c:720: SIO2_RxPtr    = 0;
  1987. ;     genAssign
  1988.         mov     dptr,#_SIO2_RxPtr
  1989. ;       Peephole 181    changed mov to clr
  1990.         C$rt_serial.c$721$1$1 ==.
  1991. ;rt_serial.c:721: SIO2_RxCount  = 0;
  1992. ;     genAssign
  1993. ;       Peephole 181    changed mov to clr
  1994. ;       Peephole 219    removed redundant clear
  1995.         clr     a
  1996.         movx    @dptr,a
  1997.         mov     dptr,#_SIO2_RxCount
  1998.         movx    @dptr,a
  1999.         C$rt_serial.c$722$2$5 ==.
  2000. ;rt_serial.c:722: END_CRITICAL;
  2001. ;     genAssign
  2002.         mov     c,_SIO2_flush_EA_local_1_1
  2003.         mov     _EA,c
  2004. 00104$:
  2005.         C$rt_serial.c$723$2$5 ==.
  2006.         XG$SIO2_flush$0$0 ==.
  2007.         ret
  2008. ;------------------------------------------------------------
  2009. ;Allocation info for local variables in function 'SIO1_break'
  2010. ;------------------------------------------------------------
  2011. ;ticks                     Allocated with name '_SIO1_break_PARM_2'
  2012. ;level                     Allocated with name '_SIO1_break_level_1_1'
  2013. ;------------------------------------------------------------
  2014.         G$SIO1_break$0$0 ==.
  2015.         C$rt_serial.c$732$2$5 ==.
  2016. ;rt_serial.c:732: void SIO1_break(char level,unsigned char ticks)
  2017. ;       -----------------------------------------
  2018. ;        function SIO1_break
  2019. ;       -----------------------------------------
  2020. _SIO1_break:
  2021. ;     genReceive
  2022.         mov     a,dpl
  2023.         mov     dptr,#_SIO1_break_level_1_1
  2024.         movx    @dptr,a
  2025.         C$rt_serial.c$735$1$1 ==.
  2026. ;rt_serial.c:735: while(SIO1_TxCount)
  2027. 00101$:
  2028. ;     genAssign
  2029.         mov     dptr,#_SIO1_TxCount
  2030.         movx    a,@dptr
  2031. ;     genIfx
  2032. ;       Peephole 105    removed redundant mov
  2033.         mov     r2,a
  2034. ;     genIfxJump
  2035. ;       Peephole 110    removed ljmp by inverse jump logic
  2036.         jz      00103$
  2037. 00108$:
  2038.         C$rt_serial.c$737$2$2 ==.
  2039. ;rt_serial.c:737: RESCHEDULE;
  2040. ;     genCall
  2041.         lcall   _reschedule
  2042. ;       Peephole 112.b  changed ljmp to sjmp
  2043.         sjmp    00101$
  2044. 00103$:
  2045.         C$rt_serial.c$740$1$1 ==.
  2046. ;rt_serial.c:740: SIO1_TXD = level;
  2047. ;     genAssign
  2048.         mov     dptr,#_SIO1_break_level_1_1
  2049.         movx    a,@dptr
  2050.         add     a,#0xff
  2051.         mov     _TXD,c
  2052.         C$rt_serial.c$741$1$1 ==.
  2053. ;rt_serial.c:741: sleep(ticks);
  2054. ;     genAssign
  2055.         mov     dptr,#_SIO1_break_PARM_2
  2056.         movx    a,@dptr
  2057. ;     genCall
  2058. ;       Peephole 244.c  loading dpl from a instead of r2
  2059.         mov     r2,a
  2060.         mov     dpl,a
  2061.         lcall   _sleep
  2062.         C$rt_serial.c$742$1$1 ==.
  2063. ;rt_serial.c:742: SIO1_TXD = 1;
  2064. ;     genAssign
  2065.         setb    _TXD
  2066. 00104$:
  2067.         C$rt_serial.c$743$1$1 ==.
  2068.         XG$SIO1_break$0$0 ==.
  2069.         ret
  2070. ;------------------------------------------------------------
  2071. ;Allocation info for local variables in function 'SendStringCode'
  2072. ;------------------------------------------------------------
  2073. ;s                         Allocated with name '_SendStringCode_s_1_1'
  2074. ;c                         Allocated with name '_SendStringCode_c_1_1'
  2075. ;------------------------------------------------------------
  2076.         G$SendStringCode$0$0 ==.
  2077.         C$rt_serial.c$753$1$1 ==.
  2078. ;rt_serial.c:753: void SendStringCode(code char * s)
  2079. ;       -----------------------------------------
  2080. ;        function SendStringCode
  2081. ;       -----------------------------------------
  2082. _SendStringCode:
  2083. ;     genReceive
  2084.         mov     r2,dph
  2085.         mov     a,dpl
  2086.         mov     dptr,#_SendStringCode_s_1_1
  2087.         movx    @dptr,a
  2088.         inc     dptr
  2089.         mov     a,r2
  2090.         movx    @dptr,a
  2091.         C$rt_serial.c$756$1$1 ==.
  2092. ;rt_serial.c:756: if (!s) return;
  2093. ;     genAssign
  2094.         mov     dptr,#_SendStringCode_s_1_1
  2095.         movx    a,@dptr
  2096.         mov     r2,a
  2097.         inc     dptr
  2098.         movx    a,@dptr
  2099. ;     genIfx
  2100. ;       Peephole 135    removed redundant mov
  2101.         mov     r3,a
  2102.         orl     a,r2
  2103. ;     genIfxJump
  2104. ;       Peephole 109    removed ljmp by inverse jump logic
  2105.         jnz     00103$
  2106. 00111$:
  2107. ;     genRet
  2108.         C$rt_serial.c$758$1$1 ==.
  2109. ;rt_serial.c:758: while(*s)
  2110. ;       Peephole 112.b  changed ljmp to sjmp
  2111. ;       Peephole 251.b  replaced sjmp to ret with ret
  2112.         ret
  2113. 00103$:
  2114. ;     genAssign
  2115.         mov     dptr,#_SendStringCode_s_1_1
  2116.         movx    a,@dptr
  2117.         mov     r2,a
  2118.         inc     dptr
  2119.         movx    a,@dptr
  2120.         mov     r3,a
  2121. ;     genPointerGet
  2122. ;     genCodePointerGet
  2123.         mov     dpl,r2
  2124.         mov     dph,r3
  2125. ;       Peephole 181    changed mov to clr
  2126.         clr     a
  2127.         movc    a,@a+dptr
  2128. ;     genIfx
  2129. ;       Peephole 105    removed redundant mov
  2130.         mov     r4,a
  2131. ;     genIfxJump
  2132. ;       Peephole 110    removed ljmp by inverse jump logic
  2133.         jz      00106$
  2134. 00112$:
  2135.         C$rt_serial.c$760$2$2 ==.
  2136. ;rt_serial.c:760: c= *s++;
  2137. ;     genAssign
  2138. ;     genPlus
  2139.         mov     dptr,#_SendStringCode_s_1_1
  2140. ;     genPlusIncr
  2141.         mov     a,#0x01
  2142. ;       Peephole 236.a  used r2 instead of ar2
  2143.         add     a,r2
  2144.         movx    @dptr,a
  2145. ;       Peephole 181    changed mov to clr
  2146.         clr     a
  2147. ;       Peephole 236.b  used r3 instead of ar3
  2148.         addc    a,r3
  2149.         inc     dptr
  2150.         movx    @dptr,a
  2151.         C$rt_serial.c$761$2$2 ==.
  2152. ;rt_serial.c:761: putchar(c);
  2153. ;     genCall
  2154.         mov     dpl,r4
  2155.         lcall   _putchar
  2156. ;       Peephole 112.b  changed ljmp to sjmp
  2157.         sjmp    00103$
  2158. 00106$:
  2159.         C$rt_serial.c$763$1$1 ==.
  2160.         XG$SendStringCode$0$0 ==.
  2161.         ret
  2162. ;------------------------------------------------------------
  2163. ;Allocation info for local variables in function 'SendStringXdata'
  2164. ;------------------------------------------------------------
  2165. ;s                         Allocated with name '_SendStringXdata_s_1_1'
  2166. ;c                         Allocated with name '_SendStringXdata_c_1_1'
  2167. ;------------------------------------------------------------
  2168.         G$SendStringXdata$0$0 ==.
  2169.         C$rt_serial.c$766$1$1 ==.
  2170. ;rt_serial.c:766: void SendStringXdata(xdata char * s)
  2171. ;       -----------------------------------------
  2172. ;        function SendStringXdata
  2173. ;       -----------------------------------------
  2174. _SendStringXdata:
  2175. ;     genReceive
  2176.         mov     r2,dph
  2177.         mov     a,dpl
  2178.         mov     dptr,#_SendStringXdata_s_1_1
  2179.         movx    @dptr,a
  2180.         inc     dptr
  2181.         mov     a,r2
  2182.         movx    @dptr,a
  2183.         C$rt_serial.c$769$1$1 ==.
  2184. ;rt_serial.c:769: if (!s) return;
  2185. ;     genAssign
  2186.         mov     dptr,#_SendStringXdata_s_1_1
  2187.         movx    a,@dptr
  2188.         mov     r2,a
  2189.         inc     dptr
  2190.         movx    a,@dptr
  2191. ;     genIfx
  2192. ;       Peephole 135    removed redundant mov
  2193.         mov     r3,a
  2194.         orl     a,r2
  2195. ;     genIfxJump
  2196. ;       Peephole 109    removed ljmp by inverse jump logic
  2197.         jnz     00103$
  2198. 00111$:
  2199. ;     genRet
  2200.         C$rt_serial.c$771$1$1 ==.
  2201. ;rt_serial.c:771: while(*s)
  2202. ;       Peephole 112.b  changed ljmp to sjmp
  2203. ;       Peephole 251.b  replaced sjmp to ret with ret
  2204.         ret
  2205. 00103$:
  2206. ;     genAssign
  2207.         mov     dptr,#_SendStringXdata_s_1_1
  2208.         movx    a,@dptr
  2209.         mov     r2,a
  2210.         inc     dptr
  2211.         movx    a,@dptr
  2212.         mov     r3,a
  2213. ;     genPointerGet
  2214. ;     genFarPointerGet
  2215.         mov     dpl,r2
  2216.         mov     dph,r3
  2217.         movx    a,@dptr
  2218. ;     genIfx
  2219. ;       Peephole 105    removed redundant mov
  2220.         mov     r4,a
  2221. ;     genIfxJump
  2222. ;       Peephole 110    removed ljmp by inverse jump logic
  2223.         jz      00106$
  2224. 00112$:
  2225.         C$rt_serial.c$773$2$2 ==.
  2226. ;rt_serial.c:773: c= *s++;
  2227. ;     genAssign
  2228. ;     genPlus
  2229.         mov     dptr,#_SendStringXdata_s_1_1
  2230. ;     genPlusIncr
  2231.         mov     a,#0x01
  2232. ;       Peephole 236.a  used r2 instead of ar2
  2233.         add     a,r2
  2234.         movx    @dptr,a
  2235. ;       Peephole 181    changed mov to clr
  2236.         clr     a
  2237. ;       Peephole 236.b  used r3 instead of ar3
  2238.         addc    a,r3
  2239.         inc     dptr
  2240.         movx    @dptr,a
  2241.         C$rt_serial.c$774$2$2 ==.
  2242. ;rt_serial.c:774: putchar(c);
  2243. ;     genCall
  2244.         mov     dpl,r4
  2245.         lcall   _putchar
  2246. ;       Peephole 112.b  changed ljmp to sjmp
  2247.         sjmp    00103$
  2248. 00106$:
  2249.         C$rt_serial.c$776$1$1 ==.
  2250.         XG$SendStringXdata$0$0 ==.
  2251.         ret
  2252. ;------------------------------------------------------------
  2253. ;Allocation info for local variables in function 'SendHex'
  2254. ;------------------------------------------------------------
  2255. ;x                         Allocated with name '_SendHex_x_1_1'
  2256. ;p                         Allocated with name '_SendHex_p_1_1'
  2257. ;------------------------------------------------------------
  2258.         G$SendHex$0$0 ==.
  2259.         C$rt_serial.c$782$1$1 ==.
  2260. ;rt_serial.c:782: void SendHex(unsigned char x)
  2261. ;       -----------------------------------------
  2262. ;        function SendHex
  2263. ;       -----------------------------------------
  2264. _SendHex:
  2265. ;     genReceive
  2266.         mov     a,dpl
  2267.         mov     dptr,#_SendHex_x_1_1
  2268.         movx    @dptr,a
  2269.         C$rt_serial.c$785$1$1 ==.
  2270. ;rt_serial.c:785: p = x / 16;
  2271. ;     genAssign
  2272.         mov     dptr,#_SendHex_x_1_1
  2273.         movx    a,@dptr
  2274. ;     genRightShift
  2275. ;     genRightShiftLiteral
  2276. ;     genrshOne
  2277. ;       Peephole 105    removed redundant mov
  2278.         mov     r2,a
  2279.         swap    a
  2280.         anl     a,#0x0f
  2281.         mov     r2,a
  2282.         C$rt_serial.c$786$1$1 ==.
  2283. ;rt_serial.c:786: putchar(p>15?'-':p>9?p+'A'-10:p+'0');
  2284. ;     genCmpGt
  2285. ;     genCmp
  2286.         clr     c
  2287.         mov     a,#0x0F
  2288.         subb    a,r2
  2289. ;     genIfxJump
  2290. ;       Peephole 108    removed ljmp by inverse jump logic
  2291.         jnc     00103$
  2292. 00115$:
  2293. ;     genAssign
  2294.         mov     r3,#0x2D
  2295. ;       Peephole 112.b  changed ljmp to sjmp
  2296.         sjmp    00104$
  2297. 00103$:
  2298. ;     genCmpGt
  2299. ;     genCmp
  2300.         clr     c
  2301.         mov     a,#0x09
  2302.         subb    a,r2
  2303. ;     genIfxJump
  2304. ;       Peephole 108    removed ljmp by inverse jump logic
  2305.         jnc     00105$
  2306. 00116$:
  2307. ;     genPlus
  2308.         mov     a,#0x37
  2309. ;       Peephole 236.a  used r2 instead of ar2
  2310.         add     a,r2
  2311.         mov     r4,a
  2312. ;       Peephole 112.b  changed ljmp to sjmp
  2313.         sjmp    00106$
  2314. 00105$:
  2315. ;     genPlus
  2316.         mov     a,#0x30
  2317. ;       Peephole 236.a  used r2 instead of ar2
  2318.         add     a,r2
  2319.         mov     r4,a
  2320. 00106$:
  2321. ;     genAssign
  2322.         mov     ar3,r4
  2323. 00104$:
  2324. ;     genCall
  2325.         mov     dpl,r3
  2326.         lcall   _putchar
  2327.         C$rt_serial.c$787$1$1 ==.
  2328. ;rt_serial.c:787: p = x & 15;
  2329. ;     genAssign
  2330.         mov     dptr,#_SendHex_x_1_1
  2331.         movx    a,@dptr
  2332.         mov     r2,a
  2333. ;     genAnd
  2334.         anl     ar2,#0x0F
  2335.         C$rt_serial.c$788$1$1 ==.
  2336. ;rt_serial.c:788: putchar(p>15?'-':p>9?p+'A'-10:p+'0');
  2337. ;     genCmpGt
  2338. ;     genCmp
  2339.         clr     c
  2340.         mov     a,#0x0F
  2341.         subb    a,r2
  2342. ;     genIfxJump
  2343. ;       Peephole 108    removed ljmp by inverse jump logic
  2344.         jnc     00107$
  2345. 00117$:
  2346. ;     genAssign
  2347.         mov     r3,#0x2D
  2348. ;       Peephole 112.b  changed ljmp to sjmp
  2349.         sjmp    00108$
  2350. 00107$:
  2351. ;     genCmpGt
  2352. ;     genCmp
  2353.         clr     c
  2354.         mov     a,#0x09
  2355.         subb    a,r2
  2356. ;     genIfxJump
  2357. ;       Peephole 108    removed ljmp by inverse jump logic
  2358.         jnc     00109$
  2359. 00118$:
  2360. ;     genPlus
  2361.         mov     a,#0x37
  2362. ;       Peephole 236.a  used r2 instead of ar2
  2363.         add     a,r2
  2364.         mov     r4,a
  2365. ;       Peephole 112.b  changed ljmp to sjmp
  2366.         sjmp    00110$
  2367. 00109$:
  2368. ;     genPlus
  2369.         mov     a,#0x30
  2370. ;       Peephole 236.a  used r2 instead of ar2
  2371.         add     a,r2
  2372.         mov     r4,a
  2373. 00110$:
  2374. ;     genAssign
  2375.         mov     ar3,r4
  2376. 00108$:
  2377. ;     genCall
  2378.         mov     dpl,r3
  2379.         C$rt_serial.c$789$1$1 ==.
  2380.         XG$SendHex$0$0 ==.
  2381. ;       Peephole 253.b  replaced lcall/ret with ljmp
  2382.         ljmp    _putchar
  2383. ;------------------------------------------------------------
  2384. ;Allocation info for local variables in function 'SIOTakeSemaphore'
  2385. ;------------------------------------------------------------
  2386. ;------------------------------------------------------------
  2387.         G$SIOTakeSemaphore$0$0 ==.
  2388.         C$rt_serial.c$799$1$1 ==.
  2389. ;rt_serial.c:799: void SIOTakeSemaphore(void)
  2390. ;       -----------------------------------------
  2391. ;        function SIOTakeSemaphore
  2392. ;       -----------------------------------------
  2393. _SIOTakeSemaphore:
  2394.         C$rt_serial.c$802$1$1 ==.
  2395. ;rt_serial.c:802: while(1){
  2396. 00108$:
  2397.         C$rt_serial.c$803$3$3 ==.
  2398. ;rt_serial.c:803: BEGIN_CRITICAL;
  2399. ;     genIfx
  2400. ;     genIfxJump
  2401. ;       Peephole 111    removed ljmp by inverse jump logic
  2402. ;     genAssign
  2403. ;       Peephole 250.a  using atomic test and clear
  2404.         jbc     _EA,00115$
  2405.         sjmp    00102$
  2406. 00115$:
  2407. ;     genAssign
  2408.         setb    _SIOTakeSemaphore_EA_local_1_1
  2409. ;       Peephole 112.b  changed ljmp to sjmp
  2410.         sjmp    00103$
  2411. 00102$:
  2412. ;     genAssign
  2413.         clr     _SIOTakeSemaphore_EA_local_1_1
  2414. 00103$:
  2415.         C$rt_serial.c$804$2$2 ==.
  2416. ;rt_serial.c:804: if(SIO_put_semaphore)
  2417. ;     genIfx
  2418. ;     genIfxJump
  2419. ;       Peephole 111    removed ljmp by inverse jump logic
  2420.         C$rt_serial.c$806$3$6 ==.
  2421. ;rt_serial.c:806: SIO_put_semaphore = FALSE;
  2422. ;     genAssign
  2423. ;       Peephole 250.a  using atomic test and clear
  2424.         jbc     _SIO_put_semaphore,00116$
  2425.         sjmp    00105$
  2426. 00116$:
  2427.         C$rt_serial.c$807$4$7 ==.
  2428. ;rt_serial.c:807: END_CRITICAL;
  2429. ;     genAssign
  2430.         mov     c,_SIOTakeSemaphore_EA_local_1_1
  2431.         mov     _EA,c
  2432.         C$rt_serial.c$808$3$6 ==.
  2433. ;rt_serial.c:808: return;
  2434. ;     genRet
  2435. ;       Peephole 112.b  changed ljmp to sjmp
  2436. ;       Peephole 251.b  replaced sjmp to ret with ret
  2437.         ret
  2438. 00105$:
  2439.         C$rt_serial.c$813$4$9 ==.
  2440. ;rt_serial.c:813: END_CRITICAL;
  2441. ;     genAssign
  2442.         mov     c,_SIOTakeSemaphore_EA_local_1_1
  2443.         mov     _EA,c
  2444.         C$rt_serial.c$814$3$8 ==.
  2445. ;rt_serial.c:814: RESCHEDULE;
  2446. ;     genCall
  2447.         lcall   _reschedule
  2448. ;       Peephole 112.b  changed ljmp to sjmp
  2449.         sjmp    00108$
  2450. 00110$:
  2451.         C$rt_serial.c$817$1$1 ==.
  2452.         XG$SIOTakeSemaphore$0$0 ==.
  2453.         ret
  2454. ;------------------------------------------------------------
  2455. ;Allocation info for local variables in function 'SIOPutSemaphore'
  2456. ;------------------------------------------------------------
  2457. ;------------------------------------------------------------
  2458.         G$SIOPutSemaphore$0$0 ==.
  2459.         C$rt_serial.c$819$1$1 ==.
  2460. ;rt_serial.c:819: void SIOPutSemaphore(void)
  2461. ;       -----------------------------------------
  2462. ;        function SIOPutSemaphore
  2463. ;       -----------------------------------------
  2464. _SIOPutSemaphore:
  2465.         C$rt_serial.c$821$1$1 ==.
  2466. ;rt_serial.c:821: SIO_put_semaphore = TRUE;
  2467. ;     genAssign
  2468.         setb    _SIO_put_semaphore
  2469. 00101$:
  2470.         C$rt_serial.c$822$1$1 ==.
  2471.         XG$SIOPutSemaphore$0$0 ==.
  2472.         ret
  2473. ;------------------------------------------------------------
  2474. ;Allocation info for local variables in function 'SIOSetSemaphore'
  2475. ;------------------------------------------------------------
  2476. ;rc                        Allocated with name '_SIOSetSemaphore_rc_1_1'
  2477. ;------------------------------------------------------------
  2478.         G$SIOSetSemaphore$0$0 ==.
  2479.         C$rt_serial.c$824$1$1 ==.
  2480. ;rt_serial.c:824: char SIOSetSemaphore(Bool value)
  2481. ;       -----------------------------------------
  2482. ;        function SIOSetSemaphore
  2483. ;       -----------------------------------------
  2484. _SIOSetSemaphore:
  2485. ;     genReceive
  2486.         mov     r2,dpl
  2487.         C$rt_serial.c$828$2$2 ==.
  2488. ;rt_serial.c:828: BEGIN_CRITICAL;
  2489. ;     genIfx
  2490. ;     genIfxJump
  2491. ;       Peephole 111    removed ljmp by inverse jump logic
  2492. ;     genAssign
  2493. ;       Peephole 250.a  using atomic test and clear
  2494.         jbc     _EA,00107$
  2495.         sjmp    00102$
  2496. 00107$:
  2497. ;     genAssign
  2498.         setb    _SIOSetSemaphore_EA_local_1_1
  2499. ;       Peephole 112.b  changed ljmp to sjmp
  2500.         sjmp    00103$
  2501. 00102$:
  2502. ;     genAssign
  2503.         clr     _SIOSetSemaphore_EA_local_1_1
  2504. 00103$:
  2505.         C$rt_serial.c$829$1$1 ==.
  2506. ;rt_serial.c:829: rc= SIO_put_semaphore;
  2507. ;     genAssign
  2508.         clr     a
  2509.         mov     c,_SIO_put_semaphore
  2510.         rlc     a
  2511.         mov     r3,a
  2512.         C$rt_serial.c$830$1$1 ==.
  2513. ;rt_serial.c:830: SIO_put_semaphore = value;
  2514. ;     genAssign
  2515.         mov     a,r2
  2516.         add     a,#0xff
  2517.         mov     _SIO_put_semaphore,c
  2518.         C$rt_serial.c$831$2$5 ==.
  2519. ;rt_serial.c:831: END_CRITICAL;
  2520. ;     genAssign
  2521.         mov     c,_SIOSetSemaphore_EA_local_1_1
  2522.         mov     _EA,c
  2523.         C$rt_serial.c$832$1$1 ==.
  2524. ;rt_serial.c:832: return rc;
  2525. ;     genRet
  2526.         mov     dpl,r3
  2527. 00104$:
  2528.         C$rt_serial.c$833$1$1 ==.
  2529.         XG$SIOSetSemaphore$0$0 ==.
  2530.         ret
  2531.         .area CSEG    (CODE)
  2532.         .area XINIT   (CODE)
  2533.