enhanced_unicode.lst

来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 826 行 · 第 1/3 页

LST
826
字号
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       18/Nov/107  14:28:12 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d913f\ap\common\enhanced_unicode.c        #
#       List file     =  d:\case_i_d913f\ap\ap_music\list\enhanced_unicode.lst#
#       Object file   =  d:\case_i_d913f\ap\ap_music\obj\enhanced_unicode.r01#
#       ASM file      =  d:\case_i_d913f\ap\ap_music\list\enhanced_unicode.s01#
#       Command line  =  -v0 -mb -OD:\case_i_d913f\ap\ap_music\Obj\ -e -K    #
#                        -w -gA -z9 -RCODE -r0 -DNAPDEBUG                    #
#                        -LD:\case_i_d913f\ap\ap_music\List\ -q -t8          #
#                        -AD:\case_i_d913f\ap\ap_music\List\                 #
#                        -ND:\case_i_d913f\ap\ap_music\List\ -X              #
#                        -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\         #
#                        D:\CASE_I_D913F\AP\COMMON\enhanced_unicode.c        #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    enhanced_unicode(17)
   \   0000                    RSEG    MO_EH_UNI(0)
   \   0000                    RSEG    MOC_EH_UNI(0)
   \   0000                    PUBLIC  OneUniToChar
   \   0000                    EXTERN  SD_FClose
   \   0000                    EXTERN  SD_FOpen
   \   0000                    EXTERN  SD_FRead
   \   0000                    EXTERN  SD_FSeek
   \   0000                    PUBLIC  ftbl_B5
   \   0000                    PUBLIC  ftbl_BC
   \   0000                    PUBLIC  ftbl_GB
   \   0000                    PUBLIC  ftbl_JP
   \   0000                    PUBLIC  ftbl_KR
   \   0000                    PUBLIC  ftbl_LA
   \   0000                    PUBLIC  ftbl_RS
   \   0000                    PUBLIC  ftbl_XL
   \   0000                    PUBLIC  unitochar
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?SS_CMP_L02
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_LEAVE_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?ENT_AUTO_DIRECT_L09
   \   0000                    RSEG    MO_EH_UNI
   \   0000            OneUniToChar:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        enhanced module impletementation 
      5          *
      6          *        (c) Copyright, Actions Co,Ld.                             
      7          *             All Right Reserved                          
      8          *
      9          *  $Id: enhanced_unicode.c,v 1.12.8.2 2004/08/25 01:19:26 ybfu Exp $
     10          *******************************************************************************
     11          */ 
     12          #pragma codeseg(MO_EH_UNI)
     13          
     14          #include "actos.h"
     15          #include "enhanced.h"
     16          #include "debug.h"
     17          
     18          #pragma memory=constseg(MOC_EH_UNI)
     19              const char ftbl_GB[]="FTBL_GB.$$$";
     20              const char ftbl_B5[]="FTBL_B5.$$$";
     21              const char ftbl_JP[]="FTBL_JP.$$$";
     22              const char ftbl_KR[]="FTBL_KR.$$$";
     23              const char ftbl_RS[]="U1251.BIN";
     24              const char ftbl_BC[]="U1250.BIN";
     25              const char ftbl_LA[]="U1252.BIN";
     26              const char ftbl_XL[]="U1255.BIN";
     27          #pragma memory=default
     28          
     29          /*
     30          ********************************************************************************
     31          *             
     32          *
     33          * Description :
     34          *
     35          * Arguments   : inchar 输入的字符串首址   codeoffsetaddr 对照表中的首址
     36          *
     37          * Returns     : outchar 输出的字符串首址 
     38          *                       返回输出中的有效字节数,为0表示没字符输出
     39          *
     40          * Notes       :
     41          *
     42          ********************************************************************************
     43          */
     44          WORD OneUniToChar(WORD unicode, const SD_FILE *fp, char mode)
     45          {
   \   0000  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0003  FAFF              DEFW    -6
   \   0005  FDE5              PUSH    IY
     46              WORD code,codeCk;
     47              ulong unicode1;
     48              int i;
     49              
     50              unicode1=((ulong)unicode)*2;
   \   0007  DD6E02            LD      L,(IX+2)
   \   000A  DD6603            LD      H,(IX+3)
   \   000D  010000            LD      BC,0
   \   0010  29                ADD     HL,HL
   \   0011  CB11              RL      C
   \   0013  CB10              RL      B
   \   0015  DD75FC            LD      (IX-4),L
   \   0018  DD74FD            LD      (IX-3),H
   \   001B  DD71FE            LD      (IX-2),C
   \   001E  DD70FF            LD      (IX-1),B
     51              if(unicode>127)
   \   0021  DD4E02            LD      C,(IX+2)
   \   0024  DD4603            LD      B,(IX+3)
   \   0027  217F00            LD      HL,127
   \   002A  A7                AND     A
   \   002B  ED42              SBC     HL,BC
   \   002D  D2C500            JP      NC,?0001
   \   0030            ?0000:
     52              {
     53                  if(mode==CP_XBL)
   \   0030  DD7E0A            LD      A,(IX+10)
   \   0033  FE0F              CP      15
   \   0035  2054              JR      NZ,?0003
   \   0037            ?0002:
     54                  {
     55                          codeCk=0x0000;
     56                          //unicode1=((ulong)codeCk)*2;
     57                          for(i=0;i<128;i++)
   \   0037  110000            LD      DE,0
   \   003A  FD210000          LD      IY,0
   \   003E            ?0005:
   \   003E  018080            LD      BC,32896
   \   0041  FDE5              PUSH    IY
   \   0043  E1                POP     HL
   \   0044  78                LD      A,B
   \   0045  AC                XOR     H
   \   0046  67                LD      H,A
   \   0047  ED42              SBC     HL,BC
   \   0049  305E              JR      NC,?0084
   \   004B            ?0006:
     58                          {
     59                             if(!SD_FSeek(fp,SEEK_SET,codeCk*2))
   \   004B  D5                PUSH    DE
   \   004C  EB                EX      DE,HL
   \   004D  29                ADD     HL,HL
   \   004E  010000            LD      BC,0
   \   0051  C5                PUSH    BC
   \   0052  E5                PUSH    HL
   \   0053  DD5E04            LD      E,(IX+4)
   \   0056  DD5605            LD      D,(IX+5)
   \   0059  CD0000            CALL    LWRD SD_FSeek
   \   005C  E1                POP     HL
   \   005D  E1                POP     HL
   \   005E  B7                OR      A
   \   005F  D1                POP     DE
   \   0060  2847              JR      Z,?0084
   \   0062            ?0008:
     60                                return 0x20;
   \   0062            ?0009:
     61                             SD_FRead(fp,&code,2);
   \   0062  D5                PUSH    DE
   \   0063  210200            LD      HL,2
   \   0066  E5                PUSH    HL
   \   0067  2E06              LD      L,6
   \   0069  39                ADD     HL,SP
   \   006A  CDD000            CALL    LWRD ?0106
   \   006D  F1                POP     AF
   \   006E  D1                POP     DE
     62                             if(code==unicode)
   \   006F  DD6E02            LD      L,(IX+2)
   \   0072  DD6603            LD      H,(IX+3)
   \   0075  DD4EFA            LD      C,(IX-6)
   \   0078  DD46FB            LD      B,(IX-5)
   \   007B  A7                AND     A
   \   007C  ED42              SBC     HL,BC
   \   007E  2006              JR      NZ,?0011
   \   0080            ?0010:
     63                                return codeCk+0x0080;
   \   0080  218000            LD      HL,128
   \   0083  19                ADD     HL,DE
   \   0084  1845              JR      ?0017
   \   0086            ?0011:
     64                             codeCk++;
   \   0086  13                INC     DE
   \   0087  FD23              INC     IY
   \   0089  18B3              JR      ?0005
   \   008B            ?0004:
     65                          }
     66                          return 0x20;
     67                  }
   \   008B            ?0003:
     68                  else
     69                  {
     70                          if(!SD_FSeek(fp,SEEK_SET,unicode1))
   \   008B  DD6EFE            LD      L,(IX-2)
   \   008E  DD66FF            LD      H,(IX-1)
   \   0091  E5                PUSH    HL
   \   0092  DD6EFC            LD      L,(IX-4)
   \   0095  DD66FD            LD      H,(IX-3)
   \   0098  E5                PUSH    HL
   \   0099  0E00              LD      C,0
   \   009B  DD5E04            LD      E,(IX+4)
   \   009E  DD5605            LD      D,(IX+5)
   \   00A1  CD0000            CALL    LWRD SD_FSeek
   \   00A4  E1                POP     HL
   \   00A5  E1                POP     HL
   \   00A6  B7                OR      A
   \   00A7  2005              JR      NZ,?0013
   \   00A9            ?0012:
     71                              return 0x20;
   \   00A9            ?0084:
   \   00A9  212000            LD      HL,32
   \   00AC  181D              JR      ?0017
   \   00AE            ?0013:
     72                          if(SD_FRead(fp,&code,2))
   \   00AE  210200            LD      HL,2
   \   00B1  E5                PUSH    HL
   \   00B2  23                INC     HL
   \   00B3  23                INC     HL
   \   00B4  39                ADD     HL,SP
   \   00B5  CDD000            CALL    LWRD ?0106
   \   00B8  F1                POP     AF
   \   00B9  7D                LD      A,L
   \   00BA  B4                OR      H
   \   00BB  280C              JR      Z,?0016
   \   00BD            ?0014:
     73                              return code;
   \   00BD  DD6EFA            LD      L,(IX-6)
   \   00C0  DD66FB            LD      H,(IX-5)
     74                  }
   \   00C3  1806              JR      ?0017
   \   00C5            ?0015:
     75              }
     76              else     //是ASCII
   \   00C5            ?0001:
     77              {
     78                  return unicode;
   \   00C5  69                LD      L,C
   \   00C6  60                LD      H,B
     79              }
   \   00C7  1802              JR      ?0017
   \   00C9            ?0016:
     80              return 0;
   \   00C9  6F                LD      L,A
   \   00CA  67                LD      H,A
     81          }
   \   00CB            ?0017:
   \   00CB  FDE1              POP     IY
   \   00CD  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   00D0            ?0106:
   \   00D0  4D                LD      C,L
   \   00D1  44                LD      B,H
   \   00D2  DD5E04            LD      E,(IX+4)
   \   00D5  DD5605            LD      D,(IX+5)
   \   00D8  C30000            JP      LWRD SD_FRead
   \   00DB            unitochar:
     82          
     83          
     84          /*
     85          ********************************************************************************
     86          *             
     87          *
     88          * Description :
     89          *
     90          * Arguments   :
     91          *
     92          * Returns     :
     93          *
     94          * Notes       :
     95          *
     96          ********************************************************************************
     97          */
     98          bool unitochar(char *str,int len,unsigned char encode)
     99          {

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?