1300          P2(I, I) = 1 + P2(I, I)
            NEXT I
1310      FOR I = 1 TO 8
                FOR J = 1 TO 8
            FOR K = 1 TO 8
1320                  P3(I, J) = P3(I, J) + P2(I, K) * P1(K ,J)
            NEXT K, J, I
1330      FOR I = 1 TO 8
                FOR J = 1 TO 8
            P1(I, J) = P3(I, J)
            NEXT J, I
1340      C= 0
            FOR I = 1 TO 8
            C = C + H(L, I) * D2(I)
        NEXT I
1350      C = ZL(L) - C
            FOR I = 1 TO 8
            K(I) = K(I) * C
        D2(I) = D2(I) + K(I)
        NEXT I
        NEXT L
    FOR L = 1 TO 9
        AA = 0
        FOR I = 1 TO 8
            AA = AA - H(L, I) * D2(I)
        NEXT I
        J(L) = ZL(L) + AA
            J(L) = J(L) * J(L)
        J(A) = J(A) + J(L)
    NEXT L
    A = A + 1
    GOTO 1352
1354  FOR I = 1 TO 8
            FOR J = 1 TO 8
            CODE% = 10 * (I - 1) + J
        LSET DAT$ = MKS$(P1(I, J))
        PUT #3, CODE%
        NEXT J,I
1355  FOR I=1 TO 8
            CODE% = 90 +I
            LSET DAT$=MKS$(D2(I))
            PUT #3,CODE%
        NEXT
        CLOSE #3:RETURN
1352  M = M-1:IF M<>0 THEN GOSUB 1354:GOTO 40
          GOTO 1470
        IF MN=1 THEN 1353
        FOR I=1 TO 8
            FOR J=1 TO 8
                G(I,J)=P1(I,J)
        NEXT J,I
        GOSUB 1720
        MN=1
        FOR I=1 TO 8
            FOR J=1 TO 8
                P22(I,J)=G(I,J+8)
        NEXT J,I
1405  FOR I=1 TO 8
            D1(I)=D2(I)
        NEXT 
        GOSUB 1354:GOTO 40
1353  FOR I=1 TO 8
            FOR J=1 TO 8
                G(I,J)=P1(I,J)
        NEXT J,I
        GOSUB 1720
        FOR I=1 TO 8
            FOR J=1 TO 8
                P1(I,J)=G(I,J+8)
            P4(I,J)=P1(I,J)-P22(I,J)
            G(I,J)=P4(I,J)
        NEXT J,I
        GOSUB 1720
        FOR I=1 TO 8
            K(I)=0
            FOR J=1 TO 8
                P5(I,J)=G(I,J+8)
            K(I)=K(I)+P1(I,J)*D2(J)-P22(I,J)*D1(J)
        NEXT J,I
        FOR I=1 TO 8
            D1(I)=0
            FOR J=1 TO 8
                D1(I)=D1(I)+P5(I,J)*K(J)
        NEXT J,I
1440  FOR I=1 TO 8
            FOR J=1 TO 8
                P1(I,J)=P5(I,J)
            P22(I,J)=P4(I,J)
        NEXT J,I
1460  FOR I=1 TO 8
            D2(I)=D1(I)
        NEXT
          D2(1)=116.81
          D2(2)=28.15
          D2(3)=3.91
          D2(4)=24.72
          D2(5)=64.07
          D2(6)=21.02
          D2(7)=5.94
          D2(8)=4.62
1470  GOSUB 1354:GOTO 1820
1700  CLS:PRINT "wrong with the data"
        GOTO 1820
1720  FOR I=1 TO 8
            FOR J=1 TO 8
                G(I,J+8)=0
            NEXT J
            G(I,I+8)=1
        NEXT I
1730  FOR I=1 TO 8
            FOR J=1 TO 8
1740          IF ABS(G(I,I))>=ABS(G(J,I)) THEN 1760
1750          FOR J1=1 TO 16
                    G1(J1)=G(I,J1)
                G(I,J1)=G(J,J1)
                G(J,J1)=G1(J1)
            NEXT J1
1760      NEXT J
            GO=G(I,I):IF GO=0 THEN GOTO 1700
1770      FOR J=1 TO 16
                G(I,J)=G(I,J)/GO
            NEXT J
1790      FOR J=1 TO 8
                GO=G(J,I):IF J=I THEN 1810
1800          FOR J1=1 TO 16
                    G(J,J1)=G(J,J1)-GO*G(I,J1)
            NEXT J1
1810  NEXT J,I
        RETURN
1820  'CALCULATION
        FOR L=1 TO 9
            AA=0
            FOR I=1 TO 8
                AA=AA-H(L,I)*D2(I)
            NEXT I
            J(L)=ZL(L)+AA
            J(L)=J(L)*J(L)
            J(10)=J(10)+J(L)
        NEXT L
        W=D2(1)+D2(2)+D2(3)+D2(4)
1520  FOR I=1 TO 3
            X(I,1)=(100-E(I,1))*D2(I)/100
            W(I,1)=D2(I)*100/W
        NEXT
        X(4,1)=D2(4)*B(1,1)/100
