1 REM Ins{nd av Bengt Svensson <5104> 1985-08-04 06.19.58 10 ! *********************************************************************** 20 ! * Program: B\RSEN.800 Ver. 1.5 1985-08-04 30 ! * [ndrat av: Bengt Svensson <5104> 40 ! * Gjord f|r ABC802 50 ! * Testad p} ABC802 55 ! * Orginalversion f|r ABC80 ins{nt av 2262 M}ns Gotare 56 ! * F|r beskrivning se B\RSEN.INF under ABC80/SPEL. 60 ! *********************************************************************** 70 DIM A$(20)=6,K(20),[(20),A(10,20),F(20,51),D$(20)=1 80 DIM A$(20)=6,K(20),[(20),A(10,20),F(20,51),D$(20)=1 90 DIM G(50),M1(20),M2(20),P(1),I(1),S(10),P$(10)=15,X(1),T(1),D(1),Q(1),W(1),G2(1),U$(1),N(1),U(1) 100 ; CHR$(12);TAB(14);'B \ R S E N'; : ; : ; TAB(13);CHR$(151);STRING$(11,35); 110 ON ERROR GOTO 110 : ; : ; : ; "*** Hur m}nga spelare (1-10)"; : INPUT P : IF P<1 OR P>10 THEN 110 120 FOR I=1 TO P : ; "*** Vad heter spelare nr:";I; 130 INPUT U$ : IF LEN(U$)>15 THEN ; "*** Bara 15 bokst{ver tack!" : GOTO 130 ELSE P$(I)=U$ : NEXT I 140 FOR I=1 TO P : S(I)=25000 : NEXT I 150 ; CHR$(12) : W=1 160 RANDOMIZE 170 FOR I=1 TO 20 : READ A$(I) : NEXT I 180 DATA IBM,LME,ASEA,BP,METRIC,SHELL,BEIJER,SKF,AGA,LUXOR 190 DATA SAL@N,LEO,N.FILT,BOFORS,VOLVO,SAAB,LKAB,MONARK,ASTRA,WASA 200 FOR I=1 TO 20 : K(I)=350*RND+25 : M1(I)=K(I) : M2(I)=K(I) : NEXT I 210 FOR I=1 TO 20 : IF INT(2*RND+1)=1 THEN D$(I)="+" ELSE D$(I)="-" 220 NEXT I : ; CHR$(12) : GOTO 290 230 REM KURS[NDRING 240 T=0 : FOR X=1 TO 4000 : T=INP(34) : IF SYS(8) THEN IF T=ASCII(CHR$(13)) THEN 580 250 IF T=ASCII(CHR$(192)) THEN 260 ELSE 280 260 Z=FNHardcopy 270 T=0 280 NEXT X 290 ; CHR$(7); 300 ; CUR(1,0);"K|p/S{lj - Tryck p} RETURN ! "; 310 ; CUR(2,0);SPACE$(40) : G=0 : G2=0 : ; CUR(2,0);"Nr Namn Kurs +/- Max Min Dif" : FOR I=1 TO 20 320 ; CUR(I+2,0);"-"; 330 IF K(I)=0 THEN 500 340 [(I)=10*RND : IF [(I)=0 THEN D$(I)=" " : GOTO 400 350 IF D$(I)="+" THEN IF INT(3*RND+1)=3 THEN 390 ELSE 380 360 IF D$(I)="-" THEN IF INT(3*RND+1)=3 THEN 380 ELSE 390 370 IF D$(I)=" " THEN IF INT(2*RND+1)=1 THEN 390 ELSE 380 380 D$(I)="+" : K(I)=K(I)+[(I) : GOTO 400 390 D$(I)="-" : K(I)=K(I)-[(I) 400 IF K(I)>0 GOTO 430 ELSE ; CUR(1,0);A$(I);" I KONKURS ! Aktier v{rdel|sa"; : ; CHR$(7) : FOR X=1 TO 2000 : NEXT X 410 ; CHR$(7) : FOR X=1 TO 2000 : NEXT X : ; CHR$(7) 420 FOR X=1 TO P : A(X,I)=0 : NEXT X : K(I)=0 : P1=P1+1 : ; CUR(I+2,0);SPACE$(39) : GOTO 500 430 IF K(I)<401 THEN 460 ELSE ; CUR(1,0);A$(I);" ger utdelning ";K(I)-400;" Kronor/Aktie !" : ; CHR$(7); 440 FOR X=1 TO P : IF A(X,I)<>0 THEN S(X)=S(X)+A(X,I)*(K(I)-400) 450 NEXT X : K(I)=400 460 IF K(I)M2(I) THEN M2(I)=K(I) 480 ; CUR(I+2,0);I;TAB(10);A$(I);TAB(23);K(I);TAB(33);D$(I);TAB(34);[(I);TAB(44);M2(I);TAB(54);M1(I); 490 ; TAB(63);M2(I)-M1(I);" " 500 NEXT I 510 FOR D=1 TO 20 : G=G+K(D) : NEXT D : G(W)=G/(20-P1) : G2=G(W)-G(W-1) 520 ; CUR(23,1);"Genomsnitt:";CUR(23,12) INT(G(W));CUR(23,18) INT(G2*100)/100;" "; 530 IF G2>0 THEN ; CUR(23,18);"+"; ELSE ; CUR(23,18);"-"; 540 IF W=49 THEN FOR D=1 TO 50 : G(D-1)=G(D) : NEXT D 550 W=W+1 : FOR I=1 TO 20 : F(I,W)=K(I) : NEXT I 560 IF W=50 THEN FOR I=1 TO 20 : FOR D=1 TO 50 : F(I,D-1)=F(I,D) : NEXT D : NEXT I : W=49 570 FOR F=1 TO 1000 : NEXT F : GOTO 240 580 ; CHR$(12) 590 ; "Vem |nskar g|ra aff{rer "; 600 ON ERROR GOTO 590 : INPUT U$ : FOR N=1 TO P : IF P$(N)=U$ THEN 620 ELSE NEXT N 610 ; "Ingen spelare med det namnet " : ; CHR$(7); : GOTO 590 620 ; CHR$(12) : ; CUR(0,0);"";" ";P$(N);TAB(34);STRING$(45,127) 630 ; "Aktieinnehav:" : FOR X=1 TO 20 : IF A(N,X)<>0 THEN ; A(N,X);TAB(7);" ";A$(X);TAB(17);"Kurs:";TAB(22);K(X) 640 IF A(N,X)<>0 THEN L=L+A(N,X)*K(X) 650 NEXT X : ; TAB(22);L : L=0 : ; : ; "Kontanter:";S(N) 660 FOR X=1 TO 22 : ; CUR(X,50);"" : NEXT X 670 ; CUR(1,53);"\nskad aff{r:" 680 ; CUR(2,52);" 1-K|p" 690 ; CUR(3,52);" 2-S{lj" 700 ; CUR(4,52);" 3-Analys" 710 ; CUR(5,52);" 4-Kurs" 720 ; CUR(6,52);" -]ter" 730 ; CUR(8,52); : GET Y$ 740 IF Y$='1' THEN U=1 ELSE 760 750 GOTO 830 760 IF Y$='2' THEN U=2 ELSE 780 770 GOTO 830 780 IF Y$='3' THEN U=3 ELSE 800 790 GOTO 830 800 IF Y$='4' THEN U=4 ELSE 820 810 GOTO 830 820 IF Y$=CHR$(13) THEN U=5 ELSE 730 830 ON U GOTO 840,910,980,1120,1150 840 ON ERROR GOTO 840 : ; CUR(8,52);"K|p" : ; CUR(9,52);"Antal " : ; CUR(10,52); : INPUT Q : ; CUR(11,52);"Aktie " 850 ; CUR(12,52); : INPUT U$ 860 FOR D=1 TO 20 : IF U$=A$(D) THEN 870 ELSE NEXT D : ; CUR(13,52);"Aktien " : ; CUR(14,52);"Finns ej" : GOTO 840 870 ON ERROR GOTO 880 : IF S(N)>=Q*K(D) THEN 890 ELSE 880 880 ; CUR(13,52);"Ej kontant" : ; CUR(14,52);"T{ckning" : GOTO 830 890 A(N,D)=A(N,D)+Q : S(N)=S(N)-(Q*K(D)) 900 GOTO 620 910 ON ERROR GOTO 910 : ; CUR(8,52);"S{ljning" : ; CUR(9,52);"Antal " : ; CUR(10,52); : INPUT Q : ; CUR(11,52);"Aktie " 920 ; CUR(12,52); : INPUT U$ 930 FOR D=1 TO 20 : IF U$=A$(D) THEN 940 ELSE NEXT D : ; CUR(14,52);"Aktien " : ; CUR(15,52);"Finns ej" : GOTO 910 940 ON ERROR GOTO 950 : IF A(N,D)>=Q THEN 960 950 ; CUR(14,52);"Du {ger ej" : ; CUR(15,52);"S} m}nga" : ; CUR(16,52);"Aktier !" : GOTO 910 960 A(N,D)=A(N,D)-Q : S(N)=S(N)+Q*K(D) 970 GOTO 620 980 ON ERROR GOTO 980 : ; CUR(10,52);"Aktie " : ; CUR(11,52); : INPUT U$ 990 FOR D=1 TO 20 : IF U$=A$(D) THEN 1010 ELSE NEXT D : IF U$="G" THEN D=21 ELSE IF U$="B" J1=1 ELSE 980 1000 IF J1=1 THEN FOR D=1 TO 21 1010 ; CHR$(12) : FOR I=1 TO 24 : ; : ; CHR$(151); : NEXT I 1020 FOR G1=10 TO 60 : SET DOT G1,10 : NEXT G1 : FOR G1=10 TO 70 : SET DOT 60,G1 : NEXT G1 1030 IF D=21 THEN FOR X=1 TO 48 : SET DOT 60-(G(X)/8),(10+X) : NEXT X : ; CUR(0,0);CHR$(135);"Genomsnitt" : GOTO 1070 1040 FOR X=1 TO 49 : SET DOT 60-(F(D,X)/8),(10+X) : NEXT X 1050 ; CUR(1,7);CHR$(135);A$(D);CUR(1,15);"Max:";M2(D);CUR(1,23);" Min:";M1(D); 1060 ; CUR(2,7);CHR$(135);STRING$(LEN(A$(D)),61) 1070 ON ERROR GOTO 1070 : ; CUR(22,0);"Tryck p} RETURN n{r du l{st f{rdigt."; : GET R$ 1080 GOTO 620 1090 IF SYS(8) THEN IF F=13 THEN NEXT D ELSE 1080 1100 J1=0 : GOTO 620 1110 IF T=ASCII(CHR$(13)) THEN 620 ELSE 1070 1120 ; CUR(10,52);"Aktie " : ; CUR(11,52); : INPUT U$ 1130 FOR D9=1 TO 20 : IF U$=A$(D9) THEN 1140 ELSE NEXT D9 : ; CUR(12,52);"Aktien " : ; CUR(13,52);"Finns ej" : GOTO 1120 1140 ; CUR(12,52);"Kurs: ";K(D) : GOTO 730 1150 ; CHR$(12) : GOTO 290 1160 DEF FNHardcopy LOCAL Max,Adress,Teck 1170 PREPARE 'PR:VSA36C72.5' AS FILE 9 1180 Max=PEEK(-172) 1190 FOR I=0 TO 23 1200 IF Max=40 THEN ; #9,TAB(20); 1210 IF Max=40 THEN Adress=31744+I*128-I/8*984 ELSE Adress=30720+I*80 1220 FOR Y=Adress TO Adress+Max-1 1230 Teck=PEEK(Y) 1240 IF Teck<32 THEN Teck=32 1250 ; #9,CHR$(Teck); 1260 NEXT Y 1270 ; #9 1280 NEXT I 1290 CLOSE 9 1300 RETURN 0 1310 FNEND