From 611f51201f2420db4f2bd659b2582c30761d6abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Kujawa?= Date: Wed, 18 Jan 2017 12:08:55 +0100 Subject: [PATCH] Generate instruction set from CSV file and awk script. --- src/65c02isa.awk | 24 +++++ src/65c02isa.csv | 256 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 280 insertions(+) create mode 100755 src/65c02isa.awk create mode 100644 src/65c02isa.csv diff --git a/src/65c02isa.awk b/src/65c02isa.awk new file mode 100755 index 0000000..bbf77f9 --- /dev/null +++ b/src/65c02isa.awk @@ -0,0 +1,24 @@ +BEGIN { + FS="," + print "#ifndef _65C02ISA_H_" + print "#define _65C02ISA_H_" + print "#include " + print "#include \"instruction.h\"" + + print "const struct instrdef instrs[] = {" +} + +{ + printf "#define %s 0x%X\n", $1, NR-1 + if (NR < 256) + printf "\t{ %s, %s, %s, %d },\n", $1, $2, $3, $4 + else + printf "\t{ %s, %s, %s, %d }\n", $1, $2, $3, $4 + +} + +END { + print "};" + print "#endif /* _65C02ISA_H_ */" +} + diff --git a/src/65c02isa.csv b/src/65c02isa.csv new file mode 100644 index 0000000..eedb3f4 --- /dev/null +++ b/src/65c02isa.csv @@ -0,0 +1,256 @@ +OP_BRK,"brk",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_NOPI,"nop",IMMEDIATE,2, +OP_NOPI,"nop",IMPLIED,1, +OP_TSB_ZP,"tsb",ZP,2, +OP_ORA_ZP,"ora",ZP,2, +OP_ASL_ZP,"asl",ZP,2, +OP_RMB0_ZP,"rmb0",ZP,2, +OP_PHP,"php",IMPLIED,1, +OP_ORA_IMM,"ora",IMMEDIATE,2, +OP_ASL_ACC,"asl",ACCUMULATOR,1, +OP_NOPI,"nop",IMPLIED,1, +OP_TSB_ABS,"tsb",ABSOLUTE,3, +OP_ORA_ABS,"abs",ABSOLUTE,3, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_JSR,"jsr",ABSOLUTE,3, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_LDY_IMM,"ldy",IMMEDIATE,2, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_STP,"stp",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_INX,"inx",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_NOP,"nop",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1, +OP_UNIMPL,"unimpl",IMPLIED,1,