File FRC

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

*20
///  PROGRAM FRC
	 
	 
/CORE ALLOCATION:
/IF 5&6- PROGRAM
/DF 7 - UNUSED, CURRENTLY
/DF 10 -UNUSED
/DF11 - DEAD VALUES (INB5)
/DF12 - TVOL VALUES (INB6 OUTB17)
/DF 13 - %N VALUES FOR FILING (B13)
/DF 14 - %N AND EAV VALUES FOR STORAGE (B14)
/DF 15 - INDIVID ENV (INB17)
/DF 16 - STRIPPED DATA
/DF 17 - TAPE BUFFER & HEADER BLOCK
/DF 20 - RAW N2\BREATH (INB5 OUTB15)
	 
	 
	LMODE
	 
//BEGIN IF 5 ROUTINES.
	SEGMNT 5
	*20
	 
	 
BEG1,	JMP USROFF
	LIF 6
	JMP QUES	/KBD VALUES
	 
BEG2,	JMP USROFF
	JMP SETREG	/STD TAPE
	JMP GETHED	/START BLOCK
	JMP CLRBUF	/CLR BFRS,SET DEAD
	JMP STRDIS	/START DISPLAY
	JMP SETMRE	/PREP MRE LOOP
	 
MRE,	JMP GET3BN	/INPUT 3/6 BN, U2
	SET I 7
	3777
	JMP STRIP	/3BN DF17 TO 16
	XSK I 2		/DUNX2?
	JMP MRE		/NO
/YES, FALL THRU TO TTY
	 
/TTY INTERACTION HANDLER.
/OPEN INPUT BUFFER TO ACCEPT JUST 1 CHARACTER.
TTY,	OPR 11
	0013
	-1
	4
	INBUF
	JMP .-5
	 
	OPR 11		/TYPE COLON
	0004
	272		/:
	5
	MCOLN
	JMP .-5
	 
	OPR 1		/SET WAKEUP
	0013
	DECUD
	JMP .-3
	 
	OPR 5		/GO TO SLEEP
	 
/ROUTINE TO DECODE THE SINGLE CHARACTER.
DECUD,	LDF 4
	SET I 1
	GUDLST-1	/VALID CHAR PNTR
	SET I 2
	JMPLST-1	/ROUTINE PNTR
	SET I 4
	GUDLST-GUDEND-1	/LIST CNTR
	 
	LDH
	INBUF
	SAE I 1
	SKP		/NO
	JMP VALID	/YES
	XSK I 2
	XSK I 4
	JMP .-5
	 
Q,	LIF 4		/BAD CHARACTER
	MESOUT
	 MQ		/?
	JMP TTY
MQ,	TEXT &??&
	4543
MCOLN,	TEXT &: &
	 
VALID,	LDA I 2
	STC .+1
	0		/JMP
/END TTY.
	 
/LIST OF VALID CHARACTERS.
/LOCATIONS IN JMPLST & GUDLST CORRESPOND.
GUDLST,	63		/3, CAL CHAN 3
	65		/5, CAL CHAN 5
	01		/A, RESTART WHOLE PROG
	02		/B, BAKUP 1 FRAME
	03		/C, BREATH INITL
	04		/D, DEPOSIT A BREATH
	05		/E, N2 ZERO
	06		/F, START AT DEADSPACE
	07		/G, GET AMBIENT N2
	10		/H, GET PAN
	20		/P,PROCESS TO DATE
	24		/T, DEAD SPACE
	40		/SPACE, DEPOSIT
	12		/LF, SEEK TRIG PULSE
	45		/CR, FORWARD 1 FRAME
GUDEND,	23		/S, STOP
/END GUDLST.
	 
/JUMP TO SUBROUTINE LIST.
/LOCATIONS IN GUDLST & JMP LST CORRESPOND.
JMPLST,	JMP CAL3	/3, CAL CHAN 3
	JMP CAL5	/5, CAL CHAN 5
	JMP BEG1	/A, RESTART ALL
	JMP BAKUP	/B, BACK 1 FRAME
	JMP INITL	/C, BREATH INITIALIZE
	JMP DEPO	/D, DEPOSIT BREATH
	JMP ZERON2	/E, NITRO ZERO
	JMP BEG2	/F, SIMPLE RESTART
	JMP GETAMB	/G, GET AMBIENT N2
	JMP GETPAN	/H, GET PAN
	JMP PROC	/P, PROCESS ALL
	JMP DEADSP	/T, DEPO DEAD SPACE
	JMP DEPO	/SPACE, DEPOSIT BREATH
	JMP SEEKT	/LF, SEEK TRIG
	JMP NXTSEG	/CR, NEXT FRAME
	JMP .+1		/S OR STOP, STOP
	LIF 4
	STOP
/END JMPLST.
	 
	 
/ROUTINE TO HALT ALL SYSTEM USERS.
USROFF,	OPR 2
	0
	JMP 0		/LEAVE.
/END USROFF.
	 
	 
/ROUTINE TO GET HEADER BLOCK.
/ASK FOR U2 BN & BRING IN HEADER TO 
/QN7 OF DF 17.  HEADER HAS INITIAL PBLOCK.
GETHED,	SET 3
	0
	LDF 6
D00,	LIF 4
	INTRACT
	 CJ00
	 2\M00		/PROG FRC
/                        START BN:
CJ00,	T00
	J00
T00,	0
	 
