/NAME: AD ANALOG-DIGITAL CONVERTOR MODULE /DATE: 25-08-75 /J.M.SCHIPPER , E.M.G. /DIJKZIGT , ROTTERDAM. CLKINT=TIME-34 /WATCH THIS MONITOR LABEL CLZE=6130 CLOE=6132 CLAB=6133 CLSA=6135 ADCL=6530 ADLM=6531 ADRB=6533 ADLE=6536 ADENAB=1300 /ADDONE FLG;EXT.START;AUTO INCREMENT /CALL: / TAD (1 /1 INDICATES "AD". / CDF TO BUFFER DATA FIELD / 6770 /GIANT IOT /ARG1, BUFFER ADDRESS & # OF SAMPLES /ARG2, PRECOUNT;CLOCKRATE;# OF CHAN'S;START.CHAN.# / ERROR RETURN :AFTER A TIMEOUT OF APPROX 2SEC. / RETURN WITH # OF OVERLOADS DURING AD CONVERSIONS IN ACC /ARG1 BITS 0-5 = BUFFERPOINTER /100(8) / BITS 5-11= # OF SAMPLES /100(8) /ARG2 BITS 0-2 =PRECOUNT:SAMPLEFREQ/CLOCKRATE / BITS 3-5 =CLOCK RATE / BITS 6-8 = # OF CHAN'S / BITS 9-11= STARTING CHANNEL # /CLOCK RATE: 0 = CLOCK DOES'T RUN / 1= 10 HZ / 2= 100 HZ / 3= 1000 HZ / 4= 10 KHZ / 5=100 KHZ / 6= 1 MHZ / 7= CLOCK DOES'T RUN /DEFINE YOUR TIMES MAXIMAL TO /WAIT BEF DECIMAL TIMEOUT=2 /SEE TURNS ALL OTHER BACKGRALLING BG MUST DECIDE TO TURN THE BG'S ON. / USING: / . / TAD (4 / 6770 / . "A^100+"D&3777 /NAME: AD 401 /TWO PAGES , ONE CONNECT ADC /AD CONVERTOR ADDONE /LABEL CONNECTED TO SKPCHAIN LABEL, KLKINTT, INIT EMBASE, 0 /ENDRY, SMA JMP ADERR /NOTAD EMBASE JMS I IINITA PNTSV CDF MONFLD /NOW WE WANT TIMER INTERRUPTS IN THIS / MODULE, TO CHECK S-TRIGGER INTERRUPTS. IFNZRO BGMAX-1 < TAD (-BGMAX+1 /TURN OFF ALL OTHER BG'S DCA ZTEM1 TAD EMBASE BLNEXT, TAD (UNEXT JMS DEFER JMS DEFER //FETCH STATUS AND (-BGBLOK-1 TAD (BGBLOK DCA I X //SET BACK TAD X ISZ ZTEM1 JMP BLNEXT //LOOP CLA > TAD MYCDIF //PUT OUR FIELD IN SKIP CHAIN IOF //*SO WE CAN'T HANDLE INTERRUPS NOW DCA I (TIMER^4+SKPBAS+2 TAD LABEL ION //*NOW WE CAN HANDLE INTERRUPTS AGAIN DCA I (CONTAB+TIMER-1 EVFLAG, CDTOIF CIF MONFLD //REQUEST AN EVENTFLAG JMS I ZRESERV JMP FLGERR /NO FLAG DCA SLOT1 AC0001 /ENABLE ST 1 TO FIRE CLOE CLA /WAIT FOR THE ST TAD (-TIMEOUT^12 /TIME OUT X SEC JMS MONITOR WAIT SLOT1, 0 /EVENTNUMBER HERE TAD (-2 /TIMEOUT AC=2 DCA EMBASE /TEMP USE OF EMBASE SET RETURN AC=0 JMS RESET ///RESET CLOCK & REPAIR SKPCHAIN TAD EMBASE /USED AS TEMP DCA I PNTSV /PUT # OF OVERLOADS R EXIT RELEASE R& REPAIR SKPCHAIN ADCL,MUX AND FLAGS TAD (-10) CLAB TAD (5410+1750 ///RESET CLOCK:10 KHZ INTERRUPT ENABLED CLOE CMA CLZE CLA TAD (CLSA ///REPAIR SKP CHAIN CDF MONFLD IOF DCA I (TIMER^4+SKPBAS+2 TAD (CLKINT ION DCA I (CONTAB+TIMER-1 ADERR, JMS MONITOR , JMS MONITOR PRECEDE RECEDE FOR A WHILE JMPGE IRESET, RESET ISLOT1, SLOT1 /EVENTNUMBER ADUPC, 0 KLKINT, CLSA ///TIMER INTERRUPS HERE,CLEAR FLAG SMA CLA ///OVERFLOW? JMP ST ///ST FIRES ! QCKRET, CDF CIF MONFLD ///BACK TO M-8 MONITOR KLKSW, SKP/0 JMP I ZFSTEXT ///HURRY BACK JMP I (CLKINT ///HANDLE TIME OF DAY ST, DCA KLKSW /// DON'T HANDLE TIME OF DAY NOW ! DCA OVERLD //*CLEAR # OF OVERLDS TAD (ADENAB ADLE ///SET AD ENABLE REG. TAD CHAN ADLM /// SET STARTING CHANNEL TAD CHNLS DCA CHNCNT ///SET CHANNEL COUNT TAD PRESET CLAB ///SET PRECOUNT TO CLOCK CLA TAD CLENAB CLOE ///SET CLOCK ENABLE REG. BITS CMA CLZE ///CLEAR THE OTHER BITS JMP QCKRET /// WAIT FOR AD INTERRUPTS ADDONE, ADRB /// READ AD BUFFER ADBFLD, HLT ///OVERLAYED BY USER BUFFER FLD DCA I BUFP ///STORE THE SAMPLE TAD I BUFP ///CHECK OVERLOAD SPA ///MAKE SAMPLE POS. CIA TAD LIMIT ///SUBTR.LIMIT =-772 SMA CLA ///RESULT POS. MEANS OVERLOAD ISZ OVERLD /* INCREMENT # OF OVERLOADS PROTECTION ISZ CHNCNT JMP .+5 TAD CHNLS /// STARTING CHAN DCA CHNCSZ CNT ///# OF AD CONVERSIONS DONE ? JMP QCKRET ///NO JMS I IRESET ISZ I ADUPC ///SET NORMAL RETURN TO BG CDTOIF /* GO AND TELL THE WAITER WE ARE READY TAD I ISLOT1 /INTERRUPT SLOT1 CIF MONFLD JMS I ZKE # OF OVERLOADS WITH Y DCA ADUPC /POINTS TO UDUPC DCA PNT /POINTS TAD I PNT /GET "GTF" AND C70 /MASK INSTR.FLD TAD C6201 /MAKE: DCA ADFFLD /CDF USER INSTR FLD TAD I PNT /GET "GTF" AGAIN AND C7 /MASK DATA FLD CLL RAL LIMIT, RTL /ROTATE IN BITS 6-8 (ALSO USED AS #) TAD C6201 DCA ADBFLD /MAKE: CDF USER BUFFE FLD ISZ PNT /POINTS TO USER ACC ADDRESS TAD I ADUPC /GET ARG1 ADDRESS ISZ I ADUPC DCA ZTEM1 /STORE ARG1 POINTER TAD I ADUPC /GET ARG2 ADDRESS ISZ I ADUPC /SET RETURN ADDRESS ADFFLD, HLT /OVERLAYED BY USER FLD JMS DEFER /FETCH ARG2 (DCA X; TAD I X) AND C7 /MASK CHAN # DCA CHAN TAD I X /GET ARG2 RTR RAR AND C7 /MASK # OF CHAN'S SNA /0 ? IAC /THAT'S IMPOSSIBLE CIA DCA CHNLS TAD I X AND (700 /MASK CLOCK RATE TAD (5040 /MAKE CLOCK ENABLE REG. DCA CLENAB / OV.FLOW FLAG;CLOCK MODE01;START AD TAD I X CLL RTL RTL AND C7 /MASK PRECOUNT SNA TAD (10 CIA /-PRECOUNT DCA PRESET TAD I ZTEM1 /GET BUFFER ADDRESS & # OF SAMPLES AND (7700 /MASK BUFFER ADDRESS I ZTEM1 /GET FUNC WORD /MASK # OF SAMPLES CIAD (SKP /FORCE CLOCKINT' DCA KLKSW TAD PNT /TAKE PNT TO THE OTHER PAGE JMP I INIT CHAN, 0 CHNLS, 0 CHNCNT, 0 CLENAB, 0 PRESET, 0 BUFP, 0 CNT, 0 PNT, 0 $