Line 33... |
Line 33... |
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, " [-t <n>] connect n terminals (0-%d)\n",
|
fprintf(stderr, " [-t <n>] connect n terminals (0-%d)\n",
|
MAX_NTERMS);
|
MAX_NTERMS);
|
|
fprintf(stderr, " [-n <k>] no terminal on line k (0-%d)\n",
|
|
MAX_NTERMS - 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");
|
|
fprintf(stderr, "The option -n leaves the specified serial line ");
|
|
fprintf(stderr, "unconnected.\nIt can be accessed from within another ");
|
|
fprintf(stderr, "process by opening\nthe corresponding pseudo terminal ");
|
|
fprintf(stderr, "(path will be shown here).\n");
|
exit(1);
|
exit(1);
|
}
|
}
|
|
|
|
|
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
int i;
|
int i, j;
|
char *argp;
|
char *argp;
|
char *endp;
|
char *endp;
|
Bool interactive;
|
Bool interactive;
|
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 numTerms;
|
|
Bool hasTerm[MAX_NTERMS];
|
Bool graphics;
|
Bool graphics;
|
Bool console;
|
Bool console;
|
char *outputName;
|
char *outputName;
|
Word initialPC;
|
Word initialPC;
|
char command[20];
|
char command[20];
|
Line 67... |
Line 74... |
progName = NULL;
|
progName = NULL;
|
loadAddr = 0;
|
loadAddr = 0;
|
romName = NULL;
|
romName = NULL;
|
diskName = NULL;
|
diskName = NULL;
|
numTerms = 0;
|
numTerms = 0;
|
|
for (j = 0; j < MAX_NTERMS; j++) {
|
|
hasTerm[j] = true;
|
|
}
|
graphics = false;
|
graphics = false;
|
console = false;
|
console = false;
|
outputName = NULL;
|
outputName = NULL;
|
for (i = 1; i < argc; i++) {
|
for (i = 1; i < argc; i++) {
|
argp = argv[i];
|
argp = argv[i];
|
Line 129... |
Line 139... |
numTerms < 0 ||
|
numTerms < 0 ||
|
numTerms > MAX_NTERMS) {
|
numTerms > MAX_NTERMS) {
|
usage(argv[0]);
|
usage(argv[0]);
|
}
|
}
|
break;
|
break;
|
|
case 'n':
|
|
if (i == argc - 1) {
|
|
usage(argv[0]);
|
|
}
|
|
j = strtol(argv[++i], &endp, 10);
|
|
if (*endp != '\0' ||
|
|
j < 0 ||
|
|
j > MAX_NTERMS - 1) {
|
|
usage(argv[0]);
|
|
}
|
|
hasTerm[j] = false;
|
|
break;
|
case 'g':
|
case 'g':
|
graphics = true;
|
graphics = true;
|
break;
|
break;
|
case 'c':
|
case 'c':
|
console = true;
|
console = true;
|
Line 158... |
Line 180... |
timerInit();
|
timerInit();
|
if (console) {
|
if (console) {
|
displayInit();
|
displayInit();
|
keyboardInit();
|
keyboardInit();
|
}
|
}
|
termInit(numTerms);
|
termInit(numTerms, hasTerm);
|
diskInit(diskName);
|
diskInit(diskName);
|
outputInit(outputName);
|
outputInit(outputName);
|
shutdownInit();
|
shutdownInit();
|
if (graphics) {
|
if (graphics) {
|
graphInit();
|
graphInit();
|