98 RESTORE 99 REM ******************************** 100 REM ******************************* 110 CODE=7*4096:VARS=5*4096+6*256 111 GR=PEEK(CODE+3)+PEEK(CODE+4)*256 112 PG=VARS 114 PS=VARS+7 116 RS=PS+268 118 AS=RS+80+512 120 ES=AS+560 122 PA=ES+200 150 AP=PEEK(PG+1) 160 : 161 REM **** STORE CITY 162 POKE PS+(AP-1)*67,PEEK(PG+2) 200 DIM GS(8),RP(4,3),QS(3),CC(8) 204 FOR Z=0 TO 8 205 READ GS(Z) 206 NEXT Z 207 FOR Z=0 TO 4: FOR Y=0 TO 3 208 READ RP(Z,Y) 209 NEXT Y:NEXT Z 215 FOR Z = 0 TO 3 216 READ QS(Z) 217 NEXT Z 300 SYS CODE,3 301 PRINT"[155]" 302 PRINT"[194]ITTE WARTEN !" 303 PRINT"[211]TRUKTUREN WERDEN ENTPACKT !" 304 SYS CODE,6,3 500 : 501 REM ***** CHECK KREDITRAHMEN 502 : 505 B=PA+16+(AP-1)*8+4 510 GOSUB 22000:VM=R 515 KR=VM*20/100 516 B=PS+(AP-1)*67+6 517 R=KR:GOSUB 20500: REM STORE KR 525 GOSUB 21000 : REM GET K 530 IF K>0 THEN 600 535 : 540 REM *** AUSCHEIDEN WEGEN LOW GELD 542 IF K>=-KR THEN 550 543 POKE PS+(AP-1)*67+56,255: REM !!!! 544 REM **** AUSSCHEIDEN !!!!!!!! 545 : 547 FT=65:FP=AP:OP=3:GOSUB 7000 :REM FAX AUSSCHEID 549 GOSUB 8502:GOTO 5000:REM PLAYER 550 : 551 REM ***** CHECK AKTIENUEBERNAHEM 552 : 555 IF PEEK(PA+(AP-1)*4+AP-1)>49 THEN 600 560 FOR Y=0 TO 3 562 IF Y=AP-1 THEN 590 564 IF PEEK(PA+(Y-1)*4+AP-1)<50 THEN590 570 : 571 REM ***** UEBERNOMMEN 572 : 575 REM "PLAYER : ";AP;" VON PLAYER :";Y+1;" UE" 577 GOSUB 9500: REM UEBERNAHME 580 : 581 REM PRINT UEBERNAHME 582 GOTO 590: REM NO !!!!! UEBERNAHME 584 REM FAXEN TEXTE FUER UEBERN 585 GOSUB 7500:GOTO 5000: REM NEXT PLAY 590 NEXT Y 600 : 1000 REM **** REAL ABRECHNUNG 1001 UG=0:QG=0:GBES=0:KA=0:KF=0:KE=0 1002 EN=0 1005 AG=GR 1006 B=40944+(AP-1)*4:GOSUB 22000 1007 LK=R 1010 FOR Z=0 TO 6*9-1 1015 A=PEEK(AG+2) 1020 B=A AND 15 1025 A=INT(A/16) 1030 IF B=0 OR B=1 THEN 1200 1035 IF (A>=0 THEN ZI=K*5/100 2005 ZI = INT (ZI) 2010 GOSUB 22000: WK=R 2012 : 2015 AA=PEEK(PA+(AP-1)*4+AP-1) 2020 AA=100-AA 2025 IF AA=0 THEN 2050 :REM NOAKTIE 2030 B=PS+(AP-1)*67+10 2035 GOSUB 22000 : REM GET LONG 2040 DK=R*AA/100/4:DK=INT(DK) 2050 REM ***** DIVIDENDEN ERTRAEGE 2052 : 2055 AB=PA+(AP-1)*4:DE=0 2060 FOR Z=0 TO 3 2065 IF Z=AP-1 THEN 2095 :REM NEXT Z 2070 AA=PEEK(AB+Z):IF AA=0 THEN 2095 2075 B=PS+(Z)*67+10 2080 GOSUB 22000 :REM GET LONG 2085 DE=DE+R*AA/100/4:DE=INT(DE) 2095 NEXT Z 2100 : 2101 REM *** GET VERMOEGEN 2102 : 2105 B=PA+16+(AP-1)*8+4 2110 GOSUB 22000: REM GET LONG 2115 VM=R 2120 : 2121 REM *** GET INVESTITIONEN 2122 : 2125 B=PA+16+(AP-1)*8 2130 GOSUB 22000: REM GET LONG 2135 IV=R 2200 : 2201 REM ***** BERE WERBEKOSTEN 2202 : 2205 B=PS+(AP-1)*67+46 2210 GOSUB 22000:WK=R 2250 : 2251 REM **** BERE ENERGIESPARPREISE 2252 B=PS+(AP-1)*67+58:EP=0 2253 FOR Z=0 TO 8 2255 EP=EP+PEEK(B+Z) 2260 NEXT Z 2500 : 2501 REM ***** BERE GEWINN 2502 : 2505 GW=EN-KE-KF-KA-WK-DK+ZI+DE 2506 GW=INT(GW) 2507 GA=GW-ZI-IV 2550 : 2551 REM **** BERE NEW KONTO 2552 : 2554 K=K+GW:VM=VM+GW 2555 GOSUB 20000 2560 REM STORE VERMOEGEN 2570 R=VM:B=PA+16+(AP-1)*8+4 2580 GOSUB 20500 2600 : 2601 REM STORE NEW LAST KONTO 2603 R=K:B=40944+(AP-1)*4:GOSUB 20500 3000 REM : 3001 REM : 3002 REM ****** OUT PUT 3003 : 3004 SYS CODE,4,3,4,6 3005 SYS CODE,7,96,32,10:SYS CODE,6,3 3010 SYS CODE,3:PRINT""; 3011 SYS CODE,4,3,24,2:SYS CODE,21,AP 3012 PRINT" [199][197][211][193][205][212][193][194][210][197][195][200][206][213][206][199]:" 3014 PRINT 3015 PRINT" [214]ERM*GEN : ";VM 3020 PRINT" [199]UTHABEN VORHER : ";:IF LK>=0 THEN PRINT LK:GOTO 3025 3024 PRINT 3025 PRINT" [194]ESUCHERZAHL : "; GBES 3030 PRINT" [197]NERGIESPARPREISE : ";EP 3035 PRINT 3040 PRINT" [201]NVESTITIONSKOSTEN: " 3045 PRINT" [208]ERSONALKOSTEN : " 3050 PRINT" [198]AHRZEUGKOSTEN : " 3055 PRINT" [215]ERBEKOSTEN : " 3060 PRINT" [197]NERGIEKOSTEN : " 3065 PRINT" [196]IVIDENDENKOSTEN : " 3070 PRINT" [196]IVIDENDENERTR@GE : ";DE 3075 PRINT" [218]INSEN : ";:IF ZI>=0 THEN PRINT ZI:GOTO 3080 3079 PRINT 3080 PRINT" [197]INNAHMEN : ";EN 3085 PRINT"---------------------------------------" 3090 PRINT" [199]EWINN : ";:IF QA>=0 THEN PRINT GA:GOTO 3095 3094 PRINT 3095 GOSUB 21000 3096 PRINT" [199]UTHABEN AKTUELL : ";:IF K>=0 THEN PRINT K:GOTO 3100 3097 PRINT 3100 SYS CODE,6,3 3101 : 3102 : 3110 SYS CODE,3:PRINT""; 3113 PRINT 3114 PRINT 3115 PRINT 3120 PRINT"";:IF LK<0 THEN PRINT LK:GOTO 3125 3124 PRINT 3125 PRINT 3130 PRINT 3135 PRINT 3140 PRINT"";IV 3145 PRINT"";KA 3150 PRINT"";KF 3155 PRINT"";WK 3160 PRINT"";INT(KE) 3165 PRINT"";DK 3170 PRINT 3175 PRINT"";:IF ZI<0 THEN PRINT ZI:GOTO 3180 3176 PRINT 3180 PRINT 3185 PRINT 3190 PRINT"";:IF GA<0 THEN PRINT GA:GOTO 3195 3194 PRINT 3195 GOSUB 21000 3196 PRINT"";:IF K<0 THEN PRINT K:GOTO 3200 3197 PRINT 3200 SYS CODE,6,8 : REM CONV BRIGHT 4000 : 4001 REM ***** RESET VALUES 4002 : 4003 REM *** SCROLL GEWINN 4005 B=PS+(AP-1)*67+14 4010 FOR Z = 0 TO 11 4012 POKE B+Z,PEEK(B+4+Z) 4014 NEXT Z 4020 REM ***** STORE GEWINN 4025 R=GW:B=B+12:GOSUB 20500 4050 : 4052 REM *** SCROLL EINKOMMEN 4055 B=PS+(AP-1)*67+30 4060 FOR Z = 0 TO 11 4072 POKE B+Z,PEEK(B+4+Z) 4074 NEXT Z 4080 REM ***** STORE EINKOMMEN 4085 R=EN:B=B+12:GOSUB 20500 4090 REM ***** STORE EINKOMMEN 4095 R=EN:B=PS+(AP-1)*67+10 4096 GOSUB 20500 4100 : 4101 REM **** CLEAR INVESTMENTS 4102 : 4105 B=PA+16+(AP-1)*8 4106 POKE B+0,0 4107 POKE B+1,0 4108 POKE B+2,0 4109 POKE B+3,0 4500 : 4501 REM **** ASK BUTTONS 4502 : 4505 POKE 2,255 4510 CL=PEEK(2):IF CL=99 THEN 4550 4515 GOTO 4510 4550 REM *** KLICKED EXIT 4555 : 5000 NQ=0 5001 REM **** WEITER ZAEHLEN 5002 : 5003 GOSUB 9000:REM TEST HUMANS RAUS ? 5004 IF HR=1 THEN 5150 5005 AP=AP+1:IF AP=5 THEN NQ=1:AP=1 5006 POKE PG+2,PEEK(PS+(AP-1)*67) 5010 POKE PG+1,AP 5011 B=PS+(AP-1)*67+56 5012 IF PEEK(B)=255 THEN GOTO 5005 REM *** AUSGESCHIEDEN ->NEXT PLAYER 5013 IF PEEK(B)>0 THEN POKE B,0:GOTO 5005 REM *** AUSSETZEN 5014 IF NQ=1 THEN 5100 5015 IF AP>PEEK(PG) THEN 5050:REM COMPI 5020 : 5021 REM **** HAUPSIZ ODER CITY ! 5022 : 5023 REM CITY 5024 : 5025 IF PEEK(PS+(AP-1)*67)=10 THEN 5040 5030 SYS CODE,25,1 5031 Z=PEEK(VARS+2):A$="L.CITY"+STR$(Z) 5032 SYS CODE,1,A$,8 5040 : 5041 REM *** GOTO HAUPSIZ WAEHLEN 5045 SYS CODE,25,1 5046 SYS CODE,1,"L.HAUPTSIT",8 5050 : 5051 REM ***** CALL COMPUTER 5052 : 5053 IF PEEK(PS+(AP-1)*67)=10 THEN INT(RND(0)*8)+1 5070 SYS CODE,1,"L.COMPUTER",8 5100 : 5101 REM ***** QUARTAL UP 5102 AQ=PEEK(PG+4) 5110 AQ=AQ+1: IF AQ=5 THEN 5200 5115 POKE PG+4,AQ 5120 GOTO 5030 : REM LOAD CITY 5130 : 5150 FT=66:FP=0:OP=0:GOSUB 7000 5151 SYS CODE,9:SYS CODE,1,"L.SAVE",8:SYS CODE,10 5155 SYS CODE,25,1 5160 SYS CODE,1,"L.SPLRZAHL",8 5170 END 5195 : 5200 : 5201 REM ***** UMWELTPREISE 5202 POKE PG+5,PEEK(PG+5)+1 5205 AQ=1: POKE PG+4,AQ 5220 SYS CODE,1,"L.EPREIS",8 6999 END 7000 : 7001 REM ***** INIT FAX 7002 : 7003 : 7004 SYS CODE,22,FT 7008 : 7010 IF FP>0 THEN GOSUB 7200 7012 SYS CODE,1,"L.FAX",8 7013 : 7014 SYS CODE,3 7015 SYS CODE,4,3,4,6 7020 SYS CODE,7,96,32,10 7030 SYS CODE,6,3 7040 SYS CODE,8 7050 RETURN 7200 : 7201 REM INSERT NAME 7202 : 7205 SYS CODE,4,3,0,0 7206 SYS CODE,21,FP 7208 FOR X=0 TO 9 7210 POKE 25344+OP+X,PEEK(1024+X) 7212 NEXT X 7250 RETURN 7251 : 8502 REM ***** MAKE AUSSCHEIDEN 8503 : 8505 AG=GR 8506 FOR Z=0 TO 6*9-1 8510 P=PEEK(AG+2):GS=P AND 15:P=INT(P/16) 8515 IF P<>AP THEN 8550 8525 POKE AG+2,0 8550 AG=AG+31:NEXT Z 8600 : 8601 REM *** PLAYER WEG IN STRUKT 8602 : 8605 POKE PS+(AP-1)*67+56,255 8700 : 8701 REM ***** CLEAR GEWINN 8702 : 8705 B=PS+(AP-1)*67+14 8710 FOR Z = 0 TO 15 8712 POKE B+Z,0 8714 NEXT Z 8750 : 8751 REM ***** CLEAR EINKOMMEN 8752 : 8755 B=PS+(AP-1)*67+30 8760 FOR Z = 0 TO 15 8762 POKE B+Z,0 8764 NEXT Z 8800 : 8801 REM ***** CLEAR AKTIEN 8802 : 8805 B=PA+(AP-1)*4 8810 FOR Z=0 TO 3: POKE B+Z,0:NEXT Z 8815 FOR Z=0 TO 3 8820 POKE PA+Z*4+AP-1,0 8825 NEXT Z 8900 RETURN 9000 : 9001 REM **** TEST ALLE HUMAN RAUS 9002 : 9003 HR=0 9005 AH=PEEK(PG):AH=AH-1 9010 IF PEEK(PS+AH*67+56)<>255 THEN9050 9021 HR=1:REM ALLE AUSSCHEIDEN 9050 RETURN 9500 : 9501 : 9502 REM ***** MAKE UEBERNAHME 9503 : 9505 AG=GR 9506 FOR Z=0 TO 6*9-1 9510 P=PEEK(AG+2):GS=P AND 15:P=INT(P/16) 9515 IF P<>AP THEN 9550 9520 P=(Y+1)*16+GS 9525 POKE AG+2,P 9550 AG=AG+31:NEXT Z 9600 : 9601 REM *** PLAYER WEG IN STRUKT 9602 : 9605 POKE PS+(AP-1)*67+56,255 9700 : 9701 REM ***** CLEAR GEWINN 9702 : 9705 B=PS+(AP-1)*67+14 9710 FOR Z = 0 TO 15 9712 POKE B+Z,0 9714 NEXT Z 9750 : 9751 REM ***** CLEAR EINKOMMEN 9752 : 9755 B=PS+(AP-1)*67+30 9760 FOR Z = 0 TO 15 9762 POKE B+Z,0 9764 NEXT Z 9800 : 9801 REM ***** CLEAR AKTIEN 9802 : 9805 B=PA+(AP-1)*4 9810 FOR Z=0 TO 3: POKE B+Z,0:NEXT Z 9815 FOR Z=0 TO 3 9820 POKE PA+Z*4+AP-1,0 9825 NEXT Z 9900 RETURN 10000 REM ***************************** 10150 REM **** UWP FOR THIS RESTAURANT 10160 REM **** EXTRAS 10161 UW=0:QU=0:BES=0:AK=0:FK=0:EK=0 10162 NE=0 10165 A=PEEK(AG+6) 10170 F=A AND 15 10175 A=INT(A/16) 10180 IF (A AND 1) =1 THEN UW=UW+3 : QU=QU+6 10181 IF (A AND 2) =2 THEN UW=UW+4 : QU=QU+6 10182 IF (A AND 4) =4 THEN UW=UW+2 : QU=QU+6 10183 IF (A AND 8) =8 THEN UW=UW-3 : QU=QU+6 10200 REM **** FAHRZEUGE 10201 IF (F AND 1) =1 THEN UW=UW-3 : QU=QU+20: FK=5000: GOTO 10250 10202 IF (F AND 2) =2 THEN UW=UW-1 : QU=QU+25: FK=3000: GOTO 10250 10203 IF (F AND 4) =4 THEN UW=UW+1 : QU=QU+15: FK=500: GOTO 10250 10204 IF (F AND 8) =8 THEN UW=UW+3 : QU=QU+10: FK=0 10250 REM **** GRUENFLAECHE 10255 A=PEEK(AG+3) 10260 R=A AND 15 10265 A=INT(A/16) 10270 S=GS(A) 10271 S=S-R 10272 S=S*4 10273 UW=UW+S 10274 QU=QU+S 10300 REM **** EINRICHTUNG 10305 FOR Y=0 TO 4 10310 ANZ=PEEK(AG+7+5+Y) 10315 TYP=PEEK(AG+7+Y) 10320 UA=(PEEK(ES+Y*40+TYP*4+1)) 10321 IF UA>128 THEN UW=UW-((UA AND 127)*ANZ) 10322 IF UA<128 THEN UW=UW+UA*ANZ 10325 QU=QU+(PEEK(ES+Y*40+TYP*4+0)*ANZ) 10330 NEXT Y 10350 REM ****** WERBUNG 10355 B=PS+(AP-1)*67+46 10360 W=PEEK(B+0) 10361 W=W+PEEK(B+1)*256 10362 W=W+PEEK(B+2)*65536 10363 W=W+(PEEK(B+3) AND 127)*16777216 10370 RA=PEEK(B+4):RA=RA*W/100 10371 PL=PEEK(B+5):PL=PL*W/100 10372 PR=PEEK(B+6):PR=PR*W/100 10373 MA=PEEK(B+7):MA=MA*W/100 10374 UM=PEEK(B+8):UM=UM*W/100 10380 RA=INT(RA/20000) 10381 PL=INT(PL/10000) 10382 PR=INT(PR/12000) 10383 MA=INT(MA/15000) 10384 UM=INT(UM/15000) 10390 IF (RA>5) THEN RA=5 10391 IF (PL>2) THEN PL=2 10392 IF (PR>3) THEN PR=3 10393 IF (MA>4) THEN MA=4 10394 IF (UM>6) THEN UM=6 10400 REM ****** IMAGE NEU BERE 10405 I=PEEK(B+9) 10410 I=I+RA+PL+PR+MA+INT(UM/2) 10415 I=I-3:IF I<0 THEN I=0 10420 POKE (B+9),I 10450 REM ****** WERBUNG AUF UWP BERE 10455 UW=UW+UM+INT(RA/2) 10500 REM ****** UMP ABSCHLAG SIZE 10505 B=PS+(AP-1)*67 10510 R=PEEK(B+1) 10511 S=(PEEK(AG+3) AND 15) 10515 UW=UW*RP(R,S-1)/100 10550 REM ****** QUAL GRUNDSTUECK 10555 QU=QU+PEEK(AG+4) 10600 REM ****** QUAL PERSK ARBEITER 10605 FOR Y=0 TO 9 10610 AR=PEEK(AG+17+Y) 10615 IF AR=255 THEN 10640 10620 REM *** GET QUAL OF WORKER 10625 AV=PEEK(AS+AR*7+6) 10626 AK=AK+PEEK(AS+AR*7+1)*100 10630 QU=QU+AV 10640 NEXT Y 10650 REM *** QUARTALSCHWANKUNG 10655 S=PEEK(PG+4)-1 10660 SP=QS(S) 10670 QU=QU*SP/100 10700 REM *** IMAGESCHWANKUNG 10705 QU=QU*(I+30)/100 10750 REM *** BESUCHER BERE 10755 B=PS+(AP-1)*67 : REM PLAYER 10760 RE=PEEK(B+1) : REM REST ART 10765 B=RS+RE*16 : REM REST STRK 10770 GW=PEEK(B+4) 10775 QM=PEEK(B+5) 10780 BES=QU*200*QM/100 10790 REM **** EINNAHMEN 10791 NE=BES*GW 10800 REM *** TEST AUF ANGESTELLTEN 10805 FOR Y=0 TO 9 10806 IF PEEK(AG+17+Y)<>255 THEN 10850 10807 NEXT Y 10808 BES=0:QU=0:UW=0:NE=0 10850 REM *** TEST AUF 0 BESUCHER 10900 REM *** ENERGIEKOSTEN 10905 EK=(70-UW):IF EK<1 THEN EK=1 10910 EK=EK*100 10915 IF BES=0 THEN EK=0 11000 : 11001 REM **** COUNT ANZ CITY 11002 : 11005 C=AG-GR:C=INT(C/31/6) 11010 CC(C)=CC(C)+1 12000 IF UW<0 THEN UW=0:REM **** UWP BERE END 12001 POKE AG+27,UW :REM SAVE UP GROUND 12002 RETURN 20000 : 20001 REM *** STORE KONTOSTAND 20002 : 20005 QK=K 20006 B=VARS+7+2+((PEEK(VARS+1)-1)*67) 20010 X=0:IF K<0 THEN K=K-K-K:X=128 20020 POKE(B+3),INT(K/16777216) 20030 K=K-(INT(K/16777216)*16777216) 20040 POKE(B+2),INT(K/65536) 20050 K=K-(INT(K/65536)*65536) 20060 POKE(B+1),INT(K/256) 20070 K=K-(INT(K/256)*256) 20080 POKE(B+0),K 20090 POKE(B+3),PEEK(B+3) OR X 20100 K=QK 20110 RETURN 20500 : 20501 REM *** STORE LONG 20502 : 20510 X=0:IF R<0 THEN R=R-R-R:X=128 20520 POKE(B+3),INT(R/16777216) 20530 R=R-(INT(R/16777216)*16777216) 20540 POKE(B+2),INT(R/65536) 20550 R=R-(INT(R/65536)*65536) 20560 POKE(B+1),INT(R/256) 20570 R=R-(INT(R/256)*256) 20580 POKE(B+0),R 20590 POKE(B+3),PEEK(B+3) OR X 20610 RETURN 21000 : 21001 REM *** GET KONTOSTAND 21002 : 21010 B=VARS+7+2+((PEEK(VARS+1)-1)*67) 21020 X=PEEK(B+3) AND 128 21030 K=PEEK(B+0) 21040 K=K+(PEEK(B+1)*256) 21050 K=K+(PEEK(B+2)*65536) 21060 K=K+((PEEK(B+3)AND127)*16777216) 21070 IF X=128 THEN K=-K 21080 RETURN 22000 : 22001 REM *** GET KONTOSTAND 22002 REM:B HAS TO BE BERED 22004 : 22020 X=PEEK(B+3) AND 128 22030 R=PEEK(B+0) 22040 R=R+(PEEK(B+1)*256) 22050 R=R+(PEEK(B+2)*65536) 22060 R=R+((PEEK(B+3)AND127)*16777216) 22070 IF X=128 THEN R=-R 22080 RETURN 30000 REM ******* DATAS 30002 REM ******* DATAS GRUNDST. SIZE 30003 DATA 0,1,2,2,3,3,4,5,5 30004 REM ******* DATAS GRUNDST. SIZE 30005 DATA 130,110,090,070 30006 DATA 130,110,090,070 30007 DATA 130,110,090,070 30008 DATA 130,110,090,070 30009 DATA 130,110,090,070 30020 REM ******* DATAS QUARTALSSCHW 30022 DATA 95,80,100,90