All VAX: Extend tests to include available DEC instruction diagnostics

- Diagnostic execution happens as a normal part of the makefile build.
- Diagnostic execution can be suppressed by invoking make with TESTS=0
  on the command line
- Diagnostic execution during build is produced in summary form.
This commit is contained in:
Mark Pizzolato 2018-09-27 22:00:38 -07:00
parent be52190067
commit 6747c7fdc2
13 changed files with 721 additions and 17 deletions

2
.gitattributes vendored
View file

@ -8,5 +8,7 @@
*.imd binary *.imd binary
*.rim binary *.rim binary
*.tap binary *.tap binary
*.dsk binary
*.vhd binary
sim_rev.h export-subst sim_rev.h export-subst

Binary file not shown.

224
VAX/tests/diag780/EVKAB.HLP Normal file
View file

@ -0,0 +1,224 @@
1 TESTS
TEST INST | TEST INST | TEST INST
---- ---- | ---- ---- | ---- ----
1 BRB | 2 BRW | 3 BBC
4 BBS | 5 MOVB | 6 MOVW
7 MOVL | 8 MOVQ | 9 CLRB
10 CLRW | 11 CLRL | 12 CLRQ
13 MNEGB | 14 MNEGW | 15 MNEGL
16 MCOMB | 17 MCOMW | 18 MCOML
19 MOVZBW | 20 MOVZBL | 21 MOVZWL
22 CVTBW | 23 CVTBL | 24 CVTWB
25 CVTWL | 26 CVTLB | 27 CVTLW
28 CMPB | 29 CMPW | 30 CMPL
31 TSTB | 32 TSTW | 33 TSTL
34 ADDB2 | 35 ADDB3 | 36 ADDW2
37 ADDW3 | 38 ADDL2 | 39 ADDL3
40 ADAWI | 41 INCB | 42 INCW
43 INCL | 44 ADWC | 45 SUBB2
46 SUBB3 | 47 SUBW2 | 48 SUBW3
49 SUBL2 | 50 SUBL3 | 51 DECB
52 DECW | 53 DECL | 54 SBWC
55 MULB2 | 56 MULB3 | 57 MULW2
58 MULW3 | 59 MULL2 | 60 MULL3
61 EMUL | 62 DIVB2 | 63 DIVB3
64 DIVW2 | 65 DIVW3 | 66 DIVL2
67 DIVL3 | 68 EDIV | 69 ASHL
70 ASHQ | 71 BITB | 72 BITW
73 BITL | 74 BISB2 | 75 BISB3
76 BISW2 | 77 BISW3 | 78 BISL2
79 BISL3 | 80 BICB2 | 81 BICB3
82 BICW2 | 83 BICW3 | 84 BICL2
85 BICL3 | 86 XORB2 | 87 XORB3
88 XORW2 | 89 XORW3 | 90 XORL2
91 XORL3 | 92 ROTL | 93 FFC
94 FFS | 95 INSV | 96 EXTV
97 EXTZV | 98 CMPV | 99 CMPZV
100 BNEQ | 101 BEQL | 102 BGTR
103 BLEQ | 104 BGEQ | 105 BLSS
106 BGTRU | 107 BLEQU | 108 BVC
109 BVS | 110 BCC | 111 BCS
112 BLBC | 113 BLBS | 114 BBCC
115 BBCS | 116 BBSC | 117 BBSS
118 BBCCI | 119 BBSSI | 120 ACBB
121 ACBW | 122 ACBL | 123 AOBLEQ
124 AOBLSS | 125 SOBGEQ | 126 SOBGTR
127 INDEX | 128 INSQUE | 129 INSQHI
130 INSQTI | 131 REMQUE | 132 REMQHI
133 REMQTI | 134 MOVC3 | 135 MOVC5
136 MOVTC | 137 MOVTUC | 138 CMPC3
139 CMPC5 | 140 SPANC | 141 SCANC
142 SKPC | 143 LOCC | 144 MATCHC
145 MOVP | 146 CMPP3 | 147 CMPP4
148 ADDP4 | 149 ADDP6 | 150 SUBP4
151 SUBP6 | 152 MULP | 153 DIVP
154 CVTLP | 155 CVTPL | 156 CVTPT
157 CVTTP | 158 CVTPS | 159 CVTSP
160 ASHP | 161 EDITPC
1 ATTACH
The CPU must be attached. A VAX-11/730 CPU is a KA730, etc.
2 KA730
DS> ATT KA730 HUB KAn (1) (2) (3) (4) (5) (6)
(1) Time-of-year clock (YES or NO)
(2) WCS last address
(3) Accelerator type (0 = FPA absent, 1 = FPA present)
(4) K-bytes of Main Memory
(5) User WCS loaded (YES or NO)
(6) SB errors (YES or NO)
2 KA750
DS> ATT KA750 CMI KAn (1) (2) (3) (4) (5)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) Time-of-year clock (YES or NO)
(4) WCS Last Address, Hex
(5) Accelerator Type (0 = FPA absent, 1 = FPA present)
2 KA780
DS> ATTACH KA780 SBI KAn (1) (2) (3) (4)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) WCS Last Address, Hex
(4) Accelerator Type (0 = FPA absent, 1 = FPA present)
1 HELP
This program exercises most of the VAX native mode instruction
set that can be executed in any mode, i.e., non-priviledged
instructions. It does not include the Floating Point
instructions that are in EVKAC. The program is capable of
running under the Diagnostic Supervisor in either the
standalone environment or as a user task under VMS. It is also
designed to run on any member of the VAX family of computers.
1 SECTION
2 INTEGER
Integer Arithmetic and Logical Instructions:
MOVB, MOVW, MOVL, MOVQ, CLRB, CLRW, CLRL, CLRQ, MNEGB,
MNEGW, MNEGL, MCOMB, MCOMW, MCOML, MOVZBW, MOVZBL, MOVZWL,
CVTBW, CVTBL, CVTWB, CVTWL, CVTLB, CVTLW, CMPB, CMPW, CMPL,
TSTB, TSTW, TSTL, ADDB2, ADDB3, ADDW2, ADDW3, ADDL2, ADDL3,
ADAWI, INCB, INCW, INCL, ADWC, SUBB2, SUBB3, SUBW2, SUBW3,
SUBL2, SUBL3, INCB, INCW, INCL, SBWC, MULB2, MULB3, MULW2,
MULW3, MULL2, MULL3, EMUL, DIVB2, DIVB3, DIVW2, DIVW3,
DIVL2, DIVL3, EDIV, ASHL, ASHQ, BITB, BITW, BITL, BISB2,
BISB3, BISW2, BISW3, BISL2, BISL3, BICB2, BICB3, BICW2,
BICW3, BICL2, BICL3, XORB2, XORB3, XORW2, XORW3, XORL2,
XORL3, and ROTL.
Integer Arithmetic Control Instructions: ACBB, ACBW, ACBL,
AOBLEQ, AOBLSS, SOBGEQ, and SOBGTR.
2 FIELD
Variable Length Bit Field Instructions:
EXTV, EXTV, INSV, CMPV, CMPZV, FFC, and FFS.
Single Bit Field Control Instructions: BBS, BBC, BBSS,
BBCS, BBSC, BBCC, BBSSI, BBCCI, BLBS, BLBC
2 CONTROL
Basic Control Instructions:
BRB, BRW, BNEQ, BEQL, BGTR, BLEQ, BGEQ, BLSS, BGTRU, BLEQU,
BVC, BVS, BGEQU, and BLSSU.
Single Bit Field Control Instructions:
BBS, BBC, BBSS, BBCS, BBSC, BBCC, BBSSI, BBCCI, BLBS, BLBC
Integer Arithmetic Control Instructions:
ACBB, ACBW, ACBL, AOBLEQ, AOBLSS, SOBGEQ, and SOBGTR.
2 QUEUE
Queue Instructions:
INSQUE, REMQUE, INSQHI, INSQTI, REMQHI, and REMQTI.
2 CHARACTER
Character String Instructions:
MOVC3, MOVC5, MOVTC, MOVTUC, CMPC, SCANC, SPANC, LOCC,
SKPC, and MATCHC.
2 DECIMAL
Decimal String Instructions:
MOVP, CMPP3, CMPP4, ADDP4, ADDP6, SUBP4, SUBP6, MULP, DIVP,
CVTLP, CVTPL, CVTPT, CVTTP, CVTPS, CVTSP, and ASHP.
2 MOVXMNEGX
All MOVX, MOVCn, MCOMX, MOVTXX, MNEG Instructions:
MOVB, MOVW, MOVL, MOVQ, MNEGB, MNEGW, MNEGL, MCOMB, MCOMW,
MCOML, MOVZBW, MOVZBL, MOVZWL, MOVC3, MOVC5, MOVTC, MOVTUC,
and MOVP.
2 CMPXX
All CMPX and CMPXX Instructions:
CMPB, CMPW, CMPL, CMPP3, CMPP4, CMPC3, CMPC5, CMPV, and
CMPZV.
2 CVTXX
All CVTXX Instructions:
CVTLP, CVTPL, CVTPT, CVTTP, CVTPS, and CVTSP.
2 ADDSUBMULDIV
All ADDxx, SUBxx, MULxx, and DIVxx Instructions.
ADDB2, ADDB3, ADDW2, ADDW3, ADDL2, ADDL3, SUBB2, SUBB3,
SUBW2, SUBW3, SUBL2, SUBL3, MULB2, MULB3, MULW2, MULW3,
MULL2, MULL3, DIVB2, DIVB3, DIVW2, DIVW3, DIVL2, and DIVL3.
2 ASHX
All ASHX Instructions:
ASHL, ASHQ, and ASHP.
1 EVENT
Event flags 2 through 6 are active with this program.
2 FLAG2
Disables the interval timer interrupting during instruction
execution.
2 FLAG3
Enables the interval timer interrupting while page faulting is
also enabled.
2 FLAG4
Enables the continuation of a subtest after an error (normally
the subtest is aborted).
2 FLAG5
Disables the DIVP instruction execution during interval timer
interrupting.
2 FLAG6
Enables the user to create their own custom section of tests by
asking what tests are to be executed. If this flag is found
set, the diagnostic prompts the user for test numbers the user
wants executed. When done entering, hit Carriage Return to the
response for a test number, and the diagnostic will begin. You
may input any number of test numbers. IMPORTANT: If you
select a particular section and that test number is NOT in the
section, THE TEST WILL NOT EXECUTE. i.e. SECTION takes
priority over FLAG6 selections. To obtain a list of the
instructions and test numbers that execute those instructions,
type HELP EVKAB TESTS.
****** THIS FLAG DOES NOT WORK IF THE OPERATOR FLAG BIT IS CLEAR ******
1 QUICK
The QUICK flag disables the execution of the instructions with
page faulting so that each instruction test case is only
executed once for each addressing mode combination.
1 SUMMARY
The summary report gives an error count by test number. No
report is generated if there were no errors.

