Compucolor.org – Virtual Media

Listing of file='DECMKR.BAS;01' on disk='vmedia/trader-sector.ccvf'

100 REM Y ******************************************************
110 REM DECISION MAKER 01/01/81, FOR 3650/9650 SERIES BY GAB
120 REM COPYRIGHT (C) 1981 BY INTELLIGENT SYSTEMS CORP.
140 OUT 8,207:REM ENABLE KEYBOARD
150 PLOT 6,33,12,6,8:PLOT 8,11,28,11:PLOT 27,10,8:FOR Y= 1TO 2:FOR X= 1TO 32:PLOT 32:NEXT X:PLOT 26:NEXT Y
160 PLOT 27,24,6,33,15,3,10,15:PRINT "nu {e tf oe cf oe tu pb     pq ~| bh {e {d
170 PLOT 3,10,16:PRINT "lw l vi m gd m vw as     ab no a| l a|
180 PLOT 3,80,0:FOR X= 1TO 1200:NEXT
190 DIM P(6,13),T(6,16),N$(6)
200 X$= "X-FINE":F$= "FINE":S$= "STANDARD"
210 DEF FN A(X)= INT (X* RND (1)+ 1)
220 FOR J= 0TO 6
230 FOR K= 0TO 13
240 P(J,K)= 0:T(J,K)= 0
250 NEXT K,J
260 PLOT 27,24,6,39,12,10,10
270 PLOT 7:INPUT "NUMBER OF PLAYERS, PLEASE? ";NP
280 NP= INT (ABS (NP)):IF NP< 1OR NP> 6THEN 260
290 Y= 5:FOR J= 1TO NP
300 PLOT 3,0,Y,11
310 PRINT "PLAYER NUMBER"J"'S NAME PLEASE: ";
320 PLOT 7:INPUT "";N$(J)
330 IF N$(J)= ""OR N$(J)= "0"THEN 300
340 Y= Y+ 2:IF Y< 30THEN 390
350 FOR Y= Y+ 1TO 5STEP - 1
360 PLOT 3,0,Y,11
370 NEXT Y
380 Y= 5
390 NEXT J
400 DATA 1000,20,14,40,30,20,140,115,90
410 DATA 665,13,13,40,30,20,140,115,90
420 DATA 500,10,10,40,30,20,140,115,90
430 DATA 400,8,8,40,30,20,140,115,90
440 DATA 335,6,6,40,30,20,140,115,90
450 ON NPGOTO 460,460,470,480,490,500
460 RESTORE 400:GOTO 510
470 RESTORE 410:GOTO 510
480 RESTORE 420:GOTO 510
490 RESTORE 430:GOTO 510
500 RESTORE 440
510 READ T(1,13),MO,MA,P(1,0),P(2,0),P(3,0),P(4,0),P(5,0),P(6,0)
520 FOR J= 2TO NP
530 T(J,13)= T(1,13)
540 NEXT J:MN= 0
550 PLOT 6,1,12:PRINT "PLAYER ROTATION IS AS FOLLOWS:
560 FOR J= 1TO NP:PRINT "
NUMBER"J,,N$(J):NEXT J:PLOT 10,10
570 PRINT "EACH PLAYER HAS A STARTING CASH BALANCE OF $"T(1,13)
580 GOSUB 2660
590 RN= 0:GOSUB 2730
600 GOSUB 2850:J= 1:T= 0:MN= MN+ 1:IF MN= 1THEN 620
610 GOSUB 3220
620 FOR Y= 21TO 31:PLOT 3,0,Y,11:NEXT Y
630 RN= RN+ 1:IF RN> NPTHEN 920
640 FOR J= 1TO 6:T(RN,J)= 0:NEXT J
650 IF T(RN,13)< 10THEN 630
660 PLOT 3,0,23,11
670 PRINT " "N$(RN)" - YOU MAY BID ON RAW MATERIALS"
680 TU= 0:CB= T(RN,13)
690 FOR J= 7TO 9
700 P$= RIGHT$ (STR$ (T(RN,J)+ 10000),4):GOSUB 3350
710 PLOT 3,27,J+ 10:PRINT P$:NEXT J
720 K= 1:T$= X$:GOTO 750
730 K= 2:T$= F$:GOTO 750
740 K= 3:T$= S$
750 PLOT 6,1,3,0,21,11:PRINT "CASH BALANCE";CB
760 PLOT 6,7,3,0,24,11:PRINT "UNITS OF "T$" TO BUT (QTY):";
770 PLOT 7:INPUT " ";UT:IF UT< > INT (ABS (UT))THEN 750
780 PLOT 3,0,26,110:IF UT< = MATHEN 800
790 PRINT "***   MAXIMUM SINGLE QUANTITY IS"MA"   ***":GOTO 750
800 PLOT 3,0,26,11
810 IF TU+ UT< = MOTHEN 830
820 PRINT "***   MAXIMUM TOTAL QUANTITY IS"MO"   ***":GOTO 750
830 T(RN,K)= UT:TU= TU+ UT:IF UT= 0THEN UP= 0:GOTO 890
840 PLOT 3,0,28,11:PRINT "BID PRICE FOR "T$" (EACH):";
850 PLOT 7:INPUT " ";UP:IF UP< > INT (ABS (UP))THEN 840
860 PLOT 3,0,28,11:IF UT* UP< = CBTHEN 890
870 PRINT "***   INSUFFICIENT FUNDS FOR PURCHASE    ***"
880 TU= TU- UT:PLOT 3,0,26,11:GOTO 760
890 PLOT 3,0,28,11:T(RN,K+ 3)= UP:CB= CB- UT* UP
900 IF CB< 10THEN 620
910 PLOT 3,0,26,11:ON KGOTO 730,740,620
920 FOR Y= 21TO 31:PLOT 3,0,Y,11:NEXT Y:PLOT 3,2,23:PRINT "+++	MARKET PRICES ADJUSTING   +++
930 BX= 0:BF= 0:BS= 0
940 FOR J= 1TO NP:BX= BX+ T(J,1):BF= BF+ T(J,2):BS= BS+ T(J,3):NEXT J
950 DX= BX- 11:IF DX> 14THEN DX= 14
960 DF= BF- 11:IF DF> 14THEN DF= 14
970 DS= BS- 11:IF DS> 14THEN DS= 14
980 P(1,MN)= P(1,MN- 1)+ DX+ FN A(DX)
990 P(2,MN)= P(2,MN- 1)+ DF+ FN A(DF)
1000 P(3,MN)= P(3,MN- 1)+ DS+ FN A(DS)
1010 IF P(1,MN)< 5THEN P(1,MN)= 5+ FN A(5)
1020 IF P(2,MN)< 5THEN P(2,MN)= 5+ FN A(5)
1030 IF P(3,MN)< 5THEN P(3,MN)= 5+ FN A(5)
1040 IF P(1,MN)> 984THEN P(1,MN)= 985
1050 IF P(2,MN)> 984THEN P(2,MN)= 985
1060 IF P(3,MN)> 984THEN P(3,MN)= 985
1070 J= 1:T= 1:GOSUB 3220:PLOT 3,0,23,11:PRINT "***   CHECKING SUCCESSFUL BIDS   ***"
1080 FOR J= 1TO 3:P(J,13)= 0
1090 FOR K= 1TO NP:P(J,13)= P(J,13)+ T(K,J)
1100 NEXT K,J:RN= 0
1110 FOR J= 1TO 3:P$= RIGHT$ (STR$ (P(J,MN- 1)+ 10000),4)
1120 GOSUB 3350:PLOT 3,19,J+ 16:PRINT P$
1130 P$= RIGHT$ (STR$ (P(J,13)+ 10000),4):GOSUB 3350
1140 PLOT 3,27,J+ 16:PRINT P$:P(J,13)= 0:NEXT J
1150 K= 0:RN= RN+ 1:IF RN> NPTHEN 1240
1160 K= K+ 1:IF K> 3THEN 1150
1170 IF T(RN,K+ 3)< P(K,MN)THEN T(RN,13+ K)= 0:GOTO 1160
1180 IF T(RN,K+ 3)* T(RN,K)> T(RN,13)THEN T(RN,13+ K)= 0:GOTO 1160
1190 T(RN,K+ 6)= T(RN,K+ 6)+ T(RN,K)
1200 T(RN,13)= T(RN,13)- T(RN,K+ 3)* T(RN,K)
1210 P(J,13)= P(J,13)+ T(RN,K+ 3)* T(RN,K)
1220 T(RN,K+ 13)= T(RN,K+ 3)* T(RN,K):GOTO 1160
1230 GOTO 1160
1240 FOR J= 1TO 3:P$= RIGHT$ (STR$ (P(J,MN)+ 10000),4)
1250 GOSUB 3350:PLOT 3,34,J+ 16:PRINT P$:NEXT J:RN= 0
1260 RN= RN+ 1:IF RN> NPTHEN 1330
1270 IF T(RN,14)+ T(RN,15)+ T(RN,16)= 0THEN 1260
1280 PLOT 3,2,23,11:PRINT N$(RN)"+++	BIDS APPROVED SHOWN UNDER AMT PAID   +++"
1290 GOSUB 3300:FOR J= 1TO 3:P$= RIGHT$ (STR$ (T(RN,J+ 13)+ 10000),4)
1300 GOSUB 3350:PLOT 3,54,J+ 16:PRINT P$
1310 T(RN,J+ 3)= 0:T(RN,J)= 0:NEXT J
1320 PLOT 7,3,0,25,11:INPUT "HIT RETURN TO CONTINUE: ";Y$:PLOT 28,11:GOTO 1260
1330 GOSUB 2660:GOSUB 3100:PLOT 6,6
1340 FOR J= 1TO NP:PLOT 3,0,J+ 4:PRINT N$(J)
1350 FOR K= 7TO 12:IF T(J,K)= 0THEN 1380
1360 P$= RIGHT$ (STR$ (T(J,K)+ 10000),4):GOSUB 3350
1370 PLOT 3,8* (K- 7)+ 20,J+ 4:PRINT P$
1380 NEXT K,J
1390 RN= 0
1400 RN= RN+ 1:IF RN> NPTHEN 1600
1410 PLOT 3,0,21,11:PRINT N$(RN)
1420 K= 10:G$= "TYPE A":CX= 2:CF= 1:CS= 0:GOTO 1450
1430 K= 11:G$= "TYPE B":CX= 1:CF= 1:CS= 1:GOTO 1450
1440 K= 12:G$= "TYPE C":CX= 0:CF= 1:CS= 2
1450 IF T(RN,7)< CXOR T(RN,9)< CSOR T(RN,8)< CFTHEN 1590
1460 PLOT 3,0,23,11:PRINT "HOW MANY "G$" GOODS TO MANUFACTURE? ";
1470 PLOT 7:INPUT "";CV:IF CV< > INT (ABS (CV))THEN 1460
1480 PLOT 3,0,25,11:IF CV* CX< = T(RN,7)AND CV* CF< = T(RN,8)AND CV* CS< = T(RN,9)THEN 1510
1490 PRINT "IMPROPER MIXTURE OF RAW MATERIALS AVAILABLE - SELECT AGAIN.
1500 GOTO 1460
1510 T(RN,7)= T(RN,7)- CV* CX
1520 T(RN,8)= T(RN,8)- CV* CF
1530 T(RN,9)= T(RN,9)- CV* CS
1540 T(RN,K)= T(RN,K)+ CV
1550 FOR J= 7TO 9:P$= RIGHT$ (STR$ (T(RN,J)+ 10000),4):GOSUB 3350
1560 PLOT 3,8* (J- 7)+ 20,RN+ 4:PRINT P$:NEXT J
1570 P$= RIGHT$ (STR$ (T(RN,K)+ 10000),4)
1580 GOSUB 3350:PLOT 3,8* (K- 10)+ 44,RN+ 4:PRINT P$
1590 ON K- 9GOTO 1430,1440,1400
1600 GOSUB 2670:RN= 0:GOSUB 2730:GOSUB 2980
1610 J= 4:T= 0:IF MN= 1THEN 1630
1620 GOSUB 3220
1630 FOR Y= 21TO 31:PLOT 3,0,Y,11:NEXT Y
1640 RN= RN+ 1:IF RN> NPTHEN 1850
1650 FOR J= 1TO 6:T(RN,J)= 0:NEXT J
1660 PLOT 3,0,21,11:PRINT N$(RN)" - YOU MAY PLACE BIDS FOR FINISHED GOODS"
1670 TU= 0:FOR J= 10TO 12:P$= RIGHT$ (STR$ (T(RN,J)+ 10000),4)
1680 GOSUB 3350:PLOT 3,27,J+ 7:PRINT P$:NEXT J
1690 K= 1:T$= "TYPE A":GOTO 1720
1700 K= 2:T$= "TYPE B":GOTO 1720
1710 K= 3:T$= "TYPE C"
1720 IF T(RN,K+ 9)< 1THEN UT= 0:GOTO 1770
1730 PLOT 3,0,24,11:PRINT "UNITS OF "T$" GOODS TO SELL (QTY):";
1740 PLOT 7:INPUT " ";UT:IF UT< > INT (ABS (UT))THEN 1730
1750 PLOT 3,0,26,11:IF UT< = T(RN,K+ 9)THEN 1770
1760 PRINT "+++   YOU DO NOT HAVE THAT MANY - SELECT AGAIN   +++":GOTO 1730
1770 T(RN,K)= UT:IF UT= 0THEN UP= 0:GOTO 1830
1780 PLOT 3,0,26,11:PRINT "BID PRICE FOR "T$" GOODS (EACH):";
1790 PLOT 7:INPUT " ";UP:IF UP< > INT (ABS (UP))THEN 1780
1800 PLOT 3,0,28,11:IF UP> 9THEN 1820
1810 PRINT "+++   MINIMUM OFFER IS $ 10.00 - BID AGAIN   +++":GOTO 1780
1820 PLOT 3,0,28,11
1830 T(RN,K+ 3)= UP:T(RN,K+ 13)= T(RN,K+ 3)* T(RN,K)
1840 PLOT 3,0,26,11:ON KGOTO 1700,1710,1630
1850 FOR Y= 21TO 31:PLOT 3,0,Y,11:NEXT Y:PLOT 3,0,23
1860 PRINT "+++   MARKET PRICES ADJUSTING   +++"
1870 BA= 0:BB= 0:BC= 0
1880 FOR J= 1TO NP:BA= BA+ T(J,1):BB= BB+ T(J,2):BC= BC+ T(J,3):NEXT J
1890 DA= BA- 11:IF DA> 20THEN DA= 20
1900 DB= BB- 11:IF DB> 20THEN DB= 20
1910 DC= BC- 11:IF DC> 20THEN DC= 20
1920 P(4,MN)= P(4,MN- 1)- DA- FN A(DA)
1930 P(5,MN)= P(5,MN- 1)- DB- FN A(DB)
1940 P(6,MN)= P(6,MN- 1)- DC- FN A(DC)
1950 IF P(4,MN)< 10THEN P(4,MN)= 10
1960 IF P(5,MN)< 10THEN P(5,MN)= 10
1970 IF P(6,MN)< 10THEN P(6,MN)= 10
1980 IF P(4,MN)> 979THEN P(4,MN)= 979
1990 IF P(5,MN)> 979THEN P(5,MN)= 979
2000 IF P(6,MN)> 979THEN P(6,MN)= 979
2010 J= 4:T= 1:GOSUB 3220
2020 PLOT 3,2,23,11:PRINT "+++	CHECKING SUCCESSFUL BIDS   +++
2030 FOR J= 4TO 6:P(J,13)= 0
2040 FOR K= 1TO NP:P(J,13)= P(J,13)+ T(K,J- 3):NEXT K,J:RN= 0
2050 FOR J= 4TO 6:P$= RIGHT$ (STR$ (P(J,MN- 1)+ 10000),4):GOSUB 3350
2060 PLOT 3,19,J+ 13:PRINT P$:P$= RIGHT$ (STR$ (P(J,13)+ 10000),4):GOSUB 3350
2070 PLOT 3,27,J+ 13:PRINT P$:P(J,13)= 0:NEXT J
2080 K= 0:RN= RN+ 1:IF RN> NPTHEN 2150
2090 K= K+ 1:IF K> 3THEN 2080
2100 IF T(RN,K+ 3)> P(K+ 3,MN)THEN T(RN,K+ 13)= 0:GOTO 2090
2110 T(RN,K+ 9)= T(RN,K+ 9)- T(RN,K)
2120 T(RN,13)= T(RN,13)+ T(RN,K)* T(RN,K+ 3)
2130 P(K+ 3,13)= P(K+ 3,13)+ T(RN,K+ 3)* T(RN,K)
2140 T(RN,K+ 13)= T(RN,K+ 3)* T(RN,K):GOTO 2090
2150 FOR J= 4TO 6:P$= RIGHT$ (STR$ (P(J,MN)+ 10000),4):GOSUB 3350
2160 PLOT 3,34,J+ 13:PRINT P$:NEXT J:RN= 0
2170 RN= RN+ 1:IF RN> NPTHEN 2260
2180 IF T(RN,14)+ T(RN,15)+ T(RN,16)= 0THEN 2170
2190 PLOT 3,2,23,11:PRINT N$(RN)" +++	BIDS APPROVED SHOWN UNDER AMT RCVD   +++
2200 GOSUB 3300:FOR J= 1TO 3
2210 P$= RIGHT$ (STR$ (T(RN,J+ 13)+ 10000),4):GOSUB 3350
2220 PLOT 3,54,J+ 16:PRINT P$:T(RN,J+ 3)= 0:T(RN,J)= 0:NEXT J
2230 PLOT 7,3,0,25,11:INPUT "HIT RETURN TO CONTINUE: ";Y$
2240 PLOT 3,0,25,11:GOTO 2170
2250 GOTO 2170
2260 IF MN< > 12THEN 2400
2270 FOR Y= 21TO 31:PLOT 3,0,Y,11:NEXT Y
2280 FOR RN= 1TO NP
2290 FOR J= 10TO 12
2300 IF J= 10THEN CX= 2:CF= 1:CS= 0
2310 IF J= 11THEN CX= 1:CF= 1:CS= 1
2320 IF J= 12THEN CX= 0:CF= 1:CS= 2
2330 IF CX> T(RN,7)OR CF> T(RN,8)OR CS> T(RN,9)THEN 2350
2340 T(RN,7)= T(RN,7)- CX:T(RN,8)= T(RN,8)- CF:T(RN,9)= T(RN,9)- CS:T(RN,J)= T(RN,J)+ 1:GOTO 2330
2350 NEXT J
2360 FOR I= 10TO 12
2370 IF T(RN,I)= 0THEN 2390
2380 T(RN,13)= T(RN,13)+ T(RN,I)* P(I- 6,12):T(RN,I)= 0
2390 NEXT I,RN
2400 GOSUB 2640:PLOT 6,39,12,3,19,3
2410 PRINT "END OF MONTH STATUS REPORT":PLOT 3,0,10
2420 PRINT "PLAYER"TAB( 15)"";
2430 PRINT "RAW MATERIALS-----------";
2440 PRINT "FINISHED GOODS----------"
2450 PRINT TAB( 15)"";
2460 PRINT X$"  "F$"    "S$"   ";
2470 PRINT "TYPE A  TYPE B  TYPE C  "
2480 FOR J= 1TO NP:PLOT 3,0,J+ 12:PRINT N$(J)
2490 FOR K= 7TO 12:IF T(J,K)= 0THEN 2520
2500 P$= RIGHT$ (STR$ (T(J,K)+ 10000),4):GOSUB 3350
2510 PLOT 3,8* (K- 7)+ 15,J+ 12:PRINT P$
2520 NEXT K,J
2530 FOR J= 1TO NP:PLOT 3,0,J+ 20:PRINT N$(J)
2540 P$= STR$ (T(J,13))
2550 PLOT 3,30,J+ 20
2560 PRINT "CASH BALANCE:  $ "TAB( POS (0)+ 8- LEN (P$))P$:NEXT J
2570 GOSUB 2670:GOSUB 2650:IF MN< 12THEN 590
2580 PLOT 3,2,27:PRINT "+++	END OF GAME   +++
2590 PRINT "ALL RAW MATERIALS HAVE BEEN CONVERTED TO FINISHED GOODS"
2600 PRINT "ALL FINISHED GOODS HAVE BEEN SOLD AT BEST MARKET PRICE"
2610 PLOT 3,0,30,11
2620 PLOT 7:INPUT "PLAY AGAIN (Y/N)?  ";Y$:IF MID$ (Y$,1,1)= "Y"THEN CLEAR :GOTO 190
2630 PLOT 12,27,11,6,2,12,1
2640 TD= 1:GOTO 2690
2650 TD= 2:GOTO 2690
2660 TD= 3:GOTO 2690
2670 TD= 5:GOTO 2690
2680 TD= 10
2690 T= TD+ PEEK (33209)
2700 IF T> 59THEN T= T- 60
2710 IF T< > PEEK (33209)THEN 2710
2720 RETURN
2730 PLOT 6,3,27,24,12
2740 PRINT "PRICE BOARD"TAB( 40)"MARKET CALCULATOR"
2750 PRINT
2760 PRINT "ITEM      OPEN      JAN    FEB    MAR    APR    MAY    JUN"
2770 PLOT 3,20,8
2780 PRINT "JUL    AUG    SEP    OCT    NOV    DEC"
2790 PLOT 3,0,14
2800 PRINT "MARKET"TAB( 19)"";
2810 PRINT "PREV    UNIT   NEW    ----BID----   AMT"
2820 PRINT "CALCULATOR"TAB( 19)"";
2830 PRINT "COST          PRICE   UNIT  PRICE      "
2840 RETURN
2850 PLOT 6,7,3,20,0
2860 PRINT "RAW MATERIALS"
2870 PLOT 3,0,4
2880 PRINT X$"	   40"
2890 PRINT F$"	   30"
2900 PRINT S$"   20"
2910 PLOT 3,0,10
2920 PRINT X$"

