1000 ' MONOP MONOPOLY BORROWED FROM HP2000 SYSTEM REVISED 2.08.81 1001 ' REVISED FOR CPM MBASIC-80 06/26/82 1002 ' 1010 DATA "MEDDITERANEAN AVE","2","BALTIC AVE","4","READING RR" 1020 DATA "ORIENTAL AVE","3","VERMONT AVE","CONNECTICUT AVE","7" 1030 DATA "ST CHARLES PLACE","ELECTRIC CO","STATES AVE","VIRGINIA AVE" 1040 DATA "PENN. RR","ST JAMES PLACE","2","TENNESSEE AVE","NEW YORK AVE","5" 1050 DATA "KENTUCKY AVE","3","INDIANA AVE","ILLINOIS AVE","B AND O RR" 1060 DATA "ATLANTIC AVE","VENTNOR AVE","WATER WORKS","MARVINS GARDENS" 1070 DATA "1","PACIFIC AVE","NO. CAROLINA AVE","2","PENNSYLVANIA AVE" 1080 DATA "SHORT LINE RR","3","PARK PLACE","6","BOARD WALK" 1090 I$="":PRINT CHR$(26);:INPUT"INSTRUCTIONS";I$:IF I$=""THEN 1090 1100 IF LEFT$(I$,1)<>"Y" THEN 1340 1110 PRINT" THIS IS MONOPOLY. YOU WILL PLAY AGAINST COMAC (COMPUTER-MACHINE)" 1120 PRINT "THE RULES ARE THE SAME AS THE GAME OF MONOPOLY BY PARKER BROTHERS." 1130 PRINT "BECAUSE WE CAN'T PRINT THE BOARD FOR YOU, WE PROVIDE THE FOLLOWING" 1140 PRINT "COMMANDS:":PRINT:PRINT 1150 PRINT "LIS":PRINT TAB(10);"LIST ALL PROPERTY." 1160 PRINT "LIS,GRO,[COLOR GROUP]" 1170 PRINT TAB(10);"LIST PROPERTY OF THE GROUP SPECIFIED." 1180 PRINT TAB(10);"LEGAL GROUPS ARE: PURPLE, L.BLUE, VIOLET, ORANGE," 1190 PRINT TAB(29);"RED, YELLOW, GREEN, AND D.BLUE." 1195 PRINT:PRINT:PRINT:PRINT:LINE INPUT "HIT WHEN READY ";A$ 1200 PRINT "LIS,MIN(COM)" 1210 PRINT TAB(10);"LIST ALL PROPERTY OF SPECIFIED PERSON OR HUMAN." 1220 PRINT "LIS,MIN(COM),MOR" 1230 PRINT TAB(10);"SAME AS ABOVE, BUT LISTS ONLY MORTGAGED PROPERTY." 1240 PRINT "LIS,[PROPERTY NAME]":PRINT TAB(10);"LIST SPECIFIED PROPERTY." 1250 PRINT "QUI":PRINT TAB(10);"TERMINATE GAME." 1260 PRINT "BUY":PRINT TAB(10);"BUY HOUSES." 1270 PRINT "MOR":PRINT TAB(10);"MORTGAGED PROPERTY." 1280 PRINT "UNM":PRINT TAB(10);"PAY OFF MORTGAGE." 1290 PRINT:PRINT"NOTE:":PRINT TAB(10);"THE GRO FORMAT OF THE LIST COMMAND" 1300 PRINT TAB(10);"CAN BE USE FOR THE BUY COMMAND." 1310 PRINT TAB(10);"THE [PROPERTY NAME] FORMAT OF THE LIST COMMAND" 1320 PRINT TAB(10);"CAN BE USED IN THE BUY, MOR, AND UNM COMMANDS." 1330 PRINT:PRINT 1335 LINE INPUT "";A$ 1336 PRINT CHR$(26) 1340 PRINT TAB(20);"*MONOPOLY*":X9=1 1341 DIM U(10) 1342 DIM I(30),G[10,3],R[16,6],B[39,3],P[39],A[2,2],J[2,2],L[2],X[3],Z[3],C(32) 1343 DEF FNG(K)=INT(K/5+1) 1344 DEF FNF(K)=(9*ABS(INT(K/5)*5=K)+10*ABS(K=12 OR K=28)) 1345 DEF FNR(K)=-ABS(ABS((K+1)/5<>INT((K+1)/5)) AND ABS(K<>3)) 1346 DEF FNN(K)=INT(K*RND(1)+1) 1347 DEF FNH(K)=50*INT((K+1)/2) 1360 GOSUB 3940 1370 GOSUB 4350 1380 R0=D1+D2 1390 GOSUB 4350 1400 IF R01 THEN 1760 1730 Z$=P$ 1740 GOSUB 4620 1750 ON X0 GOTO 2050,2400,2440,2210,2330,2350,2380 1760 IF B(K8,1)=0 THEN 1790 1770 GOSUB 6750 1780 GOTO 2090 1790 A=3-T 1800 PRINT P$;", PRICE $";P(K8); 1810 A=3-A 1820 IF A=2 THEN 1950 1830 I$="":INPUT"WANT TO BUY ";I$ 1840 PRINT 1850 IF I$="" THEN 1830 1860 IF LEFT$(I$,1)="Y" THEN 1880 1870 ON ABS(A=T)+1 GOTO 2090,1810 1880 W=-P[K8] 1890 A7=0 1900 ON A GOSUB 6970,7380 1910 B[K8,1]=A 1920 XX=FNG(K8):XY=FNF(K8):IF XY>XX THEN XX=XY 1930 G(XX,A)=G(XX,A)+1 1940 GOTO 2090 1950 XX=FNG(K8):XY=FNF(K8):IF XY>XX THEN XX=XY 1960 G0=XX 1970 IF A[A,A]8 OR G(G0,1)=0 THEN 2030 1990 IF G(G0,1) AND G(G0,2)=0 THEN 2030 2000 IF A[2,1]-P[K8]>100 THEN 2030 2010 PRINT "COMAC passes!" 2020 ON ABS(A=T)+1 GOTO 2090,1810 2030 PRINT "COMAC will buy!" 2040 GOTO 1880 2050 PRINT "Go to jail, do not pass go!" 2060 L[T]=10 2070 J[T,2]=3 2080 D1=-1 2090 T=(3-T)*ABS(D1<>D2)+T*ABS(D1=D2) 2100 D=D*ABS(D1=D2) 2110 IF T=2 THEN 2190 2120 IF D1=D2 THEN 2170 2130 GOSUB 2870 2140 GOSUB 6540 2150 ON Q8 GOSUB 4670 2160 GOSUB 6380 2170 PRINT "YOUR MOVE <> "; 2180 GOTO 1470 2190 PRINT "COMAC MOVES <> "; 2200 GOTO 1470 2210 PRINT "Income tax:$200 or 10% "; 2220 IF T=2 THEN 2300 2230 Z$="":INPUT"WANT 10% ";Z$ 2240 IF Z$="" THEN 2230 2250 IF LEFT$(Z$,1)="Y" THEN 2310 2260 W=-200 2270 PRINT USING"$#### TAX MUST BE PAID!";-W 2280 ON T GOSUB 6970,7380 2290 GOTO 2090 2300 IF A[T,2] >= 2000 THEN 2260 2310 W=-INT(A[T,2]/10) 2320 GOTO 2270 2330 PRINT "Free parking" 2340 GOTO 2090 2350 PRINT "Luxury tax, $75" 2360 W=-75 2370 GOTO 2280 2380 PRINT "VISITING JAIL" 2390 GOTO 2090 2400 PRINT "COMMUNITY CHEST : "; 2410 C1=(C1+1)*ABS(C1<16)+ABS(C1=16) 2420 L1=C[C1] 2430 GOTO 2470 2440 PRINT "CHANCE : "; 2450 C2=(C2+1)*ABS(C2<32)+17*ABS(C2=32) 2460 L1=C[C2] 2470 ' 2480 GET#1,L1 2490 Z$=AA$:W=CVI(AB$):X8=CVI(AD$) 2500 IF W>0 THEN ON W GOTO 2660,2690,2710,2730,2760,2840 2510 IF X8 THEN 2610 2520 IF W<0 THEN 2590 2530 PRINT Z$;" collect $";W 2540 ON T GOSUB 6970,7380 2550 IF L1<16 OR L1>17 THEN 2090 2560 W=-W 2570 ON T GOSUB 7380,6970 2580 GOTO 2090 2590 PRINT"PAY ";Z$;" $";-W 2600 GOTO 2540 2610 IF X8<0 THEN 2050 2620 PRINT "Advance token to ";Z$ 2630 L(T)=X8+40*ABS(L(T)>X8) 2640 D3=2 2650 GOTO 1590 2660 PRINT "GO BACK 3" 2670 L[T]=L[T]-3 2680 GOTO 1590 2690 X8=28-16*ABS(L[T]=7 OR L[T]=36) 2700 GOTO 2620 2710 X8=25-10*ABS(L[T]=7)-20*ABS(L[T]=36) 2720 GOTO 2620 2730 PRINT "Get out of jail free!" 2740 J[T,1]=J[T,1]+1 2750 GOTO 2090 2760 X7=25:X8=25 2770 W=0 2780 FOR K7=1 TO 39 2790 W=W-(X7*B[K7,3]-X8*ABS(B[K7,3]=5))*ABS(B[K7,1]=T) 2800 NEXT K7 2810 PRINT USING"TAX $#### PER HOUSE, $#### PER HOTEL";X7;X7*5-X8 2820 Z$="" 2830 GOTO 2590 2840 X7=40 2850 X8=85 2860 GOTO 2770 2870 FOR K7=0 TO 8:U(K7)=0:NEXT K7 2880 FOR K7=0 TO 1 2890 FOR G1=1 TO 8 2900 X9=INT(A[2,1]/FNH(G1)) 2910 IF X9=0 OR G[G1,2]-G[G1,3] OR U[G1] THEN 3230 2920 X8=ABS(G1>1 AND G1<8) 2930 GOSUB 5310 2940 X7=G[G1,3]*5-H 2950 IF X7=0 OR B(X1,2)+B(X2,2)+B(X3,2) THEN 3230 2960 V7=X1-L[1]+40*ABS(X1-L[1]<0) 2970 IF K7=0 AND (V7<5 OR V7>14) THEN 3230 2980 X6=FNN(X9):IF X7B[X[K9],3] THEN 3090 3050 NEXT K9 3060 Z[K8]=Z[K8]+1 3070 X6=X6-1 3080 IF X6=0 THEN 3100 3090 NEXT K8 3100 FOR K8=1 TO 2+X8 3110 IF Z(K8)=0 THEN 3210 3120 RESTORE 3130 FOR K9=1 TO X[K8] 3140 READ P$ 3150 NEXT K9 3160 PRINT USING"COMAC BUYS # HOUSE(S) ON \ \";Z(K8);P$ 3170 W=-Z[K8]*FNH(G1) 3180 A7=0 3190 GOSUB 7380 3200 B[X[K8],3]=B[X[K8],3]+Z[K8] 3210 NEXT K8 3220 U[G1]=1 3230 NEXT G1 3240 NEXT K7 3250 RETURN 3260 W=0 3270 T1=1 3280 IF I1=0 THEN 3340 3290 GOSUB 3880 3300 GOSUB 5120 3310 GOSUB 7050 3320 IF I1 THEN 3290 3330 RETURN 3340 GOSUB 7020 3350 RETURN 3360 S0=5 3370 L$="MINCOMGROFREATTCAS" 3380 O$="FYC M" 3390 IF I1=0 THEN 3550 3400 GOSUB 3880 3410 S1=0:S1=INSTR(L$,LEFT$(Z$,3)) 3420 S0=INT((S1+2)/3) 3430 IF S0 THEN 3480 3440 GOSUB 3570 3450 IF I1=0 THEN 3560 3460 GOSUB 3880 3470 GOTO 3440 3480 M=-1 3490 ON S0 GOTO 3500,3500,3450,3550,3790,4670 3500 IF I1=0 THEN 3550 3510 GOSUB 3880 3520 IF LEFT$(Z$,3)="MOR" THEN 3540 3530 M=M-1 3540 M=M+2 3550 GOSUB 3570 3560 RETURN 3570 RESTORE 3580 FOR K5=1 TO 39 3590 READ P$ 3600 IF LEN(P$)=1 THEN 3770 3610 IF S0=5 THEN 3720 3620 XX=FNG(K5):XY=FNF(K5):IF XY>XX THEN XX=XY 3630 G0=XX 3640 IF S0<>3 THEN 3670 3650 IF LEFT$(Z$,2)=MID$(R$,G0*2-1,2) THEN 3720 3660 GOTO 3770 3670 IF S0<>0 THEN 3700 3680 IF LEFT$(Z$,5)=LEFT$(P$,5) THEN 3720 3690 GOTO 3770 3700 IF B[K5,1]=S0 AND ABS(B[K5,2]=M OR M=-1) THEN 3720 3710 IF S0<>4 OR B[K5,1]<>0 THEN 3770 3720 PRINT MID$(O$,B(K5,1)+1,1);MID$(O$,B(K5,2)+4,1);" ";P$; 3730 IF B(K5,3)=0 THEN 3750 3740 PRINT TAB(25)"Houses ="B[K5,3]; 3750 PRINT 3760 IF S0=0 THEN 3780 3770 NEXT K5 3780 RETURN 3790 V$="PURPLEL.BLUEVIOLETORANGERED YELLOWGREEN D.BLUERAIL UTIL " 3800 FOR Q9=1 TO 10 3810 PRINT MID$(V$,6*Q9-5,6);" - "; 3820 IF G(Q9,1)+G(Q9,2)=0 THEN PRINT"FREE":GOTO 3860 3830 IF G(Q9,1)<>0 AND G(Q9,2)<>0 THEN PRINT"NOT ATTAINABLE":GOTO 3860 3840 IF G(Q9,1)<>0 THEN PRINT"YOU -";G(Q9,1):GOTO 3860 3850 PRINT"COMAC -";G(Q9,2) 3860 NEXT Q9 3870 RETURN 3880 I1=I1+1 3890 Z$=MID$(I$,I(I1),I(I1+1)-2-I(I1)+1) 3900 I1=I1*ABS(I1<>Q5) 3910 B9=LEN(Z$)+1 3920 Z$=Z$+" " 3930 RETURN 3940 FOR K=0 TO 10:FOR KK=0 TO 3:G(K,KK)=0:NEXT KK:NEXT K:'MAT G=ZER 3950 FOR K=1 TO 10:G(K,3)=3-ABS(K=1)-ABS(K=8)+ABS(K=9)-ABS(K=10):NEXT K 3960 FOR K=0 TO 39:FOR KK=0 TO 3:B(K,KK)=0:NEXT KK:NEXT K:'MAT B=ZER 3970 FOR K=0 TO 2:FOR KK=0 TO 2:A(K,KK)=1:NEXT KK:NEXT K:'MAT A=CON 3980 FOR K=0 TO 2:FOR KK=0 TO 2:A(K,KK)=A(K,KK)*1500:NEXT KK:NEXT K 3990 T=0 4000 FOR K=0 TO 2:FOR KK=0 TO 2:J(K,KK)=0:NEXT KK:NEXT K:' MAT J=ZER 4010 FOR K=0 TO 2:L(K)=0:NEXT:' MAT L=ZER 4020 CLOSE:OPEN"R",1,"MONOPD.DAT" 4030 FIELD #1,20 AS AA$,2 AS AB$,2 AS AD$,4 AS AE$,4 AS AF$,2 AS AG$, 2 AS AH$,2 AS AI$ 4031 GET #1,50:N=CVI(AB$):RANDOMIZE N:N=INT(20000*RND(1)) 4032 LSET AB$=MKI$(N):PUT #1,50 4040 FOR K=1 TO 16 4050 GET #1,K:R1=CVS(AE$):R2=CVS(AF$) 4060 R[K,1]=2*K+5*ABS(K=15)+18*ABS(K=16) 4070 R[K,2]=5*R[K,1]+10*ABS(K=14)-50*ABS(K=16) 4080 R[K,6]=INT(R2/100) 4090 R[K,3]=R2*10-R[K,6]*1000 4100 R[K,4]=INT(R1/10000)*10 4110 R[K,5]=R1-R[K,4]*1000 4120 NEXT K 4130 D=0:W=0 4140 RESTORE 4150 FOR K=1 TO 39 4160 READ P$ 4170 IF LEN(P$)=1 THEN 4200 4180 XX=FNG(K):XY=FNF(K):IF XY>XX THEN XX=XY 4190 P(K)=60+40*(XX-1)+ABS((((2*XX-FNR(K))/XX)=2)*20*(K<>3))+ABS(K=37)*10+ABS(K=39)*40 4200 NEXT K 4210 P(5)=200:P(15)=200:P(25)=200:P(35)=200 4220 P(12)=150:P(28)=150 4230 FOR K=1 TO 32:C(K)=0:NEXT K 4240 FOR K=1 TO 32 4250 X=FNN(16)+ABS(K>16)*16 4260 IF C(X) THEN 4250 4270 C(X)=K 4280 NEXT K 4290 R$="PUL.VIORREYEGRD.RRUT" 4300 C1=0 4310 C2=16 4320 I1=0 4330 A7=1:T1=1:Q8=1 4340 RETURN 4350 D1=FNN(6) 4360 D2=FNN(6) 4370 D=D+ABS(D1=D2) 4380 PRINT USING"ROLL: # - #";D1;D2 4390 RETURN 4400 I$="":LINE INPUT I$:Z=LEN(I$) 4410 I1=0 4420 PRINT 4430 IF I$="" THEN 4450 4440 GOTO 4480 4450 IF C9 THEN 4610 4460 PRINT "Bad. Retype-"; 4470 GOTO 4400 4480 FOR K=0 TO 30:I(K)=0:NEXT K 4490 X4=0 4500 Q5=0 4510 FOR K9=1 TO LEN(I$) 4520 IF MID$(I$,K9,1)="," THEN 4580 4530 IF X4 THEN 4590 4540 Q5=Q5+1 4550 I[Q5]=K9 4560 X4=1 4570 GOTO 4590 4580 X4=0 4590 NEXT K9 4600 I[Q5+1]=LEN(I$)+2 4610 RETURN 4620 N$="1234567" 4630 FOR X0=7 TO 1 STEP -1 4640 IF LEFT$(Z$,1)=MID$(N$,X0,1) THEN 4660 4650 NEXT X0 4660 RETURN 4670 PRINT USING"Y CASH $##### ASSETS $##### C CASH $##### ASSETS $####"; A(1,1);A(1,2);A(2,1);A(2,2) 4680 RETURN 4690 PRINT USING"YOUR CASH = $#####";A(1,1) 4700 RETURN 4710 IF J(T,1)=0 THEN ON T GOTO 4780,4930 4720 IF T=2 THEN 4990 4730 PRINT "Use jail card "; 4740 Z$="":INPUT Z$:IF Z$="" THEN 4730 4750 IF LEFT$(Z$,1)="N" THEN 4860 4760 J[T,1]=J[T,1]-1 4770 GOTO 4830 4780 PRINT "Pay $50 to be free "; 4790 Z$="":INPUT Z$:IF Z$="" THEN 4780 4800 IF LEFT$(Z$,1)<>"Y" THEN 4860 4810 W=-50 4820 ON T GOSUB 6970,7380 4830 J(T,2)=0:D1=0 4840 PRINT "Freed!" 4850 RETURN 4860 J[T,2]=J[T,2]-1 4870 D=0 4880 GOSUB 4350 4890 IF D THEN 4830 4900 IF J[T,2] THEN 4850 4910 PRINT "$50 fee mandatory!" 4920 GOTO 4810 4930 FOR K=1 TO 8 4940 IF (G(K,1) AND G(K,2) OR G(K,1)+ABS(G(K,2)=G(K,3)))=0 THEN 4970 4950 NEXT K 4960 IF A[T,1]<1000 THEN 4860 4970 PRINT "COMAC pays $50 to be free" 4980 GOTO 4810 4990 PRINT "COMAC uses jail card!" 5000 GOTO 4760 5010 PRINT " Property name- "; 5020 X=0 5030 W9=W 5040 Z$="":LINE INPUT Z$:Z=LEN(Z$) 5050 PRINT 5060 IF Z >= 0 THEN 5100 5070 GOSUB 6380 5080 Z$="" 5090 RETURN 5100 IF Z$="" THEN 5070 5110 GOSUB 3910 5120 Z$=LEFT$(Z$,5) 5130 T1=1 5140 X=0 5150 K2=39 5160 S0=(T1=2) 5170 RESTORE 5180 FOR K9=1 TO K2 5190 READ P$ 5200 IF S0 THEN 5220 5210 IF LEFT$(P$,5)=Z$ THEN 5250 5220 NEXT K9 5230 IF S0=0 THEN 5380 5240 K9=K9-1 5250 X1=2:X2=2:X3=2 5260 H=0 5270 X=K9 5280 XX=FNG(X):XY=FNF(X):IF XY>XX THEN XX=XY 5290 G1=XX 5300 IF G1>8 THEN 5380 5310 ' 5320 GET#1,G1 5330 X1=CVI(AG$):X2=CVI(AH$):X3=CVI(AI$) 5340 X(1)=X1 5350 X[2]=X2 5360 X[3]=X3 5370 H=B[X1,3]+B[X2,3]+B[X3,3] 5380 RETURN 5390 X9=A[1,2]-A[2,2] 5400 ON SGN(X9)+1 GOTO 5430,5450 5410 PRINT "COMAC ahead by $";-X9 5420 GOTO 5460 5430 PRINT "TIED AT $";A[1,2] 5440 GOTO 5460 5450 PRINT "You're ahead by $";X9 5460 GOTO 7580 5470 STOP 5480 X=0 5490 IF I1=0 THEN GOSUB 5890 5500 GOSUB 3880 5510 IF LEFT$(Z$,3)<>"GRO" THEN 5610 5520 IF I1=0 THEN GOSUB 5920 5530 GOSUB 3880 5540 FOR G1=1 TO 8 5550 IF LEFT$(Z$,2)=MID$(R$,G1*2-1,2) THEN 5590 5560 NEXT G1 5570 PRINT "Unable to comply!" 5580 RETURN 5590 GOSUB 5300 5600 GOTO 5640 5610 GOSUB 5120 5620 IF X=0 OR G1>8 THEN 5570 5630 IF B(X,1)<>1 THEN 5570 5640 IF G[G1,1]<>G[G1,3] OR H=G[G1,3]*5 THEN 5570 5650 IF B[X2,2]+B[X2,2]+B[X3,2] THEN 5570 5660 PRINT "PRICE/HOUSE $";FNH(G1);", "; 5670 IF I1=0 THEN GOSUB 5940 5680 GOSUB 3880 5690 GOSUB 4620 5700 IF X0=0 THEN 5540 5710 IF X=0 THEN 5960 5720 IF B[X,3]+X0<6 THEN 5750 5730 X0=5-B[X,3] 5740 IF X0=0 THEN 5870 5750 D1=7 5760 FOR K7=1 TO G[G1,3] 5770 IF D1> B(X(K7),3) THEN D1=B(X(K7),3) 5780 NEXT K7 5790 IF X0+B[X,3] <= D1+1 THEN 5810 5800 IF D1+1-B(X,3)>0 THEN X0=D1+1-B(X,3) ELSE X0=0 5810 B[X,3]=B[X,3]+X0 5820 W=-X0*FNH(G1) 5830 A7=0 5840 GOSUB 6970 5850 PRINT USING"## HOUSE(S) BOUGHT!";X0 5860 RETURN 5870 PRINT "Hotel already exists!" 5880 RETURN 5890 PRINT "Property name "; 5900 GOSUB 4400 5910 RETURN 5920 PRINT "Group "; 5930 GOTO 5900 5940 PRINT "No. of houses "; 5950 GOTO 5900 5960 T0=X0 5970 X0=0 5980 FOR K7=1 TO G[G1,3] 5990 IF T0+B[X[K7],3]<6 THEN 6030 6000 X0=X0+5-B[X[K7],3] 6010 B[X[K7],3]=5 6020 GOTO 6050 6030 X0=X0+T0 6040 B[X[K7],3]=B[X[K7],3]+T0 6050 NEXT K7 6060 GOTO 5820 6070 IF I1=0 THEN GOSUB 5890 6080 GOSUB 3880 6090 A0=0 6100 IF LEFT$(Z$,3)<>"ALL" THEN 6200 6110 A0=1 6120 FOR K7=39 TO 1 STEP -1 6130 IF B(K7,1)<>1 OR B(K7,2)=0 THEN 6180 6140 X=K7 6150 GOTO 6230 6160 PRINT "Insufficient funds, can't continue!" 6170 RETURN 6180 NEXT K7 6190 GOTO 6310 6200 GOSUB 5120 6210 IF X=0 THEN 6360 6220 IF B(X,1)<>1 OR B(X,2)=0 THEN 6360 6230 IF .55*P[X]>A[1,1] THEN 6160 6240 W=-P[X]/20 6250 GOSUB 6970 6260 W=W*10 6270 A7=0 6280 GOSUB 6970 6290 B[X,2]=0 6300 IF A0 THEN 6180 6310 PRINT "DONE. "; 6320 GOSUB 4690 6330 IF A0 OR I1=0 THEN 6170 6340 GOSUB 3880 6350 GOTO 6200 6360 PRINT "Unable to comply." 6370 GOTO 6330 6380 PRINT ""; 6390 C9=1 6400 GOSUB 4400 6410 PRINT; 6420 IF I$="" THEN 6530 6430 GOSUB 3880 6440 C$="LISQUIBUYUNMMOR" 6450 FOR K7=1 TO 5 6460 IF MID$(C$,K7*3-2,3)=LEFT$(Z$,3) THEN 6500 6470 NEXT K7 6480 PRINT "ILLEGAL COMMAND" 6490 GOTO 6380 6500 C9=0 6510 ON K7 GOSUB 3360,5390,5480,6070,3260 6520 GOTO 6380 6530 RETURN 6540 RESTORE 6550 FOR K4=1 TO 39 6560 READ P$ 6570 IF LEN(P$)=1 THEN 6730 6580 IF B(K4,2)=0 OR B(K4,1)<>2 THEN 6730 6590 XX=FNG(K4):XY=FNF(K4):IF XY>XX THEN XX=XY 6600 G0=XX 6610 IF G0=9 AND A[2,1]>200 THEN 6650 6620 IF G[G0,2]=G[G0,3] THEN 6650 6630 X9=K4-L(1)+40*ABS(K4-L(1)<0) 6640 IF X9<7 OR X9>14 THEN 6730 6650 IF P[K4]*.55>A[2,1]-100 THEN 6730 6660 W=-P[K4]/20 6670 GOSUB 7380 6680 W=W*10 6690 A7=0 6700 GOSUB 7380 6710 PRINT "COMAC pays off ";P$ 6720 B[K4,2]=0 6730 NEXT K4 6740 RETURN 6750 XX=FNG(L(T)):XY=FNF(L(T)):IF XY>XX THEN XX=XY 6760 G0=XX 6770 IF B[L[T],2] THEN 6890 6780 IF B[L[T],1]=T THEN 6910 6790 IF G0-8>0 THEN ON G0-8 GOTO 6930,6950 6800 XX=FNG(L(T)):XY=FNF(L(T)):IF XY>XX THEN XX=XY 6810 W=-R(2*XX+FNR(L(T)),B(L(T),3)+1) 6820 W=W+ABS(B(L(T),3)=0 AND G(G0,3-T)=G(G0,3) AND G0<9)*W 6830 PRINT P$;" - $"; 6840 PRINT USING"#### RENT MUST BE PAID!";-W 6850 ON T GOSUB 6970,7380 6860 W=-W 6870 ON T GOSUB 7380,6970 6880 RETURN 6890 PRINT P$;" is mortgaged." 6900 RETURN 6910 PRINT P$;" - no rent" 6920 RETURN 6930 W=-25*2^(G[9,3-T]-1)*D3 6940 GOTO 6830 6950 W=-(4+6*ABS(D3=2 OR G[10,3-T]=2))*R0 6960 GOTO 6830 6970 T1=1 6980 IF A[T1,2]+W<0 THEN 7320 6990 IF A[T1,1]+W >= 0 THEN 7280 7000 IF T1=2 THEN 7400 7010 PRINT USING"YOU ARE $ #### SHORT. MUST MORTGAGE! ";-W-A(T1,1); 7020 GOSUB 5010 7030 W=W9 7040 IF Z$="" THEN 6970 7050 IF X THEN 7080 7060 PRINT "IMPROPER PROPERTY ";Z$ 7070 GOTO 6970 7080 IF B[X,1]-T1 THEN 7060 7090 X5=H*FNH(G1)/2 7100 B(X1,3)=0:B(X2,3)=0:B(X3,3)=0 7110 A[T1,2]=INT(A[T1,2]-X5) 7120 A[T1,1]=INT(A[T1,1]+X5+P[X]/2) 7130 G[G1,T1]=G[G1,T1]-B[X,2] 7140 ON B(X,2)*T1 GOTO 7200,7230 7150 B[X,2]=1 7160 IF T1=2 THEN 7260 7170 PRINT "DONE. "; 7180 GOSUB 4690 7190 GOTO 6980 7200 PRINT "SOLD. "; 7210 B(X,1)=0:B(X,2)=0 7220 GOTO 7180 7230 PRINT "COMAC sells ";P$ 7240 B(X,1)=0:B(X,2)=0 7250 GOTO 6980 7260 PRINT "COMAC mortgages ";P$ 7270 GOTO 6980 7280 A[T1,1]=INT(A[T1,1]+W) 7290 A[T1,2]=INT(A[T1,2]+W*A7) 7300 A7=1:T1=1:Q8=1 7310 RETURN 7320 A[3-T1,2]=A[3-T1,2]+A[T1,2] 7330 IF T1=1 THEN 7360 7340 PRINT:PRINT:PRINT: PRINT "YOU WIN BY $";A[1,2] 7350 GOTO 7580 7360 PRINT:PRINT:PRINT: PRINT "COMAC WINS BY $";A[2,2] 7370 GOTO 7580 7380 T1=2 7390 GOTO 6980 7400 FOR K1=1 TO 10 7410 FOR K2=39 TO 1 STEP -1 7420 IF B[K2,1]<>T1 THEN 7550 7430 XX=FNG(K2):XY=FNF(K2):IF XY>XX THEN XX=XY 7440 G0=XX 7450 GOSUB 5160 7460 ON B[K2,2]*(ABS(K1<5)+2*ABS(K1>4)) GOTO 7550,7510 7470 IF K1=1 AND G0<9 AND G[G0,3]>G[G0,2] THEN 7090 7480 IF K1=2 AND G0<9 AND G(G0,3)=G(G0,2) AND H=0 THEN 7090 7490 IF (K1=3 OR K1=4) AND K1=13-G0 THEN 7090 7500 ON ABS(K1=9)+1 GOTO 7550,7540 7510 ON ABS(K1<8 AND G0<9)+ABS(K1-3=G[G0,2]+2*ABS(K1=6)+ABS(K1=7))GOTO 7550,7090 7520 IF 14-(K1/2)=G0 THEN 7090 7530 GOTO 7550 7540 IF G0<9 AND G[G0,3]=G[G0,2] THEN 7090 7550 NEXT K2 7560 NEXT K1 7570 STOP 7580 PRINT:PRINT:PRINT 7590 INPUT "PLAY AGAIN ";A$:IF LEFT$(A$,1)="Y" THEN RUN 0 7550 NEXT K2 7560 NEXT