diff --git a/.gitattributes b/.gitattributes index ed3ba613..50a36092 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,5 +8,7 @@ *.imd binary *.rim binary *.tap binary +*.dsk binary +*.vhd binary sim_rev.h export-subst diff --git a/VAX/tests/VAX_MINIMUM_DIAGS.dsk b/VAX/tests/VAX_MINIMUM_DIAGS.dsk new file mode 100644 index 00000000..c1e360f2 Binary files /dev/null and b/VAX/tests/VAX_MINIMUM_DIAGS.dsk differ diff --git a/VAX/tests/diag780/EVKAB.HLP b/VAX/tests/diag780/EVKAB.HLP new file mode 100644 index 00000000..1bec420c --- /dev/null +++ b/VAX/tests/diag780/EVKAB.HLP @@ -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. diff --git a/VAX/tests/diag780/EVKAC.HLP b/VAX/tests/diag780/EVKAC.HLP new file mode 100644 index 00000000..fb9a71eb --- /dev/null +++ b/VAX/tests/diag780/EVKAC.HLP @@ -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. diff --git a/VAX/tests/diag780/EVKAD.HLP b/VAX/tests/diag780/EVKAD.HLP new file mode 100644 index 00000000..b6536e4c --- /dev/null +++ b/VAX/tests/diag780/EVKAD.HLP @@ -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. diff --git a/VAX/tests/diag780/EVKAE.HLP b/VAX/tests/diag780/EVKAE.HLP new file mode 100644 index 00000000..4ebd0dfe --- /dev/null +++ b/VAX/tests/diag780/EVKAE.HLP @@ -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. diff --git a/VAX/tests/microvax3900_test.ini b/VAX/tests/microvax3900_test.ini index 9896deb5..a2e532fb 100644 --- a/VAX/tests/microvax3900_test.ini +++ b/VAX/tests/microvax3900_test.ini @@ -1,2 +1,2 @@ cd VAX/tests -do EHKAA.ini +do VAX-DIAG.ini %1 diff --git a/VAX/tests/vax-diag.ini b/VAX/tests/vax-diag.ini new file mode 100644 index 00000000..e6c0987d --- /dev/null +++ b/VAX/tests/vax-diag.ini @@ -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 diff --git a/VAX/tests/vax730_test.ini b/VAX/tests/vax730_test.ini index 9646479e..a2e532fb 100644 --- a/VAX/tests/vax730_test.ini +++ b/VAX/tests/vax730_test.ini @@ -1,2 +1,2 @@ cd VAX/tests -do EVKAA.ini +do VAX-DIAG.ini %1 diff --git a/VAX/tests/vax750_test.ini b/VAX/tests/vax750_test.ini index 9646479e..a2e532fb 100644 --- a/VAX/tests/vax750_test.ini +++ b/VAX/tests/vax750_test.ini @@ -1,2 +1,2 @@ cd VAX/tests -do EVKAA.ini +do VAX-DIAG.ini %1 diff --git a/VAX/tests/vax780_test.ini b/VAX/tests/vax780_test.ini index 9646479e..a2e532fb 100644 --- a/VAX/tests/vax780_test.ini +++ b/VAX/tests/vax780_test.ini @@ -1,2 +1,2 @@ cd VAX/tests -do EVKAA.ini +do VAX-DIAG.ini %1 diff --git a/VAX/tests/vax8600_test.ini b/VAX/tests/vax8600_test.ini index 9646479e..a2e532fb 100644 --- a/VAX/tests/vax8600_test.ini +++ b/VAX/tests/vax8600_test.ini @@ -1,2 +1,2 @@ cd VAX/tests -do EVKAA.ini +do VAX-DIAG.ini %1 diff --git a/makefile b/makefile index 7da00764..c6006840 100644 --- a/makefile +++ b/makefile @@ -36,6 +36,15 @@ # If debugging is desired, then GNU make can be invoked with # 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 # dependent packages provided with the or by the operating system # 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) endif BUILD_SINGLE := $(MAKECMDGOALS) $(BLANK_SUFFIX) +BUILD_MULTIPLE_VERB = is # 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)))))) VIDEO_USEFUL = true @@ -102,11 +112,13 @@ ifneq (,$(or $(findstring pdp11,$(MAKECMDGOALS)),$(findstring pdp10,$(MAKECMDGOA NETWORK_USEFUL = true ifneq (,$(findstring all,$(MAKECMDGOALS))) BUILD_MULTIPLE = s + BUILD_MULTIPLE_VERB = are VIDEO_USEFUL = true BESM6_BUILD = true endif ifneq (,$(word 2,$(MAKECMDGOALS))) BUILD_MULTIPLE = s + BUILD_MULTIPLE_VERB = are endif else ifeq ($(MAKECMDGOALS),) @@ -114,6 +126,7 @@ else NETWORK_USEFUL = true VIDEO_USEFUL = true BUILD_MULTIPLE = s + BUILD_MULTIPLE_VERB = are BUILD_SINGLE := all $(BUILD_SINGLE) BESM6_BUILD = true endif @@ -121,7 +134,12 @@ endif 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_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)),) ifeq ($(findstring .exe,$(SHELL)),.exe) # MinGW @@ -741,7 +759,7 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) else INCPATH = $(INCPATHSAVE) $(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 ***) $(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 USE_NETWORK,$(NETWORK_CCDEFS))$(findstring USE_SHARED,$(NETWORK_CCDEFS))) $(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 ***) endif @@ -845,7 +863,7 @@ ifeq ($(WIN32),) #*nix Environments (&& cygwin) NETWORK_CCDEFS += -DUSE_NETWORK NETWORK_FEATURES = - WITHOUT Local LAN networking support $(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 *** To build simulator(s) with networking support you should read) $(info *** Warning *** 0readme_ethernet.txt and follow the instructions regarding the) @@ -1115,6 +1133,9 @@ ifneq (clean,$(MAKECMDGOALS)) ifneq (,$(VIDEO_FEATURES)) $(info *** $(VIDEO_FEATURES).) endif + ifneq (,$(TESTING_FEATURES)) + $(info *** $(TESTING_FEATURES).) + endif ifneq (,$(GIT_COMMIT_ID)) $(info ***) $(info *** git commit id is $(GIT_COMMIT_ID).) @@ -1878,7 +1899,7 @@ else copy $(@D)\microvax3900${EXE} $(@D)\vax${EXE} endif ifneq (,$(call find_test,$(VAXD),microvax3900)) - $@ $(call find_test,$(VAXD),microvax3900) + $@ $(call find_test,$(VAXD),microvax3900) $(TEST_ARG) endif microvax1 : ${BIN}BuildROMs${EXE} ${BIN}microvax1${EXE} @@ -1887,7 +1908,7 @@ ${BIN}microvax1${EXE} : ${VAX610} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX610} ${SIM} ${VAX610_OPT} -o $@ ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),microvax1)) - $@ $(call find_test,$(VAXD),microvax1) + $@ $(call find_test,$(VAXD),microvax1) $(TEST_ARG) endif rtvax1000 : ${BIN}BuildROMs${EXE} ${BIN}rtvax1000${EXE} @@ -1896,7 +1917,7 @@ ${BIN}rtvax1000${EXE} : ${VAX630} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX630} ${SIM} ${VAX620_OPT} -o $@ ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),rtvax1000)) - $@ $(call find_test,$(VAXD),rtvax1000) + $@ $(call find_test,$(VAXD),rtvax1000) $(TEST_ARG) endif microvax2 : ${BIN}BuildROMs${EXE} ${BIN}microvax2${EXE} @@ -1905,7 +1926,7 @@ ${BIN}microvax2${EXE} : ${VAX630} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX630} ${SIM} ${VAX630_OPT} -o $@ ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),microvax2)) - $@ $(call find_test,$(VAXD),microvax2) + $@ $(call find_test,$(VAXD),microvax2) $(TEST_ARG) endif vax730 : ${BIN}BuildROMs${EXE} ${BIN}vax730${EXE} @@ -1914,7 +1935,7 @@ ${BIN}vax730${EXE} : ${VAX730} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX730} ${SIM} ${VAX730_OPT} -o $@ ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),vax730)) - $@ $(call find_test,$(VAXD),vax730) + $@ $(call find_test,$(VAXD),vax730) $(TEST_ARG) endif vax750 : ${BIN}BuildROMs${EXE} ${BIN}vax750${EXE} @@ -1923,7 +1944,7 @@ ${BIN}vax750${EXE} : ${VAX750} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX750} ${SIM} ${VAX750_OPT} -o $@ ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),vax750)) - $@ $(call find_test,$(VAXD),vax750) + $@ $(call find_test,$(VAXD),vax750) $(TEST_ARG) endif vax780 : ${BIN}BuildROMs${EXE} ${BIN}vax780${EXE} @@ -1932,7 +1953,7 @@ ${BIN}vax780${EXE} : ${VAX780} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX780} ${SIM} ${VAX780_OPT} $(CC_OUTSPEC) ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),vax780)) - $@ $(call find_test,$(VAXD),vax780) + $@ $(call find_test,$(VAXD),vax780) $(TEST_ARG) endif vax8600 : ${BIN}BuildROMs${EXE} ${BIN}vax8600${EXE} @@ -1941,7 +1962,7 @@ ${BIN}vax8600${EXE} : ${VAX8600} ${SIM} ${BUILD_ROMS} ${MKDIRBIN} ${CC} ${VAX8600} ${SIM} ${VAX8600_OPT} $(CC_OUTSPEC) ${LDFLAGS} ifneq (,$(call find_test,$(VAXD),vax8600)) - $@ $(call find_test,$(VAXD),vax8600) + $@ $(call find_test,$(VAXD),vax8600) $(TEST_ARG) endif nova : ${BIN}nova${EXE}