From 35881fb1c31cc215a64991b877913e519123fec9 Mon Sep 17 00:00:00 2001 From: tcsadmin Date: Fri, 21 Jan 2011 22:09:53 +0000 Subject: Added support for seeking in files that are open for both reading and writing. Added FileTell system call function. git-svn-id: https://mindboards.svn.sourceforge.net/svnroot/mindboards/lms_nbcnxc/branches/version_131@32 c9361245-7fe8-9947-84e8-057757c4e366 --- AT91SAM7S256/Source/c_cmd.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'AT91SAM7S256/Source/c_cmd.c') diff --git a/AT91SAM7S256/Source/c_cmd.c b/AT91SAM7S256/Source/c_cmd.c index 0e79d08..53a274f 100644 --- a/AT91SAM7S256/Source/c_cmd.c +++ b/AT91SAM7S256/Source/c_cmd.c @@ -257,8 +257,8 @@ static pSysCall SysCallFuncs[SYSCALL_COUNT] = cCmdWrapDrawFont, // 95 cCmdWrapMemoryManager, cCmdWrapReadLastResponse, - cCmdWrapUndefinedSysCall, - cCmdWrapUndefinedSysCall // 99 --> 100 system call slots + cCmdWrapFileTell, + cCmdWrapUndefinedSysCall // 100 system call slots // don't forget to update SYSCALL_COUNT in c_cmd.h }; @@ -504,7 +504,8 @@ UBYTE CMD_RESPONSE_LENGTH[256] = 0, // SEEKFROMSTART = 0xD1, 0, // SEEKFROMCURRENT = 0xD2, 0, // SEEKFROMEND = 0xD3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // (xD4-xDF) + 0, // FILEPOSITION = 0xD4 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // (xD5-xDF) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // (xE0-xEF) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // (xF0-xFF) }; @@ -2206,9 +2207,6 @@ NXT_STATUS cCmdActivateProgram(UBYTE * pFileName) VarsCmd.Debugging = FALSE; VarsCmd.PauseClump = NOT_A_CLUMP; VarsCmd.PausePC = 0xFFFF; - // restore default data mode values - pMapComm->BtDataMode = DATA_MODE_NXT|DATA_MODE_UPDATE; - pMapComm->HsDataMode = DATA_MODE_RAW|DATA_MODE_UPDATE; return (Status); } @@ -9664,6 +9662,20 @@ NXT_STATUS cCmdWrapReadLastResponse(UBYTE * ArgV[]) return (NO_ERR); } +//cCmdWrapFileTell +//ArgV[0]: (Function return) Loader status, U16 return +//ArgV[1]: File Handle, U8 in/out +//ArgV[2]: File Position, U32 out +NXT_STATUS cCmdWrapFileTell(UBYTE * ArgV[]) +{ + LOADER_STATUS LStatus = pMapLoader->pFunc(FILEPOSITION, ArgV[1], NULL, (ULONG *)ArgV[2]); + //Status code in high byte of LStatus + *((UWORD *)ArgV[0]) = LOADER_ERR(LStatus); + //File handle in low byte of LStatus + *(ArgV[1]) = LOADER_HANDLE(LStatus); + return (NO_ERR); +} + NXT_STATUS cCmdWrapUndefinedSysCall(UBYTE * ArgV[]) { return (NO_ERR); -- cgit v1.2.3