1530  W(4,1)=D2(4)*100/W
        FOR I=1 TO 4
            FOR J=1 TO 6
                A(I,J)=100*E(I,J+1)/(100-E(I,1))
            NEXT J
        NEXT I
       IF X(1,1)<=0 GOTO 1380
       IF X(2,1)<=0 GOTO 1390
       IF X(3,1)<=0 GOTO 1400
       temp=X(1,1)*A(1,5)+X(2,1)*A(2,5)
       O=(temp+X(3,1)*A(3,5)+Q(1,1)*A(4,5))/100
       IF O>=4.5 GOTO 1420
       FOR I=1 TO 4
           F(1,I)=D2(I+4)
       NEXT
       FOR I=5 TO 6
           temp=X(1,1)*A(1,I)+X(2,1)*A(2,I)
           F(1,I)=(temp+X(3,1)*A(3,I)+X(4,1)*A(4,I))/100
       NEXT
         K=(F(1,1)-1.65*F(1,3)- .35*F(1,4))/(2.8*F(1,2))
         N=F(1,2)/(F(1,3)+F(1,4))
         P=F(1,3)/F(1,4):O(2)=O(6)=0
       FOR I=1 TO 3
         G(I,2)=E(I,2)*W(I,1)/100
         G(I,6)=E(I,6)*W(I,1)/100
  NEXT 
     O(2)=G(1,2)+G(2,2)+G(3,2)
     O(6)=G(1,6)+G(2,6)+G(3,6)
     T=1.785*O(2)+2.48*O(6)
     X(5,1)=X(1,1)+X(2,1)+X(3,1)+X(4,1)
     W(5,1)=W(1,1)+W(2,1)+W(3,1)+W(4,1)
     F(1,7)=F(1,1)+F(1,2)+F(1,3)+F(1,4)+F(1,5)+F(1,6)
     US(0)=W(1,1)*B(1,4)/100
     US(1)=W(2,1)*B(1,4)/100
     US(2)=W(3,1)*B(1,4)/100
     US(3)=W(4,1)*B(1,4)/100
     US(4)=US(0)+US(1)+US(2)+US(3)
     FOR I=0 TO 4
       E(I,8)=0
       FOR J=1 TO 7
         E(I,8)=E(I,8)+E(I,J)
       NEXT J
     NEXT I
     LOCATE 9,29
      PRINT TAB(29);FNLEND$(K);TAB(35);FNLEND$(N);TAB(41);FNLEND$(P)
     lcpr 5,49,"Tc":lcpr 9,47,FNLEND$(T)
     LINE (371,43)-(419,59),,B
     PUT (372,28),xx
     FOR I=0 TO 3
       PUT (228+48*I,60),xx
     NEXT I
     LINE (227,27)-(419,75),,B
     LOCATE 13,54
      PRINT "Total";TAB(63);"BR";TAB(69);"NBR";TAB(75);"SETUP"
     FOR I=1 TO 4
      LOCATE 13+2*I,53
      PRINT USING "###.##";E(I,8);X(I,1);W(I,1)
     NEXT
     LOCATE 15,75:PRINT USING "##.##";US(0)
     LOCATE 17,75:PRINT USING "##.##";US(1)
     LOCATE 19,75:PRINT USING "##.##";US(2)
     LOCATE 21,75:PRINT USING "##.##";US(3)
     LOCATE 23,53:PRINT USING " ###.##";F(1,7);X(5,1);W(5,1)
     LOCATE 23,75:PRINT USING "##.##";US(4)
     J(15)=100*(B(1,5)-K)^2+(B(1,6)-N)^2+(B(1,7)-P)^2
     LOCATE 9,2:PRINT SPACE$(27)
     LOCATE 9,54:PRINT SPACE$(27)
     LOCATE 11,54:PRINT SPACE$(27)
     LOCATE 9,2:PRINT J(11)
     LOCATE 9,15:PRINT J(12)
     LOCATE 9,54:PRINT J(13)
     LOCATE 9,67:PRINT J(14)
     LOCATE 11,54:PRINT J(10)
     LOCATE 11,67:PRINT J(15)
     LOCATE 23,17
       FOR I=1 TO 6
         PRINT USING " ##.##";F(1,I);
       NEXT I
     FOR I=0 TO 2
       FOR J=1 TO 6
         X=420+56*I:y=92+(J-1)*16
     PUT(X,y),xxx
       NEXT J
     NEXT I
       FOR J=1 TO 6
         X=420+56*3:y=92+(J-1)*16
     PUT(X,y),xx
       NEXT J
      FOR I=1 TO 6
       PUT (84+48*I,172),xx
         NEXT I
        LINE (419,91)-(635,187),,B
        LINE (131,171)-(419-187),,B
        LINE (419,91)-(419,187),0
        lcpr 6,57,SPACE$(22)
         lcpr 6,57,"SATISFIED(Y/N)?"
1290  lcpr 5,57,SPACE$(22)
        lcpr 5,57,"SETUP AND CALCULATION"
       waitin I$
       SELECT CASE I$
       CASE "Y"
           I$="": GOTO 1360
       CASE "N"
           I$="": lcpr 3,20,"RECALCULATE"
       CASE ELSE
           I$="": BEEP: GOTO 1290
       END SELECT
       CLOSE #2
         waitin P$:CLS
       GOTO 30
1360  FOR I=0 TO 3
            LSET FILY=FNLEND$(US(I))
            PUT #2,I+1
        NEXT I
        CLOSE #2
        END
1380  CLS:PRINT "X<=0": GOTO 1430
1390  CLS:PRINT "Y<=0": GOTO 1430
1400  CLS:PRINT "Z<=0": GOTO 1430
1410  CLS:PRINT "N=0": GOTO 1430
1420  CLS:PRINT "M>4.5"
1430  PRINT "SOMETHING WRONG WITH THE DATA":FOR I=0 TO 1000:NEXT
        CLOSE #2
        waitin I$
        GOTO 30

SUB del
END SUB


SUB lcpr(I,J,I$)
  LOCATE I,J:PRINT I$;
END SUB

SUB waitin(I$)
wsx: I$=INKEY$: IF I$ = "" GOTO wsx
     I$ = UCASE$(I$)
END SUB