diff --git a/debug.c b/debug.c index 7a75ce2..a208656 100755 --- a/debug.c +++ b/debug.c @@ -24,7 +24,7 @@ extern int32_t baudrate; extern int32_t eeprom; extern char *hubram; extern int32_t printbreak; -extern PasmVarsT PasmVars[8]; +extern PasmVarsT PasmVars[16]; extern SerialT serial_in; extern SerialT serial_out; diff --git a/gdb.c b/gdb.c index 1812762..5bd50b0 100755 --- a/gdb.c +++ b/gdb.c @@ -19,7 +19,7 @@ extern FILE *logfile; extern FILE *tracefile; extern FILE *cmdfile; -extern PasmVarsT PasmVars[8]; +extern PasmVarsT PasmVars[16]; extern char *hubram; char cmd[1028]; extern int32_t profile; diff --git a/pasmsim.c b/pasmsim.c index dcc0d0a..019a4a1 100755 --- a/pasmsim.c +++ b/pasmsim.c @@ -11,7 +11,7 @@ extern char *hubram; extern int32_t memsize; extern char lockstate[16]; extern char lockalloc[16]; -extern PasmVarsT PasmVars[8]; +extern PasmVarsT PasmVars[16]; extern int32_t pasmspin; extern int32_t cycleaccurate; extern int32_t loopcount; diff --git a/pasmsim2.c b/pasmsim2.c index 2a2c48f..554898b 100755 --- a/pasmsim2.c +++ b/pasmsim2.c @@ -56,12 +56,12 @@ static int wrl_flags1 = 0; static int rdl_flags0 = 0; static int rdl_flags1 = 0; -char *GetOpname2(unsigned int, int *, int *, int *); +char *GetOpname2(unsigned int, int *, int *, int *, int); static void NotImplemented(int instruction) { int dummy; - char *opname = GetOpname2(instruction, &dummy, &dummy, &dummy); + char *opname = GetOpname2(instruction, &dummy, &dummy, &dummy,0); printf("%s%s not implemented - %8.8x%s", NEW_LINE, opname, instruction, NEW_LINE); spinsim_exit(1); } @@ -2641,13 +2641,13 @@ int32_t ExecutePasmInstruction2(PasmVarsT *pasmvars) if (value2 >= 0xfff80 && value2 < 0xfffc0) wrl_flags0 |= 1 << ((value2 >> 2) & 15); result = read_unaligned_long(value2); - if ((value1 & 0xff) != 0xff) + if (value1 & 0xff) result = (result & ~0xff) | (value1 & 0xff); - if ((value1 & 0xff) != 0xff00) + if (value1 & 0xff00) result = (result & ~0xff00) | (value1 & 0xff00); - if ((value1 & 0xff) != 0xff0000) + if (value1 & 0xff0000) result = (result & ~0xff0000) | (value1 & 0xff0000); - if ((value1 & 0xff) != 0xff000000) + if (value1 & 0xff000000) result = (result & ~0xff000000) | (value1 & 0xff000000); write_unaligned_long(value2, result); if (pasmvars->printflag > 1) @@ -3618,7 +3618,7 @@ int32_t ExecutePasmInstruction2(PasmVarsT *pasmvars) case 43: // pop pasmvars->retptr = (pasmvars->retptr - 1) & 7; - pasmvars->retstack[pasmvars->retptr] = value1; + result = pasmvars->retstack[pasmvars->retptr]; if (pasmvars->retptr == 7) printf("return stack underflow%s", NEW_LINE); break; diff --git a/spininterp.c b/spininterp.c index fd0694f..5c6e94f 100755 --- a/spininterp.c +++ b/spininterp.c @@ -14,7 +14,7 @@ #include "spinsim.h" extern int32_t printflag; -extern PasmVarsT PasmVars[8]; +extern PasmVarsT PasmVars[16]; extern char *hubram; extern int32_t memsize; extern int32_t loopcount;