sdrv_functions_he.lst
来自「一种彩屏驱动以及画点,填充图片和填充数据的一些程序」· LST 代码 · 共 400 行 · 第 1/2 页
LST
400 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/May/107 10:53:13 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = large #
# Source file = d:\case_i_d913f\drv\ui_ssd1332\he\sdrv_functions_he.c#
# List file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_he\list\sdrv_functions_he.lst#
# Object file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_he\obj\sdrv_functions_he.r01#
# ASM file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_he\list\sdrv_functions_he.s01#
# Command line = -v0 -ml -uu #
# -OD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_HE\Obj\ #
# -e -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG #
# -LD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_HE\List\ #
# -q -t8 #
# -AD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_HE\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\HE\sdrv_functions_he.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sdrv_functions_he(16)
\ 0000 RSEG UI_RCODE(0)
\ 0000 EXTERN AsciiSelect
\ 0000 PUBLIC CheckCharMode
\ 0000 PUBLIC CheckDisplaySpace
\ 0000 EXTERN PutCharErrFlag
\ 0000 EXTERN region
\ 0000 EXTERN region_win
\ 0000 EXTERN ?CLZ80L_4_04_L00
\ 0000 EXTERN ?C_S_SWITCH_L06
\ 0000 RSEG UI_RCODE
\ 0000 CheckCharMode:
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_functions.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 #pragma codeseg(UI_RCODE)
18
19
20 ////*******************************************************************************/
21 ///*
22 //** FUNCTION: CheckCharMode
23 //**
24 //** Description: 检测字符的模式
25 //**
26 //** input
27 //** code: 字的内码
28 //**
29 //** output
30 //** == CharMode1616: 汉字
31 //** == CharMode0816: 大ASCII
32 //** == CharMode0608: 小ASCII
33 //********************************************************************************/
34 non_banked char CheckCharMode(int code)
35 {
\ 0000 D5 PUSH DE
36 //*如下动作主要是取 int code 的高8位来作比较(int 型参数是以 de 传送的,*
37 //* 也就是要用d的值来作比较),用如下指令可使编译器优化成不用移位而 *
38 //* 直接使用d的值来作比较。可省去不少时间及代码空间。 *
39 //if ((unsigned char)((unsigned int)code>>8) >= FirstSectionCode)
40
41 if ((unsigned char)code >= 0xe0)
\ 0001 7B LD A,E
\ 0002 FEE0 CP 224
\ 0004 3006 JR NC,?0029
\ 0006 ?0000:
42 {
43 return CharMode0608;//汉字
44 }
\ 0006 ?0001:
45 else
46 if (AsciiSelect == FONT_TYPE_SMALL)
\ 0006 3A0000 LD A,(AsciiSelect)
\ 0009 B7 OR A
\ 000A 2003 JR NZ,?0003
\ 000C ?0002:
47 {
48 return CharMode0608;//小字体ASCII
\ 000C ?0029:
\ 000C AF XOR A
49 }
\ 000D 1802 JR ?0004
\ 000F ?0003:
50 return CharMode0816;//大字体ASCII
\ 000F 3E01 LD A,1
51 }
\ 0011 ?0004:
\ 0011 E1 POP HL
\ 0012 C9 RET
\ 0013 CheckDisplaySpace:
52 //================================================================================
53
54
55 ////*******************************************************************************/
56 ///*
57 //** FUNCTION: non_banked bool CheckDisplaySpace
58 //**
59 //** Description: 检测屏幕空间是否满足显示要求,如超出范围则报错
60 //**
61 //** input
62 //** codemod: 点阵的模式
63 //**
64 //** output
65 //** True: 屏幕空间能满足显示要求
66 //** False: 屏幕空间不能满足显示要求
67 //********************************************************************************/
68
69 non_banked bool CheckDisplaySpace(char codemod)
70 {
\ 0013 C5 PUSH BC
\ 0014 D5 PUSH DE
71 switch(codemod)
\ 0015 CD0000 CALL ?C_S_SWITCH_L06
\ 0018 00 DEFB 0
\ 0019 0400 DEFW 4
\ 001B 4901 DEFW ?0026
\ 001D 2500 DEFW ?0006
\ 001F 6B00 DEFW ?0011
\ 0021 B100 DEFW ?0016
\ 0023 F600 DEFW ?0021
\ 0025 ?0006:
72 {
73 case CharMode0608://06*08点阵模式(ascii小字体)
74 // region.x [0 ~ Displaylength-1]
75 // region.y [0 ~ Displayhight-1]
76 if (region.x+ASCII_SMALL_WIDTH_DEF > region_win.x+region_win.width)
\ 0025 ED4B0000 LD BC,(region)
\ 0029 0600 LD B,0
\ 002B 210600 LD HL,6
\ 002E 09 ADD HL,BC
\ 002F 4D LD C,L
\ 0030 44 LD B,H
\ 0031 ED5B0200 LD DE,(region_win+2)
\ 0035 1600 LD D,0
\ 0037 2A0000 LD HL,(region_win)
\ 003A 62 LD H,D
\ 003B 19 ADD HL,DE
\ 003C F680 OR 128
\ 003E ED42 SBC HL,BC
\ 0040 E24400 JP PO,?0052
\ 0043 AC XOR H
\ 0044 ?0052:
\ 0044 FA1C01 JP M,?0070
\ 0047 ?0007:
77 {
78 DUMP(RESULT_PUTCHAR_X_ERR);
79 PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
80 return FALSE;
81 }
\ 0047 ?0008:
82 if (region.y+ASCII_SMALL_HEIGHT_DEF > region_win.y+region_win.height)
\ 0047 ED4B0100 LD BC,(region+1)
\ 004B 42 LD B,D
\ 004C 210800 LD HL,8
\ 004F 09 ADD HL,BC
\ 0050 4D LD C,L
\ 0051 44 LD B,H
\ 0052 ED5B0300 LD DE,(region_win+3)
\ 0056 1600 LD D,0
\ 0058 2A0100 LD HL,(region_win+1)
\ 005B 62 LD H,D
\ 005C 19 ADD HL,DE
\ 005D F680 OR 128
\ 005F ED42 SBC HL,BC
\ 0061 E26500 JP PO,?0053
\ 0064 AC XOR H
\ 0065 ?0053:
\ 0065 F25101 JP P,?0005
\ 0068 ?0009:
83 {
84 DUMP(RESULT_PUTCHAR_Y_ERR);
85 PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
\ 0068 C34501 JP ?0071
86 return FALSE;
87 }
\ 006B ?0010:
88 break;
\ 006B ?0011:
89
90 case CharMode0816://08*16点阵模式(ascii大字体)
91 if (region.x+ASCII_LARGE_WIDTH_DEF > region_win.x+region_win.width)
\ 006B ED4B0000 LD BC,(region)
\ 006F 0600 LD B,0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?