Commit Diff


commit - be6fc12c3675954cf25b7f1f14171e26e2311d16
commit + 49d8299adf0e869e0c2df7a590b02707b404e982
blob - 1eaee9aedbcc5c9ea070e2047afce1be158c819e
blob + a3c5dd0d1b330bc5cb32946fe2847adbf5f54e50
--- .gitignore
+++ .gitignore
@@ -1,4 +1,3 @@
 hackem
 rom
 *.rom
-*.tsv
blob - 8f9f873b16c2d1b01be92656a42a8395c00331ee
blob + 3d05b933ee1bcc2721890c605a449cf819aafd12
--- Makefile
+++ Makefile
@@ -1,9 +1,15 @@
 CFLAGS += -Wall
 
-.PHONY: all roms
-all: hackem rom roms
-roms: add.rom max.rom term0.rom term1.rom term2.rom
+PROGS = hackem rom
+ROMS = add.rom max.rom term0.rom term1.rom term2.rom
 
+.PHONY: all test clean
+all: ${PROGS} ${ROMS}
+clean:
+	rm -f ${PROGS} ${ROMS}
+test: all
+	sh test.sh ${ROMS}
+
 .SUFFIXES: .hack .rom .tsv
 .hack.rom:
 	./rom $@ < $<
blob - /dev/null
blob + 7136a70eeed4cd04bc2191495bd3ffd9cb32d9cc (mode 644)
--- /dev/null
+++ add.tsv
@@ -0,0 +1,9 @@
+T	PC	instr.	A	D	R0/SP	R1/LCL	R2/ARG	R3/THIS	R4/THAT
+0	0	000002	0	0	0	0	0	0	0
+1	1	166020	2	0	0	0	0	0	0
+2	2	000003	2	2	0	0	0	0	0
+3	3	160220	3	2	0	0	0	0	0
+4	4	000000	3	5	0	0	0	0	0
+5	5	161410	0	5	0	0	0	0	0
+6	6	000007	0	5	5	0	0	0	0
+7	7	165007	7	5	5	0	0	0	0
blob - /dev/null
blob + 00b0dbcbe6317c1d415b054519ed3056358bd373 (mode 644)
--- /dev/null
+++ max.tsv
@@ -0,0 +1,23 @@
+T	PC	instr.	A	D	R0/SP	R1/LCL	R2/ARG	R3/THIS	R4/THAT
+0	0	000015	0	0	0	0	0	0	0
+1	1	166020	13	0	0	0	0	0	0
+2	2	000000	13	13	0	0	0	0	0
+3	3	171410	0	13	0	0	0	0	0
+4	4	000021	0	13	13	0	0	0	0
+5	5	166020	17	13	13	0	0	0	0
+6	6	000001	17	17	13	0	0	0	0
+7	7	171410	1	17	13	0	0	0	0
+8	8	000000	1	17	13	17	0	0	0
+9	9	176020	0	17	13	17	0	0	0
+10	10	000001	0	13	13	17	0	0	0
+11	11	172320	1	13	13	17	0	0	0
+12	12	000022	1	-4	13	17	0	0	0
+13	13	161401	18	-4	13	17	0	0	0
+14	14	000001	18	-4	13	17	0	0	0
+15	15	176020	1	-4	13	17	0	0	0
+16	16	000024	1	17	13	17	0	0	0
+17	17	165207	20	17	13	17	0	0	0
+18	20	000002	20	17	13	17	0	0	0
+19	21	161410	2	17	13	17	0	0	0
+20	22	000026	2	17	13	17	17	0	0
+21	23	165207	22	17	13	17	17	0	0
blob - /dev/null
blob + cc6e02926d8eca45adcaf77692a0d04caae9621e (mode 644)
--- /dev/null
+++ term0.tsv
@@ -0,0 +1,2 @@
+T	PC	instr.	A	D	R0/SP	R1/LCL	R2/ARG	R3/THIS	R4/THAT
+0	0	165007	0	0	0	0	0	0	0
blob - /dev/null
blob + 855060ba5a696b6e2b3245f3619c0016747c10f5 (mode 644)
--- /dev/null
+++ term1.tsv
@@ -0,0 +1,4 @@
+T	PC	instr.	A	D	R0/SP	R1/LCL	R2/ARG	R3/THIS	R4/THAT
+0	0	167720	0	0	0	0	0	0	0
+1	1	000002	0	1	0	0	0	0	0
+2	2	165007	2	1	0	0	0	0	0
blob - /dev/null
blob + ec2d5c39a2e9f99e760c909019ce914a8fae9513 (mode 644)
--- /dev/null
+++ term2.tsv
@@ -0,0 +1,5 @@
+T	PC	instr.	A	D	R0/SP	R1/LCL	R2/ARG	R3/THIS	R4/THAT
+0	0	000027	0	0	0	0	0	0	0
+1	1	166020	23	0	0	0	0	0	0
+2	2	000002	23	23	0	0	0	0	0
+3	3	165207	2	23	0	0	0	0	0
blob - /dev/null
blob + 6c52061b4721ce12e1d2cfe5e8467c575f2c4b94 (mode 644)
--- /dev/null
+++ test.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+result=0
+
+t=$(mktemp)
+for rom in "$@"
+do
+	if ! hackem -t $t $rom
+	then
+		echo ERROR: $rom
+		result=$((result | 2))
+	fi
+	if ! diff -u $(basename $rom .rom).tsv $t
+	then
+		echo FAIL: $rom
+		result=$((result | 1))
+	else
+		echo ok: $rom
+	fi
+done
+rm -f $t
+
+exit $result