"F$"

"S$
2930 PLOT 6,3,3,54,15
2940 PRINT "PAID"
2950 PLOT 6,7,3,0,17
2960 PRINT X$"

"F$"

"S$
2970 RETURN
2980 REM
2990 PLOT 6,7,3,20,0
3000 PRINT "FINISHED GOODS"
3010 PLOT 3,0,4
3020 PRINT "GOODS A   140

GOODS B   115

GOODS C    90"
3030 PLOT 3,0,10
3040 PRINT "GOODS A

GOODS B

GOODS C"
3050 PLOT 6,3,3,54,15
3060 PRINT "RCVD"
3070 PLOT 6,7,3,0,17
3080 PRINT "GOODS A

GOODS B

GOODS C"
3090 RETURN
3100 PLOT 6,3,27,24,12
3110 PRINT "PRODUCTION CONVERSION CHART

"
3120 PRINT "PLAYER              UNITS OF MATERIALS AND GOODS"
3130 PRINT TAB( 20)"-XF-    -FN-    -ST-    --A-    --B-    --C-"
3140 PLOT 6,2,3,0,12
3150 PRINT "CONVERSION CHART -- COST OF FINISHED GOODS IN CERTIFICATES

"
3160 PRINT "   RAW              FINISHED GOODS BY TYPE"
3170 PRINT "MATERIALS            A        B        C

