FaxProcess.s43
上传用户:xhjmsc
上传日期:2019-09-13
资源大小:389k
文件大小:82k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1.         NAME FaxProcess
  2.         RTMODEL "__double_size", "32"
  3.         RTMODEL "__pic", "no"
  4.         RTMODEL "__reg_r4", "free"
  5.         RTMODEL "__reg_r5", "free"
  6.         RTMODEL "__rt_version", "1"
  7.         RSEG CSTACK:DATA:SORT:NOROOT(1)
  8.         EXTERN ?Epilogue8
  9.         EXTERN SendATcmdATA
  10.         FUNCTION SendATcmdATA,0202H
  11.         EXTERN gucUartRxCnt
  12.         EXTERN aucUartRxBuf
  13.         EXTERN gwTimeOverflowCount
  14.         EXTERN gucTimeOverflowCount
  15.         EXTERN gucFrhErrorStatus
  16.         EXTERN Delay1500ms
  17.         FUNCTION Delay1500ms,0202H
  18.         EXTERN SendATdataFTHCSI
  19.         FUNCTION SendATdataFTHCSI,0202H
  20.         EXTERN ATcmdDelay
  21.         FUNCTION ATcmdDelay,0202H
  22.         EXTERN SendATdataFTHDIS
  23.         FUNCTION SendATdataFTHDIS,0202H
  24.         EXTERN SendATcmdFRH
  25.         FUNCTION SendATcmdFRH,0202H
  26.         EXTERN SendATcmdSuffix
  27.         FUNCTION SendATcmdSuffix,0202H
  28.         EXTERN SendATcmdPrefix
  29.         FUNCTION SendATcmdPrefix,0202H
  30.         EXTERN Delay2000ms
  31.         FUNCTION Delay2000ms,0202H
  32.         EXTERN FRHTSI
  33.         EXTERN SendATcmdFRM
  34.         FUNCTION SendATcmdFRM,0202H
  35.         EXTERN SendATcmdFTH
  36.         FUNCTION SendATcmdFTH,0202H
  37.         EXTERN SendATdataFTHCFR
  38.         FUNCTION SendATdataFTHCFR,0202H
  39.         EXTERN gpucQueueRear
  40.         EXTERN gpucQueueFront
  41.         EXTERN gdwRxQueueRearCnt
  42.         EXTERN gdwRxQueueFrontCnt
  43.         EXTERN CalNextPageAddress
  44.         FUNCTION CalNextPageAddress,0202H
  45.         EXTERN ?DivMod16u
  46.         EXTERN ROW_ADDRESS_LOW
  47.         EXTERN ROW_ADDRESS_HIGH
  48.         EXTERN ERASE_ONE_BLOCK
  49.         FUNCTION ERASE_ONE_BLOCK,0202H
  50.         EXTERN COMMAND_VAL
  51.         EXTERN COMMAND_LATCH_INTO
  52.         FUNCTION COMMAND_LATCH_INTO,0202H
  53.         EXTERN ADDRESS_VALUE
  54.         EXTERN ADDRESS_LATCH_INTO
  55.         FUNCTION ADDRESS_LATCH_INTO,0202H
  56.         EXTERN READ_STATUS
  57.         FUNCTION READ_STATUS,0202H
  58.         EXTERN FLASH_STATUS
  59.         EXTERN gucGeneralStatus
  60.         EXTERN SendATcmdH0
  61.         FUNCTION SendATcmdH0,0202H
  62.         EXTERN SendATcmdFCLASS0
  63.         FUNCTION SendATcmdFCLASS0,0202H
  64.         EXTERN SendATconfigFE0EndofRX
  65.         FUNCTION SendATconfigFE0EndofRX,0202H
  66.         EXTERN SendATconfigS7RX
  67.         FUNCTION SendATconfigS7RX,0202H
  68.         EXTERN SendATconfigS0RX
  69.         FUNCTION SendATconfigS0RX,0202H
  70.         EXTERN gwPageAddress
  71.         EXTERN SendATconfigFS0
  72.         FUNCTION SendATconfigFS0,0202H
  73.         EXTERN SendATconfigS7
  74.         FUNCTION SendATconfigS7,0202H
  75.         EXTERN SendATconfigX4M1
  76.         FUNCTION SendATconfigX4M1,0202H
  77.         EXTERN SendATcmdFCLASS
  78.         FUNCTION SendATcmdFCLASS,0202H
  79.         EXTERN SendATdataFTHMCF
  80.         FUNCTION SendATdataFTHMCF,0202H
  81.         EXTERN ?longjmp_r4
  82.         EXTERN ?longjmp_r5
  83.         EXTERN ?setjmp_r4
  84.         EXTERN ?setjmp_r5
  85. ??FaxRXProcess_18 EQU 0
  86.         PUBWEAK ?setjmp_save_r4
  87.         PUBWEAK ?setjmp_save_r5
  88.         PUBLIC FRHDncProcess
  89.         FUNCTION FRHDncProcess,0203H
  90.         LOCFRAME CSTACK, 2, STACK
  91.         PUBLIC FaxRXProcess
  92.         FUNCTION FaxRXProcess,021203H
  93.         LOCFRAME CSTACK, 22, STACK
  94.         PUBLIC FaxRxInit
  95.         FUNCTION FaxRxInit,021203H
  96.         LOCFRAME CSTACK, 2, STACK
  97.         PUBLIC FthCsiDis
  98.         FUNCTION FthCsiDis,021203H
  99.         LOCFRAME CSTACK, 8, STACK
  100.         PUBWEAK P2OUT
  101.         PUBWEAK P5DIR
  102.         PUBWEAK P5OUT
  103.         PUBLIC PageImageEndProcess
  104.         FUNCTION PageImageEndProcess,021203H
  105.         LOCFRAME CSTACK, 6, STACK
  106.         
  107.         CFI Names cfiNames0
  108.         CFI StackFrame CFA SP DATA
  109.         CFI Resource PC:16, SP:16, SR:16, R4:16, R5:16, R6:16, R7:16, R8:16
  110.         CFI Resource R9:16, R10:16, R11:16, R12:16, R13:16, R14:16, R15:16
  111.         CFI EndNames cfiNames0
  112.         
  113.         CFI Common cfiCommon0 Using cfiNames0
  114.         CFI CodeAlign 2
  115.         CFI DataAlign 2
  116.         CFI ReturnAddress PC CODE
  117.         CFI CFA SP+2
  118.         CFI PC Frame(CFA, -2)
  119.         CFI SR Undefined
  120.         CFI R4 SameValue
  121.         CFI R5 SameValue
  122.         CFI R6 SameValue
  123.         CFI R7 SameValue
  124.         CFI R8 SameValue
  125.         CFI R9 SameValue
  126.         CFI R10 SameValue
  127.         CFI R11 SameValue
  128.         CFI R12 Undefined
  129.         CFI R13 Undefined
  130.         CFI R14 Undefined
  131.         CFI R15 Undefined
  132.         CFI EndCommon cfiCommon0
  133.         
  134. // E:projectFaxProgramVson_Bryan_Fax_Conexant_070423filesFaxProcess.c
  135. //    1 
  136. //    2 
  137. //    3 #include "includeH.h"
  138.         ASEGN DATA16_AN:DATA:NOROOT,029H
  139. // unsigned char volatile __data P2OUT
  140. P2OUT:
  141.         DS8 1
  142.         ASEGN DATA16_AN:DATA:NOROOT,031H
  143. // unsigned char volatile __data P5OUT
  144. P5OUT:
  145.         DS8 1
  146.         ASEGN DATA16_AN:DATA:NOROOT,032H
  147. // unsigned char volatile __data P5DIR
  148. P5DIR:
  149.         DS8 1
  150. //    4 
  151. //    5 
  152. //    6 //**************************************************************************
  153.         RSEG CODE:CODE:NOROOT(1)
  154. //    7 void  FaxRXProcess(void)
  155. FaxRXProcess:
  156.         CFI Block cfiBlock0 Using cfiCommon0
  157.         CFI Function FaxRXProcess
  158. //    8 {     
  159.         FUNCALL FaxRXProcess, FaxRxInit
  160.         LOCFRAME CSTACK, 22, STACK
  161.         FUNCALL FaxRXProcess, SendATcmdATA
  162.         LOCFRAME CSTACK, 22, STACK
  163.         FUNCALL FaxRXProcess, Delay1500ms
  164.         LOCFRAME CSTACK, 22, STACK
  165.         FUNCALL FaxRXProcess, SendATdataFTHCSI
  166.         LOCFRAME CSTACK, 22, STACK
  167.         FUNCALL FaxRXProcess, ATcmdDelay
  168.         LOCFRAME CSTACK, 22, STACK
  169.         FUNCALL FaxRXProcess, SendATdataFTHDIS
  170.         LOCFRAME CSTACK, 22, STACK
  171.         FUNCALL FaxRXProcess, SendATcmdFRH
  172.         LOCFRAME CSTACK, 22, STACK
  173.         FUNCALL FaxRXProcess, SendATcmdSuffix
  174.         LOCFRAME CSTACK, 22, STACK
  175.         FUNCALL FaxRXProcess, ATcmdDelay
  176.         LOCFRAME CSTACK, 22, STACK
  177.         FUNCALL FaxRXProcess, ATcmdDelay
  178.         LOCFRAME CSTACK, 22, STACK
  179.         FUNCALL FaxRXProcess, ATcmdDelay
  180.         LOCFRAME CSTACK, 22, STACK
  181.         FUNCALL FaxRXProcess, SendATcmdPrefix
  182.         LOCFRAME CSTACK, 22, STACK
  183.         FUNCALL FaxRXProcess, ATcmdDelay
  184.         LOCFRAME CSTACK, 22, STACK
  185.         FUNCALL FaxRXProcess, SendATcmdSuffix
  186.         LOCFRAME CSTACK, 22, STACK
  187.         FUNCALL FaxRXProcess, ATcmdDelay
  188.         LOCFRAME CSTACK, 22, STACK
  189.         FUNCALL FaxRXProcess, ATcmdDelay
  190.         LOCFRAME CSTACK, 22, STACK
  191.         FUNCALL FaxRXProcess, ATcmdDelay
  192.         LOCFRAME CSTACK, 22, STACK
  193.         FUNCALL FaxRXProcess, Delay2000ms
  194.         LOCFRAME CSTACK, 22, STACK
  195.         FUNCALL FaxRXProcess, FthCsiDis
  196.         LOCFRAME CSTACK, 22, STACK
  197.         FUNCALL FaxRXProcess, SendATcmdFRH
  198.         LOCFRAME CSTACK, 22, STACK
  199.         FUNCALL FaxRXProcess, SendATcmdFRH
  200.         LOCFRAME CSTACK, 22, STACK
  201.         FUNCALL FaxRXProcess, SendATcmdFRM
  202.         LOCFRAME CSTACK, 22, STACK
  203.         FUNCALL FaxRXProcess, SendATcmdFTH
  204.         LOCFRAME CSTACK, 22, STACK
  205.         FUNCALL FaxRXProcess, ATcmdDelay
  206.         LOCFRAME CSTACK, 22, STACK
  207.         FUNCALL FaxRXProcess, SendATdataFTHCFR
  208.         LOCFRAME CSTACK, 22, STACK
  209.         FUNCALL FaxRXProcess, SendATcmdFRM
  210.         LOCFRAME CSTACK, 22, STACK
  211.         FUNCALL FaxRXProcess, CalNextPageAddress
  212.         LOCFRAME CSTACK, 22, STACK
  213.         FUNCALL FaxRXProcess, ERASE_ONE_BLOCK
  214.         LOCFRAME CSTACK, 22, STACK
  215.         FUNCALL FaxRXProcess, COMMAND_LATCH_INTO
  216.         LOCFRAME CSTACK, 22, STACK
  217.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  218.         LOCFRAME CSTACK, 22, STACK
  219.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  220.         LOCFRAME CSTACK, 22, STACK
  221.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  222.         LOCFRAME CSTACK, 22, STACK
  223.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  224.         LOCFRAME CSTACK, 22, STACK
  225.         FUNCALL FaxRXProcess, PageImageEndProcess
  226.         LOCFRAME CSTACK, 22, STACK
  227.         FUNCALL FaxRXProcess, SendATcmdFRM
  228.         LOCFRAME CSTACK, 22, STACK
  229.         FUNCALL FaxRXProcess, COMMAND_LATCH_INTO
  230.         LOCFRAME CSTACK, 22, STACK
  231.         FUNCALL FaxRXProcess, READ_STATUS
  232.         LOCFRAME CSTACK, 22, STACK
  233.         FUNCALL FaxRXProcess, CalNextPageAddress
  234.         LOCFRAME CSTACK, 22, STACK
  235.         FUNCALL FaxRXProcess, ERASE_ONE_BLOCK
  236.         LOCFRAME CSTACK, 22, STACK
  237.         FUNCALL FaxRXProcess, COMMAND_LATCH_INTO
  238.         LOCFRAME CSTACK, 22, STACK
  239.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  240.         LOCFRAME CSTACK, 22, STACK
  241.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  242.         LOCFRAME CSTACK, 22, STACK
  243.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  244.         LOCFRAME CSTACK, 22, STACK
  245.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  246.         LOCFRAME CSTACK, 22, STACK
  247.         FUNCALL FaxRXProcess, SendATcmdFRH
  248.         LOCFRAME CSTACK, 22, STACK
  249.         FUNCALL FaxRXProcess, COMMAND_LATCH_INTO
  250.         LOCFRAME CSTACK, 22, STACK
  251.         FUNCALL FaxRXProcess, READ_STATUS
  252.         LOCFRAME CSTACK, 22, STACK
  253.         FUNCALL FaxRXProcess, CalNextPageAddress
  254.         LOCFRAME CSTACK, 22, STACK
  255.         FUNCALL FaxRXProcess, ERASE_ONE_BLOCK
  256.         LOCFRAME CSTACK, 22, STACK
  257.         FUNCALL FaxRXProcess, COMMAND_LATCH_INTO
  258.         LOCFRAME CSTACK, 22, STACK
  259.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  260.         LOCFRAME CSTACK, 22, STACK
  261.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  262.         LOCFRAME CSTACK, 22, STACK
  263.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  264.         LOCFRAME CSTACK, 22, STACK
  265.         FUNCALL FaxRXProcess, ADDRESS_LATCH_INTO
  266.         LOCFRAME CSTACK, 22, STACK
  267.         FUNCALL FaxRXProcess, COMMAND_LATCH_INTO
  268.         LOCFRAME CSTACK, 22, STACK
  269.         FUNCALL FaxRXProcess, READ_STATUS
  270.         LOCFRAME CSTACK, 22, STACK
  271.         FUNCALL FaxRXProcess, SendATcmdH0
  272.         LOCFRAME CSTACK, 22, STACK
  273.         FUNCALL FaxRXProcess, ATcmdDelay
  274.         LOCFRAME CSTACK, 22, STACK
  275.         FUNCALL FaxRXProcess, ATcmdDelay
  276.         LOCFRAME CSTACK, 22, STACK
  277.         FUNCALL FaxRXProcess, ATcmdDelay
  278.         LOCFRAME CSTACK, 22, STACK
  279.         FUNCALL FaxRXProcess, ATcmdDelay
  280.         LOCFRAME CSTACK, 22, STACK
  281.         FUNCALL FaxRXProcess, SendATcmdH0
  282.         LOCFRAME CSTACK, 22, STACK
  283.         FUNCALL FaxRXProcess, ATcmdDelay
  284.         LOCFRAME CSTACK, 22, STACK
  285.         FUNCALL FaxRXProcess, ATcmdDelay
  286.         LOCFRAME CSTACK, 22, STACK
  287.         FUNCALL FaxRXProcess, ATcmdDelay
  288.         LOCFRAME CSTACK, 22, STACK
  289.         FUNCALL FaxRXProcess, ATcmdDelay
  290.         LOCFRAME CSTACK, 22, STACK
  291.         FUNCALL FaxRXProcess, ATcmdDelay
  292.         LOCFRAME CSTACK, 22, STACK
  293.         FUNCALL FaxRXProcess, ATcmdDelay
  294.         LOCFRAME CSTACK, 22, STACK
  295.         FUNCALL FaxRXProcess, ATcmdDelay
  296.         LOCFRAME CSTACK, 22, STACK
  297.         FUNCALL FaxRXProcess, ATcmdDelay
  298.         LOCFRAME CSTACK, 22, STACK
  299.         FUNCALL FaxRXProcess, SendATcmdFCLASS0
  300.         LOCFRAME CSTACK, 22, STACK
  301.         FUNCALL FaxRXProcess, ATcmdDelay
  302.         LOCFRAME CSTACK, 22, STACK
  303.         FUNCALL FaxRXProcess, ATcmdDelay
  304.         LOCFRAME CSTACK, 22, STACK
  305.         FUNCALL FaxRXProcess, ATcmdDelay
  306.         LOCFRAME CSTACK, 22, STACK
  307.         FUNCALL FaxRXProcess, ATcmdDelay
  308.         LOCFRAME CSTACK, 22, STACK
  309.         FUNCALL FaxRXProcess, SendATcmdPrefix
  310.         LOCFRAME CSTACK, 22, STACK
  311.         FUNCALL FaxRXProcess, ATcmdDelay
  312.         LOCFRAME CSTACK, 22, STACK
  313.         FUNCALL FaxRXProcess, SendATcmdSuffix
  314.         LOCFRAME CSTACK, 22, STACK
  315.         FUNCALL FaxRXProcess, ATcmdDelay
  316.         LOCFRAME CSTACK, 22, STACK
  317.         FUNCALL FaxRXProcess, ATcmdDelay
  318.         LOCFRAME CSTACK, 22, STACK
  319.         FUNCALL FaxRXProcess, ATcmdDelay
  320.         LOCFRAME CSTACK, 22, STACK
  321.         FUNCALL FaxRXProcess, SendATcmdPrefix
  322.         LOCFRAME CSTACK, 22, STACK
  323.         FUNCALL FaxRXProcess, ATcmdDelay
  324.         LOCFRAME CSTACK, 22, STACK
  325.         FUNCALL FaxRXProcess, SendATcmdSuffix
  326.         LOCFRAME CSTACK, 22, STACK
  327.         FUNCALL FaxRXProcess, ATcmdDelay
  328.         LOCFRAME CSTACK, 22, STACK
  329.         FUNCALL FaxRXProcess, ATcmdDelay
  330.         LOCFRAME CSTACK, 22, STACK
  331.         FUNCALL FaxRXProcess, ATcmdDelay
  332.         LOCFRAME CSTACK, 22, STACK
  333.         FUNCALL FaxRXProcess, SendATcmdPrefix
  334.         LOCFRAME CSTACK, 22, STACK
  335.         FUNCALL FaxRXProcess, ATcmdDelay
  336.         LOCFRAME CSTACK, 22, STACK
  337.         FUNCALL FaxRXProcess, SendATcmdSuffix
  338.         LOCFRAME CSTACK, 22, STACK
  339.         FUNCALL FaxRXProcess, ATcmdDelay
  340.         LOCFRAME CSTACK, 22, STACK
  341.         FUNCALL FaxRXProcess, ATcmdDelay
  342.         LOCFRAME CSTACK, 22, STACK
  343.         FUNCALL FaxRXProcess, ATcmdDelay
  344.         LOCFRAME CSTACK, 22, STACK
  345.         FUNCALL FaxRXProcess, SendATconfigFE0EndofRX
  346.         LOCFRAME CSTACK, 22, STACK
  347.         FUNCALL FaxRXProcess, ATcmdDelay
  348.         LOCFRAME CSTACK, 22, STACK
  349.         FUNCALL FaxRXProcess, ATcmdDelay
  350.         LOCFRAME CSTACK, 22, STACK
  351.         FUNCALL FaxRXProcess, ATcmdDelay
  352.         LOCFRAME CSTACK, 22, STACK
  353.         FUNCALL FaxRXProcess, ATcmdDelay
  354.         LOCFRAME CSTACK, 22, STACK
  355.         FUNCALL FaxRXProcess, SendATconfigS7RX
  356.         LOCFRAME CSTACK, 22, STACK
  357.         FUNCALL FaxRXProcess, ATcmdDelay
  358.         LOCFRAME CSTACK, 22, STACK
  359.         FUNCALL FaxRXProcess, ATcmdDelay
  360.         LOCFRAME CSTACK, 22, STACK
  361.         FUNCALL FaxRXProcess, ATcmdDelay
  362.         LOCFRAME CSTACK, 22, STACK
  363.         FUNCALL FaxRXProcess, ATcmdDelay
  364.         LOCFRAME CSTACK, 22, STACK
  365.         FUNCALL FaxRXProcess, SendATconfigS0RX
  366.         LOCFRAME CSTACK, 22, STACK
  367.         FUNCALL FaxRXProcess, ATcmdDelay
  368.         LOCFRAME CSTACK, 22, STACK
  369.         FUNCALL FaxRXProcess, ATcmdDelay
  370.         LOCFRAME CSTACK, 22, STACK
  371.         FUNCALL FaxRXProcess, ATcmdDelay
  372.         LOCFRAME CSTACK, 22, STACK
  373.         FUNCALL FaxRXProcess, ATcmdDelay
  374.         LOCFRAME CSTACK, 22, STACK
  375. PUSH.W R10
  376.         CFI R10 Frame(CFA, -4)
  377.         CFI CFA SP+4
  378. PUSH.W R11
  379.         CFI R11 Frame(CFA, -6)
  380.         CFI CFA SP+6
  381. PUSH.W R8
  382.         CFI R8 Frame(CFA, -8)
  383.         CFI CFA SP+8
  384. PUSH.W R9
  385.         CFI R9 Frame(CFA, -10)
  386.         CFI CFA SP+10
  387. PUSH.W R6
  388.         CFI R6 Frame(CFA, -12)
  389.         CFI CFA SP+12
  390. PUSH.W R7
  391.         CFI R7 Frame(CFA, -14)
  392.         CFI CFA SP+14
  393. PUSH.W R4
  394.         CFI R4 Frame(CFA, -16)
  395.         CFI CFA SP+16
  396. PUSH.W R5
  397.         CFI R5 Frame(CFA, -18)
  398.         CFI CFA SP+18
  399. SUB.W #0x4, SP
  400.         CFI CFA SP+22
  401. //    9       unsigned char ucFlashSttsOverflowCnt = 0;
  402. MOV.B #0x0, R6
  403. //   10       unsigned char ucGeneralCount = 0;
  404. MOV.B #0x0, R4
  405. //   11       unsigned char ucGeneralCnt = 0;
  406. MOV.B #0x0, R10
  407. //   12       unsigned char ucRxIndex3 = 0;
  408. MOV.B #0x0, 0x0(SP)
  409. //   13       unsigned char ucRxIndex2 = 0;
  410. MOV.B #0x0, 0x1(SP)
  411. //   14       unsigned char ucRxIndex1 = 0;
  412. MOV.B #0x0, R11
  413. //   15       unsigned char ucRxIndex0 = 0;
  414. MOV.B #0x0, R8
  415. //   16       
  416. //   17       unsigned int  wNextPageAddress = 0;
  417. MOV.W #0x0, R5
  418. //   18       unsigned int  wPageAddress = 0;
  419. MOV.W #0x0, R9
  420. //   19       unsigned int  wGeneralCount = 0;
  421. MOV.W #0x0, R7
  422. //   20       unsigned int  wDataRearCount = 0;
  423. MOV.W #0x0, 0x2(SP)
  424. //   21 
  425. //   22       FaxRxInit();
  426. CALL #FaxRxInit
  427. //   23 /***************************************************************************/      
  428. //   24 
  429. //   25 //ATA     
  430. //   26       
  431. //   27       SendATcmdATA();                 //Connect
  432. CALL #SendATcmdATA
  433. //   28 
  434. //   29       while (1)  //CONNECT(54) 0D 0A
  435. //   30       {
  436. //   31        ucRxIndex1 = gucUartRxCnt-3;//get array index
  437. ??FaxRXProcess_0:
  438. MOV.B #0xfd, R14
  439. ADD.B &gucUartRxCnt, R14
  440. MOV.B R14, R11
  441. //   32         ucRxIndex0 = gucUartRxCnt-2;//get array index
  442. MOV.B #0xfe, R14
  443. ADD.B &gucUartRxCnt, R14
  444. MOV.B R14, R8
  445. //   33         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1]))
  446. AND.W #0xff, R8
  447. CMP.B #0xd, aucUartRxBuf(R8)
  448. JNE ??FaxRXProcess_32
  449. AND.W #0xff, R11
  450. CMP.B #0x54, aucUartRxBuf(R11)
  451. JEQ ??FaxRXProcess_33
  452. //   34           break;
  453. //   35         //if check time>min. 5S, Receive Fax error, program should be quit  
  454. //   36         RxFaxTimeOverflowErrorQuit();
  455. ??FaxRXProcess_32:
  456. MOV.W &gwTimeOverflowCount, R14
  457. MOV.W #0x1, R15
  458. ADD.W R14, R15
  459. MOV.W R15, &gwTimeOverflowCount
  460. CMP.W #0xffff, R14
  461. JNE ??FaxRXProcess_34
  462. ADD.B #0x1, &gucTimeOverflowCount
  463. MOV.B #0x0, &gucFrhErrorStatus
  464. ??FaxRXProcess_34:
  465. CMP.B #0x14, &gucTimeOverflowCount
  466. JNE ??FaxRXProcess_0
  467. MOV.B #0x3, &gucFrhErrorStatus
  468. MOV.B #0x0, &gucTimeOverflowCount
  469. MOV.W #0x0, &gwTimeOverflowCount
  470. //   37 
  471. //   38       }
  472. //   39       
  473. //   40       Delay1500ms();  // delay 1.5S minimun 1 second
  474. ??FaxRXProcess_33:
  475. CALL #Delay1500ms
  476. //   41       
  477. //   42       SendATdataFTHCSI();    //If the final bit is 0, the modem will generates CONNECT message.
  478. CALL #SendATdataFTHCSI
  479. //   43       while (1)  //CONNECT(54) 0D 0A
  480. //   44       {
  481. //   45         ucRxIndex1 = gucUartRxCnt-3;
  482. ??FaxRXProcess_1:
  483. MOV.B #0xfd, R14
  484. ADD.B &gucUartRxCnt, R14
  485. MOV.B R14, R11
  486. //   46         ucRxIndex0 = gucUartRxCnt-2;
  487. MOV.B #0xfe, R14
  488. ADD.B &gucUartRxCnt, R14
  489. MOV.B R14, R8
  490. //   47         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1]))
  491. AND.W #0xff, R8
  492. CMP.B #0xd, aucUartRxBuf(R8)
  493. JNE ??FaxRXProcess_35
  494. AND.W #0xff, R11
  495. CMP.B #0x54, aucUartRxBuf(R11)
  496. JEQ ??FaxRXProcess_36
  497. //   48           break;
  498. //   49         //if check time>min. 5S, Receive Fax error, progra should be quit  
  499. //   50         RxFaxTimeOverflowErrorQuit();
  500. ??FaxRXProcess_35:
  501. MOV.W &gwTimeOverflowCount, R14
  502. MOV.W #0x1, R15
  503. ADD.W R14, R15
  504. MOV.W R15, &gwTimeOverflowCount
  505. CMP.W #0xffff, R14
  506. JNE ??FaxRXProcess_37
  507. ADD.B #0x1, &gucTimeOverflowCount
  508. MOV.B #0x0, &gucFrhErrorStatus
  509. ??FaxRXProcess_37:
  510. CMP.B #0x14, &gucTimeOverflowCount
  511. JNE ??FaxRXProcess_1
  512. MOV.B #0x3, &gucFrhErrorStatus
  513. MOV.B #0x0, &gucTimeOverflowCount
  514. MOV.W #0x0, &gwTimeOverflowCount
  515. //   51       }
  516. //   52       
  517. //   53       for (ucGeneralCount = 0; ucGeneralCount < 50; ucGeneralCount++)// delay 1.5S minimun 1 second
  518. ??FaxRXProcess_36:
  519. MOV.B #0x0, R4
  520. ??FaxRXProcess_2:
  521. CMP.B #0x32, R4
  522. JC ??FaxRXProcess_38
  523. //   54       {
  524. //   55          ATcmdDelay();  //50ms
  525. CALL #ATcmdDelay
  526. //   56       }
  527. ADD.B #0x1, R4
  528. JMP ??FaxRXProcess_2
  529. //   57 
  530. //   58       SendATdataFTHDIS();//SendATdataFTHTSI(sizeof (FTHDIS)); a bug of Sep.18
  531. ??FaxRXProcess_38:
  532. CALL #SendATdataFTHDIS
  533. //   59       
  534. //   60       while (1)    //O K 0D 0A
  535. //   61       {
  536. //   62         ucRxIndex1 = gucUartRxCnt-3;
  537. ??FaxRXProcess_3:
  538. MOV.B #0xfd, R14
  539. ADD.B &gucUartRxCnt, R14
  540. MOV.B R14, R11
  541. //   63         ucRxIndex0 = gucUartRxCnt-2;
  542. MOV.B #0xfe, R14
  543. ADD.B &gucUartRxCnt, R14
  544. MOV.B R14, R8
  545. //   64         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x4B == aucUartRxBuf[ucRxIndex1])) //K ==0x4b
  546. AND.W #0xff, R8
  547. CMP.B #0xd, aucUartRxBuf(R8)
  548. JNE ??FaxRXProcess_39
  549. AND.W #0xff, R11
  550. CMP.B #0x4b, aucUartRxBuf(R11)
  551. JEQ ??FaxRXProcess_40
  552. //   65           break;
  553. //   66         //if check time>min. 5S, Receive Fax error, progra should be quit  
  554. //   67         RxFaxTimeOverflowErrorQuit();
  555. ??FaxRXProcess_39:
  556. MOV.W &gwTimeOverflowCount, R14
  557. MOV.W #0x1, R15
  558. ADD.W R14, R15
  559. MOV.W R15, &gwTimeOverflowCount
  560. CMP.W #0xffff, R14
  561. JNE ??FaxRXProcess_41
  562. ADD.B #0x1, &gucTimeOverflowCount
  563. MOV.B #0x0, &gucFrhErrorStatus
  564. ??FaxRXProcess_41:
  565. CMP.B #0x14, &gucTimeOverflowCount
  566. JNE ??FaxRXProcess_3
  567. MOV.B #0x3, &gucFrhErrorStatus
  568. MOV.B #0x0, &gucTimeOverflowCount
  569. MOV.W #0x0, &gwTimeOverflowCount
  570. //   68       }
  571. //   69           
  572. //   70 //*
  573. //   71 //FRH  TSI (transmitting subscriber identification)        
  574. //   72       SendATcmdFRH();  
  575. ??FaxRXProcess_40:
  576. CALL #SendATcmdFRH
  577. //   73       while (1)    //Connect data.....OK 0D 0A
  578. //   74       {
  579. //   75         ucRxIndex1 = gucUartRxCnt-3;
  580. ??FaxRXProcess_4:
  581. MOV.B #0xfd, R14
  582. ADD.B &gucUartRxCnt, R14
  583. MOV.B R14, R11
  584. //   76         ucRxIndex0 = gucUartRxCnt-2;
  585. MOV.B #0xfe, R14
  586. ADD.B &gucUartRxCnt, R14
  587. MOV.B R14, R8
  588. //   77         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1])) //Connect
  589. MOV.B R8, R14
  590. AND.W #0xff, R14
  591. CMP.B #0xd, aucUartRxBuf(R14)
  592. JNE ??FaxRXProcess_42
  593. MOV.B R11, R14
  594. AND.W #0xff, R14
  595. CMP.B #0x54, aucUartRxBuf(R14)
  596. JEQ ??FaxRXProcess_43
  597. //   78           break;
  598. //   79         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x52 == aucUartRxBuf[ucRxIndex1])) //No Carrier
  599. ??FaxRXProcess_42:
  600. MOV.B R8, R14
  601. AND.W #0xff, R14
  602. CMP.B #0xd, aucUartRxBuf(R14)
  603. JNE ??FaxRXProcess_44
  604. MOV.B R11, R14
  605. AND.W #0xff, R14
  606. CMP.B #0x52, aucUartRxBuf(R14)
  607. JEQ ??FaxRXProcess_43
  608. //   80           break;
  609. //   81         //if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4b==aucUartRxBuf[ucRxIndex1]))
  610. //   82           //{ucFrhErrorStatus=0x03;break;}
  611. //   83         //if check time>min. 5S, Receive Fax error, progra should be quit  
  612. //   84         RxFaxTimeOverflowErrorQuit();
  613. ??FaxRXProcess_44:
  614. MOV.W &gwTimeOverflowCount, R14
  615. MOV.W #0x1, R15
  616. ADD.W R14, R15
  617. MOV.W R15, &gwTimeOverflowCount
  618. CMP.W #0xffff, R14
  619. JNE ??FaxRXProcess_45
  620. ADD.B #0x1, &gucTimeOverflowCount
  621. MOV.B #0x0, &gucFrhErrorStatus
  622. ??FaxRXProcess_45:
  623. CMP.B #0x14, &gucTimeOverflowCount
  624. JNE ??FaxRXProcess_4
  625. MOV.B #0x3, &gucFrhErrorStatus
  626. MOV.B #0x0, &gucTimeOverflowCount
  627. MOV.W #0x0, &gwTimeOverflowCount
  628. //   85       }//while
  629. //   86       
  630. //   87       for (ucGeneralCnt = 0;ucGeneralCnt < 5;ucGeneralCnt++)
  631. ??FaxRXProcess_43:
  632. MOV.B #0x0, R10
  633. ??FaxRXProcess_7:
  634. CMP.B #0x5, R10
  635. JC ??FaxRXProcess_46
  636. //   88       {
  637. //   89         if (gucFrhErrorStatus == 0x03 || (0x0d == aucUartRxBuf[ucRxIndex0]) && (0x52 == aucUartRxBuf[ucRxIndex1]))
  638. CMP.B #0x3, &gucFrhErrorStatus
  639. JEQ ??FaxRXProcess_47
  640. MOV.B R8, R14
  641. AND.W #0xff, R14
  642. CMP.B #0xd, aucUartRxBuf(R14)
  643. JNE ??FaxRXProcess_48
  644. MOV.B R11, R14
  645. AND.W #0xff, R14
  646. CMP.B #0x52, aucUartRxBuf(R14)
  647. JNE ??FaxRXProcess_48
  648. //   90         {
  649. //   91          SendATcmdSuffix();
  650. ??FaxRXProcess_47:
  651. CALL #SendATcmdSuffix
  652. //   92          ATcmdDelay();
  653. CALL #ATcmdDelay
  654. //   93          ATcmdDelay();
  655. CALL #ATcmdDelay
  656. //   94          ATcmdDelay();
  657. CALL #ATcmdDelay
  658. //   95          SendATcmdPrefix();
  659. CALL #SendATcmdPrefix
  660. //   96          ATcmdDelay();
  661. CALL #ATcmdDelay
  662. //   97          SendATcmdSuffix();
  663. CALL #SendATcmdSuffix
  664. //   98          ATcmdDelay();
  665. CALL #ATcmdDelay
  666. //   99          ATcmdDelay();
  667. CALL #ATcmdDelay
  668. //  100          ATcmdDelay();
  669. CALL #ATcmdDelay
  670. //  101          Delay2000ms();//add at Jan. 16, 2007
  671. CALL #Delay2000ms
  672. //  102          FthCsiDis();
  673. CALL #FthCsiDis
  674. //  103          SendATcmdFRH();  
  675. CALL #SendATcmdFRH
  676. //  104          while (1)    //Connect data.....OK 0D 0A
  677. //  105          {
  678. //  106           ucRxIndex1 = gucUartRxCnt-3;
  679. ??FaxRXProcess_5:
  680. MOV.B #0xfd, R14
  681. ADD.B &gucUartRxCnt, R14
  682. MOV.B R14, R11
  683. //  107           ucRxIndex0 = gucUartRxCnt-2;
  684. MOV.B #0xfe, R14
  685. ADD.B &gucUartRxCnt, R14
  686. MOV.B R14, R8
  687. //  108           if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1]))
  688. MOV.B R8, R14
  689. AND.W #0xff, R14
  690. CMP.B #0xd, aucUartRxBuf(R14)
  691. JNE ??FaxRXProcess_49
  692. MOV.B R11, R14
  693. AND.W #0xff, R14
  694. CMP.B #0x54, aucUartRxBuf(R14)
  695. JEQ ??FaxRXProcess_48
  696. //  109             break;
  697. //  110           if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x52 == aucUartRxBuf[ucRxIndex1]))
  698. ??FaxRXProcess_49:
  699. MOV.B R8, R14
  700. AND.W #0xff, R14
  701. CMP.B #0xd, aucUartRxBuf(R14)
  702. JNE ??FaxRXProcess_50
  703. MOV.B R11, R14
  704. AND.W #0xff, R14
  705. CMP.B #0x52, aucUartRxBuf(R14)
  706. JEQ ??FaxRXProcess_48
  707. //  111             break;
  708. //  112           //if check time>min. 5S, Receive Fax error, progra should be quit  
  709. //  113           RxFaxTimeOverflowErrorQuit();
  710. ??FaxRXProcess_50:
  711. MOV.W &gwTimeOverflowCount, R14
  712. MOV.W #0x1, R15
  713. ADD.W R14, R15
  714. MOV.W R15, &gwTimeOverflowCount
  715. CMP.W #0xffff, R14
  716. JNE ??FaxRXProcess_51
  717. ADD.B #0x1, &gucTimeOverflowCount
  718. MOV.B #0x0, &gucFrhErrorStatus
  719. ??FaxRXProcess_51:
  720. CMP.B #0x14, &gucTimeOverflowCount
  721. JNE ??FaxRXProcess_5
  722. MOV.B #0x3, &gucFrhErrorStatus
  723. MOV.B #0x0, &gucTimeOverflowCount
  724. MOV.W #0x0, &gwTimeOverflowCount
  725. //  114          }//while
  726. //  115         }//if
  727. //  116         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1]))
  728. ??FaxRXProcess_48:
  729. MOV.B R8, R14
  730. AND.W #0xff, R14
  731. CMP.B #0xd, aucUartRxBuf(R14)
  732. JNE ??FaxRXProcess_52
  733. MOV.B R11, R14
  734. AND.W #0xff, R14
  735. CMP.B #0x54, aucUartRxBuf(R14)
  736. JNE ??FaxRXProcess_52
  737. //  117         {
  738. //  118           while (1)    
  739. //  119           {
  740. //  120            ucRxIndex1 = gucUartRxCnt-3;
  741. ??FaxRXProcess_6:
  742. MOV.B #0xfd, R14
  743. ADD.B &gucUartRxCnt, R14
  744. MOV.B R14, R11
  745. //  121             ucRxIndex0 = gucUartRxCnt-2;
  746. MOV.B #0xfe, R14
  747. ADD.B &gucUartRxCnt, R14
  748. MOV.B R14, R8
  749. //  122             if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x4B == aucUartRxBuf[ucRxIndex1]))
  750. MOV.B R8, R14
  751. AND.W #0xff, R14
  752. CMP.B #0xd, aucUartRxBuf(R14)
  753. JNE ??FaxRXProcess_53
  754. MOV.B R11, R14
  755. AND.W #0xff, R14
  756. CMP.B #0x4b, aucUartRxBuf(R14)
  757. JEQ ??FaxRXProcess_54
  758. //  123               break;
  759. //  124             if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x52 == aucUartRxBuf[ucRxIndex1]))
  760. ??FaxRXProcess_53:
  761. MOV.B R8, R14
  762. AND.W #0xff, R14
  763. CMP.B #0xd, aucUartRxBuf(R14)
  764. JNE ??FaxRXProcess_55
  765. MOV.B R11, R14
  766. AND.W #0xff, R14
  767. CMP.B #0x52, aucUartRxBuf(R14)
  768. JEQ ??FaxRXProcess_54
  769. //  125               break;
  770. //  126             if ((0x13 == aucUartRxBuf[ucRxIndex0]) && (0xff == aucUartRxBuf[ucRxIndex1]))
  771. ??FaxRXProcess_55:
  772. MOV.B R8, R14
  773. AND.W #0xff, R14
  774. CMP.B #0x13, aucUartRxBuf(R14)
  775. JNE ??FaxRXProcess_56
  776. MOV.B R11, R14
  777. AND.W #0xff, R14
  778. CMP.B #0xff, aucUartRxBuf(R14)
  779. JNE ??FaxRXProcess_56
  780. //  127               {gucFrhErrorStatus=CNGFthOnlySendOneNSF;}
  781. MOV.B #0x1, &gucFrhErrorStatus
  782. //  128             //if check time>min. 5S, Receive Fax error, progra should be quit  
  783. //  129             RxFaxTimeOverflowErrorQuit();
  784. ??FaxRXProcess_56:
  785. MOV.W &gwTimeOverflowCount, R14
  786. MOV.W #0x1, R15
  787. ADD.W R14, R15
  788. MOV.W R15, &gwTimeOverflowCount
  789. CMP.W #0xffff, R14
  790. JNE ??FaxRXProcess_57
  791. ADD.B #0x1, &gucTimeOverflowCount
  792. MOV.B #0x0, &gucFrhErrorStatus
  793. ??FaxRXProcess_57:
  794. CMP.B #0x14, &gucTimeOverflowCount
  795. JNE ??FaxRXProcess_6
  796. MOV.B #0x3, &gucFrhErrorStatus
  797. MOV.B #0x0, &gucTimeOverflowCount
  798. MOV.W #0x0, &gwTimeOverflowCount
  799. //  130           }//while
  800. //  131           if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x52 == aucUartRxBuf[ucRxIndex1]))
  801. ??FaxRXProcess_54:
  802. MOV.B R8, R14
  803. AND.W #0xff, R14
  804. CMP.B #0xd, aucUartRxBuf(R14)
  805. JNE ??FaxRXProcess_46
  806. MOV.B R11, R14
  807. AND.W #0xff, R14
  808. CMP.B #0x52, aucUartRxBuf(R14)
  809. JNE ??FaxRXProcess_46
  810. //  132               continue;//Response is not OK, but NO Carrier. should Re FTH CSI and DIS
  811. //  133           else
  812. //  134               break;//break for cycle
  813. //  135         }//if
  814. //  136       }//for
  815. ??FaxRXProcess_52:
  816. ADD.B #0x1, R10
  817. JMP ??FaxRXProcess_7
  818. //  137       ucRxIndex0 = gucUartRxCnt-25;
  819. ??FaxRXProcess_46:
  820. MOV.B #0xe7, R14
  821. ADD.B &gucUartRxCnt, R14
  822. MOV.B R14, R8
  823. //  138       for (ucGeneralCnt = 0;ucGeneralCnt < 25;ucGeneralCnt++)
  824. MOV.B #0x0, R10
  825. ??FaxRXProcess_8:
  826. CMP.B #0x19, R10
  827. JC ??FaxRXProcess_58
  828. //  139       {FRHTSI[ucRxIndex1++] = aucUartRxBuf[ucRxIndex0++];}
  829. MOV.B R11, R15
  830. AND.W #0xff, R15
  831. MOV.B R8, R14
  832. AND.W #0xff, R14
  833. MOV.B aucUartRxBuf(R14), FRHTSI(R15)
  834. ADD.B #0x1, R8
  835. ADD.B #0x1, R11
  836. ADD.B #0x1, R10
  837. JMP ??FaxRXProcess_8
  838. //  140       
  839. //  141 //FRH DCS (digital command signal)
  840. //  142       if (gucFrhErrorStatus != CNGFthOnlySendOneNSF)
  841. ??FaxRXProcess_58:
  842. CMP.B #0x1, &gucFrhErrorStatus
  843. JEQ ??FaxRXProcess_59
  844. //  143       {          
  845. //  144         SendATcmdFRH(); 
  846. CALL #SendATcmdFRH
  847. //  145         while (1)    
  848. //  146         {
  849. //  147          ucRxIndex1 = gucUartRxCnt-3;
  850. ??FaxRXProcess_9:
  851. MOV.B #0xfd, R14
  852. ADD.B &gucUartRxCnt, R14
  853. MOV.B R14, R11
  854. //  148           ucRxIndex0 = gucUartRxCnt-2;
  855. MOV.B #0xfe, R14
  856. ADD.B &gucUartRxCnt, R14
  857. MOV.B R14, R8
  858. //  149           if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1]))
  859. AND.W #0xff, R8
  860. CMP.B #0xd, aucUartRxBuf(R8)
  861. JNE ??FaxRXProcess_60
  862. AND.W #0xff, R11
  863. CMP.B #0x54, aucUartRxBuf(R11)
  864. JEQ ??FaxRXProcess_61
  865. //  150             break;
  866. //  151           //if check time>min. 5S, Receive Fax error, progra should be quit  
  867. //  152           RxFaxTimeOverflowErrorQuit();
  868. ??FaxRXProcess_60:
  869. MOV.W &gwTimeOverflowCount, R14
  870. MOV.W #0x1, R15
  871. ADD.W R14, R15
  872. MOV.W R15, &gwTimeOverflowCount
  873. CMP.W #0xffff, R14
  874. JNE ??FaxRXProcess_62
  875. ADD.B #0x1, &gucTimeOverflowCount
  876. MOV.B #0x0, &gucFrhErrorStatus
  877. ??FaxRXProcess_62:
  878. CMP.B #0x14, &gucTimeOverflowCount
  879. JNE ??FaxRXProcess_9
  880. MOV.B #0x3, &gucFrhErrorStatus
  881. MOV.B #0x0, &gucTimeOverflowCount
  882. MOV.W #0x0, &gwTimeOverflowCount
  883. //  153         }//while
  884. //  154         if (gucFrhErrorStatus == 0x03) return; //add at Mar. 16, 2007.
  885. ??FaxRXProcess_61:
  886. CMP.B #0x3, &gucFrhErrorStatus
  887. JNE $+6
  888. BR #??FaxRXProcess_63
  889. //  155       
  890. //  156         while (1)    
  891. //  157         {
  892. //  158          ucRxIndex1 = gucUartRxCnt-3;
  893. ??FaxRXProcess_10:
  894. MOV.B #0xfd, R14
  895. ADD.B &gucUartRxCnt, R14
  896. MOV.B R14, R11
  897. //  159           ucRxIndex0 = gucUartRxCnt-2;
  898. MOV.B #0xfe, R14
  899. ADD.B &gucUartRxCnt, R14
  900. MOV.B R14, R8
  901. //  160           if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x4B == aucUartRxBuf[ucRxIndex1]))
  902. AND.W #0xff, R8
  903. CMP.B #0xd, aucUartRxBuf(R8)
  904. JNE ??FaxRXProcess_64
  905. AND.W #0xff, R11
  906. CMP.B #0x4b, aucUartRxBuf(R11)
  907. JEQ ??FaxRXProcess_65
  908. //  161             break;
  909. //  162           //if check time>min. 5S, Receive Fax error, progra should be quit  
  910. //  163           RxFaxTimeOverflowErrorQuit();
  911. ??FaxRXProcess_64:
  912. MOV.W &gwTimeOverflowCount, R14
  913. MOV.W #0x1, R15
  914. ADD.W R14, R15
  915. MOV.W R15, &gwTimeOverflowCount
  916. CMP.W #0xffff, R14
  917. JNE ??FaxRXProcess_66
  918. ADD.B #0x1, &gucTimeOverflowCount
  919. MOV.B #0x0, &gucFrhErrorStatus
  920. ??FaxRXProcess_66:
  921. CMP.B #0x14, &gucTimeOverflowCount
  922. JNE ??FaxRXProcess_10
  923. MOV.B #0x3, &gucFrhErrorStatus
  924. MOV.B #0x0, &gucTimeOverflowCount
  925. MOV.W #0x0, &gwTimeOverflowCount
  926. //  164         }//while 
  927. //  165         if (gucFrhErrorStatus == 0x03) return; //add at Mar. 16, 2007.     
  928. ??FaxRXProcess_65:
  929. CMP.B #0x3, &gucFrhErrorStatus
  930. JNE $+6
  931. BR #??FaxRXProcess_63
  932. //  166       }//if
  933. //  167       
  934. //  168       //if (ucFrhErrorStatus==03) return; //add at Mar. 16, 2007.
  935. //  169 //*/
  936. //  170 
  937. //  171 
  938. //  172 
  939. //  173 //FRM TCF (training check)
  940. //  174       SendATcmdFRM();
  941. ??FaxRXProcess_59:
  942. CALL #SendATcmdFRM
  943. //  175 
  944. //  176       while (1)    
  945. //  177       {
  946. //  178        ucRxIndex1 = gucUartRxCnt-3;
  947. ??FaxRXProcess_11:
  948. MOV.B #0xfd, R14
  949. ADD.B &gucUartRxCnt, R14
  950. MOV.B R14, R11
  951. //  179         ucRxIndex0 = gucUartRxCnt-2;
  952. MOV.B #0xfe, R14
  953. ADD.B &gucUartRxCnt, R14
  954. MOV.B R14, R8
  955. //  180         if ((0x0d == aucUartRxBuf[ucRxIndex0]) && (0x54 == aucUartRxBuf[ucRxIndex1]))
  956. AND.W #0xff, R8
  957. CMP.B #0xd, aucUartRxBuf(R8)
  958. JNE ??FaxRXProcess_67
  959. AND.W #0xff, R11
  960. CMP.B #0x54, aucUartRxBuf(R11)
  961. JEQ ??FaxRXProcess_68
  962. //  181           break;
  963. //  182         //if check time>min. 5S, Receive Fax error, progra should be quit  
  964. //  183         RxFaxTimeOverflowErrorQuit();
  965. ??FaxRXProcess_67:
  966. MOV.W &gwTimeOverflowCount, R14
  967. MOV.W #0x1, R15
  968. ADD.W R14, R15
  969. MOV.W R15, &gwTimeOverflowCount
  970. CMP.W #0xffff, R14
  971. JNE ??FaxRXProcess_69
  972. ADD.B #0x1, &gucTimeOverflowCount
  973. MOV.B #0x0, &gucFrhErrorStatus
  974. ??FaxRXProcess_69:
  975. CMP.B #0x14, &gucTimeOverflowCount
  976. JNE ??FaxRXProcess_11
  977. MOV.B #0x3, &gucFrhErrorStatus
  978. MOV.B #0x0, &gucTimeOverflowCount
  979. MOV.W #0x0, &gwTimeOverflowCount
  980. //  184       }
  981. //  185       if (gucFrhErrorStatus == 0x03) return;
  982. ??FaxRXProcess_68:
  983. CMP.B #0x3, &gucFrhErrorStatus
  984. JNE $+6
  985. BR #??FaxRXProcess_63
  986. //  186       //Carrier==Training check     
  987. //  187 ///* //add the No carrier check a bug of Dec.25,2006     
  988. //  188       while (1)    
  989. //  189       {
  990. //  190         ucRxIndex1 = gucUartRxCnt-3;
  991. ??FaxRXProcess_12:
  992. MOV.B #0xfd, R14
  993. ADD.B &gucUartRxCnt, R14
  994. MOV.B R14, R11
  995. //  191         ucRxIndex0 = gucUartRxCnt-2;
  996. MOV.B #0xfe, R14
  997. ADD.B &gucUartRxCnt, R14
  998. MOV.B R14, R8
  999. //  192         if ((aucUartRxBuf[ucRxIndex0] == 0x0d)&&(aucUartRxBuf[ucRxIndex1] == 0x52))//4B Result code is not OK, but No carrier
  1000. AND.W #0xff, R8
  1001. CMP.B #0xd, aucUartRxBuf(R8)
  1002. JNE ??FaxRXProcess_70
  1003. AND.W #0xff, R11
  1004. CMP.B #0x52, aucUartRxBuf(R11)
  1005. JEQ ??FaxRXProcess_71
  1006. //  193           break;
  1007. //  194         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1008. //  195         RxFaxTimeOverflowErrorQuit();
  1009. ??FaxRXProcess_70:
  1010. MOV.W &gwTimeOverflowCount, R14
  1011. MOV.W #0x1, R15
  1012. ADD.W R14, R15
  1013. MOV.W R15, &gwTimeOverflowCount
  1014. CMP.W #0xffff, R14
  1015. JNE ??FaxRXProcess_72
  1016. ADD.B #0x1, &gucTimeOverflowCount
  1017. MOV.B #0x0, &gucFrhErrorStatus
  1018. ??FaxRXProcess_72:
  1019. CMP.B #0x14, &gucTimeOverflowCount
  1020. JNE ??FaxRXProcess_12
  1021. MOV.B #0x3, &gucFrhErrorStatus
  1022. MOV.B #0x0, &gucTimeOverflowCount
  1023. MOV.W #0x0, &gwTimeOverflowCount
  1024. //  196       }
  1025. //  197       if (gucFrhErrorStatus == 0x03) return;      
  1026. ??FaxRXProcess_71:
  1027. CMP.B #0x3, &gucFrhErrorStatus
  1028. JNE $+6
  1029. BR #??FaxRXProcess_63
  1030. //  198 //*/   
  1031. //  199 //Training check over   
  1032. //  200 //FTHCFR  (confirmation to receive)
  1033. //  201       SendATcmdFTH();
  1034. CALL #SendATcmdFTH
  1035. //  202       while (1)    //Connect
  1036. //  203       {
  1037. //  204        ucRxIndex1=gucUartRxCnt-3;
  1038. ??FaxRXProcess_13:
  1039. MOV.B #0xfd, R14
  1040. ADD.B &gucUartRxCnt, R14
  1041. MOV.B R14, R11
  1042. //  205         ucRxIndex0=gucUartRxCnt-2;
  1043. MOV.B #0xfe, R14
  1044. ADD.B &gucUartRxCnt, R14
  1045. MOV.B R14, R8
  1046. //  206         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x54==aucUartRxBuf[ucRxIndex1]))
  1047. AND.W #0xff, R8
  1048. CMP.B #0xd, aucUartRxBuf(R8)
  1049. JNE ??FaxRXProcess_73
  1050. AND.W #0xff, R11
  1051. CMP.B #0x54, aucUartRxBuf(R11)
  1052. JEQ ??FaxRXProcess_74
  1053. //  207           break;
  1054. //  208         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1055. //  209         RxFaxTimeOverflowErrorQuit();
  1056. ??FaxRXProcess_73:
  1057. MOV.W &gwTimeOverflowCount, R14
  1058. MOV.W #0x1, R15
  1059. ADD.W R14, R15
  1060. MOV.W R15, &gwTimeOverflowCount
  1061. CMP.W #0xffff, R14
  1062. JNE ??FaxRXProcess_75
  1063. ADD.B #0x1, &gucTimeOverflowCount
  1064. MOV.B #0x0, &gucFrhErrorStatus
  1065. ??FaxRXProcess_75:
  1066. CMP.B #0x14, &gucTimeOverflowCount
  1067. JNE ??FaxRXProcess_13
  1068. MOV.B #0x3, &gucFrhErrorStatus
  1069. MOV.B #0x0, &gucTimeOverflowCount
  1070. MOV.W #0x0, &gwTimeOverflowCount
  1071. //  210       }
  1072. //  211       if (gucFrhErrorStatus==0x03) return;
  1073. ??FaxRXProcess_74:
  1074. CMP.B #0x3, &gucFrhErrorStatus
  1075. JNE $+6
  1076. BR #??FaxRXProcess_63
  1077. //  212       
  1078. //  213       for (ucGeneralCount=0; ucGeneralCount<30; ucGeneralCount++)// delay 1.5S minimun 1 second
  1079. MOV.B #0x0, R4
  1080. ??FaxRXProcess_14:
  1081. CMP.B #0x1e, R4
  1082. JC ??FaxRXProcess_76
  1083. //  214       {
  1084. //  215          ATcmdDelay();  //50ms
  1085. CALL #ATcmdDelay
  1086. //  216       }
  1087. ADD.B #0x1, R4
  1088. JMP ??FaxRXProcess_14
  1089. //  217       
  1090. //  218       SendATdataFTHCFR();
  1091. ??FaxRXProcess_76:
  1092. CALL #SendATdataFTHCFR
  1093. //  219 
  1094. //  220       while (1)    
  1095. //  221       {
  1096. //  222        ucRxIndex1=gucUartRxCnt-3;
  1097. ??FaxRXProcess_15:
  1098. MOV.B #0xfd, R14
  1099. ADD.B &gucUartRxCnt, R14
  1100. MOV.B R14, R11
  1101. //  223         ucRxIndex0=gucUartRxCnt-2;
  1102. MOV.B #0xfe, R14
  1103. ADD.B &gucUartRxCnt, R14
  1104. MOV.B R14, R8
  1105. //  224         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  1106. AND.W #0xff, R8
  1107. CMP.B #0xd, aucUartRxBuf(R8)
  1108. JNE ??FaxRXProcess_77
  1109. AND.W #0xff, R11
  1110. CMP.B #0x4b, aucUartRxBuf(R11)
  1111. JEQ ??FaxRXProcess_78
  1112. //  225           break;
  1113. //  226         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1114. //  227         RxFaxTimeOverflowErrorQuit();
  1115. ??FaxRXProcess_77:
  1116. MOV.W &gwTimeOverflowCount, R14
  1117. MOV.W #0x1, R15
  1118. ADD.W R14, R15
  1119. MOV.W R15, &gwTimeOverflowCount
  1120. CMP.W #0xffff, R14
  1121. JNE ??FaxRXProcess_79
  1122. ADD.B #0x1, &gucTimeOverflowCount
  1123. MOV.B #0x0, &gucFrhErrorStatus
  1124. ??FaxRXProcess_79:
  1125. CMP.B #0x14, &gucTimeOverflowCount
  1126. JNE ??FaxRXProcess_15
  1127. MOV.B #0x3, &gucFrhErrorStatus
  1128. MOV.B #0x0, &gucTimeOverflowCount
  1129. MOV.W #0x0, &gwTimeOverflowCount
  1130. //  228       }  
  1131. //  229       if (gucFrhErrorStatus==0x03) return;
  1132. ??FaxRXProcess_78:
  1133. CMP.B #0x3, &gucFrhErrorStatus
  1134. JNE $+6
  1135. BR #??FaxRXProcess_63
  1136. //  230       
  1137. //  231 
  1138. //  232 
  1139. //  233 //FRM pageimage
  1140. //  234       //SendATcmdFRM146();
  1141. //  235       SendATcmdFRM();
  1142. CALL #SendATcmdFRM
  1143. //  236            
  1144. //  237       wGeneralCount=0;//63;
  1145. MOV.W #0x0, R7
  1146. //  238       ucGeneralCnt=0;//28;
  1147. MOV.B #0x0, R10
  1148. //  239       //wPageAddress=0;
  1149. //  240       gucFrhErrorStatus=0;
  1150. MOV.B #0x0, &gucFrhErrorStatus
  1151. //  241       gucUartRxCnt=0;
  1152. MOV.B #0x0, &gucUartRxCnt
  1153. //  242       gpucQueueRear=0;
  1154. MOV.B #0x0, &gpucQueueRear
  1155. //  243       gpucQueueFront=0;
  1156. MOV.B #0x0, &gpucQueueFront
  1157. //  244       gdwRxQueueRearCnt=0;
  1158. MOV.W #0x0, &gdwRxQueueRearCnt
  1159. MOV.W #0x0, &gdwRxQueueRearCnt + 0x2
  1160. //  245       gdwRxQueueFrontCnt=0;
  1161. MOV.W #0x0, &gdwRxQueueFrontCnt
  1162. MOV.W #0x0, &gdwRxQueueFrontCnt + 0x2
  1163. //  246       //ZERO_ADDRESS();
  1164. //  247 
  1165. //  248       wPageAddress=cstFaxRxBufStartPage;//+1;//Block 19 Modify at Jan. 6, 2007
  1166. MOV.W #0x4c0, R9
  1167. //  249      
  1168. //  250       do{
  1169. //  251   wNextPageAddress=wPageAddress+64;
  1170. ??FaxRXProcess_16:
  1171. MOV.W #0x40, R14
  1172. ADD.W R9, R14
  1173. MOV.W R14, R5
  1174. //  252   wPageAddress=CalNextPageAddress(wPageAddress);
  1175. MOV.W R9, R12
  1176. CALL #CalNextPageAddress
  1177. MOV.W R12, R9
  1178. //  253  }while(wNextPageAddress==wPageAddress);
  1179. CMP.W R9, R5
  1180. JEQ ??FaxRXProcess_16
  1181. //  254             //erase next block
  1182. //  255       if (wPageAddress%64==0)
  1183. MOV.W R9, R12
  1184. MOV.W #0x40, R14
  1185. CALL #?DivMod16u
  1186. CMP.W #0x0, R14
  1187. JNE ??FaxRXProcess_80
  1188. //  256       {
  1189. //  257          ROW_ADDRESS_LOW=wPageAddress & 0XFF;
  1190. MOV.B R9, &ROW_ADDRESS_LOW
  1191. //  258          ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF; 
  1192. MOV.W R9, R14
  1193. SWPB R14
  1194. AND.W #0xff, R14
  1195. MOV.B R14, &ROW_ADDRESS_HIGH
  1196. //  259          ERASE_ONE_BLOCK();
  1197. CALL #ERASE_ONE_BLOCK
  1198. //  260       }
  1199. //  261       wPageAddress=cstFaxRxBufStartPage+1;
  1200. ??FaxRXProcess_80:
  1201. MOV.W #0x4c1, R9
  1202. //  262 //COMMAND
  1203. //  263               //Flash_Reset();
  1204. //  264               COMMAND_VAL=0X80;
  1205. MOV.B #0x80, &COMMAND_VAL
  1206. //  265            COMMAND_LATCH_INTO();
  1207. CALL #COMMAND_LATCH_INTO
  1208. //  266 
  1209. //  267 //ADDRESS
  1210. //  268            ADDRESS_VALUE=0;//COLUMN_ADDRESS_HIGH; //#0X00
  1211. MOV.B #0x0, &ADDRESS_VALUE
  1212. //  269            ADDRESS_LATCH_INTO();
  1213. CALL #ADDRESS_LATCH_INTO
  1214. //  270 
  1215. //  271            ADDRESS_VALUE=0;//COLUMN_ADDRESS_HIGH; //#0X00
  1216. MOV.B #0x0, &ADDRESS_VALUE
  1217. //  272            ADDRESS_LATCH_INTO();
  1218. CALL #ADDRESS_LATCH_INTO
  1219. //  273 
  1220. //  274            ADDRESS_VALUE=wPageAddress & 0xff; //#0X00
  1221. MOV.B R9, &ADDRESS_VALUE
  1222. //  275            ADDRESS_LATCH_INTO();
  1223. CALL #ADDRESS_LATCH_INTO
  1224. //  276 
  1225. //  277            ADDRESS_VALUE=(wPageAddress>>8) & 0xff; //#0X00
  1226. MOV.W R9, R14
  1227. SWPB R14
  1228. AND.W #0xff, R14
  1229. MOV.B R14, &ADDRESS_VALUE
  1230. //  278            ADDRESS_LATCH_INTO();
  1231. CALL #ADDRESS_LATCH_INTO
  1232. //  279 
  1233. //  280            FLASH_CON_PORT_OUT &=~ ALE;
  1234. BIC.B #0x2, &0x29
  1235. //  281            //CALL DELAY_100US
  1236. //  282            //for(i=0;i<0xff;i++);
  1237. //  283            DATA_PORT_OUT_INITIAL; //MCU OUTPUT,MCU WRITE A DATA TO FLASH
  1238. MOV.B #0xff, &0x32
  1239. //  284 //Pageimage     
  1240. //  285       while (1)    
  1241. //  286       {
  1242. //  287        //if ((0x10 == aucUartRxBuf[ucRxIndex1]) && (0x03 == aucUartRxBuf[ucRxIndex0]))//terminate stream 10 03
  1243. //  288        //if ((0x10 == aucUartRxBuf[gucUartRxCnt-1]) && (0x03 == aucUartRxBuf[gucUartRxCnt]))//terminate stream 10 03
  1244. //  289              //break;
  1245. //  290           //if check time>min. 5S, Receive Fax error, progra should be quit  
  1246. //  291           RxFaxTimeOverflowErrorQuit();
  1247. ??FaxRXProcess_17:
  1248. MOV.W &gwTimeOverflowCount, R14
  1249. MOV.W #0x1, R15
  1250. ADD.W R14, R15
  1251. MOV.W R15, &gwTimeOverflowCount
  1252. CMP.W #0xffff, R14
  1253. JNE ??FaxRXProcess_81
  1254. ADD.B #0x1, &gucTimeOverflowCount
  1255. MOV.B #0x0, &gucFrhErrorStatus
  1256. ??FaxRXProcess_81:
  1257. CMP.B #0x14, &gucTimeOverflowCount
  1258. JNE ??FaxRXProcess_82
  1259. MOV.B #0x3, &gucFrhErrorStatus
  1260. MOV.B #0x0, &gucTimeOverflowCount
  1261. MOV.W #0x0, &gwTimeOverflowCount
  1262. JMP ??FaxRXProcess_83
  1263. //  292           ucRxIndex1=gucUartRxCnt-3;
  1264. ??FaxRXProcess_82:
  1265. MOV.B #0xfd, R14
  1266. ADD.B &gucUartRxCnt, R14
  1267. MOV.B R14, R11
  1268. //  293           ucRxIndex0=gucUartRxCnt-2;
  1269. MOV.B #0xfe, R14
  1270. ADD.B &gucUartRxCnt, R14
  1271. MOV.B R14, R8
  1272. //  294           if ((aucUartRxBuf[ucRxIndex0]==0x0d)&&(aucUartRxBuf[ucRxIndex1]==0x52))//4B  Result code is not OK, but No carrier
  1273. AND.W #0xff, R8
  1274. CMP.B #0xd, aucUartRxBuf(R8)
  1275. JNE ??FaxRXProcess_84
  1276. AND.W #0xff, R11
  1277. CMP.B #0x52, aucUartRxBuf(R11)
  1278. JNE ??FaxRXProcess_84
  1279. //  295              {
  1280. //  296                   
  1281. //  297                  PageImageEndProcess();
  1282. CALL #PageImageEndProcess
  1283. //  298                  
  1284. //  299                  if (gucFrhErrorStatus==0x03) break; //add at Mar. 16, 2007.
  1285. CMP.B #0x3, &gucFrhErrorStatus
  1286. JEQ ??FaxRXProcess_83
  1287. //  300                  
  1288. //  301                  //More than two pages process //add at Dec.27,2006
  1289. //  302                  ucRxIndex3=gucUartRxCnt-38;
  1290. MOV.B #0xda, R14
  1291. ADD.B &gucUartRxCnt, R14
  1292. MOV.B R14, 0x0(SP)
  1293. //  303                  ucRxIndex2=gucUartRxCnt-37;
  1294. MOV.B #0xdb, R14
  1295. ADD.B &gucUartRxCnt, R14
  1296. MOV.B R14, 0x1(SP)
  1297. //  304                  ucRxIndex1=gucUartRxCnt-36;
  1298. MOV.B #0xdc, R14
  1299. ADD.B &gucUartRxCnt, R14
  1300. MOV.B R14, R11
  1301. //  305                  ucRxIndex0=gucUartRxCnt-35;
  1302. MOV.B #0xdd, R14
  1303. ADD.B &gucUartRxCnt, R14
  1304. MOV.B R14, R8
  1305. //  306                  if ((aucUartRxBuf[ucRxIndex0]==0x05)&&(aucUartRxBuf[ucRxIndex1]==0x35)&&
  1306. //  307                      (aucUartRxBuf[ucRxIndex2]==0x4f)&&(aucUartRxBuf[ucRxIndex3]==0x13))
  1307. MOV.B R8, R14
  1308. AND.W #0xff, R14
  1309. CMP.B #0x5, aucUartRxBuf(R14)
  1310. JNE ??FaxRXProcess_85
  1311. MOV.B R11, R14
  1312. AND.W #0xff, R14
  1313. CMP.B #0x35, aucUartRxBuf(R14)
  1314. JNE ??FaxRXProcess_85
  1315. MOV.B 0x1(SP), R14
  1316. AND.W #0xff, R14
  1317. CMP.B #0x4f, aucUartRxBuf(R14)
  1318. JNE ??FaxRXProcess_85
  1319. MOV.B 0x0(SP), R14
  1320. AND.W #0xff, R14
  1321. CMP.B #0x13, aucUartRxBuf(R14)
  1322. JNE ??FaxRXProcess_85
  1323. //  308                   {
  1324. //  309                     SendATcmdFRM();
  1325. CALL #SendATcmdFRM
  1326. //  310                   }
  1327. //  311 // multi pages over flag                 
  1328. //  312                  if ((aucUartRxBuf[ucRxIndex0]==0x66)&&(aucUartRxBuf[ucRxIndex1]==0x33)&&
  1329. //  313                      (aucUartRxBuf[ucRxIndex2]==0x2f)&&(aucUartRxBuf[ucRxIndex3]==0x13))
  1330. ??FaxRXProcess_85:
  1331. MOV.B R8, R14
  1332. AND.W #0xff, R14
  1333. CMP.B #0x66, aucUartRxBuf(R14)
  1334. JNE ??FaxRXProcess_86
  1335. MOV.B R11, R14
  1336. AND.W #0xff, R14
  1337. CMP.B #0x33, aucUartRxBuf(R14)
  1338. JNE ??FaxRXProcess_86
  1339. MOV.B 0x1(SP), R14
  1340. AND.W #0xff, R14
  1341. CMP.B #0x2f, aucUartRxBuf(R14)
  1342. JNE ??FaxRXProcess_86
  1343. MOV.B 0x0(SP), R14
  1344. AND.W #0xff, R14
  1345. CMP.B #0x13, aucUartRxBuf(R14)
  1346. JEQ ??FaxRXProcess_83
  1347. //  314                   {  
  1348. //  315                     break;
  1349. //  316                   }
  1350. //  317 // one page over flag                 
  1351. //  318                  if ((aucUartRxBuf[ucRxIndex0]==0x2f)&&(aucUartRxBuf[ucRxIndex1]==0x13))
  1352. ??FaxRXProcess_86:
  1353. AND.W #0xff, R8
  1354. CMP.B #0x2f, aucUartRxBuf(R8)
  1355. JNE ??FaxRXProcess_84
  1356. AND.W #0xff, R11
  1357. CMP.B #0x13, aucUartRxBuf(R11)
  1358. JEQ ??FaxRXProcess_83
  1359. //  319                     { 
  1360. //  320                       break;
  1361. //  321                     }
  1362. //  322              }
  1363. //  323 
  1364. //  324           if (gdwRxQueueRearCnt-gdwRxQueueFrontCnt>32)
  1365. ??FaxRXProcess_84:
  1366. MOV.W &gdwRxQueueRearCnt, R14
  1367. MOV.W &gdwRxQueueRearCnt + 0x2, R15
  1368. SUB.W &gdwRxQueueFrontCnt, R14
  1369. SUBC.W &gdwRxQueueFrontCnt + 0x2, R15
  1370. CMP.W #0x0, R15
  1371. JNC ??FaxRXProcess_17
  1372. JNE ??FaxRXProcess_87
  1373. CMP.W #0x21, R14
  1374. JNC ??FaxRXProcess_17
  1375. //  325           {
  1376. //  326               if (gdwRxQueueRearCnt-gdwRxQueueFrontCnt>254)   // if data num is more than the buffer space, error happan.
  1377. ??FaxRXProcess_87:
  1378. MOV.W &gdwRxQueueRearCnt, R14
  1379. MOV.W &gdwRxQueueRearCnt + 0x2, R15
  1380. SUB.W &gdwRxQueueFrontCnt, R14
  1381. SUBC.W &gdwRxQueueFrontCnt + 0x2, R15
  1382. CMP.W #0x0, R15
  1383. JNC ??FaxRXProcess_88
  1384. JNE ??FaxRXProcess_31
  1385. CMP.W #0xff, R14
  1386. JNC ??FaxRXProcess_88
  1387. //  327                 {
  1388. //  328                   while (1);//gucGeneralStatus |= FAXRXERROR;
  1389. ??FaxRXProcess_31:
  1390. JMP ??FaxRXProcess_31
  1391. //  329                 }
  1392. //  330               if (wGeneralCount++<64) // 32*64=2048
  1393. ??FaxRXProcess_88:
  1394. MOV.W R7, R14
  1395. MOV.W #0x1, R7
  1396. ADD.W R14, R7
  1397. CMP.W #0x40, R14
  1398. JC ??FaxRXProcess_89
  1399. //  331               {
  1400. //  332                 for (ucGeneralCnt=0;ucGeneralCnt<32;ucGeneralCnt++)
  1401. MOV.B #0x0, R10
  1402. ??FaxRXProcess_19:
  1403. CMP.B #0x20, R10
  1404. JC ??FaxRXProcess_17
  1405. //  333                 {
  1406. //  334                  FLASH_CON_PORT_OUT&=~WE;
  1407. BIC.B #0x1, &0x29
  1408. //  335                 DATA_PORT_OUT=aucUartRxBuf[gpucQueueFront++];
  1409. MOV.B &gpucQueueFront, R14
  1410. AND.W #0xff, R14
  1411. MOV.B aucUartRxBuf(R14), &0x31
  1412. ADD.B #0x1, &gpucQueueFront
  1413. //  336                 gdwRxQueueFrontCnt++;               //The total num that is writed to flash
  1414. ADD.W #0x1, &gdwRxQueueFrontCnt
  1415. ADDC.W #0x0, &gdwRxQueueFrontCnt + 0x2
  1416. //  337                 FLASH_CON_PORT_OUT |= WE;
  1417. BIS.B #0x1, &0x29
  1418. //  338                }
  1419. ADD.B #0x1, R10
  1420. JMP ??FaxRXProcess_19
  1421. //  339          //ucGeneralCnt=0;
  1422. //  340               }
  1423. //  341               else
  1424. //  342               { 
  1425. //  343                 wGeneralCount=0;
  1426. ??FaxRXProcess_89:
  1427. MOV.W #0x0, R7
  1428. //  344                 
  1429. //  345                 COMMAND_VAL=0X10; //10H INITIATES PROGRAM
  1430. MOV.B #0x10, &COMMAND_VAL
  1431. //  346              COMMAND_LATCH_INTO();
  1432. CALL #COMMAND_LATCH_INTO
  1433. //  347 
  1434. //  348              READ_STATUS();
  1435. CALL #READ_STATUS
  1436. //  349                 ucFlashSttsOverflowCnt=0;
  1437. MOV.B #0x0, R6
  1438. //  350              while (FLASH_STATUS==1&&(ucFlashSttsOverflowCnt++)<2)
  1439. ??FaxRXProcess_20:
  1440. CMP.B #0x1, &FLASH_STATUS
  1441. JNE ??FaxRXProcess_90
  1442. MOV.B R6, R14
  1443. MOV.B #0x1, R6
  1444. ADD.B R14, R6
  1445. CMP.B #0x2, R14
  1446. JNC ??FaxRXProcess_20
  1447. //  351            {
  1448. //  352             ;//ERASE_ONE_BLOCK();
  1449. //  353             //PROGRAM_ONE_PAGE();
  1450. //  354            }
  1451. //  355                 if (wPageAddress<2559) wPageAddress++; //add at Jan. 18, 2007
  1452. ??FaxRXProcess_90:
  1453. CMP.W #0x9ff, R9
  1454. JC ??FaxRXProcess_21
  1455. ADD.W #0x1, R9
  1456. //  356              do{
  1457. //  357               wNextPageAddress=wPageAddress+64;
  1458. ??FaxRXProcess_21:
  1459. MOV.W #0x40, R14
  1460. ADD.W R9, R14
  1461. MOV.W R14, R5
  1462. //  358               wPageAddress=CalNextPageAddress(wPageAddress);
  1463. MOV.W R9, R12
  1464. CALL #CalNextPageAddress
  1465. MOV.W R12, R9
  1466. //  359               }while(wNextPageAddress==wPageAddress);
  1467. CMP.W R9, R5
  1468. JEQ ??FaxRXProcess_21
  1469. //  360             if (wPageAddress%64==0)
  1470. MOV.W R9, R12
  1471. MOV.W #0x40, R14
  1472. CALL #?DivMod16u
  1473. CMP.W #0x0, R14
  1474. JNE ??FaxRXProcess_91
  1475. //  361                {
  1476. //  362                   ROW_ADDRESS_LOW=wPageAddress & 0XFF;
  1477. MOV.B R9, &ROW_ADDRESS_LOW
  1478. //  363                   ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF; 
  1479. MOV.W R9, R14
  1480. SWPB R14
  1481. AND.W #0xff, R14
  1482. MOV.B R14, &ROW_ADDRESS_HIGH
  1483. //  364                   ERASE_ONE_BLOCK();
  1484. CALL #ERASE_ONE_BLOCK
  1485. //  365                }
  1486. //  366               //Flash_Reset();
  1487. //  367               COMMAND_VAL=0X80;
  1488. ??FaxRXProcess_91:
  1489. MOV.B #0x80, &COMMAND_VAL
  1490. //  368            COMMAND_LATCH_INTO();
  1491. CALL #COMMAND_LATCH_INTO
  1492. //  369 
  1493. //  370 //ADDRESS
  1494. //  371            ADDRESS_VALUE=0;//COLUMN_ADDRESS_HIGH; //#0X00
  1495. MOV.B #0x0, &ADDRESS_VALUE
  1496. //  372            ADDRESS_LATCH_INTO();
  1497. CALL #ADDRESS_LATCH_INTO
  1498. //  373 
  1499. //  374            ADDRESS_VALUE=0;//COLUMN_ADDRESS_HIGH; //#0X00
  1500. MOV.B #0x0, &ADDRESS_VALUE
  1501. //  375            ADDRESS_LATCH_INTO();
  1502. CALL #ADDRESS_LATCH_INTO
  1503. //  376 
  1504. //  377            ADDRESS_VALUE=wPageAddress & 0xff; //#0X00
  1505. MOV.B R9, &ADDRESS_VALUE
  1506. //  378            ADDRESS_LATCH_INTO();
  1507. CALL #ADDRESS_LATCH_INTO
  1508. //  379 
  1509. //  380            ADDRESS_VALUE=(wPageAddress>>8) & 0xff; //#0X00
  1510. MOV.W R9, R14
  1511. SWPB R14
  1512. AND.W #0xff, R14
  1513. MOV.B R14, &ADDRESS_VALUE
  1514. //  381            ADDRESS_LATCH_INTO();
  1515. CALL #ADDRESS_LATCH_INTO
  1516. //  382 
  1517. //  383            FLASH_CON_PORT_OUT &=~ ALE;
  1518. BIC.B #0x2, &0x29
  1519. //  384            //CALL DELAY_100US
  1520. //  385            //for(i=0;i<0xff;i++);
  1521. //  386            DATA_PORT_OUT_INITIAL; //MCU OUTPUT,MCU WRITE A DATA TO FLASH
  1522. MOV.B #0xff, &0x32
  1523. JMP ??FaxRXProcess_17
  1524. //  387             
  1525. //  388               }//else
  1526. //  389           }//if
  1527. //  390       }//while 
  1528. //  391       
  1529. //  392       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  1530. ??FaxRXProcess_83:
  1531. CMP.B #0x3, &gucFrhErrorStatus
  1532. JEQ ??FaxRXProcess_63
  1533. //  393 
  1534. //  394 
  1535. //  395 //FRH DNC (disconnect)   //Modity at Dec. 28,2006. DNC is the over flag
  1536. //  396       SendATcmdFRH();           
  1537. CALL #SendATcmdFRH
  1538. //  397       
  1539. //  398       while (1)    
  1540. //  399       {
  1541. //  400        ucRxIndex1=gucUartRxCnt-3;
  1542. ??FaxRXProcess_22:
  1543. MOV.B #0xfd, R14
  1544. ADD.B &gucUartRxCnt, R14
  1545. MOV.B R14, R11
  1546. //  401         ucRxIndex0=gucUartRxCnt-2;
  1547. MOV.B #0xfe, R14
  1548. ADD.B &gucUartRxCnt, R14
  1549. MOV.B R14, R8
  1550. //  402         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x54==aucUartRxBuf[ucRxIndex1]))
  1551. AND.W #0xff, R8
  1552. CMP.B #0xd, aucUartRxBuf(R8)
  1553. JNE ??FaxRXProcess_92
  1554. AND.W #0xff, R11
  1555. CMP.B #0x54, aucUartRxBuf(R11)
  1556. JEQ ??FaxRXProcess_93
  1557. //  403           break;
  1558. //  404         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1559. //  405         RxFaxTimeOverflowErrorQuit();
  1560. ??FaxRXProcess_92:
  1561. MOV.W &gwTimeOverflowCount, R14
  1562. MOV.W #0x1, R15
  1563. ADD.W R14, R15
  1564. MOV.W R15, &gwTimeOverflowCount
  1565. CMP.W #0xffff, R14
  1566. JNE ??FaxRXProcess_94
  1567. ADD.B #0x1, &gucTimeOverflowCount
  1568. MOV.B #0x0, &gucFrhErrorStatus
  1569. ??FaxRXProcess_94:
  1570. CMP.B #0x14, &gucTimeOverflowCount
  1571. JNE ??FaxRXProcess_22
  1572. MOV.B #0x3, &gucFrhErrorStatus
  1573. MOV.B #0x0, &gucTimeOverflowCount
  1574. MOV.W #0x0, &gwTimeOverflowCount
  1575. //  406       }
  1576. //  407       
  1577. //  408       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  1578. ??FaxRXProcess_93:
  1579. CMP.B #0x3, &gucFrhErrorStatus
  1580. JEQ ??FaxRXProcess_63
  1581. //  409       
  1582. //  410       while (1)    
  1583. //  411       {
  1584. //  412        ucRxIndex1=gucUartRxCnt-3;
  1585. ??FaxRXProcess_23:
  1586. MOV.B #0xfd, R14
  1587. ADD.B &gucUartRxCnt, R14
  1588. MOV.B R14, R11
  1589. //  413         ucRxIndex0=gucUartRxCnt-2;
  1590. MOV.B #0xfe, R14
  1591. ADD.B &gucUartRxCnt, R14
  1592. MOV.B R14, R8
  1593. //  414         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  1594. AND.W #0xff, R8
  1595. CMP.B #0xd, aucUartRxBuf(R8)
  1596. JNE ??FaxRXProcess_95
  1597. AND.W #0xff, R11
  1598. CMP.B #0x4b, aucUartRxBuf(R11)
  1599. JEQ ??FaxRXProcess_96
  1600. //  415           break;
  1601. //  416         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1602. //  417         RxFaxTimeOverflowErrorQuit();
  1603. ??FaxRXProcess_95:
  1604. MOV.W &gwTimeOverflowCount, R14
  1605. MOV.W #0x1, R15
  1606. ADD.W R14, R15
  1607. MOV.W R15, &gwTimeOverflowCount
  1608. CMP.W #0xffff, R14
  1609. JNE ??FaxRXProcess_97
  1610. ADD.B #0x1, &gucTimeOverflowCount
  1611. MOV.B #0x0, &gucFrhErrorStatus
  1612. ??FaxRXProcess_97:
  1613. CMP.B #0x14, &gucTimeOverflowCount
  1614. JNE ??FaxRXProcess_23
  1615. MOV.B #0x3, &gucFrhErrorStatus
  1616. MOV.B #0x0, &gucTimeOverflowCount
  1617. MOV.W #0x0, &gwTimeOverflowCount
  1618. //  418       } 
  1619. //  419       
  1620. //  420       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  1621. ??FaxRXProcess_96:
  1622. CMP.B #0x3, &gucFrhErrorStatus
  1623. JEQ ??FaxRXProcess_63
  1624. //  421       
  1625. //  422 //FaxRearDataProcess      
  1626. //  423         while (gdwRxQueueRearCnt-gdwRxQueueFrontCnt>=32)
  1627. ??FaxRXProcess_24:
  1628. MOV.W &gdwRxQueueRearCnt, R14
  1629. MOV.W &gdwRxQueueRearCnt + 0x2, R15
  1630. SUB.W &gdwRxQueueFrontCnt, R14
  1631. SUBC.W &gdwRxQueueFrontCnt + 0x2, R15
  1632. CMP.W #0x0, R15
  1633. JNC ??FaxRXProcess_98
  1634. JNE ??FaxRXProcess_99
  1635. CMP.W #0x20, R14
  1636. JNC ??FaxRXProcess_98
  1637. //  424           {
  1638. //  425               if (gdwRxQueueRearCnt-gdwRxQueueFrontCnt>254)   // if data num is more than the buffer space, error happan.
  1639. ??FaxRXProcess_99:
  1640. MOV.W &gdwRxQueueRearCnt, R14
  1641. MOV.W &gdwRxQueueRearCnt + 0x2, R15
  1642. SUB.W &gdwRxQueueFrontCnt, R14
  1643. SUBC.W &gdwRxQueueFrontCnt + 0x2, R15
  1644. CMP.W #0x0, R15
  1645. JNC ??FaxRXProcess_100
  1646. JNE ??FaxRXProcess_101
  1647. CMP.W #0xff, R14
  1648. JNC ??FaxRXProcess_100
  1649. //  426                 {
  1650. //  427                   gucGeneralStatus |= FAXRXERROR;
  1651. ??FaxRXProcess_101:
  1652. BIS.B #0x1, &gucGeneralStatus
  1653. //  428                 }
  1654. //  429               if (wGeneralCount++<64) // 32*64=2048
  1655. ??FaxRXProcess_100:
  1656. MOV.W R7, R14
  1657. MOV.W #0x1, R7
  1658. ADD.W R14, R7
  1659. CMP.W #0x40, R14
  1660. JC ??FaxRXProcess_102
  1661. //  430               {
  1662. //  431                 for (ucGeneralCnt=0;ucGeneralCnt<32;ucGeneralCnt++)
  1663. MOV.B #0x0, R10
  1664. ??FaxRXProcess_25:
  1665. CMP.B #0x20, R10
  1666. JC ??FaxRXProcess_24
  1667. //  432                 {
  1668. //  433                  FLASH_CON_PORT_OUT&=~WE;
  1669. BIC.B #0x1, &0x29
  1670. //  434                 DATA_PORT_OUT=aucUartRxBuf[gpucQueueFront++];
  1671. MOV.B &gpucQueueFront, R14
  1672. AND.W #0xff, R14
  1673. MOV.B aucUartRxBuf(R14), &0x31
  1674. ADD.B #0x1, &gpucQueueFront
  1675. //  435                 gdwRxQueueFrontCnt++;               //The total num that is writed to flash
  1676. ADD.W #0x1, &gdwRxQueueFrontCnt
  1677. ADDC.W #0x0, &gdwRxQueueFrontCnt + 0x2
  1678. //  436                 FLASH_CON_PORT_OUT |= WE;
  1679. BIS.B #0x1, &0x29
  1680. //  437                }
  1681. ADD.B #0x1, R10
  1682. JMP ??FaxRXProcess_25
  1683. //  438               }
  1684. //  439               else
  1685. //  440               { 
  1686. //  441                 wGeneralCount=0;
  1687. ??FaxRXProcess_102:
  1688. MOV.W #0x0, R7
  1689. //  442                 
  1690. //  443                 COMMAND_VAL=0X10; //10H INITIATES PROGRAM
  1691. MOV.B #0x10, &COMMAND_VAL
  1692. //  444              COMMAND_LATCH_INTO();
  1693. CALL #COMMAND_LATCH_INTO
  1694. //  445 
  1695. //  446              READ_STATUS();
  1696. CALL #READ_STATUS
  1697. //  447                 ucFlashSttsOverflowCnt=0;
  1698. MOV.B #0x0, R6
  1699. //  448              while (FLASH_STATUS==1&&(ucFlashSttsOverflowCnt++)<2)
  1700. ??FaxRXProcess_26:
  1701. CMP.B #0x1, &FLASH_STATUS
  1702. JNE ??FaxRXProcess_103
  1703. MOV.B R6, R14
  1704. MOV.B #0x1, R6
  1705. ADD.B R14, R6
  1706. CMP.B #0x2, R14
  1707. JNC ??FaxRXProcess_26
  1708. //  449            {
  1709. //  450             ;//ERASE_ONE_BLOCK();
  1710. //  451             //PROGRAM_ONE_PAGE();
  1711. //  452            }
  1712. //  453                 if (wPageAddress<2559) wPageAddress++;//add at Jan. 18, 2007
  1713. ??FaxRXProcess_103:
  1714. CMP.W #0x9ff, R9
  1715. JC ??FaxRXProcess_27
  1716. ADD.W #0x1, R9
  1717. //  454              do{
  1718. //  455               wNextPageAddress=wPageAddress+64;
  1719. ??FaxRXProcess_27:
  1720. MOV.W #0x40, R14
  1721. ADD.W R9, R14
  1722. MOV.W R14, R5
  1723. //  456               wPageAddress=CalNextPageAddress(wPageAddress);
  1724. MOV.W R9, R12
  1725. CALL #CalNextPageAddress
  1726. MOV.W R12, R9
  1727. //  457               }while(wNextPageAddress==wPageAddress);
  1728. CMP.W R9, R5
  1729. JEQ ??FaxRXProcess_27
  1730. //  458             if (wPageAddress%64==0)
  1731. MOV.W R9, R12
  1732. MOV.W #0x40, R14
  1733. CALL #?DivMod16u
  1734. CMP.W #0x0, R14
  1735. JNE ??FaxRXProcess_104
  1736. //  459                {
  1737. //  460                   ROW_ADDRESS_LOW=wPageAddress & 0XFF;
  1738. MOV.B R9, &ROW_ADDRESS_LOW
  1739. //  461                   ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF; 
  1740. MOV.W R9, R14
  1741. SWPB R14
  1742. AND.W #0xff, R14
  1743. MOV.B R14, &ROW_ADDRESS_HIGH
  1744. //  462                   ERASE_ONE_BLOCK();
  1745. CALL #ERASE_ONE_BLOCK
  1746. //  463                }
  1747. //  464               COMMAND_VAL=0X80;
  1748. ??FaxRXProcess_104:
  1749. MOV.B #0x80, &COMMAND_VAL
  1750. //  465            COMMAND_LATCH_INTO();
  1751. CALL #COMMAND_LATCH_INTO
  1752. //  466 
  1753. //  467 //ADDRESS
  1754. //  468            ADDRESS_VALUE=0;//COLUMN_ADDRESS_LOW; //#0X00
  1755. MOV.B #0x0, &ADDRESS_VALUE
  1756. //  469            ADDRESS_LATCH_INTO();
  1757. CALL #ADDRESS_LATCH_INTO
  1758. //  470 
  1759. //  471            ADDRESS_VALUE=0;//COLUMN_ADDRESS_LOW; //#0X00
  1760. MOV.B #0x0, &ADDRESS_VALUE
  1761. //  472            ADDRESS_LATCH_INTO();
  1762. CALL #ADDRESS_LATCH_INTO
  1763. //  473 
  1764. //  474            ADDRESS_VALUE=wPageAddress & 0xff; //#0X00
  1765. MOV.B R9, &ADDRESS_VALUE
  1766. //  475            ADDRESS_LATCH_INTO();
  1767. CALL #ADDRESS_LATCH_INTO
  1768. //  476 
  1769. //  477            ADDRESS_VALUE=(wPageAddress>>8) & 0xff; //#0X00
  1770. MOV.W R9, R14
  1771. SWPB R14
  1772. AND.W #0xff, R14
  1773. MOV.B R14, &ADDRESS_VALUE
  1774. //  478            ADDRESS_LATCH_INTO();
  1775. CALL #ADDRESS_LATCH_INTO
  1776. //  479 
  1777. //  480            FLASH_CON_PORT_OUT &=~ ALE;
  1778. BIC.B #0x2, &0x29
  1779. //  481            //CALL DELAY_100US
  1780. //  482            //for(i=0;i<0xff;i++);
  1781. //  483            DATA_PORT_OUT_INITIAL; //MCU OUTPUT,MCU WRITE A DATA TO FLASH
  1782. MOV.B #0xff, &0x32
  1783. JMP ??FaxRXProcess_24
  1784. //  484             
  1785. //  485               }//else
  1786. //  486           }//while
  1787. //  487  //***************************************     
  1788. //  488       wDataRearCount=gdwRxQueueRearCnt-gdwRxQueueFrontCnt;      
  1789. ??FaxRXProcess_98:
  1790. MOV.W &gdwRxQueueRearCnt, R14
  1791. SUB.W &gdwRxQueueFrontCnt, R14
  1792. MOV.W R14, 0x2(SP)
  1793. //  489       if (wDataRearCount)//wDataRearCount<2048-wGeneralCount*ucGeneralCnt)
  1794. CMP.W #0x0, 0x2(SP)
  1795. JEQ ??FaxRXProcess_105
  1796. //  490       {
  1797. //  491          //for (ucGeneralCnt=0;ucGeneralCnt<wGeneralCount;ucGeneralCnt++)
  1798. //  492          for (ucGeneralCnt=0;ucGeneralCnt<wDataRearCount;ucGeneralCnt++)
  1799. MOV.B #0x0, R10
  1800. ??FaxRXProcess_28:
  1801. MOV.B R10, R14
  1802. AND.W #0xff, R14
  1803. CMP.W 0x2(SP), R14
  1804. JC ??FaxRXProcess_106
  1805. //  493           {
  1806. //  494             FLASH_CON_PORT_OUT&=~WE;
  1807. BIC.B #0x1, &0x29
  1808. //  495           DATA_PORT_OUT=aucUartRxBuf[gpucQueueFront++];
  1809. MOV.B &gpucQueueFront, R14
  1810. AND.W #0xff, R14
  1811. MOV.B aucUartRxBuf(R14), &0x31
  1812. ADD.B #0x1, &gpucQueueFront
  1813. //  496           gdwRxQueueFrontCnt++;
  1814. ADD.W #0x1, &gdwRxQueueFrontCnt
  1815. ADDC.W #0x0, &gdwRxQueueFrontCnt + 0x2
  1816. //  497           FLASH_CON_PORT_OUT |= WE;
  1817. BIS.B #0x1, &0x29
  1818. //  498          }
  1819. ADD.B #0x1, R10
  1820. JMP ??FaxRXProcess_28
  1821. //  499          
  1822. //  500         wGeneralCount=0;
  1823. ??FaxRXProcess_106:
  1824. MOV.W #0x0, R7
  1825. //  501         COMMAND_VAL=0X10; //10H INITIATES PROGRAM
  1826. MOV.B #0x10, &COMMAND_VAL
  1827. //  502        COMMAND_LATCH_INTO();
  1828. CALL #COMMAND_LATCH_INTO
  1829. //  503 
  1830. //  504        READ_STATUS();
  1831. CALL #READ_STATUS
  1832. //  505         ucFlashSttsOverflowCnt=0;
  1833. MOV.B #0x0, R6
  1834. //  506        if(FLASH_STATUS==1&&(ucFlashSttsOverflowCnt++)<2)
  1835. CMP.B #0x1, &FLASH_STATUS
  1836. JNE ??FaxRXProcess_105
  1837. ADD.B #0x1, R6
  1838. //  507      {
  1839. //  508       ;//ERASE_ONE_BLOCK();
  1840. //  509       //PROGRAM_ONE_PAGE();
  1841. //  510      }
  1842. //  511       }//if  
  1843. //  512       
  1844. //  513 
  1845. //  514       
  1846. //  515       
  1847. //  516       
  1848. //  517       SendATcmdH0();
  1849. ??FaxRXProcess_105:
  1850. CALL #SendATcmdH0
  1851. //  518      
  1852. //  519       while (1)    
  1853. //  520       {
  1854. //  521        ucRxIndex1=gucUartRxCnt-3;
  1855. ??FaxRXProcess_29:
  1856. MOV.B #0xfd, R14
  1857. ADD.B &gucUartRxCnt, R14
  1858. MOV.B R14, R11
  1859. //  522         ucRxIndex0=gucUartRxCnt-2;
  1860. MOV.B #0xfe, R14
  1861. ADD.B &gucUartRxCnt, R14
  1862. MOV.B R14, R8
  1863. //  523         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  1864. AND.W #0xff, R8
  1865. CMP.B #0xd, aucUartRxBuf(R8)
  1866. JNE ??FaxRXProcess_107
  1867. AND.W #0xff, R11
  1868. CMP.B #0x4b, aucUartRxBuf(R11)
  1869. JEQ ??FaxRXProcess_108
  1870. //  524           break;
  1871. //  525         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1872. //  526         RxFaxTimeOverflowErrorQuit();
  1873. ??FaxRXProcess_107:
  1874. MOV.W &gwTimeOverflowCount, R14
  1875. MOV.W #0x1, R15
  1876. ADD.W R14, R15
  1877. MOV.W R15, &gwTimeOverflowCount
  1878. CMP.W #0xffff, R14
  1879. JNE ??FaxRXProcess_109
  1880. ADD.B #0x1, &gucTimeOverflowCount
  1881. MOV.B #0x0, &gucFrhErrorStatus
  1882. ??FaxRXProcess_109:
  1883. CMP.B #0x14, &gucTimeOverflowCount
  1884. JNE ??FaxRXProcess_29
  1885. MOV.B #0x3, &gucFrhErrorStatus
  1886. MOV.B #0x0, &gucTimeOverflowCount
  1887. MOV.W #0x0, &gwTimeOverflowCount
  1888. //  527       }
  1889. //  528       
  1890. //  529       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.   
  1891. ??FaxRXProcess_108:
  1892. CMP.B #0x3, &gucFrhErrorStatus
  1893. JEQ ??FaxRXProcess_63
  1894. //  530       ATcmdDelay();
  1895. CALL #ATcmdDelay
  1896. //  531       ATcmdDelay();
  1897. CALL #ATcmdDelay
  1898. //  532       ATcmdDelay();
  1899. CALL #ATcmdDelay
  1900. //  533       ATcmdDelay();
  1901. CALL #ATcmdDelay
  1902. //  534       
  1903. //  535       SendATcmdH0();
  1904. CALL #SendATcmdH0
  1905. //  536       
  1906. //  537       while (1)    
  1907. //  538       {
  1908. //  539        ucRxIndex1=gucUartRxCnt-3;
  1909. ??FaxRXProcess_30:
  1910. MOV.B #0xfd, R14
  1911. ADD.B &gucUartRxCnt, R14
  1912. MOV.B R14, R11
  1913. //  540         ucRxIndex0=gucUartRxCnt-2;
  1914. MOV.B #0xfe, R14
  1915. ADD.B &gucUartRxCnt, R14
  1916. MOV.B R14, R8
  1917. //  541         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  1918. AND.W #0xff, R8
  1919. CMP.B #0xd, aucUartRxBuf(R8)
  1920. JNE ??FaxRXProcess_110
  1921. AND.W #0xff, R11
  1922. CMP.B #0x4b, aucUartRxBuf(R11)
  1923. JEQ ??FaxRXProcess_111
  1924. //  542           break;
  1925. //  543         //if check time>min. 5S, Receive Fax error, progra should be quit  
  1926. //  544         RxFaxTimeOverflowErrorQuit();
  1927. ??FaxRXProcess_110:
  1928. MOV.W &gwTimeOverflowCount, R14
  1929. MOV.W #0x1, R15
  1930. ADD.W R14, R15
  1931. MOV.W R15, &gwTimeOverflowCount
  1932. CMP.W #0xffff, R14
  1933. JNE ??FaxRXProcess_112
  1934. ADD.B #0x1, &gucTimeOverflowCount
  1935. MOV.B #0x0, &gucFrhErrorStatus
  1936. ??FaxRXProcess_112:
  1937. CMP.B #0x14, &gucTimeOverflowCount
  1938. JNE ??FaxRXProcess_30
  1939. MOV.B #0x3, &gucFrhErrorStatus
  1940. MOV.B #0x0, &gucTimeOverflowCount
  1941. MOV.W #0x0, &gwTimeOverflowCount
  1942. //  545       }
  1943. //  546       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.   
  1944. ??FaxRXProcess_111:
  1945. CMP.B #0x3, &gucFrhErrorStatus
  1946. JEQ ??FaxRXProcess_63
  1947. //  547       ATcmdDelay();
  1948. CALL #ATcmdDelay
  1949. //  548       ATcmdDelay();
  1950. CALL #ATcmdDelay
  1951. //  549       ATcmdDelay();
  1952. CALL #ATcmdDelay
  1953. //  550       ATcmdDelay();
  1954. CALL #ATcmdDelay
  1955. //  551       ATcmdDelay();
  1956. CALL #ATcmdDelay
  1957. //  552       ATcmdDelay();
  1958. CALL #ATcmdDelay
  1959. //  553       ATcmdDelay();
  1960. CALL #ATcmdDelay
  1961. //  554       ATcmdDelay();
  1962. CALL #ATcmdDelay
  1963. //  555 //AT Fclass0
  1964. //  556      
  1965. //  557       SendATcmdFCLASS0();
  1966. CALL #SendATcmdFCLASS0
  1967. //  558       ATcmdDelay();
  1968. CALL #ATcmdDelay
  1969. //  559       ATcmdDelay();
  1970. CALL #ATcmdDelay
  1971. //  560       ATcmdDelay();
  1972. CALL #ATcmdDelay
  1973. //  561       ATcmdDelay();
  1974. CALL #ATcmdDelay
  1975. //  562 //AT      
  1976. //  563       SendATcmdPrefix();
  1977. CALL #SendATcmdPrefix
  1978. //  564       ATcmdDelay();
  1979. CALL #ATcmdDelay
  1980. //  565       SendATcmdSuffix();
  1981. CALL #SendATcmdSuffix
  1982. //  566       ATcmdDelay();
  1983. CALL #ATcmdDelay
  1984. //  567       ATcmdDelay();
  1985. CALL #ATcmdDelay
  1986. //  568       ATcmdDelay();
  1987. CALL #ATcmdDelay
  1988. //  569 //AT     
  1989. //  570       SendATcmdPrefix();
  1990. CALL #SendATcmdPrefix
  1991. //  571       ATcmdDelay();
  1992. CALL #ATcmdDelay
  1993. //  572       SendATcmdSuffix();
  1994. CALL #SendATcmdSuffix
  1995. //  573       ATcmdDelay();
  1996. CALL #ATcmdDelay
  1997. //  574       ATcmdDelay();
  1998. CALL #ATcmdDelay
  1999. //  575       ATcmdDelay();
  2000. CALL #ATcmdDelay
  2001. //  576 //AT    
  2002. //  577       SendATcmdPrefix();
  2003. CALL #SendATcmdPrefix
  2004. //  578       ATcmdDelay();
  2005. CALL #ATcmdDelay
  2006. //  579       SendATcmdSuffix();
  2007. CALL #SendATcmdSuffix
  2008. //  580       ATcmdDelay();
  2009. CALL #ATcmdDelay
  2010. //  581       ATcmdDelay();
  2011. CALL #ATcmdDelay
  2012. //  582       ATcmdDelay();
  2013. CALL #ATcmdDelay
  2014. //  583       
  2015. //  584       SendATconfigFE0EndofRX();
  2016. CALL #SendATconfigFE0EndofRX
  2017. //  585       ATcmdDelay();
  2018. CALL #ATcmdDelay
  2019. //  586       ATcmdDelay();
  2020. CALL #ATcmdDelay
  2021. //  587       ATcmdDelay();
  2022. CALL #ATcmdDelay
  2023. //  588       ATcmdDelay();
  2024. CALL #ATcmdDelay
  2025. //  589       
  2026. //  590 
  2027. //  591       SendATconfigS7RX();
  2028. CALL #SendATconfigS7RX
  2029. //  592       ATcmdDelay();
  2030. CALL #ATcmdDelay
  2031. //  593       ATcmdDelay();
  2032. CALL #ATcmdDelay
  2033. //  594       ATcmdDelay();
  2034. CALL #ATcmdDelay
  2035. //  595       ATcmdDelay();
  2036. CALL #ATcmdDelay
  2037. //  596       
  2038. //  597       SendATconfigS0RX();
  2039. CALL #SendATconfigS0RX
  2040. //  598       ATcmdDelay();
  2041. CALL #ATcmdDelay
  2042. //  599       ATcmdDelay();
  2043. CALL #ATcmdDelay
  2044. //  600       ATcmdDelay();
  2045. CALL #ATcmdDelay
  2046. //  601       ATcmdDelay();
  2047. CALL #ATcmdDelay
  2048. //  602 
  2049. //  603 
  2050. //  604 
  2051. //  605 
  2052. //  606 
  2053. //  607             
  2054. //  608       
  2055. //  609  
  2056. //  610 //***************************************/     
  2057. //  611       //gucRxTxFlag = DTERX;// set Rx Tx flag
  2058. //  612       _NOP();
  2059. NOP
  2060. //  613       gwPageAddress = wPageAddress;
  2061. MOV.W R9, &gwPageAddress
  2062. //  614 /*      
  2063. //  615       while (1)
  2064. //  616      {
  2065. //  617         SendATcmdModemSoftReset();
  2066. //  618         ATcmdDelay();
  2067. //  619         ATcmdDelay();
  2068. //  620       
  2069. //  621       ucRxIndex1=gucUartRxCnt-3;
  2070. //  622       ucRxIndex0=gucUartRxCnt-2;
  2071. //  623       if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  2072. //  624         {break;}
  2073. //  625      }//while
  2074. //  626 */
  2075. //  627           
  2076. //  628 }//FaxRXProcess
  2077. ??FaxRXProcess_63:
  2078. ADD.W #0x4, SP
  2079.         CFI CFA SP+18
  2080. BR #?Epilogue8
  2081.         CFI EndBlock cfiBlock0
  2082. //  629 
  2083.         RSEG CODE:CODE:SORT:NOROOT(1)
  2084. //  630 void FaxRxInit(void)
  2085. FaxRxInit:
  2086.         CFI Block cfiBlock1 Using cfiCommon0
  2087.         CFI Function FaxRxInit
  2088. //  631 {
  2089. //  632 
  2090. //  633       SendATconfigFS0();
  2091.         FUNCALL FaxRxInit, SendATconfigFS0
  2092.         LOCFRAME CSTACK, 2, STACK
  2093.         FUNCALL FaxRxInit, ATcmdDelay
  2094.         LOCFRAME CSTACK, 2, STACK
  2095.         FUNCALL FaxRxInit, ATcmdDelay
  2096.         LOCFRAME CSTACK, 2, STACK
  2097.         FUNCALL FaxRxInit, ATcmdDelay
  2098.         LOCFRAME CSTACK, 2, STACK
  2099.         FUNCALL FaxRxInit, SendATcmdPrefix
  2100.         LOCFRAME CSTACK, 2, STACK
  2101.         FUNCALL FaxRxInit, ATcmdDelay
  2102.         LOCFRAME CSTACK, 2, STACK
  2103.         FUNCALL FaxRxInit, SendATcmdSuffix
  2104.         LOCFRAME CSTACK, 2, STACK
  2105.         FUNCALL FaxRxInit, ATcmdDelay
  2106.         LOCFRAME CSTACK, 2, STACK
  2107.         FUNCALL FaxRxInit, ATcmdDelay
  2108.         LOCFRAME CSTACK, 2, STACK
  2109.         FUNCALL FaxRxInit, ATcmdDelay
  2110.         LOCFRAME CSTACK, 2, STACK
  2111.         FUNCALL FaxRxInit, SendATconfigS7
  2112.         LOCFRAME CSTACK, 2, STACK
  2113.         FUNCALL FaxRxInit, ATcmdDelay
  2114.         LOCFRAME CSTACK, 2, STACK
  2115.         FUNCALL FaxRxInit, ATcmdDelay
  2116.         LOCFRAME CSTACK, 2, STACK
  2117.         FUNCALL FaxRxInit, ATcmdDelay
  2118.         LOCFRAME CSTACK, 2, STACK
  2119.         FUNCALL FaxRxInit, SendATconfigX4M1
  2120.         LOCFRAME CSTACK, 2, STACK
  2121.         FUNCALL FaxRxInit, ATcmdDelay
  2122.         LOCFRAME CSTACK, 2, STACK
  2123.         FUNCALL FaxRxInit, ATcmdDelay
  2124.         LOCFRAME CSTACK, 2, STACK
  2125.         FUNCALL FaxRxInit, ATcmdDelay
  2126.         LOCFRAME CSTACK, 2, STACK
  2127.         FUNCALL FaxRxInit, SendATcmdFCLASS
  2128.         LOCFRAME CSTACK, 2, STACK
  2129.         FUNCALL FaxRxInit, ATcmdDelay
  2130.         LOCFRAME CSTACK, 2, STACK
  2131.         FUNCALL FaxRxInit, ATcmdDelay
  2132.         LOCFRAME CSTACK, 2, STACK
  2133.         FUNCALL FaxRxInit, ATcmdDelay
  2134.         LOCFRAME CSTACK, 2, STACK
  2135.         FUNCALL FaxRxInit, SendATcmdPrefix
  2136.         LOCFRAME CSTACK, 2, STACK
  2137.         FUNCALL FaxRxInit, ATcmdDelay
  2138.         LOCFRAME CSTACK, 2, STACK
  2139.         FUNCALL FaxRxInit, SendATcmdSuffix
  2140.         LOCFRAME CSTACK, 2, STACK
  2141.         FUNCALL FaxRxInit, ATcmdDelay
  2142.         LOCFRAME CSTACK, 2, STACK
  2143.         FUNCALL FaxRxInit, ATcmdDelay
  2144.         LOCFRAME CSTACK, 2, STACK
  2145.         FUNCALL FaxRxInit, ATcmdDelay
  2146.         LOCFRAME CSTACK, 2, STACK
  2147.         FUNCALL FaxRxInit, SendATcmdFCLASS
  2148.         LOCFRAME CSTACK, 2, STACK
  2149.         FUNCALL FaxRxInit, ATcmdDelay
  2150.         LOCFRAME CSTACK, 2, STACK
  2151.         FUNCALL FaxRxInit, ATcmdDelay
  2152.         LOCFRAME CSTACK, 2, STACK
  2153.         FUNCALL FaxRxInit, ATcmdDelay
  2154.         LOCFRAME CSTACK, 2, STACK
  2155.         FUNCALL FaxRxInit, SendATcmdPrefix
  2156.         LOCFRAME CSTACK, 2, STACK
  2157.         FUNCALL FaxRxInit, ATcmdDelay
  2158.         LOCFRAME CSTACK, 2, STACK
  2159.         FUNCALL FaxRxInit, SendATcmdSuffix
  2160.         LOCFRAME CSTACK, 2, STACK
  2161.         FUNCALL FaxRxInit, ATcmdDelay
  2162.         LOCFRAME CSTACK, 2, STACK
  2163.         FUNCALL FaxRxInit, ATcmdDelay
  2164.         LOCFRAME CSTACK, 2, STACK
  2165.         FUNCALL FaxRxInit, ATcmdDelay
  2166.         LOCFRAME CSTACK, 2, STACK
  2167. CALL #SendATconfigFS0
  2168. //  634       ATcmdDelay();
  2169. CALL #ATcmdDelay
  2170. //  635       ATcmdDelay();
  2171. CALL #ATcmdDelay
  2172. //  636       ATcmdDelay();
  2173. CALL #ATcmdDelay
  2174. //  637 //AT      
  2175. //  638       SendATcmdPrefix();
  2176. CALL #SendATcmdPrefix
  2177. //  639       ATcmdDelay();
  2178. CALL #ATcmdDelay
  2179. //  640       SendATcmdSuffix();
  2180. CALL #SendATcmdSuffix
  2181. //  641       ATcmdDelay();
  2182. CALL #ATcmdDelay
  2183. //  642       ATcmdDelay();
  2184. CALL #ATcmdDelay
  2185. //  643       ATcmdDelay();
  2186. CALL #ATcmdDelay
  2187. //  644       
  2188. //  645       SendATconfigS7();
  2189. CALL #SendATconfigS7
  2190. //  646       ATcmdDelay();
  2191. CALL #ATcmdDelay
  2192. //  647       ATcmdDelay();
  2193. CALL #ATcmdDelay
  2194. //  648       ATcmdDelay();
  2195. CALL #ATcmdDelay
  2196. //  649       
  2197. //  650       SendATconfigX4M1();
  2198. CALL #SendATconfigX4M1
  2199. //  651       ATcmdDelay();
  2200. CALL #ATcmdDelay
  2201. //  652       ATcmdDelay();
  2202. CALL #ATcmdDelay
  2203. //  653       ATcmdDelay();
  2204. CALL #ATcmdDelay
  2205. //  654       
  2206. //  655       SendATcmdFCLASS();
  2207. CALL #SendATcmdFCLASS
  2208. //  656       ATcmdDelay();
  2209. CALL #ATcmdDelay
  2210. //  657       ATcmdDelay();
  2211. CALL #ATcmdDelay
  2212. //  658       ATcmdDelay();
  2213. CALL #ATcmdDelay
  2214. //  659 //AT
  2215. //  660       SendATcmdPrefix();
  2216. CALL #SendATcmdPrefix
  2217. //  661       ATcmdDelay();
  2218. CALL #ATcmdDelay
  2219. //  662       SendATcmdSuffix();
  2220. CALL #SendATcmdSuffix
  2221. //  663       ATcmdDelay();
  2222. CALL #ATcmdDelay
  2223. //  664       ATcmdDelay();
  2224. CALL #ATcmdDelay
  2225. //  665       ATcmdDelay();
  2226. CALL #ATcmdDelay
  2227. //  666       
  2228. //  667       SendATcmdFCLASS();
  2229. CALL #SendATcmdFCLASS
  2230. //  668       ATcmdDelay();
  2231. CALL #ATcmdDelay
  2232. //  669       ATcmdDelay();
  2233. CALL #ATcmdDelay
  2234. //  670       ATcmdDelay();
  2235. CALL #ATcmdDelay
  2236. //  671 //AT
  2237. //  672       SendATcmdPrefix();
  2238. CALL #SendATcmdPrefix
  2239. //  673       ATcmdDelay();
  2240. CALL #ATcmdDelay
  2241. //  674       SendATcmdSuffix();
  2242. CALL #SendATcmdSuffix
  2243. //  675       ATcmdDelay();
  2244. CALL #ATcmdDelay
  2245. //  676       ATcmdDelay();
  2246. CALL #ATcmdDelay
  2247. //  677       ATcmdDelay();
  2248. BR #ATcmdDelay
  2249.         CFI EndBlock cfiBlock1
  2250. //  678 } 
  2251. //  679 
  2252.         RSEG CODE:CODE:NOROOT(1)
  2253. //  680 void PageImageEndProcess(void)
  2254. PageImageEndProcess:
  2255.         CFI Block cfiBlock2 Using cfiCommon0
  2256.         CFI Function PageImageEndProcess
  2257. //  681 {   
  2258.         FUNCALL PageImageEndProcess, SendATcmdFRH
  2259.         LOCFRAME CSTACK, 6, STACK
  2260.         FUNCALL PageImageEndProcess, SendATcmdFTH
  2261.         LOCFRAME CSTACK, 6, STACK
  2262.         FUNCALL PageImageEndProcess, Delay1500ms
  2263.         LOCFRAME CSTACK, 6, STACK
  2264.         FUNCALL PageImageEndProcess, SendATdataFTHMCF
  2265.         LOCFRAME CSTACK, 6, STACK
  2266. PUSH.W R10
  2267.         CFI R10 Frame(CFA, -4)
  2268.         CFI CFA SP+4
  2269. PUSH.W R11
  2270.         CFI R11 Frame(CFA, -6)
  2271.         CFI CFA SP+6
  2272. //  682       unsigned char ucRxIndex1=0,ucRxIndex0=0;
  2273. MOV.B #0x0, R11
  2274. MOV.B #0x0, R10
  2275. //  683 //FRHEOP (end of procedure)
  2276. //  684       SendATcmdFRH();
  2277. CALL #SendATcmdFRH
  2278. //  685       //ATcmdDelay();
  2279. //  686       
  2280. //  687       while (1)    
  2281. //  688       {
  2282. //  689        ucRxIndex1=gucUartRxCnt-3;
  2283. ??PageImageEndProcess_0:
  2284. MOV.B #0xfd, R14
  2285. ADD.B &gucUartRxCnt, R14
  2286. MOV.B R14, R11
  2287. //  690         ucRxIndex0=gucUartRxCnt-2;
  2288. MOV.B #0xfe, R14
  2289. ADD.B &gucUartRxCnt, R14
  2290. MOV.B R14, R10
  2291. //  691         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x54==aucUartRxBuf[ucRxIndex1]))
  2292. AND.W #0xff, R10
  2293. CMP.B #0xd, aucUartRxBuf(R10)
  2294. JNE ??PageImageEndProcess_4
  2295. AND.W #0xff, R11
  2296. CMP.B #0x54, aucUartRxBuf(R11)
  2297. JEQ ??PageImageEndProcess_5
  2298. //  692           break;
  2299. //  693         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2300. //  694         RxFaxTimeOverflowErrorQuit();
  2301. ??PageImageEndProcess_4:
  2302. MOV.W &gwTimeOverflowCount, R14
  2303. MOV.W #0x1, R15
  2304. ADD.W R14, R15
  2305. MOV.W R15, &gwTimeOverflowCount
  2306. CMP.W #0xffff, R14
  2307. JNE ??PageImageEndProcess_6
  2308. ADD.B #0x1, &gucTimeOverflowCount
  2309. MOV.B #0x0, &gucFrhErrorStatus
  2310. ??PageImageEndProcess_6:
  2311. CMP.B #0x14, &gucTimeOverflowCount
  2312. JNE ??PageImageEndProcess_0
  2313. MOV.B #0x3, &gucFrhErrorStatus
  2314. MOV.B #0x0, &gucTimeOverflowCount
  2315. MOV.W #0x0, &gwTimeOverflowCount
  2316. //  695       }//while
  2317. //  696       
  2318. //  697       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  2319. ??PageImageEndProcess_5:
  2320. CMP.B #0x3, &gucFrhErrorStatus
  2321. JEQ ??PageImageEndProcess_7
  2322. //  698       
  2323. //  699       while (1)    
  2324. //  700       {
  2325. //  701        ucRxIndex1=gucUartRxCnt-3;
  2326. ??PageImageEndProcess_1:
  2327. MOV.B #0xfd, R14
  2328. ADD.B &gucUartRxCnt, R14
  2329. MOV.B R14, R11
  2330. //  702         ucRxIndex0=gucUartRxCnt-2;
  2331. MOV.B #0xfe, R14
  2332. ADD.B &gucUartRxCnt, R14
  2333. MOV.B R14, R10
  2334. //  703         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  2335. AND.W #0xff, R10
  2336. CMP.B #0xd, aucUartRxBuf(R10)
  2337. JNE ??PageImageEndProcess_8
  2338. AND.W #0xff, R11
  2339. CMP.B #0x4b, aucUartRxBuf(R11)
  2340. JEQ ??PageImageEndProcess_9
  2341. //  704           break;
  2342. //  705         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2343. //  706         RxFaxTimeOverflowErrorQuit();
  2344. ??PageImageEndProcess_8:
  2345. MOV.W &gwTimeOverflowCount, R14
  2346. MOV.W #0x1, R15
  2347. ADD.W R14, R15
  2348. MOV.W R15, &gwTimeOverflowCount
  2349. CMP.W #0xffff, R14
  2350. JNE ??PageImageEndProcess_10
  2351. ADD.B #0x1, &gucTimeOverflowCount
  2352. MOV.B #0x0, &gucFrhErrorStatus
  2353. ??PageImageEndProcess_10:
  2354. CMP.B #0x14, &gucTimeOverflowCount
  2355. JNE ??PageImageEndProcess_1
  2356. MOV.B #0x3, &gucFrhErrorStatus
  2357. MOV.B #0x0, &gucTimeOverflowCount
  2358. MOV.W #0x0, &gwTimeOverflowCount
  2359. //  707       }
  2360. //  708       
  2361. //  709       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007. 
  2362. ??PageImageEndProcess_9:
  2363. CMP.B #0x3, &gucFrhErrorStatus
  2364. JEQ ??PageImageEndProcess_7
  2365. //  710                
  2366. //  711 //FTHMCF  (message confirmation)
  2367. //  712       SendATcmdFTH();
  2368. CALL #SendATcmdFTH
  2369. //  713       while (1)    
  2370. //  714       {
  2371. //  715        ucRxIndex1=gucUartRxCnt-3;
  2372. ??PageImageEndProcess_2:
  2373. MOV.B #0xfd, R14
  2374. ADD.B &gucUartRxCnt, R14
  2375. MOV.B R14, R11
  2376. //  716         ucRxIndex0=gucUartRxCnt-2;
  2377. MOV.B #0xfe, R14
  2378. ADD.B &gucUartRxCnt, R14
  2379. MOV.B R14, R10
  2380. //  717         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x54==aucUartRxBuf[ucRxIndex1]))
  2381. AND.W #0xff, R10
  2382. CMP.B #0xd, aucUartRxBuf(R10)
  2383. JNE ??PageImageEndProcess_11
  2384. AND.W #0xff, R11
  2385. CMP.B #0x54, aucUartRxBuf(R11)
  2386. JEQ ??PageImageEndProcess_12
  2387. //  718           break;
  2388. //  719         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2389. //  720         RxFaxTimeOverflowErrorQuit();
  2390. ??PageImageEndProcess_11:
  2391. MOV.W &gwTimeOverflowCount, R14
  2392. MOV.W #0x1, R15
  2393. ADD.W R14, R15
  2394. MOV.W R15, &gwTimeOverflowCount
  2395. CMP.W #0xffff, R14
  2396. JNE ??PageImageEndProcess_13
  2397. ADD.B #0x1, &gucTimeOverflowCount
  2398. MOV.B #0x0, &gucFrhErrorStatus
  2399. ??PageImageEndProcess_13:
  2400. CMP.B #0x14, &gucTimeOverflowCount
  2401. JNE ??PageImageEndProcess_2
  2402. MOV.B #0x3, &gucFrhErrorStatus
  2403. MOV.B #0x0, &gucTimeOverflowCount
  2404. MOV.W #0x0, &gwTimeOverflowCount
  2405. //  721       }
  2406. //  722       
  2407. //  723       if (gucFrhErrorStatus == 0x03) return; //add at Mar. 16, 2007.
  2408. ??PageImageEndProcess_12:
  2409. CMP.B #0x3, &gucFrhErrorStatus
  2410. JEQ ??PageImageEndProcess_7
  2411. //  724       
  2412. //  725       Delay1500ms();  // delay 1.5S minimun 1 second
  2413. CALL #Delay1500ms
  2414. //  726       SendATdataFTHMCF();
  2415. CALL #SendATdataFTHMCF
  2416. //  727       while (1)    
  2417. //  728       {
  2418. //  729        ucRxIndex1=gucUartRxCnt-3;
  2419. ??PageImageEndProcess_3:
  2420. MOV.B #0xfd, R14
  2421. ADD.B &gucUartRxCnt, R14
  2422. MOV.B R14, R11
  2423. //  730         ucRxIndex0=gucUartRxCnt-2;
  2424. MOV.B #0xfe, R14
  2425. ADD.B &gucUartRxCnt, R14
  2426. MOV.B R14, R10
  2427. //  731         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1]))
  2428. AND.W #0xff, R10
  2429. CMP.B #0xd, aucUartRxBuf(R10)
  2430. JNE ??PageImageEndProcess_14
  2431. AND.W #0xff, R11
  2432. CMP.B #0x4b, aucUartRxBuf(R11)
  2433. JEQ ??PageImageEndProcess_7
  2434. //  732           break;
  2435. //  733         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2436. //  734         RxFaxTimeOverflowErrorQuit();
  2437. ??PageImageEndProcess_14:
  2438. MOV.W &gwTimeOverflowCount, R14
  2439. MOV.W #0x1, R15
  2440. ADD.W R14, R15
  2441. MOV.W R15, &gwTimeOverflowCount
  2442. CMP.W #0xffff, R14
  2443. JNE ??PageImageEndProcess_15
  2444. ADD.B #0x1, &gucTimeOverflowCount
  2445. MOV.B #0x0, &gucFrhErrorStatus
  2446. ??PageImageEndProcess_15:
  2447. CMP.B #0x14, &gucTimeOverflowCount
  2448. JNE ??PageImageEndProcess_3
  2449. MOV.B #0x3, &gucFrhErrorStatus
  2450. MOV.B #0x0, &gucTimeOverflowCount
  2451. MOV.W #0x0, &gwTimeOverflowCount
  2452. ??PageImageEndProcess_7:
  2453. POP.W R11
  2454.         CFI R11 SameValue
  2455.         CFI CFA SP+4
  2456. POP.W R10
  2457.         CFI R10 SameValue
  2458.         CFI CFA SP+2
  2459. RET
  2460.         CFI EndBlock cfiBlock2
  2461. //  735       } 
  2462. //  736       
  2463. //  737       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  2464. //  738 }
  2465. //  739 
  2466. //  740 
  2467.         RSEG CODE:CODE:SORT:NOROOT(1)
  2468. //  741 void FRHDncProcess(void)
  2469. FRHDncProcess:
  2470.         CFI Block cfiBlock3 Using cfiCommon0
  2471.         CFI Function FRHDncProcess
  2472. //  742 {
  2473. //  743  ;
  2474. //  744 }
  2475. RET
  2476.         CFI EndBlock cfiBlock3
  2477. //  745 
  2478.         RSEG CODE:CODE:NOROOT(1)
  2479. //  746 void FthCsiDis(void)
  2480. FthCsiDis:
  2481.         CFI Block cfiBlock4 Using cfiCommon0
  2482.         CFI Function FthCsiDis
  2483. //  747 {
  2484.         FUNCALL FthCsiDis, SendATcmdFTH
  2485.         LOCFRAME CSTACK, 8, STACK
  2486.         FUNCALL FthCsiDis, Delay1500ms
  2487.         LOCFRAME CSTACK, 8, STACK
  2488.         FUNCALL FthCsiDis, SendATdataFTHCSI
  2489.         LOCFRAME CSTACK, 8, STACK
  2490.         FUNCALL FthCsiDis, ATcmdDelay
  2491.         LOCFRAME CSTACK, 8, STACK
  2492.         FUNCALL FthCsiDis, SendATdataFTHDIS
  2493.         LOCFRAME CSTACK, 8, STACK
  2494. PUSH.W R10
  2495.         CFI R10 Frame(CFA, -4)
  2496.         CFI CFA SP+4
  2497. PUSH.W R11
  2498.         CFI R11 Frame(CFA, -6)
  2499.         CFI CFA SP+6
  2500. PUSH.W R8
  2501.         CFI R8 Frame(CFA, -8)
  2502.         CFI CFA SP+8
  2503. //  748       unsigned char ucRxIndex1=0,ucRxIndex0=0,
  2504. MOV.B #0x0, R11
  2505. MOV.B #0x0, R10
  2506. //  749                     ucGeneralCount=0;
  2507. MOV.B #0x0, R8
  2508. //  750 //FTH
  2509. //  751       SendATcmdFTH();
  2510. CALL #SendATcmdFTH
  2511. //  752       while (1)  //CONNECT(54) 0D 0A
  2512. //  753       {
  2513. //  754        ucRxIndex1=gucUartRxCnt-3;
  2514. ??FthCsiDis_0:
  2515. MOV.B #0xfd, R14
  2516. ADD.B &gucUartRxCnt, R14
  2517. MOV.B R14, R11
  2518. //  755         ucRxIndex0=gucUartRxCnt-2;
  2519. MOV.B #0xfe, R14
  2520. ADD.B &gucUartRxCnt, R14
  2521. MOV.B R14, R10
  2522. //  756         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x54==aucUartRxBuf[ucRxIndex1]))
  2523. AND.W #0xff, R10
  2524. CMP.B #0xd, aucUartRxBuf(R10)
  2525. JNE ??FthCsiDis_4
  2526. AND.W #0xff, R11
  2527. CMP.B #0x54, aucUartRxBuf(R11)
  2528. JEQ ??FthCsiDis_5
  2529. //  757           break;
  2530. //  758         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2531. //  759         RxFaxTimeOverflowErrorQuit();
  2532. ??FthCsiDis_4:
  2533. MOV.W &gwTimeOverflowCount, R14
  2534. MOV.W #0x1, R15
  2535. ADD.W R14, R15
  2536. MOV.W R15, &gwTimeOverflowCount
  2537. CMP.W #0xffff, R14
  2538. JNE ??FthCsiDis_6
  2539. ADD.B #0x1, &gucTimeOverflowCount
  2540. MOV.B #0x0, &gucFrhErrorStatus
  2541. ??FthCsiDis_6:
  2542. CMP.B #0x14, &gucTimeOverflowCount
  2543. JNE ??FthCsiDis_0
  2544. MOV.B #0x3, &gucFrhErrorStatus
  2545. MOV.B #0x0, &gucTimeOverflowCount
  2546. MOV.W #0x0, &gwTimeOverflowCount
  2547. //  760 
  2548. //  761       }
  2549. //  762       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  2550. ??FthCsiDis_5:
  2551. CMP.B #0x3, &gucFrhErrorStatus
  2552. JEQ ??FthCsiDis_7
  2553. //  763       
  2554. //  764       Delay1500ms();  // delay 1.5S minimun 1 second
  2555. CALL #Delay1500ms
  2556. //  765       
  2557. //  766       SendATdataFTHCSI();    //The final bit is 0. The modem will generates CONNECT message.
  2558. CALL #SendATdataFTHCSI
  2559. //  767       while (1)  //CONNECT(54) 0D 0A
  2560. //  768       {
  2561. //  769         ucRxIndex1=gucUartRxCnt-3;
  2562. ??FthCsiDis_1:
  2563. MOV.B #0xfd, R14
  2564. ADD.B &gucUartRxCnt, R14
  2565. MOV.B R14, R11
  2566. //  770         ucRxIndex0=gucUartRxCnt-2;
  2567. MOV.B #0xfe, R14
  2568. ADD.B &gucUartRxCnt, R14
  2569. MOV.B R14, R10
  2570. //  771         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x54==aucUartRxBuf[ucRxIndex1]))
  2571. AND.W #0xff, R10
  2572. CMP.B #0xd, aucUartRxBuf(R10)
  2573. JNE ??FthCsiDis_8
  2574. AND.W #0xff, R11
  2575. CMP.B #0x54, aucUartRxBuf(R11)
  2576. JEQ ??FthCsiDis_9
  2577. //  772           break;
  2578. //  773         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2579. //  774         RxFaxTimeOverflowErrorQuit();
  2580. ??FthCsiDis_8:
  2581. MOV.W &gwTimeOverflowCount, R14
  2582. MOV.W #0x1, R15
  2583. ADD.W R14, R15
  2584. MOV.W R15, &gwTimeOverflowCount
  2585. CMP.W #0xffff, R14
  2586. JNE ??FthCsiDis_10
  2587. ADD.B #0x1, &gucTimeOverflowCount
  2588. MOV.B #0x0, &gucFrhErrorStatus
  2589. ??FthCsiDis_10:
  2590. CMP.B #0x14, &gucTimeOverflowCount
  2591. JNE ??FthCsiDis_1
  2592. MOV.B #0x3, &gucFrhErrorStatus
  2593. MOV.B #0x0, &gucTimeOverflowCount
  2594. MOV.W #0x0, &gwTimeOverflowCount
  2595. //  775       }
  2596. //  776       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  2597. ??FthCsiDis_9:
  2598. CMP.B #0x3, &gucFrhErrorStatus
  2599. JEQ ??FthCsiDis_7
  2600. //  777       
  2601. //  778       for (ucGeneralCount=0; ucGeneralCount<50; ucGeneralCount++)// delay 1.5S minimun 1 second
  2602. MOV.B #0x0, R8
  2603. ??FthCsiDis_2:
  2604. CMP.B #0x32, R8
  2605. JC ??FthCsiDis_11
  2606. //  779       {
  2607. //  780          ATcmdDelay();  //50ms
  2608. CALL #ATcmdDelay
  2609. //  781       }
  2610. ADD.B #0x1, R8
  2611. JMP ??FthCsiDis_2
  2612. //  782 
  2613. //  783       SendATdataFTHDIS();//SendATdataFTHTSI(sizeof (FTHDIS)); a bug of Sep.18
  2614. ??FthCsiDis_11:
  2615. CALL #SendATdataFTHDIS
  2616. //  784       
  2617. //  785       while (1)    //O K 0D 0A
  2618. //  786       {
  2619. //  787         ucRxIndex1=gucUartRxCnt-3;
  2620. ??FthCsiDis_3:
  2621. MOV.B #0xfd, R14
  2622. ADD.B &gucUartRxCnt, R14
  2623. MOV.B R14, R11
  2624. //  788         ucRxIndex0=gucUartRxCnt-2;
  2625. MOV.B #0xfe, R14
  2626. ADD.B &gucUartRxCnt, R14
  2627. MOV.B R14, R10
  2628. //  789         if ((0x0d==aucUartRxBuf[ucRxIndex0])&&(0x4B==aucUartRxBuf[ucRxIndex1])) //K ==0x4b
  2629. AND.W #0xff, R10
  2630. CMP.B #0xd, aucUartRxBuf(R10)
  2631. JNE ??FthCsiDis_12
  2632. AND.W #0xff, R11
  2633. CMP.B #0x4b, aucUartRxBuf(R11)
  2634. JEQ ??FthCsiDis_7
  2635. //  790           break;
  2636. //  791         //if check time>min. 5S, Receive Fax error, progra should be quit  
  2637. //  792         RxFaxTimeOverflowErrorQuit();
  2638. ??FthCsiDis_12:
  2639. MOV.W &gwTimeOverflowCount, R14
  2640. MOV.W #0x1, R15
  2641. ADD.W R14, R15
  2642. MOV.W R15, &gwTimeOverflowCount
  2643. CMP.W #0xffff, R14
  2644. JNE ??FthCsiDis_13
  2645. ADD.B #0x1, &gucTimeOverflowCount
  2646. MOV.B #0x0, &gucFrhErrorStatus
  2647. ??FthCsiDis_13:
  2648. CMP.B #0x14, &gucTimeOverflowCount
  2649. JNE ??FthCsiDis_3
  2650. MOV.B #0x3, &gucFrhErrorStatus
  2651. MOV.B #0x0, &gucTimeOverflowCount
  2652. MOV.W #0x0, &gwTimeOverflowCount
  2653. ??FthCsiDis_7:
  2654. POP.W R8
  2655.         CFI R8 SameValue
  2656.         CFI CFA SP+6
  2657. POP.W R11
  2658.         CFI R11 SameValue
  2659.         CFI CFA SP+4
  2660. POP.W R10
  2661.         CFI R10 SameValue
  2662.         CFI CFA SP+2
  2663. RET
  2664.         CFI EndBlock cfiBlock4
  2665. //  793       }
  2666. //  794       
  2667. //  795       if (gucFrhErrorStatus==0x03) return; //add at Mar. 16, 2007.
  2668. //  796 } 
  2669.         RSEG CODE:CODE:NOROOT(1)
  2670. ?setjmp_save_r4:
  2671. REQUIRE ?setjmp_r4
  2672. REQUIRE ?longjmp_r4
  2673.         RSEG CODE:CODE:NOROOT(1)
  2674. ?setjmp_save_r5:
  2675. REQUIRE ?setjmp_r5
  2676. REQUIRE ?longjmp_r5
  2677.         END
  2678. // 
  2679. // 4 226 bytes in segment CODE
  2680. //     3 bytes in segment DATA16_AN
  2681. // 
  2682. // 4 226 bytes of CODE memory
  2683. //     0 bytes of DATA memory (+ 3 bytes shared)
  2684. //
  2685. //Errors: none
  2686. //Warnings: none