Add README.md
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rkb / paroff / realtm.ra
1 / A-D CLOCKED, BUFFERED SAMPLING ROUTINE
2 ADSK=6534
3 ADRB=6533
4 ADST=6532
5 ADLM=6531
6 ADLE=6536
7 ADCL=6530
8 CLZE=6130
9 ESF=4
10 LINC=6141
11 PDP=2
12 SAM=100
13 CLEN=6134
14 FIELD1 SAMPLE
15 0 /INTERRUPT TIME AD SAMPLER
16 IFNSW 8 <
17 JMS LNCSAM /INITIATE SAMPLE
18 NEXTCH, ISZ SAMINS /UPDATE SAM INST FOR NEXT CHAN
19 JMS LNCSAM /SAM AND INITIATE NEXT CHANNEL
20 >
21 TAD SAMPTR /SAVE THE OLD SAM BUFFER POINTER
22 DCA OLDPTR
23 TAD BUFFLD /AND THE FIELD
24 DCA OLDFLD
25 ISZ SAMPTR /BUMP BUFFER POINTER
26 JMP FLDOK /FIELD IS OK
27 TAD BUFFLD /BUMP FIELD
28 TAD L10
29 DCA BUFFLD
30 FLDOK, ISZ SAMCNT /BUMP BUFFER COUNT
31 JMP BUFFLD /NOT END OF BUFFER
32 TAD ARRAY+2 /RESET POINTER TO START OF BUFFER
33 DCA SAMPTR
34 TAD FLDBUF /RESET BUFFER FIELD
35 DCA BUFFLD
36 TAD BUFSIZ /RESET COUNT
37 DCA SAMCNT
38 BUFFLD, HLT /GET FIELD OF NEW ADB STOP CODE
39 TAD% SAMPTR /IS THIS THE SAM STOP CODE ?
40 TAD M3776 /(ILLEGAL AS A SAMPLE)
41 SZA CLA
42 JMP NOERR
43 ISZ TOOFAS /SET TOO FAST SWITCH
44 SAMPLD, CDF 10
45 DCA% XCLINT+1 /STOP SAMPLING
46 JMP% SAMPLE
47 NOERR, CLL CMA RAR /SET ADB STOP CODE
48 DCA% SAMPTR
49 OLDFLD, HLT /GET TO FIELD OF SAMPLE
50 IFSW 8 <
51 ADRB /READ SAMPLE
52 >
53 IFNSW 8 <
54 TAD SAMTMP /GET PREVIOUSLY READ SAMPLE
55 >
56 DCA% OLDPTR /INTO BUFFER
57 ISZ NPOINT+2 /ANY MORE SAMPLES
58 SKP /YES
59 ISZ NPOINT+1 /MORE THAN 7777 ?
60 SKP /YES
61 JMP SAMPLD /NO
62 ISZ NCHANL+1 /ANY MORE CHANNELS TO SAMPLE ?
63 JMP NEXTCH /YES GO START SAMPLING
64 TAD CSTART+2 /STARTING CHANNEL
65 IFSW 8 <
66 ADLM
67 >
68 IFNSW 8 <
69 DCA SAMINS
70 JMS LNCSAM /SET CHANNEL TO START
71 /IN CASE CLOCK INITIATED
72 >
73 TAD NCHANL+2 /NUMBER OF CHANNELS
74 DCA NCHANL+1 /INTO COUNTER
75 CDF 10
76 JMP% SAMPLE
77 IFSW 8 <
78 NEXTCH, ADST /SAMPLE NEXT CHANNEL
79 ADSK /WAIT FOR SAMPLE
80 JMP .-1
81 JMP SAMPLE+1
82 >
83 IFNSW 8 <
84 LNCSAM, 0 /LINC SAM SUBROUTINE
85 LINC
86 SAMINS, SAM 0 /SAMPLE AND SELECT NEXT CHANNEL
87 PDP
88 DCA SAMTMP /SAVE IT
89 JMP% LNCSAM
90 >
91 ADSETU, 0 /SET UP ROUTINE
92 DCA TOOFAS /CLEAR TOO FAST SWITCH
93 TAD ARRAY+1 /GET FIELD OF BUFFER
94 AND L7
95 CLL RTL
96 RAL
97 TAD CDF0
98 DCA FLDBUF
99 TAD FLDBUF
100 DCA BUFFLD /SAVE IN SAMPLER CODE
101 TAD ARRAY+2 /SET SAMPLER BUFFER POINTER
102 IAC
103 DCA SAMPTR
104 TAD LENGTH+2 /SIZE OF BUFFER
105 CLL RAL
106 TAD LENGTH+2 /TIMES THREE
107 DCA BUFSIZ /SAVE IT
108 TAD BUFSIZ /SET INITIAL COUNT
109 IAC
110 DCA SAMCNT
111 TAD NCHANL+2 /SET CHANNEL COUNT
112 DCA NCHANL+1
113 IFSW 8 <
114 CLA CMA /STOP THE CLOCK
115 CLZE
116 CLA
117 ADCL /CLEAR AD LOGIC JUST IN CASE
118 TAD L300 /SET AD ENABLE BITS
119 ADLE
120 TAD CSTART+2 /STARTING CHANNEL NUMBER
121 ADLM
122 >
123 IFNSW 8 <
124 CLEN /STOP THE CLOCK
125 TAD CSTART+2 /SET UP INITIAL SAM INSTRUCTION
126 TAD L100
127 DCA CSTART+2
128 TAD CSTART+2
129 DCA SAMST /STARTING SAM
130 TAD SAMST /ALSO INTERRUPT TIME SAM
131 DCA SAMINS
132 TAD L100 /SET FAST SAM BIT
133 IOF /TURN OFF INTERRUPTS IN LINC MODE
134 LINC /ENTER LINC MODE
135 ESF
136 SAMST, SAM 0 /SET INITIAL SAM CHANNEL
137 PDP
138 ION
139 CLA
140 >
141 CIF CDF
142 JMP% ADSETU
143 BASEX, FNOP
144 M3776, -3776
145 L10, 10
146 SAMPTR,
147 ARRAY, 0;0;0
148 LENGTH, 0;0
149 BUFSIZ, 0
150 SAMCNT,
151 CSTART, 0
152 OLDPTR, 0;0
153 SAMTMP,
154 NCHANL, 0;0;0
155 NPOINT, 0;0;0
156 FLDBUF,
157 XCLINT, ADDR #CLINT
158 IFSW 8 <
159 L300, 300
160 >
161 IFNSW 8 <
162 L100, 100
163 >
164 SAMXR, 0;0
165 TOOFAS, 0
166 ORG 10*3+BASEX
167 0
168 JA NAME+3
169 0
170 SAMRTN, JA .
171 CDF0, CDF
172 L7, 7
173 \f SECT REALTM
174 BASE 0
175 STARTD
176 FLDA 30 /GET RETURN ADDR
177 FSTA SAMRTN
178 FLDA 0 /GET ARG POINTER
179 BASE BASEX
180 SETB BASEX
181 SETX SAMXR
182 FSTA NPOINT /SAVE ARG POINTER
183 FCLA
184 EXTERN #CLINT
185 FSTA #CLINT /STOP ANY SAMPLING NOW!
186 LDX 1,1
187 FLDA% NPOINT,1 /GET BUFFER ADDRESS
188 FSTA ARRAY
189 FLDA% NPOINT,1+ /GET ADDR OF LENGTH
190 FSTA LENGTH
191 FLDA% NPOINT,1+ /ADDR OFHANNEL START
192 FSTA CSTART
193 FLDA% NPOINT,1+ /ADDR OF # CHANNELS
194 FSTA NCHANL
195 FLDA% NPOINT,1+ /ADDR OF NUMBER OF POINTS
196 FSTA NPOINT
197 FLDA ARRAY /CREATE SETX INS
198 FADD STXMJA
199 FSTA BUFSTX
200 FSTA ADBSTX /AND SAVE IT IN TWO PLACES
201 STARTF
202 FLDA% LENGTH /INTEGERIZE AND NEGATE SOME ARGS
203 FNEG
204 ALN 0
205 FSTA LENGTH
206 FNORM
207 ATX 1 /SET BUFFER COUNT
208 FLDA% CSTART /GET STARTING CHANNEL
209 ALN 0
210 FSTA CSTART
211 FLDA% NCHANL
212 FNEG
213 ALN 0
214 FSTA NCHANL
215 FLDA% NPOINT
216 FNEG
217 ALN 0
218 FSTA NPOINT
219 LDX -1,2 /SET UP FOR BUFFER CLEAR
220 FCLA
221 CLRBUF, FSTA% ARRAY,2+
222 JXN CLRBUF,1+
223 TRAP4 ADSETU /SET UP AD STUFF
224 FLDA LENGTH /RE-GET BUFFER SIZE
225 FNORM
226 ATX 1 /BUT NOW ITS TIMES THREE
227 FLDA STPCOD /STORE STOP CODES
228 FSTA% ARRAY /INTO FIRST 3 WORD
229 STARTD
230 FLDA SAMADR /SET UP SAMPLER INTERRUPT HANDLER
231 FSTA #CLINT
232 STARTF
233 JA SAMRTN /RETURN
234 NAME, TEXT +RTMADB+
235 SAMADR, ADDR SAMPLE
236 STPCOD, 3776;3777;0
237 STXMJA, 1100-1030;0
238 L2047, F 2047.
239 L511, F 511.
240 \f ENTRY ADB
241 ADB, BASE 0 /FETCH SAMPLE FROM BUFFER
242 STARTD
243 FLDA 30 /SAVE REUTRN
244 FSTA SAMRTN
245 SETB BASEX
246 SETX SAMXR
247 BASE BASEX
248 JXN SPEEDK,2 /CLOCK TOO FAST
249 FLDA ADBSTX /SAVE OLD SETX
250 FSTA OLDSTX
251 FADD L1 /ADD ONE TO IT
252 FSTA ADBSTX /AND SAVE IT BACK
253 JXN NORINQ,1+ /END OF BUFFER ?
254 FLDA BUFSTX /YES, RESTART
255 FSTA ADBSTX
256 FLDA LENGTH /RESET COUNT
257 ATX 1
258 NORINQ, STARTF
259 ADBSTX, SETX 0 /SET XR0 TO NEXT SAMPLE
260 WAIT, XTA 0 /GET THE NEXT SAMPLE
261 FSUB L2047 /IS IT THE STOP CODE
262 JEQ WAIT /YES
263 XTA 0 /NO, FETCH THE SAMPLE
264 LDX 3776,0 /SET SAMPLE STOP CODE
265 OLDSTX, SETX 0 /SET XR0 TO PREVIOUS STOP CODE
266 LDX 0,0 /NOW ZERO IT
267 JA SAMRTN /RETURN
268 SPEEDK, EXTERN #WRITO /USE FORTRAN I/O
269 TRAP3 #WRITO /TO WRITE A MESSAGE
270 JA TTYUNT /ON THE TTY
271 JA MESSAG
272 EXTERN #RENDO
273 TRAP3 #RENDO /CLOSE THE RECORD
274 LDX 0,2 /KILL TOO FAST SWITCH
275 JA SAMRTN /RETURN FROM ADB
276 TTYUNT, F 0.
277 MESSAG, TEXT '(" SAMPLING TOO FAST")'
278 BUFSTX, SETX 0
279 L1, 0;1
280 END
281 \f\1a