⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdrv_putchar_latin1.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       22/Sep/107  19:36:33 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  large                                               #
#       Source file   =  d:\case_i_d913f\drv\ui_ssd1332\sdrv\sdrv_putchar_latin1.c#
#       List file     =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_x\list\sdrv_putchar_latin1.lst#
#       Object file   =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_x\obj\sdrv_putchar_latin1.r01#
#       ASM file      =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_x\list\sdrv_putchar_latin1.s01#
#       Command line  =  -v0 -ml -uu                                         #
#                        -OD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_X\Obj\    #
#                        -e -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG     #
#                        -LD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_X\List\   #
#                        -q -t8                                              #
#                        -AD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_X\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_putchar_latin1.c #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    sdrv_putchar_latin1(16)
   \   0000                    RSEG    BBC_PUTS(0)
   \   0000                    EXTERN  BlackCharToColor
   \   0000                    EXTERN  CharPointBuffer
   \   0000                    EXTERN  CheckCharMode
   \   0000                    EXTERN  CheckDisplaySpace
   \   0000                    EXTERN  DisplayBuffer
   \   0000                    EXTERN  Hdrv_BuffDataTrans
   \   0000                    EXTERN  Hdrv_SetDrawMode
   \   0000                    EXTERN  Hdrv_SetWindow
   \   0000                    EXTERN  PutCharErrFlag
   \   0000                    EXTERN  Sdrv_GetFontPoint
   \   0000                    PUBLIC  Sdrv_PutChar
   \   0000                    EXTERN  region
   \   0000                    EXTERN  ?CLZ80L_4_04_L00
   \   0000                    RSEG    BBC_PUTS
   \   0000            Sdrv_PutChar:
      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   : PutChar.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          #pragma memory=constseg(BBS_PUTS)
     20          #pragma memory=default
     21          
     22          #pragma memory=dataseg(BBD_PUTS)
     23          #pragma memory=default
     24          
     25          #pragma codeseg(BBC_PUTS)
     26          
     27          //non_banked char CheckCharMode(int code);
     28          //bool CheckDisplaySpace(char codemod);
     29          ////*******************************************************************************/
     30          ///*
     31          //** FUNCTION:     PutChar
     32          //**
     33          //** Description:  在屏幕上打出一个字符,并打完后当前指针自动跳到下一个汉字的左上角
     34          //**
     35          //**  input
     36          //**     code: 字符的码值
     37          //**
     38          //**  output
     39          //**     none
     40          //********************************************************************************/
     41          
     42          non_banked bool Sdrv_PutChar(int code)
     43          {
   \   0000  C5                PUSH    BC
   \   0001  DDE5              PUSH    IX
   \   0003  F5                PUSH    AF
   \   0004  D5                PUSH    DE
   \   0005  DDE1              POP     IX
     44              char charmode;
     45              bool putchar_result;
     46              PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
   \   0007  AF                XOR     A
   \   0008  320000            LD      (PutCharErrFlag),A
     47              Hdrv_SetDrawMode(DrawModeV_def);    //把显示模式设置成竖向显示模式(与旧字库兼容)
   \   000B  110100            LD      DE,1
   \   000E  CD0000            CALL    Hdrv_SetDrawMode
     48              Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵
   \   0011  010000            LD      BC,CharPointBuffer
   \   0014  DDE5              PUSH    IX
   \   0016  D1                POP     DE
   \   0017  CD0000            CALL    Sdrv_GetFontPoint
     49              
     50              //charmode = CharMode0608;  
     51              charmode = CheckCharMode(code);
   \   001A  DDE5              PUSH    IX
   \   001C  D1                POP     DE
   \   001D  CD0000            CALL    CheckCharMode
   \   0020  210100            LD      HL,1
   \   0023  39                ADD     HL,SP
   \   0024  77                LD      (HL),A
     52              putchar_result = CheckDisplaySpace(charmode);
   \   0025  5F                LD      E,A
   \   0026  CD0000            CALL    CheckDisplaySpace
   \   0029  210000            LD      HL,0
   \   002C  39                ADD     HL,SP
   \   002D  77                LD      (HL),A
     53              if (!putchar_result)
   \   002E  AF                XOR     A
   \   002F  B6                OR      (HL)
   \   0030  200D              JR      NZ,?0001
   \   0032            ?0000:
     54              {
     55                  Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模式
   \   0032  5F                LD      E,A
   \   0033  57                LD      D,A
   \   0034  CD0000            CALL    Hdrv_SetDrawMode
     56                  return putchar_result;//如显示范围不对,则不做显示动作而直接退出
   \   0037  210000            LD      HL,0
   \   003A  39                ADD     HL,SP
   \   003B  7E                LD      A,(HL)
     57              }
   \   003C  C3CA00            JP      ?0006
   \   003F            ?0001:
     58              switch(charmode)
   \   003F  23                INC     HL
   \   0040  7E                LD      A,(HL)
   \   0041  FE00              CP      0
   \   0043  2029              JR      NZ,?0004
   \   0045            ?0003:
     59              {
     60              case CharMode0608://06*08点阵模式(ascii小字体)
     61                  //设置字模输出的大小 
     62                  region.width = ASCII_SMALL_WIDTH_DEF;
   \   0045  3E06              LD      A,6
   \   0047  320200            LD      (region+2),A
     63                  region.height = ASCII_SMALL_HEIGHT_DEF;
   \   004A  3E08              LD      A,8
   \   004C  320300            LD      (region+3),A
     64                  
     65                  Hdrv_SetWindow(&region);
   \   004F  110000            LD      DE,region
   \   0052  CD0000            CALL    Hdrv_SetWindow
     66                  
     67                  //把黑白字模转为彩色字模放在Buff中
     68                  BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
   \   0055  010000            LD      BC,CharPointBuffer
   \   0058  110600            LD      DE,6
   \   005B  CD0000            CALL    BlackCharToColor
     69                  //把暂时显存区的数据送到LCM
     70                  Hdrv_BuffDataTrans(DisplayBuffer, ASCII_SMALL_HEIGHT_DEF*ASCII_SMALL_WIDTH_DEF*2);
   \   005E  016000            LD      BC,96
   \   0061  110000            LD      DE,DisplayBuffer
   \   0064  CD0000            CALL    Hdrv_BuffDataTrans
     71                  region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
   \   0067  3A0000            LD      A,(region)
   \   006A  C606              ADD     A,6
   \   006C  1851              JR      ?0008
     72                  break;
   \   006E            ?0004:
   \   006E  FE01              CP      1
   \   0070  2050              JR      NZ,?0002
     73                  
     74              case CharMode0816://08*16点阵模式(ascii大字体)
     75                  //设置字模输出的大小//上半个字
     76                  region.width = ASCII_LARGE_WIDTH_DEF;
   \   0072  3E08              LD      A,8
   \   0074  320200            LD      (region+2),A
     77                  region.height = ASCII_LARGE_HEIGHT_DEF/2;
   \   0077  320300            LD      (region+3),A
     78                  region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
   \   007A  3A0100            LD      A,(region+1)
   \   007D  C608              ADD     A,8
   \   007F  320100            LD      (region+1),A
     79                  
     80                  Hdrv_SetWindow(&region);
   \   0082  110000            LD      DE,region
   \   0085  CD0000            CALL    Hdrv_SetWindow
     81                  
     82                  //把黑白字模转为彩色字模放在Buff中(上区)
     83                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
     84                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);               //change by ybfu
   \   0088  010800            LD      BC,CharPointBuffer+8
   \   008B  110800            LD      DE,8
   \   008E  CD0000            CALL    BlackCharToColor
     85                  //把暂时显存区的数据送到LCM
     86                  Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
   \   0091  018000            LD      BC,128
   \   0094  110000            LD      DE,DisplayBuffer
   \   0097  CD0000            CALL    Hdrv_BuffDataTrans
     87          
     88                  region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
   \   009A  3A0100            LD      A,(region+1)
   \   009D  C6F8              ADD     A,248
   \   009F  320100            LD      (region+1),A
     89                  
     90                  Hdrv_SetWindow(&region);
   \   00A2  110000            LD      DE,region
   \   00A5  CD0000            CALL    Hdrv_SetWindow
     91                  
     92                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
     93                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
   \   00A8  010000            LD      BC,CharPointBuffer
   \   00AB  110800            LD      DE,8
   \   00AE  CD0000            CALL    BlackCharToColor
     94                  //把暂时显存区的数据送到LCM
     95                  Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
   \   00B1  018000            LD      BC,128
   \   00B4  110000            LD      DE,DisplayBuffer
   \   00B7  CD0000            CALL    Hdrv_BuffDataTrans
     96                  //坐标移到下一个字的左上角
     97                  region.x += ASCII_LARGE_WIDTH_DEF;
   \   00BA  3A0000            LD      A,(region)
   \   00BD  C608              ADD     A,8
   \   00BF            ?0008:
   \   00BF  320000            LD      (region),A
     98                  //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
     99                  break;
   \   00C2            ?0005:
    100              
    101              default:
    102                  break;
   \   00C2            ?0002:
    103              }
    104              Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模式
   \   00C2  110000            LD      DE,0
   \   00C5  CD0000            CALL    Hdrv_SetDrawMode
    105              return TRUE;
   \   00C8  3E01              LD      A,1
    106          }
   \   00CA            ?0006:
   \   00CA  E1                POP     HL
   \   00CB  DDE1              POP     IX
   \   00CD  C1                POP     BC
   \   00CE  C9                RET
   \   00CF                    END

Errors: none
Warnings: none
Code size: 207
Constant size: 0
Static variable size: Data(0) Iram(0)

⌨️ 快捷键说明

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