1 /** 2 * Intel 8080 instruction tables. 3 */ 4 module d80.i80; 5 6 /** 7 * Strings and instruction lengths for Intel 8080. 8 */ 9 struct i80 { 10 string s; /// Instruction name 11 ubyte n; /// Length of instruction in bytes 12 } 13 14 /** 15 * Table of Intel 8080 instructions. 16 */ 17 immutable i80[] insni80 = [ 18 { "nop", 1 }, 19 { "lxi\tb, ", 3 }, 20 { "stax\tb", 1 }, 21 { "inx\tb", 1 }, 22 { "inr\tb", 1 }, 23 { "dcr", 1 }, 24 { "mvi\tb, ", 2 }, 25 { "rlc", 1 }, 26 { "nop", 1 }, 27 { "dad", 1 }, 28 { "ldax\tb", 1 }, 29 { "dcx\tb", 1 }, 30 { "inr\tc", 1 }, 31 { "dcr\tc", 1 }, 32 { "mvi\tc, ", 2 }, 33 { "rrc", 1 }, 34 { "nop", 1 }, 35 { "lxi\td, ", 3 }, 36 { "stax\td", 1 }, 37 { "inx\td", 1 }, 38 { "inr\td", 1 }, 39 { "dcr\td", 1 }, 40 { "mvi\td, ", 2 }, 41 { "ral", 1 }, 42 { "nop", 1 }, 43 { "dad\td", 1 }, 44 { "ldax\td", 1 }, 45 { "dcx\td" , 1 }, 46 { "inr\te", 1 }, 47 { "dcr\te", 1 }, 48 { "mvi\te, ", 2 }, 49 { "rar", 1 }, 50 { "nop", 1 }, 51 { "lxi\th, ", 3 }, 52 { "shld\t", 3 }, 53 { "inx\th", 1 }, 54 { "inr\th", 1 }, 55 { "dcr\th", 1 }, 56 { "mvi\th, ", 2 }, 57 { "daa", 1 }, 58 { "nop", 1 }, 59 { "dad\th", 1 }, 60 { "lhld\t", 3 }, 61 { "dcx\th", 1 }, 62 { "inr\tl", 1 }, 63 { "dcr\tl", 1 }, 64 { "mvi\tl, ", 2 }, 65 { "cma", 1 }, 66 { "nop", 1 }, 67 { "lxi\tsp, ", 3 }, 68 { "sta\t", 3 }, 69 { "inx\tsp", 1 }, 70 { "inr\tm", 1 }, 71 { "dcr\tm", 1 }, 72 { "mvi\tm, ", 2 }, 73 { "stc", 1 }, 74 { "nop", 1 }, 75 { "dad\tsp", 1 }, 76 { "lda\t", 3 }, 77 { "dcx\tsp", 1 }, 78 { "inr\ta", 1 }, 79 { "dcr\ta", 1 }, 80 { "mvi\ta, ", 2 }, 81 { "cmc", 1 }, 82 { "mov\tb, b", 1 }, 83 { "mov\tb, c", 1 }, 84 { "mov\tb, d", 1 }, 85 { "mov\tb, e", 1 }, 86 { "mov\tb, h", 1 }, 87 { "mov\tb, l", 1 }, 88 { "mov\tb, m", 1 }, 89 { "mov\tb, a", 1 }, 90 { "mov\tc, b", 1 }, 91 { "mov\tc, c", 1 }, 92 { "mov\tc, d", 1 }, 93 { "mov\tc, e", 1 }, 94 { "mov\tc, h", 1 }, 95 { "mov\tc, l", 1 }, 96 { "mov\tc, m", 1 }, 97 { "mov\tc, a", 1 }, 98 { "mov\td, b", 1 }, 99 { "mov\td, c", 1 }, 100 { "mov\td, d", 1 }, 101 { "mov\td, e", 1 }, 102 { "mov\td, h", 1 }, 103 { "mov\td, l", 1 }, 104 { "mov\td, m", 1 }, 105 { "mov\td, a", 1 }, 106 { "mov\te, b", 1 }, 107 { "mov\te, c", 1 }, 108 { "mov\te, d", 1 }, 109 { "mov\te, e", 1 }, 110 { "mov\te, h", 1 }, 111 { "mov\te, l", 1 }, 112 { "mov\te, m", 1 }, 113 { "mov\te, a", 1 }, 114 { "mov\th, b", 1 }, 115 { "mov\th, c", 1 }, 116 { "mov\th, d", 1 }, 117 { "mov\th, e", 1 }, 118 { "mov\th, h", 1 }, 119 { "mov\th, l", 1 }, 120 { "mov\th, m", 1 }, 121 { "mov\th, a", 1 }, 122 { "mov\tl, b", 1 }, 123 { "mov\tl, c", 1 }, 124 { "mov\tl, d", 1 }, 125 { "mov\tl, e", 1 }, 126 { "mov\tl, h", 1 }, 127 { "mov\tl, l", 1 }, 128 { "mov\tl, m", 1 }, 129 { "mov\tl, a", 1 }, 130 { "mov\tm, b", 1 }, 131 { "mov\tm, c", 1 }, 132 { "mov\tm, d", 1 }, 133 { "mov\tm, e", 1 }, 134 { "mov\tm, h", 1 }, 135 { "mov\tm, l", 1 }, 136 { "hlt", 1 }, 137 { "mov\tm, a", 1 }, 138 { "mov\ta, b", 1 }, 139 { "mov\ta, c", 1 }, 140 { "mov\ta, d", 1 }, 141 { "mov\ta, e", 1 }, 142 { "mov\ta, h", 1 }, 143 { "mov\ta, l", 1 }, 144 { "mov\ta, m", 1 }, 145 { "mov\ta, a", 1 }, 146 { "add\tb", 1 }, 147 { "add\tc", 1 }, 148 { "add\td", 1 }, 149 { "add\te", 1 }, 150 { "add\th", 1 }, 151 { "add\tl", 1 }, 152 { "add\tm", 1 }, 153 { "add\ta", 1 }, 154 { "adc\tb", 1 }, 155 { "adc\tc", 1 }, 156 { "adc\td", 1 }, 157 { "adc\te", 1 }, 158 { "adc\th", 1 }, 159 { "adc\tl", 1 }, 160 { "adc\tm", 1 }, 161 { "adc\ta", 1 }, 162 { "sub\tb", 1 }, 163 { "sub\tc", 1 }, 164 { "sub\td", 1 }, 165 { "sub\te", 1 }, 166 { "sub\th", 1 }, 167 { "sub\tl", 1 }, 168 { "sub\tm", 1 }, 169 { "sub\ta", 1 }, 170 { "sbb\tb", 1 }, 171 { "sbb\tc", 1 }, 172 { "sbb\td", 1 }, 173 { "sbb\te", 1 }, 174 { "sbb\th", 1 }, 175 { "sbb\tl", 1 }, 176 { "sbb\tm", 1 }, 177 { "sbb\ta", 1 }, 178 { "ana\tb", 1 }, 179 { "ana\tc", 1 }, 180 { "ana\td", 1 }, 181 { "ana\te", 1 }, 182 { "ana\th", 1 }, 183 { "ana\tl", 1 }, 184 { "ana\tm", 1 }, 185 { "ana\ta", 1 }, 186 { "xra\tb", 1 }, 187 { "xra\tc", 1 }, 188 { "xra\td", 1 }, 189 { "xra\te", 1 }, 190 { "xra\th", 1 }, 191 { "xra\tl", 1 }, 192 { "xra\tm", 1 }, 193 { "xra\ta", 1 }, 194 { "ora\tb", 1 }, 195 { "ora\tc", 1 }, 196 { "ora\td", 1 }, 197 { "ora\te", 1 }, 198 { "ora\th", 1 }, 199 { "ora\tl", 1 }, 200 { "ora\tm", 1 }, 201 { "ora\ta", 1 }, 202 { "cmp\tb", 1 }, 203 { "cmp\tc", 1 }, 204 { "cmp\td", 1 }, 205 { "cmp\te", 1 }, 206 { "cmp\th", 1 }, 207 { "cmp\tl", 1 }, 208 { "cmp\tm", 1 }, 209 { "cmp\ta", 1 }, 210 { "rnz", 1 }, 211 { "pop\tb", 1 }, 212 { "jnz\t", 3 }, 213 { "jmp\t", 3 }, 214 { "cnz\t", 3 }, 215 { "push\tb", 1 }, 216 { "adi\t", 2 }, 217 { "rst\t0", 1 }, 218 { "rz", 1 }, 219 { "ret", 1 }, 220 { "jz\t", 3 }, 221 { "jmp\t", 3 }, 222 { "cz\t", 3 }, 223 { "call\t", 3 }, 224 { "aci\t", 2 }, 225 { "rst\t1", 1 }, 226 { "rnc", 1 }, 227 { "pop\td", 1 }, 228 { "jnc\t", 3 }, 229 { "out\t", 2 }, 230 { "cnc\t", 3 }, 231 { "push\td", 1 }, 232 { "sui\t", 2 }, 233 { "rst\t2", 1 }, 234 { "rc", 1 }, 235 { "ret", 1 }, 236 { "jc\t", 3 }, 237 { "in\t", 2 }, 238 { "cc\t", 3 }, 239 { "call\t", 3 }, 240 { "sbi\t", 2 }, 241 { "rst\t3", 1 }, 242 { "rpo", 1 }, 243 { "pop\th", 1 }, 244 { "jpo\t", 3 }, 245 { "xthl", 1 }, 246 { "cpo\t", 3 }, 247 { "push\th", 1 }, 248 { "ani\t", 2 }, 249 { "rst\t4", 1 }, 250 { "rpe", 1 }, 251 { "pchl", 1 }, 252 { "jpe\t", 3 }, 253 { "xchg", 1 }, 254 { "cpe\t", 3 }, 255 { "call\t", 3 }, 256 { "xri\t", 2 }, 257 { "rst\t5", 1 }, 258 { "rp", 1 }, 259 { "pop\tpsw", 1 }, 260 { "jp\t", 3 }, 261 { "di", 1 }, 262 { "cp\t", 3 }, 263 { "push\tpsw", 1 }, 264 { "ori\t", 2 }, 265 { "rst\t6", 1 }, 266 { "rm", 1 }, 267 { "sphl", 1 }, 268 { "jm\t", 3 }, 269 { "ei", 1 }, 270 { "cm\t", 3 }, 271 { "call\t", 3 }, 272 { "cpi\t", 2 }, 273 { "rst\t7", 1 } 274 ];