simh-testsetgenerator/SDS
Mark Emmer 4bd2eb72de SDS: Corrections to memory trap logic
1. In sim_instr, if an Unauthorized Memory Access trap occurs, the code was enforcing the 940 Reference Manual's admonition that:
    "The instruction in the trap location must be a MARK PLACE AND BRANCH (BRM) instruction."
Normally there is a BRM TRAPM in location 041, but when exploring a memory trap, the TSS monitor code at CEX (SMEM) temporarily puts a BRU CEX2+1 in location 041.

Clearly the hardware allows BRU in the trap transfer vector, because the system uses that feature. Change simulator to allow BRM or BRU in Unauthorized Memory Access Trap vector word in location 041.

2. Page 17 of the 940 reference manual specifies special actions when the target address of a BRU, BRX, BRM or BRR instruction cannot be accessed because it's not in the memory map. The simulator was not doing this, causing TRAPM to operate with the address of the BR? instruction instead of its target address.   The result was to allocate a page of zeros, which then trapped when the branch completed and transferred to a HLT instruction.

By modifying the code in sds_cpu.c to provide the correct trap address, monitor code TRAPM does not allocate a page, and instead allows any user-defined trap to fire off.  This fixes the problem with DDT, which relies on this trap to then map in the DDT SBREK page to 34000 and then complete the transfer to it for command processing.
2015-02-02 21:00:05 -06:00
..
sds_cpu.c SDS: Corrections to memory trap logic 2015-02-02 21:00:05 -06:00
sds_defs.h SDS: Corrections to memory trap logic 2015-02-02 21:00:05 -06:00
sds_diag.txt Notes For V2.10-4 2011-04-15 08:34:03 -07:00
sds_drm.c Compiler nits for void * assignments from Bob Supnik 2013-09-04 19:50:47 -07:00
sds_dsk.c Cleanup for warning messages produced by the clang C compiler. Mostly adding parentheses in conditional assignments and clarification parentheses in complex boolean expressions. 2012-04-29 11:59:44 -07:00
sds_io.c SDS: Fix intermittent I/O data errors when two or more I/O channels active 2015-01-19 19:29:28 -06:00
sds_lp.c SDS: Add different 6-bit internal to/from ASCII character conversion tables for 940 mode 2015-01-31 23:18:04 -06:00
sds_mt.c Set device flags indicating DEV_DISK, DEV_TAPE, DEV_MUX and DEV_ETHER for all simulator devices which use the sim_disk, sim_tape, sim_tmxr, and sim_ether libraries 2013-01-07 12:47:24 -08:00
sds_mux.c SDS: Various fixes to asynchronous communication mux 2014-03-02 22:26:44 -06:00
sds_rad.c SDS: Further refinement to bootstrap from RAD, update SDS documentation 2014-03-17 17:48:59 -06:00
sds_stddev.c SDS: Add different 6-bit internal to/from ASCII character conversion tables for 940 mode 2015-01-31 23:18:04 -06:00
sds_sys.c SDS: Corrections to memory trap logic 2015-02-02 21:00:05 -06:00