Code analyzer
This feature is included into both DOS and UNIX versions. Code
analyzer analyzes the code of the simulated program and tries to
figure out which address contains valid instruction. Analyzer starts
analyzing of the code with address 0 which always must contain an
instruction because reset of the device sets zero into program
counter. So, analyzer marks address 0 that it contains an
instruction. Then it marks the address of the next instruction and so
on. If the analyzer finds a jump instruction it continues with
destination address of the jump instruction. If it finds a
call instruction, it recursively analyzes destination address
as well as next instruction follows the call one. Analyzator
stops if it finds an address which is already marked or if it finds a
return instruction or an indirect jump which is
impossible to follow. All these mean that it is impossible to discover
all instructions of the program.
This problem is solved in very simple way in UNIX version. If the
execution reaches an umarked address, the analyzer is called to
analyze the code starting at actual address pointed by the PC. This
method is not included into DOS version but this re-analyzation can be
requested by pressing Ctrl-F7 at any time.