*20 /// PROGRAM RECOG. /PROGRAM RECOGNIZES AN EVENT ON THE /SPECIFIED CHANNEL & DISPLAYS IT ON /THE SCREEN WITH START OF EVENT AT /SCREEN CENTRE (TIC MARK). /PRESUMES INPUT ON CH10. /SNS0=1: INVERT DATA /ONE MAY MANIPULATE NEEDED DEVIATION /OR NUM OF DEVIATED PTS IN ORDER TO /DEFINE AN EVENT ONSET. /PROGRAM SAMPLES INDEFINITELY FOR AN EVENT. /SEG LENGTH & SAMP\SEG SET UP CLOCK & /DISPLAYED INTERVAL ONLY. /DOES NOT REQUIRE PBLOCK OR LODSYM. LMODE SEGMNT 5 *20 BEG, STARTF /STD FPP JMP USROFF /KILL USERS //COMMAND SEQUENCE. JMP SETUP /INITIALIZE JMP CLKSET /CLK ON, SYS OFF JMP GETONE /FIND AN EVENT JMP GETMOR /FILL BUFFER JMP UNWIND /FILL DISP BFR JMP DISPLY /SHOW IT //END COMMAND SEQUENCE. /ROUTINE TO ASK FOR SAMPLING PARAMETERS & /TO SETUP BETA REGISTERS & LOCATIONS. SETUP, SET 3 0 D1, LIF 4 INTRACT CJ1 M1 /SEG LENGTH(MSEC): CJ1, T1 J1 T1, 0 J1, JMP BEG /CR JMP .+1 /NUM STORE AT D2, LIF 4 INTRACT CJ2 M2 /SAMP\SEG: CJ2, T1 J2 J2, JMP BEG /CR JMP .+1 STA BFSIZ SCR 1 STC CURS ADD BFSIZ COM STC TOTPTS FDIV AT FDIV FP400 RECIP FAC FADD FPHALF FIX FAC ISTOR1 CLTIC D3, LIF 4 INTRACT CJ3 M3 /DEVIATION MULT: CJ3, T1 J3 J3, JMP BEG /CR JMP .+1 /NUM STC DEVMUL D4, LIF 4 INTRACT CJ4 M4 /PNTS UP: CJ4, T1 J4 J4, JMP BEG /CR JMP .+1 COM STC PTSUP /SET LOCATIONS. LDA I JMP ERLAV STC AVFLG LDA I JMP ERLDEV STC DEVFLG /SET BETA REGISTERS. SET I 10 -10 /ERLY CNTR SET I 6 3777 /DF6 BFR PNTR SET I 2 PTSUP, 0 /NUM PTS UP JMP SET112 /BETA 11 & 12 JMP SET145 /BETA 14 & 15 LDF 6 JMP 3 /EXIT /END SETUP. /ROUTINE TO SET UP CLOCK & STOP SYSTEM. CLKSET, SET 3 0 OPR 3 CLRAT, 1100 CLTIC, 0 JMP USROFF IOB IOF JMP 3 /LEAVE USROFF, OPR 2 0 JMP 0 /ROUTINE TO FIND AN EVENT. GETONE, SET 3 0 MORE, JMP WATCLK /WAIT CLK TIC DATCH, SAM 10 SNS I 0 /SNS0=1, INVERT COM SCR 1 /9 BIT DATA STA I 6 /TO DF6 BFR STC TEM3 AVFLG, 0 /JMP ERLAV OR NOP DEVFLG, 0 /JMP ERLDEV OR NOP JMP GPASAV /GET PAST AV VAL JMP GPSDEV /GET PAST DEV VAL JMP GCRDEV /GET CRNT DEVN LDA PSDEV /AVG PAST 8 DEV AZE I /ZERO CASE PROTECT ADD KP1 MUL I DEVMUL, 0 COM ADD CRDEV APO /CRDEV GRTR AVDEV? JMP NOTYET /NO XSK I 2 /NUM IN A ROW? JMP NOTYET+2 /UP BUT NOT IN ROW JMP 3 /WOW, GOTONE, LEAVE NOTYET, SET 2 PTSUP JMP DEPAV /STORE CRNT VAL JMP DEPDEV /STORE CRNT DEVN JMP MORE /RECYCLE /ROUTINE TO WAIT FOR 8(10) PTS BEFORE /PROCEDING. ERLAV, JMP DEPAV /DEPOSIT CURNT VAL XSK I 10 JMP MORE /NOT DUN SET I 10 /DUN 8 -10 LDA I NOP STC AVFLG JMP MORE /ROUTINE TO WAIT FOR 8(10) DEVIATIONS /BEFORE PROCEDING. ERLDEV, JMP GPASAV /PAST AVG VAL JMP GCRDEV /CRNT DEVN JMP DEPDEV /DEPOSIT CRDEV JMP DEPAV /DEPOSIT CURNT VAL XSK I 10 JMP MORE /NOT DUN LDA I /DUN 8 NOP STC DEVFLG JMP MORE /ROUTINE TO STORE CURRENT VALUE IN /DF5 RING BUFFER. (1400-1407) DEPAV, SET 13 0 LDA TEM3 STA I 11 XSK I 12 JMP 13 JMP SET112 /BFR FULL JMP 13 SET112, SET I 11 1377 SET I 12 -10 JMP 0 /ROUTINE TO STORE CURRENT DEVIATION IN /DF5 RING BUFFER. (1410-1417) DEPDEV, SET 13 0 LDA CRDEV STA I 14 XSK I 15 JMP 13 JMP SET145 /BFR FULL JMP 13 SET145, SET I 14 1407 SET I 15 -10 JMP 0 /ROUTINE TO GET THE CURRENT DEVIATION. GCRDEV, LDA I TEM3, 0 COM ADD PASAV APO COM STA I CRDEV, 0 JMP 0 /ROUTINE TO GET THE PAST AVERAGE VALUE. GPASAV, SET 13 0 LDA 11 STC BTEM ADD 12 STC BTEM+1 JMP SET112 CLR ADA I 11 XSK I 12 JMP .-2 SCR 3 /DIV BY 8 STA I PASAV, 0 SET 11 BTEM SET 12 BTEM+1 JMP 13 AT, BTEM, 0 0 0 0 /ROUTINE TO GET PAST DEVIATION. GPSDEV, SET 13 0 LDA 14 STC BTEM ADD 15 STC BTEM+1 JMP SET145 CLR ADA I 14 XSK I 15 JMP .-2 SCR 3 /DIV BY 8 STA I PSDEV, 0 /AVG DEV LAST 8 PTS SET 14 BTEM SET 15 BTEM+1 JMP 13 /ROUTINE TO WAIT FOR CLOCK TIC. WATCLK, SET 13 0 PDP PMODE 6131 JMP .-1 CLA 6135 LINC LMODE JMP 13 /LEAVE /ROUTINE TO FINISH FILLING UP DF6 RING /BUFFER. GETMOR, SET 3 0 LDA TOTPTS SCR 1 STC 4 /HALF NUM PTS CNTR BKMR, JMP WATCLK SAM 10 SNS I 0 /SNS0=1, INVERT COM SCR 1 /9 BITS STA I 6 XSK I 4 JMP BKMR JMP 3 /LEAVE /ROUTINE TO UNWRAP DF6 6 PUT IN DF7. UNWIND, SET 3 0 LDA 6 ADD TOTPTS SAGE 2000 ADD KP2000 STC 6 SET I 7 3777 SET I 10 TOTPTS, 0 /- TOTAL PTS LDF 6 LDA I 6 LDF 7 STA I 7 XSK I 10 JMP .-5 JMP 3 /LEAVE /ROUTINE TO DISPLAY CURVE. DISPLY, SET 3 0 OPR 3 /START SYSTEM 5100 1750 OPR 11 /START DISPLAY 26 0 5 DISBUF JMP .-5 BK, JMP POTSW /CHK SW OPR 7 SNS 5 /SNS5=1=LEAVE JMP BK JMP USROFF JMP BEG POTSW, RSW BSE I 3760 STC SCALE SAM 0 ADD KM777 STC POT JMP 0 /DISPLAY BUFFER. DISBUF, -0 /CURVE 2 /PNT PLOT 0 /X POT, 0 /Y LDF 7 2000 BFSIZ, 0 /PNTS CURS, 0 /CURSOR SCALE, 0 /SCALE 1 /SEG DATA 1 /SEG SCOPE 0 /CURS RETURN 4001 /END TASK 4000 /END JOB /CONSTANTS & BUFFERS. FPHALF, 0 KP2000, 2000 0 KP2, 2 KM777, -777 KP1, 1 KM1, -1 FP400, 11 3100 0 /MESSAGES. M1, TEXT %PROG RECOG% 4543 TEXT %SEG LENGTH (MSEC):% M2, TEXT %SAMP\SEG:% M3, TEXT %DEVIATION MULT :% M4, TEXT %PTS UP: % /// SAGE SAGE=JMP . STC SAGEX+1 /SAVE AC ADD 1 STC SAGEX+3 /SAVE BETA 1 SET 1 0 ADD 1 STA SAGEX+2 /ORIG RTRN JUMP BCL I 6000 STC 1 /NOW COMPARE VALUES. LDA 1 COM ADD SAGEX+1 AZE I JMP .+7 /EQUAL APO I /NOT EQUAL JMP .+5 /GRTR CLR /LESS /NOW SET UP RETURN JUMPS. ADD SAGEX+2 ADD KP1 JMP .+4 CLR ADD SAGEX+2 ADD KP2 STC SAGEX SET 1 /RESTORE BETA 1 SAGEX+3 ADD SAGEX+1 /RESTORE AC SAGEX, 0 /LEAVE, RTRN JUMP 0 /AC 0 /ORIG RTRN JMP 0 /BETA 1 /END SAGE. AAEND, 0 /END PROGRAM / PARAMS NOLIST OPR=0500 INTRACT=6042 IOF=6002 /FLOATING POINT DEFINITIONS. FAC=0 STARTE=740 FSUB=741 FMUL=742 FDIV=743 LOAD=744 STORE=745 SETWRD=746 INPUT=747 OUTPUT=750 ISTOR1=751 SQRT=752 DFLOAT=753 SFLOAT=754 FIX=755 FADD=756 ISTOR2=757 STARTF=760 FCOMP=761 FZER=762 FAPO=763 FAZE=764 RECIP=765 LIST ///END RECOG. /SEPT 73., F.H.D.