mirror of
https://github.com/simh/simh.git
synced 2026-04-27 12:28:49 +00:00
Notes For V3.9
The makefile now works for Linux and most Unix's. However, for Solaris and MacOS, you must first export the OSTYPE environment variable: > export OSTYPE > make Otherwise, you will get build errors. 1. New Features 1.1 3.9-0 1.1.1 SCP and libraries - added *nix READLINE support (Mark Pizzolato) - added "SHOW SHOW" and "SHOW <dev> SHOW" commands (Mark Pizzolato) - added support for BREAK key on Windows (Mark Pizzolato) 1.1.2 PDP-8 - floating point processor is now enabled 2. Bugs Fixed Please see the revision history on http://simh.trailing-edge.com or in the source module sim_rev.h. 3. Status Report This is the last release of SimH for which I will be sole editor. After this release, the source is moving to a public repository: under the general editorship of Dave Hittner and Mark Pizzolato. The status of the individual simulators is as follows: 3.1 PDP-1 Stable and working; runs available software. 3.2 PDP-4/7/9/15 Stable and working; runs available software. 3.3 PDP-8 Stable and working; runs available software. 3.4 PDP-10 [KS-10 only] Stable and working; runs available software. 3.5 PDP-11 Stable and working; runs available system software. The emulation of individual models has numerous errors of detail, which prevents many diagnostics from running correctly. 3.6 VAX-11/780 Stable and working; runs available software. 3.7 MicroVAX 3900 (VAX) Stable and working; runs available software. Thanks to the kind generosity of Camiel Vanderhoeven, this simulator has been verified with AXE, the VAX architectural exerciser. 3.8 Nova Stable and working; runs available software. 3.9 Eclipse Stable and working, but not really supported. There is no Eclipse-specific software available under a hobbyist license. 3.10 Interdata 16b Stable and working, but no software for it has been found, other than diagnostics. 3.11 Interdata 32b Stable and working; runs 32b UNIX and diagnostics. 3.12 IBM 1401 Stable and working; runs available software. 3.13 IBM 1620 Hand debug only. No software for it has been found or tested. 3.14 IBM 7094 Stable and working as a stock system; runs IBSYS. The CTSS extensions have not been debugged. 3.15 IBM S/3 Stable and working, but not really supported. Runs available software. 3.16 IBM 1130 Stable and working; runs available software. Supported and edited by Brian Knittel. 3.17 HP 2100/1000 Stable and working; runs available software. Supported and edited by Dave Bryan. 3.18 Honeywell 316/516 Stable and working; runs available software. 3.19 GRI-909/99 Hand debug only. No software for it has been found or tested. 3.20 SDS-940 Hand debug only, and a few diagnostics. 3.21 LGP-30 Unfinished; hand debug only. Does not run available software, probably due to my misunderstanding of the LGP-30 operational procedures. 3.22 Altair (original 8080 version) Stable and working, but not really supported. Runs available software. 3.23 AltairZ80 (Z80 version) Stable and working; runs available software. Supported and edited by Peter Schorn. 3.24 SWTP 6800 Stable and working; runs available software. Supported and edited by Bill Beech 3.25 Sigma 32b Incomplete; more work is needed on the peripherals for accuracy. 3.26 Alpha Incomplete; essentially just an EV-5 (21164) chip emulator. 4. Suggestions for Future Work 4.1 General Structure - Multi-threading, to allow true concurrency between SCP and the simulator - Graphics device support, particularly for the PDP-1 and PDP-11 4.2 Current Simulators - PDP-1 graphics, to run Space War - PDP-11 GT40 graphics, to run Lunar Lander - PDP-15 MUMPS-15 - Interdata native OS debug, both 16b and 32b - SDS 940 timesharing operating system debug - IBM 7094 CTSS feature debug and operating system debug - IBM 1620 debug and software - GRI-909 software - Sigma 32b completion and debug - LGP-30 debug 4.3 Possible Future Simulators - Data General MV8000 (if a hobbyist license can be obtained for AOS) - Alpha simulator - HP 3000 (16b) simulator with MPE
This commit is contained in:
149
sigma/sigma_bugs.txt
Normal file
149
sigma/sigma_bugs.txt
Normal file
@@ -0,0 +1,149 @@
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user