1 / A-D CLOCKED, BUFFERED SAMPLING ROUTINE
3 / VERSION 5A 4-27-77 PT
18 0 /INTERRUPT TIME AD SAMPLER
20 JMS LNCSAM /INITIATE SAMPLE
21 NEXTCH, ISZ SAMINS /UPDATE SAM INST FOR NEXT CHAN
22 JMS LNCSAM /SAM AND INITIATE NEXT CHANNEL
24 TAD SAMPTR /SAVE THE OLD SAM BUFFER POINTER
26 TAD BUFFLD /AND THE FIELD
28 ISZ SAMPTR /BUMP BUFFER POINTER
29 JMP FLDOK /FIELD IS OK
30 TAD BUFFLD /BUMP FIELD
33 FLDOK, ISZ SAMCNT /BUMP BUFFER COUNT
34 JMP BUFFLD /NOT END OF BUFFER
35 TAD ARRAY+2 /RESET POINTER TO START OF BUFFER
37 TAD FLDBUF /RESET BUFFER FIELD
39 TAD BUFSIZ /RESET COUNT
41 BUFFLD, HLT /GET FIELD OF NEW ADB STOP CODE
42 TAD% SAMPTR /IS THIS THE SAM STOP CODE ?
43 TAD M3776 /(ILLEGAL AS A SAMPLE)
46 ISZ TOOFAS /SET TOO FAST SWITCH
48 DCA% XCLINT+1 /STOP SAMPLING
50 NOERR, CLL CMA RAR /SET ADB STOP CODE
52 OLDFLD, HLT /GET TO FIELD OF SAMPLE
57 TAD SAMTMP /GET PREVIOUSLY READ SAMPLE
59 DCA% OLDPTR /INTO BUFFER
60 ISZ NPOINT+2 /ANY MORE SAMPLES
62 ISZ NPOINT+1 /MORE THAN 7777 ?
65 ISZ NCHANL+1 /ANY MORE CHANNELS TO SAMPLE ?
66 JMP NEXTCH /YES GO START SAMPLING
67 TAD CSTART+2 /STARTING CHANNEL
73 JMS LNCSAM /SET CHANNEL TO START
74 /IN CASE CLOCK INITIATED
76 TAD NCHANL+2 /NUMBER OF CHANNELS
77 DCA NCHANL+1 /INTO COUNTER
81 NEXTCH, ADST /SAMPLE NEXT CHANNEL
87 LNCSAM, 0 /LINC SAM SUBROUTINE
89 SAMINS, SAM 0 /SAMPLE AND SELECT NEXT CHANNEL
94 ADSETU, 0 /SET UP ROUTINE
95 DCA TOOFAS /CLEAR TOO FAST SWITCH
96 TAD ARRAY+1 /GET FIELD OF BUFFER
103 DCA BUFFLD /SAVE IN SAMPLER CODE
104 TAD ARRAY+2 /SET SAMPLER BUFFER POINTER
107 TAD LENGTH+2 /SIZE OF BUFFER
109 TAD LENGTH+2 /TIMES THREE
111 TAD BUFSIZ /SET INITIAL COUNT
114 TAD NCHANL+2 /SET CHANNEL COUNT
117 CLA CMA /STOP THE CLOCK
120 ADCL /CLEAR AD LOGIC JUST IN CASE
121 TAD L300 /SET AD ENABLE BITS
123 TAD CSTART+2 /STARTING CHANNEL NUMBER
128 TAD CSTART+2 /SET UP INITIAL SAM INSTRUCTION
132 DCA SAMST /STARTING SAM
133 TAD SAMST /ALSO INTERRUPT TIME SAM
135 TAD L100 /SET FAST SAM BIT
136 IOF /TURN OFF INTERRUPTS IN LINC MODE
137 LINC /ENTER LINC MODE
139 SAMST, SAM 0 /SET INITIAL SAM CHANNEL
179 FLDA 30 /GET RETURN ADDR
181 FLDA 0 /GET ARG POINTER
185 FSTA NPOINT /SAVE ARG POINTER
188 FSTA #CLINT /STOP ANY SAMPLING NOW!
190 FLDA% NPOINT,1 /GET BUFFER ADDRESS
192 FLDA% NPOINT,1+ /GET ADDR OF LENGTH
194 FLDA% NPOINT,1+ /ADDR OFHANNEL START
196 FLDA% NPOINT,1+ /ADDR OF # CHANNELS
198 FLDA% NPOINT,1+ /ADDR OF NUMBER OF POINTS
200 FLDA ARRAY /CREATE SETX INS
203 FSTA ADBSTX /AND SAVE IT IN TWO PLACES
205 FLDA% LENGTH /INTEGERIZE AND NEGATE SOME ARGS
210 ATX 1 /SET BUFFER COUNT
211 FLDA% CSTART /GET STARTING CHANNEL
222 LDX -1,2 /SET UP FOR BUFFER CLEAR
224 CLRBUF, FSTA% ARRAY,2+
226 TRAP4 ADSETU /SET UP AD STUFF
227 FLDA LENGTH /RE-GET BUFFER SIZE
229 ATX 1 /BUT NOW ITS TIMES THREE
230 FLDA STPCOD /STORE STOP CODES
231 FSTA% ARRAY /INTO FIRST 3 WORD
233 FLDA SAMADR /SET UP SAMPLER INTERRUPT HANDLER
244 ADB, BASE 0 /FETCH SAMPLE FROM BUFFER
251 JXN SPEEDK,2 /CLOCK TOO FAST
252 FLDA ADBSTX /SAVE OLD SETX
254 FADD L1 /ADD ONE TO IT
255 FSTA ADBSTX /AND SAVE IT BACK
256 JXN NORINQ,1+ /END OF BUFFER ?
257 FLDA BUFSTX /YES, RESTART
259 FLDA LENGTH /RESET COUNT
262 ADBSTX, SETX 0 /SET XR0 TO NEXT SAMPLE
263 WAIT, XTA 0 /GET THE NEXT SAMPLE
264 FSUB L2047 /IS IT THE STOP CODE
266 XTA 0 /NO, FETCH THE SAMPLE
267 LDX 3776,0 /SET SAMPLE STOP CODE
268 OLDSTX, SETX 0 /SET XR0 TO PREVIOUS STOP CODE
271 SPEEDK, EXTERN #WRITO /USE FORTRAN I/O
272 TRAP3 #WRITO /TO WRITE A MESSAGE
273 JA TTYUNT /ON THE TTY
276 TRAP3 #RENDO /CLOSE THE RECORD
277 LDX 0,2 /KILL TOO FAST SWITCH
278 JA SAMRTN /RETURN FROM ADB
280 MESSAG, TEXT '(" SAMPLING TOO FAST")'