- Add new CP and CR devices - COC: Zero delay from SIO to INIT state Detect and UEN on 0xFF order - COC: Moved SIO int pending test to devices - DK: Zero delay from SIO to INIT state - DP: Added case points for RDEES, dp_aio_status - DP: Zero delay from SIO to INIT state - defs: Added chaining modifier flag - defs: Fixed DVT_NODEV definition - defs: Added chan_chk_dvi definition - io: Added chaining modifier flag - LP: Zero delay from SIO to INIT state - LP: Added INIT test for illegal command - LP: Moved SIO interrupt test to devices - MT: Zero delay from SIO to INIT state - PT: Zero delay from SIO to INIT state - PT: Moved SIO interrupt test to devices - RAD: Zero delay from SIO to INIT state - RAD: Fixed nx unit test - RAD: Fixed write protect test - TT: Zero delay from SIO to INIT state - TT: Moved SIO int pending test to devices
177 lines
9.8 KiB
Text
177 lines
9.8 KiB
Text
1. CPU: register pointer was being loaded from PSW1 instead of PSW2.
|
|
2. CPU: register pointer was not preserved on an XPSD 0.
|
|
3. CPU: some decode points were taking unimplemented rather than non-existent
|
|
instruction traps.
|
|
4. CPU: BDR branches on result >=0, instead of > 0.
|
|
5. CPU: PSD change instructions were not saving old PC in PC queue.
|
|
6. CPU: illegal register pointer does not stop the system on the Sigma 5-7;
|
|
instead, registers read as 0's, and writes are ignored.
|
|
7. CPU: traps were setting the Sigma 9 vector field unconditionally.
|
|
8. CPU: CH does not SEXT Rn<16:31>.
|
|
9. CPU: MTW and MTH overflow traps not implemented.
|
|
10. CPU: MTH condition code calculations not implemented correctly.
|
|
11. CPU: illegal shift opcodes on the Sigma 5-7 are treated as arithmetic
|
|
single (according to the AUTO diagnostic).
|
|
12. FP: SF did not calculate condition codes correctly.
|
|
13. FP: SF left did not detect normalized if the count reached zero.
|
|
14. FP: SF right was retaining a guard digit incorrectly.
|
|
15. FP: SF right test was not taking into account single/double precision.
|
|
16. FP: fp_unpack killed the operand sign before testing it.
|
|
17. FP: fp_pack did not recomplement a negative operand.
|
|
18. CPU: DW overflow test was incorrect.
|
|
19. IO: device status bit field was incorrectly defined.
|
|
20. IO: AIO was testing for == 0 instead of != 0.
|
|
21. TT: input keyboard character mappings were incorrect.
|
|
22. SYS: shifts were not displaying or accepting an index register.
|
|
23. CPU: mapping from pulse interrupt number to counter interrupt number
|
|
was incorrect.
|
|
24. CPU, CIS: handling of instructions aborts was incorrect.
|
|
25. CPU: CC2,4 set incorrectly on aborted stack instruction.
|
|
26. CPU: CC2,4 set incorrectly on MSP,0 instruction.
|
|
27. CPU: PLW not converting operand address to byte address.
|
|
28. CPU: PSM, PLM not converting limit operand address to byte address correctly.
|
|
29. CPU: PLM wrote registers in inverse order.
|
|
30. Definitions: number of virtual, physical pages derived incorrectly.
|
|
31. MAP: MMC control set wrap incorrect.
|
|
32. MAP: MMC register update of Rn|1 incorrect.
|
|
33. CPU: CBS set CC's incorrectly on unequal.
|
|
34. CPU: TTBS set CC's incorrectly on early exit.
|
|
35. IO: chan_proc_epilog and four other routines extracted device address incorrectly.
|
|
36. CPU: DW was fetching halfwords instead of words.
|
|
37. CPU: multiples were not setting condition codes on 0 operands.
|
|
38. FP: floating add zero test on second operand was inverted.
|
|
39. FP: floating add zero cases failed to set the result variable.
|
|
40. FP: floating add zero cases failed to go through postnormalization logic.
|
|
41. FP: double precision add macro lost high carry out.
|
|
42. FP: double precision add macro had an undocumented restriction about operands.
|
|
43. FP: all double precision instructions unpacked the wrong low order memory operand.
|
|
44. FP: normalization failed to decrement the exponent.
|
|
45. FP: in single precision, removing the guard digit created a spurious low-order digit.
|
|
46. FP: denormalization failed to clear the low word (single precision).
|
|
47. FP: denormalization failed to clear the guard digit (double precision).
|
|
48. FP: add/subtract failed to treat abnormal 0's as normal numbers.
|
|
49. CIS: WriteDecA set local rather than global condition codes.
|
|
50. CIS: Illegal digit check missed byte 0.
|
|
51. CIS: Overflow check set wrong condition codes.
|
|
52. CIS: NibbleLShift routine overflow check was (also broken in VAX, PDP11).
|
|
53. CIS: WordLShift routine overflow check was wrong (also broken in VAX, PDP11).
|
|
54. CIS: WordLShift had signed/unsigned variable conflict in compare.
|
|
55. CIS: WriteDecA not setting correct condition codes for -0.
|
|
55. CIS: WriteDECA not clearing CC3/4 before setting.
|
|
56. CIS: DM shift-and-test loop did 14 iterations instead of 15.
|
|
57. CIS: DM final shift of 16 done outside non-zero case instead of inside.
|
|
58. CIS: DD put quotient and remainder in wrong registers.
|
|
59. CIS: DD did not shift remainder to proper place, based on dividend/divisor widths.
|
|
60. CIS: DD overflow test missed exact 16 digit quotient case.
|
|
61. CIS: algorithm to compute length of operand failed for certain lengths (also broken
|
|
in VAX, PDP11).
|
|
62. CIS: DM and DD answer was wrong on restart cases. [NOT FIXED YET]
|
|
63. CIS: EBS fetched pattern from wrong address pointer.
|
|
64. CIS: EBS field separator wrote wrong byte.
|
|
65. MAP: Access codes defined incorrectly for access protection check.
|
|
66. CPU: LPSD fetching operands with write check rather than read check.
|
|
67. CPU: Illegal instruction stop (and other trap stops) weren't rolling back the PC.
|
|
68. CPU: History routine merged CC's into history array incorrectly.
|
|
69. CPU: History routine stored incremented rather than actualy PC.
|
|
70. CPU: History reporting routine printed wrong operand value, due to colliding declarations.
|
|
71. IO: Power up/down interrupts should not be implemented.
|
|
72. IO: WD was not recalculating int_hiact.
|
|
73. IO: Interrupt chain was not linked at powerup.
|
|
74. IO: Interrupt chain link algorithm was wrong.
|
|
75. IO: WD processing was spanning [beg,end) rather than [beg,end].
|
|
76. RTC: RTC interrupts were happening at the wrong level.
|
|
77. PTR: leader skip was testing for channel end.
|
|
78. PTR: leader skip was testing per command instead of per reel/file.
|
|
79. PTR: end of file was treated as fatal error instead of channel end + length error.
|
|
80. PTR, PTP: units were not marked UNIT_SEQ.
|
|
81. LPT: unit was not marked UNIT_SEQ.
|
|
82. IO: device address set/show updated/displayed wrong field in single unit devices.
|
|
83. CPU: address calculation for MTx in interrupt location used incorrect length.
|
|
84. LPT: print, format opcode definitions inverted.
|
|
85. LPT: wrong index used to count buffer fill loop.
|
|
86. IO: CPU/IOP communications through 20/21 were not modelled.
|
|
87. CIS: Multiply algorithm incorrect, multiply restart not modelled.
|
|
88. CIS: Divide algorithm incorrect, divide restart not modelled.
|
|
89. IO: WD .44 not recognized as effective NOP.
|
|
90. CPU: Sigma 5 (uniquely) does not implement CVA or CVS.
|
|
91. IO: AIO merging status incorrectly.
|
|
92. IO: system for returning status byte from IO was muddled; rewrite required.
|
|
93. RAD: 7232 track shift offset was incorrectly defined.
|
|
94. CPU: MTX for interrupts returned wrong value.
|
|
95. CPU: Counter overflow trigger equation was incorrect.
|
|
96. CPU: MTX interrupts not recalculating interrupt summary values.
|
|
97. RTC: SET/SHOW C1-C4 routines were broken.
|
|
98. DP: comparison for sector field overflow was incorrect.
|
|
99. DP: cross-cylinder incorrectly set on read to end of cylinder.
|
|
100. DP: seek never executed.
|
|
101. DP: seek followon state codes set incorrectly.
|
|
102. DP: cylinder offset defined incorrectly.
|
|
103. DP: SIO not initing unit thread properly for non-zero units.
|
|
104. MUX: Line enable must be remembered for lines that are not currently connected.
|
|
105. RAD: write check was reading words off disk instead of bytes.
|
|
106. RAD: end of transfer routine checking for address error incorrectly.
|
|
107. DK: end of transfer routine checking for address error incorrectly.
|
|
108. DP: TIO status routine always returns DVS_AUTO instead of proper status.
|
|
109. DP: DP_SEEK definition is off by 1.
|
|
110. DP: reset does not properly initialize controller, seek threads.
|
|
111. DP, DK, MT, RAD: device address must include unit identifier everywhere, for interrupt generation.
|
|
112. MT: error handling not consistent.
|
|
113: IO: dangling else in write direct mode 1 code causes incorrect behavior.
|
|
114: CPU: sim_interval is decremented before breakpoint test, which is incorrect.
|
|
115. MT: revised error handling failed to set tape mark status on space file forward/reverse.
|
|
116. IO: UEND flag in the wrong bit position in status word.
|
|
117. DP: SEEK(I), RECAL(I) must be coded as fast operations.
|
|
118. COC: Transmit long space is 0x6, and stop transmit is 0xE.
|
|
119. COC: Received break generates a data-in channel transaction with a flag bit set
|
|
in the line number.
|
|
120. DP: dp_inv_adr error must set a TDV visible flag (i.e., PGE) before UEND.
|
|
121. IO, all devices: moved SIO reject-on-interrupt test to devices.
|
|
122. DP: SIO will knock down pending device interrupts and allow operation to proceed.
|
|
123. MT: AIO must mask unit number before calling TDV status.
|
|
124. IO: location 20/21 set incorrectly in the even, non-zero register case.
|
|
125. CPU: WAIT must be implemented for correct operation of CP-V.
|
|
126. DP: On 10 byte models, SENSE length errors can't happen. On 16 byte models,
|
|
SENSE length errors only occur if length == 0 || length > 16.
|
|
127. IO: DVT_NOTDEV macro incorrect.
|
|
128. DP, DK, MT, RAD: Test for non-existent device returns wrong status.
|
|
129. DP, DK, MT: TIO status should return non-operational for unattached device.
|
|
130. IO: Device mapping algorithm creates false dispatch points.
|
|
131. All devices: dispatch time to INIT state must be 0.
|
|
132. LPT: device must flag illegal commands in IDLE state.
|
|
133. COC: must flag 0xFF as illegal command in IDLE state.
|
|
134. IO: multiplexor channel implements a "chain modifier" capability, needed by punch.
|
|
|
|
Diagnostic Notes
|
|
----------------
|
|
|
|
1. PATTERN paper tape (SA = 60, end pass = 1AC), SET CPU RBLKS=32.
|
|
Break at 60 is triggered once during loading process.
|
|
2. VERIFY paper tape (SA = 140, end pass = 8E6).
|
|
3. AUTO paper tape (SA = 105), SET CPU LASLMS to suppress spurious error message.
|
|
AUTO magtape runs correctly with no messages.
|
|
4. SUFFIX magtape (SA = 100, end pass = 115), no printouts.
|
|
5. FLOAT magtape.
|
|
6. DECIMAL paper tape (SA = EE).
|
|
7. PROTECT paper tape (SA = F9), long runtime until printout.
|
|
8. MAP paper tape (SA = 7C).
|
|
9. MEDIC paper tape (SA = 68), set SSW2 after breakpoint, long runtime.
|
|
10. INT magtape, stops after M6, set SSW2 and continue,
|
|
enters pattern generator and loops forever, as expected.
|
|
11. RTC paper tape, clocks must be 500Mhz, reports clocks as "too slow" due
|
|
to faster simulation speed.
|
|
Runs correctly with SET THROTTLE 500K.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|