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 + -
显示快捷键?