1
0
mirror of https://github.com/simh/simh.git synced 2026-01-27 20:37:50 +00:00

Unibus VAXen: Run working diagnostic supervisor Privileged Architecture tests

- The VAX 11/780 runs the VAX Diagnostic Supervisor the EVKAE (Privilege
   Architecture Exercisor) tests cleanly.
   All other Unibus VAXen execute different instructions in EVKAE
   Test 8 (KERNEL STACK NOT VALID) subtest 2 when compared to the 11/780.
   On these processors a REI instruction with reserved operands is invoked and
   this causes a failure of this subtest for these processors.
   We avoid this diagnostic test that fails.
- The VAX 8200 has some issues with the VAX Diagnostic Supervisor.
   Specifically, the EVKAA (Hardware Core Instruction) test uses the processor
   interval timer to measure the passage of time and expects the interrupts
   that are generated to occur at IPL 24 (0x18).  Meanwhile, the actual
   hardware is documented to generate Interval Timer interrupts at
   IPL 22 (0x16).  EVKAA fails when interrupts occur at IPL 22(0x16).
   If the processor is is built with Interval Timer interrupts at IPL 24(0x18),
   then EVKAA passes, but the EVKAE (Privileged Architecture Exercisor)
   Interval Timer test fails since the interval timer interrupts occur at
   IPL 24(0x18) and not at IPL 22(0x16).
   Once operating systems are running, operating system behavior will
   generally be unaffected if Interval Timer interrupts occur at a higher
   IPL than the OS expects, so the VAX 8200 is built that way and we avoid
   the diagnostic that fails.
- The DEC supplied instruction diagnostics actually time the execution of
   instructions being tested using the interval timer and the time of day
   clock.  When instructions take too long, they fail the test.  The
   VAX 11/730 simulator actually fails some of these instruction tests when
   run at precisely .3 the instruction rate of the VAX/11 780.  We therefore
   adjust the nocalibrate execution rate to 320K vs the VAX 11/780 running
   at 1000K.
This commit is contained in:
Mark Pizzolato
2024-04-04 10:19:03 -10:00
parent c6de567cf6
commit 464e1f9ef4

View File

