1  PRINT "PYRAMID-- HANNU KURKI-SUONIO, HELSINKI, FINLAND"
2  PRINT 
3  PRINT "  IT IS YEAR 2710 B.C. YOU ARE RULING THE ANCIENT EGYPT AFTER"
4  PRINT "THE DEATH OF YOUR PREDECESSOR THE LATE PHARAOH KHAFRA. AN OR-"
5  PRINT "ACLE HAS PREDICTED THAT YOU WILL DEPART THIS LIFE IN EIGHT "
6  PRINT "YEARS AND THEREFORE YOU ARE BOUND TO START BUILDING YOUR PYR-"
7  PRINT "AMId DIRECTLY"'16"."
10  REM  HP CONTRIBUTED LIBRARY, 2/75
40  DEF FNM()=(^.5*15-^.3*22)/1.5-/33
50  DEF FNN()=(^3/5.E+08+^.1*200)/1.5
60  DEF FNO()=SQR(/100)*100
70  LET B=F=0
80  READ B1,D,E,G,I1
170  PRINT 
200  LET A=C=I=K=M=N=0
210  LET B=B*(B>0)+B1
220  LET F=F+1
260  PRINT "YOU'VE GOT"B"GOLD RINGS"
270  PRINT "HOW MANY METRES HIGH DO YOU WISH TO BUILD YOUR PYRAMID ";
280  INPUT C1
285  IF C1>200 THEN 280
290  IF C1>15 THEN 320
300  PRINT "DON'T BE TOO MODEST"
310  GOTO 280
320  PRINT "HOW MANY SLAVES DO YOU ACQUIRE ";
330  INPUT O
340  IF (1000*O)^.6>.7*B THEN 330
350  IF O>987 THEN 400
360  PRINT "TOO FEW, MY BOY, TOO FEW"
370  GOTO 330
400  LET B=INT(B-(1000*O)^.6)
420  PRINT "HOW MANY OF THEM DO YOU APPOINT TO FOREMEN ";
430  INPUT P
440  IF P<FNM(O)/3 OR P>O THEN 430
450  PRINT "HOW MANY SLAVES TO THE QUARRY              ";
460  INPUT X1
480  PRINT "HOW MANY TO CARRY STONES                   ";
490  INPUT X2
510  IF O <= P+X1+X2 OR X1+X2<0 THEN 440
540  LET T=O-P
550  LET X3=T-X1-X2
560  PRINT "THERE ARE"X3"SLAVES LEFT AS BUILDING LABOUR"
565  PRINT "YOU'VE STILL GOT"B"GOLD RINGS"
570  PRINT "HOW MUCH FOR TOOLS ETC.";
580  INPUT S
590  IF S >= B OR S<1 THEN 580
600  LET B=B-S
700  FOR I=1 TO I1
710  IF I=1 THEN 740
720  GOSUB 5000
730  GOTO 750
740  GOSUB 5300
750  IF T<599 THEN 6100
760  GOSUB 5500
780  IF B<0 THEN 6200
800  GOSUB 5500
1010  LET A=INT(A+ABS((S^.2)*(C1/20)^E*H/10*(4-SQR(C/C1)*G)*T1*D))
1030  IF A>C1^3/2+10 THEN 6300
1040  LET C=INT(C1-(((C1^3/2)-A)*2)^.333)
1100  PRINT 
1101  PRINT 
1130  PRINT I"YEAR"
1140  PRINT 
1160  PRINT A"STONES",C"METRES"
1170  PRINT 
1210  PRINT "SLAVES STARVED         "N
1220  PRINT "SLAVES DIED OF OVERWORK"M
1250  PRINT "SLAVES ESCAPED         "K
1260  PRINT 
1270  PRINT "YOU HAVE NOW"T"WORKERS AND"B"GOLD RINGS"
1500  NEXT I
1800  PRINT "YOU ARE APPROACHING THE END"
2020  PRINT "YOUR PYRAMID HAS NOW"A"STONES AND"C"METRES OF HEIGHT"
2050  IF B>3786 THEN 6400
2060  IF B<2 THEN 2105
2100  PRINT "YOUR SUCCESSOR WILL INHERIT THE REMAINING"B"GOLD RINGS"
2105  PRINT 
2520  IF C<10 OR C/C1<.4 THEN 3000
2540  PRINT "PYRAMID OF PHARAOH MENKAURA"F;TAB(35)".",C"METRES"
2545  IF I=0 THEN 2580
2550  FOR I=5 TO (C1-C)/3 STEP 6
2560  PRINT TAB(33-I)".."TAB(34+I)".."
2570  NEXT I
2580  FOR J=I+3 TO C1/3 STEP 2
2590  IF J>12.8*I/10 THEN 2630
2600  PRINT TAB(37.5-J)"*"TAB(37-I+3.4*(J-I))"..";
2610  PRINT TAB(34+I-3.4*(J-I))".."TAB(33.5+J)"*"
2620  GOTO 2640
2630  PRINT TAB(37.5-J)"*"TAB(35)"I"TAB(33.5+J)"*"
2640  NEXT J
2650  FOR I=C1/3-3 TO 1 STEP -4.5
2660  PRINT TAB(35-I)".."TAB(35)"I"TAB(36+I)".."
2670  NEXT I
3000  LET C[F]=C+F/100
3040  PRINT 
3050  PRINT "DOES YOUR SUCCESSOR WANT TO BUILD A PYRAMID (1 OR 0) ";
3060  INPUT Q
3070  PRINT 
3071  PRINT "########"
3072  PRINT 
3090  IF Q=0 OR F>9 THEN 4000
3120  GOTO 170
4000  PRINT "THERE ARE"F"PYRAMIDS ON THE SEPULCHER AREA"
4002  PRINT 
4010  FOR I=1 TO F
4020  LET K=0
4030  FOR J=1 TO F
4040  IF C[J]<K THEN 4060
4050  LET K=C[J]
4060  NEXT J
4070  PRINT "PYRAMID OF MENKAURA"INT(100*(K-INT(K))+.5)","INT(K)"M"
4080  LET C[INT(100*(K-INT(K))+.5)]=0
4090  NEXT I
4200  STOP 
5000  PRINT 
5010  PRINT "ANY CHANGES TO WORKING CONDITIONS (1 OR 0) ";
5020  INPUT Q
5030  IF Q=0 THEN 5370
5100  PRINT "HOW MUCH DO YOU WANT TO INCREASE THE NUMBER OF FOREMEN ";
5110  INPUT Q
5115  IF T-Q<3 THEN 5110
5120  IF Q >= 0 THEN 5150
5130  PRINT "NEGATIVE NUMBERS WEREN'T KNOWN IN THE ANCIENT EGYPT"
5140  GOTO 5110
5150  LET P=P+Q
5160  LET T=O-P
5300  PRINT "HOW MANY HOURS MUST THE SLAVES WORK DAILY ";
5310  INPUT H
5311  IF H<0 OR H>20 THEN 5310
5320  PRINT "HOW MUCH WILL YOU SPEND ON FOOD NEXT YEAR ";
5330  INPUT R
5350  IF R >= B OR R<0 THEN 5330
5370  LET B=B-R
5390  LET Q=N=INT(O-40*R/(H+I/1.5))*(40*R/(H+I/1.5)<O)
5410  GOSUB 6000
5430  LET Q=M=INT((H-10)^2/101*T)*(H>10)
5450  GOSUB 6000
5470  LET Q=K=INT(FNM(O)*T/(2*P))*(P<FNM(O))
5480  GOSUB 6000
5490  RETURN 
5500  LET Y3=T-FNN(T)-FNO(T)
5510  LET T1=(X1/FNN(T)<X2/FNO(T) AND X1/FNN(T)<X3/Y3)*T*X1/FNN(T)
5520  LET T1=T1+(X2/FNO(T)<X1/FNN(T) AND X2/FNO(T)<X3/Y3)*T*X2/FNO(T)
5530  LET T1=(T1+(T1=0)*T*X3/Y3)*((P<FNM(O))+(P>FNM(O))*FNM(O)/P)
5540  LET T1=T1+(K+M+N)/2*T1/T
5610  RETURN 
6000  LET X1=ABS((T-Q)*X1/T)
6010  LET X2=ABS((T-Q)*X2/T)
6020  LET X3=ABS((T-Q)*X3/T)
6040  LET T=T-Q
6050  LET O=T+P
6060  RETURN 
6100  PRINT 
6105  LET K5=(N+M+K)/15
6106  IF T<301 THEN 6110
6107  PRINT "WORKS CAN'T BE CONTINUED, BECAUSE NEARLY"
6110  PRINT "ALL WORKERS";
6115  IF N<K5 AND M<K5 THEN 6165
6120  PRINT " DIED OF";
6125  IF N<K5 THEN 6135
6130  PRINT " STARVATION";
6135  IF M<K5 THEN 6155
6140  IF N<K5 THEN 6150
6145  PRINT " AND";
6150  PRINT " OVERWORK";
6155  IF K<K5 THEN 6170
6160  PRINT " OR";
6165  PRINT " ESCAPED";
6170  PRINT 
6195  GOTO 2020
6200  PRINT 
6205  PRINT "YOU ARE OUT OF GOLD RINGS"
6206  LET B=0
6210  GOTO 2020
6300  PRINT 
6310  LET C=C1
6320  PRINT 
6325  PRINT "YOUR PYRAMID BECAME COMPLETED IN"I"YEARS"
6340  LET I=0
6350  GOTO 2020
6400  PRINT "THE REMAINING"B"GOLD RINGS WILL BE BURIED IN YOUR PYRAMID"
6420  LET B=0
6430  GOTO 2520
7000  DATA 40000.,.125,1.2,3.2,8
9999  END 
