File AD.TK

Directory of image this file is from
This file as a plain text file

/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 $



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search