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

传真(Fax)编程

开发平台:

C/C++

  1.         NAME FaxData2pc
  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 ReadLast16BytesFromFlashMemoryArea
  10.         FUNCTION ReadLast16BytesFromFlashMemoryArea,0202H
  11.         EXTERN gwPageAddress
  12.         EXTERN CalNextPageAddress
  13.         FUNCTION CalNextPageAddress,0202H
  14.         EXTERN ROW_ADDRESS_LOW
  15.         EXTERN ROW_ADDRESS_HIGH
  16.         EXTERN COLUMN_ADDRESS_HIGH
  17.         EXTERN READ_256_BYTE
  18.         FUNCTION READ_256_BYTE,0202H
  19.         EXTERN aucUartRxBuf
  20.         EXTERN SoftUartTxOneFrame
  21.         FUNCTION SoftUartTxOneFrame,0202H
  22.         EXTERN ATcmdDelay
  23.         FUNCTION ATcmdDelay,0202H
  24.         EXTERN gwGeneralPageAddress
  25.         EXTERN ?ShiftRight16u_6
  26.         EXTERN ?ShiftLeft16_6
  27.         EXTERN ERASE_ONE_BLOCK
  28.         FUNCTION ERASE_ONE_BLOCK,0202H
  29.         EXTERN gwColumnAddress
  30.         EXTERN Write16Bytes2FlashMemoryArea
  31.         FUNCTION Write16Bytes2FlashMemoryArea,0202H
  32.         EXTERN ?longjmp_r4
  33.         EXTERN ?longjmp_r5
  34.         EXTERN ?setjmp_r4
  35.         EXTERN ?setjmp_r5
  36.         PUBWEAK ?setjmp_save_r4
  37.         PUBWEAK ?setjmp_save_r5
  38.         PUBLIC FaxData2PCFromSoftUart
  39.         FUNCTION FaxData2PCFromSoftUart,021203H
  40.         LOCFRAME CSTACK, 20, STACK
  41.         PUBWEAK P6OUT
  42.         
  43.         CFI Names cfiNames0
  44.         CFI StackFrame CFA SP DATA
  45.         CFI Resource PC:16, SP:16, SR:16, R4:16, R5:16, R6:16, R7:16, R8:16
  46.         CFI Resource R9:16, R10:16, R11:16, R12:16, R13:16, R14:16, R15:16
  47.         CFI EndNames cfiNames0
  48.         
  49.         CFI Common cfiCommon0 Using cfiNames0
  50.         CFI CodeAlign 2
  51.         CFI DataAlign 2
  52.         CFI ReturnAddress PC CODE
  53.         CFI CFA SP+2
  54.         CFI PC Frame(CFA, -2)
  55.         CFI SR Undefined
  56.         CFI R4 SameValue
  57.         CFI R5 SameValue
  58.         CFI R6 SameValue
  59.         CFI R7 SameValue
  60.         CFI R8 SameValue
  61.         CFI R9 SameValue
  62.         CFI R10 SameValue
  63.         CFI R11 SameValue
  64.         CFI R12 Undefined
  65.         CFI R13 Undefined
  66.         CFI R14 Undefined
  67.         CFI R15 Undefined
  68.         CFI EndCommon cfiCommon0
  69.         
  70. // E:projectFaxProgramVson_Bryan_Fax_Conexant_070423filesFaxData2pc.c
  71. //    1 /************************************************
  72. //    2 Description: 
  73. //    3       Send the received fax raw data to PC via MAX232
  74. //    4       3G 2-dimensional Data Format Recommendation T.4
  75. //    5 Input:
  76. //    6       none
  77. //    7 Output:
  78. //    8       none
  79. //    9 Update:
  80. //   10       2006.11.02  Bryan      function header     create
  81. //   11 ************************************************/
  82. //   12 
  83. //   13 #include "includeH.h"
  84.         ASEGN DATA16_AN:DATA:NOROOT,035H
  85. // unsigned char volatile __data P6OUT
  86. P6OUT:
  87.         DS8 1
  88. //   14 
  89.         RSEG CODE:CODE:NOROOT(1)
  90. //   15 void  FaxData2PCFromSoftUart(void) // send the received fax data to PC via MAX232
  91. FaxData2PCFromSoftUart:
  92.         CFI Block cfiBlock0 Using cfiCommon0
  93.         CFI Function FaxData2PCFromSoftUart
  94. //   16 {     
  95.         FUNCALL FaxData2PCFromSoftUart, ReadLast16BytesFromFlashMemoryArea
  96.         LOCFRAME CSTACK, 20, STACK
  97.         FUNCALL FaxData2PCFromSoftUart, ReadLast16BytesFromFlashMemoryArea
  98.         LOCFRAME CSTACK, 20, STACK
  99.         FUNCALL FaxData2PCFromSoftUart, CalNextPageAddress
  100.         LOCFRAME CSTACK, 20, STACK
  101.         FUNCALL FaxData2PCFromSoftUart, READ_256_BYTE
  102.         LOCFRAME CSTACK, 20, STACK
  103.         FUNCALL FaxData2PCFromSoftUart, SoftUartTxOneFrame
  104.         LOCFRAME CSTACK, 20, STACK
  105.         FUNCALL FaxData2PCFromSoftUart, ATcmdDelay
  106.         LOCFRAME CSTACK, 20, STACK
  107.         FUNCALL FaxData2PCFromSoftUart, ERASE_ONE_BLOCK
  108.         LOCFRAME CSTACK, 20, STACK
  109.         FUNCALL FaxData2PCFromSoftUart, Write16Bytes2FlashMemoryArea
  110.         LOCFRAME CSTACK, 20, STACK
  111.         FUNCALL FaxData2PCFromSoftUart, CalNextPageAddress
  112.         LOCFRAME CSTACK, 20, STACK
  113.         FUNCALL FaxData2PCFromSoftUart, CalNextPageAddress
  114.         LOCFRAME CSTACK, 20, STACK
  115. PUSH.W R10
  116.         CFI R10 Frame(CFA, -4)
  117.         CFI CFA SP+4
  118. PUSH.W R11
  119.         CFI R11 Frame(CFA, -6)
  120.         CFI CFA SP+6
  121. PUSH.W R8
  122.         CFI R8 Frame(CFA, -8)
  123.         CFI CFA SP+8
  124. PUSH.W R9
  125.         CFI R9 Frame(CFA, -10)
  126.         CFI CFA SP+10
  127. PUSH.W R6
  128.         CFI R6 Frame(CFA, -12)
  129.         CFI CFA SP+12
  130. PUSH.W R7
  131.         CFI R7 Frame(CFA, -14)
  132.         CFI CFA SP+14
  133. PUSH.W R4
  134.         CFI R4 Frame(CFA, -16)
  135.         CFI CFA SP+16
  136. PUSH.W R5
  137.         CFI R5 Frame(CFA, -18)
  138.         CFI CFA SP+18
  139. SUB.W #0x2, SP
  140.         CFI CFA SP+20
  141. //   17       unsigned char ucFlashColumnAddCnt=0,
  142. MOV.B #0x0, R7
  143. //   18                     ucRxIndex=0,ucBlockCnt=0;
  144. MOV.B #0x0, R10
  145. MOV.B #0x0, R11
  146. //   19       unsigned char ucGeneralCnt=0;
  147. MOV.B #0x0, R4
  148. //   20       unsigned int wNewFaxHead=0, wNewFaxRear=0,
  149. MOV.W #0x0, 0x0(SP)
  150. MOV.W #0x0, R5
  151. //   21                    wNextPageAddress=0,wPageAddress=0,
  152. MOV.W #0x0, R8
  153. MOV.W #0x0, R9
  154. //   22                    wGeneralCnt=0;
  155. MOV.W #0x0, R6
  156. //   23       //ucGeneralCnt=2;
  157. //   24       //ZERO_ADDRESS();
  158. //   25       //read rear pointer and read front pointer
  159. //   26       //if RearAddress-FrontAddress!=0
  160. //   27       //   transfer and front++
  161. //   28       //else
  162. //   29       //   transfer over
  163. //   30       MODEM_BUS_CON_PORT |= SOFT_UART_2_PC;
  164. BIS.B #0x10, &0x35
  165. //   31       ReadLastFaxRearPointer();//get gwRearPointerAddress and gwPageAddress
  166. MOV.B #0x12, R14
  167. MOV.B #0xf, R12
  168. CALL #ReadLast16BytesFromFlashMemoryArea
  169. //   32       //ReadLast16BytesFromFlashMemoryArea(cstFaxRearPointerTableStartBlockNum,cstFaxRearPointerTableOverBlockNum);
  170. //   33       wNewFaxRear=gwPageAddress;
  171. MOV.W &gwPageAddress, R5
  172. //   34       ReadLastFaxFrontPointer();//get gwFrontPointerAddress, gwPageAddress, 
  173. MOV.B #0xe, R14
  174. MOV.B #0xb, R12
  175. CALL #ReadLast16BytesFromFlashMemoryArea
  176. //   35                                 //gwFrontPointerAddress and gwColumnAddress
  177. //   36       gwPageAddress++;           //add Dec.19, 2006
  178. ADD.W #0x1, &gwPageAddress
  179. //   37       do{
  180. //   38     wNextPageAddress=gwPageAddress+64;
  181. ??FaxData2PCFromSoftUart_0:
  182. MOV.W #0x40, R14
  183. ADD.W &gwPageAddress, R14
  184. MOV.W R14, R8
  185. //   39     wPageAddress=CalNextPageAddress(wPageAddress);
  186. MOV.W R9, R12
  187. CALL #CalNextPageAddress
  188. MOV.W R12, R9
  189. //   40  }while(wNextPageAddress==wPageAddress);
  190. CMP.W R9, R8
  191. JEQ ??FaxData2PCFromSoftUart_0
  192. //   41       wNewFaxHead=gwPageAddress;
  193. MOV.W &gwPageAddress, 0x0(SP)
  194. //   42       if (wNewFaxHead<wNewFaxRear)//(wNewFaxHead!=wNewFaxRear)//modify Dec.20,2006
  195. CMP.W R5, 0x0(SP)
  196. JC ??FaxData2PCFromSoftUart_8
  197. //   43       {
  198. //   44          
  199. //   45       for (wPageAddress=wNewFaxHead;wPageAddress<=wNewFaxRear;)//wNewFaxHead
  200. MOV.W 0x0(SP), R9
  201. ??FaxData2PCFromSoftUart_6:
  202. CMP.W R9, R5
  203. JNC ??FaxData2PCFromSoftUart_8
  204. //   46       {
  205. //   47         
  206. //   48         ROW_ADDRESS_LOW = wPageAddress & 0xff;
  207. MOV.B R9, &ROW_ADDRESS_LOW
  208. //   49         ROW_ADDRESS_HIGH = (wPageAddress>>8) & 0xff;
  209. MOV.W R9, R14
  210. SWPB R14
  211. AND.W #0xff, R14
  212. MOV.B R14, &ROW_ADDRESS_HIGH
  213. //   50         for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)//8*256=2048
  214. MOV.B #0x0, R7
  215. ??FaxData2PCFromSoftUart_2:
  216. CMP.B #0x8, R7
  217. JC ??FaxData2PCFromSoftUart_9
  218. //   51         {
  219. //   52      //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
  220. //   53             //total 8*256B+64B=2K+64B
  221. //   54      COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
  222. MOV.B R7, &COLUMN_ADDRESS_HIGH
  223. //   55      READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
  224. CALL #READ_256_BYTE
  225. //   56      for (wGeneralCnt=0;wGeneralCnt<256;wGeneralCnt++)//
  226. MOV.W #0x0, R6
  227. ??FaxData2PCFromSoftUart_1:
  228. CMP.W #0x100, R6
  229. JC ??FaxData2PCFromSoftUart_10
  230. //   57      {
  231. //   58  SoftUartTxOneFrame(aucUartRxBuf[wGeneralCnt]);
  232. MOV.B aucUartRxBuf(R6), R12
  233. CALL #SoftUartTxOneFrame
  234. //   59  if (aucUartRxBuf[wGeneralCnt-1] == 0xfb && aucUartRxBuf[wGeneralCnt-2] == 0x13 && aucUartRxBuf[wGeneralCnt-3] == 0xff)
  235. MOV.W #aucUartRxBuf, R14
  236. ADD.W R6, R14
  237. CMP.B #0xfb, 0xffff(R14)
  238. JNE ??FaxData2PCFromSoftUart_11
  239. MOV.W #aucUartRxBuf, R14
  240. ADD.W R6, R14
  241. CMP.B #0x13, 0xfffe(R14)
  242. JNE ??FaxData2PCFromSoftUart_11
  243. MOV.W #aucUartRxBuf, R14
  244. ADD.W R6, R14
  245. CMP.B #0xff, 0xfffd(R14)
  246. JNE ??FaxData2PCFromSoftUart_11
  247. //   60    {_NOP();break;}             
  248. NOP
  249. JMP ??FaxData2PCFromSoftUart_10
  250. //   61      }//third for
  251. ??FaxData2PCFromSoftUart_11:
  252. ADD.W #0x1, R6
  253. JMP ??FaxData2PCFromSoftUart_1
  254. //   62      if (aucUartRxBuf[wGeneralCnt-1] == 0xfb && aucUartRxBuf[wGeneralCnt-2] == 0x13 && aucUartRxBuf[wGeneralCnt-3] == 0xff)
  255. ??FaxData2PCFromSoftUart_10:
  256. MOV.W #aucUartRxBuf, R14
  257. ADD.W R6, R14
  258. CMP.B #0xfb, 0xffff(R14)
  259. JNE ??FaxData2PCFromSoftUart_12
  260. MOV.W #aucUartRxBuf, R14
  261. ADD.W R6, R14
  262. CMP.B #0x13, 0xfffe(R14)
  263. JNE ??FaxData2PCFromSoftUart_12
  264. MOV.W #aucUartRxBuf, R14
  265. ADD.W R6, R14
  266. CMP.B #0xff, 0xfffd(R14)
  267. JEQ ??FaxData2PCFromSoftUart_9
  268. //   63    break;        
  269. //   64         }//second for
  270. ??FaxData2PCFromSoftUart_12:
  271. ADD.B #0x1, R7
  272. JMP ??FaxData2PCFromSoftUart_2
  273. //   65         
  274. //   66        if (aucUartRxBuf[wGeneralCnt-1] == 0xfb && aucUartRxBuf[wGeneralCnt-2] == 0x13 && aucUartRxBuf[wGeneralCnt-3] == 0xff)//pageimage over
  275. ??FaxData2PCFromSoftUart_9:
  276. MOV.W #aucUartRxBuf, R14
  277. ADD.W R6, R14
  278. CMP.B #0xfb, 0xffff(R14)
  279. JNE ??FaxData2PCFromSoftUart_13
  280. MOV.W #aucUartRxBuf, R14
  281. ADD.W R6, R14
  282. CMP.B #0x13, 0xfffe(R14)
  283. JNE ??FaxData2PCFromSoftUart_13
  284. MOV.W #aucUartRxBuf, R14
  285. ADD.W R6, R14
  286. CMP.B #0xff, 0xfffd(R14)
  287. JNE ??FaxData2PCFromSoftUart_13
  288. //   67           {                                                 
  289. //   68             ATcmdDelay();// a bug of Dec.23,2006 FF 10 00 0E // receive data delay(if not, can't receive 0x10 0x03)
  290. CALL #ATcmdDelay
  291. //   69             if ((gwGeneralPageAddress>>6) >=cstFaxFrontPointerTableOverBlockNum)
  292. MOV.W &gwGeneralPageAddress, R12
  293. CALL #?ShiftRight16u_6
  294. CMP.W #0xe, R12
  295. JNC ??FaxData2PCFromSoftUart_14
  296. //   70            {
  297. //   71             for (ucBlockCnt=0;ucBlockCnt<4;ucBlockCnt++)
  298. MOV.B #0x0, R11
  299. ??FaxData2PCFromSoftUart_3:
  300. CMP.B #0x4, R11
  301. JC ??FaxData2PCFromSoftUart_15
  302. //   72             {
  303. //   73                  wPageAddress=(cstFaxFrontPointerTableStartBlockNum+ucBlockCnt)<<6;
  304. MOV.B R11, R12
  305. AND.W #0xff, R12
  306. ADD.W #0xb, R12
  307. CALL #?ShiftLeft16_6
  308. MOV.W R12, R9
  309. //   74            ROW_ADDRESS_LOW=wPageAddress & 0XFF;
  310. MOV.B R9, &ROW_ADDRESS_LOW
  311. //   75            ROW_ADDRESS_HIGH=(wPageAddress>>8) & 0XFF; 
  312. MOV.W R9, R14
  313. SWPB R14
  314. AND.W #0xff, R14
  315. MOV.B R14, &ROW_ADDRESS_HIGH
  316. //   76            ERASE_ONE_BLOCK();
  317. CALL #ERASE_ONE_BLOCK
  318. //   77             }
  319. ADD.B #0x1, R11
  320. JMP ??FaxData2PCFromSoftUart_3
  321. //   78             gwGeneralPageAddress=cstFaxFrontPointerTableStartPage;
  322. ??FaxData2PCFromSoftUart_15:
  323. MOV.W #0x2c0, &gwGeneralPageAddress
  324. //   79             gwColumnAddress=0;
  325. MOV.W #0x0, &gwColumnAddress
  326. //   80            }
  327. //   81            
  328. //   82             
  329. //   83                 
  330. //   84             ucRxIndex=0; //write Fax Rear Pointer
  331. ??FaxData2PCFromSoftUart_14:
  332. MOV.B #0x0, R10
  333. //   85             aucUartRxBuf[ucRxIndex++]=wPageAddress & 0xff;
  334. MOV.B R10, R14
  335. AND.W #0xff, R14
  336. MOV.B R9, aucUartRxBuf(R14)
  337. ADD.B #0x1, R10
  338. //   86             aucUartRxBuf[ucRxIndex++]=(wPageAddress>>8) & 0xff;
  339. MOV.B R10, R15
  340. AND.W #0xff, R15
  341. MOV.W R9, R14
  342. SWPB R14
  343. AND.W #0xff, R14
  344. MOV.B R14, aucUartRxBuf(R15)
  345. ADD.B #0x1, R10
  346. //   87             for(ucGeneralCnt=0;ucGeneralCnt<14;ucGeneralCnt++)
  347. MOV.B #0x0, R4
  348. ??FaxData2PCFromSoftUart_4:
  349. CMP.B #0xe, R4
  350. JC ??FaxData2PCFromSoftUart_16
  351. //   88             {
  352. //   89               aucUartRxBuf[ucRxIndex++] = 0x55;
  353. MOV.B R10, R14
  354. AND.W #0xff, R14
  355. MOV.B #0x55, aucUartRxBuf(R14)
  356. ADD.B #0x1, R10
  357. //   90             }
  358. ADD.B #0x1, R4
  359. JMP ??FaxData2PCFromSoftUart_4
  360. //   91             Write16Bytes2FlashMemoryArea();
  361. ??FaxData2PCFromSoftUart_16:
  362. CALL #Write16Bytes2FlashMemoryArea
  363. //   92             if (gwColumnAddress<2096)
  364. CMP.W #0x830, &gwColumnAddress
  365. JC ??FaxData2PCFromSoftUart_17
  366. //   93             {
  367. //   94             if (gwColumnAddress<2048)
  368. CMP.W #0x800, &gwColumnAddress
  369. JC ??FaxData2PCFromSoftUart_18
  370. //   95   gwColumnAddress+=512;
  371. ADD.W #0x200, &gwColumnAddress
  372. JMP ??FaxData2PCFromSoftUart_19
  373. //   96             else
  374. //   97   gwColumnAddress+=16;
  375. ??FaxData2PCFromSoftUart_18:
  376. ADD.W #0x10, &gwColumnAddress
  377. JMP ??FaxData2PCFromSoftUart_19
  378. //   98             }
  379. //   99             else
  380. //  100                 {
  381. //  101                  gwColumnAddress=0;
  382. ??FaxData2PCFromSoftUart_17:
  383. MOV.W #0x0, &gwColumnAddress
  384. //  102                  if (gwGeneralPageAddress<=959)gwGeneralPageAddress++;
  385. CMP.W #0x3c0, &gwGeneralPageAddress
  386. JC ??FaxData2PCFromSoftUart_20
  387. ADD.W #0x1, &gwGeneralPageAddress
  388. JMP ??FaxData2PCFromSoftUart_19
  389. //  103                  else
  390. //  104                    gwGeneralPageAddress=704;
  391. ??FaxData2PCFromSoftUart_20:
  392. MOV.W #0x2c0, &gwGeneralPageAddress
  393. //  105                 }
  394. //  106             wPageAddress++;
  395. ??FaxData2PCFromSoftUart_19:
  396. ADD.W #0x1, R9
  397. //  107             if(wPageAddress==0)
  398. CMP.W #0x0, R9
  399. JNE ??FaxData2PCFromSoftUart_5
  400. //  108                wPageAddress+=2560;//Mar. 1, 20007
  401. ADD.W #0xa00, R9
  402. //  109             do{
  403. //  110        wNextPageAddress=wPageAddress+64;
  404. ??FaxData2PCFromSoftUart_5:
  405. MOV.W #0x40, R14
  406. ADD.W R9, R14
  407. MOV.W R14, R8
  408. //  111        wPageAddress=CalNextPageAddress(wPageAddress);
  409. MOV.W R9, R12
  410. CALL #CalNextPageAddress
  411. MOV.W R12, R9
  412. //  112        }while(wNextPageAddress==wPageAddress);
  413. CMP.W R9, R8
  414. JEQ ??FaxData2PCFromSoftUart_5
  415. JMP ??FaxData2PCFromSoftUart_6
  416. //  113              //ReadLastFaxFrontPointer();//read next write fax front pointer addr    //delete at Jan. 19, 2007
  417. //  114             continue;//break; a bug of Dec. 12,2006
  418. //  115           }
  419. //  116           wPageAddress++;
  420. ??FaxData2PCFromSoftUart_13:
  421. ADD.W #0x1, R9
  422. //  117           if(wPageAddress==0)
  423. CMP.W #0x0, R9
  424. JNE ??FaxData2PCFromSoftUart_7
  425. //  118                wPageAddress+=2560;//Mar. 1, 20007
  426. ADD.W #0xa00, R9
  427. //  119             do{
  428. //  120        wNextPageAddress=wPageAddress+64;//wNextPageAddress=gwPageAddress+64;
  429. ??FaxData2PCFromSoftUart_7:
  430. MOV.W #0x40, R14
  431. ADD.W R9, R14
  432. MOV.W R14, R8
  433. //  121        wPageAddress=CalNextPageAddress(wPageAddress);
  434. MOV.W R9, R12
  435. CALL #CalNextPageAddress
  436. MOV.W R12, R9
  437. //  122        }while(wNextPageAddress==wPageAddress);             
  438. CMP.W R9, R8
  439. JEQ ??FaxData2PCFromSoftUart_7
  440. JMP ??FaxData2PCFromSoftUart_6
  441. //  123        }//third for ----> next page
  442. //  124        
  443. //  125        }//if wNewFaxHead<wNewFaxRear
  444. //  126        MODEM_BUS_CON_PORT &= ~SOFT_UART_2_PC;
  445. ??FaxData2PCFromSoftUart_8:
  446. BIC.B #0x10, &0x35
  447. //  127 }//function over  
  448. ADD.W #0x2, SP
  449.         CFI CFA SP+18
  450. BR #?Epilogue8
  451.         CFI EndBlock cfiBlock0
  452.         RSEG CODE:CODE:NOROOT(1)
  453. ?setjmp_save_r4:
  454. REQUIRE ?setjmp_r4
  455. REQUIRE ?longjmp_r4
  456.         RSEG CODE:CODE:NOROOT(1)
  457. ?setjmp_save_r5:
  458. REQUIRE ?setjmp_r5
  459. REQUIRE ?longjmp_r5
  460.         END
  461. //  128 
  462. //  129 /*
  463. //  130 void  FaxData2PCFromUart(void) // send the received fax data to PC via MAX232
  464. //  131 {     
  465. //  132       unsigned char ucFlashColumnAddCnt=0,ucRxIndex=0,
  466. //  133                     ucGeneralCnt=0;
  467. //  134       unsigned int wNewFaxHead=0, wNewFaxRear=0,
  468. //  135                    wNextPageAddress=0,wPageAddress=0;
  469. //  136       //ucGeneralCnt=2;
  470. //  137       //ZERO_ADDRESS();
  471. //  138       //read rear pointer and read front pointer
  472. //  139       //if RearAddress-FrontAddress!=0
  473. //  140       //   transfer and front++
  474. //  141       //else
  475. //  142       //   transfer over
  476. //  143       ReadLastFaxRearPointer();//get gwRearPointerAddress and gwPageAddress
  477. //  144       wNewFaxRear=gwPageAddress;
  478. //  145       ReadLastFaxFrontPointer();//get gwFrontPointerAddress, gwPageAddress, 
  479. //  146                                 //gwFrontPointerAddress and gwColumnAddress
  480. //  147       gwPageAddress++;           //add Dec.19, 2006
  481. //  148       do{
  482. //  149     wNextPageAddress=gwPageAddress+64;
  483. //  150     wPageAddress=CalNextPageAddress(wPageAddress);
  484. //  151  }while(wNextPageAddress==wPageAddress);
  485. //  152       wNewFaxHead=gwPageAddress;
  486. //  153       if (wNewFaxHead<wNewFaxRear)//(wNewFaxHead!=wNewFaxRear)//modify Dec.20,2006
  487. //  154       {
  488. //  155          
  489. //  156       for (wPageAddress=wNewFaxHead;wPageAddress<=wNewFaxRear;)//wNewFaxHead
  490. //  157       {
  491. //  158         
  492. //  159         ROW_ADDRESS_LOW = wPageAddress & 0xff;
  493. //  160         ROW_ADDRESS_HIGH = (wPageAddress>>8) & 0xff;
  494. //  161         for (ucFlashColumnAddCnt = 0;ucFlashColumnAddCnt < 8;ucFlashColumnAddCnt++)//8*256=2048
  495. //  162         {
  496. //  163          //8 * 256 == 2048 Bytes 2^4*2^8 12bit column address HighColumnAddr:0~8
  497. //  164             //total 8*256B+64B=2K+64B
  498. //  165          COLUMN_ADDRESS_HIGH=ucFlashColumnAddCnt;
  499. //  166          READ_256_BYTE();//read 256 Byte to aucUartRxBuf[256]
  500. //  167          for (ucGeneralCnt=0;ucGeneralCnt<4;ucGeneralCnt++)//16*16Bytes send 16Bytes one time
  501. //  168                                                            //modify Dec.28,2006 4*64Bytes one time
  502. //  169          {
  503. //  170              Send64BytePageImageData(64,ucGeneralCnt);
  504. //  171              while(gucTxBufCnt!=0)//send over, gucTxBufCnt == 0
  505. //  172              { 
  506. //  173                ;
  507. //  174              }
  508. //  175              //ATcmdDelay();
  509. //  176              if (gwTxNum != 64 && TXBUF0==0xfb)
  510. //  177                  break;
  511. //  178          }//third for
  512. //  179          if (gwTxNum != 64)
  513. //  180              break;
  514. //  181         }//second for
  515. //  182         
  516. //  183         if ((gwTxNum != 64) 
  517. //  184             || (aucUartTxBuf[gwTxNum-1] == 0xfb && aucUartTxBuf[gwTxNum-2] == 0x13 && aucUartTxBuf[gwTxNum-3] == 0xff)
  518. //  185             //(aucUartTxBuf[gwTxNum] == 0xfb && aucUartTxBuf[gwTxNum-1] == 0x13 && aucUartTxBuf[gwTxNum-2] == 0xff)//a bug of Jan.24, 2007 
  519. //  186             )//gwTxNum!=16, pageimage over
  520. //  187           {                                                 //(gwTxNum != 16) modify Dec.20,2006 
  521. //  188             ATcmdDelay();// a bug of Dec.23,2006 FF 10 00 0E // receive data delay(if not, can't receive 0x10 0x03)
  522. //  189             ucRxIndex=0; //write Fax Rear Pointer
  523. //  190             aucUartRxBuf[ucRxIndex++]=wPageAddress & 0xff;
  524. //  191             aucUartRxBuf[ucRxIndex++]=(wPageAddress>>8) & 0xff;
  525. //  192             aucUartRxBuf[ucRxIndex++]=0x55;
  526. //  193             aucUartRxBuf[ucRxIndex++]=0x55;
  527. //  194             WriteFaxFrontPointerTable();
  528. //  195             wPageAddress++;
  529. //  196             do{
  530. //  197        wNextPageAddress=wPageAddress+64;
  531. //  198        wPageAddress=CalNextPageAddress(wPageAddress);
  532. //  199        }while(wNextPageAddress==wPageAddress);
  533. //  200              //ReadLastFaxFrontPointer();//read next write fax front pointer addr    //delete at Jan. 19, 2007
  534. //  201             continue;//break; a bug of Dec. 12,2006
  535. //  202          }
  536. //  203           wPageAddress++;
  537. //  204             do{
  538. //  205        wNextPageAddress=wPageAddress+64;//wNextPageAddress=gwPageAddress+64;
  539. //  206        wPageAddress=CalNextPageAddress(wPageAddress);
  540. //  207        }while(wNextPageAddress==wPageAddress);             
  541. //  208        }//for ----> next page
  542. //  209        
  543. //  210        //ATcmdDelay();     // receive data delay(if not, can't receive 0x10 0x03)
  544. //  211        
  545. //  212        
  546. //  213        }//if RearPointer!=FrontPointer
  547. //  214        //gucRxTxFlag = DTETX;  // Del at Dec.25,2006
  548. //  215 }   
  549. //  216 */
  550. //  217 /*
  551. //  218 void Send64BytePageImageData(unsigned char ucTxDataNum,unsigned char ucGeneralCnt)
  552. //  219 {   
  553. //  220     unsigned char ucDataCnt = 0;
  554. //  221                               
  555. //  222     gwTxNum=ucTxDataNum;
  556. //  223     gpucTxBufPnt = 0;
  557. //  224     for(ucDataCnt=0;ucDataCnt<64;ucDataCnt++) //ready data to TxdataBuf[]
  558. //  225       {
  559. //  226         aucUartTxBuf[ucDataCnt]=aucUartRxBuf[64*ucGeneralCnt+ucDataCnt];
  560. //  227         gdwRxQueueFrontCnt++;
  561. //  228         //There is a bug. when a[255]==10 && a[0]==03 && a[1]==fb, it will be error. it should add Length Judge
  562. //  229         if (aucUartTxBuf[ucDataCnt] == 0xfb && aucUartTxBuf[ucDataCnt-1] == 0x13 && aucUartTxBuf[ucDataCnt-2] == 0xff)
  563. //  230         {
  564. //  231           gwTxNum = ucDataCnt+1;
  565. //  232           break;
  566. //  233         }       
  567. //  234       }            
  568. //  235     TXBUF0=aucUartTxBuf[0];    //start sent
  569. //  236     gucTxBufCnt=1;             //aucUartTxBuf[0] is the first byte, next TX is the second.
  570. //  237 } 
  571. //  238 */ 
  572. // 
  573. // 564 bytes in segment CODE
  574. //   1 byte  in segment DATA16_AN
  575. // 
  576. // 564 bytes of CODE memory
  577. //   0 bytes of DATA memory (+ 1 byte shared)
  578. //
  579. //Errors: none
  580. //Warnings: none