230
VAX/tests/diag780/EVKAC.HLP Normal file
View file

@ -0,0 +1,230 @@
1 TESTS
TEST INST | TEST INST | TEST INST
---- ---- | ---- ---- | ---- ----
1 MOVF | 2 MNEGF | 3 TSTF
4 CVTBF | 5 CVTWF | 6 CVTLF
7 CVTFB | 8 CVTFW | 9 CVTFL
10 CVTRFL | 11 CMPF | 12 ADDF2
13 ADDF3 | 14 SUBF2 | 15 SUBF3
16 MULF2 | 17 MULF3 | 18 DIVF2
19 DIVF3 | 20 EMODF | 21 POLYF
22 ACBF | 23 MNEGD | 24 MOVD
25 TSTD | 26 CVTBD | 27 CVTWD
28 CVTLD | 29 CVTDB | 30 CVTDW
31 CVTDL | 32 CVTFD | 33 CVTDF
34 CVTRDL | 35 CMPD | 36 ADDD2
37 ADDD3 | 38 SUBD2 | 39 SUBD3
40 MULD2 | 41 MULD3 | 42 DIVD2
43 DIVD3 | 44 EMODD | 45 POLYD
46 ACBD | 47 MOVG | 48 MNEGG
49 CVTGB | 50 CVTGW | 51 CVTGL
52 CVTRGL | 53 CVTBG | 54 CVTWG
55 CVTLG | 56 CVTFG | 57 CVTGF
58 CMPG | 59 TSTG | 60 ADDG2
61 ADDG3 | 62 SUBG2 | 63 SUBG3
64 MULG2 | 65 MULG3 | 66 DIVG2
67 DIVG3 | 68 EMODG | 69 POLYG
70 ACBG | 71 MOVH | 72 MNEGH
73 CVTHB | 74 CVTHW | 75 CVTHL
76 CVTRHL | 77 CVTBH | 78 CVTWH
79 CVTLH | 80 CVTFH | 81 CVTDH
82 CVTGH | 83 CVTHF | 84 CVTHD
85 CVTHG | 86 CMPH | 87 TSTH
88 ADDH2 | 89 ADDH3 | 90 SUBH2
91 SUBH3 | 92 MULH2 | 93 MULH3
94 DIVH2 | 95 DIVH3 | 96 EMODH
97 POLYH | 98 ACBH
1 ATTACH
The CPU must be attached. A VAX-11/730 CPU is a KA730, etc.
2 KA730
DS> ATT KA730 HUB KAn (1) (2) (3) (4) (5) (6)
(1) Time-of-year clock (YES or NO)
(2) WCS last address
(3) Accelerator type (0 = FPA absent, 1 = FPA present)
(4) K-bytes of Main Memory
(5) User WCS loaded (YES or NO)
(6) SB errors (YES or NO)
2 KA750
DS> ATT KA750 CMI KAn (1) (2) (3) (4) (5)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) Time-of-year clock (YES or NO)
(4) WCS Last Address, Hex
(5) Accelerator Type (0 = FPA absent, 1 = FPA present)
2 KA780
DS> ATTACH KA780 SBI KAn (1) (2) (3) (4)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) WCS Last Address, Hex
(4) Accelerator Type (0 = FPA absent, 1 = FPA present)
1 HELP
This program exercises the floating point instructions that can
be executed in any mode, i.e., non-priviledged instructions.
The program is capable of running under the Diagnostic
Supervisor in either the standalone environment or as a user
task under VMS. It is also designed to run on any member of
the VAX family of computers.
1 SECTION
Sections have been allocated to test certain groups of
instructions. For more information, type HELP EVKAC SECTION
(section name).
2 F_FLOATING
Single Precision Floating Point Instructions:
MOVF, MNEGF, TSTF, CVTBF, CVTWF, CVTLF, CVTFB, CVTFW,
CVTFL, CVTRFL, CMPF, ADDFn, SUBFn, MULF, DIVFn, EMODF,
POLYF, ACBF.
2 DOUBLE
Double Precision and Extended Range Double Precision
Floating Point Instructions:
MNEGD, MOVD, TSTx, CVTBD, CVTWD, CVTLD, CVTDB, CVTDW,
CVTDL, CVTFD, CVTDF, CVTRDL, CMPx, ADDDn, SUBDn, MULDn,
DIVDn, EMODx, POLYD, ACBD, MOVG, MNEGG, CVTGB, CMPG, TSTG,
ADDGx, SUBGx, MULGx, DIVGx, EMODG, POLYG, ACBG.
2 D_FLOATING
Double Precision Floating Point Instructions:
MNEGD, MOVD, TSTx, CVTBD, CVTWD, CVTLD, CVTDB, CVTDW,
CVTDL, CVTFD, CVTDF, CVTRDL, CMPx, ADDDn, SUBDn, MULDn,
DIVxn, EMODx, POLYD, ACBD.
2 EXTENDED
Extended Range Double and Quadruple Precision Floating
Point Instructions:
MOVG, MNEGG, CVTGB, CMPG, TSTG, ADDGx, SUBGx, MULGx, DIVGx,
EMODG, POLYG, ACBG, MOVH, MNEGH, CVTHB, CMPH, TSTH, ADDHx,
SUBHx, MULHx, DIVHx, EMODH, POLYH, ACBH.
2 G_FLOATING
Extended Range Double Precision Floating Point
Instructions:
MOVG, MNEGG, CVTGB, CMPG, TSTG, ADDGx, SUBGx, MULGx, DIVGx,
EMODG, POLYG, ACBG.
2 H_FLOATING
Extended Range Quadruple Precision Floating Point
Instructions:
MOVH, MNEGH, CVTHB, CMPH, TSTH, ADDHx, SUBHx, MULHx, DIVHx,
EMODH, POLYH, ACBH.
2 MOVXMNEGX
All MOVx and MNEGx Single, Double, Double Extended and
Quadruple Extended Floating Point Instructions:
MOVF, MNEGF, MNEGD, MOVD, MOVG, MNEGG, MOVH, MNEGH.
2 TSTX
All TSTx Single, Double, Double Extended and Quadruple
Extended Floating Point Instructions:
TSTF, TSTD, TSTG, TSTH.
2 CVTXX
All CVTxy and CVTxyz Single, Double, Double Extended and
Quadruple Extended Floating Point Instructions:
CVTBF, CVTWF, CVTLF, CVTFB, CVTFW, CVTFL, CVTRFL, CVTBD,
CVTWD, CVTLD, CVTDB, CVTDW, CVTDL, CVTFD, CVTDF, CVTRDL,
CVTGB, CVTHB.
2 CMPX
All CMPx Single, Double, Double Extended and Quadruple
Extended Floating Point Instructions:
CMPF, CMPD, CMPG, CMPH.
2 ADDSUBMULDIV
All ADDxn, SUBxn, MULxn and DIVxn Single, Double, Double
Extended and Quadruple Extended Floating Point
Instructions:
ADDFn, SUBFn, MULF, DIVFn, ADDDn, SUBDn, MULDn, DIVDn,
ADDGx, SUBGx, MULGx, DIVGx, ADDHx, SUBHx, MULHx, DIVHx.
2 EMODX
All EMODx Single, Double, Double Extended and Quadruple
Extended Floating Point Instructions:
EMODF, EMODD, EMODG, EMODH.
2 POLYX
All POLYx Single, Double, Double Extended and Quadruple
Extended Floating Point Instructions:
POLYF, POLYD, POLYG, POLYH.
2 ACBX
All ACBDx Single, Double, and Extended Range Floating Point
Instructions:
ACBF, ACBD, ACBG, ACBH.
1 EVENT
Event flags 2 through 6 are active with this program.
2 FLAG2
Disables the interval timer interrupting during instruction
execution.
2 FLAG3
Enables the interval timer interrupting while page faulting is
also enabled.
2 FLAG4
Enables the continuation of a subtest after an error (normally
the subtest is aborted).
2 FLAG5
Disables the DIVP instruction execution during interval timer
interrupting.
2 FLAG6
Enables the user to create their own custom section of tests by
asking what tests are to be executed. If this flag is found
set, the diagnostic prompts the user for test numbers the user
wants executed. When done entering, hit Carriage Return to the
response for a test number, and the diagnostic will begin. You
may input any number of test numbers. IMPORTANT: If you
select a particular section and that test number is NOT in the
section, THE TEST WILL NOT EXECUTE. i.e. SECTION takes
priority over FLAG6 selections. To obtain a list of the
instructions and what test executes that instruction, type HELP
EVKAC TESTS.
****** THIS FLAG DOES NOT WORK IF THE OPERATOR FLAG BIT IS CLEAR ******
1 QUICK
The QUICK flag disables the execution of the instructions with
page faulting so that each instruction test case is only
executed once for each addressing mode combination.
1 SUMMARY
The summary report gives an error count by test number. No
report is generated if there were no errors.

