DataMuseum.dk

Presents historical artifacts from the history of:

Christian Rovsing CR7, CR8 & CR16 CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Christian Rovsing CR7, CR8 & CR16 CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦dbf90d6fc⟧ TextFile

    Length: 7936 (0x1f00)
    Types: TextFile
    Names: »MARKET.BAS«

Derivation

└─⟦69a509965⟧ Bits:30005211 CR8 BASIC Games
    └─ ⟦this⟧ »MARKET.BAS« 

TextFile

1  REM PROGRAM MARKET.BAS
10 REM MARKET - SIMULATION OF MARKET COMPETITION BETWEEN 2 COMPANIES
20 REM DEVELOPED BY S. FINKELSTEIN, J. MCGRATH, I. STAW, D. SOBIN 
30 REM ALSO DEVELOPED BY D. KLASSEN - PROGRAMMED BY D. SOBIN
40 REM LATEST REVISION 8-29-72
50 REM COPYRIGHT 1972 - STATE UNIVERSITY OF NEW YORK
60 DEF FNR(X)=.01*INT(100*X+.5)
70 DIM C(2),I(2),T(2),A(2),L(2),D(2),P(2),V(2),W(2),B(2),E(5)
80 PRINT "DO YOU WANT INSTRUCTIONS(TYPE 1 FOR YES, 0 FOR NO)";
90 INPUT H
100 READ K2,N,K,K3,C(1),C(2),I(1),I(2),F,U,R,G1,G2,G3,M1,K4
110 LET Q=0
120 PRINT 
130 IF H=0 THEN 210 
140 PRINT "MARKET SIMULATES THE COMPETITION BETWEEN TWO COMPANIES"
150 PRINT "SELLING A PRODUCT DIFFERENTIATED BY BRAND ADVERTISING."
160 PRINT "THE QUANTITY EACH COMPANY SELLS IS DEPENDENT UPON PRICE"
170 PRINT "AND ADVERTISING BUDGET. THE GAME ENDS WHEN ONE "
180 PRINT "COMPANY GOES BANKRUPT OR REACHES ";1.00000E-03*M1;" MILLION IN"
190 PRINT "TOTAL ASSETS."
200 PRINT 
210 PRINT "ARE YOU BEGINNING THE GAME OR CONTINUING"
220 PRINT "(TYPE 1 FOR BEGINNING, 2 FOR CONTINUING)";
230 INPUT A
240 PRINT 
250 IF A=1 THEN 350 
260 FOR J=1 TO 2
270 PRINT "COMPANY ";J;"ENTER PREVIOUS CASH ON HAND,PREVIOUS INVENTORY";
280 INPUT C(J),I(J)
290 PRINT 
300 NEXT J
310 PRINT "ENTER VARIABLE PRODUCTION COST";
320 INPUT U
330 PRINT "ENTEP QUARTER NUMBER";
340 INPUT Q
350 PRINT 
360 PRINT "FIXED PRODUCTION COST=$";F*1000;"/ QUARTER"
370 PRINT "VARIABLE PRODUCTION COST=$";U;"/UNIT"
380 PRINT "WITH NO ADVERTISING AND A SELLING PRICE OF $50/UNIT"
390 PRINT "A COMPANY WILL SELL ";K2*500;" UNITS (PRINTED AS ";K2/2;")"
400 PRINT "WAREHOUSE  CHARGE FOR INVENTORY=";R*100;" PER CENT"
410 PRINT "INTEREST CHARGE ON BORROWED MONEY=";K3*100;" PER CENT"
420 PRINT 
430 PRINT 
440 RANDOMIZE
450 PRINT 
460 PRINT 
470 PRINT "UNITS AND DOLLARS BELOW ARE IN THOUSANDS "
480 PRINT 
490 PRINT 
500 FOR J=1 TO 5
510 LET E(J)=0
520 NEXT J
530 LET P4=0
540 GOSUB 1560 
550 FOR J=1 TO 2
560 LET W(J)=0
570 LET D(J)=0
580 LET T(J)=0
590 LET B(J)=U*I(J)+C(J)
600 GOSUB 1610 
610 NEXT J
620 PRINT 
630 LET Q=Q+1
640 GOSUB 1930 
650 GOSUB 1160 
660 GOSUB 1540 
670 REM COMPUTE DEMAND 
680 FOR J=1 TO 2
690 LET D(J)=(1-E(5))*.5*(K2+2*V(J)*D1)/(P(J)/50)^N
700 NEXT J
710 GOSUB 1810 
720 FOR J=1 TO 2
730 IF D(J)>I(J) THEN 760 
740 LET T(J)=D(J)
750 GO TO 770 
760 LET T(J)=I(J)
770 LET T(J)=INT(T(J))
780 LET C(J)=C(J)+T(J)*P(J)
790 LET I(J)=I(J)-T(J)
800 NEXT J
810 FOR J=1 TO 2
820 LET C(J)=C(J)-R*I(J)*U-K3*C(J)*(SGN(C(J))-SGN(C(J))^2)/2
830 LET C(J)=INT(C(J))
840 IF E(5)=0 THEN 870 
850 LET W(J)=0
860 GO TO 890 
870 IF T(1)+T(2)=0 THEN 850 
880 LET W(J)=INT(10000*T(J)/(T(1)+T(2)))/100
890 NEXT J
900 FOR J=1 TO 2
910 GOSUB 1610 
920 LET B(J)=C(J)+U*I(J)
930 IF B(J)>0 THEN 970 
940 PRINT 
950 GOSUB 1760 
960 PRINT 
970 IF B(J)<M1 THEN 1050 
980 IF B(J)<=C(3-J)+U*I(3-J) THEN 1050 
990 LET P4=17
1000 PRINT 
1010 PRINT TAB(14);"********************"
1020 PRINT "COMPANY ";J;" YOU HAVE REACHED ";1.00000E-03*M1;" MILLION AND WON"
1030 PRINT TAB(14);"********************"
1040 PRINT 
1050 NEXT J
1060 PRINT 
1070 IF P4<>17 THEN 630 
1080 PRINT 
1090 PRINT "DO YOU WANT TO PLAY AGAIN(TYPE 1 FOR YES, 0 FOR NO)";
1100 INPUT H
1110 IF H=0 THEN 1150 
1120 RESTORE 
1130 PRINT 
1140 GO TO 80 
1150 STOP
1160 PRINT 
1170 FOR J=1 TO 2
1180 PRINT 
1190 PRINT 
1200 PRINT "COMPANY ";J
1210 IF E(2)<>1 THEN 1240 
1220 PRINT "NO PRODUCTION POSSIBLE DUE TO STRIKE"
1230 GO TO 1270 
1240 PRINT "PRODUCTION LEVEL";
1250 INPUT L(J)
1260 IF L(J)<0 THEN 1240 
1270 PRINT "ADVERTISING BUDGET";
1280 INPUT A(J)
1290 IF A(J)<0 THEN 1270 
1300 LET C(J)=C(J)-F-L(J)*U-A(J)
1310 IF E(2)=1 THEN 1330 
1320 LET I(J)=I(J)+L(J)
1330 PRINT "UNIT PRICE";
1340 INPUT A
1350 IF E(1)<>1 THEN 1410 
1360 IF A<=P(J) THEN 1410 
1370 PRINT 
1380 PRINT "YOU MAY NOT RAISE PRICES DURING THE WAGE-PRICE FREEZE"
1390 PRINT 
1400 GO TO 1330 
1410 LET P(J)=A
1420 IF A>200 THEN 1330 
1430 IF P(J)<=0 THEN 1330 
1440 NEXT J
1450 LET A2=A(1)+A(2)
1460 IF A2>0 THEN 1500 
1470 LET V(1)=0
1480 LET V(2)=0
1490 GO TO 1520 
1500 LET V(1)=A(1)/A2
1510 LET V(2)=A(2)/A2
1520 LET D1=(K2-K2*EXP(-K*A2))*K4
1530 RETURN
1540 PRINT 
1550 PRINT 
1560 PRINT "QUARTER ";Q
1570 PRINT 
1580 PRINT "PROFIT  MARKET SHARE  CASH ON HAND	NUMBER SOLD  ";
1590 PRINT "INVENTORY  ASSETS"
1600 RETURN
1610 PRINT U*I(J)+C(J)-B(J);TAB(9);W(J);TAB(23);C(J);TAB(37);
1620 PRINT T(J);TAB(50);I(J);TAB(61);U*I(J)+C(J)
1630 RETURN
1640 DATA 50
1650 DATA 2
1660 DATA 1.00000E-03
1670 DATA .05
1680 DATA 5000,5000
1690 DATA 100,100
1700 DATA 250
1710 DATA 20
1720 DATA .05
1730 DATA .2,.4,.4
1740 DATA 12000
1750 DATA 1.5
1760 PRINT TAB(7);"********************"
1770 PRINT "COMPANY ";J;" YOU HAVE GONE BANKRUPT"
1780 PRINT TAB(7);"********************"
1790 LET P4=17
1800 RETURN
1810 IF P(1)<P(2) THEN 1840 
1820 LET M=2
1830 GO TO 1850 
1840 LET M=1
1850 LET G4=(P(3-M)-P(M))/P(3-M)
1860 IF G4<=G1 THEN 1920 
1870 IF G4<G2 THEN 1890 
1880 LET G4=G2
1890 LET G5=D(3-M)*((G4-G1)/(G2-G1))*G3
1900 LET D(3-M)=D(3-M)-G5
1910 LET D(M)=D(M)+G5
1920 RETURN
1930 IF Q<6 THEN 2270 
1940 IF RND<.1 THEN 1990 
1950 IF RND<.1 THEN 2040 
1960 IF RND<.1 THEN 2140 
1970 IF RND<.1 THEN 2210 
1980 GO TO 2270 
1990 IF E(1)>0 THEN 1950 
2000 GOSUB 2410 
2010 LET E(1)=1
2020 LET Q1=Q
2030 GO TO 1950 
2040 LET I=INT(RND+1.5)
2050 IF Q-W2<=2 THEN 1960 
2060 IF C(I)<0 THEN 1960 
2070 IF C(I)>200 THEN 2100 
2080 LET C(I)=.75*C(I)
2090 GO TO 2110 
2100 LET C(I)=C(I)-200
2110 GOSUB 2460 
2120 LET W2=Q
2130 GO TO 1960 
2140 LET J=INT(RND+1.5)
2150 IF Q-W3<=2 THEN 1970 
2160 GOSUB 2510 
2170 LET C(J)=C(J)+U*I(J)*.75
2180 LET I(J)=0
2190 LET W3=Q
2200 GO TO 1970 
2210 IF E(1)=1 THEN 2270 
2220 IF Q-W4<=2 THEN 2270 
2230 LET W4=Q
2240 GOSUB 2560 
2250 LET E(5)=1
2260 LET Q2=Q
2270 IF INT((Q-1)/4)*4<>Q-1 THEN 2660 
2280 IF Q=1 THEN 2660 
2290 IF E(1)=1 THEN 2660 
2300 IF RND>.25 THEN 2370 
2310 IF Q<6 THEN 2370 
2320 GOSUB 2610 
2330 LET E(2)=1
2340 LET U=INT(U*(1.1+.1*RND))
2350 LET Q3=Q
2360 GO TO 2660 
2370 LET U=INT(U*(1.05+.1*RND))
2380 PRINT "NEW LABOR CONTRACT - VARIABLE PRODUCTION COST NOW=";
2390 PRINT " $";U;"/UNIT"
2400 GO TO 2660 
2410 PRINT "THE PRESIDENT HAS JUST IMPOSED A WAGE-PRICE FREEZE ON THE"
2420 PRINT "ECONOMY, AND YOU MAY NOT RAISE THE PRICE OF YOUR PRODUCT"
2430 PRINT "OVER THE NEXT 2 QUARTERS."
2440 PRINT 
2450 RETURN
2460 PRINT "COMPANY ";I;"HAS BEEN THE VICTIM OF EMBEZZLEMENT BY THE"
2470 PRINT "VICE PRESIDENT OF THE COMPANY. YOUR CASH ON HAND IS NOW ";
2480 PRINT "$";C(I)
2490 PRINT 
2500 RETURN
2510 PRINT "COMPANY";J;" HAS SUFFERED FIRE DAMAGE IN ITS WAREHOUSE"
2520 PRINT "ALL UNITS WERE DESTROYED. YOUR INSURANCE WILL REIMBURSE YOU"
2530 PRINT "IN THE AMOUNT OF $";INT(U*I(J)*.75);" FOR THESE UNITS"
2540 PRINT 
2550 RETURN
2560 PRINT "A TRANSPORTATION STRIKE HAS OCCURED, AND YOU ARE UNABLE TO"
2570 PRINT "MOVE YOUR GOODS TO THE DISTRIBUTORS. NEGOTIATIONS HAVE"
2580 PRINT "BEGUN, BUT HOPE OF A SETTLEMENT LOOKS DIM."
2590 PRINT 
2600 RETURN
2610 PRINT "THERE HAS BEEN A STRIKE AND YOUR PRODUCTION HAS BEEN"
2620 PRINT "HALTED. NEGOTIATIONS HAVE BEEN STARTED, BUT HOPE OF"
2630 PRINT "A SETTLEMENT LOOKS DIM."
2640 PRINT 
2650 RETURN
2660 IF E(1)<>1 THEN 2710 
2670 IF Q<Q1+2 THEN 2710 
2680 LET E(1)=2
2690 PRINT "THE WAGE-PRICE FREEZE HAS ENDED"
2700 PRINT 
2710 IF E(5)<>1 THEN 2760 
2720 IF Q2=Q THEN 2760 
2730 LET E(5)=0
2740 PRINT "TRANSPORTATION STRIKE SETTLED. NORMAL DELIVERIES RESUMED"
2750 PRINT 
2760 IF E(2)<>1 THEN 2820 
2770 IF Q3=Q THEN 2820 
2780 PRINT "STRIKE SETTLED. NORMAL PRODUCTION RESUMED"
2790 PRINT "NEW VARIABLE COST=$";U;" / UNIT DUE TO INCREASED WAGES"
2800 PRINT 
2810 LET E(2)=0
2820 RETURN
2830 END
«eof»