@@ -16,13 +16,13 @@
:: The related diagnostic files must be located in the same directory
:: as this procedure.
::
#set clock async
#set debug -ntp %SIM_BIN_NAME%.dbg
#set todr debug
#set tmr debug
#set int-clock debug=calib
#set int-clock nodebug=queue;gettime;check
#set cpu hist=20000
#set debug -nrtbp 500 %SIM_BIN_NAME%.dbg
set log debug
set todr debug
set tmr debug
set int-clock debug=calib
set int-clock nodebug=queue;gettime;check
#set -o -t cpu hist=500k:%SIM_BIN_NAME%.hst
#break A3B4 SHOW HIST=40
cd %~p0
set runlimit 2000M instructions
@@ -74,10 +74,27 @@ if (PC != 0x80018AD1) echof "\r\n*** FAILED - %SIM_NAME% Hardware Core Instructi
else echof "\r\n*** PASSED - %SIM_NAME% Hardware Core Instruction test EHKAA after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"; exit 0
:DIAG_VAX730
set env CPU_SPEED_FACTOR=320
goto CORE_DIAG
:DIAG_VAX750
set env CPU_SPEED_FACTOR=600
goto CORE_DIAG
:DIAG_VAX780
set env CPU_SPEED_FACTOR=1000
goto CORE_DIAG
:DIAG_VAX8200
set env CPU_SPEED_FACTOR=900
goto CORE_DIAG
:DIAG_VAX8600
set env CPU_SPEED_FACTOR=4000
goto CORE_DIAG
:CORE_DIAG
if (("%DIAG_UNCALIBRATED_CLOCK%") && ("%CPU_SPEED_FACTOR%" != "")) set CLOCK BASE=1995/02/01-00:00:00.000,NOCALIBRATE=%CPU_SPEED_FACTOR%K
echo Running Hardware Core Test (EVKAA)
if not exist evkaa.exe echof "\r\nMISSING - Diagnostic '%~p0evkaa.exe' is missing\n"; exit 1
load evkaa.exe
@@ -100,49 +117,47 @@ goto %SIM_BIN_NAME%
:VAX730
# VAX 11/730 Diagnostic Supervisor Setup for EVKAB/C/D/E
set env CPU_SPEED_FACTOR=300
expect "DS> " send "ATTACH KA730 HUB KA0 no 0 0 2048 no no\r"; go -q
expect "DS> " send "ATTACH DW730 HUB DW0\r"; go -q
call Common
call do_test EVKAB "VAX Basic Instructions Exerciser" "" TRACE
call do_test EVKAC "VAX Floating Point Instructions Exerciser" /PASSES=2 TRACE
call do_test EVKAD "VAX Compatibility Mode Instructions Exerciser" "" TRACE
#call do_test EVKAE "VAX Privileged Architecture Exerciser" /PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=1:7/PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=9/PASSES=1 TRACE
echof "\n*** All Diagnostic Supervisor tests PASSED after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS% ***\n"
echof "\n*** Processed %SIM_PROCESSED_EVENTS% events with %SIM_ASYNC_EVENTS% asynchronous events processed ***\n"
exit 0
:VAX750
# VAX 11/750 Diagnostic Supervisor Setup for EVKAB/C/D/E
set env CPU_SPEED_FACTOR=600
expect "DS> " send "ATTACH KA750 CMI KA0 yes yes yes 0 0\r"; go -q
expect "DS> " send "ATTACH DW750 CMI DW0 8\r"; go -q
call Common
call do_test EVKAB "VAX Basic Instructions Exerciser" ""
call do_test EVKAC "VAX Floating Point Instructions Exerciser" /PASSES=2
call do_test EVKAD "VAX Compatibility Mode Instructions Exerciser" "" TRACE
#call do_test EVKAE "VAX Privileged Architecture Exerciser" /PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=1:7/PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=9/PASSES=1 TRACE
echof "\n*** All Diagnostic Supervisor tests PASSED after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS% ***\n"
echof "\n*** Processed %SIM_PROCESSED_EVENTS% events with %SIM_ASYNC_EVENTS% asynchronous events processed ***\n"
exit 0
:VAX780
# VAX 11/780 Diagnostic Supervisor Setup for EVKAB/C/D/E
set env CPU_SPEED_FACTOR=1000
expect "DS> " send "ATTACH KA780 SBI KA0 yes yes 0 0\r"; go -q
expect "DS> " send "ATTACH DW780 SBI DW0 3 5\r"; go -q
call Common
call do_test EVKAB "VAX Basic Instructions Exerciser" "" TRACE
call do_test EVKAC "VAX Floating Point Instructions Exerciser" /PASSES=2 TRACE
call do_test EVKAD "VAX Compatibility Mode Instructions Exerciser" "" TRACE
#call do_test EVKAE "VAX Privileged Architecture Exerciser" /PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /PASSES=1 TRACE
echof "\n*** All Diagnostic Supervisor tests PASSED after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS% ***\n"
echof "\n*** Processed %SIM_PROCESSED_EVENTS% events with %SIM_ASYNC_EVENTS% asynchronous events processed ***\n"
exit 0
:VAX8200
# VAX 8200 Diagnostic Supervisor Setup for EVKAB/C/D/E
set env CPU_SPEED_FACTOR=900
expect "DS> " send "ATTACH KA820 HUB KA0 4096 0\r"; go -q
expect "DS> " send "ATTACH DWBUA HUB DW0 4 5\r"; go -q
# VAX 8200 simulates the floating point accelerator which then
@@ -151,21 +166,23 @@ set runlimit 2000M instructions
call Common
call do_test EVKAB "VAX Basic Instructions Exerciser" "" TRACE
call do_test EVKAC "VAX Floating Point Instructions Exerciser" /PASSES=2 TRACE
#call do_test EVKAE "VAX Privileged Architecture Exerciser" /PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=1:5/PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=7:7/PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=9/PASSES=1 TRACE
echof "\n*** All Diagnostic Supervisor tests PASSED after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS% ***\n"
echof "\n*** Processed %SIM_PROCESSED_EVENTS% events with %SIM_ASYNC_EVENTS% asynchronous events processed ***\n"
exit 0
:VAX8600
# VAX 8600 Diagnostic Supervisor Setup for EVKAB/C/D/E
set env CPU_SPEED_FACTOR=4000
expect "DS> " send "ATTACH KA780 ABUS KA0 yes yes 0 0\r"; go -q
expect "DS> " send "ATTACH DW780 ABUS DW0 3 5\r"; go -q
call Common
call do_test EVKAB "VAX Basic Instructions Exerciser" "" TRACE
call do_test EVKAC "VAX Floating Point Instructions Exerciser" "" TRACE
call do_test EVKAD "VAX Compatibility Mode Instructions Exerciser" "" TRACE
#call do_test EVKAE "VAX Privileged Architecture Exerciser" /PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=1:7/PASSES=1 TRACE
call do_test EVKAE "VAX Privileged Architecture Exerciser" /TEST=9/PASSES=1 TRACE
echof "\n*** All Diagnostic Supervisor tests PASSED after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS% ***\n"
echof "\n*** Processed %SIM_PROCESSED_EVENTS% events with %SIM_ASYNC_EVENTS% asynchronous events processed ***\n"
exit 0
@@ -176,7 +193,6 @@ expect "DS> " send "ATTACH RA81 DUA DUA0\r"; go -q
expect "DS> " send "SET LOAD DUA0:[SYSMAINT]\r"; go -q
expect "DS> " send "SELECT KA0\r"; go -q
expect "DS> " echof "\r\nDiagnostic Supervisor Startup ready after %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"; show clock
if (("%DIAG_UNCALIBRATED_CLOCK%") && ("%CPU_SPEED_FACTOR%" != "")) set CLOCK NOCALIBRATE=%CPU_SPEED_FACTOR%K
boot -q RQ0 /R5:10
#set todr debug
#set tmr debug
@@ -211,4 +227,5 @@ go -q
if (DIAG_QUIET_MODE) set -q console telnet=log=diag_fail.log; set -q console telnet=nolog; type diag_fail.log;delete diag_fail.log
echof "\n*** FAILED - %DIAG_DESC% %DIAG_TEST% after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"
echof "\n*** Processed %SIM_PROCESSED_EVENTS% events with %SIM_ASYNC_EVENTS% asynchronous events processed ***\n"
show clock
exit 1