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

📄 sdrv_regioncopy.lst

📁 一种彩屏驱动以及画点,填充图片和填充数据的一些程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       18/May/107  10:54:38 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  large                                               #
#       Source file   =  d:\case_i_d913f\drv\ui_ssd1332\sdrv\sdrv_regioncopy.c#
#       List file     =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_regioncopy.lst#
#       Object file   =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\obj\sdrv_regioncopy.r01#
#       ASM file      =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_regioncopy.s01#
#       Command line  =  -v0 -ml -uu                                         #
#                        -OD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\Obj\    #
#                        -e -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG     #
#                        -LD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\List\   #
#                        -q -t8                                              #
#                        -AD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\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_regioncopy.c #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    sdrv_regioncopy(16)
   \   0000                    RSEG    BBC_DW3(0)
   \   0000                    EXTERN  DisplayBuffer
   \   0000                    EXTERN  Hdrv_BuffDataTrans
   \   0000                    EXTERN  Hdrv_GetBuffData
   \   0000                    EXTERN  Hdrv_SetWindow
   \   0000                    PUBLIC  Sdrv_RegionCopy
   \   0000                    EXTERN  region_win
   \   0000                    EXTERN  ?CLZ80L_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    RSEG    BBC_DW3
   \   0000            Sdrv_RegionCopy:
      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_RegionCopy.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 memory=constseg(BBS_DW3)
     18          #pragma memory=default
     19          
     20          #pragma memory=dataseg(BBD_DW3)
     21          #pragma memory=default
     22          
     23          #pragma codeseg(BBC_DW3)
     24          
     25          ////*******************************************************************************/
     26          ///* void Sdrv_RegionCopy(region_t sregion, region_t tregion)
     27          //** FUNCTION:     Sdrv_RegionCopy
     28          //**
     29          //** Description:  把源区域的数据复制到目的区域
     30          //**  input
     31          //**     region_t *sregion: 指定源区域 ; 
     32          //**     region_t *tregion: 指定目的区域
     33          //**
     34          //**  output
     35          //**     none
     36          //********************************************************************************/
     37          void Sdrv_RegionCopy(region_t *sregion, region_t *tregion)
     38          {
   \   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  21F2FF            LD      HL,65522
   \   000F  39                ADD     HL,SP
   \   0010  F9                LD      SP,HL
     39              int block_pixel;//每一小块象素的个数
     40              BYTE block_line; //每一小块的行数
     41              int i;   
     42              //int height_cnt; //高度计数器
     43              region_t sregionram;//临时使用
     44              region_t tregionram;//临时使用
     45              BYTE line_cnt;//行数计数器
     46          
     47              BYTE sregiony_tmp;
     48              BYTE tregiony_tmp;    
     49          
     50              //把源目区域数据放到临时区作运算
     51              sregionram = *sregion;
   \   0011  EB                EX      DE,HL
   \   0012  010400            LD      BC,4
   \   0015  EDB0              LDIR
     52              tregionram = *tregion;
   \   0017  210400            LD      HL,4
   \   001A  39                ADD     HL,SP
   \   001B  EB                EX      DE,HL
   \   001C  DD6EFE            LD      L,(IX-2)
   \   001F  DD66FF            LD      H,(IX-1)
   \   0022  0E04              LD      C,4
   \   0024  EDB0              LDIR
     53          
     54              //下面强迫目标区域与源区域大小相同
     55              tregionram.width = sregionram.width;
   \   0026  DD46F0            LD      B,(IX-16)
   \   0029  DD70F4            LD      (IX-12),B
     56              tregionram.height = sregionram.height;
   \   002C  DD46F1            LD      B,(IX-15)
   \   002F  DD70F5            LD      (IX-11),B
     57          
     58              if ( (sregionram.x + sregionram.width) > (region_win.x+region_win.width)                //源区域横向是否超限
     59                         || (sregionram.y + sregionram.height) > (region_win.y + region_win.height)   //源区域纵向是否超限
     60                         || (tregionram.x + sregionram.width) > (region_win.x+region_win.width)       //目标区域横向是否超限(源与目宽度一样)
     61                         || (tregionram.y + sregionram.height) > (region_win.y + region_win.height) ) //目标区域纵向是否超限(源与目宽度一样)
   \   0032  DD6EF0            LD      L,(IX-16)
   \   0035  41                LD      B,C
   \   0036  50                LD      D,B
   \   0037  DD5EEE            LD      E,(IX-18)
   \   003A  60                LD      H,B
   \   003B  19                ADD     HL,DE
   \   003C  4D                LD      C,L
   \   003D  44                LD      B,H
   \   003E  ED5B0200          LD      DE,(region_win+2)
   \   0042  1600              LD      D,0
   \   0044  2A0000            LD      HL,(region_win)
   \   0047  62                LD      H,D
   \   0048  19                ADD     HL,DE
   \   0049  F680              OR      128
   \   004B  ED42              SBC     HL,BC
   \   004D  E25100            JP      PO,?0014
   \   0050  AC                XOR     H
   \   0051            ?0014:
   \   0051  FAF701            JP      M,?0009
   \   0054  DD6EF1            LD      L,(IX-15)
   \   0057  62                LD      H,D
   \   0058  DD5EEF            LD      E,(IX-17)
   \   005B  19                ADD     HL,DE
   \   005C  4D                LD      C,L
   \   005D  44                LD      B,H
   \   005E  ED5B0300          LD      DE,(region_win+3)
   \   0062  1600              LD      D,0
   \   0064  2A0100            LD      HL,(region_win+1)
   \   0067  62                LD      H,D
   \   0068  19                ADD     HL,DE
   \   0069  F680              OR      128
   \   006B  ED42              SBC     HL,BC
   \   006D  E27100            JP      PO,?0015
   \   0070  AC                XOR     H
   \   0071            ?0015:
   \   0071  FAF701            JP      M,?0009
   \   0074  DD6EF0            LD      L,(IX-16)
   \   0077  62                LD      H,D
   \   0078  DD5EF2            LD      E,(IX-14)
   \   007B  19                ADD     HL,DE
   \   007C  4D                LD      C,L
   \   007D  44                LD      B,H
   \   007E  ED5B0200          LD      DE,(region_win+2)
   \   0082  1600              LD      D,0
   \   0084  2A0000            LD      HL,(region_win)
   \   0087  62                LD      H,D
   \   0088  19                ADD     HL,DE
   \   0089  F680              OR      128
   \   008B  ED42              SBC     HL,BC
   \   008D  E29100            JP      PO,?0016
   \   0090  AC                XOR     H
   \   0091            ?0016:
   \   0091  FAF701            JP      M,?0009
   \   0094  DD6EF1            LD      L,(IX-15)
   \   0097  62                LD      H,D
   \   0098  DD5EF3            LD      E,(IX-13)
   \   009B  19                ADD     HL,DE
   \   009C  4D                LD      C,L
   \   009D  44                LD      B,H
   \   009E  ED5B0300          LD      DE,(region_win+3)
   \   00A2  1600              LD      D,0
   \   00A4  2A0100            LD      HL,(region_win+1)
   \   00A7  62                LD      H,D
   \   00A8  19                ADD     HL,DE
   \   00A9  F680              OR      128
   \   00AB  ED42              SBC     HL,BC
   \   00AD  E2B100            JP      PO,?0017
   \   00B0  AC                XOR     H
   \   00B1            ?0017:
   \   00B1  FAF701            JP      M,?0009
   \   00B4            ?0002:
   \   00B4            ?0003:
   \   00B4            ?0000:
     62              {
     63                  return; //超限返回
     64              }
   \   00B4            ?0001:
     65          
     66              //把一个大的矩形分成N个小的矩形块,每个小矩形数据应能用一个page buf 传送完
     67              //   这样可方便在源,目标间进行数据交换(不断换窗口)
     68              block_line = DisplayBufLen/(2*(sregionram.width));
   \   00B4  DD6EF0            LD      L,(IX-16)
   \   00B7  62                LD      H,D
   \   00B8  29                ADD     HL,HL
   \   00B9  4D                LD      C,L
   \   00BA  44                LD      B,H
   \   00BB  110002            LD      DE,512
   \   00BE  CD0000            CALL    ?SS_DIV_L02
   \   00C1  DD73F9            LD      (IX-7),E
     69              block_pixel = block_line * (sregionram.width);
   \   00C4  DD4EF0            LD      C,(IX-16)
   \   00C7  0600              LD      B,0
   \   00C9  50                LD      D,B
   \   00CA  CD0000            CALL    ?S_MUL_L02
   \   00CD  D5                PUSH    DE
   \   00CE  FDE1              POP     IY
     70          
     71              line_cnt = sregionram.height;//保存高度值
   \   00D0  DD46F1            LD      B,(IX-15)
   \   00D3  DD70F8            LD      (IX-8),B
     72              sregionram.height = block_line;
   \   00D6  DD46F9            LD      B,(IX-7)
   \   00D9  DD70F1            LD      (IX-15),B
     73              tregionram.height = block_line;
   \   00DC  DD70F5            LD      (IX-11),B
     74          
     75              if ((sregion->y) >= (tregion->y))
   \   00DF  DD6EFE            LD      L,(IX-2)
   \   00E2  DD66FF            LD      H,(IX-1)
   \   00E5  23                INC     HL
   \   00E6  E5                PUSH    HL
   \   00E7  DD6EFC            LD      L,(IX-4)
   \   00EA  DD66FD            LD      H,(IX-3)
   \   00ED  23                INC     HL
   \   00EE  7E                LD      A,(HL)
   \   00EF  E1                POP     HL
   \   00F0  BE                CP      (HL)

⌨️ 快捷键说明

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