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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [sim/] [main.c] - Diff between revs 244 and 246

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 244 Rev 246
Line 15... Line 15...
#include "cpu.h"
#include "cpu.h"
#include "mmu.h"
#include "mmu.h"
#include "memory.h"
#include "memory.h"
#include "timer.h"
#include "timer.h"
#include "dspkbd.h"
#include "dspkbd.h"
#include "term.h"
#include "serial.h"
#include "disk.h"
#include "disk.h"
#include "output.h"
#include "output.h"
#include "shutdown.h"
#include "shutdown.h"
#include "graph.h"
#include "graph.h"
 
 
Line 32... Line 32...
  fprintf(stderr, "    [-l <prog>]    set program file name\n");
  fprintf(stderr, "    [-l <prog>]    set program file name\n");
  fprintf(stderr, "    [-a <addr>]    set program load address\n");
  fprintf(stderr, "    [-a <addr>]    set program load address\n");
  fprintf(stderr, "    [-r <rom>]     set ROM image file name\n");
  fprintf(stderr, "    [-r <rom>]     set ROM image file name\n");
  fprintf(stderr, "    [-d <disk>]    set disk image file name\n");
  fprintf(stderr, "    [-d <disk>]    set disk image file name\n");
  fprintf(stderr, "    [-s <n>]       install n serial lines (0-%d)\n",
  fprintf(stderr, "    [-s <n>]       install n serial lines (0-%d)\n",
          MAX_NTERMS);
          MAX_NSERIALS);
  fprintf(stderr, "    [-t <k>]       connect terminal to line k (0-%d)\n",
  fprintf(stderr, "    [-t <k>]       connect terminal to line k (0-%d)\n",
          MAX_NTERMS - 1);
          MAX_NSERIALS - 1);
  fprintf(stderr, "    [-g]           install graphics controller\n");
  fprintf(stderr, "    [-g]           install graphics controller\n");
  fprintf(stderr, "    [-c]           install console\n");
  fprintf(stderr, "    [-c]           install console\n");
  fprintf(stderr, "    [-o <file>]    bind output device to file\n");
  fprintf(stderr, "    [-o <file>]    bind output device to file\n");
  fprintf(stderr, "The options -l and -r are mutually exclusive.\n");
  fprintf(stderr, "The options -l and -r are mutually exclusive.\n");
  fprintf(stderr, "If both are omitted, interactive mode is assumed.\n");
  fprintf(stderr, "If both are omitted, interactive mode is assumed.\n");
Line 56... Line 56...
  int memSize;
  int memSize;
  char *progName;
  char *progName;
  unsigned int loadAddr;
  unsigned int loadAddr;
  char *romName;
  char *romName;
  char *diskName;
  char *diskName;
  int numTerms;
  int numSerials;
  Bool hasTerm[MAX_NTERMS];
  Bool connectTerminals[MAX_NSERIALS];
  Bool graphics;
  Bool graphics;
  Bool console;
  Bool console;
  char *outputName;
  char *outputName;
  Word initialPC;
  Word initialPC;
  char command[20];
  char command[20];
Line 71... Line 71...
  memSize = RAM_SIZE_DFL / M;
  memSize = RAM_SIZE_DFL / M;
  progName = NULL;
  progName = NULL;
  loadAddr = 0;
  loadAddr = 0;
  romName = NULL;
  romName = NULL;
  diskName = NULL;
  diskName = NULL;
  numTerms = 0;
  numSerials = 0;
  for (j = 0; j < MAX_NTERMS; j++) {
  for (j = 0; j < MAX_NSERIALS; j++) {
    hasTerm[j] = false;
    connectTerminals[j] = false;
  }
  }
  graphics = false;
  graphics = false;
  console = false;
  console = false;
  outputName = NULL;
  outputName = NULL;
  for (i = 1; i < argc; i++) {
  for (i = 1; i < argc; i++) {
Line 130... Line 130...
        break;
        break;
      case 's':
      case 's':
        if (i == argc - 1) {
        if (i == argc - 1) {
          usage(argv[0]);
          usage(argv[0]);
        }
        }
        numTerms = strtol(argv[++i], &endp, 10);
        numSerials = strtol(argv[++i], &endp, 10);
        if (*endp != '\0' ||
        if (*endp != '\0' ||
            numTerms < 0 ||
            numSerials < 0 ||
            numTerms > MAX_NTERMS) {
            numSerials > MAX_NSERIALS) {
          usage(argv[0]);
          usage(argv[0]);
        }
        }
        break;
        break;
      case 't':
      case 't':
        if (i == argc - 1) {
        if (i == argc - 1) {
          usage(argv[0]);
          usage(argv[0]);
        }
        }
        j = strtol(argv[++i], &endp, 10);
        j = strtol(argv[++i], &endp, 10);
        if (*endp != '\0' ||
        if (*endp != '\0' ||
            j < 0 ||
            j < 0 ||
            j > MAX_NTERMS - 1) {
            j > MAX_NSERIALS - 1) {
          usage(argv[0]);
          usage(argv[0]);
        }
        }
        hasTerm[j] = true;
        connectTerminals[j] = true;
        break;
        break;
      case 'g':
      case 'g':
        graphics = true;
        graphics = true;
        break;
        break;
      case 'c':
      case 'c':
Line 178... Line 178...
  timerInit();
  timerInit();
  if (console) {
  if (console) {
    displayInit();
    displayInit();
    keyboardInit();
    keyboardInit();
  }
  }
  termInit(numTerms, hasTerm);
  serialInit(numSerials, connectTerminals);
  diskInit(diskName);
  diskInit(diskName);
  outputInit(outputName);
  outputInit(outputName);
  shutdownInit();
  shutdownInit();
  if (graphics) {
  if (graphics) {
    graphInit();
    graphInit();
Line 215... Line 215...
  mmuExit();
  mmuExit();
  memoryExit();
  memoryExit();
  timerExit();
  timerExit();
  displayExit();
  displayExit();
  keyboardExit();
  keyboardExit();
  termExit();
  serialExit();
  diskExit();
  diskExit();
  outputExit();
  outputExit();
  shutdownExit();
  shutdownExit();
  graphExit();
  graphExit();
  cPrintf("ECO32 Simulator finished\n");
  cPrintf("ECO32 Simulator finished\n");

powered by: WebSVN 2.1.0

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