10  REM PREVIOUS SOURCE FROM 2000DMP5-5-84ICLCONTRIB A000
11  REM CONVERTED TO PT BASIC 3/08, CHANGES MADE...
12  REM REMOVED '7 ETC CODES, ADDED LET BEFORE ASSIGNMENTS
13  REM ADDED SUBROUTINE AT 9400 TO PRINT INTEGERS WITHOUT SPACES
14  REM MODIFIED INFORMATION PRINT WITH PROPER FORMATTING
15  REM ADDED SUBS AT 9100 9200 9300 TO PRINT PEOPLE BUSHELS ACRES
16  REM WITH PROPER PLURALITY (1 PEOPLE ETC PRINTED 1 PERSON) 
17  REM ADDED PROMPT FOR SEED NUMBER, CALLS RND THAT MANY TIMES
30  PRINT "ENTER SEED NUMBER";
31  INPUT Z
32  FOR Y=1 TO Z
33  LET X=RND(0)
34  NEXT Y
40  PRINT 
41  PRINT 
42  PRINT 
43  PRINT 
100  REM ** HAMURABI - GOVERN THE KINGDOM OF SUMERIA
110  REM ** MODIFIED BY PEOPLE'S COMPUTER COMPANY
120  REM ** VARIABLES USED IN THE PROGRAM
130  REM      A1 => POPULATION
140  REM      A2 => IMMIGRANTS LAST YEAR
150  REM      A3 => DEATHS LAST YEAR
160  REM      B1 => BUSHELS IN STOREHOUSES
170  REM      B2 => BUSHELS DESTROYED LAST YEAR BY RATS
180  REM      B3 => HARVEST PER ACRE LAST YEAR
190  REM      B4 => TOTAL HARVEST LAST YEAR
200  REM      C1 => ACRES OWNED BY CITY
210  REM      C2 => VALUE OF AN ACRE
220  REM      I  => TEMPORARY VARIABLE
230  REM      J  =>     "        "
300  REM ** INITIALIZATION
310  PRINT "HAMURABI - ";
320  PRINT "WHERE YOU GOVERN THE ANCIENT KINGDOM OF SUMERIA."
330  PRINT "THE OBJECT IS TO FIGURE OUT HOW THE GAME WORKS!!"
331  REM LAST ! IN ABOVE LINE WAS "'7"!"'7
340  PRINT "(IF YOU WANT TO QUIT, SELL ALL YOUR LAND.)"
350  PRINT 
400  LET A1=100
410  LET A2=5
420  LET A3=0
430  LET B1=2800
440  LET B2=200
450  LET B3=3
460  LET B4=3000
470  LET C1=1000
480  LET J=1
1000  REM ** REPORT TO HAMURABI
1010  PRINT 
1020  PRINT "HAMURABI, I BEG TO REPORT THAT LAST YEAR"
1030  PRINT 
1040  REM PRINT A3;"PEOPLE STARVED AND";A2;"PEOPLE CAME TO THE CITY."
1041  LET Z9=A3
1042  GOSUB 9400
1043  GOSUB 9100
1044  PRINT " STARVED AND ";
1045  LET Z9=A2
1046  GOSUB 9400
1047  GOSUB 9100
1048  PRINT " CAME TO THE CITY."
1050  IF J>0 THEN 1100
1060  LET A1=A1-INT(A1/2)
1070  PRINT "THE PLAGUE KILLED HALF THE PEOPLE."
1100  REM PRINT "THE POPULATION IS NOW";A1
1101  PRINT "THE POPULATION IS NOW ";
1102  LET Z9=A1
1103  GOSUB 9400
1104  PRINT "."
1110  PRINT 
1120  REM PRINT "WE HARVESTED";B4;"BUSHELS AT";B3;"BUSHELS PER ACRE."
1121  PRINT "WE HARVESTED ";
1122  LET Z9=B4
1123  GOSUB 9400
1124  GOSUB 9200
1125  PRINT " AT ";
1126  LET Z9=B3
1127  GOSUB 9400
1128  GOSUB 9200
1129  PRINT " PER ACRE."
1130  REM PRINT "RATS DESTROYED";B2;"BUSHELS LEAVING";B1;
1131  PRINT "RATS DESTROYED ";
1132  LET Z9=B2
1133  GOSUB 9400
1134  GOSUB 9200
1135  PRINT " LEAVING ";
1136  LET Z9=B1
1137  GOSUB 9400
1140  REM PRINT "BUSHELS IN THE STOREHOUSES."
1141  GOSUB 9200
1142  PRINT " IN THE STOREHOUSES."
1150  PRINT 
1160  REM PRINT "THE CITY OWNS";C1;"ACRES OF LAND."
1161  PRINT "THE CITY OWNS ";
1162  LET Z9=C1
1163  GOSUB 9400
1164  GOSUB 9300
1165  PRINT " OF LAND."
1170  LET C2=17+INT(6*RND(0))
1180  REM PRINT "LAND IS WORTH";C2;"BUSHELS PER ACRE."
1181  PRINT "LAND IS WORTH ";
1182  LET Z9=C2
1183  GOSUB 9400
1184  GOSUB 9200
1185  PRINT " PER ACRE."
1190  PRINT 
1200  PRINT 
1210  PRINT "HAMURABI . . ."
1300  REM ** BUY LAND?
1310  PRINT 
1320  PRINT "BUY HOW MANY ACRES";
1330  INPUT I
1340  LET I=INT(ABS(I))
1350  IF I=0 THEN 1500
1360  LET J=I*C2
1370  IF J <= B1 THEN 1400
1380  GOSUB 9000
1390  GOTO 1310
1400  LET B1=B1-J
1410  LET C1=C1+I
1500  REM ** SELL LAND?
1510  PRINT "SELL HOW MANY ACRES";
1520  INPUT I
1530  LET I=INT(ABS(I))
1540  IF I=0 THEN 1700
1550  IF I<C1 THEN 1600
1560  IF I=C1 THEN 9999
1570  GOSUB 9000
1580  GOTO 1510
1600  LET C1=C1-I
1610  LET B1=B1+C2*I
1700  REM ** DISTRIBUTE FOOD
1710  PRINT "HOW MANY BUSHELS SHALL WE DISTRIBUTE AS FOOD";
1720  INPUT I
1730  LET I=INT(ABS(I))
1740  IF I <= B1 THEN 1770
1750  GOSUB 9000
1760  GOTO 1710
1770  LET B1=B1-I
1780  LET A3=A1-INT(I/20)
1790  LET A2=0
1800  IF A3 >= 0 THEN 1900
1810  LET A2=-A3/2
1820  LET A3=0
1900  REM ** PLANT LAND
1910  PRINT "HOW MANY ACRES SHALL WE PLANT";
1920  INPUT I
1930  LET I=INT(ABS(I))
1935  IF I>C1 THEN 1960
1940  LET J=INT(I/2)
1950  IF J <= B1 THEN 1980
1960  GOSUB 9000
1970  GOTO 1910
1980  IF I>10*A1 THEN 1960
1990  LET B1=B1-J
2000  REM ** HARVEST, RATS, AND CHANGES IN POPULATION
2010  LET B3=INT(5*RND(0))+1
2020  LET B4=B3*I
2030  LET B2=INT((B1+B4)*7.00000E-02*RND(0))
2040  LET B1=B1-B2+B4
2050  LET J=INT(10*RND(0))
2060  LET A2=INT(A2+(5-B3)*B1/600+1)
2070  IF A2 <= 50 THEN 2100
2080  LET A2=50
2100  LET A1=A1+A2-A3
2110  GOTO 1010
9000  REM ** ERROR SUBROUTINE
9005  PRINT 
9010  PRINT "HAMURABI, THINK AGAIN - YOU ONLY HAVE"
9020  REM PRINT A1;"PEOPLE,";C1;"ACRES, AND";
9021  LET Z9=A1
9022  GOSUB 9400
9023  GOSUB 9100
9024  PRINT ", ";
9025  LET Z9=C1
9026  GOSUB 9400
9027  GOSUB 9300
9028  PRINT ", AND ";
9030  REM PRINT B1;"BUSHELS IN STOREHOUSES."
9031  LET Z9=B1
9032  GOSUB 9400
9033  GOSUB 9200
9034  PRINT " IN STOREHOUSES."
9040  PRINT 
9050  RETURN 
9099  REM *** PLURALITY CONTROL ***
9100  IF Z9=1 THEN 9130
9110  PRINT " PEOPLE";
9120  RETURN 
9130  PRINT " PERSON";
9140  RETURN 
9200  PRINT " BUSHEL";
9210  IF Z9=1 THEN 9240
9230  PRINT "S";
9240  RETURN 
9300  PRINT " ACRE";
9310  GOTO 9210
9395  REM *** INTEGER PRINT SUBROUTINE ***
9396  REM UP TO 6 DIGITS -999999 TO 999999, NO SPACES PRINTED
9397  REM NUMBER TO PRINT IN Z9, Z8 AND Z7 USED FOR TEMPS
9398  REM IF OUT OF RANGE JUST PRINTS
9400  IF ABS(Z9) <= 999999. THEN 9405
9402  PRINT Z9
9403  RETURN 
9405  IF Z9 >= 0 THEN 9420
9410  PRINT "-";
9420  LET Z8=ABS(Z9)
9430  LET Z8=INT(Z8)
9440  IF Z8<10 THEN 9560
9450  IF Z8<100 THEN 9530
9460  IF Z8<1000 THEN 9500
9461  IF Z8<10000 THEN 9470
9462  IF Z8<100000. THEN 9466
9463  LET Z7=INT(Z8/100000.)
9464  LET Z8=Z8-Z7*100000.
9465  GOSUB 9700
9466  LET Z7=INT(Z8/10000)
9467  LET Z8=Z8-Z7*10000
9468  GOSUB 9700
9470  LET Z7=INT(Z8/1000)
9480  LET Z8=Z8-Z7*1000
9490  GOSUB 9700
9500  LET Z7=INT(Z8/100)
9510  LET Z8=Z8-Z7*100
9520  GOSUB 9700
9530  LET Z7=INT(Z8/10)
9540  LET Z8=Z8-Z7*10
9550  GOSUB 9700
9560  LET Z7=Z8
9570  GOSUB 9700
9580  RETURN 
9695  REM DIGIT PRINT SUBROUTINE, DIGIT IN Z7
9700  IF Z7=1 THEN 9810
9710  IF Z7=2 THEN 9830
9720  IF Z7=3 THEN 9850
9730  IF Z7=4 THEN 9870
9740  IF Z7=5 THEN 9890
9750  IF Z7=6 THEN 9910
9760  IF Z7=7 THEN 9930
9770  IF Z7=8 THEN 9950
9780  IF Z7=9 THEN 9970
9790  PRINT "0";
9800  RETURN 
9810  PRINT "1";
9820  RETURN 
9830  PRINT "2";
9840  RETURN 
9850  PRINT "3";
9860  RETURN 
9870  PRINT "4";
9880  RETURN 
9890  PRINT "5";
9900  RETURN 
9910  PRINT "6";
9920  RETURN 
9930  PRINT "7";
9940  RETURN 
9950  PRINT "8";
9960  RETURN 
9970  PRINT "9";
9980  RETURN 
9999  END 

