File RESPLUK

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

*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



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