File UDCICS.PA (PAL assembler source file)

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

/ICS/UDC HANDLER V2 FOR RTS-8 V2
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974, 1975 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/
IFDEF UDC <CONASB=1>
IFDEF ICS <CONASB=1>
IFDEF CONASB <

CUR=10 IFDEF UDC < TASK=UDC > IFDEF ICS < TASK=ICS > INIWT=0 /START RUNNING //DEFINE HARDWARE PARAMETERS FOR ICS/UDC HANDLER TASK DECIMAL FAD=0 /ADDR OF FIRST A/D CHANNEL /MUST BE CONTIGUOUS CHANNELS (UDC) NAD=2 /NO. OF A/D CHANNELS IFDEF UDC <NMPLX=0> /DEFAULT OF ZERO FOR UDC NMPLX=7 /NO. OF ICS MULTIPLEXOR MODULES PER CONVERTER DELTA=NMPLX+1 DELTA=DELTA^NAD FCTR=14 /ADDR OF FIRST COUNTER /MUST BE CONTIGUOUS CHANNELS NCNTR=1 /NO. OF COUNTERS FCT=0 /ADDR OF FIRST CONTACT /MUST BE CONTIGUOUS CHANNELS NCNTC=2 /NO. OF CONTACTS OCTAL //DEFINE SOFTWARE PARMETERS FOR ICS/UDC HANDLER TASK OPCODE=12 /NO. OF OP CODES IN HANDLER RINGBF=12 /NO. OF INTERRUPTS IN RING BUFFER
/11 POSSIBLE OPERATIONS: /EACH CALL IS 10 WORDS LONG (INCL HEADER) /WORD 10 IS SET TO CONTAIN ERROR FLAGS /ANALOG OUTPUT OP CODE / MAJOR CHANNEL / CHANNEL(0,1) + VALUE(2-11) /DIGITAL OUTPUT OP CODE / CHANNEL / VALUE /DIGITAL INPUT OP CODE / CHANNEL / 0 FOR ANSWER /GET GENERIC CODE OP CODE / CHANNEL NUMBER / 0 FOR ANSWER /ENABLE CONTACT OP CODE / BIT+CHANNEL NUMBERS / ACTION CODE(0,1,2), ONCE FLAG(3) / TASK NO.(4-11): / 0=SET EVENT FLAG(NO TASK NO LEEDED) / NO ASSOC. INFO (0) / 1=RUN TASK / NO ASSOC. INFO (0) / 2=DERAIL THE TASK TO / ADDRESS(SAME FIELD AS MESSAGE) / 3=1=DO ACTION JUST ONCE / 3=0=FOR EACH INTERRUPT /DISABLE CONTACT OP CODE / BIT + CHANNEL NUMBER /ENABLE COUNTER OP CODE / CHANNEL NUMBER / INIT VALUE / RELOAD VALUE(0=DON'T RELOAD) / ACTION CODE, ONCE FLAG + TASK(4-11): / 0=SET EVENT FLAG / NO ASSOC. INFO(0) / 1=RUN TASK / NO ASSOC. INFO (0) / 2=DERAIL THE TASK TO / ADDRESS(SAME FIELD AS MESSAGE) / 3=1=DO ACTION JUST ONCE / 3=0=FOR EACH INTERRUPT /DISABLE COUNTER OP CODE / CHANNEL NUMBER /READ COS OP CODE / CHANNEL NUMBER / 0 FOR ANSWER /ANALOG INPUT OP CODE / /**** ICS **** / MAJOR CHANNEL // LESS THEN 17(10) / ENABLE,GAIN,SUBCHANNEL // 0-120(10) / 0 FOR ANSWER / /**** UDC **** / MAJOR CHANNEL / ENABLE,GAIN,SUBCHANNEL / 0 FOR ANSWER /READ COUNTER OP CODE / CHANNEL NUMBER / 0 FOR ANSWER /ERROR CONDITIONS RETURNED / / 1 -- INVALID GENERIC CODE FOR THE OPERATION / 2 -- INVALID CHANNEL OR SUBCHANNEL / 3 -- OP CODE OUT OF RANGE / 5 -- ICS/UDC NOT RESPONDING CORRECTLY (POWERED OFF OR HARD ERROR) /DEFINITIONS OF IOTS UDSF=6361 UDEI=6364 UDDI=6365 UDLA=6363 UDRD=6366 UDLD=6367 UDSS=6351 UDSC=6353 UDRA=6356 UDLS=6357 UDRS=6355
FIELD CUR%10 *130 T1, 0 /GEN TEMP T2, 0 /" AT2, 0 /ADDRESS PTR RINGCT, 0 /COUNT OF FULLNESS OF RING BUFFER ENDOP, END /AFTER PROCCESSING A COMMAND TBLPTR, 0 /FOR POINTING TO ALL INTERNAL TABLES ADDRUP, 0 MOREIO, UDCMOR RINGDN, RNGEND ERRNMB, 0 /ERROR NUMBER (IF ZERO NO ERROR) CDFMSG, 0 MSGCDF, 0 JMP I CDFMSG *600 GOTMAL, CAL RECEIV CALADR, 0 DCA MSGCDF DCA ERRNMB /CLEAR ERROR NUMBER TAD CALADR DCA SAVADR TAD CALADR DCA ADDRUP /ADDRESS FOR LOOKING AT ARGS JMS CDFMSG TAD I CALADR /GET OP CODE CDF CUR SPA /0-12 JMP I (BADOP TAD (-OPCODE /UPPER LIMIT OF OP CODES SZA SMA JMP I (BADOP TAD (OPTBL+OPCODE DCA T1 TAD I T1 DCA T1 JMP I T1 /DISPATCH TO TASK OPTBL, AOOP DOOP DIOP GCOP ECNTR RDCNTR DCNTR ECAOP RDCOS DCAOP AIOP SAVADR, 0
UDCMOR, CIF CDF CUR TAD RINGCT /0=EMPTY,-10=FULL SZA CLA JMP I (DORING /HANDLE THE RING BUFFER CDF 0 /BUFFER EMPTY TAD I (TASK^2+MSGTBL SZA CLA JMP GOTMAL /MESSAGE WAITING TAD (4000+TASK DCA UDCEV CDF CUR CIF 0 IOF WAITM /RTS8 SUBROUTINE TO BLOCK EORMWT /CURRENT TASK JMP UDCMOR UDCEV, 0 START, IFDEF PWRF< CAL SEND PWRF DRLADR > CAL SKPINS DERINT, UDCINT /DERAIL ENTRY POINT FOR POWER RECOVERY CLA CLL TAD (-NCNTC SNA JMP GENERL DCA T2 TAD (DCOSTB DCA T1 TAD (FCT /GET ADDRESS OF FIRST CONTACT DCA AT2 INITLP, TAD AT2 UDLA UDRD DCA I T1 /LOAD UP TBL WITH INIT VALUES ISZ AT2 ISZ T1 ISZ T2 JMP INITLP GENERL, DCA RINGCT /STARTS OUT EMPTY /RINGCT: -RINGBF = FULL;0 = EMPTY TAD (RINGBT DCA I (RINGPT TAD (RINGBT DCA I (TBLOUT TAD (-DCOSTB+CNTCTB DCA T2 TAD (CNTCTB /FROM A SAFE DISTANCE DCA T1 /START TO FILL TABLES NEGIT, CLA CMA /WITH 7777 DCA I T1 ISZ T1 ISZ T2 JMP NEGIT UDEI JMP UDCMOR ANIEXT, DCA MSGCDF AC7775 TAD AT2 DCA SAVADR END, CLA CLL /NO ERRORS RETURN TAD SAVADR TAD (6 DCA T1 /7TH WORD IS STATUS TAD ERRNMB JMS CDFMSG DCA I T1 CDF CUR TAD MSGCDF /WHEN ALL DONE, POST EV FLG DCA POSCDF AC7775 TAD SAVADR CAL POST POSCDF, 0 JMP UDCMOR PAGE
UDCINT, ZBLOCK 2 /UDC INTERRUPT LEVEL CODE /WD 1 - ADDR NEXT SKIP CHAIN ENTRY /WD 2 - SET TO ITS CDF CIF UDCSKP, UDSF /SKIP IF FLAG SET JMP I UDCINT /EXIT FOR OTHER INTERRUPTS CDF CIF CUR TAD (RINGBF TAD RINGCT SNA CLA JMP NOMORE /IF FULL MUST WAIT TAD RINGCT /ROOM FOR AT LEAST 1 MORE DCA OLDCT /SAVE FOR BUFFER WAS EMPTY CHECK UDEI /NEEDED BEC. UDSF TURNS INTS OFF MORCHK, UDRS SNA JMP OKPTR /NO INTERRUPT PENDING-DONE UDSC UDSS JMP .-1 /ONLY A SHORT WAIT UDRA /GET VALUE DCA I RINGPT /GC+ADDR INTO BUFFER CLA CMA TAD RINGCT /NOW THAT WE'VE GOT A VALUE DCA RINGCT /BUMP COUNTER TAD I RINGPT /DECODE TIME CLL RTL SZL JMP NOCNTC /G.T. OR EQ. 4 SMA CLA /0,1,2, OR 3 JMP ONEZER /BAD NEWS TAD I RINGPT /CONTACT INTERRUPT AND (377 /ADDRESS MASK TAD (DCOSTB-FCT DCA INT1 TAD I INT1 DCA INT2 /TEMP. SAVE PREVIOUS COS UDRD DCA I INT1 /REPLACE WITH LATEST COS TAD INT2 UDLS /GET PREV COS FOR CONTACTS SAVEWD, ISZ RINGPT DCA I RINGPT CLL ISZ RINGPT TAD RINGPT TAD (-RINGTP /AVOID OVERFLO SNL CLA JMP MORCHK CLL TAD (RINGBT /POINT TO BOTTOM AGAIN /BUFFER FILLED BY 2S. DCA RINGPT JMP MORCHK OKPTR, TAD OLDCT SNA CLA TAD RINGCT /BUFFER WAS EMPTY /SEE IF NOW HAS AN ENTRY SZA CLA /IF NO, POSTDS WITH AC=0 TAD (UDCEV /POST UDC EVENT FLAG /BUFFER BECAME NON-EMPTY /SO WAKE UDC UP CIF 0 POSTDS OLDCT, 0 /IF NO MORE ROOM, REMOVE UDSF /LEAVE UDC DISABLDED, SET FLAG, + POSTDS WITH AC=0 NOMORE, ISZ I (REENAB DCA UDCSKP /0 THE SKIP CIF 0 POSTDS /AC=0
NOCNTC, CLL TAD (2000 SNL CLA JMP SAVEWD /A 0 FOR COUNTERS TAD I RINGPT IFDEF ICS < AND (17 /ADDR PART FOR SUBCH GET > IFDEF UDC < AND (377 /ADDR PART FOR SUBCH GET > DCA INT1 UDRD /GET SUBCHANNEL.PREV ADDR IN /ADDR REG MUST BE FOR THIS CHAN IFDEF ICS < AND (177 TAD (-10 /REMOVE BIAS !!! CLL RTL RTL; RAL /SUBCHANNEL INTO BITS 1-7 > IFDEF UDC < AND (7 CLL RTR RTR /INTO BITS 1-3 > STL RAR /AND NOW WHEN BIT 0=1=A/D INT TAD INT1 DCA I RINGPT /REPLACE WITH REARRANGED VALUE /REARRANGED VALUE: /BIT 0=A/D /**** UDC **** /BITS 1-3=SUBCHANNEL (0=1ST) /BITS 4-11=ADDR /**** ICS **** /BITS 1-7=SUBCHANNEL (0=1ST) /BITS 8-11=ADDR UDLD /LOAD A 0 BEFORE READ(BIT 8) UDRD JMP SAVEWD RINGPT, 0 INT1, 0 INT2, 0 ONEZER, ISZ RINGCT /IGNORE BAD VALUES (OVERWRITE) K7000, NOP JMP MORCHK
ADINT, IFDEF ICS < AND (17 > JMS I (ADCHK /GC, SUBCH + ADDR IN AC TAD I (TBLWD1 IFDEF UDC < AND (3400 /GET SUBCHANNEL 0-7 CLL RTL RTL RTL /SUBCH*2 > IFDEF ICS < AND (3760 /GET SUBCHANNEL 0-120 CLL RTR RAR /SUBCH*2 > TAD AT2 /NOW PTR WILL INCLUDE SUBCH DCA AT2 /TABLE INDEX, INCL SUBCH TAD I AT2 DCA ADFLD ISZ AT2 TAD I AT2 /ADDR DCA AT2 TAD I (TBLWD2 ADFLD, 0 /SET TO CDF DCA I AT2 /PASS VALUE BACK CDF CUR DCA I (RGORCM TAD ADFLD JMP I (ANIEXT PAGE
REENAB, 0 /MUST BE WORD 0 OF PAGE TBLOUT, 0 /NON-INTERRUPT CODE FOR UDC SERVICE DORING, CLA CLL ISZ I (RGORCM /IN CASE OF ERRORS TAD I TBLOUT /GC+ADDR WORD DCA TBLWD1 /GC+ADDR ISZ TBLOUT TAD I TBLOUT /WORD 2 DCA TBLWD2 ISZ TBLOUT CLA CLL TAD (-RINGTP TAD TBLOUT SNL CLA /CHECK FOR OVERFLOW JMP OKOUT TAD (RINGBT DCA TBLOUT OKOUT, ISZ RINGCT /ROOM FOR 1 MORE NOP CIF CUR /GOES WITH NOMORE CODE TAD REENAB /SEE IF ROOM NOW SNA CLA JMP NOTRUB /NO PROBLEM DCA REENAB /NOW THERE'LL BE ROOM TAD (UDSF /SO FIX IT ALL UP DCA I (UDCSKP UDEI NOTRUB, TAD TBLWD1 /DET. GENERIC TYPE SPA JMP I (ADINT /LO BIT SET =A/D CLL RTL SNL JMP I (CONTAC
/JUMPING ON THRU COUNTR, CLA CLL TAD TBLWD1 JMS I (COUNCK /TEST FOR VALIDITY DCA TBLPTR /CNTTBL PTR TAD I TBLPTR /CHECK FOR RELOAD DCA T1 ISZ TBLPTR TAD I TBLPTR IAC SNA CLA JMP I MOREIO /THIS COUNTER NOT CURRENTLY ENABLED TAD TBLWD1 AND (377 /ADDR IOF UDLA TAD T1 SZA UDLD /RESET TO FETCHED VALUE UDLA /BACK TO ADDR 0 ION JMS DISPTH RNGEND, DCA I (RGORCM /CLEAR IT JMP I MOREIO TBLWD1, 0 TBLWD2, 0 DISPTH, 0 TAD TBLPTR DCA I (DFLG TAD I TBLPTR AND (177 DCA T1 /ACTION + TASK NO. TAD I TBLPTR ISZ TBLPTR /DETERMINE ACTION CLL RTL SNL JMP ZROTWO CLA CLL TAD T1 /1=RUN CAL RUN JMP I (ENDDIS ZROTWO, SMA CLA /LO 3=0 FOR E.F;BIT 2=1 FOR E.A. JMP I (SEVFLG TAD I TBLPTR /GET ADDR FOR DERAIL DCA EADDR TAD T1 CAL DERAIL EADDR, 0 JMP I (ENDDIS DDSPTH, JMP I DISPTH RDCNTR, JMS I (ARG2 JMS (COUNCK IOF CLA TAD I (CHANNO UDLA JMP I (READCH
IFZERO RINGBF+RINGBF+.-REENAB-160&4000< PAGE> /LEAVE ROOM FOR CODE+LITERALS /TRY TO PREVENT PAGE OVERFLOWS /RING BUFFER HAS 2 WORDS/INTERRUPT /WORD 1 = GC+ADDR;4NNN=A/D /WORD 2 = XOR FOR CONTACTS,0 FOR COUNTERS,A/D VALUE FOR AI RINGBT, ZBLOCK 2^RINGBF-1 RINGTP, 0 /IF IT'S IN THE RING BUFFER, IT AT LEAST HAD A /VALID GENERIC CODE (NOT 0 OR 1) AT INTERRUPT TIME PAGE
SEVFLG, TAD (6200 /6200 TO FORM CDF TAD T1 /WITH SAVED HI 6 BITS DCA EFCDF AC7775 TAD I TBLPTR /ADDR IN TBL CAL POST EFCDF, 0 /SET USER'S MESSAGE EV FLAG IMMED /WHEN CALLED IF TASK NO OR DERAIL /IF EVENT FLAG, WAIT TIL VERY END ENDDIS, TAD I DFLG AND (400 SNA CLA JMP I (DDSPTH /MORE THAN ONCE CLA CMA DCA I DFLG /ONCE ONLY. 7777 BACK IN TABLE ISZ DFLG CLA CMA DCA I DFLG JMP I (DDSPTH DFLG, 0
CONTAC, SMA CLA JMP I RINGDN TAD I (TBLWD1 JMS I (CNTCCK /CHECK FOR ALL LEGAL TAD T1 DCA CCHNO /CHANNEL NO. STRIPPED TAD I (TBLWD2 DCA ROTWD /COS VALUE DCA BITCNT /WILL COUNT BITS NOTSET, TAD ROTWD /ROTATED ALREADY FOR BIT TO EXAM SNA JMP I RINGDN /ALL BITS CHECKED SMA CLA /CHECK FOR SET BITS JMP ROTATE /IF BIT SET,DO ITS ACTION. CHECK ALL 12 BITS /IF BIT = 0, MOVE ON TAD BITCNT DCA T2 TAD CCHNO DCA T1 JMS I (CINDEX TAD I TBLPTR IAC SZA CLA JMS I (DISPTH /DO WHAT HE SAYS ROTATE, ISZ BITCNT TAD ROTWD RAL CLL DCA ROTWD JMP NOTSET ROTWD, 0 BITCNT, 0 CCHNO, 0
DIOP, JMS GC0 /CHECK GENERIC CODE READCH, ISZ ADDRUP UDRD ION JMS CDFMSG DCA I ADDRUP /RETURN VALUE CDF CUR UDLA /RESET TO 0 FOR READ COUNTER JMP I ENDOP AOOP, DOOP, JMS GC0 JMS ARG2 UDLD /LOAD THE DIGITAL(ANALOG) OUTPUT ION JMP I ENDOP GC0, 0 JMS ARG2 JMS CHNLCK SZA CLA JMP BADGC /MUST BE 0 JMP I GC0 ARG2, 0 /GET NEXT ARG ISZ ADDRUP JMS CDFMSG TAD I ADDRUP CDF CUR JMP I ARG2 ISZ ERRNMB /ADD ONE TO ERROR NUMBER (#=6) DVCERR, ISZ ERRNMB /ADD ONE TO ERROR NUMBER (#=5) ISZ ERRNMB /ADD ONE TO ERROR NUMBER (#=4) BADOP, ISZ ERRNMB /ADD ONE TO ERROR NUMBER (#=3) CHNNG, ISZ ERRNMB /ADD ONE TO ERROR NUMBER (#=2) BADGC, ISZ ERRNMB /ADD ONE TO ERROR NUMBER (#=1) ION /LEFT OFF IN CHNLCK CLA CLL TAD RGORCM SZA CLA JMP I RINGDN /OCCURRED AT DORING TIME JMP I ENDOP RGORCM, 0
CHNLCK, 0 SPA JMP CHNNG DCA CHANNO /MUST BE 0-377 TAD CHANNO TAD (-377 SMA SZA CLA JMP CHNNG IOF TAD CHANNO UDLA CLA CMA /CHECK FOR OPERATIONAL UDC-DH UDRA AND (377 CIA TAD CHANNO SZA CLA JMP DVCERR /DEVICE (ICS OR UDC) NOT RESPONDING !!! / MAY NOT EXIST OR POWERED DOWN OR "DOWN" UDRA AND (7400 JMP I CHNLCK /RETURN WITH GENERIC CODE CHANNO, 0 DRLADR, ZBLOCK 3 DERINT /POWER RECOVERY "DERAIL" ADDRESS PAGE
ECAOP, JMS DECAST JMP I (GETFLG DECAST, 0 /DISABLE+ENABLE CONTACTS JMS I (ARG2 DCA T1 /GET BIT NO. + CHAN NO. TAD T1 AND (7400 DCA T2 /BIT NO. TAD T2 CLL TAD (2000 /MUST BE L.T. 14 SZL CLA JMP I (BADGC TAD T2 /BIT NUM RTL RTL RAL DCA T2 /INTO LO 4 BITS TAD T1 JMS CNTCCK JMS CINDEX TAD TBLPTR DCA AT2 JMP I DECAST CNTCCK, 0 /ADDR IN AC;RETURN WITH GC JMS MASCHK RTL SZL /2 OR 3 ONLY JMP I (BADGC SMA CLA JMP I (BADGC JMS LIMCHK -FCT-NCNTC NCNTC JMP I CNTCCK LIMCHK, 0 TAD I LIMCHK ISZ LIMCHK TAD T1 /COMPARE UPPER TABLE LIMIT SMA JMP I (CHNNG TAD I LIMCHK /AND LOWER LIMIT ISZ LIMCHK SPA JMP I (CHNNG DCA T1 /CHANNEL NO. (0-N) JMP I LIMCHK
MASCHK, 0 /ADDR IN AC AND (377 DCA T1 TAD T1 JMS I (CHNLCK ION JMP I MASCHK CINDEX, 0 /BIT NO. IN T2, CH. NO. IN T1 TAD T1 CLL RTL DCA TBLPTR /USING IT AS A TEMP TAD T1 RAL TAD TBLPTR /NOW *6 RTL /*30 DCA T1 TAD T2 /BIT NO. RAL CLL /*2 TAD T1 TAD (CNTCTB DCA TBLPTR JMP I CINDEX DCAOP, JMS DECAST JMP TWOFIL MINUS1, 0 /MOVE POINTER BACK BY 1 CLA CMA DCA I AT2 ISZ AT2 JMP I MINUS1 DCNTR, JMS I (CNTRST JMS MINUS1 /MUST DISABLE ALL WORDS /WORD 2 ACTUALLY CHECKED TWOFIL, JMS MINUS1 JMS MINUS1 JMP I ENDOP RDCOS, JMS I (ARG2 JMS CNTCCK TAD T1 TAD (DCOSTB DCA T2 TAD I T2 /GET LAST VALUE JMP SENDIT
GCOP, JMS I (ARG2 IOF UDLA UDRA ION AND (7400 /RETURN GC CLL RTL RTL RAL SENDIT, ISZ ADDRUP JMS CDFMSG DCA I ADDRUP CDF CUR JMP I ENDOP PAGE
ECNTR, JMS CNTRST IOF DCA T2 TAD I (CHANNO UDLA TAD T2 /INIT VALUE UDLD UDLA /REENABLE COUNTER ION JMS I (ARG2 /GET RELOAD INFO DCA I AT2 ISZ AT2 GETFLG, JMS I (ARG2 /GET TASK NO. DCA I AT2 TAD I AT2 SPA CLA JMP EVFLGQ ISZ AT2 /RUN OR DERAIL JMS I (ARG2 DCA I AT2 /ADDRESS JMP I ENDOP EVFLGQ, TAD I AT2 /CHECK FOR ONCE ONLY AND (400 DCA I AT2 TAD I (MSGCDF /NEED FIELD AT DISPATCH TIME AND (77 /MUST PRESERVE LO 3 BITS AS 0 TAD I AT2 DCA I AT2 /HI 6=PART OF CDF ISZ AT2 TAD I (SAVADR /NEED PTR TO EVENT FLAG DCA I AT2 JMP I MOREIO CNTRST, 0 JMS I (ARG2 JMS COUNCK DCA AT2 JMS I (ARG2 /INIT VALUE JMP I CNTRST
COUNCK, 0 /ADDR IN AC, RETURNS W COUNTER TBL PTR JMS I (MASCHK CLL RTL SNL JMP I (BADGC CLL TAD (2000 SZL CLA /4-6 ONLY JMP I (BADGC JMS I (LIMCHK -FCTR-NCNTR NCNTR TAD T1 RAL CLL TAD T1 /*3 TAD (CNTTBL JMP I COUNCK
AIOP, JMS I (ARG2 JMS ADCHK JMS I (ARG2 /SUBCHANNEL WORD PASSED AS: /BIT 0=ENABLE;1-3=GAIN /**** UDC **** /9-11=SUBCHAN;7=READ CNTRL REG /**** ICS **** /5-11=SUBCHAN;4=READ CNTRL REG DCA T2 TAD T2 IFDEF ICS < AND (177 /GET SUBCHANNEL > IFDEF UDC < AND (7 /GET SUBCHANNEL > RAL CLL TAD AT2 /ADD SUBCH*2 INTO TBL PTR DCA AT2 ISZ ADDRUP TAD I (MSGCDF DCA I AT2 /FLD ISZ AT2 TAD ADDRUP DCA I AT2 /ADDR IOF TAD I (CHANNO /MAJOR CHANNEL UDLA TAD T2 /GAIN,SUBCHANNEL WORD IFDEF ICS < TAD (10 /BIAS ADU02 CONVERTER MULTIPLEXOR AND (3577 TAD (4200 /FORCE ENABLE+READ CNTRL REG BITS > IFDEF UDC < AND (3757 TAD (4020 /FORCE ENABLE+READ CNTRL REG BITS > UDLD /NO TIME TO WAIT TIL DONE SO LOAD /SUBCHAN + CATCH IT THRU INTERRUPTS ION /****** START MODULE TIME-OUT ****** JMP I MOREIO
ADCHK, 0 JMS I (MASCHK CLL RAL TAD (1000 /CHECK GC SNL CLA JMP I (BADGC /ONLY 7 /*************** A/D MAY BE NON-CONTIGUOUS ******** /*************** BUT MUST BE "ADJACENT" ******** JMS I (LIMCHK -FAD-DELTA DELTA IFDEF ICS < DCA AT2 /CLEAR FOR CHANNEL CONV. TAD T1 /"CHANNEL #" TAD (-NMPLX-1 SPA JMP .+3 ISZ AT2 JMP .-4 CLA CLL > IFDEF UDC < TAD T1 DCA AT2 > /*************** /*************** TAD AT2 /CHANNEL DISPLACEMENT INTO ANALOG INPUT TABLE CMA /SET UP LOOP COUNTER DCA AT2 /SCRATCH AREA ISZ AT2 /TEST COUNT SKP / NO -EXIT YET JMP .+3 / YES - EXIT NOW TAD ADTBLD /ADD TABLE DISPLACEMENT JMP .-4 TAD (ADTBL /ADD BASE OF TABLE DCA AT2 JMP I ADCHK ADTBLD, NMPLX^40+20 PAGE
CNTCTB, /CONTACT TABLE /30 WORDS/CHANNEL IN PAIRS. ORDERED FROM HI TO LO BIT /WORD 1 = ACTION + TASK NO.; BIT 3=REPEAT FLAG / FOR EV. FLAG, LO 3 =0,HI 6=PART OF CDF /WORD 2 = ADDRESS /7777 = DISABLED OR NEVER ENABLED CNTTBL=NCNTC^30+CNTCTB /COUNTER TABLE. 3 WORDS/CHANNEL /WORD 1 = RELOAD VALUE /WORD 2 = ACTION + TASK /WORD 3 = ADDRESS ADTBL=NCNTR^3+CNTTBL /A/D TABLE. 16 WORDS/CHANNEL /2 WORDS/SUBCHANNEL / UDC / 8 SUBCHANNELS/UDC CHANNEL / ICS / 8 SUBCHANNELS/ICS CONVERTER MODULE / 16 SUBCHANNELS/ICS MULTIPLEXOR MODULE /WORD 1= FIELD /WORD 2= ADDRESS TO PASS ANS TO ADRCAL=NMPLX^40+20 ADRCAL=ADRCAL^NAD DCOSTB=ADRCAL+ADTBL /CHANGE OF STATE TABLE /1 WORD/CONTACT CHANNEL /INITIALIZED AT MORINT ENDUDC=DCOSTB+NCNTC IFZERO ENDUDC-.&4000< ZBLOCK ENDUDC-.> > $



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