View file

@ -0,0 +1,54 @@
1 ATTACH
The CPU must be attached. A VAX-11/730 CPU is a KA730, etc.
2 KA730
DS> ATT KA730 HUB KAn (1) (2) (3) (4) (5) (6)
(1) Time-of-year clock (YES or NO)
(2) WCS last address
(3) Accelerator type (0 = FPA absent, 1 = FPA present)
(4) K-bytes of Main Memory
(5) User WCS loaded (YES or NO)
(6) SB errors (YES or NO)
2 KA750
DS> ATT KA750 CMI KAn (1) (2) (3) (4) (5)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) Time-of-year clock (YES or NO)
(4) WCS Last Address, Hex
(5) Accelerator Type (0 = FPA absent, 1 = FPA present)
2 KA780
DS> ATTACH KA780 SBI KAn (1) (2) (3) (4)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) WCS Last Address, Hex
(4) Accelerator Type (0 = FPA absent, 1 = FPA present)
1 HELP
This program exercises all of the VAX compatibility mode
instruction set.
1 SECTION
2 EXCEPTIONS
Tests the various compatibility mode exceptions by verifying
the mechanisms used by the VAX architecture to change to and
from PDP-11 compatibility mode.
2 INSTRUCTIONS
Tests compatibility mode Single, Double, and Program Control
instructions.
1 EVENT
Event Flag 1 (set) - Accelerator testing (standalone only) is
inhibited. Event Flag 1 (clear) - Accelerator testing provided
: if Accelerator is present, the entire EVKAD test sequences
are run twice for each test pass, once with Accelerator
disabled, and once with Accelerator enabled.
1 QUICK
The QUICK flag has no effect on this program.
1 SUMMARY
This program does not provide a summary report.