J00,	JMP BEG1	/CR
	JMP .+1		/NUM
	STC HEDBN
	JMP SETEXT	/EXT AXO
	LDA I
	7400		/QN7, DF17
	TMA
	RDC
HEDBN,	0
	STD		/WAIT ON TAPE
	JMP .-1
	LDA
	HEDBN
	ADD KP1
	STA I
STRBN,	0		/FIRST DATA BN
	LDF 17
	LDA
	P20
	MUL
	P102+17		/NUMCHAN
	ADD HEDBN
	STA I
ENDBN,	0		/LAST BN
	CLR
	ADD STRBN
	ADD KM3
	STA I
CURBN,	0		/CURNT DISPLY BN
	JMP SETREG	/REG AXO
	 
/CALCULATE SEC\PT FROM PBLOCK.
	SFLOAT
	P17		/PTS\SEG
	STORE
	FPTIME
	LOAD
	P44		/SEG LENGTH(SEC)
	FDIV
	FPTIME
	STORE
	FPTIME		/SEC\PT
	JMP 3		/LEAVE GETHED
FPTIME,	0
	0
	0
	 
/ROUTINES TO MANIPULATE TAPE AXO.
SETREG,	LDA I
KP10,	10
	AXO
	CLR
	JMP 0		/LEAVE
	 
SETEXT,	LDA I
	3031		/DF13-17,EXT ADR
KP1,	AXO		/NO PAUSE, UNIT 2
	CLR
	JMP 0		/LEAVE
/END GETHED & TAPE AXO ROUTINES.
	 
	 
/ROUTINE TO CLEAR BUFFERS & SET SOME POINTERS.
CLRBUF,	SET 3
	0
	FZER
	STORE
	FPAN2
	STORE
	FPPAN
	STORE
	FPMDS
	STC AMBN
	STC PANN
	STC DEADN
	STC NUMDEP
	SET I 5	        /DEAD STRG PNTR
	2000		/IN DF 11.
	JMP 3
/END CLRBUF.
	 
	 
/DISPLAY HANDLERS.
/START USER & LEAVE.
STRDIS,	SET 3
	0
	OPR 1		/START CURVE DISPLAY
	2
	DISPLY
	JMP .-3
	 
	OPR 11		/START BN & NUMDEP
	26
	0
	5
	NUMBUF
	JMP .-5
	JMP 3		/LEAVE STRDIS
	 
NUMBUF,	+0		/TEXT
	0
	+1		/X
	-250		/Y
	LDF 5
	N		/TEXT PNTR
	4001		/END CHORE
	4000		/END JOB
	 
N,	TEXT %N=%
DEPNUM,	0000
	0000
	0045
	4343
	TEXT %BN= %
DISBLK,	0000
	0000
	0034
/END STRDIS.
	 
/THE DISPLAY USER.
DISPLY,	SETWRD
	0500
	SFLOAT
	NUMDEP
	OUTPUT
	DEPNUM
	SFLOAT
	CURBN
	OUTPUT
	DISBLK
	 
	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
	STC SCALE2
	 
/DISPLAY CONTROLLERS.
/DISPLAY 2 DATA CURVES.
	LDF 16
BKDIS,	LDA I 13
	JMP DISP2
	LDA I 12
	JMP DISP1
	XSK 13
	JMP BKDIS
	 
/NOW SAMPLE POTS.
	SAM 0
	SCR 1
	STA I
POT0,	0
	JMP FIXPOT+2
	STA I
POT01,	0
	JMP DISCR1
	 
	SAM 1
	JMP FIXPOT
	STA I
POT11,	0
	JMP DISCR1
	SNS I 0
	JMP ZERONE
	 
ZERZER,	ADD POT01
	ADD KP1000
	STA I
POT02,	0
	JMP DISCR2
	ADD POT11
	ADD KP1000
	STA I
POT12,	0
	JMP DISCR2
	JMP VERT
	 
ZERONE,	SAM 2		/SNS1=1
	JMP FIXPOT
	ADD KP1000
	STA I
POT22,	0
	JMP DISCR2
	SAM 3
	JMP FIXPOT
	STA I
POT31,	0
	ADD KP1000
	JMP DISCR2
	LDF 16
	SET I 13	/HORIZ LINE ON POT11
	2777
	LDA
	POT11
	STC .+2
	LDA
	0
SCALE2,	SCR
	ADD POT6
	DIS I 13
	XSK I 13
	JMP .-2
	 
VERT,	SAM 6		/VERT POSN POTS
	SCR 1
	STA I
POT6,	0
	SAM 7
	STA I
POT7,	0
	OPR 7
	JMP DISPLY
/END DISPLY.
	 
/DISPLAYER FOR CURVE 1.
DISP1,	SCR
	ADD POT6
	DIS 13
	JMP 0		/;EAVE
/END DISP1.
	 
/DISPLAYER FOR CURVE 2.
DISP2,	SCR
	ADD POT7
	DIS 13
	JMP 0		/LEAVE
/END DISP2.
	 
/ROUTINE TO FIXUP SAMPLED POT VALUES.
FIXPOT,	SCR 1
	ADD POT0
	ADD KP3777
	BCL I
	7000
	ADD KP2000
	JMP 0		/LEAVE
KP3777,	3777
KP2000,	2000
/END FIXPOT.
	 
/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
/END DISCR1.
	 
