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

📄 ui_getfp_latin1.msa

📁 炬力方案176*132软件源码,适用于AK1025
💻 MSA
字号:
/*
********************************************************************************
*                       ACTOS
*                  ui dirver show picture
*
*                (c) Copyright 2002-2003, Actions Co,Ld.
*                        All Right Reserved
*
* File   : UI_GetFPFan.msa
* By     : Rcmai
* Version: 1> v1.00     first version     04-1-18 8:53
********************************************************************************
*/
#include "display.h"
#include "Drv_S6B33B0A.h"

        module  Sdrv_GetFontPoint
//        public  sUI_GetFontPoint
        public  Sdrv_GetFontPoint
            extern  AsciiSelect
            extern  AsciiFontLibAddr
            extern  FontLibAddr
            extern  CharPointBuffer
            extern  SD_RWStruct

            rseg    UI_RCODE


//********************************************************/
/*
** FUNCTION:    GetCharPoint
**
** PURPOSE:     Get Char Point Info by dma2
**
** PARAMETERS:
**  input
**      de=区位码
**      bc=输出数据的存放地址
**  output
**      none
** DESCRIPTION:
//********************************************************/

Sdrv_GetFontPoint:
            push    bc
            push    de
            ld      (SD_RWStruct+5),bc
            ld      a,0x08
            bit     6,b                 //bc是否大于4000h
            jr      z,_buffer_in_zram
            dec     a                   //0x07  fram buffer
_buffer_in_zram:
            ld      (SD_RWStruct+7),a
GetChineseCharPoint:
            //ld      a,e                 //区码
            //cp      FirstSectionCode
            //jr      nc,_not_ascii
_is_ascii:
            ld      a,(AsciiSelect)
            cp      04h
            jr      c,lsUse0608Type
            jr      lsUse0816Type
lsUse0608Type:
            xor     a
            ld      h,a
            ld      l,e
            ld      b,03h                   // ahl=a*8
            call    AHL_LeftShift           //输入参数:b,hl
            jr      MoveAsciiPointToBuffer
lsUse0816Type:
            xor     a
            ld      h,a
            ld      l,e
            ld      b,04h                   // ahl=a*16
            call    AHL_LeftShift           //输入参数:b,hl
            ld      bc,800h                 //0816Type ASCII起始地址=800h
            add     hl,bc
            jr      MoveAsciiPointToBuffer
/*
_not_ascii:
            sub     0a4h        	//区码0xa4,繁体第一个汉字是A440
            call    AddCountQuma            //算出字个数HL=(c-0xa1)*(94+63)。输入a=区码-0xa1,输出HL
            ld      a,d                     //取位码
            cp      0xa1                    //BIG5位码分界点
            jr      nc,Multi2ndPart         //区内第二部分字    a1h~feh=94个字
Multi1stPart:                               //区内第一部分字    40h~7eh=63个字
            sub     0x40
            ld      b,0
            ld      c,a
            add     hl,bc                   //加上位得出字的真正序号
            jp      MultiWordNumOk
Multi2ndPart:                               //区内第二部分字
            sub     0xa1                    //BIG5第一个字的区码
            add     a,0x3f
            ld      b,0
            ld      c,a
            add     hl,bc                   //加上位得出字的真正序号
MultiWordNumOk:
            xor     a
            ld      b,05h                   // ahl=a*32
            call    AHL_LeftShift           //输入参数:b,hl
            jp      MoveFontPointToBuffer
*/
//--------------------------------------------------
MoveAsciiPointToBuffer:
            ld      de,(AsciiFontLibAddr)
            add     hl,de
            ld      (SD_RWStruct),hl
            ld      l,a
            ld      h,0
            ld      de,(AsciiFontLibAddr+2)
            adc     hl,de
            ld      (SD_RWStruct+2),hl
            jr      MovePointToBuffer
/*
MoveFontPointToBuffer:
            ld      de,(FontLibAddr)
            add     hl,de
            ld      (SD_RWStruct),hl
            ld      l,a
            ld      h,0
            ld      de,(FontLibAddr+2)
            adc     hl,de
            ld      (SD_RWStruct+2),hl
*/
MovePointToBuffer:
            ld      de,SD_RWStruct
            ld      bc,32
            mSD_Read
MovePointBufferEnd:
            pop     de
            pop     bc
            ret

//---------------------------------------------------
AddCountQuma:                       //提供函数HL=(c-0xa1)*(94+63) = (c-0xa4)*160-(c-0xa4)*3
            push    bc
            push    de
            ld      h,0
            ld      l,a
            call    HLShfit_5bit    //hl*32
            ld      d,h
            ld      e,l
            add     hl,hl           //hl*64
            add     hl,hl           //hl*128
            add     hl,de           //hl*128+hl*32=hl*160
            ld      c,a             //a=区码-0xa4
            ld      b,0x00
            sbc     hl,bc
            sbc     hl,bc
            sbc     hl,bc
            pop     de
            pop     bc
            ret


AHL_LeftShift:              //输入参数:b,hl
            sla     l
            rl      h
            rla
            djnz    AHL_LeftShift
            ret


HLShfit_5bit:
            add     hl,hl       //HL*32
HLShfit_4bit:
            add     hl,hl       //HL*16
HLShfit_3bit:                   //HL*8
            add     hl,hl
HLShfit_2bit:
            add     hl,hl
HLShfit_1bit:
            add     hl,hl
            ret
/*
********************************************************************************
*  the end of file
********************************************************************************
*/
        end


⌨️ 快捷键说明

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