📄 vm_r_exp.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 + -