*20 /// TCHINUM /PROGRAM TO COMPUTE CHI SQUARE /MATRIX AND VALUE FOR TWO SERIES /OF NUMFILES. /ALSO DOES TTEST. /WILL WORK IN DP MODE IF DESIRED. /MAX OF 666 VALUES PER CATEGORY,I.E., /N0 AND N1 MUST BE LESS THAN 667. /ASKS FOR F0 VALUES AS A SERIES OF NUMFILES. /ALSO ASKS FOR F1 SERIES. FOR EXAMPLE, /ENTRIES IN THE F0 SERIES WOULD COME /FROM ALL VALUES IN ALL F0 NUMFILES. /MAY OMIT INPUT LIST F0 OR F1 IN WHICH /CASE CORE IS PRESUMED LOADED BY A /PREVIOUS PASS. /AFTER EACH RUN, DF6,7,16,17 ARE LEFT UNTOUCHED /SO ONE MAY RUN PROGRAM UNUM WITHOUT /ENTERING A NEW LIST OF NUMFILES. /REQUIRES 16K OF CORE. /COORE MAP:IF2 ------ PROGRAM / IF5 ------ PROGRAM / DF6,7 ---- F0 VALUES / DF10 ----- QN7 IS NUMFILE PBLOCK / DF11 ----- CURRENT NUMFILE / DF12 ----- INPUT SYSFILE NAME LISTS / DF16,17 -- F1 VALUES /MAY ENTER A MESSAGE NOT TO EXCEDE 28(10) /CHARACTERS. /LODSYM NOT NEEDED. PBLOCK ADDED. LMODE SEGMNT 5 *20 LIF 2 JMP FILGET /SETUP FILES /ITEMS FILE0 START, STARTF LDA I C4, 4 PICK 0 0 STORE CC FIX FAC ISTOR1 NC /ITEMS FILE1 ADD C4 PICK KP1, 1 0 STORE DD FIX FAC ISTOR1 ND LOAD DD FADD CC STORE TTT /CHECK FOR BIG OR SMALL FILES. LIF 2 JMP CHKSIZ /SUM FILE0 CHKRET, CLR STC KNC / SF0, LDA KNC ADA I C20, 20 PICK /DOES NICE SP LOAD 0 0 STARTQ STORE TEM FMUL FAC FADD SS0 STORE SS0 LOAD TEM FADD F0SUM STORE F0SUM ADD KP1 ADM I KNC, 0 SAE I NC, 0 JMP SF0 / /SUM FILE1 / CLR STC KND / SF1, LDA KND ADD C20 PICK /DOES NICE SP LOAD 1 0 STARTQ STORE TEM FMUL FAC FADD SS1 STORE SS1 LOAD TEM FADD F1SUM STORE F1SUM ADD KP1 ADM I KND, 0 SAE I ND, 0 JMP SF1 EJECT / /COMPUTE Y / LOAD CC FADD DD STORE TEM LOAD F0SUM FADD F1SUM FDIV TEM STORE Y EJECT / /ITEM CHECK FILE0 / STARTF CLR STC KNC / ICK0, LDA KNC ADD C20 PICK 0 0 FSUB Y FAPO JMP .+10 /GREATER OR EQUAL LOAD FONE FADD FJ STORE FJ JMP .+7 /LESS LOAD FONE FADD FI STORE FI ADD KP1 ADM KNC SAE NC JMP ICK0 / /ITEM CHECK FILE1 / CLR STC KND / ICK1, LDA KND ADD C20 PICK PP1, 1 0 FSUB Y FAPO JMP .+10 /GREATER OR EQUAL LOAD FONE FADD FL STORE FL JMP .+7 /LESS LOAD FONE FADD FK STORE FK ADD KP1 ADM KND SAE ND JMP ICK1 EJECT / /COMPUTE A,B / / /A COMPUTE / LOAD FI FMUL FL STORE TEM LOAD FJ FMUL FK FCOMP FADD TEM FAPO FCOMP STORE TEM LOAD TTT FDIV FP2 FCOMP FADD TEM FMUL FAC FMUL TTT STORE AA / /B COMPUTE / LOAD FI FADD FJ STORE TEM LOAD FK FADD FL FMUL TEM STORE TEM LOAD FI FADD FK FMUL TEM STORE TEM LOAD FJ FADD FL FMUL TEM STORE BB EJECT / /PRINT RESULTS / SETWRD 400 LOAD FK OUTPUT GMK LOAD FL OUTPUT GML FADD FK OUTPUT G1T LOAD FI OUTPUT GMI LOAD FJ OUTPUT GMJ FADD FI OUTPUT G0T LOAD FI FADD FK OUTPUT TL LOAD FJ FADD FL OUTPUT TG FADD FI FADD FK OUTPUT TT / LIF 4 MESOUT HMES SETWRD 1243 /FILE0 LINE STARTQ LOAD F0SUM FDIV CC STARTF OUTPUT F0M /MEAN STARTQ LOAD F0SUM FMUL FAC FDIV CC STORE TEM /SUM SQD LOAD CC FSUB FONE STORE TEM3 LOAD SS0 JMP XC LOAD TEM2 STORE F0S LIF 4 MESOUT F0MES /FILE1 LINE LOAD F1SUM FDIV DD STARTF OUTPUT F1M /MEAN STARTQ LOAD F1SUM FMUL FAC FDIV DD STORE TEM /SUM SQD LOAD DD FSUB FONE STORE TEM3 LOAD SS1 JMP XC LOAD TEM2 STORE F1S LDA I F1MES-1 JMP MVIT LIF 4 MESOUT F0MES /BOTH LINE LOAD Y STARTF OUTPUT BM STARTQ LOAD F0SUM FADD F1SUM FMUL FAC FDIV TTT STORE TEM /SUM SQD LOAD TTT FSUB FONE STORE TEM3 LOAD SS0 FADD SS1 JMP XC LOAD TEM2 STORE B0S LDA I BMES-1 JMP MVIT LIF 4 MESOUT F0MES /TTEST LOAD TTT FSUB FP2 STORE TEM1 LOAD F0S FMUL FAC FMUL CC STORE TEM LOAD F1S FMUL FAC FMUL DD FADD TEM STORE TEM / LOAD F1SUM FDIV DD STORE TEM2 LOAD F0SUM FDIV CC FSUB TEM2 FAPO FCOMP STORE TEM2 RECIP CC STORE TEM3 RECIP DD FADD TEM3 STORE TEM3 / /T=TEM2/FSQT(TEM3*TEM/TEM1) /TEM=SD0^2 X N0 + SD1^2 X N1 /TEM1=N1+N2-2 /TEM2=M1-M2 /TEM3=1/N0 + 1/N1 / LOAD TEM FDIV TEM1 FMUL TEM3 SQRT FAC STORE TEM3 LOAD TEM2 FDIV TEM3 STARTF OUTPUT TVAL STARTQ LIF 4 MESOUT TMES / /FVALUE, RATIO OF VARIANCES. / LOAD /GET VARIANCES F1S FMUL FAC STORE F1SS LOAD F0S FMUL FAC STORE F0SS FAZE JMP .+2 JMP FZIP LOAD F1SS FAZE JMP .+2 JMP FZIP FSUB F0SS FAPO JMP FZZ LOAD F1SS FDIV F0SS JMP FOUT FZZ, LOAD F0SS FDIV F1SS JMP FOUT FZIP, FZER FOUT, STARTF /REMAIN SP OUTPUT FVAL LIF 4 MESOUT FMES /CHI SQR LOAD AA FDIV BB OUTPUT CH1 / LIF 4 MESOUT CRLF LIF 4 MESOUT G0MES LIF 4 MESOUT G1MES LIF 4 MESOUT TOTMES LIF 4 MESOUT CRLF LIF 4 MESOUT CHMES / LIF 4 JMP 20 EJECT / MVIT, STC 16 SET I 17 F0MES-1 LDA I 16 STA I 17 LDA I 16 STA I 17 LDA I 16 STA I 17 JMP 0 / XC, ADD 0 STC XCX FSUB TEM FDIV TEM3 SQRT FAC FAPO FZER STARTF OUTPUT F0SD STARTQ STORE TEM2 FMUL FAC STARTF OUTPUT F0V STARTQ LOAD TEM3 FADD FONE SQRT FAC STORE TEM LOAD TEM2 FDIV TEM STARTF OUTPUT F0SE STARTQ XCX, 0 /LEAVE /END XC. /ROUTINE TO SET SP(F) OR DP(E) MODES. STARTQ=JMP . MODE, 0 JMP 0 /END STARTQ. /MESSAGES / G1MES, TEXT .FILE1 . GMK, 0 0 4057 GML, 0 0 4057 G1T, 0 0 CRLF, 4543 / G0MES, TEXT .FILE0 . GMI, 0 0 4057 GMJ, 0 0 4057 G0T, 0 0 4543 / TOTMES, TEXT .TOTAL . TL, 0 0 4057 TG, 0 0 4057 TT, 0 0 4543 / HMES, TEXT . MEAN VAR STD DEV STD ERR. 4543 F0MES, TEXT .FILE0 . BM, F1M, F0M, 0 0 0 0 0 BV, F1V, F0V, 0 0 0 0 0 BSD, F1SD, F0SD, 0 0 0 0 0 BSER, F1SE, F0SE, 0 0 0 0 0 4543 F1MES, TEXT .FILE1 . BMES, TEXT .BOTH . TMES, TEXT .T=. TVAL, 0 0 0 0 0 4543 FMES, TEXT .F=. FVAL, 0 0 0 0 0 4543 / CHMES, TEXT .CHI SQD=. CH1, 0 0 0 0 0 4543 / / /DOUBLE & SINGLE PRECISION BUFFERS. AA, *.+6 BB, *.+6 CC, *.+6 DD, *.+6 TTT, *.+6 F0SUM, *.+6 F1SUM, *.+6 SS0, *.+6 SS1, *.+6 F0S, *.+6 F1S, *.+6 B0S, *.+6 F0SS, *.+6 F1SS, *.+6 Y, *.+6 FI, *.+6 FJ, *.+6 FK, *.+6 FL, *.+6 TEM, *.+6 TEM1, *.+6 TEM2, *.+6 TEM3, *.+6 FP1, FONE, 1 2000 0 0 0 0 FP2, 2 2000 0 0 0 0 /END SP & DP BUFFERS. /ROUTINE TO JUMP TO PICK MIMIC ROUTINE /IN IF2. /RETURN VIA BETA3 IS HANDLED IN IF2. PICK=JMP . SET 3 0 LIF 2 AAEND5, JMP PIK2 /END PICK IMITATOR. //END IF5 PROGRAMMING. // START IF2 PROGRAMMING. SEGMNT 2 *20 /NOW FOLLOWS A ROUTINE TO SUBSTITUTE /FOR 2DILFIL. /TYPE OUT PROGRAM NAME. FILGET, D0, LIF 4 MESOUT M0 /TCHINUM /INITIALIZE TO GET BOTH F0 & F1 LISTS. LDA I LIF 4 STA GETF0 STC GETF1 /ASK FOR INPUT UNITS. LIF 4 INUNITS /ASK IF DOUBLE PRECISION IS WANTED. D0A, LIF 4 INTRACT CJ0A M0A /DOUBLE PRECISION?: CJ0A, T1 J0A J0A, JMP FILGET /CR JMP GODP /YES JMP GOSP /NO JMP D0A /? NUM GOSP, LDA I STARTF JMP GODP+2 GODP, LDA I STARTE LDF 5 STA 2\MODE /ASK FOR MESSAGE AS TYPEOUT HEADER. D1, LIF 4 INTRACT CJ1 M1 /MESSAGE: CJ1, T1 J1 T1, YES NO 0 J1, JMP FILGET /CR JMP D1 /? YES JMP NOMES /NO JMP .+1 /NUM /MOVE MESSAGE FROM INBUF & PLACE IN BUFOUT. LDF 4 SET I 1 4\INBUF-1 SET I 2 4\BUFOUT-1 SET I 3 -34 /28(10) BKMES, LDH I 1 STH I 2 SAE I 45 SKP JMP GOTMES /45=END OF MES XSK I 3 JMP BKMES HLT /MESSAGE TOO LARGE NOMES, LDA I 4543 STC BUFOUT JMP D2 GOTMES, LDA I 43 STH I 2 /END D1, MESSAGE HANDLER. /NEW F0 NUMFILE LIST? D2, LIF 4 INTRACT CJ2 M2 /F0 NUMFILES?: CJ2, T1 J2 J2, JMP FILGET /CR JMP D2A /YES JMP NOF0 /NO JMP D2 /? NUM /OLD F0 HANDLER. NOF0, LDA I JMP GETF1 STC GETF0 JMP D3 /NEW F0 LIST HANDLER. D2A, LIF 4 TABSET 0 LDF 12 2000 400 F0NAM, LIF 4 /ASK F0 NAMES INTABLE 0 /END D2, F0 LIST HANDLER. /NEW F1 NUMFILE LIST? D3, LIF 4 INTRACT CJ3 M3 /F1 NUMFILES?: CJ3, T1 J3 J3, JMP FILGET /CR JMP D3A /YES JMP NOF1 /NO JMP D3 /? NUM /OLD F1 LIST HANDLER. NOF1, LDA I JMP TYPMES STC GETF1 JMP SETVAL /NEW F1 LIST HANDLER. D3A, LIF 4 TABSET 1 LDF 12 3000 400 F1NAM, LIF 4 /ASK F1 NAMES INTABLE 1 /END D3, F1 LIST HANDLER. /SETUP TO GET VALUES FROM F1 & F0. SETVAL, LDF 4 LDA I 7110 STA WORD1 /PBLK LDA I 4411 STA WORD2 /DATA /INITIALIZE F0 DF (6) AND F1 DF (16). CLR ADD KLDF6 STC F0DF ADD KLDF16 STC F1DF /NOW LOAD F0 FROM ITS INPUT FILES. GETF0, 0 /LIF 4, JMP GETF1 TABINI 0 KLDF6, LDF 6 FZER STORE 2000 /F0(0)=0 STORE 2014 /F0(4)=0 SET I 6 2060 /F0(16) PNTR NXTF0, LIF 4 TABGET 0 JMP GETF1 /F0 DUN HLT /MISSING F0VAL, JMP NUMSET /SET BETA 10 & 11 BKF0, LDF 11 /MOVE VALUE LOAD 4\11 F0DF, 0 /LDF 6,7 STORE 4\6 LOAD F1 LDF 6 FADD 2014 STORE 2014 /WATCH FOR DF OVERFLOW. XSK 6 /SKP ON 3777 JMP .+6 /NO OVERFLOW LDA I 6 /OVERFLOW, BUMP 6 CLR ADD F0DF /BUMP DF ADD C1 STC F0DF XSK I 10 /DUN THIS NUMFILE? JMP BKF0 /NO JMP NXTF0 /YES, GET NEXT F0 /END GETF0. /NOW LOAD F1 FROM ITS INPUT FILES. GETF1, 0 /LIF 4, JMP TYPMES TABINI 1 KLDF16, LDF 16 FZER STORE 2014 /F1(4)=0 LOAD FP1 STORE 2000 /F1(0)=1 SET I 16 2060 /F1(16) PNTR NXTF1, LIF 4 TABGET 1 JMP TYPMES /F1 DUN HLT /MISSING F1VAL, JMP NUMSET /SET BETA 10 & 11 BKF1, LDF 11 /MOVE VALUE LOAD 4\11 F1DF, 0 /LDF 16,17 STORE 4\16 LOAD F1 LDF 16 FADD 2014 STORE 2014 /WATCH FOR DF OVERFLOW. XSK 16 /SKP ON 3777 JMP .+6 /NO OVERFLOW LDA I 16 /OVERFLOW, BUMP 16 CLR ADD F1DF /BUMP LDF ADD C1 STC F1DF XSK I 10 /DUN THIS NUMFILE? JMP BKF1 /NO JMP NXTF1 /YES, GET NEXT F1 /END GETF1. /ROUTINE TO SET BETA 10 & 11 FOR MOVING VALUES /FROM NUMFILE TO DF6,7,16, & 17. NUMSET, LDF 10 /PBLK DF LDA P20 /NUM ENTRIES COM STC 10 /CNTR SET I 11 /PNTR 2000 JMP 0 /LEAVE /END NUMSET. /NOW TYPE OUT HEADER MESSAGE. TYPMES, LIF 4 MESOUT BUFOUT-1 SETWRD 0400 LDF 6 /TYPOUT N0,N1,& DF LOAD 2014 /NUM0 OUTPUT NUM0 LDF 16 FADD 2014 /NUM1 FSUB F1 OUTPUT DF LOAD 2014 OUTPUT NUM1 LIF 4 MESOUT BUF2 /RTRN TO MAIN PROGRAM IN IF5. FILGX, LIF 5 JMP START C1, F1, 1 2000 0 /MESSAGES. M0, TEXT %TCHINUM % 4543 M0A, TEXT %DOUBLE PRECISION?:% 4040 BUFOUT, 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 M1, TEXT %MESGE:% M2, TEXT %F0 FILES?:% M3, TEXT %F1 FILES?:% BUF2, TEXT %N0= % NUM0, 00 00 4040 TEXT %N1= % NUM1, 00 00 4040 TEXT %DF= % DF, 00 00 4543 /END FILGET. /IF 2 PICK HANDLER. PIK2, MUL I /AC=ITEM NUM 3 SWITCH, SAGE /SAGE,JMP PIK2A 1777 JMP PIK2A /1774 OR LESS ADD C1 />=2000 STC 1 /PNTR LDA I /SET 2ND DF LDF 7 JMP PIK2B PIK2A, ADA I 2000 STC 1 /PNTR LDA I /SET 1ST DF LDF 6 PIK2B, STC LHDF LDF 5 LDA /BETA3 OF IF5 2003 STC 4 LDA 4 /0-1, F0-F1 ROL 3 /0-10 ADA I LHDF, 0 /LDF 6 OR 7 STC PIKDF /LDF 6,16,7,OR17 LDA I LOAD /744=LOAD, 745=STORE ADA I 4 /READ=0, WRITE=1 STC PIKCOM XSK I 4 LDA 4 STA /RESET BETA3,IF5 2003 /NOW GET WANTED VALUE. STARTF PIKDF, 0 /LDF 6,7,16,17 PIKCOM, 0 /LOAD, STORE 1 /PNTR /NOW MAKE SP LOAD DP COMPATIBLE. STORE HOLD LOAD HOLD /RTRN TO IF 5. LIF 5 JMP 3 /LEAVE C2, 2 HOLD, 0 0 0 0 0 0 /ROUTINE TO SEE IF NEED TO CHECK FOR /2ND DATA FIELD. CHKSIZ, LDF 5 LDA 2\NC /SIZE F0 SAGE 500 /320(10) SKP JMP BIGSIZ LDA 2\ND /SIZE F1 SAGE 500 /320(10) JMP SMLSIZ BIGSIZ, LDA I /BIG FILES SAGE STC SWITCH LIF 5 JMP CHKRET SMLSIZ, LDA I /SMALL FILES JMP PIK2A JMP BIGSIZ+2 /END PIK2. /// SAGE /SUBROUTINE SAGE DOES SKIP IF VALUE /IN AC IS GREATER OR EQUAL TO CONTENTS OF P+1. /DOES NOT DESTROY AC, DF, OR BETA REGISTERS. SAGE=JMP . STC SAGEX+1 /SAVE AC ADD 1 STC SAGEX+3 /SAVE BETA 1 SET 1 0 ADD 1 STA SAGEX+2 /ORIG RTRN JUMP BCL I 6000 STC 1 /NOW COMPARE VALUES. LDA 1 COM ADD SAGEX+1 AZE I JMP .+7 /EQUAL APO I /NOT EQUAL JMP .+5 /GRTR CLR /LESS /NOW SET UP RETURN JUMPS. ADD SAGEX+2 ADD C1 JMP .+4 CLR ADD SAGEX+2 ADD C2 STC SAGEX SET 1 /RESTORE BETA 1 SAGEX+3 ADD SAGEX+1 /RESTORE AC SAGEX, 0 /LEAVE, RTRN JUMP 0 /AC 0 /ORIG RTRN JMP 0 /BETA 1 AAEND2, 0 /SAGEX IS OFTEN USED AS A FP REGISTER AS WELL. /END SAGE. /END IF2 PROGRAMMING. /END PROGRAM. /PBLOCK FOLLOWS NOLIST //PBLOCK P20=3420 /NO.SEG IN ENSM / /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 /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 PBLOCK ///END TCHINUM /MAY 76 /FHD