aboutsummaryrefslogtreecommitdiff
path: root/AT91SAM7S256/Source/c_cmd.h
diff options
context:
space:
mode:
authorNicolas Schodet2011-07-04 01:23:24 +0200
committerNicolas Schodet2011-07-04 01:27:42 +0200
commitc331530002825a86f12151266a9772167a3a49ce (patch)
tree9a4bb16c6a87e30629da039e82cbf026dc361009 /AT91SAM7S256/Source/c_cmd.h
parent0cb650f1cf6f446bbb0186300a198b5936f49bb4 (diff)
parentb0472321014e8fcb110f4cecad734bb6a7e27ae0 (diff)
Merge branch 'jch-import' into jch-merge
Conflicts: AT91SAM7S256/Source/BtTest.inc AT91SAM7S256/Source/Functions.inl AT91SAM7S256/Source/Ui.txt AT91SAM7S256/Source/c_cmd.c AT91SAM7S256/Source/c_input.c AT91SAM7S256/Source/c_output.c AT91SAM7S256/Source/c_ui.c AT91SAM7S256/Source/c_ui.h AT91SAM7S256/Source/d_loader.h AT91SAM7S256/Source/d_lowspeed.r AT91SAM7S256/Source/d_output.c AT91SAM7S256/Source/d_output.h
Diffstat (limited to 'AT91SAM7S256/Source/c_cmd.h')
-rw-r--r--AT91SAM7S256/Source/c_cmd.h72
1 files changed, 67 insertions, 5 deletions
diff --git a/AT91SAM7S256/Source/c_cmd.h b/AT91SAM7S256/Source/c_cmd.h
index c6e5267..5a3a13e 100644
--- a/AT91SAM7S256/Source/c_cmd.h
+++ b/AT91SAM7S256/Source/c_cmd.h
@@ -27,7 +27,7 @@
#endif
#include "c_cmd_bytecodes.h"
-#define SYSCALL_COUNT 48
+#define SYSCALL_COUNT 100
extern const HEADER cCmd;
@@ -55,6 +55,17 @@ void cCmdExit(void);
//
#define ENABLE_VM 1
#undef ARM_DEBUG
+
+
+//
+//WRITE_IOMAP_OFFSETS enables saving a file containing accurate iomap offsets.
+//
+#define WRITE_IOMAP_OFFSETS 0
+
+#if WRITE_IOMAP_OFFSETS
+void cCmdWriteIOMapOffsetsFile();
+#endif
+
//
//VM_BENCHMARK enables extra instrumentation code to measure VM performance.
//When enabled, a file named "benchmark.txt" is produced every time a program completes.
@@ -323,6 +334,7 @@ typedef struct
#define SET_WRITE_MSG(QueueID, DVIndex) (VarsCmd.MessageQueues[(QueueID)].Messages[VarsCmd.MessageQueues[(QueueID)].WriteIndex] = (DVIndex))
#define SET_READ_MSG(QueueID, DVIndex) (VarsCmd.MessageQueues[(QueueID)].Messages[VarsCmd.MessageQueues[(QueueID)].ReadIndex] = (DVIndex))
+#ifndef STRIPPED
//
// Datalog Queuing
//
@@ -353,6 +365,7 @@ typedef struct
#define SET_WRITE_DTLG(DVIndex) (VarsCmd.DatalogBuffer.Datalogs[VarsCmd.DatalogBuffer.WriteIndex] = (DVIndex))
#define SET_READ_DTLG(DVIndex) (VarsCmd.DatalogBuffer.Datalogs[VarsCmd.DatalogBuffer.ReadIndex] = (DVIndex))
+#endif
//
//Definitions related to dataflow scheduling
@@ -388,6 +401,17 @@ typedef struct
CLUMP_Q WaitQ;
} MUTEX_Q;
+
+// Clump Breakpoints
+//
+typedef struct
+{
+ CODE_INDEX Location;
+ UBYTE Enabled;
+} CLUMP_BREAK_REC;
+
+#define MAX_BREAKPOINTS 4
+
//
// Clump Record, run-time book-keeping for each clump
//
@@ -398,6 +422,7 @@ typedef struct
// CurrFireCount: Run-time count of unsatisfied dependencies
// Link: ID of next clump in the queue. NOT_A_CLUMP denotes end or bad link.
//
+// Priority: number of instructions to run per pass on this clump
// clumpScalarDispatchHints: this clump only uses scalar data args, can be interpretted with faster dispatch tables
//
// pDependents: pointer to list of downstream dependents' ClumpIDs
@@ -413,11 +438,14 @@ typedef struct
UBYTE CurrFireCount; //AKA ShortCount
CLUMP_ID Link;
+ UBYTE Priority; // deleted in 1.28
UBYTE clumpScalarDispatchHints;
CLUMP_ID* pDependents;
ULONG awakenTime;
UBYTE DependentCount;
+ CLUMP_ID CalledClump;
+ CLUMP_BREAK_REC Breakpoints[MAX_BREAKPOINTS];
} CLUMP_REC;
//
@@ -536,8 +564,18 @@ typedef struct
ULONG StartTick;
+#ifndef STRIPPED
DATALOG_QUEUE DatalogBuffer;
+#endif
+ UBYTE Debugging;
+ UBYTE PauseClump;
+ CODE_INDEX PausePC;
+
+ // add a buffer for storing the last response raw content (64 bytes)
+ UBYTE LastResponseBuffer[64];
+ UBYTE LastResponseLength;
+
#if VM_BENCHMARK
ULONG InstrCount;
ULONG Average;
@@ -789,7 +827,7 @@ float cCmdGetValFlt(void * pVal, TYPE_CODE TypeCode);
NXT_STATUS cCmdLSCheckStatus(UBYTE Port);
UBYTE cCmdLSCalcBytesReady(UBYTE Port);
-NXT_STATUS cCmdLSWrite(UBYTE Port, UBYTE BufLength, UBYTE *pBuf, UBYTE ResponseLength);
+NXT_STATUS cCmdLSWrite(UBYTE Port, UBYTE BufLength, UBYTE *pBuf, UBYTE ResponseLength, UBYTE NoRestartOnRead);
NXT_STATUS cCmdLSRead(UBYTE Port, UBYTE BufLength, UBYTE * pBuf);
//
@@ -847,9 +885,6 @@ NXT_STATUS cCmdWrapSetSleepTimeout(UBYTE * ArgV[]);
NXT_STATUS cCmdWrapListFiles(UBYTE * ArgV[]);
// Handlers for dynamically added syscalls
-NXT_STATUS cCmdWrapCommHSWrite(UBYTE * ArgV[]);
-NXT_STATUS cCmdWrapCommHSRead(UBYTE * ArgV[]);
-NXT_STATUS cCmdWrapCommHSCheckStatus(UBYTE * ArgV[]);
NXT_STATUS cCmdWrapCommBTOnOff(UBYTE * ArgV[]);
NXT_STATUS cCmdWrapCommBTConnection(UBYTE * ArgV[]);
NXT_STATUS cCmdWrapReadSemData(UBYTE * ArgV[]);
@@ -857,6 +892,33 @@ NXT_STATUS cCmdWrapWriteSemData(UBYTE * ArgV[]);
NXT_STATUS cCmdWrapUpdateCalibCacheInfo(UBYTE * ArgV[]);
NXT_STATUS cCmdWrapComputeCalibValue(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapIOMapReadByID(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapIOMapWriteByID(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapDisplayExecuteFunction(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapCommExecuteFunction(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapLoaderExecuteFunction(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileFindFirst(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileFindNext(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileOpenWriteLinear(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileOpenWriteNonLinear(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileOpenReadLinear(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapCommHSControl(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapCommHSCheckStatus(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapCommHSWrite(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapCommHSRead(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapCommLSWriteEx(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileSeek(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileResize(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapDrawPictureArray(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapDrawPolygon(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapDrawEllipse(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapDrawFont(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapMemoryManager(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapReadLastResponse(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapFileTell(UBYTE * ArgV[]);
+NXT_STATUS cCmdWrapRandomEx(UBYTE * ArgV[]);
+
+NXT_STATUS cCmdWrapUndefinedSysCall(UBYTE * ArgV[]);
//Handler for remote control protocol packets -- called from comm module via IO map function pointer
UWORD cCmdHandleRemoteCommands(UBYTE * pInBuf, UBYTE * pOutBuf, UBYTE * pLen);