A student writes: I have a couple of questions to ask. A long time ago, I found a man who would always answer a question with a question. This seems appropriate here. If you are not able to see what I am getting at by my use of questions, please ask again, and I will try another tack. (a) At initialization, the PC value is set to x3000, all registers are initialized to x0, and very interestingly, the NZP flag-bits are also *all* reset. That causes problems if the first instruction itself is a branch. It can be argued that since the condition codes have not been set by any instruction, it is illegal to Nope. Not illegal. Just silly on the part of the programmer. branch conditionally. However, due to this inconsistency (exactly one bit among NZP not begin 1), even a Branch Always instruction fails to branch! So, why not just initialize the NZP state to say 010 by default? Branch instructions are taken or not taken depending on the condition code set by the previous instruction that set condition codes. Does it make sense for the first instruction to be a conditional branch instruction? What will the simulator do if the condition codes are 000 when the first instruction of the application program is a conditional branch? Is that sufficient to make this a non-problem? (b) What should our simulator do when it encounters an input that could not have been generated by a (non-buggy) LC-3b assembler? -- eg, if the opcode is set to 0xa or 0xb, or if How could a non-buggy assembler generate either of these two opcodes? the unused bits of a JMP instruction are not all zeroes, or if bit 5 of an ADD instruction is zero (which means no immediate value following), but bits 4:3 are not zeroes, etc? Why would a non-buggy assembler do that? Yale Patt