"
3180 PRINT X$"               2        1"
3190 PRINT F$"                 1        1        1"
3200 PRINT S$"                      1        2"
3210 RETURN
3220 FOR J= JTO J+ 2
3230 FOR K= 1TO MN- 1+ T
3240 P$= RIGHT$ (STR$ (P(J,K)+ 10000),4)
3250 GOSUB 3350
3260 X= 19+ 7* (K- 1):IF K> 6THEN X= X- 42
3270 Y= J+ 3:IF J> 3THEN Y= Y- 3
3280 IF K> 6THEN Y= Y+ 6
3290 PLOT 3,X,Y:PRINT P$:NEXT K,J:RETURN
3300 FOR J= 1TO 3
3310 P$= RIGHT$ (STR$ (T(RN,J)+ 10000),4):GOSUB 3350
3320 PLOT 3,41,J+ 16:PRINT P$
3330 P$= RIGHT$ (STR$ (T(RN,J+ 3)+ 10000),4):GOSUB 3350
3340 PLOT 3,48,J+ 16:PRINT P$:NEXT J:RETURN
3350 L= LEN (P$):IF L= 0THEN P$= "0":GOTO 3380
3360 IF P$= "0"THEN 3380
3370 IF LEFT$ (P$,1)= "0"THEN P$= RIGHT$ (P$,L- 1):GOTO 3350
3380 IF LEN (P$)< 4THEN P$= " "+ P$:GOTO 3380
3390 RETURN