#include "cpu.h"
#include "dbg.h"

#include <bits/getopt_core.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char **argv)
{
	bool disflag = 0,
		runflag = 0,
		helpflag = 0,
		debugflag = 0,
		should_read = 0;

	FILE *input = stdin;

	char c;

	while ((c = getopt(argc, argv, "Ddrhi:")) != -1)
	{
		switch (c)
		{
		case 'd':
			disflag = true;
			should_read = true;
			break;
		case 'r':
			runflag = true;
			should_read = true;
			break;
		case 'D':
			debugflag = true;
			should_read = true;
			break;
		case 'i':
			input = fopen(optarg, "r");
			break;
		case 'h':
		case '?':
			helpflag = 1;
			break;
		}
	}

	if (helpflag)
	{
		printf("6502 emulator, disassembler and debugger\n"
			"Usage:\n"
			"	-d disassemble input\n"
			"	-r run input\n"
			"	-D debug input (open debug prompt)\n"
			"	-i <input> set input file, defaults to standard input\n"
			"	-h, -? show this help page\n");
		return 0;
	}

	cpu_t cpu;

	if (should_read)
	{
		cpu = new_cpu();
		fread(cpu.mem, 0xFFFF, 1, input);
	}

	if (disflag)
	{
		disas(&cpu);
	}
	else if (debugflag)
	{
		debug(&cpu);
	}
	
	if (should_read)
		free_cpu(&cpu);
}
