File DAQD5.

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

/DAQUAN MS- DATA ACQUISITION AND ANALYSIS FOR LAB-8E.
/
/DEC-8E-ADAQA-A-LA
/
/COPYRIGHT 1972
/DIGITAL EQUIPMENT CORPORATION
/MAYNARD, MASSACHUSETTS 01754
/


/DAQUAN: /FILE DAQ.5 /DAQUAN FOR PS8 /COPYRIGHT 1972 DIGITAL EQUIPMENT CORP. MAYNARD, MASS. 01754. /DATA ACQUISITION AND ANALYSIS FOR 8K LAB8/E /THE COMPUTER OF AVERAGE TRANSIENTS AND /USING MANY OF THE CONCEPTS AND CODE AS WAS IN /LORCAP-MADCAP PACKAGES (DECUS #8-237) AND CATACAL FIXMRI CALL=4400 /USED TO CALL SUBR'S INDIRECTLY FIXMRI FADD=1000 FIXMRI FSUB=2000 FIXMRI FMPY=3000 FIXMRI FDIV=4000 FIXMRI FGET=5000 FIXMRI FPUT=6000 FEXT= 0000 CDF= 6201 CLZE= 6130 CLSK= 6131 CLDE= 6132 CLAB= 6133 CLEN= 6134 CLSA= 6135 CLBA= 6136 CLCA= 6137 DBSO= 7000 /NOP DILC= 6050 DICD= 6051 DISD= 6052 DILX= 6053 DILY= 6054 DIXY= 6055 DILE= 6056 DIRE= 6057 ADCL= 6530 ADLM= 6531 ADST= 6532 ADRB= 6533 ADSK= 6534 ADSE= 6535 ADLE= 6536 ADRS= 6537 CAF= 6007 PCE= 6020 KIE= 6035
SET1= CLL CLA IAC SET2= SET1 RAL SET3= SET2 STL SET4= SET1 RTL SET6= SET4 STL SETM2= STA CLL RAL SETM3= STA CLL RTL /SHORT HAND SUBR. CALLS FIXT= JMS I FIXER FLOAT= JMS I FLOTER INITAR= JMS I INIT HEDIT1= JMS I HEADR1 HEDIT2= JMS I HEADR2 FLOUT= JMS I 6 ENTR= JMS I 7 GETNO= JMS I READXY RDTTY= JMS I TELRED ASK= JMS I QUERY CRLFD= JMS I CRTLFD FOUTCM= JMS I FOTCM DISPLAY=JMP I DISM2 /COMMON EXIT TO DISPLAY /THE FOLLOWING ARE USED TO CALL CERTAIN /OPERATIONS WHILE IN INTERPRETER MODE. SQUARE= 1 SQROOT= 2 NEGATE= 10 /NEGATE FL. PT. AC READ= 11 /READ FP#, IGNORE NON-NUMERICS OUTPUT= 12 /PRINT FAC. IN E FORMAT FLOT=14 HEDIT= 15 /PRINT HEADING WITH 'HEDER2' FNOR= 7000 /NORMALIZE C(FAC) /EQUATES TO FLOATING PT. PKG: DNORM=7265 FPIN=6200 FPNT=7400 EW= 44 HW= 45 LW= 46 AC0= 40 AC1= 41 AC2= 42 INPSW=52 DP=57 EFLG= 56 FLDW= 57 DADP= 60
/THESE DEFINE X-Y DAC RANGE AND PLOTTER /LIMITS AS USED BY THIS PRGM. AXR=1750 /X RANGE=1000(10) AYR=1750 /Y RANGE=1000(10) AXL=-764 /LOWER X LIMIT=-500 AYL=-764 /LOWER Y LIMIT=-500(10) /THESE ARE USED BY 'MARKER' TO SET /UP QUADRANT COORDINATES NEEDED. AX1=AXL+372 /1ST X QUAD.,=-250(10) AX2=AXL+764 /2ND " =0 AX3=AXL+1356 /3RD " =250(10) AY1=AYL+372 /1ST Y QUAD.,=-250(10) AY2=AYL+764 /2ND " =0 AY3=AYL+1356 /3RD " =250(10) BUF1=-1 /STARTING ADDR.-1 OF FIRST BUFFER DLBUF=4000 /ARRAY SIZE OR OFFSET FIELD 0 *1 /INTERRUPT FOR CLOCK IN LOOK JMP I .+1 STAVR *6 FOUTX /START OUTPUT CONTROLLER FPNT /START INTERPRETER XIND, 0 /AUTO-INDEX REGISTERS YIND, 0 ZIND, 0 AUTO, 0 /USED FOR TEMPORARY WORK. AUTO2, 0 /TEMP AUTO. *20 /SUBROUTINE TABLE FLOTER, FLOATR /FLOAT C(AC) INTO FAC FIXER, FIXR /FIX C(FAC) INTO AC AND LOC'N 45 READXY, READER /INPUT A FP # HOLD, STALL /RC CLOCK DELAY SUBR. TELRED, MODTTI /GET & PRINT CHAR. ON ASR INIT, INITIZ /INITIALIZE STORAGE POINTERS OUT, SELECT /OUTPUT CHAR TO ASR OR HSP CRTLFD, MODCR /ISSUE CR-LF HEADR1, HEDER1 /OUTPUT STRIPPED ASCII;ADDR. AFTER JMS HEADR2, HEDER2 /DITTO; NO ADDRESS QUERY, ASKER /ACCEPT Y OR N IN ANSWER TO QUESTION PENUP, UPPEN /CLOSE RELAY ONE TO LIFT PEN PENDN, DNPEN /OPEN " TO DROP PEN DISMOV, RESET /RESET DAC OUTPUT TO NEW COORD'S IOASK, ASKIO /ASK WHICH I/O DEVICE TO USE ADCON, ADCONV /ADC SUBR. FOR GENERAL USE
*63 /MORE SUBR'S AND OPERATIONAL CONTROLS FOTCM, FLTCM /FLOATING OUTPUT OF FAC FOLLOWED BY A COMMA CLKSET, SETCLK /CLOCK CONTROL SUBR. XSET, XSETUP /COMPUTE X AXIS INCREMENT FOR DISPLAY DISM2, BEGDIS /BEGIN OF SCOPE DISPLAY ROUTINE ADINX, ADDMX /SET UP X DISPLAY COORD'S NPTS, 0 /NUMBER OF POINTS HUNDRD, HNDRD /FLOATING 100(10) XLIM, AXL /MIN. X FOR DISPLAY YLIM, AYL /SAME FOR Y XRNG, AXR /X DISPLAY RANGE YRNG, AYR / " FOR Y YONE, BUF1 /STARTING INDEX-1 FOR Y ARRAY OFFSET, DLBUF /ARRAY OFFSET YDIS, 0 /CURRENT DISPLAY COORD. FOR Y XDIS, 0 /CURRENT X COORDINATE FOR DISPLAY /XNC AND TXSM HAVE ASSUMED DECIMAL /POINT AFTER BIT 11 OF HI ORDER WORD. XNC, 0 /DOUBLE PRECISION VALUE FOR X 0 /INCREMENT FOR DISPLAY TXSM, 0 /IS CURRENT DOUBLE PREC. 0 /VALUE FOR X DISPLAY. FK3, 2;3000;0 P27, 27 /A CONSTANT. /THESE 4 LOC'NS ARE USED BY AVERAGER RUN, 0 /NO. OF SCANS MCHAN, 0 /MULTIPLEXOR CHANNEL AVSUM, 0 /NO. OF SAMPLES PER PT. (2'S COMP.) EXPFC, 0 /EXPONENT FACTOR REDUCES ADC SUM
/TABLE OF CONSTANTS, COUNTERS, & TEMP. LOC'NS. FIVE, 5 HALF, 0 /THIS IS USED TO AVOID TRUNCATION 2000 /WHEN FIXING THE FAC TO AN INTEGER. 0 NEG4, -4 RM77, 77 K1000, 1000 PCTR, 0 CNTR, 0 LNCTR, 0 MCTR, 0 TEMP, 0 TEMP1, 0 TEM2, 0 TEM3, 0 MIN, 0 MAX, 0 MODE, 0 BLOCK, 0 HIORD, 0 FTEM1, CLTM, 0 DLATM, 0 0 FTEM2, LOORD, 0 TMXP, 0 TMCTR, 0 TEMFP, PS1, 0 PS2, 0 S1C, 0 XMIN, S2C, 0 MNT, 0 MXT, 0 YMIN, KMIN, 0 KMNT, 0 0 XSCLFC, 0 0 0 YSCLFC, 0 0 0
/MAIN CALLING ROUTINE AND /DISPLAY LOOP PLUS SMALL SUBR'S. *200 JMS M76TF1 /MOVE PS8 7600,FIELD 1 TO FIELD 0 /TO MAKE ROOM FOR DATA. /DO NOT RESTART AT 200. JMP START JMP BEGDIS-1 /SA=202 TO RE-ENTER DISPLAY START, CLA CLL CDF 0 DCA IOSWT /CLR I/O SWITCH FOR LOW SPD HEDIT1 /DAQUAN LIVES!^TITLE: HD1 RDTTY /READ IN TEXT UNTIL CTRL/A TAD MALT /IS ENTERED, THEN GO ON TO INPUT SZA CLA JMP .-3 DCA BLOCK /CLEAR FOR CHANNEL 1 DCA MODE /NO CURSORS IAC DCA NPTS /SET # PTS TO ONE FOR INITIAL COMMAND HEDIT2 /OK, HIT ME! CALL PENUP /BE SURE PLOTTER PEN IS UP /START OF SCOPE DISPLAY ROUTINE: BEGDIS, CDF 0 /NORMAL EXIT POINT FROM ROUTINES CALL XSET DCA IOSWT /CLR FOR LO SPD I/O DCA EFLG /SET FPP E FORMAT. CRLFD KCC /KNOCK DOWN TTY FLAG SCPINT, TAD MODE SZA CLA /WANT CURSORS? CALL DSPTS /YES DCA TEMP /CLR SWITCH USED TO SWAP BLOCKS DCA TEMP1 /IS Y AXIS OFFSET IF BLOCK=2 DCA TEM2 /IS X AXIS OFFSET TAD BLOCK SZA CLA /BLOCK 1? STYN, TAD OFFSET /YES, ADD ARRAY OFFSET TAD YONE DCA YIND TAD NPTS CIA DCA CNTR TAD TEM2 TAD XLIM DCA XDIS TAD YLIM TAD TEMP1 DCA TEMP1 DCA TXSM+1
KSF /GET CHAR. FROM TTY? SKP JMP I INTRP /YES, GO GET REST AND DECODE. CDF 10 SCPLOP, TAD I YIND /GET Y VALUE (0-1000) TAD TEMP1 DCA YDIS CALL DISMOV TAD XNC+1 /INCR. X DISPLAY SUM TAD TXSM+1 DCA TXSM+1 RAL TAD XDIS TAD XNC DCA XDIS ISZ CNTR /MORE PTS? JMP SCPLOP /YES CDF 0 STA TAD BLOCK SPA SNA CLA /BLOCK #=2? JMP SCPINT /NO, CONTINUE WITH CDA ISZ TEMP /IS SWITCH SET FOR CHANNEL 1? JMP .+4 /NO DCA TEM2 /YES CLEAR X AND Y OFFSET DCA TEMP1 JMP STYN+1 /AND RETURN STA /SET SWITCH TO SKIP DCA TEMP IAC CALL ADCON /GET A NEW Y OFFSET FROM KNOB 1 DCA TEMP1 CALL ADCON /GET NEW X OFFSET FROM KNOB 0 DCA TEM2 JMP STYN /AND RETURN TO SET CHAN 2 DSPTS, DISPTS INTRP, SERVIS /DECODE KBD CHAR'S AND ACT MALT, -201 /-CTRL/A
FIXR, 0 /THIS SUBR. TRUNCATES FAC TO INTEGER CLA /AND LEAVES IT IN THE AC & LOC'N HW. TAD EW SPA SNA CLA /EXPO.<1? JMP DONE-1 /YES; TRUNCATE TO ZERO TAD EW TAD M13 SNA /EXPO=13? JMP DONE /YES; C(45) ARE INTEGER PART SMA /EXPO.<13? JMP LRG /NO, IS TOO LARGE DCA FLOATR /USE FLOATR AS TEMP REG. FIXR1, CLL /ROTATE FAC 1 RIGHT;LEAVE TAD HW SPA STL RAR /VALUE AT LW=ADD 46. DCA HW TAD LW RAR DCA LW ISZ FLOATR /FRACTION AS C(46) JMP FIXR1 JMP DONE LRG, CLA CLL TAD HW SPA CLA /WAS IT NEG.? CMA RTL /YES; SET AC=7775 CMA RAR /IF +,=3777;IF -,=4001 DCA HW DONE, TAD HW JMP I FIXR M13, -13
/THIS IS A SHORT DEBUG AND CORE MODIFIER ROUTINE /THE RETURN LOCATION IS SPECIFIED BY /TYPING 'R' THEN RETURN LOC'N. /TYPE 'N' TO OPEN NEXT LOCATION; TYPE 'C' /AFTER A CORRECTION TO ENTER IT; /AND TYPE 'S' TO REOPEN LAST LOCATION USED. /'RUBOUT' WILL TERMINATE ANY OPERATION /THEN RESTART ROUTINE. /WILL BE CLOBBERED BY PARA'S IF USE CA: *400 STRTIT, JMS MODCR JMS OCTIN /GET A LOCATION TO OPEN JMP .-2 SZA /GET A NUMBER>0? JMP GOTIT /YES TAD LSCHR /IS LAST CHARACTER READ TAD MEN SNA /WAS IT 'N'? JMP NLOC /YES TAD MES SNA /WAS IT 'S'? JMP NLOC+1 /YES IAC SZA CLA /WAS IT 'R'? JMP STRTIT /NO, IGNORE IT JMS OCTIN /YES; GET EXIT LOC'N JMP STRTIT /IF ERROR, RESTART SNA CLA /MUST BE NONZERO ADDR. JMP STRTIT JMS MODCR /WAS OK JMP I VALU /EXIT TO THERE. NLOC, ISZ LSLOC TAD LSLOC JMS OCTOUT SKP GOTIT, DCA LSLOC TAD EQUAL CALL OUT TAD I LSLOC /GET CONTENTS OF OPEN LOC'N JMS OCTOUT /PRINT IT TAD COLON CALL OUT JMS OCTIN /GET CORRECTION JMP STRTIT CLA TAD LSCHR TAD MSEE SZA CLA /WAS LAST CHAR. A 'C'? JMP STRTIT /NO, RESTART. TAD VALU /YES DCA I LSLOC /STORE CORRECTION JMP STRTIT
OCTOUT, 0 CLL RAL /CAME WITH OCTAL # IN AC; DCA DTEM /ROTATE 1ST DIGIT INTO LINK TAD NEG4 DCA NCNTR SETIT, TAD DTEM RTL RAL DCA DTEM TAD DTEM AND P7M0 /MASK RIGHTMOST 3 BITS TAD AS260 CALL OUT ISZ NCNTR /PRINTED 4 DIGITS? JMP SETIT /NO JMP I OCTOUT /YES, WE'RE DONE. OCTIN, 0 CLA /OCTAL INPUT ROUTINE DCA VALU /ANY NON OCTAL CHAR TERMINATES DCA NCNTR />4 DIGITS OR RUBOUT GENERATE ERROR RETURN GTCHR, JMS MODTTI /GET A CHARACTER DCA LSCHR TAD LSCHR TAD MN7 SMA SZA /<OR= ASCII '7'? JMP FNISH /NO, IS NOT DIGIT TAD P7M0 SPA /> ASCII '0'? JMP FNISH /NO, DEFINITELY NOT DIGIT. DCA DTEM /IS DIGIT, KEEP IT. TAD VALU /IS CURRENTLY ASSEMBLED LOC'N CLL RTL RAL TAD DTEM /ADD NEW DIGIT DCA VALU ISZ NCNTR TAD NCNTR /HAVE MORE THAN 4 CHAR'S? TAD NEG4 SZA SMA CLA JMP BAD /YES, ERROR JMP GTCHR /NO, GET ANOTHER FNISH, CLA /EXIT HERE WITH OPEN LOC'N IN AC TAD LSCHR TAD MRBT SNA CLA /WAS LAST CHAR A RUBOUT? JMP .+4 /YES, ERROR! ISZ OCTIN /INDEX RETURN IF NO ERROR TAD VALU /AND LEAVE RESULT IN AC JMP I OCTIN BAD, TAD QUEST CALL OUT JMP I OCTIN
MSEE, -303 AS260, 260 MRBT, -377 MN7, -267 P7M0, 267-260 EQUAL, 275 COLON, 272 MEN, -316 MES, 316-323 QUEST, 277 NCNTR, 0 LSLOC, 0 LSCHR, 0 VALU, 0 DTEM, 0 MODTTI, 0 KSF JMP .-1 KRB TLS TSF JMP .-1 JMP I MODTTI MODCR, 0 CLA TAD MDCR CALL OUT TAD MDLF CALL OUT JMP I MODCR MDCR, 215 MDLF, 212
*600 READER, 0 /FP INPUT SUBR. TO IGNORE NON-NUMERICS. CALL FLIN /GET CONVERSION NOP /LEAVE ROOM FOR DAFFT AND PAFFT TO INSERT / A SWBA INSTRUCTION TAD INPSW SNA CLA /NUMERIC INPUT? JMP .-3 /NO, TRY AGAIN JMP I READER /YES, EXIT. FLIN, FPIN SELECT, 0 /OUTPUT SELECTOR ACCORDING TO IOSWT DCA OUTCHR /KEEP CHAR. TAD IOSWT SNA CLA /WAS IT >0? JMP TTOUT /NO, USE TELETYPE TAD OUTCHR PLS PSF JMP .-1 JMP .+5 TTOUT, TAD OUTCHR TLS TSF JMP .-1 CLA JMP I SELECT OUTCHR, 0 MARKER, 0 /TABLE DRIVEN AXIS MARKER ROUTINE TAD CORTAB /INITIALIZE COORD. TABLE POINTER DCA AUTO LOKIN, TAD I AUTO /GET STATUS WORD DCA TEMP TAD TEMP IAC SNA CLA /END OF TABLE? JMP I MARKER /YES TAD TEMP SMA CLA /NEED X COORD.? JMP .+3 /NO TAD I AUTO DCA XDIS TAD TEMP RAL SMA CLA /NEED Y COORD.? JMP .+3 /NO TAD I AUTO DCA YDIS CLA IAC /IF BIT 11=1, MOVE TO COORD'S AND TEMP /THEN PUT PEN DOWN; IF =0, CALL PLTMV /INCREMENT TO COORD'S W/PEN DOWN. JMP LOKIN /CONTINUE SCANNING TABLE PLTMV, PLTINC
/THE FOLLOWING TABLE OF COORD'S IS STRUCTURED /THUSLY: 1ST WORD=STATUS, BIT 0=1 MEANS /X COORD. FOLLOWS, BIT 1=1 Y COORD. FOLLOWS, /BOTH SET MEANS X THEN Y COORD'S FOLLOW. /BIT 11 DESCRIBES PEN STATUS: =0 /LEAVE PEN AS IS, AND =1 RAISE PEN. PX=4000;PY=2000;PU=1 CORTAB, . /THESE DRAW A BOX STARTING FROM AXES ORIGIN PX+PY+PU /GO TO AXES ORIGIN AXL-5 AYL-5 PX /GO TO RIGHT AXL+AXR+5 PY /GO TO TOP AYL+AYR+5 PX /GO TO LEFT TOP AXL-5 PY /GO TO AXES ORIGIN AYL-5 /THESE DRAW TICS ON X AXIS PX+PU AXL PY AYL-2 PX+PY+PU AX1 AYL-5 PY AYL-2 PX+PY+PU AX2 AYL-5 PY AYL-2 PX+PY+PU AX3 AYL-5 PY AYL-2 PX+PY+PU AXR+AXL AYL-5 PY AYL-2
/TICS ON Y AXIS PX+PY+PU AXL-5 AYL PX AXL-2 PX+PY+PU AXL-5 AY1 PX AXL-2 PX+PY+PU AXL-5 AY2 PX AXL-2 PX+PY+PU AXL-5 AY3 PX AXL-2 PX+PY+PU AXL-5 AYR+AYL PX AXL-2 PX+PY+PU AXL AYL MIN1, -1 /END OF TABLE. FOUTX, 0 /ENTRY TO FLOATING OUTPUT. DCA DADP JMS I .+3 /CALL FPP OUTPUT. NOP /LEAVE ROOM FOR DAFFT AND PAFFT TO INSERT / A SWBA INSTRUCTION. JMP I FOUTX 5600
*1000 CALBRT, HEDIT1 /CALIBRATE:^LINE PLOT? HD3 ASK DCA I PTPLT /=0 FOR LINE PLOT;=1 FOR POINT CLSTRT, CRLFD CALL PENUP JMP ORGN /START PEN AT ORIGIN OF DATA INSTRK, CALL DISMOV /BEGIN INTERROGATION KSF JMP .-2 /MUST REFRESH DISPLAY KRB TLS TAD YES /LEGAL CHARACTERS ARE SNA /X,Y,O,M, OR G JMP YMAX /WAS Y, GO TO YMAX IAC /WAS IT X? SNA JMP XMAX /YES, GO TO XMAX. TAD MGEE /WAS IT G? SNA JMP I PLTXIT /YES, EXIT. TAD MEM /WAS IT M? SZA JMP .+3 /NO CALL MARKR /YES, MARK COORDINATE AXES. JMP CLSTRT TAD MOH /WAS IT O? SNA CLA JMP ORGN /YES, GO TO DATA MINIMA. TAD QUES /NO, FOUND INVALID CHARACTER CALL OUT JMP INSTRK XMAX, TAD XLIM TAD XRNG DCA XDIS JMP INSTRK YMAX, TAD YLIM TAD YRNG DCA YDIS JMP INSTRK ORGN, TAD XLIM DCA XDIS TAD YLIM DCA YDIS JMP INSTRK
QUES, 277 /? YES, -331 /-Y NO, 331-316 /Y-N MGEE, 330-307 /X-G MEM, 307-315 /G-M MOH, 315-317 /M-O PTPLT, PNTPLT MARKR, MARKER PLTXIT, PLTINT /SUBR. ACCEPTS ONLY 'Y' OR 'N' FROM ASKER, 0 /ASR. GIVES '?' IF NOT. SETS AC=1 RDTTY /FOR 'N' ANSWER, AC=0 FOR 'Y' TAD YES SNA JMP I ASKER /=0 FOR YES TAD NO SZA CLA JMP .+3 IAC /=1 FOR NO JMP I ASKER TAD QUES CALL OUT JMP ASKER+1 STALL, 0 CLA CLL TAD SET SNA CLA /WANT FAST CLOCK? TAD K100 /NO SET FOR 1KC TAD K5400 /IF SKIPPED SET FOR 10KC DCA CCLDR SET3 CALL ADCON /GET VARIABLE COUNT FROM CHAN 3 TAD K7000 STL RAR /RANGE OF 7000 TO 7777 CALL CLKSET /INSERT DELAY TIME CCLDR, 0 JMP I STALL SET, 0 K7000, 7000 K5400, 5401 K100, -100 ADCONV, 0 ADLM /LOAD MUX ADST /START CONV ADSK JMP .-1 ADRB /READ RESULT JMP I ADCONV
RESET, 0 /RESET DISPLAY COORD'S CLA DIXY TAD YDIS DILY CLA TAD XDIS DILX CLA CLL JMP I RESET /THESE TWO SUBR'S CAN OPEN AND CLOSE A RELAY /USING RELAY DRIVER TIED TO CHANNEL SELECT BIT. UPPEN, 0 CALL HOLD DILE CALL HOLD JMP I UPPEN DNPEN, 0 CALL HOLD SET2 DILE CALL HOLD JMP I DNPEN HNDRD, 7;3100;0
*1200 LEADER, 0 /OUTPUT 10 INCHES OF LDR-TRLR. CRLFD TAD LNUM DCA PCTR TAD C200 CALL OUT ISZ PCTR JMP .-3 JMP I LEADER LNUM, -144 C200, 200 XSETUP, 0 STA /FOLLOWING ROUTINE COMPUTES TAD NPTS /X DISPLAY INCREMENT SCALED FLOAT /TO THE NO. OF PTS., NPTS. ENTR FPUT XSCLFC FGET XRNG FLOT FDIV XSCLFC /LEAVES X UNITS/PT IN FAC FPUT XSCLFC /AND XSCLFC. FEXT TAD EW SZA SMA CLA /WAS FAC<1? JMP GTZR /NO DCA XNC /YES, CLEAR INTEGER PART TAD HW /ASSUMES FACTOR IS ALWAYS CLL RAL /0.25 OR GREATER;RAL FOR SIGN BIT ISZ EW /WAS C(44)=-1? SKP /NO, WAS 0 CLL RAR /YES, DIVIDE BY 2 JMP .+4 GTZR, FIXT DCA XNC TAD LW DCA XNC+1 JMP I XSETUP
ISDIG, JMS DATYP HEDIT2 /PTS. TO SKIP: GETNO FIXT CMA /KEEP AS ONE'S COMP. DCA PCTR HEDIT1 /Y RANGE AND MIN.: DIHD1 GETNO JMS YSVAL ENTR READ /READ MINIMUM Y FPUT YMIN FEXT CALL IOASK /LOW SPEED I/O? RFC INITAR XYSCAL, ENTR /READ A Y VALUE READ FSUB YMIN FMPY YSCLFC FADD HALF FEXT FIXT CDF 10 DCA I YIND CDF 0 ISZ PCTR /KEEPING THIS POINT? JMP XYSCAL-1 /NO, RE-INIT. TO IGNORE PTS. STA /AFTER FIRST SKIP, ALWAYS SKIP DCA PCTR ISZ CNTR JMP XYSCAL DISPLAY /EXIT FOR DISPLAY DATYP, 0 HEDIT1 HD2 /NO. PTS= GETNO FIXT CIA TAD OFFSET SPA CLA /LESS THAN ARRAY SIZE? JMP DATYP+1 /NO, TRY AGAIN TAD HW DCA NPTS CALL XSET /SET X DISPLAY INCREMENT JMP I DATYP
YSVAL, 0 ENTR FPUT YSCLFC /DATA RANGE IN FAC ON ENTRY FGET YRNG /FIND YRNG/D.R.=YSCLFC FLOT FDIV YSCLFC / AND LEAVE FACTOR IN FAC FPUT YSCLFC FEXT JMP I YSVAL PLTINT, INITAR /INCREMENTAL X-Y ANALOG PLOTTING ROUTINE CALL PENUP /RAISE PEN CALL XSET IAC /SET SWITCH FOR 1 ST PT ONLY DCA LNCTR PLTLOP, CDF 10 /SET UP Y VALUE TAD I YIND CDF 0 TAD YLIM DCA YDIS TAD PNTPLT /=0 FOR LINE PLOT; =1 FOR POINT TAD LNCTR CALL PLTMOV /MOVE PEN DCA LNCTR /CLEAR 1 ST PT SWITCH CALL ADINX /INCR. X DISPLAY SUM ISZ CNTR /MORE PTS? JMP PLTLOP /YES CALL PENUP /LIFT PEN + EXIT HEDIT1 /DONE. IS PLOTTER OFF? HD6 ASK /IGNORE RESPONSE DISPLAY PNTPLT, 0 PLTMOV, PLTINC YFLIP, INITAR /INVERT Y AXIS CDF 10 /Y(I)=YRNG-Y(I) FLY, TAD I YIND CIA TAD YRNG DCA I ZIND ISZ CNTR JMP FLY DISPLAY
*1400 /SUBR. PRINTS DEC. NOS. IN 10 COLUMNS FPOUT, CALL IOASK /OF UP TO 4 DIGIT INTEGERS. CALL LEDER INITAR SET6 DCA DP /NO. OF DIGITS TO OUTPUT ISZ EFLG /SET F FORMAT. NULINE, TAD NLIN DCA MCTR LOOP6, CDF 10 TAD I YIND FLOAT FOUTCM ISZ CNTR SKP JMP DNE ISZ MCTR JMP LOOP6 CRLFD JMP NULINE DNE, CALL LEDER DISPLAY NLIN, -12 LEDER, LEADER /CHECK WHICH I/O DEVICES TO USE ASKIO, 0 HEDIT1 HDIO ASK CLL RAR /KEEP ANSWER IN LINK CRLFD /MUST HAVE LOW I/O FOR CR-LF RAL /NOW SET UP SWITCH DCA IOSWT /=1,HIGH;=0,LOW JMP I ASKIO HDIO, TEXT \TTY I/O?\
/SCAN DATA FOR MIN AND MAX: SCANY, 0 INITAR CDF 10 STL RTR DCA MIN DCA MAX LOOP4, TAD I YIND /FIND YMAX AND YMIN IN DATA DCA TEMP TAD TEMP /SUB Y FROM MIN CIA TAD MIN SMA CLA /MIN<Y? JMP LOW /NO, SET MIN=Y TAD TEMP /YES,SUB Y FROM MAX CIA TAD MAX SMA CLA /MAX>Y? JMP INCR TAD TEMP /NO, SET MAX=Y DCA MAX JMP INCR LOW, TAD TEMP DCA MIN INCR, ISZ CNTR JMP LOOP4 CDF 0 JMP I SCANY SCALY, JMS SCANY /GET YMIN & MAX TAD MIN CIA TAD MAX FLOAT CALL YSCVAL HEDIT1 /^MIN= HD5 SET6 DCA DP ISZ EFLG TAD MIN FLOAT FLOUT /OUTPUT 4 DIGIT INTEGER HEDIT2 /MAX= TAD MAX FLOAT FLOUT ENTR HEDIT /MPY= FGET YSCLFC FEXT ISZ DP /SET FIELD TO 7 SET3 /FOR 3 DEC. PLACES FLOUT
INITAR SKL, TAD MIN /SCALE DATA AFTER SUB'G MIN Y. CIA CDF 10 TAD I YIND FLOAT ENTR FMPY YSCLFC FADD HALF /CORRECT FOR TRUNCATION. FEXT FIXT CDF 10 DCA I ZIND ISZ CNTR JMP SKL DISPLAY YSCVAL, YSVAL /LOADS CURRENT XDIS AND READYS NEXT. ADDMX, 0 CLA CLL TAD TXSM+1 /GET LOW ORDER CLL RAL /PUT BIT 0 IN 11 FOR ROUNDOFF CLA RAL TAD TXSM /GET HIGH ORDER TAD XLIM DCA XDIS /IS CURRENT X DISPLAY VALUE. CLL TAD TXSM+1 /FOR NEXT TIME: GET FRACTIONS TAD XNC+1 DCA TXSM+1 RAL /PUT OVERFLOW IN BIT 11 TAD TXSM /GET INTEGER PARTS TAD XNC DCA TXSM JMP I ADDMX HSR, 0 RSF JMP .-1 RRB RFC JMP I HSR
*1600 /ENTER WITH CONTROL VALUE IN AC: /NEG=SCOPE,0=INCREMENT, & POS=FIRST /POINT (FOR PLOTTING ONLY, NOT SCOPE) /OR MAKE A POINT PLOT. PLTINC, 0 SMA /IS AC NEG? JMP .+3 /NO CALL DISMOV /YES, USE FAST JUMP JMP PLEXT SNA CLA /WAS AC>0? JMP GSCAN /NO, USE INCREMENTER CALL PENUP /YES; GO TO COORD'S AND WAIT CALL DISMOV CALL PENUP CALL PENUP CALL PENDN /THEN PUT PEN DOWN JMP PLEXT GSCAN, TAD OLDX /IS OLD X CIA TAD XDIS DCA PCTR /IS DELTA X TAD OLDY /IS OLD Y CIA TAD YDIS DCA TEMP1 /IS DELTA Y TAD PCTR SPA CIA DCA MCTR /IS ABS. VALUE OF DX TAD TEMP1 SPA CIA /NOW HAVE ABS(DY) TAD MCTR /ADD ABS(DX) DCA MCTR /ABS(DX)+ABS(DY)=# OF MOVES=MCTR TAD MCTR SNA /IS MCTR>0? JMP PLEXT /NO, NO MOVES TO MAKE, EXIT. CIA DCA LNCTR
ENTR FGET MCTR /# MOVES FLOT FPUT TEMFP FGET OLDX FLOT FPUT XMIN FGET OLDY FLOT FPUT YMIN FGET PCTR /DELTA X FLOT FDIV TEMFP FPUT XSCLFC /X UNITS/MOVE FGET TEMP1 /DELTA Y FLOT FDIV TEMFP FPUT YSCLFC /Y UNITS/MOVE FEXT ISZ I CSET /USE FAST CLOCK CYCLE SCANIT, ENTR FGET XMIN FADD XSCLFC FPUT XMIN FADD HALF FEXT FIXT /TRUNCATE XPOS TO NEAREST INTEGER DCA XDIS ENTR FGET YMIN FADD YSCLFC FPUT YMIN FADD HALF FEXT FIXT /DO SAME FOR Y. DCA YDIS CALL DISMOV /MOVE PEN TO NEW COORD'S CALL HOLD /WAIT FOR FAST CLOCK CYCLE ISZ LNCTR /MORE MOVES? JMP SCANIT /YES. DCA I CSET /RESTORE FOR SLOW CLOCK PLEXT, TAD XDIS DCA OLDX TAD YDIS DCA OLDY JMP I PLTINC CSET, SET OLDX, 0 OLDY, 0
/ENTER HEDER1 WITH MESSAGE ADDRESS IN /LOCATION FOLLOWING THE JMS (HEDER1). /ENTER HEDER2 TO CONTINUE ON WITH A /BROKEN STRING (E.G., SEE 'HD1' BELOW) /AND DO NOT SUPPLY ADDRESS AFTER THE JMS. HEDER1, 0 /THESE SUBR'S OUTPUT PACKED ASCII CLA CLL IAC /AS GENERATED BY MACRO-8 ASSEMBLER. TAD HEDER1 /A SINGLE CODE,UP ARROW,=CR+LF DCA HEDER2 /ALWAYS RETURN THRU HEDER2 STA TAD I HEDER1 /GET MESSAGE ADDRESS-1 DCA HEDER1 /USE HEDER1 AS TEMP REG SKP HEDER2, 0 /ENTER HERE IF NO ADDRESS GIVEN CRLFD /BEGIN ALL MESSAGES WITH THIS NPR, ISZ HEDER1 TAD I HEDER1 RTR RTR RTR /SWAP HALVES JMS TYPCH /SET UP & TYPE ORIGINAL LEFT HALF TAD I HEDER1 JMS TYPCH / " RIGHT HALF JMP NPR TYPCH, 0 AND RM77 /DELETE CURRENT LEFT HALF SNA /ZERO IN EITHER HALF SIGNIFIES JMP I HEDER2 /END OF STRING; RETURN TAD M36 SPA /CODE 300 SERIES? JMP PRTT /YES SZA /SPECIAL CODE? JMP .+3 CRLFD /YES, CODE 36: CARR.RET.+LN.FEED JMP I TYPCH TAD P236 PRTT, TAD P336 CALL OUT JMP I TYPCH P336, 336 P236, 236-336 M36, -36
*2000 SERVIS, KRB /DISPLAY INTERRUPT SERVICE ROUTINE TLS /PRINT LAST CHAR. TSF JMP .-1 DCA TEMP TAD TEMP TAD (-203 /TEST FOR ^C SNA CLA JMP I PS8XJ TAD TEMP TAD M300 SPA SNA /WAS IT A LETTER? JMP NMCHK /NO, MAY BE NEW BLOCK # CLL RTL RTL RTL DCA TEMP RDTTY /GET NEXT CHAR TAD M300 SPA SNA /LETTER? JMP INVAL /NO, ERROR TAD TEMP DCA TEMP /KEEP 6-BIT PR AS 2'S COMP. TAD CHTAB /SET UP SEARCH TABLE DCA AUTO MRRED, RDTTY /GET MORE INPUT TAD M272 SNA /WAS IT A COLON? JMP CHLOP+1 /YES, LOOKUP JUMP ADDR. TAD RUBIT SZA CLA /RUBOUT? JMP MRRED /NO, GET MORE INVAL, CLA TAD ERRQ /OUTPUT '?' CALL OUT DISPLAY /AND EXIT TO DISPLAY CHLOP, ISZ AUTO TAD I AUTO /GET 6 BIT PAIR SNA /END OF TABLE? JMP INVAL /YES, INVALID COMMAND TAD TEMP SZA CLA /GET A MATCH? JMP CHLOP /NO, TRY NEXT ENTRY TAD I AUTO /YES, GET TABLE POINTER DCA TEMP JMP I TEMP /AND GO THERE
/SET UP BLOCK PARAMETER. 0=BUFFER 1, 1=BUFFER 2 NMCHK, TAD M261 /AND 2= BOTH BUFFERS W/OFFSETS FOR 2 SPA /<261? JMP INVAL /YES DCA BLOCK /KEEP IT TEMPORARILY SETM3 TAD BLOCK SPA CLA />2? JMP I CDISPL /NO, EXIT TO DISPLAY W/O CR-LF DCA BLOCK /YES, CLR BLOCK JMP INVAL /PRINT '?' ERRQ, 277 M300, -300 M261, 300-261 M272, -272 RUBIT, 272-377 CDISPL, SCPINT-1 CHTAB, DCTAB-1 PS8XJ, PS8X
DCTAB, -2324 /ST-RIP STRIPR -2315 /SM-OOTH SMOT11 -1116 /IN-TEGRATE INTEG -1501 /MA-SS STORAGE MASS -2325 /SU-BTRACT CDA FROM OTHER SUBTRT -1725 /OU-TPUT FPOUT -2014 /PL-OT CALBRT -2303 /SC-ALE SCALY -2327 /SW-AP SWAPBL -2205 /RE-START START -2001 /PA-PER TAPE INPUT ISDIG -0126 /AV-ERAGER INPUT ANINPT -2411 /TI-ME CALIBRATION CALSET -2321 /SQ-UEEZE DATA DENSITY SQEEZE -0104 /AD-D OTHER TO CDA ADDTWO -0405 /DE-RIVATIVE FORMATION DERIV -3011 /XI-NVERT XFLIP -3111 /YI-NVERT YFLIP -0317 /CO-PY CDA INTO OTHER COPY -0325 /CU-RSORS CURSR -1411 /LI-ST CURSORS CURLS -1525 /MU-LTIPLY (SCALE) CDA MULP -2005 /PE-AK REPORT ON CDA REPRT MZAP, -1517 /MO-DIFIER ROUTINE STRTIT 0 /END TABLE
*2200 INTFLT, 0 /INTERPERTIVE ENTRY TO FLOAT SUB. TAD EW FLOAT JMP I INTFLT COPY, CALL SPCIN /COPY DISP. CHAN INTO OTHER TAD I YIND DCA I AUTO ISZ CNTR JMP .-3 DISPLAY SPCIN, SPINIT
SUBTRT, CALL SPCIN /SUBTRACT CDA FROM OTHER BUFFER TAD I YIND /GET CDA CIA TAD I AUTO /SUBTRACT FROM OTHER DCA I ZIND /RESTORE IN CDA ISZ CNTR /MORE POINTS? JMP SUBTRT+1 /YES DISPLAY /EXIT TO DISPLAY
MASS, JMS M76TF1 /MOVE 7600 OF PS8 TO FIELD 1 CDF 0 DCA I (7746 /0 JOB CONTROL WORD. CIF 10 JMS I (7700 /CALL COMMAND DECODER. 5 0 0 CDF 10 TAD I (7620 /GET INPUT BLOCK #. DCA MASSA3 TAD I (7617 /TEST IF INPUT. SNA CLA JMP MASS1 /NO CDF 0 /YES JMS M76TF1 /MOVE 7600 0F PS8 TO FIELD 0. JMS DATYP /ASK NUMBER OF POINTS. HEDIT2 /# OF POINTS TO SKIP. GETNO FIXT DCA PCTR DCA MASSA2 TAD BLOCK /SET LOCATION TO READ INTO. SZA CLA TAD OFFSET TAD YONE IAC DCA MASSA2 TAD NPTS /NUMBER OF POINTS TO READ. DCA TEMP MASS3, JMS I (7607 /CALL SYSTEM DEVICE HANDLER. MASSA1, 0210 /READ 2 RECORDS INTO FIELD 0. MASSA2, 0 /BUFFER ADD. MASSA3, 0 /BLOCK ADD. JMP ERRX TAD PCTR /TEST TO SKIP DATA. SNA JMP MASS4 TAD (-400 /TEST FOR MORE THAN A BLOCK SPA /TO SKIP. JMP MASS2 /NO, SHIFT WORDS.
MASS6, DCA PCTR /YES ISZ MASSA3 /READ NEXT BLOCK. JMP MASS3 MASS2, DCA TEM2 /NUMBER OF WORDS TO MOVE. CMA TAD MASSA2 DCA AUTO /ADD. TO MOVE TO. TAD AUTO TAD PCTR DCA AUTO2 /ADD. TO MOVE FROM. TAD TEM2 /DEPLETE # OF PTS. TO READ. TAD TEMP DCA TEMP CDF 10 MASS5, TAD I AUTO2 /SKIP POINTS. DCA I AUTO ISZ MASSA2 /BUMP ADDRESS TO STORE NEXT BLOCK. ISZ TEM2 JMP MASS5 CDF 0 DCA PCTR /0 SKIP COUNT. JMP MASS20 /TEST IF DONE. MASS4, TAD MASSA2 /SET TO NEW BUF.START. TAD (400 DCA MASSA2 TAD (-400 /DEPLETE # OF PTS. TO READ. MASS20, TAD TEMP SPA SNA /TEST IF DONE. JMP MASS7 DCA TEMP /NO,READ NEXT BLOCK. ISZ MASSA3 JMP MASS3 MASS7, CLA DISPLAY
M76TF1, 0 /MOVE 7600 OF PS8 TO FIELD 1. CLA TAD M76LOK CMA DCA M76LOK TAD (7600 DCA TEMP1 TAD (PS7600 DCA TEM2 TAD (-200 DCA TEMP M76T1, CDF 0 JMP 2400 M76T2, JMP I M76TF1 M76LOK, 0 *2400 TAD I TEM2 DCA AUTO CDF 10 TAD I TEMP1 CDF 0 DCA I TEM2 TAD AUTO CDF 10 DCA I TEMP1 ISZ TEMP1 ISZ TEM2 ISZ TEMP JMP M76T1 CDF 0 JMP M76T2
MASS1, TAD I (7600 /TEST FOR OUTPUT COMMAND. CDF 0 SNA CLA JMP ERRX CDF 0 TAD (7600 /OUTPUT DATA. DCA AUTO TAD (MSFN-1 DCA AUTO2 TAD (-4 DCA TEMP TAD (MSFN DCA MASSA4 MASS8, CDF 10 /MOVE FILE NAME TO FIELD 0. TAD I AUTO CDF 0 DCA I AUTO2 ISZ TEMP JMP MASS8 TAD (201 /MAX. SIZE OF FILE =8. CIF 10 JMS I (7700 /CALL FILE CREATE. 3 MASSA4, MSFN /RETURN START BLOCK OF FILE. MASSA5, 0 /RETURN -LENGTH. JMP ERRX TAD BLOCK /TEST FOR CHANNEL 2. SZA CLA JMS M76TF1 /MOVE 7600 OF PS8 TO FIELD 0. TAD NPTS /CAL. # OF 128 RECORDS TO WRITE. AND (7600 CLL RAR DCA MASSA6 TAD NPTS AND (177 SZA CLA TAD (100 TAD MASSA6 /SET UP ARG 1 OF WRITE. TAD (4010 DCA MASSA6 TAD BLOCK /SET BUFFER START. SZA CLA TAD OFFSET TAD YONE IAC DCA MASSA7 TAD MASSA4 DCA MASSA8 /SET BLOCK ADD.
JMS I (7607 /WRITE DATA TO SYSTEM DEVICE. MASSA6, 0 MASSA7, 0 MASSA8, 0 JMP ERRX TAD BLOCK /TEST TO 7600 TO FIELD 1. SZA CLA JMS M76TF1 TAD MASSA6 /FIND # OF 256 BLOCKS. CLL RTR RTR RTR RAR AND (17 SZL IAC DCA MASSA9 CIF 10 IAC /CLOSE FILE ON SYS: DEVICE. JMS I (7700 4 MSFN /FILE NAME. MASSA9, 0 /#OF BLOCKS. JMP ERRX JMS M76TF1 /MOVE 7600 BACK TO FIELD 0. DISPLAY MSFN, 0 0 0 0 ERRX, TAD M76LOK /ERROR EXIT. SZA CLA JMS M76TF1 CIF 10 JMS I (7700 7 1 FLOATR, 0 /CONVERTS INTEGER IN AC TO F.P.#. DCA HW /AND LEAVES IT IN FAC. TAD P13 DCA EW DCA LW DCA AC1 /CLEAR OVERFLOW WORD. CDF 0 CALL FPNORM NOP /LEAVE ROOM FOR PAFFT AND DAFFT TO INSERT / A SWBA INSTRUCTION. JMP I FLOATR FPNORM, DNORM P13, 13 *2600 PS7600, 0 /PAGE FOR FIELD 1,7600.
*3000 SWAPBL, JMS SPINIT /SWAP THE TWO BUFFERS TAD AUTO DCA XIND SWLOOP, TAD I XIND DCA TEMP TAD I ZIND DCA I AUTO TAD TEMP DCA I YIND ISZ CNTR /MORE POINTS? JMP SWLOOP /YES DISPLAY /NO, EXIT SPINIT, 0 /SPECIAL INIT. ROUTINE INITAR /CALL NORMAL INIT THEN SET TAD BLOCK /AUTO FOR OTHER ARRAY SNA CLA TAD OFFSET TAD YONE DCA AUTO CDF 10 /AND EXIT WITH DF=1 JMP I SPINIT /11 POINT MODIFIED PARABOLIC FILTER SMOT11, INITAR TAD YIND /YIND IS INDEX FOR Y(I-X) TAD PL13 /INDEX FOR Y(I+X) DCA TEM2 CMA TAD CNTR TAD PL13 DCA CNTR /CNTR=-NPTS+11 NEWY, TAD MIN6 DCA TEMP /SET COEF LOOP COUNTER TAD COTAG DCA TEMP1 /INDEX FOR COEF'S DCA YMIN DCA YMIN+1 DCA YMIN+2 LOOP9, CDF 10 /LOOP OVER 6 COEF'S TAD I YIND TAD I TEM2 FLOAT /GET Y(I-X)+Y(I+X) ENTR FMPY I TEMP1 FADD YMIN /FORM WEIGHTED SUM FPUT YMIN FADD HALF /FOR ROUND OFF AFTER LAST MULT. FEXT
SET3 /INCR. COEF. INDEX BY 3 TAD TEMP1 DCA TEMP1 CMA /DECR (I+X) TAD TEM2 DCA TEM2 ISZ TEMP /ANOTHER COEFF? JMP LOOP9 /YES FIXT /NO, FIX RESULT CDF 10 ISZ TEM2 DCA I TEM2 /STORE AS Y(I) TAD YIND /RESET (I-X) TAD MNN5 DCA YIND TAD TEM2 /RESET (I+X) TAD P6 DCA TEM2 ISZ CNTR /MORE PTS? JMP NEWY /YES DISPLAY PL13, 13 P6, 6 MNN5, -5 MIN6, -6 COTAG, .+1 7773;4121;7270;7773;2540;2031;7774;3077;0501 7776;2445;2141;7776;3102;2657;7775;3244;5214
ADDTWO, JMS SPINIT /ADD DISP. CHAN TO OTHER TAD I YIND TAD I AUTO CLL IAC RAR DCA I ZIND /RESULTS IN DISP. CHAN. ISZ CNTR JMP ADDTWO+1 DISPLAY CURSR, TAD MODE SMA CLA /CURSORS ON SCOPE? STA /NO, PUT THEM UP DCA MODE DISPLAY /GENERAL PURPOSE CLOCK DELAY SUBR. /AC=CLOCK COUNT, PC+1=CONTROL REGR. SETTING+1 /DISPLAY OF XDIS, YDIS IS REFRESHED WHILE WAITING. SETCLK, 0 CLAB /SET COUNT BFR FROM AC STA /CLR CONTROL REG CLZE CLSA /AND FLAGS TAD I SETCLK /LOAD CONTROL REG, START CLOCK CLDE CLSK /OVERFLO? SKP /NO, WAIT FOR IT JMP .+3 /YES, EXIT AFTER CLEARING CLOCK REG'S CALL DISMOV /REFRESH DISPLAY JMP .-4 STA CLZE /CLR REG TO STOP CLOCK CLA CLL CAF /CLR FLAGS! ISZ SETCLK JMP I SETCLK /OUTPUT FAC THEN PRINT A COMMA FLTCM, 0 FLOUT /AC=NO. OF DECIMAL PLACES TAD KOMA CALL OUT JMP I FLTCM KOMA, 254
*3200 /CALLED TO COMPUTE SLOPE AND RELEVANT CORE ADDRESSES /FROM CURSOR COORDINATES STORED IN TABLE AT TPNT TO TPNT+3 /ON EXIT, TPNT+3=DELTA Y, TPNT+2=DELTA X, YMIN=TPNT+1(Y LEFT), /XMIN=PT SPAN OF CURSORS, CNTR=-XMIN, YSCLFC=SLOPE(Y UNITS/PT), /YIND & ZIND=ADDR. CORRESPONDING TO LEFT X, AND FAC=FIXED /VALUE OF NO. PTS TO LEFT X COORDINATE. SETSTR, 0 INITAR TAD TPNT+1 /GET LEFT Y CIA TAD TPNT+3 /RIGHT Y DCA TPNT+3 /KEEP DELTA Y TAD TPNT /GET LEFT X CIA TAD TPNT+2 /RIGHT X DCA TPNT+2 /KEEP DELTA X CALL XSET /GET X INCREMENT ENTR FGET TPNT+1 /GET LEFT Y FLOT FPUT YMIN FGET TPNT+2 /GET DELTA X FLOT FDIV XSCLFC /SCALE IT FPUT XMIN /IS # OF PTS FADD HALF FEXT FIXT SPA SNA /INSURE CNTR<0! JMP ERRD CIA DCA CNTR /IS # PTS IN RANGE ENTR FGET TPNT+3 /GET DELTA Y FLOT FDIV XMIN FPUT YSCLFC /=Y DIS UNITS /PT FGET TPNT /LEFT X FLOT FDIV XSCLFC FADD HALF FEXT /FAC=#PTS TO LEFT X FIXT TAD YIND DCA YIND /SETS INDEX TAD YIND DCA ZIND DCA MODE JMP I SETSTR ERRD, HEDIT1 /BAD X PTS! HD26 DISPLAY
STRIPR, JMS SETSTR HEDIT1 /STRIP PEAK? HD25 ASK SZA CLA JMP STRBS STRPK, JMS YSTEP /GET NEW Y DCA I YIND ISZ CNTR JMP STRPK DISPLAY STRBS, HEDIT2 /FULL BASE STRIP? ASK SZA CLA JMP .+3 /NO INITAR CALL EXTRP REMOV, JMS YSTEP CIA TAD I YIND /SUB. FROM Y DCA I ZIND ISZ CNTR JMP REMOV DISPLAY EXTRP, EXTRAP TPNT, 0 /TABLE OF LAST ADC COORD'S 0 0 0 YSTEP, 0 /COMPUTE Y VALUE ON LINE BETWEEN CURSORS CDF 0 ENTR FGET YMIN /GET CURRENT Y VALUE ON LINE FADD YSCLFC /ADD INCR./PT FPUT YMIN /KEEP IT FADD HALF FEXT FIXT /LEAVE INTEGER IN AC CDF 10 /EXIT WITH DF=1 JMP I YSTEP
/SUBR. PERFORMS ADC'S AND SETS DAC'S FOR CURSORS. /COORDINATES STORED IN TPNT-TPNT+3 W/ VALUES=ADC-AYL. DISPTS, 0 SETM2 DCA TEM3 TAD DPTR /SET UP STORAGE TABLE DCA AUTO DCA TEM2 /SET 0 AS FIRST CHANNEL NXPT, TAD TEM2 CALL ADCON /MAKE ADC ON CHAN'S 0 THEN 2 DCA XDIS TAD XDIS JMS CRSAM TAD TEM2 CALL ADCON /ADC ON CHAN'S 1 THEN 3 DCA YDIS TAD YDIS JMS CRSAM TAD DCT /SET DELAY COUNTER DCA MCTR CALL DISMOV /REFRESH DISPLAY ISZ MCTR JMP .-2 ISZ TEM3 /NEED 2ND PT THIS TIME? JMP NXPT /YES JMP I DISPTS /GOT IT; EXIT DCT, -100 DPTR, TPNT-1 /STORAGE ADDR. EXTRAP, 0 /EXTRAPOLATE Y VALUE TO LEFT EXTREME ENTR FGET HW /IS INTEGER NO. OF PTS TO LEFT X FLOT FMPY YSCLFC /MULT. BY SLOPE (DELTA Y/PT) NEGATE FADD YMIN /SUBTRACT FROM LEFT Y FPUT YMIN /KEEP EXTRAP'D VALUE HERE FEXT FIXT DCA MIN /AND HERE AS INTEGER JMP I EXTRAP
*3400 INTEG, JMS RDY CALL CURSET STA TAD XSCLFC DCA XSCLFC HEDIT1 /SCAN INT'L? HD15 ASK SZA CLA JMP PTINT /NO, BETWEEN CURSORS CALL SETLY /YES, GET EXTRAP'D LEFT Y ENTR FGET INTEG+1 /GET A LARGE NEG # TO START FPUT FTEM1 FGET CMPINT+3 /GET LRG POS. # FPUT FTEM2 FEXT JMS RDY /PREPARE TO SCAN DATA /THIS LOOP COMPUTES TOTAL INTEGRAL (SUM) /TO FIND A SCALE DOWN FACTOR. FNTOT, JMS SCASM /STRIP BASELINE AND ADD ADJ. Y'S TAD HW SMA CLA /IS CURRENT SUM<CURRENT MIN? JMP PT1 /NO ENTR /YES, SO KEEP IT AS MIN. FGET TEMFP FPUT FTEM2 FEXT PT1, ENTR /CHECK MAX VALUE FGET TEMFP FSUB FTEM1 FEXT TAD HW SPA CLA /IS CURRENT SUM>CURRENT MAX? JMP PT2 /NO ENTR FGET TEMFP FPUT FTEM1 FEXT PT2, ISZ CNTR /MORE POINTS? JMP FNTOT /YES
ENTR FGET FTEM1 /FIND INTEGRAL RANGE. FSUB FTEM2 FPUT FTEM1 FGET YRNG /COMPUTE SCALE-DOWN FACTOR FLOT FDIV FTEM1 FPUT FTEM1 FMPY FTEM2 /SCALE MIN VALUE FPUT FTEM2 FGET FTEM1 FMPY XSCLFC /GET NEW MULT'R INCLUDING SCL-DN FPUT XSCLFC FEXT JMS RDY /THIS LOOP COMPUTES AND STORES /SCALED DOWN INTEGRAL VALUE AT EACH POINT, CMPINT, JMS SCASM /GET INTEGRAL-BASELINE FIXT CDF 10 DCA I ZIND ISZ CNTR /MORE POINTS? JMP CMPINT /YES TAD HW /PUT N-1 VALUE INTO NTH DCA I ZIND CDF 0 HEDIT1 /Y MULT'D BY' HD5+6 DCA EFLG ENTR FGET XSCLFC FDIV HALF OUTPUT FEXT DISPLAY /RETURN TO DISPLAY CURSET, SETSTR SETLY, EXTRAP PTINT, JMS SCASM /INTEGRATES BETWEEN CURSORS ISZ CNTR /AND PRINTS AREA; NO CHANGE JMP .-2 /IN DATA ARRAY HEDIT2 /AREA= DCA EFLG ENTR FGET TEMFP OUTPUT FEXT DISPLAY TPNT+1
RDY, 0 INITAR ISZ CNTR FLOAT ENTR FPUT TEMFP /CLEAR TEMFP FGET MIN /SET LEFT Y FLOT FPUT YMIN FEXT JMP I RDY CLRR, 0 /CLEAR Y ARRAY INITAR CDF 10 DCA I YIND ISZ CNTR JMP .-2 CDF 0 JMP I CLRR SCASM, 0 CDF 10 TAD I YIND TAD I YIND FLOAT ENTR FSUB YMIN /SUBTRACT PIVOT VALUE FPUT XMIN /KEEP THIS FGET YSCLFC /INCR. PIVOT VALUE FADD YMIN FPUT YMIN /KEEP FOR NEXT POINT NEGATE /SUBTRACT FROM PT SUM FADD XMIN /FAC=Y(I+1)+Y(I)-P(I+1)-P(I) FMPY XSCLFC /SCALE DOWN FADD TEMFP FPUT TEMFP FSUB FTEM2 /SUBTRACT MIN VALUE FEXT CMA /RESET Y POINTER TAD YIND DCA YIND JMP I SCASM
*3600 CRSAM, 0 /SUBR SETS UP CURSOR TABLE STORAGE. TAD MLIM /SUBTRACT LIM SPA /RESULT<0? CLA /YES, SET IT=0 DCA I AUTO /KEEP RESULT ISZ TEM2 /INCR. CHAN JMP I CRSAM MLIM, -AYL /ASSUME YLIM=XLIM! INITIZ, 0 /SETS UP A COUNTER=-NPTS, INITIALIZES CLA CLL /X,Y, & Z ARRAY STARTING LOC'NS. TAD NPTS CIA DCA CNTR TAD BLOCK SZA CLA /BUFFER 1? TAD OFFSET /NO, ADD ARRAY OFFSET TAD YONE DCA YIND TAD NPTS /X ARRAY BEGINS AFTER Y'S TAD YIND DCA XIND TAD YIND DCA ZIND /AUXILIARY AUTO REG. FOR Y ARRAY DCA TXSM /CLEAR X DISPLAY SUM DCA TXSM+1 JMP I INITIZ
DERIV, INITAR /FORMS 5TH PT. DIFFERENCES TAD PLS5 TAD YIND DCA YIND TAD PLS5 TAD CNTR DCA CNTR TAD ZIND DCA XIND CDF 10 DRLOP1, TAD I ZIND /PUT Y(I+5)-Y(I)+SHF INTO Y(I) CIA TAD I YIND TAD SHF /ADD OFFSET FOR CENTERED DISPLAY DCA I XIND ISZ CNTR JMP DRLOP1 TAD XIND DCA TEMP TAD I TEMP /PUT Y(N-5) INTO Y(N-4) AND Y(N-3) DCA I XIND TAD I TEMP DCA I XIND TAD XIND /SET UP TO SHIFT ARRAY UP BY 3 DCA TEMP /SUCH THAT FINAL ARRAY HAS VALUES STL IAC RAL /Y(I)=Y(I+2)-Y(I-2)+SHF TAD TEMP /WHERE Y(1)=Y(2)=Y(3) AND DCA TEMP1 /Y(N-2)=Y(N-1)=Y(N) CLL STA RTL TAD NPTS CIA DCA CNTR DRLOP2, TAD I TEMP /PUT Y(I) INTO Y(I+3) DCA I TEMP1 STA TAD TEMP DCA TEMP STA TAD TEMP1 DCA TEMP1 ISZ CNTR JMP DRLOP2 ISZ TEMP /PUT Y(1) INTO Y(2) & Y(3) NOP /PROTECT AGAINST SKIP!! TAD I TEMP DCA I TEMP1 TAD I TEMP1 ISZ TEMP DCA I TEMP DISPLAY PLS5, 5 SHF, 764
SQEEZE, TAD NPTS /COMPRESS ONE OR BOTH BUFFERS CLL RAR /BY AVERAGING ADJACENT PTS. DCA NPTS STA TAD BLOCK SPA SNA CLA /BLOCK=2 FOR DOUBLE SQUEEZE? JMP .+3 /NO DCA BLOCK /SQUEEZE BUFF. 1 FIRST STA DCA TEMP /=-1 FOR DOUBLE SQUEEZE, 0 FOR SINGLE INITAR CDF 10 SQLP, TAD I YIND TAD I YIND CLL IAC RAR DCA I ZIND ISZ CNTR JMP SQLP ISZ TEMP /FINISHED? DISPLAY /YES OR IS SINGLE SQUEEZE IAC /NO, DO BUFF. 2 DCA BLOCK JMP SQLP-2 *3745 PS8X, TAD M76LOK /TEST FOR PS8 PAGE 7600/1 IN FIELD 0. SZA CLA JMS M76TF1 CDF CIF 0 IOF JMP I .+1 7600
*4000 /THIS IS THE AVERAGER INPUT ROUTINE ANINPT, HEDIT1 /CHANNEL= HD7 GETNO FIXT DCA MCHAN AGO, HEDIT1 /NO. POINTS= HD2 GETNO FIXT DCA TEM3 TAD TEM3 CLL RTR DCA NPTS /TEMP'LY SET TO # PTS/4 CALL XSET /GET 4*X DISP. INCREMENT TAD TEM3 DCA NPTS HEDIT1 /SEC/SCAN= HD8 ENTR FGET NPTS FLOT FPUT XMIN READ FDIV XMIN FPUT XMIN /=TIME PER POINT (SEC)::=M*2**X FEXT TAD PK15 /MIN TIME ALLOWED=2**-13 SEC/PT TAD EW /OR 122 USEC SPA SNA /X<-12? JMP AGO /YES, TOO FAST! REENTER. DCA EW STL IAC RTR DCA HW /SET FAC=-0.5*2**(X+13) FIXT /IF X+13>11, TRUNCATES FAC TO -0.5*2**11 DCA AVSUM TAD AVSUM FLOAT STA TAD EW DCA EXPFC /KEEP 2'S EXP FOR SCALING LATER
ENTR /COMPUTE DEAD TIME LOOP COUNTER, CLTM FPUT YMIN /-# SAMPLES PER PT FGET EXPFC FLOT FMPY SCNCY /# CYCLE PERLOOP IN SHRGT FADD NCY /OTHER OVERHEAD FPUT FTEM2 FGET XMIN /# SECS PER PT FDIV CYCTM /FAC=TOTAL # CY'S NEEDED PER PT/3 FSUB FTEM2 /OVERHEAD CY'S PER PT/3 FDIV YMIN /DIV BY -# SAMPLES/PT=-#CY'S/SAMPLE FADD FUGCY /OVERHEAD CY'S PER SAMPLE/3 IN LOOP 'ADDUP' FMPY HALF /DIV BY TWO TO GET 12 BIT UNSIGNED RESULT FEXT /FAC=-# DELAY CY'S NEEDED PER SAMPLE/6 FIXT SMA /RESULT MUST BE NEG. JMP AGO /TOO FAST!! CLL RAL /TIMES 2 FOR 12 BIT UNSIGNED RESULT DCA CLTM TAD LW /ROUNDOFF? SPA CLA ISZ CLTM /YES, SET BIT 11 HEDIT2 /DELAY TIME(SEC)= ENTR READ FMPY I HUNDRD FEXT FIXT CIA SMA /DELAY>10 MSEC? CLA /NO, DELAY = 0 DCA DLATM /IS -100*SEC AS ENTERED HEDIT2 /NO. SCANS= GETNO FIXT CIA DCA PCTR DCA RUN CRLFD INITAR TAD NPTS CLL CMA RAL DCA TEMP CDF 10 DCA I YIND ISZ TEMP /CLEAR THAT ARRAY. JMP .-2 CAF DCA MCTR JMP I ESRNMR /GO WAIT FOR EVENT PK15, 15 ESRNMR, LOOKER
CURLS, CRLFD /LIST CURSOR VALUES: TAD FIVE DCA DP /4 DIGIT INTEGERS ISZ EFLG TAD CLPT DCA AUTO TAD NEG4 DCA TEMP1 CUR1, TAD I AUTO /PRINT AS X1,Y1,X2,Y2 FLOAT FLOUT ISZ TEMP1 JMP CUR1 DISPLAY CLPT, TPNT-1 /SPECIAL ROUTINE TO RESET CALSET, HEDIT1 /MACHINE CYCLE TIME FOR HDSP /ACCURATE CALIBRATION. ENTR READ FMPY FK3 FPUT CYCTM /3*CYCLE TIME FEXT CRLFD DISPLAY /EXIT /NEXT 4 CONSTANTS SET TIMING FOR AVERAGER CYCTM, 7756;3614;5704 /IS 3* MACHINE CYCLE TIME FUGCY, 3;3525;1770 /IS # CYCLES IN LOOP 'ADDUP'/3 NCY, 4;3600;0 /IS # OVERHEAD CYCLES PER PT/3 SCNCY, 3;2125;1770 /# CYCLES IN SCLRT LOOP/3
*4200 STAVR, CLA CLL TAD XLIM DILX DCA XDIS TAD DLATM SNA /NEED ANY DELAY? JMP .+3 /NO CALL CLKSET 5201 /TICKS AT 100 CPS TAD MCHAN ADLM INITAR CDF 10 GOSUM, DIXY TAD AVSUM /THIS ROUTINE TAKES ADC DCA LNCTR /SAMPLES, -AVSUM IN #, IN A TIME DCA HIORD /PER SAMPLE VARIED BY CLTM DCA LOORD /BASE TIME PER SAMPLE=23 CYCLES ADDUP, ADST /OVERHEAD/PT=49+EXPFC*13 CYCLES TAD CLTM DCA TMCTR ISZ TMCTR JMP .-1 /ADD SOME TIME BETWEEN SAMPLES ADRB DILY TAD K1000 /MAKE ALL RESULTS POS. CLL TAD LOORD /STORED AS DOUBLE PREC. INTEGER DCA LOORD RAL /LOORD OVERFLOW SETS LINK TAD HIORD DCA HIORD ISZ LNCTR JMP ADDUP TAD EXPFC SZA /NEED TO SHIFT RIGHT? JMS SHRGT /YES, DO IT CLA IAC TAD XDIS DILX DCA XDIS TAD LOORD
CLL TAD I YIND /ADD TO CURRENT SCAN SUM DCA I ZIND RAL TAD I YIND DCA I ZIND ISZ CNTR JMP GOSUM CDF 0 ISZ RUN /IS NO OF SCANS TAKEN ISZ PCTR /INCR. COUNTER; MORE SCANS? JMP I LOOK /YES. WAIT FOR NEXT EVENT AVDON, INITAR /NO, WE'RE FINISHED. ENTR /PREPARE TO NORMALIZE THE 24 FGET RUN /BIT Y STORAGE DOWN TO 12 BITS FLOT FPUT TEMFP /BY DIVIDING BY NO. OF SCANS FEXT DIVD, CDF 10 TAD I YIND /FLOAT DUBL PREC INTEGER DCA LW TAD I YIND DCA HW CDF 0 TAD P27 DCA EW ENTR FNOR FDIV TEMFP /DIVIDE BY # SCANS TAKEN FADD HALF FEXT FIXT CDF 10 DCA I ZIND /SAVE SINGLE PREC RESULT ISZ CNTR JMP DIVD DISPLAY LOOK, LOOKER
SHRGT, 0 CIA CLL DCA LNCTR SCLRT, TAD HIORD CLL RAR DCA HIORD TAD LOORD RAR DCA LOORD ISZ LNCTR JMP SCLRT JMP I SHRGT /CALLED TO REPORT ON PEAK RESULTS REPRT, HEDIT1 /X1,XMPY,GATE:= HD4 ENTR READ FPUT YSCLFC READ FPUT XSCLFC READ FEXT FIXT CIA /IS DETECTION SENSITIVITY CALL PICPK /GET PEAKS TAD MIN CIA TAD MAX DCA MAX /IS LARGEST PK HGT CORRECTED FOR BASELINE HEDIT1 /MIN,X,MAX,X,A,I,%A: HDRP CALL IOASK /SET UP OUTPUT DEVICE INITAR TAD RUN CIA DCA PCTR /SET PK CNTR ISZ XIND /POINT TO LDG MIN X VALUE CDF 10 TAD I XIND DCA TEMP TAD TEMP TAD YIND DCA YIND TAD TEMP TAD CNTR DCA CNTR JMP I .+1 REP1 PICPK, PKPIC
*4400 LOOKER, KIE CLSA STA CLZE TAD K14 CLDE /ENABLE SCHMIDT TRIGGER EVENT 4 ION STLOOP, KSF /WANT TO CHANGE SCALE OR STOP? JMP LOOPIT /NO CLSA /CLR FLAG KRB TAD MD SNA /'D' TO DECREASE SIZE? ISZ MCTR NOP IAC SNA /'C' TO CHECK DISPLAY? IOF /YES, TURN INTERRUPT OFF TAD MM SZA /'M' TO INCREASE SIZE? JMP MORE /NO STA TAD MCTR DCA MCTR MORE, TAD MS SNA /'S' FOR STOP? JMP ENDCHK /YES TAD MPE SNA CLA /'P' TO PROCEED? ION /YES, TURN INTERRUPT ON LOOPIT, INITAR CDF 10 TAD I YIND /LOW ORDER DCA LOORD TAD I YIND /HIGH ORDER CDF 0 DCA HIORD SET6 TAD YIND /GET EVERY 4TH VALUE DCA YIND TAD MCTR SMA SZA /MCTR>0, I.E. NEED DIVIDE? CALL ISHRT SMA /MAGNIFY IT? JMP DSPIT /DO NEITHER DCA LNCTR /YES TAD LOORD /VALUE IS ACTUALLY SINGLE PREC. CLL RAL /MULT. BY 2 ISZ LNCTR JMP .-2 /MULT. AGAIN SKP
DSPIT, TAD LOORD TAD YLIM DCA YDIS CALL DISMOV /MOVE POINT ON SCOPE CALL ADINX /GET & INCR. X COORD SET4 TAD CNTR SMA /MORE PTS? JMP STLOOP /NO DCA CNTR /YES JMP LOOPIT+1 ENDCHK, IOF HEDIT1 /NO. OF SCANS= HD9 TAD FIVE DCA DP ISZ EFLG TAD RUN FLOAT FLOUT CRLFD JMP I .+1 AVDON ISHRT, SHRGT K14, 14+1 MD, -304 MM, 303-315 MS, 315-323 MPE, 323-320
XFLIP, INITAR /INVERT X AXIS TAD YIND /Y(I)=Y(NPTS+1-I) TAD NPTS DCA TEMP TAD CNTR STL RAR DCA CNTR CDF 10 FLX, TAD I YIND DCA TEMP1 TAD I TEMP DCA I ZIND TAD TEMP1 DCA I TEMP STA TAD TEMP DCA TEMP ISZ CNTR JMP FLX DISPLAY MULP, HEDIT1 /MIN= HD5 GETNO FIXT DCA MIN HEDIT1 /MPY= HD5+6 ENTR READ FPUT YSCLFC FEXT JMP I .+1 /EXIT TO SCALING ROUTINE SKL-1 HDRP, TEXT /^MIN,X,MAX,X,A,I,%A:^/
/CALLED FROM REPRT TO GET AREAS & PRINT OUTPUT *4600 REP1, DCA FTEM2 DCA FTEM2+1 DCA FTEM2+2 SWL1, CDF 10 SET2 TAD XIND DCA ZIND /POINT TO AREA DCA FTEM1 DCA FTEM1+1 DCA FTEM1+2 SET6 TAD XIND DCA AUTO /GET TRAILING MIN X VALUE TAD I AUTO CIA TAD NPTS DCA TEMP INL1, TAD MIN /LOOP TO GET AREA BETWEEN MINIMA CIA /SUBTRACT MIN FROM Y TAD I YIND FLOAT ENTR FADD FTEM1 FPUT FTEM1 FEXT CDF 10 ISZ CNTR NOP TAD CNTR TAD TEMP SPA CLA /CNTR=TRAILING MIN VALUE? JMP INL1 /NO TAD FTEM1 /STORE AREA IN ARRAY DCA I ZIND TAD FTEM1+1 DCA I ZIND TAD FTEM1+2 DCA I ZIND CDF 0 ENTR FADD FTEM2 /ADD TO TOTAL AREA FPUT FTEM2 FEXT TAD PK7 TAD XIND DCA XIND ISZ PCTR /ANOTHER PK? JMP SWL1 /YES
INITAR /NO, SET UP TO OUTPUT TAD RUN CIA DCA PCTR ENTR /GET HGT SCALE FACTOR FGET MAX FLOT FDIV I HUNDRD FPUT TEMFP FEXT OLP1, CRLFD SETM2 DCA MCTR SET6 DCA DP ISZ EFLG SETM2 DCA TEM2 OLP2, CDF 10 /LOOP TO OUTPUT RAW MIN, X VALUE, MAX, X VALUE TAD I XIND FLOAT ISZ TEM2 JMP OLP3 ENTR FMPY XSCLFC FADD YSCLFC /ADD X1 FEXT SET2 FOUTCM ISZ MCTR JMP OLP2-2 JMP OLP4 OLP3, FOUTCM /AS INTEGERS JMP OLP2 OLP4, CDF 10 /LOAD AREA INTO FAC TAD I XIND DCA EW TAD I XIND DCA HW TAD I XIND DCA LW DCA EFLG /E FORMAT CDF 0 ENTR FPUT FTEM1 FMPY XSCLFC FEXT FOUTCM /RAW AREA
TAD MK5 TAD XIND DCA AUTO /PNTR TO HGT CDF 10 TAD MIN /SUBTRACT BASELINE CIA TAD I AUTO FLOAT ENTR FDIV TEMFP /NORMALIZE IT FEXT TAD PK10 /8 DIGITS DCA DP ISZ EFLG SET2 /2 DECIMAL PLACES FOUTCM ENTR FGET FTEM1 /GET RAW AREA BACK FDIV FTEM2 /NORMALIZE IT FMPY I HUNDRD FEXT SET4 FOUTCM /4 DECIMAL PLACES ISZ PCTR /ANOTHER PK? JMP OLP1 /YES DISPLAY /NO, BACK TO DISPLAY PK10, 12 MK5, -5 PK7, 7
*5000 /ROUTINE TO DO SIMPLE AMPLITUDE PEAK DETECTION AND /STORE RESULTS IN ARRAY JUST AFTER DATA ARRAY PKPIC, 0 DCA AVSUM /SAVE AC AS GATE (-N) DCA RUN /CLR FLAGS, CNTRS INITAR INIPK, CLA IAC /START HERE AFTER A PK IS FOUND DCA PS1 DCA PS2 DCA S1C DCA S2C DCA MAX STL RTR DCA MIN CDF 10 SERLP, TAD I YIND /GET DATUM DCA TEMP TAD MIN CIA TAD TEMP SMA /Y<MIN? JMP SERL2 /NO, CHECK FOR MAX TAD MIN /YES, KEEP AS NEW MIN DCA MIN TAD CNTR /SAVE CNTR AS X VALUE DCA MNT ISZ S1C /BUMP MIN CNT TAD S1C TAD AVSUM SPA CLA /HAD A GATE'S WORTH OF MINS? JMP SERND /NO ISZ PS1 /YES, SET PS1 DCA S2C TAD PS2 SNA CLA /HAD MAX AFTER MIN PRECEDING? JMP SERND /NO JMS STPEK /YES, HAVE FOUND PEAK. SAVE VALUES ISZ RUN /BUMP PK CNT ISZ CNTR /LAST PT? JMP INIPK /NO, CLR FLAGS, ETC. JMP SERND+2 /YES, EXIT SERL2, TAD MIN CIA TAD MAX SMA CLA /Y>MAX? JMP SERND /NO TAD TEMP /YES, SAVE IT DCA MAX TAD CNTR /KEEP AS X VALUE DCA MXT ISZ S2C /BUMP MAX CNT
TAD S2C TAD AVSUM SPA CLA /HAD A GATE'S WORTH? JMP SERND /NO DCA S1C /YES TAD PS1 SNA CLA /HAD PRECEDING MIN? JMP SERND-2 /NO ISZ PS2 /YES, SET PS2 DCA PS1 TAD MIN /SAVE LEADING MIN DCA KMIN TAD MNT /AND X VALUE DCA KMNT TAD MAX /RESET MIN DCA MIN SERND, ISZ CNTR /MORE PTS? JMP SERLP /YES TAD MNT /SET TRAILING MIN TIME DCA KMNT JMS STPEK /NO, SAVE END RUN MIN CDF 0 CALL YSCAN /GET MIN & MAX IN DATA JMP I PKPIC YSCAN, SCANY /BUFFER PK VALUES IN ARRAY AT END OF DATA STPEK, 0 TAD KMIN DCA I XIND TAD KMNT /ADD NPTS TO X VALUES TO GET PT CNT TAD NPTS DCA I XIND TAD MAX DCA I XIND TAD MXT TAD NPTS DCA I XIND SET3 /RESET PNTR TO LEAVE HOLE FOR PK AREA TAD XIND DCA XIND JMP I STPEK
HD1, TEXT /^DAQUAN OS-8 !^TITLE:/ TEXT /^OK, HIT ME!^/ HD2, TEXT /^NO. POINTS= / TEXT /PTS. TO SKIP=/ HD3, TEXT /LINE PLOT?/ HD4, TEXT /X1,XMPY,GATE:/ HD5, TEXT /^MIN=/ TEXT /MAX=/ TEXT /MPY=/ HD6, TEXT /PLOTTER OFF?/ HD7, TEXT /CHANNEL= / HD8, TEXT \SEC/SCAN=\ TEXT /DELAY(SEC)=/ HD9, TEXT /NO. SCANS= / HD15, TEXT /SCAN INT'L?/ TEXT /AREA=/ HD25, TEXT /STRIP PEAK?/ TEXT /FULL BASE?/ HD26, TEXT /BAD X PTS!^/ DIHD1, TEXT /^Y RANGE & MIN:/ HDSP, TEXT /MCT(SEC)=/
/THE FOLLOWING ARE A SET OF OVERLAYS /FOR FLOATING POINT PKGS. #1,2, & 4 /WHICH ALLOWS INPUT FROM THE HIGH /OR LOW SPEED READERS. SET IOSWT=1 TO USE /THE HIGH SPEED READER OR PUNCH. /HERE ALSO IS AN OVERLAY WHICH ALLOWS /BLANKS TO FOLLOW A + OR - SIGN ON INPUT. /PLUS SIGNS ARE DELETED FROM OUTPUT. *54 IOSWT, 0 0 *6146 JMS I .+2 JMP .+2 SELECT *6345 INPUT, 0 /THIS IS THE INPUT OVERLAY TAD IOSWT /CHECK I/O SWITCH CLL RAR SZL CLA /SETS LINK FOR HI SPD RDR. JMP .+3 /USE HI SPD RDR. RDTTY SKP CALL HSRI CHECK, DCA 53 TAD 53 SNA JMP INPUT+1 TAD MRBOUT SZA CLA JMP GOOD TAD XCPT /PRINT '!' IF RUBOUT. CALL OUTPT /NO JMP I RESTRT GOOD, TAD 53 JMP I INPUT OUTPT, SELECT RESTRT, 6201 HSRI, HSR XCPT, 241 MRBOUT, -377 *7242 READER *7245 INTFLT HEDER2 $



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