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

📄 vm_r_exp.c

📁 Actions VRAM 驱动源码
💻 C
字号:
/*
********************************************************************************
*                       ACTOS
*                  ((            ))
*
*                (c) Copyright 2002-2003, Actions Co,Ld.
*                        All Right Reserved
*
* File   : vm_r_exp.msa
* By     : Gongee
* Version: 1> v1.00     first version     date
********************************************************************************
* $Id: vm_r_exp.c,v 1.1.1.1 2006/01/11 08:07:22 rowena Exp $
********************************************************************************
*/
#include "vm_nanf.h"

#pragma memory=dataseg(BAD_R_EXP)
int mylenexp;
SD_RW sdrwexp;
#pragma memory=default

#pragma codeseg(BAC_R_EXP)
bool VMExpRead(void *pbuf, unsigned long address, unsigned int len)
{
    unsigned long temp;

    if(address >= VM_CAP)    //判断是否越界
    {
        return FALSE;
    }

    sdrwexp.faddr= SD_CAP + address;

    sdrwexp.sramaddr = (unsigned int)pbuf;  // & 0x3fff;
    if((unsigned int)pbuf < 0x4000)
    {
            sdrwexp.srampage = 8;
    }
    else
    {
            sdrwexp.srampage = input8(0x05) & 0x0f;
    }

    mylenexp = sdrwexp.faddr & 0x01ff;

    if(mylenexp + len <= 512)                  //在一页内就可以读完
    {
        SD_Read((int)(&sdrwexp), (word)len);
    }
    else                                    //在一页内无法读完的
    {
        mylenexp = 512 - mylenexp;

        SD_Read((int)(&sdrwexp), (word)mylenexp);

//为了使Vram驱动不调用C库而作修改  05-6-12 15:24
//        sdrwexp.faddr = sdrwexp.faddr + mylenexp;
        temp = sdrwexp.faddr + mylenexp;
        sdrwexp.faddr = temp;
//为了使Vram驱动不调用C库而作修改  05-6-12 15:24

        sdrwexp.sramaddr += mylenexp;

        mylenexp = len - mylenexp;

        while(mylenexp > 512)
        {
            SD_Read((int)(&sdrwexp), 512);
            mylenexp -= 512;

//为了使Vram驱动不调用C库而作修改  05-6-12 15:24
//            sdrwexp.faddr += 512;
            temp = sdrwexp.faddr + 512;
            sdrwexp.faddr = temp;
//为了使Vram驱动不调用C库而作修改  05-6-12 15:24

            sdrwexp.sramaddr += 512;
        }
        if(mylenexp)
        {
            SD_Read((int)(&sdrwexp), (word)mylenexp);
        }
     }
    return 1;
}

⌨️ 快捷键说明

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