/ROUTINE TO DISPLAY CURSOR ON CURVE 2.
DISCR2,	STC 14
	ADD 0
	STC DISCRX
	LDA I
	ADD POT7
	JMP DISCR
/END DISCR2.
/END DISPLAYER ROUTINES.
	 
	 
/ROUTINE TO SETUP TWO LOOPS THROUGH MRE.
SETMRE,	SET 3
	0
/SETUP BETA REGISTERS.
	SET I 2
	-2		/X2 LOOP CNTR
	SET I 16
	3777		/CURVE 1, DF16
	SET I 17
	2777		/CURVE 2, DF16
/UPDATE BN.
	LDA
	CURBN
	ADD KP3
	STA
	CURBN
	STC BN
	JMP 3		/LEAVE
KP3,	3
/END SETMRE.
	 
/ROUTINE TO GET 3 OF 6 NEEDED BN FROM U2.
GET3BN,	SET 3
	0
	SET I 4
KM3,	-3
	JMP SETEXT
	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 4
	SKP
	JMP .+3
	ADD KP400
	JMP TMAVAL-1
	IOB
	ION
	STD
	JMP .-1
	JMP SETREG
	JMP 3		/LEAVE
KP400,	400
/END GET3BN.
	 
/ROUTINE TO STRIP DF17 ALTERNATING TAPE
/DATA AND PLACE SEQUENTIALLY IN DF 16.
/DF17 ALTERNATES TRIG, CURVE1, CURVE2.
/DF16 WILL CONTAIN CURVE 1 FROM 2000-2777
/AND CURVE 2 FROM 3000-3777.
STRIP,	SET 3
	0
	SET I 10
KM400,	-400		/CNTR
MRSTRP,	LDF 17
	LDA I 7
	STC RTEMP
	LDA I 7		/CURVE 1
	LDF 16
	STA I 16	/1ST HALF DF16
	LDF 17
	LDA I 7		/CURVE 2
	LDF 16
	STA I 17	/2ND HALF DF16
	XSK I 10
	JMP MRSTRP
	JMP 3		/LEAVE
RTEMP,	0
/END STRIP.
	 
	 
/CALIBRATION ROUTINES. THEY REQUIRE REAL
/WORLD CALIBRATION PULSE VALUES IN PBLOCK
/AS FOLLOWS:  CH 3, P55, A3MAX
/             CH 5, P61, A5MAX
	 
CAL3,	SET 16
	POT01
	LDF 16
	LDA 16
	COM
	STC FPTEMP
	SET 16
	POT11
	LDA 16
	JMP GETEMP
	STORE
	CAL33
	JMP TTY
	 
CAL5,	SET 16
	POT02
	LDF 16
	COM
	STC FPTEMP
	SET 16
	POT12
	LDA 16
	JMP GETEMP
	STORE
	CAL55
	JMP TTY
	 
GETEMP,	ADM
	FPTEMP
	SFLOAT
	FPTEMP
	JMP 0
	 
FIXCH3,	FDIV
	CAL33
	LDF 17
	FMUL
	P55
	JMP 0
	 
FIXCH5,	FSUB
	FPZN2
	FDIV
	CAL55
	LDF 17
	FMUL
	P61
	JMP 0
	 
CAL33,	0
	0
	0
CAL55,	0
	0
	0
FPTEMP,	0
	0
	0
/END CALIBRATION ROUTINES.
	 
	 
	 
/ROUTINES TO INITIALIZE, ADVANCE OR BAKUP FRAMES.
/INITIALIZER.
INITL,	LDA
	POT01
	STC BEGINT
	STC FRMCNT
	 
/PNTRS.
	SET I 5		/DF13, N2\BREATH
	3777
	SET I 6		/DF12, TVOL
	2000
	 
	CLR
	STC NUMDEP	/CNTR
	JMP TTY		/LEAVE
FRMCNT,	0
BEGINT,	0
/END INITL.
	 
	 
/ROUTINE TO GET NEXT SEGMENT IF MORE
/ARE AVAILABLE.
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
	 
ATEND,	LIF 6		/U2 ENDED
	JMP AEND
KP7,	7
/END NXTSEG.
	 
/ROUTINE TO BAKUP 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
	CURBN		/NO,OK
	ADD KM6
	STC CURBN
	JMP MRE-1	/LEAVE
KM6,	-6
/END BAKUP.
	 
/ROUTINE TO RESTART U2 AT BEGINNING OF JOB.
STRTAP,	LDA
	STRBN
	ADD KM3
	STC STRBN
	JMP MRE-1	/LEAVE
/END STRTAP.
/END FRAME HANDLING ROUTINES.
	 
	 
/ROUTINE TO DEPOSIT DATA FROM A SINGLE BREATH.
DEPO,	LDA
	POT01
	STC STRPT
	ADD POT11
	STC ENDPT
	ADD POT22
	STC 1
	LDF 16
	LDA 1
	LDF 20
	STA I 5		/STORE RAW N2
	 
	JMP DOINT
	 
	LDF 12
	STORE		/TVOL
	4\6
	ADD KP1		/BUMP CNTR
	ADM I
NUMDEP,	0
	JMP TTY		/LEAVE
/END DEPO.
	 
	 
/ROUTINE TO ZERO NITROGEN CURVE.
ZERON2,	SET 10
	POT22
	LDF 16
	SFLOAT
	10
	STORE
	FPZN2
	JMP TTY
FPZN2,	0
	0
	0
/END ZERON2.
	 
	 
/INTEGRATES CH3, DF 16, FROM STRPT TO ENDPT.
DOINT,	LDA I
STRPT,	0
	STA
	1		/YO PNTR
	ADD KP1
	STC 2		/YN PNTR
	 
	ADD 0
	STC DOINTX
	 
	FZER
	STORE
	FPTVOL
	 
/GET TIDAL VOLUME.
	LDF 16
	SFLOAT
	1
	STORE
	BSLN
MRINT,	SFLOAT
	4\1		/YO
	FSUB
	BSLN
	STORE
	FPTEMP
	SFLOAT
	4\2		/YN
	FSUB
	BSLN
	FADD
	FPTEMP
	JMP FIXCH3
	LDF 16
	FMUL
	FPTIME
	FDIV
	FP2
	FADD
	FPTVOL
	STORE
	FPTVOL
	ADD 1
	SAE I
ENDPT,	0
	JMP MRINT
DOINTX,	0		/LEAVE
FPTVOL,	0
	0
	0
BSLN,	0
	0
	0
/END DOINT.
	 
	 
/ROUTINE TO GET NITRO CURVE BASELINE.
/CURSOR 2(2).
N2ZER,	SET 16
	POT22
	LDF 16
	SFLOAT
	16
	STORE
	FPZN2
	JMP TTY		/LEAVE
/END N2ZER.
	 
	 
/ROUTINE TO GET AMBIENT N2 FROM CURSOR 0(2).
/SET SNS0=0.
GETAMB,	SET 16
	POT02
	LDF 16
	SFLOAT
	16
	FADD
	FPAN2
	STORE
	FPAN2
	ADD KP1
	ADD AMBN
	STC AMBN
	JMP TTY		/LEAVE
FPAMB,	0
	0
	0
AMBN,	0
/END GETAMB.
	 
	 
/ROUTINE TO GET PAN FROM CURSOR 1(2).
/SET SNS0=0.
GETPAN,	SET 16
	POT12
	LDF 16
	SFLOAT
	16
	FADD
	FPPAN
	STORE
	FPPAN
	ADD KP1
	ADD PANN
	STC PANN
	JMP TTY		/LEAVE
FPPAN,	0
	0
	0
PANN,	0
/END GETPAN.
	 
/ROUTINE TO CALCULATE A SINGLE DEADSPACE.
/SET SNS0=1.
DEADSP,	LDA
	POT01
	ADD KP1000	/AC=POT02
	COM
	ADD POT22	/AC=DT
	COM
	ADD POT31	/AC=31-DT
	STC ENDPT
	 
	ADD POT11
	STC STRPT
	 
	JMP DOINT
	 
	LDF 11
	STORE
	4\5
	FADD
	FPMDS
	STORE
	FPMDS
	ADD KP1
	ADD DEADN
	STC DEADN
	JMP TTY		/LEAVE
DEADN,	0
KP1000,	1000
/END DEADSP.
	 
	 
/ROUTINE TO SEEK TRIAL MARKER.
/EXPECTS A PULSE GREATER THAN 0.5V
/IN CHANNEL 1.
SEEKT,	LDA
	CURBN
	ADD KM3
	STC CURBN
	 
BKTRG3,	LDA
	CURBN
	ADD KP3
	STA
	CURBN
	STC BN
	JMP GET3BN
	SET I 10
	-400
	SET I 17
	3777
	 
BKTRG,	LDF 17
	LDA I 17
	COM
	ADD KP377
	APO
	 JMP GOTONE
	LDA I 17	/BUMP BETA 17
	LDA I 17
	XSK I 10	/DUN ALL?
	JMP BKTRG	/CHK MORE PTS
	JMP BKTRG3	/NEXT 3 BN
	 
GOTONE,	CLR
	ADD 17
	BCL I
	6377
	ROR 1
	ADD CURBN
	ADD KM3
	STC CURBN
	JMP MRE-1	/LEAVE SEEKT
KP377,	377
/END SEEKT.
	 
	 
	 
/FINAL PROCESSOR HANDLER.
PROC,	JMP DOCALC
	LIF 6
	JMP TYPO
	LIF 6
	JMP STRIT	/RTRN VIA BEG1
/END PROC.
	 
	 
/ROUTINE TO DO MAJOR CALCULATIONS.
DOCALC,	SET 3
	0
	 
/FIRST CALCULATE DEAD SPACE & DETERMINE
/WHETHER OR NOT TO USE KBD DEAD SPACE.
	SFLOAT
	DEADN
	FDIV
	FPMDS
	RECIP
	FAC
	STORE
	FPMDS
	LOAD
	FPDSE
	FMUL
	FP11HF
	FSUB
	FPMDS
	FAPO
	 JMP USEKBD	/MEAN CALC NO GOOD
	LOAD
	FPDSE
	FDIV
	FP2
	FCOMP
	FADD
	FPMDS
	FAPO
	 JMP USEKBD	/MEAN NO GOOD
	LDA I		/MEAN IS OK
	FPMDS
	JMP .+7
	 
USEKBD,	LDF 6
	LIF 4
	MESOUT
	2\MCRLF
	LIF 4
	MESOUT
	2\MKBDDS	/USE KBD DEAD SPC
	LDA I
	FPDSE
	STA
	DEAD1
	STC DEAD2
	 
	 
/BEGIN MAIN CALCULATIONS.
/FIRST SETUP PNTRS & CNTRS.
GETENV,	SET I 17
	2000		/DF12 - TVOL IN PNTR
/                        DF15 - INDIVID ENV OUT
	 
	SET I 15
	3777		/DF20 - N2\BREATH IN PNTR
	 
	SET I 14	/2ND OUTFILE PNTR
	2000		/DF14 - %N & EAV
	 
	SET I 13	/1ST OUTFILE PNTR
	2000		/DF13 - %N PNTR
	 
	LDA
	NUMDEP
	COM
	STC DEPNUM
	SET 10		/CNTR
	DEPNUM
	 
	 
/CALCULATE REAL PAN.
	SFLOAT
	PANN
	FDIV
	FPPAN
	RECIP
	FAC
	JMP FIXCH5
	STORE
	FPPAN
	 
	FZER
	STORE
	FPENV
	STORE
	FPEAV
	STORE
	FPNUM
	 
/FIRST, CALCULATE ACTUAL N2\BREATH.
BKENV,	LDF 20
	SFLOAT		/RAW NS\BREATH
	4\15
	JMP FIXCH5	/X
	FSUB
	FP1
	 
	LIF 6
	JMP TENX	/ 10^(X-1)
	 
	STORE
	FPN2		/%N
	 
/STORE %N BY ITSELF AND ALSO ALONG WITH
/EAV WHICH WILL BE ADDED IN SECOND FILE
/LATER ON DOWN THE CODING.
	LOAD
	FP1
	FADD
	FPNUM
	STORE
	FPNUM		/SEQUENCE
/SET UP FOR STORAGE OF 1ST FILE.
	LDF 13
	STORE
	4\13		/X(1,2,3,ETC.)
	LOAD
	FPN2
	STORE
	4\13		/Y(%N)
/SET UP FOR STORAGE OF 2ND FILE.
	LDF 14
	STORE
	4\14		/X(%N)
	 
	 
/CONTINUE CALCULATION.
/GET CF, THEN EV.
/  CF =  1.11273
/      - 0.0014900837 * %N
/      - 0.00000101175 * %N^2
/
/  EV = TVOL * CF
	 
/FIRST CF.
	FMUL
	FPZZZ		/0.00000101175
	FADD
	FPZZ1		/0.0014900837
	FMUL
	FPN2		/%N
	FCOMP
	FADD
	FP111		/1.11273
/NOW EV.
	LDF 12
	FMUL
	17		/TVOL*CF=EV
	STORE
	FPTEMP
	 
	 
/NOW CONTINUE, EAV = SUMMED EV - DEAD SPACE.
	FSUB
DEAD1,	0
	FADD
	FPEAV
	STORE
	FPEAV
/SECOND PART OF 2ND FILE.
	LDF 14
	STORE
	4\14		/Y(EAV)
	 
	 
/NOW CONTINUE FOR ENV.
/  ENV = EV * %N/100
	LOAD
	FPTEMP		/EV
	FMUL
	FPN2		/EV*%N
	FDIV
	FPHUN		/EV*%N/100
	LDF 15		/STORE INDIVID ENV
	STORE		/FOR TRAPPING.
	4\17
	FADD
	FPENV		/SUMMED ENV
	STORE
	FPENV
	XSK I 10	/MORE BREATHS?
	 JMP BKENV	/YES
	 
	 
/CONTINUE, GET NB, THEN FRC.
/  NB = BODY WT IN KG * 2.03 OR 3.02
/ FRC = (SUMMED ENV - NB)*100/PAN
/      - DEAD SPACE
	 
/FIRST NB.
DOFRC,	LOAD
	FPKG		/WEIGHT
	FMUL
	FPK		/3.02 OR 2.03
/NOW FRC.
	FCOMP
	FADD
	FPENV		/SUM ENV - NB
	FDIV
	FPPAN
	FMUL
	FPHUN
	FSUB
DEAD2,	0		/DEAD SPACE
	STORE
	FPFRC
	 
	 
/CONTINUE, GET CORRECTED FRC.
/ CFRC = (RECTAL TEMP + 273.16)*FRC/310.16
DOCFRC,	LOAD		/CORRECT FRC
	FPRTMP
	FADD
	FP273		/273.16
	FMUL
	FPFRC
	FDIV
	FP310		/310.16
	STORE
	FPCFRC
	 
	 
/NOW CALCULATE TRAPPING.
DOTRAP,	SET I 16	/CALCULATE TRAPPING
	2000		/INIT VAL
	SET I 17
	2003		/NEXT VAL
	FZER
	STORE
	FPTRAP
	STC 15		/TRAPPING CNTR
	ADD DEPNUM
	ADD KP1
	STC 10		/BREATH CNTR
	 
BKTRAP,	LDF 15
	LOAD
	4\16
	STORE
	FPTEMP
	FCOMP
	FADD
	4\17
	FAPO
	SKP
	 JMP TRAP	/TRAPPING
BKT,	XSK I 10	/DUN ALL?
	 JMP BKTRAP	/NO
	 
TRAP,	LDA		/YES
	15
	STC FPTEMP	/OCTAL NUM TRAPPED
	SFLOAT
	FPTEMP
	STORE
	FPTRAP
	SFLOAT
	NUMDEP
	FDIV
	FPTRAP
	FDIV
	FPHUN
	RECIP
	FAC
	STORE
	FPTRAP
	JMP 3		/LEAVE
	 
/DOCALC BUFFERS.
FPN2,	0
	0
	0
FPK,	0		/3.02 OR 2.03
	0
	0
FPEAV,	0
	0
	0
FPENV,	0
	0
	0
FPNUM,	0
	0
	0
	 
/DOCALC CONSTANTS.
FP1,	0001		/1
	2000
	0000
FP11HF,	0001		/1.5
	3000
	0000
FP2,	0002		/2
	2000
	0000
FPZZZ,	7754		/.00000101175
	2076
	2673
FPZZ1,	7766		/.0014900837
	3032
	3565
FP111,	0001		/1.11273
	2163
	3370
FP273,	0011		/273.16
	2104
	5076
FP310,	0011		/310.16
	2330
	5076
FPHUN,	0007
	3100
	0000
/END DOCALC.
	 
/FINAL VALUE BUFFERS.
/KBD ENTRY VALUE BUFFERS.
FPKG,	0		/RECTAL TEMP
	0
	0
FPRTMP,	0		/RECTAL TEMP
	0
	0
FPATMP,	0		/AMBIENT TEMP
	0
	0
FPHUM,	0		/HUMIDITY
	0
	0
FPAN2E,	0		/KBD AMB N2
	0
	0
FPDSE,	0		/KBD DEAD SPACE
	0
	0
/CALCULATED VALUES.
FPAN2,	0		/MSRD AMB N2
	0
	0
FPMDS,	0		/MEAN DEAD SPACE
	0
	0
FPFRC,	0		/FRC
	0
	0
FPCFRC,	0		/CORRECTED FRC
	0
	0
FRCKG,	0		/FRC\KG
	0
	0
FPDUR,	0		/DURATION
	0
	0
FPTRAP,	0		/%TRAPPING
	0
	0
/END BUFFERS.
	 
AAEND5,	0
//END IF 5 ROUTINES.
	 
	 
	 
// IF6 ROUTINES.
	SEGMNT 6
	*20
/INITIAL KBD INPUT HANDLER.
	 
D0,	
QUES,	LIF 4
	INTRACT
	CJ0
	M0		/PROGRAM FRC
/                        DESORBED N2:
	 
/DOG=3.02 ML\KG
/MAN=2.03ML\KG
	 
CJ0,	T1
	J0
J0,	JMP LVQUES	/CR
	JMP .+1
	LDF 5
	STORE
	2\FPK
/FIRST BRING IN ASCII IDENTIFIERS.
/PRESUMES 8 MAX CHARACTERS.
D1,	LIF 4
	INTRACT
	CJ1
	M1		/SPECIES
CJ1,	T1
	J1
T1,	0
J1,	JMP LVQUES	/CR
	JMP .+1		/NUM
	LDA I
	4\M1A-1
	JMP MOVE
	 
D2,	LIF 4
	INTRACT
	CJ2
	M2		/I.D. NUMBER
CJ2,	T1
	J2
J2,	JMP LVQUES	/CR
	JMP .+1		/NUM
	LDA I
	4\M2A-1
	JMP MOVE
	 
D3,	LIF 4
	INTRACT
	CJ3
	M3		/CONTROL NUMBER
CJ3,	T1
	J3
J3,	JMP LVQUES	/CR
	JMP .+1		/NUM
	LDA I
	4\M3A-1
	JMP MOVE
	 
/NOW BRING IN FP VALUES.
	SET I 6		/CNTR
	-6
	SET I 12	/TBL PNTR
	ASKTBL-1
	 
BKVAL,	LDA I 12
	STC MESG
	LDA I 12
	STC PNTR5
D4,	LIF 4
	INTRACT
	CJ4
MESG,	0		/M4-9
CJ4,	T1
	J4
J4,	JMP LVQUES	/CR
	JMP .+1		/NUM
	LDF 5
	STORE
PNTR5,	0
	XSK I 6
	 JMP BKVAL
	 
LVQUES,	LIF 5		/LEAVE QUES
	JMP BEG2
	 
/ROUTINE TO MOVE 8 ASCII CHARACTERS FROM
/INBUF TO M1A,M2A, OR M3A. FILLS NON ENTERED
/LOCATIONS WITH SPACES.
MOVE,	SET 3
	0
	STC OUTM
	 
	SET I 10
	-10		/8 CHARACTERS
	SET I 4
	4\INBUF-1
	SET I 5
OUTM,	0		/4\M?A-1
	 
XFRIT,	LDF 4
	LDH I 4
	SAE I
	45
	SKP
	JMP STUFIT
	STH I 5
	XSK I 10
	JMP XFRIT
	JMP 3		/LEAVE
	 
STUFIT,	LDA I
	40
	STH I 5
	XSK I 10
	JMP .-2
	JMP 3		/LEAVE
/END MOVE.
	 
/TABLE OF MESSAGE & STORAGE PNTRS.
ASKTBL,	M4		/BODY WEIGHT
	2\FPKG
	 
	M5		/RECTAL TEMP
	2\FPRTMP
	 
	M6		/AMBIENT TEMP
	2\FPATMP
	 
	M7		/REL HUMIDITY
	2\FPHUM
	 
	M8		/KBD AMBIENT N2
	2\FPAN2E
	 
	M9		/KBD DEAD SPACE
	2\FPDSE
/END QUES & ITS SUBROUTINES.
	 
	 
/MESSAGES.
M1,	TEXT &SPECIES:&
	4543
