Add step 1 of assembler
diff --git a/as/main.c b/as/main.c
new file mode 100644
index 0000000..cf966f8
--- /dev/null
+++ b/as/main.c
@@ -0,0 +1,44 @@
+#include "as.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <bits/getopt_core.h>
+#include <unistd.h>
+
+int main(int argc, char **argv)
+{
+	char c;
+	FILE *in = stdin,
+		*out = stdout;
+
+	while ((c = getopt(argc, argv, "i:o:")) != -1)
+	{
+		switch (c)
+		{
+		case 'i':
+			in = fopen(optarg, "r");
+			break;
+		case 'o':
+			out = fopen(optarg, "w");
+			break;
+		case 'h':
+		case '?':
+			printf("6502 assembler\n"
+				   "Usage:\n"
+				   "    -i <input> set input file (default stdin)\n"
+				   "    -o <output> set output file (default stdout)\n");
+		}
+	}
+
+	fseek(in, 0, SEEK_END);
+	ssize_t len = ftell(in);
+	fseek(in, 0, SEEK_SET);
+
+	char *text = malloc(len + 1);
+	fread(text, len, 1, in);
+	text[len] = 0;
+
+	uint32_t built = assemble(text, out);
+
+	free(text);
+}