View file

@ -0,0 +1,60 @@
1 ATTACH
The CPU must be attached. A VAX-11/730 CPU is a KA730, etc.
2 KA730
DS> ATT KA730 HUB KAn (1) (2) (3) (4) (5) (6)
(1) Time-of-year clock (YES or NO)
(2) WCS last address
(3) Accelerator type (0 = FPA absent, 1 = FPA present)
(4) K-bytes of Main Memory
(5) User WCS loaded (YES or NO)
(6) SB errors (YES or NO)
2 KA750
DS> ATT KA750 CMI KAn (1) (2) (3) (4) (5)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) Time-of-year clock (YES or NO)
(4) WCS Last Address, Hex
(5) Accelerator Type (0 = FPA absent, 1 = FPA present)
2 KA780
DS> ATTACH KA780 SBI KAn (1) (2) (3) (4)
(1) G-Floating Instructions (YES or NO)
(2) H-Floating Instructions (YES or NO)
(3) WCS Last Address, Hex
(4) Accelerator Type (0 = FPA absent, 1 = FPA present)
1 HELP
This program tests the major portion of the VAX architecture
that requires privileges above and beyond those available to a
user program running in user mode under VMS.
1 SECTION
2 MEMMGT
Tests for the memory management portion of the VAX
architecture. This includes the special exceptions that only
occur as a result of memory access protection.
2 EXCEPTIONS
Tests various types of exceptions and interrupts.
2 REGISTERS
Tests of the various Internal Processor Registers.
2 CHANGEMODE
Tests of the change mode instructions and the special
exceptions associated to them.
2 TIMERS
Tests of the interval timer and the time-of-year clock.
1 EVENT
This program does not use any event flags.
1 QUICK
The QUICK flag has no effect on this program.
1 SUMMARY
This program does not provide a summay report.

