mirror of
https://github.com/simh/simh.git
synced 2026-01-18 00:53:22 +00:00
233 lines
10 KiB
INI
233 lines
10 KiB
INI
:: vax-diag.ini
|
|
:: This script will run the available CPU instruction and core
|
|
:: functional diagnostics for the different VAX simulators.
|
|
::
|
|
:: Default output summarizes success or failure.
|
|
:: if the script is invoked with -v as a parameter, verbose
|
|
:: diagnostic output will be produced.
|
|
::
|
|
:: Default execution will run at a simulated pseudo speed reflecting
|
|
:: the speed of the original system being simulated. If the script
|
|
:: is invoked with a -c as a parameter, diagnostics will be run
|
|
:: at full speed with a calibrated clock, otherwise diagnostics
|
|
:: will be run with a pseudo clock scaled to the speed of the original
|
|
:: system that the simulator simulates.
|
|
::
|
|
:: The related diagnostic files must be located in the same directory
|
|
:: as this procedure.
|
|
::
|
|
#set debug -nrtbp 500 %SIM_BIN_NAME%.dbg
|
|
#set log debug
|
|
if device todr set todr debug
|
|
if device tmr 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
|
|
set on
|
|
on error ignore
|
|
on runtime echof "\r\n*** Test Runtime Limit %SIM_RUNLIMIT% %SIM_RUNLIMIT_UNITS% Exceeded after running %SIM_RUNTIME% %SIM_RUNTIME_UNITS% ***\n"; exit 1
|
|
|
|
:NEXT_ARG
|
|
set env DIAG_QUIET_MODE=0
|
|
set env -A TELNET_PORT=(65300+TIME_SS)
|
|
if ("%1" == "-v") set console notelnet;shift
|
|
else set -qu console telnet=localhost:%TELNET_PORT%,telnet=buffered=1048576; set env -a DIAG_QUIET_MODE=1
|
|
set env DIAG_UNCALIBRATED_CLOCK=1
|
|
if ("%1" == "-c") set env DIAG_UNCALIBRATED_CLOCK=0;shift
|
|
if ("%1" != "") goto NEXT_ARG
|
|
goto DIAG_%SIM_BIN_NAME%
|
|
|
|
:DIAG_MICROVAX2
|
|
:DIAG_MICROVAX2000
|
|
:DIAG_MICROVAX3100M80
|
|
:DIAG_RTVAX1000
|
|
:DIAG_VAXSTATION3100M76
|
|
:DIAG_VAXSTATION4000M60
|
|
:DIAG_VAXSTATION4000VLC
|
|
echof "No diagnostics are available for the %SIM_NAME% Simulator\n"
|
|
exit 0
|
|
|
|
:DIAG_MICROVAX1
|
|
echo Running Hardware Core Test (EHKAA)
|
|
if not exist ehkaa-uv1.exe echof "\r\nMISSING - Diagnostic '%~p0ehkaa-uv1.exe' is missing\n"; exit 1
|
|
load ehkaa-uv1.exe
|
|
go -q 200
|
|
if (PC != 0x1150DA51) echof "\r\n*** FAILED - %SIM_NAME% Hardware Core Instruction test EHKAA after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"; exit 1
|
|
else echof "\r\n*** PASSED - %SIM_NAME% Hardware Core Instruction test EHKAA after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"; exit 0
|
|
|
|
:DIAG_INFOSERVER100
|
|
:DIAG_INFOSERVER1000
|
|
:DIAG_INFOSERVER150VXT
|
|
:DIAG_MICROVAX3100
|
|
:DIAG_MICROVAX3100E
|
|
:DIAG_VAX
|
|
:DIAG_MICROVAX3900
|
|
:DIAG_VAXSTATION3100M30
|
|
:DIAG_VAXSTATION3100M38
|
|
echo Running Hardware Core Test (EHKAA)
|
|
if not exist ehkaa.exe echof "\r\nMISSING - Diagnostic '%~p0ehkaa.exe' is missing\n"; exit 1
|
|
load ehkaa.exe
|
|
go -q 200
|
|
if (PC != 0x80018AD1) echof "\r\n*** FAILED - %SIM_NAME% Hardware Core Instruction test EHKAA after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"; exit 1
|
|
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
|
|
expect "Hit any key to continue" send "\r"; go -q
|
|
expect [2] "done!" echof "\r\n*** PASSED - %SIM_NAME% Hardware Core Instruction test EVKAA after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"; goto extended_tests
|
|
go -q 200
|
|
echof "\r\n*** FAILED - %SIM_NAME% Hardware Core Instruction test EVKAA after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"
|
|
exit 1
|
|
|
|
:extended_tests
|
|
reset -p
|
|
#set todr debug
|
|
#set tmr debug
|
|
#set int-clock debug=calib
|
|
#set int-clock nodebug=queue;gettime;check
|
|
if (DIAG_QUIET_MODE) echof "\nStarting VAX Diagnostic Supervisor\n"
|
|
if not exist VAX_MINIMUM_DIAGS.dsk echof "\r\nMISSING - Diagnostic disk image '%~p0VAX_MINIMUM_DIAGS.dsk' is missing\n"; exit 1
|
|
attach -rq rq0 VAX_MINIMUM_DIAGS.dsk
|
|
goto %SIM_BIN_NAME%
|
|
|
|
:VAX730
|
|
# VAX 11/730 Diagnostic Supervisor Setup for EVKAB/C/D/E
|
|
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" /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
|
|
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" /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
|
|
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
|
|
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
|
|
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
|
|
# inspires tests to use it. This takes more time.
|
|
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" /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
|
|
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" /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
|
|
|
|
:Common
|
|
expect "DS> " send "ATTACH UDA50 DW0 DUA 772150 154 5 10\r"; go -q
|
|
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
|
|
boot -q RQ0 /R5:10
|
|
#set todr debug
|
|
#set tmr debug
|
|
#set int-clock debug=calib
|
|
#set int-clock nodebug=queue;gettime;check
|
|
#set nodebug
|
|
return
|
|
|
|
:do_test
|
|
set env DIAG_TEST=%1
|
|
set env DIAG_DESC=%2
|
|
set env -a DIAG_ERRORS=1
|
|
noexpect
|
|
if (SIM_REGEX_TYPE == "") echof "Missing Regular Expression support - skipping %DIAG_TEST% test\n"; exit 0
|
|
if (DIAG_QUIET_MODE) echof "\nRunning - %DIAG_DESC% %DIAG_TEST% starting after %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"
|
|
expect -r "Latency time detected: ([0-9]+) us.\r\n" show clock; go -q
|
|
expect -r "Hard error" go -q
|
|
expect -r "Pass (d+), test ([0-9][0-9]*), subtest ([0-9][0-9]*), error ([0-9][0-9]*)," set env -a DIAG_ERRORS=_EXPECT_MATCH_GROUP_4; show clock; return
|
|
expect -r "System fatal error while testing" go -q
|
|
expect -r "\.\. End of run, ([0-9][0-9]*) (error|errors) detected, pass count is [0-9][0-9]*," set env -a DIAG_ERRORS=_EXPECT_MATCH_GROUP_1; show clock; go -q
|
|
expect "DS> "
|
|
if ("%4" != "") expect "DS> "; send "SET FLAGS TRACE\r"; go -q
|
|
send "RUN %DIAG_TEST%%3\r"
|
|
go -q
|
|
if (DIAG_ERRORS > 0) goto show_log
|
|
if (DIAG_QUIET_MODE) echof "\n*** PASSED - %DIAG_DESC% %DIAG_TEST% after running for %SIM_RUNTIME% %SIM_RUNTIME_UNITS%\n"
|
|
return
|
|
:show_log
|
|
expect "DS> " send "SHOW SECTIONS\r"; expect "DS> "; go -q
|
|
send "SHOW STATUS\r"
|
|
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
|