702b9ff84f832a7f8002ca5be60e1a8905b55735
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / hpbool.ra
1 /
2 / H P B O O L . R A
3 /
4 / F4 INTEGER FUNCTIONS IOR (A,B)
5 / IAND (A,B)
6 / INOT (A)
7 / IBOOL (A)
8 / F4 REAL FUNCTION BOOL (A)
9 / F4 LOGICAL FUNCTION EQL (A,B)
10 /
11 / IOR RETURNS THE 36 BIT BITWISE OR BETWEEN A AND B
12 / IAND "" " " " " " AND "" A " B
13 / INOT "" " " " " " COMPLEMENT OF A
14 / IBOOL "" " " " UNCHANGED PARAMETER A (FOR TYPELESS ASSIGNMENT)
15 / BOOL "" " " " " " " " " " " " " "
16 / EQL "" A .TRUE. IF ALL 36 BITS OF A MATCH THE 36 BITS OF B
17 /
18 / THE INPUT PARAMETERS A AND B REMAIN UNCHANGED.
19 /
20 / HARDWARE: LAB8/E, SOFT/HARD FPP12
21 /
22 / VER 0.0 21-AUG-80 HA
23 /
24 /
25 SECT #BOOL
26 BASE 0
27 ENTRY IOR / I=IOR(A,B) 36 BIT LOGICAL OR
28 ENTRY IAND / I=IAND(A,B)
29 ENTRY INOT / I=INOT(A)
30 ENTRY BOOL / TYPELESS ASSIGNMENT TO REAL
31 ENTRY IBOOL / TYPLESS ASSIGNMENT TO INTEGER
32 ENTRY EQL / LOGICAL BITWISE TEST A WITH B
33 /
34 /
35 INOT, STARTD
36 FLDA BINS1 / INSERT THE CORRECT INSTRUCTION IN PROCEDURE BODY
37 JA CON
38 BOOL,
39 IBOOL, STARTD
40 FLDA BINS2
41 JA CON
42 CON,
43 FSTA BINS / INSERT INSTRUCTION INTO PROC. BODY
44 FLDA 3*10 / GET RETURN ADR.
45 FSTA GOBAK
46 FLDA 0 / GET FIRST PARAMETER
47 FADD TWO
48 FSTA 3
49 FLDA% 3 / ADR. OF FIRST PARAMETER --> FAC
50 FSTA 3
51 STARTF
52 FLDA% 3 / FIRST PARAMETER --> FAC
53 BINS, .-.
54 .-.
55 TRAP4 INOT8
56 FLDA ARG1 / RESULT --> FAC
57 GOBAK, JA .-.
58 /
59 /
60 TWO, 0
61 2
62 BINS1, FSTA ARG1 / INSTR. USED BY INOT
63 BINS2, JA GOBAK
64 TMP1, ORG .+2
65 /
66 /
67 EQL, STARTD
68 FLDA INS0 / JMP BEQL --> INS
69 JA CONT
70 /
71 /
72 IOR, STARTD
73 FLDA INS1 / JMP OR --> INS
74 JA CONT
75 /
76 /
77 IAND, STARTD
78 FLDA INS2 / JMP BAND --> INS
79 JA CONT
80 /
81 /
82 CONT,
83 FSTA INS / INSERT THE CORRECT INSTRUCTION INTO INS
84 FLDA 3*10
85 FSTA GOHOME
86 FLDA 0
87 FADD TWO
88 FSTA 3
89 FSTA TMP1
90 FLDA% 3 / ADR. FIRST PARAM. --> FAC
91 FSTA 3
92 STARTF
93 FLDA% 3 / FIRST PARAMETER --> FAC
94 FSTA ARG1 / AND STORE INTO ARG1
95 STARTD
96 FLDA TMP1
97 FADD TWO
98 FSTA 3
99 FLDA% 3 / ADR. SECOND PARAM.
100 FSTA 3
101 STARTF
102 FLDA% 3 / SECOND PARAM. --> ARG2
103 FSTA ARG2
104 TRAP4 BOOL8
105 FLDA ARG1 / RESULT --> FAC
106 GOHOME, JA .-.
107 /
108 /
109 SECT8 #BOOL8
110 ARG1, ORG .+3
111 ARG2, ORG .+3
112 INS0, JMP BEQL
113 INS1, JMP BOR
114 INS2, JMP BAND
115 CDI= 06203
116 CAM= 07621
117 MQL= 07421
118 MQA= 07501
119 /
120 /
121 INOT8, .-. / COMPLEMENT ARG1
122 CLA
123 TAD ARG1
124 CMA
125 DCA ARG1
126 TAD ARG1+1
127 CMA
128 DCA ARG1+1
129 TAD ARG1+2
130 CMA
131 DCA ARG1+2
132 CDI
133 JMP% INOT8
134 /
135 /
136 BOOL8, .-.
137 CLA
138 INS, .-.
139 NOP / MUST BE HERE SINCE FPP STORES 2 WORDS
140 /
141 /
142 BEQL, / TEST FOR EQUALITY BETWEEN ARG1 AND ARG2
143 TAD ARG1 / LOAD FIRST WORD OF ARG1
144 CMA IAC / TWO'S COMPLEMENT AC
145 TAD ARG2 / AND ADD FIRST WORD OF SECOND ARGUMENT
146 SZA / IF THE THE WORDS MATCH THEN THE RESULT IS ZERO AND WE TEST
147 JMP NOTEQL / TEST FOR THE NEXT WORD ELSE WE GO HOME
148 TAD ARG1+1
149 CMA IAC
150 TAD ARG2+1
151 SZA
152 JMP NOTEQL
153 TAD ARG1+2
154 CMA IAC
155 TAD ARG2+2
156 SZA
157 JMP NOTEQL
158 CLA IAC / 1 --> AC
159 DCA ARG1 / INSERT .TRUE. INTO THE RESULT
160 CLA CLL CML RTR / 2000 --> AC
161 DCA ARG1+1
162 DCA ARG1+2
163 CDI
164 JMP% BOOL8
165 NOTEQL, CLA
166 DCA ARG1
167 DCA ARG1+1
168 DCA ARG1+2 / RETURN A .FALSE.
169 CDI
170 JMP% BOOL8
171 /
172 /
173 BAND, / AND BETWEEN ARG1 AND ARG2
174 TAD ARG1
175 AND ARG2
176 DCA ARG1
177 TAD ARG1+1
178 AND ARG2+1
179 DCA ARG1+1
180 TAD ARG1+2
181 AND ARG2+2
182 DCA ARG1+2
183 CDI
184 JMP% BOOL8
185 /
186 /
187 BOR, / OR BETWEEN ARG1 AND ARG2
188 TAD ARG1
189 MQL
190 TAD ARG2
191 MQA
192 DCA ARG1
193 TAD ARG1+1
194 MQL
195 TAD ARG2+1
196 MQA
197 DCA ARG1+1
198 TAD ARG1+2
199 MQL
200 TAD ARG2+2
201 MQA
202 DCA ARG1+2
203 CDI
204 JMP% BOOL8
205 /
206 /
207 END
208 \1a