View file

@ -1,2 +1,2 @@
cd VAX/tests cd VAX/tests
do EHKAA.ini do VAX-DIAG.ini %1

113
VAX/tests/vax-diag.ini Normal file
View file

@ -0,0 +1,113 @@
:: 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.
::
#echof "%%0=%0\n"
#set clock async
#set debug -ntp todr.dbg
#set todr debug
#set tmr debug
#set int-clock debug=calib
#set int-clock nodebug=queue;gettime;check
#set cpu hist=20000
#break A3B4 SHOW HIST=40
set env DIAG_QUIET_MODE=0
if ("%1" == "-v") set console notelnet
else set -qu console telnet=65432,telnet=buffered; set env -a DIAG_QUIET_MODE=1
goto DIAG_%SIM_BIN_NAME%
echof "No diagnostics are available for the %SIM_NAME% Simulator\n"
exit 0
:DIAG_VAX
:DIAG_MICROVAX3900
echo Running Harware Core Test (EHKAA)
if not exist ehkaa.exe echof "\r\nMISSING - Diagnostic ehkaa.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\n"; exit 1
else echof "\r\n*** PASSED - %SIM_NAME% Hardware Core Instruction test EHKAA\n"; exit 0
:DIAG_VAX730
:DIAG_VAX750
:DIAG_VAX780
:DIAG_VAX8600
echo Running Harware Core Test (EVKAA)
if not exist evkaa.exe echof "\r\nMISSING - Diagnostic evkaa.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\n"; goto extended_tests
go -q 200
echof "\r\n*** FAILED - %SIM_NAME% Hardware Core Instruction test EVKAA\n"
exit 1
:extended_tests
reset -p
if (DIAG_QUIET_MODE) echof "\nStarting VAX Diagnostic Supervisor\n"
if not exist VAX_MINIMUM_DIAGS.dsk echof "\r\nMISSING - Diagnostic disk image VAX_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
goto Common
: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
goto Common
: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
goto Common
:VAX8600
# VAX 11/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
goto Common
: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> "
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
call do_test EVKAB "VAX Basic Instructions Exerciser"
call do_test EVKAC "VAX Floating Point Instructions Exerciser"
call do_test EVKAD "VAX Compatibility Mode Instructions Exerciser"
#call do_test EVKAE "VAX Privileged Architecture Exerciser"
echof "\n*** All Diagnostic Supervisor tests PASSED ***\n"
exit 0
:do_test
set env DIAG_TEST=%1
set env DIAG_DESC=%2
set env -a DIAG_ERRORS=1
noexpect
expect -r "Hard error" go -q
expect -r "Pass \d+, test (\d+), subtest (\d+), error (\d+)," set env -a DIAG_ERRORS=_EXPECT_MATCH_GROUP_3; return
expect -r "System fatal error while testing" go -q
expect -r "\.\. End of run, (\d+) (error|errors) detected, pass count is \d+," set env -a DIAG_ERRORS=_EXPECT_MATCH_GROUP_1; go -q
expect "DS> "
if (DIAG_QUIET_MODE) echof "\nRunning - %DIAG_DESC% %DIAG_TEST%\n"
send "RUN %DIAG_TEST%\r"
go -q
if (DIAG_ERRORS > 0) echof "\n*** FAILED - %DIAG_DESC% %DIAG_TEST%\n"; exit 1
if (DIAG_QUIET_MODE) echof "\n*** PASSED - %DIAG_DESC% %DIAG_TEST%\n"
return

