Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / hpcond.ra
CommitLineData
81e70d48
PH
1/ \ e HPCOND.RA\r
2/\r
3 SECT #COND\r
4 ENTRY NCOND / FORTRAN INTEGER FUNCTION\r
5 ENTRY COND / FORTRAN REAL FUNCTION\r
6/\r
7/ ODD NUMBER OF PARAMETERS: I=NCOND(LA,A,LB,B,...,LY,Y,Z)\r
8/ NCOND:=.IF LA .THEN A .ELIF LB .THEN B .ELIF ... .ELSE Z .FI\r
9/ EVEN NUMBER OF PARAMETERS: I=NCOND(LA,A,LB,B,...,LZ,Z)\r
10/ NCOND:=.IF LA .THEN A .ELIF .... .ELIF LZ .THEN Z .ELSE 0 .FI\r
11/\r
12X0= 0\r
13X1= X0+1\r
14X2= X1+1\r
15XR, ORG .+X2+1\r
16/ TEXT 'NCOND '\r
17/CXR, SETX XR\r
18/ SETB BAS\r
19BAS, ORG .+3\r
20T1, ORG .+3 / POINTER INTO PARAMETER LIST\r
21T2, ORG .+3 / HOLD ADR. OF PARAMETERS\r
22RETURN, JA .;0 / RETURN ADR\r
23TWO, 0;0;2\r
24/ ORG 10*3+BAS / COMPLETE BASE PAGE IS NOT USED HERE\r
25/ FNOP\r
26/ JA CXR\r
27/\r
28/\r
29 BASE 0\r
30NCOND,\r
31COND,\r
32 STARTD\r
33 FLDA 3*10 / GET RETURN ADR\r
34 FSTA RETURN\r
35 FLDA 0 / POINTER TO PARAMETER LIST --> T1\r
36 SETB BAS\r
37 BASE BAS\r
38 FSTA T1\r
39 FLDA% T1 / RETURN ADR --> FAC\r
40 FSUB T1 / AND COMPUTE LENGTH OF PARAMETER LIST\r
41 FSUB TWO\r
42 SETX XR\r
43 LDX 1,X2 / SHIFT ONE BIT TO THE RIGHT\r
44 ALN X2 / DIVIDE BY TWO AND BUMP NO. OF PARAMETERS\r
45 FNEG / INTO X2\r
46 ATX X2\r
47 LDX 0,X1 / SET UP POINTER\r
48 STARTF\r
49 JEQ RETURN / NO PARAMETERS AT ALL, RETURN WITH FAC=0\r
50/\r
51/\r
52LOOP,\r
53 STARTD / LOAD AND TEST THE ODD NUMBERED PARAMETERS\r
54 FLDA% T1,X1+\r
55 FSTA T2 / STORE THE ADR. OF THE PARAMETER\r
56 STARTF\r
57 FLDA% T2 / AND LOAD IT'S VALUE\r
58 JNE TRUE / WE FOUND A NONZERO SWITCH\r
59/\r
60 JXN C1,X2+ / IF THERE ARE NO PARAMETERS LEFT THEN\r
61 JA RETURN / RETURN WITH FAC=0 ELSE\r
62/\r
63C1, ADDX 1,X1 / SKIP THE EVEN NUMBERED PARAMETER\r
64 JXN LOOP,X2+ / IF THIS WAS THE LAST PARAMETER THEN\r
65 JA RETURN / RETURN WITH FAC =0 ELSE GET NEXT PAIR OF PARAMETERS\r
66/\r
67/\r
68TRUE, JXN C2,X2+ / IF THERE IS A ODD NUMBER OF PARAMETERS\r
69 JA RETURN / THEN RETURN WITH FAC=LAST PARAMETER ELSE\r
70C2,\r
71 STARTD\r
72 FLDA% T1,X1+ / RETURN THE EVEN NUMBERED PARAMETER\r
73 FSTA T2\r
74 STARTF\r
75 FLDA% T2\r
76 JA RETURN\r
77 END\r
78\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0