summaryrefslogtreecommitdiff
path: root/src/sim86/sim86.mdesk
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim86/sim86.mdesk')
-rw-r--r--src/sim86/sim86.mdesk32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/sim86/sim86.mdesk b/src/sim86/sim86.mdesk
new file mode 100644
index 0000000..0635110
--- /dev/null
+++ b/src/sim86/sim86.mdesk
@@ -0,0 +1,32 @@
+@table(name, str) sim86_flags_mapping:
+{
+ { Carry, "C", }
+ { Parity, "P", }
+ { AuxiliaryCarry, "A", }
+ { Zero, "Z", }
+ { Sign, "S", }
+ { Overflow, "O", }
+ { Interrupt, "I", }
+ { Direction, "D", }
+ { Trap, "T", }
+}
+
+@table_gen_enum_flags(sim86_flags_mapping, name) flags_8086
+@table_gen_data(sim86_flags_mapping, `char *`, str) flags_8086_strings
+
+// TODO:
+@table_gen_enum sim86_enum:
+{
+ @expand(sim86_flags_mapping mapping)
+ `Sim86_$(mapping.name),`
+ `Sim86_Count`
+}
+
+@table(mnemonic, encoding, clocks, name) instructions_table:
+{
+ { mov, [ B:100010, D, W, MOD, REG, RM ], 4, "Register/memory to/from register" }
+ { mov, [ B:1100011, W, MOD, B:000, RM, ImpD:0, DATA, DATA_IF_W ], 5, "Immediate to register/memory" }
+ { mov, [ B:1011, W, REG, ImpD:1 ], 3, "Immediate to register" }
+}
+
+