1
0
mirror of https://github.com/moshix/mvs.git synced 2026-02-09 01:01:20 +00:00
Files
moshix.mvs/PC370_orig/Diskette/full/DEMO/DEMOSSP.ALC

439 lines
10 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE 'TESTSSP - TEST SCIENTIFIC SUBROUTINE PACKAGE'
*
* PGM-ID. TESTSSP.ALC
* AUTHOR. DON HIGGINS
* DATE. 07/24/87
* REMARKS. SEE SSP.ALC AND FP87.DOC FOR MORE INFORMATION.
* MAINTENANCE.
*
* 07/24/87 COPY FROM TESTFP AND MODIFY
* 07/31/87 ADD RANGE TEST OF EXP TO DETECT FRACTION SIGN BUG
* 08/08/87 ADD MOD, SIN, COS, TAN USING LIBRARY FUNCTIONS 14-17
* 08/09/87 ALLOW FOR R15 RETURNING 80X87 EXCEPTION BITS INCLUDING PRECISION
* ADD SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
TESTSSP CSECT
LA R10,0(R15)
LA R11,2048(R10)
LA R11,2048(R11)
USING TESTSSP,R10
USING TESTSSP+4096,R11
LA DE,=C'TESTSSP START$'
SVC WTO
* ALOG
LA DE,=C'TESTSSP STARTING ALOG VALUE TESTS$'
SVC WTO
LA R1,FPLE2
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
LER FR2,FR0 FR2=FR0
LE FR0,=E'2'
L R15,=V(ALOG)
BALR R14,R15 FR0=LOGE(2) CALC'ED
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPLE2
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
LNER FR2,FR0
LE FR0,=E'.5'
L R15,=V(ALOG)
BALR R14,R15 FR0=LOGE(2) CALC'ED
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* ALOG10
LA DE,=C'TESTSSP STARTING ALOG10 VALUE TESTS$'
SVC WTO
LA R1,FPLT2
SVC FPSVC FR0=LOG10(2) 80X87 CONSTANT
LER FR2,FR0 FR2=FR0
LE FR0,=E'2'
L R15,=V(ALOG10)
BALR R14,R15 FR0=LOG10(2) CALC'ED
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPLT2
SVC FPSVC FR0=LOG10(2) 80X87 CONSTANT
LNER FR2,FR0
LE FR0,=E'.5'
L R15,=V(ALOG10)
BALR R14,R15 FR0=LOG10(2) CALC'ED
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* ATAN
LA DE,=C'TESTSSP STARTING ATAN VALUE TESTS$'
SVC WTO
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'4' FR0=PI/4
LER FR2,FR0
LE FR0,=E'1'
L R15,=V(ATAN)
BALR R14,R15 FR0=ATAN(1.0)=PI/4
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* COS
LA DE,=C'TESTSSP STARTING COS VALUE TESTS$'
SVC WTO
SER FR0,FR0
L R15,=V(COS)
BALR R14,R15 FR0=COS(0.0)=1.0
SE FR0,=E'1'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'4' FR0=PI/4
L R15,=V(COS)
BALR R14,R15 FR0=COS(PI/4)=SQRT(2)/2.
LER FR2,FR0
LE FR0,=E'2'
L R15,=V(SQRT)
BALR R14,R15
DE FR0,=E'2'
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'2' FR0=PI/2
L R15,=V(COS)
BALR R14,R15 FR0=COS(PI/2)=0.0
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* EXP
LA DE,=C'TESTSSP STARTING EXP VALUE TESTS$'
SVC WTO
LA R1,FPLE2
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
L R15,=V(EXP)
BALR R14,R15 FR0=E**LOGE(2)=2 CALC'ED
SE FR0,=E'2'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LE FR0,=E'0'
L R15,=V(EXP)
BALR R14,R15 FR0=E**(0) CALC'ED
SE FR0,=E'1'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPLE2
SVC FPSVC FR0=LOGE(2) 80X87 CONSTANT
LNER FR0,FR0 FR0=-LOGE(2)
L R15,=V(EXP)
BALR R14,R15 FR0=E**(-LOGE(2)) CALC'ED
SE FR0,=E'0.5'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LE FR0,=E'10'
L R15,=V(ALOG)
BALR R14,R15 FR0=LOGE(10) CALC'ED
L R15,=V(EXP)
BALR R14,R15 FR0=E**(LOGE(10)) CALC'ED
SE FR0,=E'10'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LE FR0,=E'0.1'
L R15,=V(ALOG)
BALR R14,R15 FR0=LOGE(0.1) CALC'ED
L R15,=V(EXP)
BALR R14,R15 FR0=E**(LOGE(0.1)) CALC'ED
SE FR0,=E'0.1'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* INT
LA DE,=C'TESTSSP STARTING INT VALUE TESTS$'
SVC WTO
LE FR0,=E'123.456'
L R15,=V(INT)
BALR R14,R15
CL R0,=F'123'
BAL R14,CCE
LE FR0,=E'-123.456'
L R15,=V(INT)
BALR R14,R15
CL R0,=F'-123'
BAL R14,CCE
* MOD
LA DE,=C'TESTSSP STARTING MOD VALUE TESTS$'
SVC WTO
LD FR0,=D'123.456'
LD FR2,=D'1'
L R15,=V(MOD)
BALR R14,R15
SD FR0,=D'0.456'
LPER FR0,FR0
CD FR0,DERR
BAL R14,CCL
LD FR0,=D'10'
LD FR2,=D'3'
L R15,=V(MOD)
BALR R14,R15
SD FR0,=D'1'
LPER FR0,FR0
CD FR0,DERR
BAL R14,CCL
* REAL
LA DE,=C'TESTSSP STARTING REAL VALUE TESTS$'
SVC WTO
L R0,=F'123'
L R15,=V(REAL)
BALR R14,R15
CE FR0,=E'123'
BAL R14,CCE
L R0,=F'-123'
L R15,=V(REAL)
BALR R14,R15
CE FR0,=E'-123'
BAL R14,CCE
* SIN
LA DE,=C'TESTSSP STARTING SIN VALUE TESTS$'
SVC WTO
SER FR0,FR0
L R15,=V(SIN)
BALR R14,R15 FR0=SIN(0.0)=1.0
SE FR0,=E'0'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'4' FR0=PI/4
L R15,=V(SIN)
BALR R14,R15 FR0=SIN(PI/4)=SQRT(2)/2.
LER FR2,FR0
LE FR0,=E'2'
L R15,=V(SQRT)
BALR R14,R15
DE FR0,=E'2'
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'2' FR0=PI/2
L R15,=V(SIN)
BALR R14,R15 FR0=SIN(PI/2)=1.0
SE FR0,=E'1'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* SQRT
LA DE,=C'TESTSSP STARTING SQRT VALUE TESTS$'
SVC WTO
LE FR0,=E'4'
L R15,=V(SQRT)
BALR R14,R15
CE FR0,=E'2'
BAL R14,CCE
LD FR0,=D'2.25'
L R15,=V(SQRT)
BALR R14,R15
CD FR0,=D'1.5'
BAL R14,CCE
LD FR0,=D'12345'
MDR FR0,FR0
L R15,=V(SQRT)
BALR R14,R15
SD FR0,=D'12345'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
* TAN
LA DE,=C'TESTSSP STARTING TAN VALUE TESTS$'
SVC WTO
SER FR0,FR0
L R15,=V(TAN)
BALR R14,R15 FR0=TAN(0.0)=0.0
SE FR0,=E'0'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'4' FR0=PI/4
L R15,=V(TAN)
BALR R14,R15 FR0=TAN(PI/4)=1.0
SE FR0,=E'1'
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R1,FPPI
SVC FPSVC FR0=PI
DD FR0,=D'2' FR0=PI/2
L R15,=V(TAN)
BALR R14,R15 FR0=TAN(PI/2)=1.0*16**63 PLUS DIVIDE CHK ERR
LTR R15,R15
BAL R14,CCH VERIFY RC>0 DUE TO EXCEPTION
STE FR0,WE0
NI WE0,X'7F'
CLC WE0,=X'7F800000' ABS COMPARE WITH FP87 MAX CONSTANT
BAL R14,CCE
LA DE,=C'TESTSSP STARTING RANGE TESTS$'
SVC WTO
* SIN/COS/TAN RANGE TEST -2*PI,2*PI,PI/6
LA DE,=C'TESTSSP STARTING SIN/COS RANGE TESTS$'
SVC WTO
LA R1,FPPI
SVC FPSVC FR0=PI
LDR FR6,FR0
DD FR6,=D'6' FR6=PI/6 INCR ARG.
LDR FR4,FR0
ADR FR4,FR4 FR4=2*PI MAX. ARG.
LNDR FR2,FR4 FR2=-2*PI CURRENT ARG.
LA R2,1
SLOOP EQU *
LER FR0,FR2
L R15,=V(SIN)
BALR R14,R15 FR0=SIN(X)
STD FR0,SAVSIN
LDR FR0,FR2
SDR FR0,FR6
SDR FR0,FR6
SDR FR0,FR6
L R15,=V(COS)
BALR R14,R15 FR0=COS(X-PI/2)
SD FR0,SAVSIN
LPDR FR0,FR0
CD FR0,DERR VERFIFY SIN(X)=COS(X-PI/2) WITHIN DERR
BAL R14,CCL
SP PTAN,=P'1' DEC SKIP COUNTER
BNZ TSTTAN
ZAP PTAN,=P'6' RESET COUNTER TO SKIP AGAIN AT +PI
B SKPTAN
TSTTAN EQU *
LER FR0,FR2
L R15,=V(COS)
BALR R14,R15 FR0=COS(X)
STD FR0,SAVCOS
LD FR0,SAVSIN
DD FR0,SAVCOS
STD FR0,SAVTAN SIN(X)/COS(X)
LER FR0,FR2
L R15,=V(TAN)
BALR R14,R15 FR0=TAN(X)
SD FR0,SAVTAN
LPDR FR0,FR0
CD FR0,DERR VERFIFY TAN(X)=SIN(X)/COS(X) WITHIN DERR
BAL R14,CCL
SKPTAN EQU * SKIP TAN TEST FOR COS(X)=0
LA R2,1(R2)
ADR FR2,FR6
CDR FR2,FR4
BL SLOOP
* EXP AND ALOG RANGE TEST 0.1 TO 10 BY 0.1
LA DE,=C'TESTSSP STARTING EXP/ALOG 0.1,10,0.1 RANGE TESTS$'
SVC WTO
LE FR2,=E'0.1' X
LA R2,1
XLOOP EQU *
LER FR0,FR2
L R15,=V(ALOG)
BALR R14,R15 FR0=LOGE(X) CALC'ED
L R15,=V(EXP)
BALR R14,R15 FR0=E**(LOGE(X)) CALC'ED
SER FR0,FR2
LPER FR0,FR0
CD FR0,DERR VERFIFY RESULT WITHIN DERR
BAL R14,CCL
LA R2,1(R2)
AE FR2,=E'0.1'
CE FR2,=E'10'
BL XLOOP
TESTEOJ EQU *
LA DE,CMSG
SVC WTO
LA DE,=C'TESTSSP END$'
SVC WTO
SVC TRACE
DC C'ERX '
SVC EXIT
CCE BE CCOK
CCBAD SVC TRACE
DC C'BUG'
CCOK LA R12,1(R12)
ST R14,SAVELINK
L R13,SAVELINK
LA R4,DCOUNT+2
LA R3,0
CLOOP IC R3,0(R4)
O R3,=X'000000F0' CHANGE BLANK TO DIGIT
A R3,=F'1'
C R3,=X'000000FA'
BL CDONE
L R3,=X'000000F0'
STC R3,0(R4)
S R4,=F'1'
B CLOOP
CDONE STC R3,0(R4)
B 0(R14)
CCL BL CCOK
B CCBAD
CCH BH CCOK
B CCBAD
CCNE BNE CCOK
B CCBAD
CC3 BO CCOK
B CCBAD
SAVELINK DC A(0)
*
* DATA
*
FR0 EQU 0
FR2 EQU 2
FR4 EQU 4
FR6 EQU 6
R0 EQU 0
R1 EQU 1
R2 EQU 2
R3 EQU 3
R4 EQU 4
R10 EQU 10 BASE 1
R11 EQU 11 BASE 2
R12 EQU 12
R13 EQU 13
R14 EQU 14
R15 EQU 15
WE0 DC E'0'
WD0 DC D'0'
NAN DC X'E060000000000000'
CMSG DC C'TOTAL TESTS = '
DCOUNT DC C' '
DC C'$'
DC 0F'0',C'* FWORD*'
FWORD DC F'0'
HWORD DC H'0'
SPIE EQU 14 SET SPIE
TRACE EQU 9 TRACE SVC - MUST BE FOLLOWED BY 3 CHAR. ID
WTO EQU 209 CPM WRITE TO OPERATOR (CPM SVC 9)
EXIT EQU 0 EXIT EMULTOR SVC
DE EQU 2 REG. 2 MAPS TO DE FOR CP/M SVC'S
FPSVC EQU 35
FPLT2 EQU 1
FPLE2 EQU 2
FPL2E EQU 3
FPL2T EQU 4
FPPI EQU 5
DERR DC D'1E-12' ERROR THRESHOLD
SAVSIN DC D'0'
SAVCOS DC D'0'
SAVTAN DC D'0'
PTAN DC P'4' SET TO SKIP TAN TEST AT PI/2
END TESTSSP