M1A,	00
	00
	00
	00
	4543
M2,	TEXT &I.D. NUMBER:&
	4543
M2A,	00
	00
	00
	00
	4543
M3,	TEXT &CONTROL NUMBER: &
	4543
M3A,	00
	00
	00
	00
	4543
M4,	TEXT &BODY WEIGHT:&
	4543
M5,	TEXT &RECTAL TEMP:&
	4543
M6,	TEXT &AMBIENT TEMP: &
	4543
M7,	TEXT &RELATIVE HUMIDITY:&
	4543
M8,	TEXT &KBD AMBIENT N2: &
	4543
M9,	TEXT &KBD DEAD SPACE: &
	4543
M10,	TEXT &MEASURED AMBIENT N2:&
	4543
M11,	TEXT &MEASURED DEAD SPACE:&
	4543
M12,	TEXT &MEAN DEAD SPACE:&
	4543
M13,	TEXT &FRC:&
	4543
M14,	TEXT &CORRECTED FRC:&
	4543
M15,	TEXT &FRC PER KG: &
	4543
M16,	TEXT &DURATION: &
	4543
M17,	TEXT &TRAPPING: &
	4543
M18,	TEXT &PERCENT TRAPPING: &
	4543
M0,	TEXT &PROGRAM FRC &
	4543
	TEXT &DESORBED N2:&
M00,	TEXT &START BN: &
MKBDDS,	TEXT &USING KBD DEAD SPACE&
	4543
/END MESSAGES.
	 
	 
/ROUTINE TO STORE TWO NUMFILES.
/FIRST IS STRING OF %N AND SECOND IS
/%N ALTERNATING WITH SUMMED EAV.
STRIT,	LIF 4		/ASK OUTPUT TAPES
	OUTUNITS
	 
	LDF 5		/SETUP PBLOCK
	SFLOAT
	2\NUMDEP	/N
	LDF 17
	STORE
	P20		/PBLOCK N
	ADD C1
	STA
	P17		/DIMENSION
	ADD C2
	STA
	P1		/3=FP NUMBERS
	CLR
	COM
	STA
	P0		/DATA TYPE
	LDF 4
	LDA I
	7117
	STA
	WORD1		/PBLOCK
	 
	 
/NOW STORE %N FILE.
DNAM1,	LIF 4
	INTRACT
	CJNAM1
	MNAM1
CJNAM1,	TNAM1
	JNAM1
TNAM1,	0
JNAM1,	JMP LVSTOR	/CR
	JMP .+1		/NUM
	LDF 4
	STA
	FILNAM+1	/NUM
	LDA
	INBUF
	STA
	FILNAM
	LDA I
	4413
	STA
	WORD2		/DATA
	JMP STR1
	 
FLTP1,	LIF 4
	OUTUNITS
	 
STR1,	LIF 4
	MSTORIT
	 JMP FLTP1	/TAPE FULL
	 
	 
/GO STORE SECOND FILE.
DNAM2,	LIF 4
	INTRACT
	CJNAM2
	MNAM2		/N2 & EAV FILENAME
CJNAM2,	TNAM1
	JNAM2
JNAM2,	JMP LVSTOR	/CR
	JMP .+1		/NUM
	LDF 4
	STA
	FILNAM+1	/NUM
	LDA
	INBUF
	STA
	FILNAM		/NAM
	LDA I
	4414
	STA
	WORD2		/DATA
	CLR
	ADD C2
	LDF 17
	STA
	P17		/DIMENSION
	JMP STR2
	 
FLTP2,	LIF 4
	OUTUNITS
	 
STR2,	LIF 4
	MSTORIT
	 JMP FLTP2
	 
LVSTOR,	LIF 5
	JMP BEG1	/EXIT STORIT
	 
MNAM1,	TEXT &N2 FILE NAME: &
MNAM2,	TEXT &N2 AND EAV FILE NAME: &
C1,	1
C2,	2
/END STORIT.
	 
/MESSAGE AT END OF UNIT 2.
AEND,	LIF 4
	MESOUT
	MEND
	LIF 5
	JMP TTY		/LEAVE
MEND,	TEXT &END OF UNIT 2 &
	4543
/END AEND.
	 
	 
/ROUTINE TO PROVIDE TYPEOUT OF CALCULATIONS.
TYPO,	LDA
	0
	STC TYPOX
	 
/FIRST TYPE OUT ASCII STUFF.
	CRLF
	CRLF
	LIF 4
	MESOUT
	M1
	LIF 4
	MESOUT
	M1A
	 
	CRLF
	LIF 4
	MESOUT
	M2
	LIF 4
	MESOUT
	M2A
	 
	CRLF
	LIF 4
	MESOUT
	M3
	LIF 4
	MESOUT
	M3A
	 
/NOW TYPE OUT CALCULATED STUFF.
	SET I 17
	PNTRS-1
	SET I 10
	-15	/13(10)
	 
BKTYP,	LDA I 17
	STC MSG		/M4-17
	LDA I 17
	STC .+3
	LDF 5
	LOAD
	0
	LDA I 17
	STC .+2
	SETWRD
	0
	OUTPUT
	MTYP
	 
	CRLF
	LIF 4
	MESOUT
MSG,	0
	LIF 4
	MESOUT
	MTYP
	XSK I 10
	JMP BKTYP
	 
