📄 sdrv_charoutrect_thai.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:30:46 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = large #
# Source file = d:\case_i_d913f\drv\ui_ssd1332\sdrv\sdrv_charoutrect_thai.c#
# List file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_h\list\sdrv_charoutrect_thai.lst#
# Object file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_h\obj\sdrv_charoutrect_thai.r01#
# ASM file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_h\list\sdrv_charoutrect_thai.s01#
# Command line = -v0 -ml -uu #
# -OD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_H\Obj\ #
# -e -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG #
# -LD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_H\List\ #
# -q -t8 #
# -AD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_H\List\ #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# -Id:\case_i_d913f\drv\Ui_SSD1332\inc\ #
# D:\CASE_I_D913F\DRV\UI_SSD1332\SDRV\Sdrv_charoutrect_thai.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sdrv_charoutrect_thai(16)
\ 0000 RSEG BBC_PUTS(0)
\ 0000 EXTERN BlackCharToColor
\ 0000 EXTERN CharPointBuffer
\ 0000 EXTERN CheckCharMode
\ 0000 EXTERN DisplayBuffer
\ 0000 EXTERN Hdrv_BuffDataTrans
\ 0000 EXTERN Hdrv_SetDrawMode
\ 0000 EXTERN Hdrv_SetWindow
\ 0000 EXTERN PutCharErrFlag
\ 0000 PUBLIC Sdrv_CharOutRect
\ 0000 EXTERN Sdrv_GetFontPoint
\ 0000 EXTERN Sdrv_add_image
\ 0000 EXTERN Sdrv_check_symble
\ 0000 EXTERN next_thai_flag
\ 0000 EXTERN region
\ 0000 EXTERN ?CLZ80L_4_04_L00
\ 0000 RSEG BBC_PUTS
\ 0000 Sdrv_CharOutRect:
1 /*
2 ********************************************************************************
3 * ACTOS
4 * ui dirver show picture
5 *
6 * (c) Copyright 2002-2003, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * File : sdrv_charOutrect.c
10 * By : Rcmai
11 * Version: 1> v1.00 first version 10/17/2003 10:46PM
12 ********************************************************************************
13 */
14 #include "display.h"
15 #include "Drv_S6B33B0A.h"
16
17 extern char next_thai_flag;
18 extern char thai_flag;
19
20 //#pragma codeseg(UI_RCODE)
21
22 #pragma memory=constseg(BBS_PUTS)
23 #pragma memory=default
24
25 #pragma memory=dataseg(BBD_PUTS)
26 #pragma memory=default
27
28 #pragma codeseg(BBC_PUTS)
29
30
31
32 ////*******************************************************************************/
33 ///*
34 //** FUNCTION: Sdrv_CharOutRect
35 //**
36 //** Description: 在指定的区域上打出一个字符,超出区域部分不显示,没有超出屏幕的部分将正常显示。
37 //**
38 //** input
39 //** code: 字符的码值
40 //** CRregion: 要求输出的区域
41 //** colcnt: 要求从汉字的哪一列开始输出
42 //** output
43 //** bool: 当指定列数超出该字的总列数时返回FALSE,否则返回TRUE
44 //********************************************************************************/
45
46 non_banked bool Sdrv_CharOutRect(int code,int nextcode,region_t *CRregion, BYTE colcnt)
47 {
\ 0000 FDE5 PUSH IY
\ 0002 DDE5 PUSH IX
\ 0004 DD210000 LD IX,0
\ 0008 DD39 ADD IX,SP
\ 000A C5 PUSH BC
\ 000B D5 PUSH DE
\ 000C F5 PUSH AF
\ 000D DD6E06 LD L,(IX+6)
\ 0010 DD6607 LD H,(IX+7)
\ 0013 E5 PUSH HL
\ 0014 FDE1 POP IY
48 char charmode;
49 bool putchar_result;
50 char tmpwidth;
51 ///-int i;
52 ///-char *p1,*p2;
53
54 if (CRregion->width == NULL)
\ 0016 FD7E02 LD A,(IY+2)
\ 0019 B7 OR A
\ 001A CA0301 JP Z,?0031
\ 001D ?0000:
55 {
56 return FALSE;
57 }
\ 001D ?0001:
58
59
60 PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
\ 001D AF XOR A
\ 001E 320000 LD (PutCharErrFlag),A
61 Hdrv_SetDrawMode(DrawModeV_def); //把显示模式设置成竖向显示模式(与旧字库兼容)
\ 0021 110100 LD DE,1
\ 0024 CD0000 CALL Hdrv_SetDrawMode
62 Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵
\ 0027 010000 LD BC,CharPointBuffer
\ 002A DD5EFC LD E,(IX-4)
\ 002D DD56FD LD D,(IX-3)
\ 0030 CD0000 CALL Sdrv_GetFontPoint
63 if(nextcode == 0xd1 || (nextcode >=0xd4 && nextcode<0xdb) ||(nextcode >=0xe7 && nextcode<0xef))
\ 0033 3ED1 LD A,209
\ 0035 DDAEFE XOR (IX-2)
\ 0038 DDB6FF OR (IX-1)
\ 003B 2840 JR Z,?0009
\ 003D 01D480 LD BC,32980
\ 0040 DD6EFE LD L,(IX-2)
\ 0043 DD66FF LD H,(IX-1)
\ 0046 78 LD A,B
\ 0047 AC XOR H
\ 0048 67 LD H,A
\ 0049 ED42 SBC HL,BC
\ 004B 3810 JR C,?0007
\ 004D 01DB80 LD BC,32987
\ 0050 DD6EFE LD L,(IX-2)
\ 0053 DD66FF LD H,(IX-1)
\ 0056 78 LD A,B
\ 0057 AC XOR H
\ 0058 67 LD H,A
\ 0059 ED42 SBC HL,BC
\ 005B 3820 JR C,?0009
\ 005D ?0007:
\ 005D ?0006:
\ 005D 01E780 LD BC,32999
\ 0060 DD6EFE LD L,(IX-2)
\ 0063 DD66FF LD H,(IX-1)
\ 0066 78 LD A,B
\ 0067 AC XOR H
\ 0068 67 LD H,A
\ 0069 ED42 SBC HL,BC
\ 006B 3813 JR C,?0003
\ 006D 01EF80 LD BC,33007
\ 0070 DD6EFE LD L,(IX-2)
\ 0073 DD66FF LD H,(IX-1)
\ 0076 78 LD A,B
\ 0077 AC XOR H
\ 0078 67 LD H,A
\ 0079 ED42 SBC HL,BC
\ 007B 3003 JR NC,?0003
\ 007D ?0009:
\ 007D ?0008:
\ 007D ?0004:
\ 007D ?0005:
\ 007D ?0002:
64 next_thai_flag = 0;
\ 007D AF XOR A
\ 007E 1802 JR ?0028
65 else
\ 0080 ?0003:
66 next_thai_flag = 1;
\ 0080 3E01 LD A,1
\ 0082 ?0028:
\ 0082 320000 LD (next_thai_flag),A
\ 0085 ?0010:
67
68 Sdrv_check_symble(code);
\ 0085 DD5EFC LD E,(IX-4)
\ 0088 CD0000 CALL Sdrv_check_symble
69 Sdrv_add_image(); //add by nik du
\ 008B CD0000 CALL Sdrv_add_image
70 /*
71 if(code == 0xd1 || (code >=0xd4 && code<0xdb) ||(code >=0xe7 && code<0xef))
72 thai_flag = 0;
73 else
74 thai_flag = 1;
75
76 p1 = back_CharPointBuffer;
77 p2 = CharPointBuffer;
78
79 if(thai_flag == 1)
80 {
81 for(i=0;i<32;i++)
82 {
83 *p1++ = *p2++;
84 }
85
86 if(next_thai_flag==0)
87 return TRUE;
88 }
89 else
90 {
91 for(i=0;i<32;i++)
92 *p2++ |= *p1++;
93 }
94 */
95 charmode = CheckCharMode(code);
\ 008E DD5EFC LD E,(IX-4)
\ 0091 DD56FD LD D,(IX-3)
\ 0094 CD0000 CALL CheckCharMode
96 switch(charmode)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -