Directory of image this file is from
This file as a plain text file
/NAME AP READ AN ACTION POTENTIAL /DATE : 11-09/75 /J.M.SCHIPPER,EMG. /DIJKZIGT,ROTTERDAM. /THIS IS AN EMULATOR TASK CALLED BY: / TAD (10 THIS NUMBER INDICATES AP / CDF BG BUFFER FIELD REQUIRES 400(8) LOCATIONS / 6770 /GIANT IOT "TRAPPED" / RETURN IF AP IS TIMED OUT AFTER RUNTIME .AC=-1 / RETURN AC=RELATIVE BUFFER ADDRESS 120 SAMPLES / BEFORE AP FOUND A MAX. /ARG1, BUFFER ADDRESS&CHANNR&POTM# / /ARG1, BITS 0-5 = BUFFERPOINTER / 100(8) / BITS 6-8 =CHANNR IN CONVERSION / BITS 9 = UNUSED / BITS 10-11= POTM.LEVEL DETECTOR KNOB /REMEMBER :AP RETURNS ALLWAYS AFTER 'GIANT' CLZE=6130 CLOE=6132 CLAB=6133 CLSA=6135 ADCL=6530 ADLM=6531 ADST=6532 ADRB=6533 ADLE=6536 MDELTA=-DELTA^2 DILC=6050 DILX=6053 DILY=6054 DIXY=6055 DILE=6056 ACL=7701 MQL=7421 /DEFINE: DECIMAL RUNTIME=10 /AP RUNS # SEC.AFTER THAT ,A TIMEOUT FOLLOWS DELTA=25 / WINDOW OCTAL EJECT /"AP" SAMPLES AN INPUT CHANNEL (SEE TORES THE SAMPLES IN A "IN THE MEANTIME AP DISPLETECT. LEVEL . /AFTER EAKES A POTMETER SAMPLE WHICH /BECOMES DETECTION LEVEL /IF AN INPUT SIGNAL HAS A MAX:(LEVEL-DELTA)<MAX<(LEVEL+DELTA) /THAN AP HAS FOUND A USEFULL SIGNAL. /AP RETURNS TO BG WITH THE RELATIVE (BETWEEN 0-400 ) /BU BEFORE AP FOUND A MAX.IFIND A MAX WITHIN RUNTIMN WITH ACC=0 / / MEANEANS: ION DF NEQ IF / * MEANS IOF
*200 APPNT, "A^100+"P&3777 /NAME AP ACTION POTENTIAL 401 /2 PAGES , ONE CONNECT ADC /DEVICE AD CONVERTOR IADDON, ADDONE /INTERRUPT LABEL LABEL, KLKINT /CLOCK HANDLER IBGBUF, BGBUF /BG BUFFER IRGPNT, RNGPNT ICHAN, CHAN /CHANN NUMBER IN CONVERSION IKNOB, KNOB /POTM USED FOR LEVEL IUDFLD, UDFLD /USER DATA FIELD IRGCNT, RNGCNT APUPC, 0 /END OF MONITOR TABLE ENTRY, SMA //AC CONTAINS A PNTR TO USER STATUS LIST JMP APERR //DON'T RUN THIS MODULE TAD C3 DCA APUPC //POINTS TO USER PROG.COUNTER TAD APUPC DCA APPNT ISZ APPNT //POINTS TO "GTF" TAD I APPNT //GET USER FIELDS AND C70 //MASK USER INSTR FLD TAD C6201 //FORM: CDF TO USER FLD DCA UIFLD TAD I APPNT //GET USER FLDS AND C7 //MASK USER DATA FLD CLL RAL RTL TAD C6201 //FORM: CDF TO USER DATA FLD DCA ZTEM2 //STORE FOR A WHILE ISZ APPNT //POINTS TO USER ACC TAD I APUPC //POINTER TO ARG IAC //POINTS TO BG ARGUMENT CNT, /CHT LOOP UIFLD, HLT // INSTR. FLD. JMS DEFERI X) CDTOIF / DCA Z DCA I IUDFLD /SET UDFLD TO RINGBUFFER DATA FIELD TAD ZTEM1 AND C7700 /MASK BG BUFFER ADDRESS DCA I IBGBUF TAD I IBGBUF /STORE IT DCA I IRGPNT /RESET RINGPOINTER TAD M400 DCA I IRGCNT /AND COUNTER TATR RAR /ROTATE CHAN# SK CHAN # DCA I ICHAN /GET ARG AND C3 /MASKET POTM # TAD I IKNOB /LOAD MULTIPLEXER WITH POTM.NR. ADLM TAD (POTM&177+5200 /FORM "JMP POTM" DCA I IADDON / JMP POTM FOR THE FIRST AD INT TAD (ADST DCA ADSTRT /STARTS AD CONVERSIONS AFTER CLOCK INT. CIF MONFLD /RESERV A SLOT # JMS I ZRESERV JMS ALARM /NO SLOTS AVAILABLE DCA SLOT /SLOT NUMBER CDF MONFLD //WE ALTER THE SKIP CHAIN &CLOCK RATE TAD I (CONTAB+TIMER-1 //SAVE SKPCHAIN LABEL DCA KLOK TAD MYCDIF //GET CIF CDF TO THIS FIELD IOF //* WE CAN'T HANDLE INTERRUPTS NOW DCA I (TIMER^4+SKPBAS+2 TAD LABEL ION //WE CAN AGAIN DCA I (CONTAB+TIMER-1 CLL CMA RAL //SET CLOCK RATE TO 5KHZ CLAB //AC STILL -2 TAD (1000+2 //ENABLE ADDONE INTERRUPT ADLE //LOAD AD ENABLE REGISTER DILC //CLEAR DISPLAY FUNCTIONS (NON STORE) CDTOIF /GO SAMPLING AND DISPLAY THE BUFFER TAD (-RUNTIME^DGNTICK /TIMEOUT JMS MONITOR /TIMEOUT: AC=2 WAIT /WAIT FOR SLOT INTERRUPT SLOT, 0 TAD (-2 // A DISOBLIGING TIMEOUT IS POSSIBLE CDF MONFLD ESS=2 SNA CMA DCA A TIMEOUT ADCL // KI1750 CLAB // RESET CL0 // AC STILL -1750 ; REPAIR SKIP CHAIN IOF //* DCA I (TIMER^4+SKPBAS+2 //* TAD KLOK ION // DCA I (CONTAB+TIMER-1 // JMS MONITOR EXIT RELEASE / SEE YOU NEXT TIME EJECT KLKINT, CLSA //* CLOCK INTFLAG ADSTRT, 0/ADST //CDF CIF MONFLD ISZ KLKIME ? EVERY 0.1S JMP I- RESET TIME DELAY DECIMAL TAD (-500 OCTAL DCA KLKCNT JMP I KLOK //* HANDLE TIME DECIMAL KLKCNT, -500 OCTAL APERR, JMS MONITOR //ERROR RETURN EXIT SWPOUT WACHT, .-. /WAIT LOOP DISPLAY SETTLE CLL CLA CMA RTL DCA CNT ISZ CNT JMP .-1 DIXY JMP I WACHT KLOK, 0 /SAVE SKPCHN INTERRUPT LABEL PAGE
IWACHT, WACHT /RELOCATION TABLE PAGE 2 ISLOT, SLOT IADSTRT,ADSTRT BGBUF, 0 ADDONE, JMP POTM/ 0 /JMP END/* HANDLE POTM OR DATA SAMPLES JMS RINGIN /* STORE SAMPLES IN RINGBUFFER ADRB //* READ SAMPLE AGAIN POS, SMA/SPA //* IF LEVEL<0 ; SPA IF LEVEL >0 JMP NO //* IF WRONG NEG, CIA/NOP DCA TEMP //* SAVE THIS ALWAYS POS.SAMPLE TAD TEMP TAD MLOW SPA CLA //* SAMPLE > LOWERLEVEL ? JMP AD1 //* NO - POSSIBLE A MAX IS PASSED TAD TEMP TAD MUPP //* YES -SAMPLE < UPPERLEVEL ? SMA SZA JMP N1 //* NO, SAMPLE EXCEEDED UPPERLEVEL CLA IAC //* OK SET MAX ( WE WERE BETWEEN LEVELS) JMP N2 AD1, TAD MAX //* 0 < SNA CLA //* LOWERLEVEL<RE? JMP QCKRET //* NOEVEL< SAMPLE <HARDWARE LAXFND //* NOW WE HAVE FOUND A MAX NO, CLA N1, DCA EXCEED //* ILLEGAL MAX N2, DCA MAX //* CLEAR OR SET MAX FLAG JMP QCKRET MAXFND, TAD (JMP END DCA ADDONE //* NO NEED TO TEST NEXT SAMPLES TAD M260 //* READ 35.2 MSEC;WE NEED THE END- DCA ENDCNT // OF THE ACTION POTENTIAL TOO !! QCKRET, CLA //* QUICK ? FIRST DISPLAY A LEVEL POINT TAD LEVEL DILY //* I HOPE THE LAST INTENSIFY IS DONE NOW JMS I IWACHT //* INCLUDES A DIXY CDF CIF MONFLD //* JMP I ZFSTEXT EJECT END, JMS RINGIN /* STORE IN RINGBUFFER ISZ ENDCNT //* READY ? JMP QCKRET DCA MAX DCA EXCEED //* CLEAR FLAGS TAD BGBUF //* FORM REL BUFFER ADDRESS CIA //* SINCE THE SOFINT MESSAGE TAD RNGPNT //* MUST NOT BE NEGATIVE. DCA RNGPNT TAD MYCDF DCA .+1 CDF /CDF TO IF FIELD DCA I IADSTRT /* NO AD STARTS PLEASE TAD I ISLOT /* GET WAITING SLOT NR CIF MONFLD JMS I ZSOFINT /*TELL THE WAITER W'RE READY ! RNGPNT, 0 /*STATUS (MESSAGE TO WAITER) TEMP, //*USED AS TEMP* RING BUFFER ADRB D UDFLD, HLT //*OVERLAY DCA I RNGPNT //*PUT INC RTL //* 4 TAD XREG //* SKIP 4 DISPLAY XREG POINTS DILX //* LOAD DISPLAY XREG DCA XREG JMS I IWACHT //* IT COSTS TIME BUT GIVES A NICER DISPLAY ISZ RNGPNT ISZ RNGCNT JMP I RINGIN TAD M400 //* RESET:FFER COUNTER TAD BGBUFFER POINTER TAD M1000EG TAD ADDONE //* ALLOE ? SZA CLA JMP I RINGIN //*END FASE :NO POTM SAMPLES TAD KNOB ADLM TAD (JMP POTM DCA ADDONE //*NEXT SAMPLE IS A POTM. SAMPLE JMP I RINGIN RNGCNT, -400 EJECT POTM, ADRB DCA LEVEL /*WE NEED THIS FOR DISPLAY TAD LEVEL CSPA, SPA /* SAMPLE IN AC >0 ? JMP MLEVEL /* NO - SAMPLE <0 CCIA, CIA JMS SETLEVEL /* FORM UPPER AND LOWERLEVEL TAD CSPA DCA POS /* TEST DATA > 0 TAD C7000 /* LEVEL > 0 (NOP) JMP P1 /* NO NEED TO TEST DATA < 0 MLEVEL, JMS SETLEVEL /* FROM UPPER AND LOWERLEVEL TAD CSMA /* LEVEL < 0 DCA POS /* NO NEED TOTEST DATA > 0 TAD CCIA P1, DCA NEG /* TEST DATA < 0 TAD CHAN ADLM /* SET MULTIPLEXER TO CHANNR DCA ADDONE JMP QCKRET /* GO AND SAMPLE UNTIL A MAX IS FOUND !! SETLEVEL,.-. TAD (DELTA /* LOWERLEVEL =-/SAMPLE/ + DELTA CSMA, SMA JMP QCKRET /* LOWERLEVEL > 0 = BAD LEVEL !! DCA MLOW TAD MLOW TAD (MDELTA /* UPPERLEVEL= -/SAMPLE/-DELTA DCA MUPP JMP I SETLEVEL ENDCNT, / # OF SAMPLES TO GO WERLEVEL MUPP, 0 /UPPERAX IS DETECTED EXCEED, S THE UPPERLEVEL CHAN, KNOB, 0 /LEVEL DETECTION KNOB LEVEL, 0 /THE POTM SAMPLE XREG, 0 /DISPLAY XREG $$$