/NOW TYPE OUT INDIVIDUAL DEAD SPACE VALUES.
ATYP,	CRLF
	LIF 4
	MESOUT
	M11		/MSRD DEAD SPACES
	LDF 5
	LDA
	2\DEADN
	COM
	STC 10		/CNTR
	SET I 16
	2000		/PNTR
	LDF 11
BKD,	LOAD
	4\16
	SETWRD
	1044
	OUTPUT
	MDED
	LIF 4
	MESOUT
	MDED
	XSK I 10
	 JMP BKD
	LIF 5
TYPOX,	0		/LEAVE TYPO
MDED,	
MTYP,	00
	00
	00
	00
MCRLF,	4543
	 
PNTRS,	M4		/BODY WEIGHT
	2\FPKG
	1043
	 
	M5		/RECTAL TEMP
	2\FPRTMP
	1043
	 
	M6		/AMBIENT TEMP
	2\FPATMP
	1043
	 
	M7		/REL HUMIDITY
	2\FPHUM
	1043
	 
	M8		/KBD AMB N2
	2\FPAN2E
	1043
	 
	M9		/KBD DEAD SPACE
	2\FPDSE
	1044
	 
	M10		/AMBIENT N2 MEASURED
	2\FPAN2
	1043
	 
	M13		/FRC
	2\FPFRC
	1043
	 
	M14		/CORRECTED FRC
	2\FPCFRC
	1043
	 
	M15		/FRC\KG
	2\FRCKG
	1044
	 
	M16		/DURATION
	2\FPDUR
	1042
	 
	M17		/% TRAPPING
	2\FPTRAP
	1043
	 
	M12		/MEAN DEAD SPACE
	2\FPMDS
	1044
/END PNTRS.
	 
/ROUTINE TO TYPEOUT A CRLF.
	CRLF=JMP .
	SET 4
	0
	LIF 4
	MESOUT
	MCRLF
	JMP 4		/LEAVE
/END CRLF.
/END TYPO.
	 
	 
/ROUTINE TO CALCULATE POWERS OF TEN.
TENX,	STORE
	XFAC
	ADD 0
	STC TENXX
	FIX
	FAC
	ISTOR1
	XNET
	SFLOAT
	XNET
	FCOMP
	FADD
	XFAC
	STORE
	XFAC
	 
/10^X, WHERE 0<X<1
	LOAD
	A4
	JMP MULT
	FADD
	A3
	JMP MULT
	FADD
	A2
	JMP MULT
	FADD
	A1
	JMP MULT
	FADD
	F1
	FMUL
	FAC
	STORE
	XFAC
	LDA I
	XNET+1
	ADD XNET
	STC .+2
	LDA
	0
	STC .+2
	FMUL
	0
	STORE
	XFAC
	LIF 5
TENXX,	0		/LEAVE
	 
MULT,	FMUL
	XFAC
	JMP 0
	 
XFAC,	0
	0
	0
	 
XNET,	0
	F1
	F10
	F100
	F1000
	 
F1,	1
	2000
	0
F10,	0004
	2400
	0000
F100,	0007
	3100
	0000
F1000,	0012
	3720
	0000
A1,	0001		/1.1499196
	2231
	4110
A2,	0000		/0.6774323
	2553
	3032
A3,	7775		/0.2080030
	3247
	7536
A4,	7775		/0.1268089
	2016
	6431
/END TENX.
	 
AAEND6,	0
//END IF 6 ROUTINES.
	 
	 
/PBLOCK FOLLOWS.
	NOLIST
//PBLOCK
/PARAMETER BLOCK ASSIGNMENTS
/
	P0=3400		/DATA TYPE
	P1=3401		/CURRENT CHAN.
	P17=3417	/NO.SAMP IN SEG
	P20=3420	/NO.SEG IN ENSM
	P44=3450	/SEG LENGTH
	P55=3503	/A3 MAX
	P61=3517	/A5MAX
	P102=3602
/COMMAND DECODER ASSIGNMENTS
/
/
	STOP=JMP 20
	SCAN=JMP 21
	STRSCN=JMP 21
	INUNIT=JMP 22
	STORIT=JMP 23
	GETFIL=JMP 24
	GETFST=JMP 24
	GETNAM=JMP 25
	GETNXT=JMP 25
	DIRINI=JMP 26
	DIRLST=JMP 27
	ASSIGN=JMP 30
	DEASS=JMP 31
	OUTUNIT=JMP 32
	LODBLK=JMP 33
	RUNBLK=JMP 34
	FIND=JMP 35
	CALL=JMP 37
	UNCALL=JMP 40
	RUNPRG=JMP 41
	INTRACT=JMP 42
	MESOUT=JMP 43
	DISK=JMP 44
	TABSET=JMP 45
	INTABLE=JMP 46
	MISSNG=JMP 47
	TABGET=JMP 50
	TABPUT=JMP 51
	TABZER=JMP 52
	MAKDIL=JMP 53
	TABINI=JMP 54
	MGETNAM=JMP 55
	MGETFIL=JMP 56
	MSTORIT=JMP 57
/
/COMMAND LOCATIONS.
/
	FILNAM=2320
	WORD1=2323
	WORD2=2324
	INBUF=2325
/COMMAND NUMBERS.
	YES=17
	NO=20
	SAMPL=21
	TABLE=22
	GO=23
	NEXT=24
	CU=25
	CONT=26
	ALL=27
/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
/PBLOCK
/FEB 74.
	LIST
///END FRC
/APRIL 77
/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