View file

@ -1,2 +1,2 @@
cd VAX/tests cd VAX/tests
do EVKAA.ini do VAX-DIAG.ini %1

View file

@ -1,2 +1,2 @@
cd VAX/tests cd VAX/tests
do EVKAA.ini do VAX-DIAG.ini %1

View file

@ -1,2 +1,2 @@
cd VAX/tests cd VAX/tests
do EVKAA.ini do VAX-DIAG.ini %1

View file

@ -1,2 +1,2 @@
cd VAX/tests cd VAX/tests
do EVKAA.ini do VAX-DIAG.ini %1

View file

@ -36,6 +36,15 @@
# If debugging is desired, then GNU make can be invoked with # If debugging is desired, then GNU make can be invoked with
# DEBUG=1 on the command line. # DEBUG=1 on the command line.
# #
# The default build will run per simulator tests if they are
# available. If building without running tests is desired,
# then GNU make should be invoked with TESTS=0 on the command
# line.
#
# Default test execution will produce summary output. Detailed
# test output can be produced if GNU make is invoked with
# TEST_ARG=-v on the command line.
#
# simh project support is provided for simulators that are built with # simh project support is provided for simulators that are built with
# dependent packages provided with the or by the operating system # dependent packages provided with the or by the operating system
# distribution OR for platforms where that isn't directly available # distribution OR for platforms where that isn't directly available
@ -88,6 +97,7 @@ ifeq (old,$(shell gmake --version /dev/null 2>&1 | grep 'GNU Make' | awk '{ if (
$(warning *** Warning *** fully process this makefile) $(warning *** Warning *** fully process this makefile)
endif endif
BUILD_SINGLE := $(MAKECMDGOALS) $(BLANK_SUFFIX) BUILD_SINGLE := $(MAKECMDGOALS) $(BLANK_SUFFIX)
BUILD_MULTIPLE_VERB = is
# building the pdp1, pdp11, tx-0, or any microvax simulator could use video support # building the pdp1, pdp11, tx-0, or any microvax simulator could use video support
ifneq (,$(or $(findstring XXpdp1XX,$(addsuffix XX,$(addprefix XX,$(MAKECMDGOALS)))),$(findstring pdp11,$(MAKECMDGOALS)),$(findstring tx-0,$(MAKECMDGOALS)),$(findstring microvax1,$(MAKECMDGOALS)),$(findstring microvax2,$(MAKECMDGOALS)),$(findstring microvax3900,$(MAKECMDGOALS)),$(findstring XXvaxXX,$(addsuffix XX,$(addprefix XX,$(MAKECMDGOALS)))))) ifneq (,$(or $(findstring XXpdp1XX,$(addsuffix XX,$(addprefix XX,$(MAKECMDGOALS)))),$(findstring pdp11,$(MAKECMDGOALS)),$(findstring tx-0,$(MAKECMDGOALS)),$(findstring microvax1,$(MAKECMDGOALS)),$(findstring microvax2,$(MAKECMDGOALS)),$(findstring microvax3900,$(MAKECMDGOALS)),$(findstring XXvaxXX,$(addsuffix XX,$(addprefix XX,$(MAKECMDGOALS))))))
VIDEO_USEFUL = true VIDEO_USEFUL = true
@ -102,11 +112,13 @@ ifneq (,$(or $(findstring pdp11,$(MAKECMDGOALS)),$(findstring pdp10,$(MAKECMDGOA
NETWORK_USEFUL = true NETWORK_USEFUL = true
ifneq (,$(findstring all,$(MAKECMDGOALS))) ifneq (,$(findstring all,$(MAKECMDGOALS)))
BUILD_MULTIPLE = s BUILD_MULTIPLE = s
BUILD_MULTIPLE_VERB = are
VIDEO_USEFUL = true VIDEO_USEFUL = true
BESM6_BUILD = true BESM6_BUILD = true
endif endif
ifneq (,$(word 2,$(MAKECMDGOALS))) ifneq (,$(word 2,$(MAKECMDGOALS)))
BUILD_MULTIPLE = s BUILD_MULTIPLE = s
BUILD_MULTIPLE_VERB = are
endif endif
else else
ifeq ($(MAKECMDGOALS),) ifeq ($(MAKECMDGOALS),)
@ -114,6 +126,7 @@ else
NETWORK_USEFUL = true NETWORK_USEFUL = true
VIDEO_USEFUL = true VIDEO_USEFUL = true
BUILD_MULTIPLE = s BUILD_MULTIPLE = s
BUILD_MULTIPLE_VERB = are
BUILD_SINGLE := all $(BUILD_SINGLE) BUILD_SINGLE := all $(BUILD_SINGLE)
BESM6_BUILD = true BESM6_BUILD = true
endif endif
@ -121,7 +134,12 @@ endif
find_exe = $(abspath $(strip $(firstword $(foreach dir,$(strip $(subst :, ,$(PATH))),$(wildcard $(dir)/$(1)))))) find_exe = $(abspath $(strip $(firstword $(foreach dir,$(strip $(subst :, ,$(PATH))),$(wildcard $(dir)/$(1))))))
find_lib = $(abspath $(strip $(firstword $(foreach dir,$(strip $(LIBPATH)),$(wildcard $(dir)/lib$(1).$(LIBEXT)))))) find_lib = $(abspath $(strip $(firstword $(foreach dir,$(strip $(LIBPATH)),$(wildcard $(dir)/lib$(1).$(LIBEXT))))))
find_include = $(abspath $(strip $(firstword $(foreach dir,$(strip $(INCPATH)),$(wildcard $(dir)/$(1).h))))) find_include = $(abspath $(strip $(firstword $(foreach dir,$(strip $(INCPATH)),$(wildcard $(dir)/$(1).h)))))
find_test = $(abspath $(wildcard $(1)/tests/$(2)_test.ini)) ifneq (0,$(TESTS))
find_test = $(abspath $(wildcard $(1)/tests/$(2)_test.ini))
TESTING_FEATURES = - Per simulator tests will be run
else
TESTING_FEATURES = - Per simulator tests will be skipped
endif
ifneq ($(findstring Windows,$(OS)),) ifneq ($(findstring Windows,$(OS)),)
ifeq ($(findstring .exe,$(SHELL)),.exe) ifeq ($(findstring .exe,$(SHELL)),.exe)
# MinGW # MinGW
@ -741,7 +759,7 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin)
else else
INCPATH = $(INCPATHSAVE) INCPATH = $(INCPATHSAVE)
$(info *** Warning ***) $(info *** Warning ***)
$(info *** Warning *** $(BUILD_SINGLE)Simulator$(BUILD_MULTIPLE) are being built WITHOUT) $(info *** Warning *** $(BUILD_SINGLE)Simulator$(BUILD_MULTIPLE) $(BUILD_MULTIPLE_VERB) being built WITHOUT)
$(info *** Warning *** libpcap networking support) $(info *** Warning *** libpcap networking support)
$(info *** Warning ***) $(info *** Warning ***)
$(info *** Warning *** To build simulator(s) with libpcap networking support you) $(info *** Warning *** To build simulator(s) with libpcap networking support you)
@ -782,7 +800,7 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin)
ifneq (,$(findstring Linux,$(OSTYPE))$(findstring Darwin,$(OSTYPE))) ifneq (,$(findstring Linux,$(OSTYPE))$(findstring Darwin,$(OSTYPE)))
ifneq (,$(findstring USE_NETWORK,$(NETWORK_CCDEFS))$(findstring USE_SHARED,$(NETWORK_CCDEFS))) ifneq (,$(findstring USE_NETWORK,$(NETWORK_CCDEFS))$(findstring USE_SHARED,$(NETWORK_CCDEFS)))
$(info *** Info ***) $(info *** Info ***)
$(info *** Info *** $(BUILD_SINGLE)Simulator$(BUILD_MULTIPLE) are being built with) $(info *** Info *** $(BUILD_SINGLE)Simulator$(BUILD_MULTIPLE) $(BUILD_MULTIPLE_VERB) being built with)
$(info *** Info *** minimal libpcap networking support) $(info *** Info *** minimal libpcap networking support)
$(info *** Info ***) $(info *** Info ***)
endif endif
@ -845,7 +863,7 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin)
NETWORK_CCDEFS += -DUSE_NETWORK NETWORK_CCDEFS += -DUSE_NETWORK
NETWORK_FEATURES = - WITHOUT Local LAN networking support NETWORK_FEATURES = - WITHOUT Local LAN networking support
$(info *** Warning ***) $(info *** Warning ***)
$(info *** Warning *** $(BUILD_SINGLE)Simulator$(BUILD_MULTIPLE) are being built WITHOUT LAN networking support) $(info *** Warning *** $(BUILD_SINGLE)Simulator$(BUILD_MULTIPLE) $(BUILD_MULTIPLE_VERB) being built WITHOUT LAN networking support)
$(info *** Warning ***) $(info *** Warning ***)
$(info *** Warning *** To build simulator(s) with networking support you should read) $(info *** Warning *** To build simulator(s) with networking support you should read)
$(info *** Warning *** 0readme_ethernet.txt and follow the instructions regarding the) $(info *** Warning *** 0readme_ethernet.txt and follow the instructions regarding the)
@ -1115,6 +1133,9 @@ ifneq (clean,$(MAKECMDGOALS))
ifneq (,$(VIDEO_FEATURES)) ifneq (,$(VIDEO_FEATURES))
$(info *** $(VIDEO_FEATURES).) $(info *** $(VIDEO_FEATURES).)
endif endif
ifneq (,$(TESTING_FEATURES))
$(info *** $(TESTING_FEATURES).)
endif
ifneq (,$(GIT_COMMIT_ID)) ifneq (,$(GIT_COMMIT_ID))
$(info ***) $(info ***)
$(info *** git commit id is $(GIT_COMMIT_ID).) $(info *** git commit id is $(GIT_COMMIT_ID).)
@ -1878,7 +1899,7 @@ else
copy $(@D)\microvax3900${EXE} $(@D)\vax${EXE} copy $(@D)\microvax3900${EXE} $(@D)\vax${EXE}
endif endif
ifneq (,$(call find_test,$(VAXD),microvax3900)) ifneq (,$(call find_test,$(VAXD),microvax3900))
$@ $(call find_test,$(VAXD),microvax3900) $@ $(call find_test,$(VAXD),microvax3900) $(TEST_ARG)
endif endif
microvax1 : ${BIN}BuildROMs${EXE} ${BIN}microvax1${EXE} microvax1 : ${BIN}BuildROMs${EXE} ${BIN}microvax1${EXE}
@ -1887,7 +1908,7 @@ ${BIN}microvax1${EXE} : ${VAX610} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX610} ${SIM} ${VAX610_OPT} -o $@ ${LDFLAGS} ${CC} ${VAX610} ${SIM} ${VAX610_OPT} -o $@ ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),microvax1)) ifneq (,$(call find_test,$(VAXD),microvax1))
$@ $(call find_test,$(VAXD),microvax1) $@ $(call find_test,$(VAXD),microvax1) $(TEST_ARG)
endif endif
rtvax1000 : ${BIN}BuildROMs${EXE} ${BIN}rtvax1000${EXE} rtvax1000 : ${BIN}BuildROMs${EXE} ${BIN}rtvax1000${EXE}
@ -1896,7 +1917,7 @@ ${BIN}rtvax1000${EXE} : ${VAX630} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX630} ${SIM} ${VAX620_OPT} -o $@ ${LDFLAGS} ${CC} ${VAX630} ${SIM} ${VAX620_OPT} -o $@ ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),rtvax1000)) ifneq (,$(call find_test,$(VAXD),rtvax1000))
$@ $(call find_test,$(VAXD),rtvax1000) $@ $(call find_test,$(VAXD),rtvax1000) $(TEST_ARG)
endif endif
microvax2 : ${BIN}BuildROMs${EXE} ${BIN}microvax2${EXE} microvax2 : ${BIN}BuildROMs${EXE} ${BIN}microvax2${EXE}
@ -1905,7 +1926,7 @@ ${BIN}microvax2${EXE} : ${VAX630} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX630} ${SIM} ${VAX630_OPT} -o $@ ${LDFLAGS} ${CC} ${VAX630} ${SIM} ${VAX630_OPT} -o $@ ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),microvax2)) ifneq (,$(call find_test,$(VAXD),microvax2))
$@ $(call find_test,$(VAXD),microvax2) $@ $(call find_test,$(VAXD),microvax2) $(TEST_ARG)
endif endif
vax730 : ${BIN}BuildROMs${EXE} ${BIN}vax730${EXE} vax730 : ${BIN}BuildROMs${EXE} ${BIN}vax730${EXE}
@ -1914,7 +1935,7 @@ ${BIN}vax730${EXE} : ${VAX730} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX730} ${SIM} ${VAX730_OPT} -o $@ ${LDFLAGS} ${CC} ${VAX730} ${SIM} ${VAX730_OPT} -o $@ ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),vax730)) ifneq (,$(call find_test,$(VAXD),vax730))
$@ $(call find_test,$(VAXD),vax730) $@ $(call find_test,$(VAXD),vax730) $(TEST_ARG)
endif endif
vax750 : ${BIN}BuildROMs${EXE} ${BIN}vax750${EXE} vax750 : ${BIN}BuildROMs${EXE} ${BIN}vax750${EXE}
@ -1923,7 +1944,7 @@ ${BIN}vax750${EXE} : ${VAX750} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX750} ${SIM} ${VAX750_OPT} -o $@ ${LDFLAGS} ${CC} ${VAX750} ${SIM} ${VAX750_OPT} -o $@ ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),vax750)) ifneq (,$(call find_test,$(VAXD),vax750))
$@ $(call find_test,$(VAXD),vax750) $@ $(call find_test,$(VAXD),vax750) $(TEST_ARG)
endif endif
vax780 : ${BIN}BuildROMs${EXE} ${BIN}vax780${EXE} vax780 : ${BIN}BuildROMs${EXE} ${BIN}vax780${EXE}
@ -1932,7 +1953,7 @@ ${BIN}vax780${EXE} : ${VAX780} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX780} ${SIM} ${VAX780_OPT} $(CC_OUTSPEC) ${LDFLAGS} ${CC} ${VAX780} ${SIM} ${VAX780_OPT} $(CC_OUTSPEC) ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),vax780)) ifneq (,$(call find_test,$(VAXD),vax780))
$@ $(call find_test,$(VAXD),vax780) $@ $(call find_test,$(VAXD),vax780) $(TEST_ARG)
endif endif
vax8600 : ${BIN}BuildROMs${EXE} ${BIN}vax8600${EXE} vax8600 : ${BIN}BuildROMs${EXE} ${BIN}vax8600${EXE}
@ -1941,7 +1962,7 @@ ${BIN}vax8600${EXE} : ${VAX8600} ${SIM} ${BUILD_ROMS}
${MKDIRBIN} ${MKDIRBIN}
${CC} ${VAX8600} ${SIM} ${VAX8600_OPT} $(CC_OUTSPEC) ${LDFLAGS} ${CC} ${VAX8600} ${SIM} ${VAX8600_OPT} $(CC_OUTSPEC) ${LDFLAGS}
ifneq (,$(call find_test,$(VAXD),vax8600)) ifneq (,$(call find_test,$(VAXD),vax8600))
$@ $(call find_test,$(VAXD),vax8600) $@ $(call find_test,$(VAXD),vax8600) $(TEST_ARG)
endif endif
nova : ${BIN}nova${EXE} nova : ${BIN}nova${EXE}