*20 ///PROGRAM RESPLUK /LODSYM NOT NEEDED. /CALCULATES & TYPES OUT RESPIRATORY /VALUES FROM DATA ON UNIT2 PREPARED BY /PROGRAM COLLECT. /REQUIRES VAL\V + VAL AT ADC0 FROM /PROG RESPCAL. /WILL STORE VALUES IN PBLOCK OF /NAMED FILE ON UNIT 1. DATA TYPE IS 45(10). /TO OMIT STORAGE, ANSWER "INDEX:" WITH /A CR ONLY. /RESPVAL MEAN VARIANCE / /TVOL P104 P105 /MIFR P106 P107 /MEFR P110 P111 /MTPP P112 P113 /CMPL P114 P115 /TEMP P116 P117 /WORK P120 P121 /RZST P122 P123 /RATE P124 ---- /POWR P126 ---- /MVOL P130 ---- /FRC P132 ---- /MOD P134 ---- /OMIT TYPOUT FOR SNS0=1 /TTY: NO CR NEEDED AFTER SINGLE CHARACTER / ENTRIES. / D=DEPOSIT / CR=FORWARD 1 FRAME (1/2 SCREEN) / C=BEGINNING INITIALIZATION / I=REINITILIZATION TO SKIP OVER BAD DATA SEGMENT / B=BACKUP 1 FRAME / F=RESTART TAPE / R=ELIMINATE LAST ENTRY / E=RESTART PROGRAM / P=PROCESS ALL ENTRIES TO DATE /CORRECT SEQUENCE FOR OPERATION: /ADVANCE (CR) AS NEEDED. /POSITION CURSOR 0 AT BEGINNING OF DATA TO BE ANALYZED. INITIALIZE ANALYSIS (C). /THEN FIND WANTED WAVEFORM. ALLIGN ALL CURSORS AND DEPOSIT (D). /REPEAT FOR EACH WAVEFORM. AFTER LAST WAVEFORM, POSITION CURSOR 0 AT END OF /DATA SEQENCE AND PROCESS (P). /TO ELIMINATE A BAD SEGMENT OF DATA, ALLIGN CURSOR 0 TO PLACE WHERE /ANALYSIS IS TO BEGIN AGAIN AND REINITIALIZE (I). /THEN CONTINUE ANALYSIS IN SAME MANNER AS AFTER BEGINNING INITIALIZATION (C). /FOR RATE CALCULATION, REINITIALIZATION (I) DOES THE FOLLOWING: THE TIME FROM /THE LAST INITIALIZATION (C OR I) TO THE LAST DEPOSITED WAVEFORM (D) IS /DETERMINED AND STORED AWAY. THEN WHEN PROCESS (P) IS REQUESTED, /THESE STORED TIME PERIODS ARE ADDED TO THE LAST TIME /PERIOD (LAST C OR I TO P) TO GIVE THE TOTAL ANALYSIS TIME. /NOTE: /FOR REINITIALIZATION (I), CURSOR 0 DOES NOT HAVE TO BE ON A WAVEFORM. /LIKEWISE, WHEN C OR P ARE STRUCK, CURSOR 0 NEED NOT REFERENCE A WAVEFORM. /CURSORS ALSO DO NOT NEED TO BE ALIGNED ON A WAVEFORM TO ELIMINATE IT (R). /FOR ELIMINATION THE LAST DEPOSITED VALUES ARE HELD IN BUFFERS AND WHEN R /IS STRUCK THEY ARE SUBTRACTED FROM THE RUNNING SUMS. /POTS & SWITCHES: / RSW: VERTICAL SCALING, BOTH CURVES / POT0: VAL 3-1 / POT1: VAL 3-2 / VAL 4-2 CU (SNS3=1) / POT2: VAL 3-3 / POT3: VAL 3-4 / POT4: VAL 4-3 / POT5: BSLN VERT POS, CURVE 3 (SNS2=0) / POT6: SNS2=0 - VERT POSTION, CURVE 3 / =1 - BSLN POSITION, CURVE 3 / POT7: SNS3=0 - VERT POSITION, CURVE 4 / =1 - FUDGED VAL 4-2 / / /SENSE SWITCHES / SNS0=1 SUPPRESS TYPE OUT OF CALC VALUES / SNS2=0 DISPLAY BASELINE ON CURVE 3 / POT5 CONTROLS BSLN VERT POS / (NOTE: BSLN HAS NO PURPOSE OTHER / THAN VISUAL REFERENCE) / =1 SUPPRESS BSLN DISPLAY ON CURVE 3 / POT5 IS INACTIVE / SNS3=0 NO BSLN DIPLAY CURVE 4 / NO VAL 4-2 CURSOR / POT6 CONTROLS CURVE 3 VERT POS / POT7 CONTROLS CURVE 4 VERT POS / =1 DISPLAY BASELINE ON CURVE 4 / POT6 CONTROLS BSLN VERT POS / DISPLAY VAL 4-2 CURSOR / POT1 CONTROLS POS OF VERT 4-2 CU / POT7 CONTROLS POS OF HORIZ 4-2 CU / (VAL 4-2 = DIFFERENCE BETWEEN / BSLN CU AND 4-2 HORIZ CU) /SUM & SUMSQD BUFFER IN QN7,DF2. /TYPOUT BUFFER & CODING IN QN6,DF2. /NUMBER OF DEPOSITED SEGMENTS IS DISPLAYED. LMODE SEGMNT 5 *20 //COMMAND CONTROL SEQUENCE. BEG, OPR 2 /STOP ALL USERS 0 JMP SETREG /STD TAPE JMP GETHED /START BLOCK+FRC JMP CLRBUF /CLEAR BUFFERS JMP STRDIS /START DISPLAY JMP SETMRE /SETUP MRE LOOP MRE, JMP GET3BN /BRING IN 3 OF 6 BN SET I 7 3777 JMP STRIP /3BN FROM DF7 TO DF6 XSK I 2 /DUN X2? JMP MRE /NO OTTY, LIF 3 JMP TTY /OPEN TTY BUFFER /ANSWERS TO TTY JMPLST, JMP DEPO /D JMP NXTSEG /CR JMP INITL /C JMP REINI /I JMP BAKUP /B JMP STRTAP /F JMP PROC /P JMP BEG /E JMP ELIM /R (RUBOUT) JMP .+1 /S (STOP) LIF 4 STOP //END COMMAND CONTROL SEQUENCE. ///ROUTINES CALLED FROM COMMAND SEQUENCE FOLLOW. //ROUTINE TO ASK FOR START BN & BRING /HEADER INTO QN7 DF7. GETHED, SET 3 0 D1, LIF 4 INTRACT CJ1 M1 /PROG RESPLUK / START BN: CJ1, T1 J1 T1, 0 J1, JMP BEG /CR JMP .+1 /NUM STC HEDBN JMP SETEXT /EXT AXO LDA I 7400 /QN7,DF7 TMA RDC HEDBN, 0 /HEADER BN STD JMP .-1 LDA HEDBN ADD KP1 STA I STRBN, 0 /FIRST DATA BN LDF 7 LDA P20 MUL P102+17 /NUMCHAN ADD HEDBN STA I ENDBN, 0 /LAST BN CLR ADD STRBN ADD KM3 STA I CURBN, 0 /CUR DSPLY BN JMP SETREG /REG AXO /SET NUMBER OF DEPOSITED SEGMENTS COUNTER /TO ZERO. STC NUMDEP /NUM DEPOS SEG STC NUMSEG /SET UP SEC\PT FOR LATER CALCULATIONS LDF 7 SFLOAT P17 /PTS\SEG STORE FPTIME LOAD P44 /SEG LENGTH IN SEC FDIV FPTIME STORE FPTIME /SEC\PT /NOW ASK FOR "FRC". WHATEVER THAT IS. D2, LIF 4 INTRACT CJ2 M2 /FRC: CJ2, T1 J2 J2, JMP BEG /CR JMP .+1 /NUM STORE FPFRC /FRC JMP 3 /LEAVE FPFRC, 0 0 0 /TWO ROUTINES TO MANIPULATE AXO. SETEXT, LDA I 1031 /EXTM,EXT ADR,U2 AXO /NO PAUSE CLR JMP 0 /LEAVE SETREG, LDA I KP10, 10 /NO PAUSE AXO CLR JMP 0 /LEAVE //END GETHED. //ROUTINE TO CLEAR IF5 & DF2 STORAGE /BUFFERS & NUMDEP (N). CLRBUF, SET 3 0 LIF 3 JMP BUFCLR /(JMP 3 RETURN IS FROM IF 3) //END CLRBUF. //ROUTINE TO START DISPLAY OF DATA IN DF6 /AND TO START USER FOR CONTROL OF CURSORS. /START USER & LEAVE. STRDIS, SET 3 0 OPR 1 2 DISPLY JMP .-3 LIF 3 /START N DISPLAYER IN IF 3 JMP DISNUM /(JMP 3 EXIT IS FROM IF3) /THE DISPLAY USER. DISPLY, SETWRD 0500 SFLOAT NUMDEP /MOVE FOR DISPLAY LDF 3 OUTPUT 2\DEPNUM SET I 12 3777 /DATA C1 SET I 13 2777 /DATA C2 RSW BCL I 7760 BSE I SCR STA DISP1 STA DISP2 STA SCALE1 STA SCALE3 STC SCALE2 /DISPLAY CONTROLLERS /DISPLAY 2 DATA CURVES. LDF 6 BKDIS, LDA I 13 /INCR PTR LDA I 12 JMP DISP1 /DIS CURVE 1 LDA 13 JMP DISP2 /DIS CURVE 2 /DISPLAY BSLN ON CURVE 1. SUPPRESS IF SNS2=1. SNS I 2 JMP .+3 /NO BSLN SAM 5 JMP DISP1 /DISPLAY BSLN ON CURVE 2 IF SNS3=1 SNS 3 JMP EDIS /NO BSLN SAM 6 STA I FUDG41, 0 /FAKE CURVE1 BSLN JMP DISP2 EDIS, XSK 13 JMP BKDIS /NOW SAMPLE POTS. SAM 0 SCR 1 JMP FIXPOT+2 /PROC POT DATA STA I POT0, 0 JMP DISCR1 /DISPLAY CURS SAM 1 JMP FIXPOT STA I POT1, 0 JMP DISCR1 /CHECK SNS 3. IF = 1, THEN DISPLAY 2 CROSS- /HAIR CURSORS OF CURVE 2 SNS I 3 JMP DIS2CR /DISP CURSORS SAM 2 JMP FIXPOT STA I POT2, 0 JMP DISCR1 SAM 3 JMP FIXPOT STA I POT3, 0 JMP DISCR1 SAM 4 JMP FIXPOT ADD KP1000 STA I POT4, 0 JMP DISCR2 /CHECK SNS 3. IF = 1, POTS 6 & 7 ARE INACTIVE /FOR CURVE ADJUSTMENT SNS I 3 JMP POT7+1 /INACTIVE SAM 6 SCR 1 STA I POT6, 0 SAM 7 SCR 1 STA I POT7, 0 OPR 7 JMP DISPLY /USER LOOP /ROUTINE TO DISPLAY 2 CROSS-HAIR CURSORS /ON CURVE 2. VERT CU CONTROLLED BY POT 2. /HORIZ CU CONTOLLED BY POT 7. DIS2CR, ADD 14 ADD KP1000 STC 14 ADD 0 STC DIS2X /DISPLAY VERT CU LDA 14 SCALE2, SCR ADD POT7 ADD KP17 SET I 13 -37 DIS 14 ADD KM1 XSK I 13 JMP .-3 /DISPLAY HORIZ CU SAM 7 SCR 5 /+\- 17 STC SUM /TEMP ADA 14 STA I FUDG42, 0 /FAKE VALUE LDA 14 SCALE3, SCR ADD SUM STC SUM /HORIZ CU Y VALUE LDA 14 BCL I 7000 ADD KM10 STC 14 /HORIZ CU X VALUE ADD SUM /HORIZ CU Y VALUE ADD POT7 SET I 13 -20 DIS I 14 XSK I 13 JMP .-2 DIS2X, JMP /LEAVE /DISPLAYER FOR CURVE 1 DISP1, SCR ADD POT6 DIS 13 JMP 0 /DISPLAYER FOR CURVE 2 DISP2, SCR ADD POT7 DIS 13 JMP 0 /FIXUP POT DATA. FIXPOT, SCR 1 ADD POT0 ADD KP377 BCL I 7000 ADD KP2000 JMP 0 /DISPLAY CURSOR ON CURVE 1. DISCR1, STC 14 ADD 0 STC DISCRX LDA I ADD POT6 DISCR, STC POTNRT LDA 14 SCALE1, SCR POTNRT, 0 SET I 13 KM10, -10 ADD KP10 DIS 14 ADD KM1 XSK I 13 JMP .-3 CLR DISCRX, 0 /LEAVE /ROUTINE TO DISPLAY CURSOR ON CURVE 2. DISCR2, STC 14 ADD 0 STC DISCRX LDA I ADD POT7 JMP DISCR //END STRDIS. //ROUTINE TO SET UP TWO LOOPS THROUGH MRE. SETMRE, SET 3 0 /SET UP BETA REGISTERS. SET I 2 -2 /X2 LOOP CNTR SET I 16 3777 /CURVE 1 PNTR, DF6 SET I 17 2777 /CURVE 2 PNTR, DF6 /UPDATE BN. LDA CURBN /CURRENT STARTBN ADD KP3 STA CURBN STC BN JMP 3 /LEAVE //END SETMRE. GET3BN, SET 3 0 SET I 6 KM3, -3 JMP SETEXT /SET EXT AXO LDA I 6000 IOB IOF STA I TMAVAL, 0 STD JMP .-1 TMA RDE BN, 0 LDA BN ADD KP1 STC BN ADD TMAVAL XSK I 6 SKP JMP .+3 ADD KP400 JMP TMAVAL-1 IOB ION STD JMP .-1 JMP SETREG /SET REG AXO JMP 3 //END GET3BN. //STRIP DF7 TAPE DATA + PLACE IN DF 6. /DF7 ALTERNATES TEMP, CURVE1 AND CURV2 /DF6 WILL CONTAIN CURVE1 FROM 2000-2777 /AND CURVE2 FROM 3000-3777. STRIP, SET 3 0 SET I 10 KM400, -400 /CNTR MRSTRP, LDF 7 LDA I 7 /TEMP STC RTEMP LDA I 7 /CURVE 1 LDF 6 STA I 16 /1ST HALF DF6 LDF 7 LDA I 7 /CURVE 2 LDF 6 STA I 17 /2ND HALF OF DF6 XSK I 10 JMP MRSTRP JMP 3 //END STRIP. //COME HERE AT END OF UNIT 2 JOB. ATEND, LIF 4 MESOUT MDNSEG /ALL BN DONE JMP OTTY /ROUTINE TO REINITIALIZE TIME MEASUREMENT. USED TO IGNORE BAD SEGMENT OF DATA /AND COMPENSATE FOR RATE CALCULATION REINI, LDA INTFRM /NO. OF FRAMES FROM INITIALIZATION TO LAST DEPOSIT STC FRMCNT ADD BEGINT /INITIAL POT 0 POSITION COM ADD INT0 /POT 0 POSITION AT LAST DEPOSIT LIF 3 JMP GETTIM /GET TIME (MIN) FROM INITIALIZATION TO LAST DEPOSIT LDF 3 FADD 2\TIMBUF STORE 2\TIMBUF /TIME ACCUMULATION SINCE BEGINNING OF ANALYSIS JMP RI /INITIALIZE FRAME COUNTER INITL, LDF 3 FZER STORE 2\TIMBUF /TIME BUFFER FOR REINITIALIZATIONS RI, ADD POT0 /CURRENT POT 0 POSITION STC BEGINT STC FRMCNT JMP OTTY /LEAVE FRMCNT, 0 /NO. OF FRAMES BEGINT, 0 /END INITL. //CONTROL SEQUENCE FOR CALCULATING /CURSOR INFO ON THE FLY & ADDING IT TO /STORAGE BUFFERS IN QN7,DF2. DEPO, LDA KP1 /BUMP CNTR ADM I NUMDEP, 0 SET I 15 /DF2 PNTR 3400 JMP GETVAL /GET ALL PT VALS JMP INTEG /TIDAL VOL (CALC WORK) JMP INSFLO /MAX INSP FLORATE STORE FPMIFR /SAVE " JMP EXPFLO /MAX EXP FLO RATE STORE FPMEFR /SAVE " JMP MAXTRN /MAX TRNSPULMON PRESS STORE FPMTPP /SAVE " JMP COMPL /COMPLIANCE STORE FPCMPL /SAVE " JMP GTEMP /TEMPERATURE STORE FPTMPR /SAVE " /STORE WORK LOAD /FROM INTEG FPWORK FCOMP JMP STOR3 JMP RESIST /RESISTANCE STORE FPRZST /STORE " /STORE CURRENT VALUES OF POT 0 POSITION AND NO. OF FRAMES COUNTER TO BE ABLE /TO CALCULATE TIME FROM INITIALIZATION TO PRESENT BREATH. ADD POT0 STC INT0 ADD FRMCNT STC INTFRM JMP OTTY INT0, 0 INTFRM, 0 /NOW FOLLOW SINGLE ENTRY VALUES FILLED /EACH TIME FROM LAST RUN THROUGH DEPOSIT /ROUTINE. THESE ARE SENSED BY "RUBOUT" /ROUTINE. FPTVOL, 0 0 0 FPMIFR, 0 0 0 FPMEFR, 0 0 0 FPMTPP, 0 0 0 FPCMPL, 0 0 0 FPTMPR, 0 0 0 FPWORK, 0 0 0 FPRZST, 0 0 0 RTEMP, 0 FPTIME, 0 /TIME PER PT IN SEC 0 0 NUMSEG, 0 KP1, FP1, 1 KP2000, 2000 0 KP2, FP2, 2 2000 0 KP7, 7 FP256, 11 2000 0 FP980, 12 /980.6 3651 1463 FPDEC7, 30 /10,000,000=10^7 2304 5500 /SUBROUTINES CALLED FROM DEPO. /GET CURSOR VALUES, NORMALIZE TO VALUES /31 & 41, & STORE THEM IN OCTAL. GETVAL, SET 4 0 LDF 6 LDA POT0 STA I INTPT, 0 STC 16 LDA 16 /GET CURVE1 VAL COM STC VAL31 /BSLN CURVE1 SNS 3 /1=BSLN DISP JMP .+3 ADD FUDG41 /FAKE BSLN JMP .+3 JMP FIX16 /GET CURVE2 VAL LDA 16 COM STC VAL41 /BSLN CURVE2 ADD POT1 STC 16 LDA 16 ADD VAL31 /BSLN STC VAL32 SNS 3 /1=CURSOR DISP JMP .+3 ADD FUDG42 /FAKE VALUE JMP .+3 JMP FIX16 LDA 16 ADD VAL41 /BSLN STC VAL42 ADD POT2 STC 16 LDA 16 ADD VAL31 /BSLN STC VAL33 JMP FIX16 LDA 16 ADD VAL41 /BSLN STC VAL44 ADD POT3 STC 16 LDA 16 ADD VAL31 /BSLN STC VAL34 ADD POT4 STC 16 LDA 16 ADD VAL41 /BSLN STC VAL43 JMP 4 /INCREMENT BETA16 TO GET VALUE FROM /CURVE2. FIX16, ADD 16 ADD KP1000 STC 16 JMP 0 /ALL VALUES EXCEPT VAL31 & VAL41 ARE /BASLN ADJUSTED. VAL31, 0 /- REAL VAL31 VAL32, 0 VAL33, 0 VAL34, 0 VAL41, 0 /- REAL VAL41 VAL42, 0 VAL43, 0 VAL44, 0 /END GETVAL. //ROUTINE TO CALCULATE TIDAL VOLUME /AND WORK. INTEG, SET 4 0 KP1000, LDA INTPT STA 1 /YO PNTR,CURV1 ADD KP1 STC 2 /YN PNTR,CURV1 FZER STORE FPTVOL STORE FPWORK /GET TIDAL VOLUME. LDF 6 SFLOAT 1 /GET YO STORE BSLN1 /BSLN CORR CURV1 ADD 1 ADD KP1000 STC 17 /CURV2 PNTR SFLOAT 17 STORE BSLN2 /BSLN CORR CURV2 /DO INTEGRATION, <(Y0+YN)*T>\2. MRINT, SFLOAT 4\1 /GET YO FSUB BSLN1 STORE FPTEMP SFLOAT 4\2 /YN FSUB BSLN1 FADD FPTEMP /YO+YN JMP FIXCH3 LDF 6 FMUL FPTIME FDIV FP2 FADD FPTVOL STORE FPTVOL /RUNNING SUM TV ADD 1 /PNT 1 TO CURVE 2 ADD KP1000 STC 16 SFLOAT 16 FSUB BSLN2 JMP FIXCH4 /HAVE CURRENT PRESSURE LDF 6 FMUL FPTVOL /MUL VOL TO DATE FADD FPWORK STORE FPWORK ADD 1 SAE POT1 /REACHED PEAK? SKP JMP GOTI32 BKMR, SAE POT2 /REACHED END? JMP MRINT /NOT DONE LOAD /DONE FPTVOL JMP STOR3 LOAD FPWORK FMUL FP980 /MAKE WORK IN JOULES FDIV FPDEC7 /10^7 STORE FPWORK JMP 4 /LEAVE GOTI32, LOAD FPTVOL STORE TVOL32 JMP MRINT BSLN1, 0 0 0 BSLN2, 0 0 0 TENBIT, 11 /777(8) 3774 0 TVOL32, 0 0 0 FPTEMP, 0 0 0 /END INTEG. /ROUTINE TO GET MAX RESP FLOW RATE. INSFLO, SET 4 0 SFLOAT VAL32 JMP FIXCH3 FFLO, JMP STOR3 JMP 4 /LEAVE /ROUTINE TO GET COMPLIANCE. COMPL, SET 4 0 SFLOAT VAL44 FCOMP JMP FIXCH4 STORE TEMVAL LOAD FPTVOL FDIV TEMVAL JMP FFLO /ROUTINE TO GET MAX EXP FLOW RATE. EXPFLO, SET 4 0 SFLOAT VAL34 JMP FFLO-1 /ROUTINE TO GET MAX TRANSPULMONARY PRES. MAXTRN, SET 4 0 SFLOAT VAL43 JMP FIXCH4 STORE TEMVAL JMP FFLO /ROUTINE TO GET RESISTANCE. RESIST, SET 4 0 /GET SD. LOAD TVOL32 /VOL AT 32 FDIV FPCMPL /COMPLIANCE STORE TVOL32 /SD /GET SMAX IN. SFLOAT VAL42 JMP FIXCH4 /FAC=SMAX IN FCOMP FSUB TVOL32 /SD FDIV FPMIFR /VAL32 JMP STOR3 JMP 4 /ROUTINES TO NORMALIZE CURVE1(CH3) + /CURVE2(CH4) DATA. FIXCH3, FDIV TENBIT LDF 7 FMUL P72 /VAL\V CH3 JMP 0 FIXCH4, FDIV TENBIT LDF 7 FMUL P74 /VAL\V CH4 JMP 0 /ROUTINE TO CALC RECT TEMP GTEMP, SET 4 0 SFLOAT RTEMP FDIV TENBIT LDF 7 FMUL P66 /CH1\VAL\V FADD P67 /V AT ADC0 JMP STOR3 JMP 4 /ROUTINE TO ADD TO THE SUM AND SUMSQR /BUFFERS IN QN7,DF2. ENTER AND LEAVE WITH /VALUE IN FAC. STOR3, LDF 2 STORE TEMVAL FADD 15 STORE 4\15 LOAD TEMVAL FMUL FAC FADD 15 STORE 4\15 LOAD TEMVAL JMP 0 TEMVAL, 0 0 0 /END STOR3. //END DEPO ROUTINES. //ROUTINE TO GET NEXT SEGMENT IF MORE /ARE AVAILABLE, OTHERWISE RESTART. NXTSEG, LDA I 1 ADD FRMCNT STC FRMCNT /NO. OF FRAMES SINCE INITIALIZATION ADD CURBN ADD KP7 COM ADD ENDBN APO /MORE LEFT? JMP ATEND /NO JMP MRE-1 /YES, LEAVE //END NXTSEG. //ROUTINE TO RESTART U2 AT BEGINNING OF JOB. STRTAP, LDA /TYPE F STRBN ADD KM3 STC CURBN JMP MRE-1 /RESTART AT STRBN //END STRTAP. //ROUTINE TO BACKUP 3 BN FROM CURBN. BAKUP, LDA I KM1, -1 ADD FRMCNT STC FRMCNT ADD CURBN ADD KM3 KP17, COM ADD STRBN APO I /AT BEGINNING? JMP INITL /YES LDA /NO, OK CURBN ADD KM6 STC CURBN JMP MRE-1 /LEAVE //END BAKUP. //ROUTINE TO RUBOUT LAST ENTRY FROM //DEPO UPON HITTING RUBOUT FROM TTY. ELIM, LIF 2 JMP EL //END ELIM. /SETS UP PNTR TO STUFF ST. DEV. MUV6, LDA 6 ADD KP5 STC 6 JMP 0 /SETS UP PNTR TO STUFF NEXT MEAN. INC6, LDA 6 ADD KP10 STC 6 JMP 0 /INCREMENT 6 FROM VAL TO S.D. AND /OUTPUT IN DF2 BUFFER THEN RESET 6 /TO NEXT MEAN. PUT6, SET 1 0 JMP MUV6 LDF 2 OUTPUT 6 JMP INC6 JMP 1 PUT66, SET 1 0 JMP PUT6+3 //ROUTINE TO FORM MEAN AND VARIANCE //FROM DF2 SUM + SUMSQR. STORE IN P //BLOCK STARTING AT P104 + OUTPUT FOR //TYPING QN6 DF2. PROC, OPR 2 /STOP DISPLAYING 0 SET I 12 -10 /TOTAL D PARAMS SET I 2 -6 /TOTAL 742 PARAMS SET I 7 3400 /DF2 SUM + SUMSQ PNTR SET I 17 P104 /MEAN + VAR PNTR SET I 6 2\BUF+3 /OUTBUF PNTR SETWRD KP400, 0400 SFLOAT /TYPOUT N NUMDEP LDF 2 OUTPUT 2\NN+1 STORE FN /N FSUB FP1 STORE FNM1 /N-1 SETWRD 0742 BK, LDF 2 LOAD 4\7 STORE SUM LOAD 4\7 STORE SUMSQR JMP MNV LOAD MEAN LDF 7 STORE 4\17 /OUTPUT MEAN TO PBLOCK LDF 2 OUTPUT 6 /OUTPUT MEAN, DF2 LOAD VARY LDF 7 STORE 4\17 /OUTPUT VARIANCETO PBLOCK SQRT FAC JMP PUT6 /OUTPUT SD, DF2 XSK I 2 /DUN WITH 742? JMP .+3 SETWRD /WORK & RESIST 745 XSK I 12 /DUN ALL? JMP BK /NO /CALCULATE RATE - (NO. OF BREATHS DEPOSITED)\(TIME PERIOD ANALYZED). (742). LIF 3 JMP RATE /GET RATE LDF 7 STORE 4\17 /RATE (BREATHS\MIN) JMP PUT66 JMP ZERVAR /CALCULATE POWER AS JOULES\SEC,I.E., /(WORK\RESPXRESP\MIN)\60. (745). SETWRD 745 LDF 7 LOAD P124 /RESP\MIN FMUL P120 /WORK\COMPLEX LDF 2 FDIV 2\FP60 /WORK\SEC(WATTS) LDF 7 STORE 4\17 JMP PUT66 JMP ZERVAR /CALCULATE MINUTE VOLUME. (742). SETWRD 742 LOAD P124 /RESP\MIN LDF 7 FMUL P104 /VOL/RESP STORE 4\17 /VOL\MIN JMP PUT66 /OUTPUT DF2BUF JMP ZERVAR /OUTPUT FRC. (741). SETWRD 741 LOAD FPFRC STORE 4\17 JMP PUT66 JMP ZERVAR /GET MODULUS. (741). LDF 7 LOAD FPFRC FMUL FP2 FDIV P114 /COMPLIANCE FMUL FP980 /980.6 STORE 4\17 JMP PUT66 JMP ZERVAR /NOW TYPE OUT BUF IN DF 2 USING 6 PASSES /THROUGH TYPOUT WHICH TYPES 64(8) HAFCHAR. /OMIT TYPEOUT FOR SNS0=1. REXC 0 /SNS I 0 JMP NM LDA I 2\BUF-36 STC TYPNTR SET I 4 KM6, -6 BKTYP, LDA TYPNTR ADD KP32 STC TYPNTR JMP TYPOUT XSK I 4 JMP BKTYP /ASK FILENAME. NM, LIF 2 JMP DN /TYPE OUT ROUTINE. TYPOUT, LDA 0 STC TYPX OPR 11 0004 -64 /NUM HAFCHAR 2 TYPNTR, 0 /2\BUF JMP .-5 OPR 1 0004 .+3 JMP .-3 OPR 5 TYPX, 0 /LEAVE /END TYPOUT. /ROUTINE TO STORE ZERO IN VARIANCE SLOT. ZERVAR, LDF 7 FZER STORE 4\17 JMP 0 /END ZERVAR. //END PROC. /ROUTINE TO ENTER WITH SUM AND SUMSQ. /AND LEAVE WITH MEAN AND VARIANCE. MNV, LOAD SUM /SUM FDIV FN /N STORE MEAN /MEAN FMUL FAC /MEAN SQR FMUL FN STORE MSQR /N(MSQR) LOAD SUMSQR /SUM OF SQR FSUB MSQR FDIV FNM1 /N-1 STORE VARY JMP 0 /LEAVE MSQR, 0 0 0 VARY, SUMSQR, 0 0 0 SUM, MEAN, 0 0 0 FN, 0 0 0 FNM1, 0 0 0 /MESSAGES. M1, 4543 TEXT %RESPLUK % MCRLF, 4543 TEXT ZSTART BN: Z M2, TEXT ZFRC:Z MDNSEG,TEXT %ALLDUN% 4543 /DEFINITIONS. KP32, 32 KP377, 377 KP3, 3 AAEND5, KP5, 5 /END BANK 5 ROUTINES. /BEGIN BANK 2 ROUTINES. SEGMNT 2 *1000 4543 4543 4543 4543 BUF, 4024 / T 2617 /VO 1475 /L= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4015 / M 1106 /IF 2275 /R= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4015 / M 0506 /EF 2275 /R= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4015 / M 2420 /TP 2075 /P= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4003 / C 1715 /OM 2075 /P= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4024 / T 0515 /EM 2075 /P= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4027 / W 1722 /OR 1375 /K= 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4022 / R 0523 /ES 4075 / = 4040 4040 4040 4040 5340 /+ 4040 4040 4040 4040 4543 4022 / R 0124 /AT 0575 /E= 4040 4040 4040 4040 4543 4020 / P 1727 /OW 2275 /R= 4040 4040 4040 4040 4543 4015 / M 2617 /VO 1475 /L= 4040 4040 4040 4040 4543 4006 / F 2203 /RC 4075 / = 4040 4040 4040 4040 4543 4015 / M 1704 /OD 4075 / = 4040 4040 4040 4040 4543 4040 4016 / N NN, 4075 / = 4040 4040 4543 4543 AABFN2, 4543 /END OF BUF. /ROUTINE TO ASK FOR FILENAME & STORE PBLOCK. DN, LIF 4 INTRACT CJN MN /INDEX: CJN, TN JN TN, 0 MN, TEXT %INDEX:% JN, JMP OUT /CR JMP .+1 /NUM /SET UP NAME. LDF 4 STA FILNAM+1 LDA INBUF STA FILNAM /SETUP WORDS, ASSIGN, STORE & DEASSIGN. LDA I 7107 STA WORD1 STA WORD2 /SETUP PBLOCK. LDF 7 LDA I 55 /DATA TYPE 45(10) STA P0 /DATA TYPE LDF 5 LDA 2\NUMDEP LDF 7 STA P20 /NUM SEG LDA I 15 STA P17 /SAMP\SEG /GO STORE. LDF 3 OPR I 12 /SAVE QN6,DF3 6150 LIF 4 ASSIGN LIF 4 STORIT JMP DN /TAPE FULL LIF 4 DEASS LDF 3 /RESTORE QN6,DF3 OPR 12 6150 OUT, LIF 5 JMP BEG /RESTART IF5 /ROUTINE TO RUBOUT LAST ENTRY FROM DEPO EL, LDF 5 LDA 2\NUMDEP AZE I JMP LEAVE /N=0 ADA I -1 /DECREMENT N STA 2\NUMDEP SET I 7 1400 /SUM + SUMSQ PTR SET I 5 2\FPTVOL /1ST REAL VALUE SET I 6 -10 /CNTR MRUB, LOAD 7 /SUM FSUB 5 /VAL STORE 4\7 LOAD 4\5 /VAL FMUL FAC /VAL SQR(5) FCOMP FADD 7 /SUM SQR STORE 4\7 XSK I 6 JMP MRUB LEAVE, LIF 5 JMP OTTY /EXIT FP1000, 12 3720 0 FP60, 6 3600 0 AAEND2, 0 //END BANK 2 ROUTINES. //BANK 3 (QN6DF3) ROUTINES. SEGMNT 3 *1000 /ROUTINE TO CLEAR DF5 & 2 STORAGE BUFFERS /AND NUMDEP. BUFCLR, LDF 5 /CLEAR DF5 SET I 5 2\FPTVOL-1 SET I 10 -31 CLR STA I 5 XSK I 10 JMP .-2 STA 2\NUMDEP /N=0 SET I 5 /CLEAR DF2 3377 SET I 10 -400 LDF 2 STA I 5 XSK I 10 JMP .-2 LIF 5 /RTRN TO IF5 JMP 3 /END BUFCLR. /ROUTINE TO START DISPLAY OF NUMBER OF /DEPOSITED SEGMENTS. DISNUM, OPR 11 26 0 3 NUMBUF JMP .-5 LIF 5 JMP 3 /RTRN TO IF5 NUMBUF, +0 /TEXT 0 +1 /X ORIGIN -250 /Y ORIGIN LDF 3 /DF N /TEXT PNTR 4001 /END CHORE 4000 /END JOB N, TEXT %N=% DEPNUM, 0000 0000 0034 /END DISNUM /ROUTINE TO CALCULATE RATE. CALLED FROM IF 5. /RATE CALCULATED AS (NO. OF BREATHS)\(TIME) RATE, LDA 0 STC RATEX SETWRD 742 LDF 5 LDA 2\BEGINT /BEGINNING POT0 POSITION COM ADA 2\POT0 /FINAL POT0 POSITION JMP TIME /GET TIME BETWEEN POT POSITIONS FADD TIMBUF /ADDITIONAL TIME DUE TO REINITIALIZATIONS RECIP FAC /=1\TIME(MIN) LDF 5 FMUL 2\FN /NO. OF BREATHS IN TIME PERIOD CLR /TRANSFER PROGRAM CONTROL TO IF3 FOR RETURN LIF 5 RATEX, JMP TIMBUF, 0 0 0 RTEM, 0 0 0 /SUBROUTINE OF RATE CALCULATION TO GET TOTAL TIME BETWEEN BEGINNING AND FINAL /POSITIONS OF POT 0. TIME, STC RTEM LDF 5 SFLOAT RTEM STORE RTEM SFLOAT 2\FRMCNT /NO. OF FRAMES (256 PTS EACH) FMUL 2\FP256 /= NO. OF PTS FADD RTEM FMUL 2\FPTIME /TIME\PT(SEC) = TIME(SEC) LDF 2 FDIV 2\FP60 /= TIME(MIN) JMP 0 /ENTRY TO SUBROUTINE TIME FROM ROUTINE REINI IN IF5 GETTIM, STC RTEM ADD 0 STC TIMX JMP TIME+1 CLR /TRANSFER PROGRAM CONTROL TO IF3 FOR RETURN LIF 5 TIMX, JMP //TTY INTERACTION SET UP ROUTINE /OPEN INPUT BUFFER TO ACCEPT JUST 1 CHARACTER. TTY, OPR 11 0013 -1 4 INBUF JMP .-5 OPR 11 /TYPE COLON 0004 272 3 MCOLN JMP .-5 OPR 1 0013 DECUD JMP .-3 OPR 5 DECUD, LDF 4 SET I 1 GUDLST-1 SET I 2 2\JMPLST-1 SET I 4 GUDLST-GUDEND-1 /LIST SIZE LDH INBUF SAE I 1 SKP /NO JMP .+5 /YES XSK I 2 XSK I 4 JMP .-5 JMP QUES /BAD CHARACTER LDF 5 LDA I 2 STC .+2 LIF 5 0 /JMP GUDLST, 04 /D-DEPOSIT 45 /CR-NEXTSEG 03 /C-INITIALIZE 11 /I-REINITIALIZE 02 /B-BACKUP1 06 /F-RESTART TAPE 20 /P-PROCESS 05 /E-EXIT 22 /R-ELIM LAST ENTRY GUDEND, 23 /S-STOP QUES, LIF 4 MESOUT MQ /? JMP TTY MCOLN, 4072 / : MQ, TEXT %? % AAEND3, 4543 /JMPLST IN COMMAND SEQUENCE. //END TTY. //END BANK 3 ROUTINES. //PBLOCK NOLIST /PARAMETER BLOCK ASSIGNMENTS / P0=3400 /DATA TYPE P17=3417 /NO.SAMP IN SEG P20=3420 /NO.SEG IN ENSM P21=3421 /NO. ENSEMBLES / /FLOATING POINT VARIABLES / / P42=3442 /MULT FACTOR P43=3445 /UV PER VOLT P44=3450 /SEG. LENGTH P50=3464 /BNDA1 MIN P51=3467 /BNDA1 MAX P52=3472 /BNDA2 MIN P53=3475 /BNDA2 MAX P54=3500 /BNDA3 MIN P55=3503 /BNDA3 MAX P56=3506 /BNDA4 MIN P57=3511 /BNDA4 MAX P60=3514 /BNDA5 MIN P61=3517 /BNDA5 MAX P62=3522 /BNDB1 MIN P63=3525 /BNDB1 MAX P64=3530 /BNDB2 MIN P65=3533 /BNDB2 MAX P66=3536 /BNDB3 MIN P67=3541 /BNDB3 MAX P70=3544 /BNDB4 MIN P71=3547 /BNDB4 MAX P72=3552 /BNDB5 MIN P73=3555 /BNDB5 MAX P74=3560 /PF MIN P75=3563 /PF MAX / /FROM NOW ON DESCRIPTION IS FOUND OVER /THE DEFINED VARIABLE. / P102=3602 /AX,A1,A1CNT P104=3610 /AXVAR,A1VAR,A1CNTVAR P105=3613 /AY,A2,A1INT P106=3616 /AYVAR,A2VAR,A1INTVAR P107=3621 /BX,A3,A1MN P110=3624 /BXVAR,A3VAR,A1MNVAR P111=3627 /CY,B1,A2MN P114=3640 P116=3646 P120=3654 P122=3662 P124=3670 / / /COMMAND DECODER ASSIGNMENTS / / STOP=JMP 20 STORIT=JMP 23 ASSIGN=JMP 30 DEASS=JMP 31 INTRACT=JMP 42 MESOUT=JMP 43 / /COMMAND LOCATIONS. / FILNAM=2320 WORD1=2323 WORD2=2324 INBUF=2325 /COMMAND NUMBERS. YES=17 NO=20 / /EXEC3 ASSIGNMENTS / OPR=500 IOF=6002 ION=6001 EXC=1710 REXC=540 RLSW=514 RRSW=515 /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 RESPLUK. /MAR 76 /JLC,JLB,FHD