Line 3... |
Line 3... |
#include "env_memory.h"
|
#include "env_memory.h"
|
#include "tv_responder.h"
|
#include "tv_responder.h"
|
#include "Vtv80s.h"
|
#include "Vtv80s.h"
|
#include "SpTraceVcd.h"
|
#include "SpTraceVcd.h"
|
#include <unistd.h>
|
#include <unistd.h>
|
|
#include "z80_decoder.h"
|
|
|
extern char *optarg;
|
extern char *optarg;
|
extern int optind, opterr, optopt;
|
extern int optind, opterr, optopt;
|
|
|
int sc_main(int argc, char *argv[])
|
int sc_main(int argc, char *argv[])
|
Line 15... |
Line 16... |
bool memfile = false;
|
bool memfile = false;
|
int index;
|
int index;
|
char *dumpfile_name;
|
char *dumpfile_name;
|
char *mem_src_name;
|
char *mem_src_name;
|
SpTraceFile *tfp;
|
SpTraceFile *tfp;
|
|
z80_decoder dec0 ("dec0");
|
|
|
while ( (index = getopt(argc, argv, "d:i:")) != -1) {
|
while ( (index = getopt(argc, argv, "d:i:k")) != -1) {
|
printf ("DEBUG: getopt optind=%d index=%d char=%c\n", optind, index, (char) index);
|
printf ("DEBUG: getopt optind=%d index=%d char=%c\n", optind, index, (char) index);
|
if (index == 'd') {
|
if (index == 'd') {
|
dumpfile_name = new char(strlen(optarg)+1);
|
dumpfile_name = new char(strlen(optarg)+1);
|
strcpy (dumpfile_name, optarg);
|
strcpy (dumpfile_name, optarg);
|
dumping = true;
|
dumping = true;
|
printf ("VCD dump enabled to %s\n", dumpfile_name);
|
printf ("VCD dump enabled to %s\n", dumpfile_name);
|
} else if (index == 'i') {
|
} else if (index == 'i') {
|
mem_src_name = new char(strlen(optarg)+1);
|
mem_src_name = new char(strlen(optarg)+1);
|
strcpy (mem_src_name, optarg);
|
strcpy (mem_src_name, optarg);
|
memfile = true;
|
memfile = true;
|
|
} else if (index == 'k') {
|
|
printf ("Z80 Instruction decode enabled\n");
|
|
dec0.en_decode = true;
|
}
|
}
|
}
|
}
|
sc_clock clk("clk125", 8, SC_NS, 0.5);
|
sc_clock clk("clk125", 8, SC_NS, 0.5);
|
|
|
sc_signal<bool> reset_n;
|
sc_signal<bool> reset_n;
|
Line 97... |
Line 102... |
tv_resp0.addr (addr);
|
tv_resp0.addr (addr);
|
tv_resp0.di_resp (di_resp);
|
tv_resp0.di_resp (di_resp);
|
tv_resp0.dout (dout);
|
tv_resp0.dout (dout);
|
tv_resp0.halt_n (halt_n);
|
tv_resp0.halt_n (halt_n);
|
|
|
|
dec0.clk (clk);
|
|
dec0.m1_n (m1_n);
|
|
dec0.addr (addr);
|
|
dec0.mreq_n (mreq_n);
|
|
dec0.rd_n (rd_n);
|
|
dec0.wait_n (wait_n);
|
|
dec0.di (di);
|
|
dec0.reset_n (reset_n);
|
|
|
// create dumpfile
|
// create dumpfile
|
/*
|
/*
|
sc_trace_file *trace_file;
|
sc_trace_file *trace_file;
|
trace_file = sc_create_vcd_trace_file("sc_tv80_env");
|
trace_file = sc_create_vcd_trace_file("sc_tv80_env");
|
sc_trace (trace_file, clk, "clk");
|
sc_trace (trace_file, clk, "clk");
|