📄 sdrv_puts_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_puts_thai.c#
# List file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_h\list\sdrv_puts_thai.lst#
# Object file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_h\obj\sdrv_puts_thai.r01#
# ASM file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_h\list\sdrv_puts_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_puts_thai.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sdrv_puts_thai(16)
\ 0000 RSEG BBC_PUTS(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN AsciiSelect
\ 0000 EXTERN Sdrv_PutChar
\ 0000 PUBLIC Sdrv_PutS
\ 0000 PUBLIC StrHeight
\ 0000 PUBLIC next_thai_flag
\ 0000 EXTERN region
\ 0000 EXTERN ?CLZ80L_4_04_L00
\ 0000 RSEG BBC_PUTS
\ 0000 Sdrv_PutS:
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_PutS.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 char next_thai_flag = 1;
18 extern char thai_flag;
19
20 #pragma memory=constseg(BBS_PUTS)
21 #pragma memory=default
22
23 #pragma memory=dataseg(BBD_PUTS)
24 #pragma memory=default
25
26 #pragma codeseg(BBC_PUTS)
27
28 //BYTE lineNum_sav;//行号记录
29
30 //如果一行都是small ascii则高度为8(默认),如有一行中有一个是汉字或是 large 模式 ascii
31 // 则高度都为 16
32 BYTE StrHeight = ASCII_SMALL_HEIGHT_DEF;//一行字的高度
33
34 ////*******************************************************************************/
35 ///*
36 //** FUNCTION: Sdrv_PutS
37 //**
38 //** Description: 在屏幕上输出一个字符串,如串的长度超过屏幕,则多出部分不显示
39 //** 指针停在最后一个能显示的字的下一个字符左上角,碰到回车或
40 //** 串尾时退出,碰到换行时从下一行开始显示
41 //** input
42 //** str: 字符串首址 ;
43 //** strlen: 字符串的长度
44 //**
45 //** output
46 //** none
47 //********************************************************************************/
48 non_banked char *Sdrv_PutS(const char *str, signed char strlen)
49 {
\ 0000 FDE5 PUSH IY
\ 0002 DDE5 PUSH IX
\ 0004 C5 PUSH BC
\ 0005 F5 PUSH AF
\ 0006 F5 PUSH AF
\ 0007 F5 PUSH AF
\ 0008 D5 PUSH DE
\ 0009 DDE1 POP IX
50 int code;
51 char result;
52 char *lastcharpt;//记录上一个字符的指针
53 BYTE lineNum_sav,rowNum_sav;//行号记录
54
55 lineNum_sav = region.y;
\ 000B 3A0100 LD A,(region+1)
\ 000E 210000 LD HL,0
\ 0011 39 ADD HL,SP
\ 0012 77 LD (HL),A
56 rowNum_sav = region.x;
\ 0013 23 INC HL
\ 0014 3A0000 LD A,(region)
\ 0017 77 LD (HL),A
57 /*
58 //判断要输出的行的高度
59 if (AsciiSelect == FONT_TYPE_SMALL)
60 {
61 StrHeight = CHINESE_HEIGHT_DEF;//+2;//一行字符的高度
62 }
63 else
64 {
65 StrHeight = CHINESE_HEIGHT_DEF;//+2;//一行字符的高度
66 }
67 */
68 //判断要输出的行的高度
69 if (AsciiSelect == FONT_TYPE_SMALL)
\ 0018 ?0000:
70 {
71 StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
72 }
73 else
\ 0018 ?0001:
74 {
75 StrHeight = CHINESE_HEIGHT_DEF;//一行字符的高度
\ 0018 3E10 LD A,16
\ 001A 320100 LD (StrHeight),A
\ 001D ?0002:
\ 001D ?0004:
76 }
77
78
79
80 while ( (*str != '\r') //碰到回车时退出
81 && (*str != '\0') //碰到结束符时退出
82 && (strlen != NULL) ) //碰到字符长度为0时退出
\ 001D DD7E00 LD A,(IX+0)
\ 0020 FE0D CP 13
\ 0022 CAB300 JP Z,?0003
\ 0025 AF XOR A
\ 0026 DDB600 OR (IX+0)
\ 0029 CAB300 JP Z,?0003
\ 002C 210600 LD HL,6
\ 002F 39 ADD HL,SP
\ 0030 AF XOR A
\ 0031 B6 OR (HL)
\ 0032 287F JR Z,?0003
\ 0034 ?0007:
\ 0034 ?0006:
\ 0034 ?0005:
83 {
84 lastcharpt = str;
\ 0034 DDE5 PUSH IX
\ 0036 FDE1 POP IY
85 //下面是碰到换行符时要作换行处理
86 if (*str == '\n')
\ 0038 DD7E00 LD A,(IX+0)
\ 003B FE0A CP 10
\ 003D 201C JR NZ,?0012
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -