OpenCores
URL https://opencores.org/ocsvn/zipcpu/zipcpu/trunk

Subversion Repositories zipcpu

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /zipcpu/trunk/bench
    from Rev 8 to Rev 9
    Reverse comparison

Rev 8 → Rev 9

/cpp/zippy_tb.cpp
36,6 → 36,7
//
#include <signal.h>
#include <time.h>
#include <unistd.h>
 
#include <ctype.h>
#include <ncurses.h>
62,13 → 63,13
// No particular "parameters" need definition or redefinition here.
class ZIPPY_TB : public TESTB<Vzipsystem> {
public:
unsigned long m_tx_busy_count;
unsigned long m_mem_size;
MEMSIM m_mem;
// QSPIFLASHSIM m_flash;
FILE *dbg_fp;
bool dbg_flag, bomb;
 
ZIPPY_TB(void) : m_mem(1<<20) {
ZIPPY_TB(void) : m_mem_size(1<<20), m_mem(m_mem_size) {
//dbg_fp = fopen("dbg.txt", "w");
dbg_fp = NULL;
dbg_flag = false;
186,9 → 187,9
 
ln++;
showval(ln, 1, "UTSK", m_core->v__DOT__utc_data);
showval(ln,21, "UMST", m_core->v__DOT__umc_data);
showval(ln,21, "UOST", m_core->v__DOT__uoc_data);
showval(ln,41, "UPST", m_core->v__DOT__upc_data);
showval(ln,61, "UAST", m_core->v__DOT__uac_data);
showval(ln,61, "UICT", m_core->v__DOT__uic_data);
 
ln++;
mvprintw(ln, 40, "%s %s",
727,46 → 728,8
 
// mem[0x00000] = 0xbe000010; // Halt instruction
unsigned int mptr = 0;
/*
tb->m_mem[mptr++] = 0x30000000; // 0: CLR R0
tb->m_mem[mptr++] = 0x21000000; // 1: MOV R0,R1
tb->m_mem[mptr++] = 0x22000001; // 2: MOV $1+R0,R2
tb->m_mem[mptr++] = 0x23000002; // 3: MOV $2+R0,R3
tb->m_mem[mptr++] = 0x24000022; // 4: MOV $22h+R0,R4
tb->m_mem[mptr++] = 0x25100377; // 5: MOV $377h+R0,uR5
tb->m_mem[mptr++] = 0x4e000000; // 6: NOOP
tb->m_mem[mptr++] = 0xa0120000; // 7: ADD R2,R0
tb->m_mem[mptr++] = 0xa0000020; // 8: ADD $32,R0
tb->m_mem[mptr++] = 0xa00fffdf; // 9: ADD -$33,R0
tb->m_mem[mptr++] = 0xc02fffff; // A: NOT.Z R0
tb->m_mem[mptr++] = 0xc0100000; // B: CLRF R0
tb->m_mem[mptr++] = 0x31000005; // C: LDI $5,R1
tb->m_mem[mptr++] = 0x00110000; // D: CMP R0,R1
tb->m_mem[mptr++] = 0xc0afffff; // E: NOT.LT R0
tb->m_mem[mptr++] = 0xc1cfffff; // F: NOT.GE R1
tb->m_mem[mptr++] = 0x621ffff9; // 10: LOD $-7(PC),R2
tb->m_mem[mptr++] = 0x4f13dead; // 11: LODIHI $deadh,R3
tb->m_mem[mptr++] = 0x4f03beef; // 12: LODILO $beefh,R3
tb->m_mem[mptr++] = 0x731f0002; // 13: STO R3,$2(PC)
*/
 
/*
tb->m_mem[mptr++] = zp.op_clr(zp::ZIP_R12);// 0: CLR R12
tb->m_mem[mptr++] = 0x4f1cc000; // 1: LODIHI $c000h,R12
tb->m_mem[mptr++] = 0x2c1c0000; // 2: MOV R12,uR12
tb->m_mem[mptr++] = 0x2f1f000a; // 3: MOV $12+PC,uPC
tb->m_mem[mptr++] = 0x4f108001; // 4: LODIHI $8001,R0 // Turn on trap
tb->m_mem[mptr++] = 0x4f00ffff; // 5: LODILO $ffff,R0 // interrupts
tb->m_mem[mptr++] = 0x701c0001; // 6: STO R0,$1(R12)
tb->m_mem[mptr++] = 0xbe000020; // 7: RTU // Switch to user mode
tb->m_mem[mptr++] = 0x601c0000; // 8: LOD (R12),R0 // Check the result
tb->m_mem[mptr++] = 0x00000000; // A: CMP $0,R0
tb->m_mem[mptr++] = 0x2f4f0001; // B: BNZ $1+PC
tb->m_mem[mptr++] = 0xbe000010; // C: HALT // On SUCCESS
tb->m_mem[mptr++] = 0x2f0f7fff; // D: BRA PC-1 // On FAILURE
*/
 
if (argc <= 1) {
tb->m_mem[mptr++] = zp.op_clr(zp.ZIP_R0); // 0: CLR R0
tb->m_mem[mptr++] = zp.op_mov(zp.ZIP_R0,zp.ZIP_R1); // 1: MOV R0,R1
tb->m_mem[mptr++] = zp.op_mov(1,zp.ZIP_R0,zp.ZIP_R2); // 2: MOV $1+R0,R2
937,6 → 900,20
// And, in case we miss a halt ...
tb->m_mem[mptr++] = zp.op_halt(); // HALT
 
} else {
for(int argn=1; argn<argc; argn++) {
if (access(argv[argn], R_OK)==0) {
FILE *fp = fopen(argv[argn], "r");
if (fp == NULL) {
printf("Cannot open %s\n", argv[argn]);
perror("O/S Err: ");
exit(-1);
} mptr += fread(&tb->m_mem[mptr], sizeof(ZIPI), tb->m_mem_size - mptr, fp);
fclose(fp);
}
}
}
 
tb->reset();
int chv = 'q';
const bool live_debug_mode = true;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.