10 ! LIST PADDEL.BAS 100 REM ++++++++++++++++++++++++++++++++ 101 REM ! Program .... PADDEL 102 REM ! fr}n demokassetten till ABC80 103 REM ! Utg}va 1.0 79-03-10 104 REM ! av (c) DATAINDUSTRIER AB 105 REM ! Minne 16 Kbytes 106 REM ++++++++++++++++++++++++++++++++ 140 ! Ins{nd av Lars B. Cid <7390> 1988-03-19 21.29.17 150 ! MODIFIERAT av Lars B. Cid 1988-03-19 155 ! Ljudeffekter, TIO-I-TOPP tabell, autoplayer. 157 ! 158 ! --------------------------------------- 159 ! F|ljande {ndringar inf|rda 1988-06-04.1345 av <2776> B Sandgren 160 ! WIDTH 80 inf|rt i FNEnd f|r }terg}ng till normall{ge vid avslut. 161 ! Inf|rt FNtid$(n,n) som promptar f|r att st{lla klockan. 162 ! [ndrat namnet till PADDEL.BAS 163 ! --------------------------------------- 164 ! 165 INTEGER : EXTEND 166 IF INSTR(1,TIME$,'I') Slask$=FNTid$(1,16) 170 DIM P9$(10,10)=3,P9dat$(10,10)=14,P9(10,10) 175 GOSUB 1060 : WIDTH 40 180 Current=1 : Z=FNL{s 185 Z=FNLista(Current) 190 ; CUR(20,5) '0 - Avslut, A - Autoplay.' 195 ; CUR(18,5) 'Sv}righetsgrad (1-10): '; 200 ON ERROR GOTO 190 205 INPUT P1$ : IF P1$='A' OR P1$='a' Auto=-1 : P1$=NUM$(Current) ELSE Auto=0 210 P1=VAL(P1$) 215 IF P1=0 Z=FNEnd ! CHAIN 'start' 220 IF P1<1 OR P1>10 GOTO 190 225 IF Current<>P1 Current=P1 : GOTO 185 230 P1=7+(10-P1)*2 235 P=34 : P2=P1 240 W3=1 : Q=0 : F2=47 : F1=47 245 B=0 : S=0 : W=6 250 DIM A(12,10) 255 GOSUB 780 260 GOSUB 995 265 ; CUR(23,2); : ; 'Po{ng:'; 270 ; S; : ; " Boll:"; : ; B;' Niv}:' Current; 275 T1=T1+W2 280 X1=X+T1*R1 285 Y1=Y+T1*100/V*R2 290 IF Y1<4 AND R2=-1 Y1=3 295 IF Y1>62 AND R2=1 Y1=63 300 SET DOT Y1,X1 305 CLR DOT F2,F1 310 F1=X1 : F2=Y1 315 IF X1>76 GOTO 405 320 IF X1<38 GOTO 645 325 IF Y1=3 GOTO 595 330 IF Y1=63 GOTO 620 335 REM 340 ! Ta bort nedanst}ende rad, om du vill att datorn skall vara b{ttre 345 IF Auto IF Ww3=0 Ww3=1 : GOTO 275 ELSE Ww3=0 350 FOR J=1 TO 1+W1*(ABS(Auto=0)) 355 IF Auto=0 THEN 375 360 IF PY1 GOSUB 900 370 GOTO 390 375 Tb=ABS(SYS(8)*INP(34)) 380 IF Tb=8 OR Tb=199 GOSUB 900 385 IF Tb=9 OR Tb=198 GOSUB 930 390 IF Tb=192 THEN 185 395 NEXT J 400 GOTO 275 405 REM ==KOLLA PADDELTR[FF=== 410 IF K5=0 GOSUB 835 415 IF DOT(Y1,X1+1) GOTO 510 420 CLR DOT F2,F1 425 Z=FNLjud(5) 430 FOR I=1 TO 2000 : NEXT I 435 FOR I=1 TO 6000 : NEXT I 440 IF B<6 GOTO 505 441 IF S<=P9(Current,10) THEN 185 445 ; CHR$(12) : ; 450 ; 'Grattis du har kommit in p}' 455 ; 'listan, skriv in ditt namn.' 460 IF Auto A$='Cpu' : ; 'Computer' : GOTO 475 465 Z=SYS(6) : GET A$ 470 ; : INPUT ''A$ 475 IF LEN(A$)>3 A$=LEFT$(A$,3) 480 A$=A$+SPACE$(3-LEN(A$)) 485 P9$(Current,10)=A$ 490 P9(Current,10)=S 495 P9dat$(Current,10)=MID$(TIME$,3,14) 500 Z=FNBubble+FNSkriv : GOTO 185 505 GOSUB 995 : GOTO 265 510 REM ===PADDELTR[FF==== 515 IF W1=1 AND W=2 GOTO 535 520 IF W1<>1 GOTO 530 525 W2=2 : W1=6 : GOTO 535 530 W1=W1-1 535 Z=FNLjud(3) 540 I=P2/2-ABS(P-Y1+R2) 545 IF I>-1 GOTO 555 550 R2=-R2 : V=80 : GOTO 565 555 V=80+I*60 560 IF V>300 V=300 565 R1=-R1 : S1=S1+1 570 IF S1/10*10<>S1 GOTO 585 575 IF P2>7 P2=P2-2 580 GOSUB 960 585 X=77 : Y=Y1 : T1=0 590 GOTO 335 595 REM ==KANTTR[FF 600 R2=1 605 X=X1 : Y=4 : T1=0 610 Z=FNLjud(1) 615 GOTO 335 620 REM ==KANTTR[FF 625 R2=-1 630 X=X1 : Y=62 : T1=0 635 Z=FNLjud(1) 640 GOTO 335 645 IF X1>5 GOTO 665 650 Z=FNLjud(1) 655 Q=1 660 GOTO 770 665 IF X1<15 GOTO 325 670 IF X1/2*2=X1 GOTO 325 675 M=R2 680 IF (Y1-3)/6*6<>Y1-3 M=0 685 L1=(Y1-M+2)/6*6-2 690 L2=L1/6+1 695 L3=(X1-14)/2+1 700 IF A(L3,L2)=0 GOTO 325 705 A(L3,L2)=0 710 Z=FNLjud(2) 715 FOR I=0 TO 5 720 CLR DOT L1+I,X1 725 NEXT I 730 K5=K5-1 735 S=S+13-L3 740 ; CUR(23,2); : ; 'Po{ng:'; 745 ; S; : ; " Boll:" B; 750 REM ==V[ND 755 IF Q=0 GOTO 765 760 Q=0 : GOTO 770 765 IF R1>0 GOTO 325 770 X=X1 : Y=Y1 : T1=0 : R1=-R1 775 GOTO 325 780 REM ===INITIERA BR[DET==== 785 ; CHR$(12) 790 FOR I=1 TO 23 : ; CHR$(151) 795 NEXT I 800 FOR I=4 TO 77 805 SET DOT 2,I 810 SET DOT 64,I 815 NEXT I 820 FOR I=3 TO 64 825 SET DOT I,4 830 NEXT I 835 Z=FNLjud(4) 840 FOR I=1 TO 12 845 FOR J=1 TO 10 850 A(I,J)=1 855 NEXT J : NEXT I 860 K5=120 865 GOSUB 960 870 FOR I=15 TO 37 STEP 2 875 FOR J=3 TO 57 STEP 6 880 FOR K=1 TO 5 885 SET DOT J+K,I 890 NEXT K : NEXT J : NEXT I 895 RETURN 900 REM ====PADDEL UPP]T==== 905 IF P-P2/2=3 RETURN 910 CLR DOT P+P2/2,78 915 P=P-1 920 SET DOT P-P2/2,78 925 RETURN 930 REM ====PADDEL NED]T==== 935 IF P+P2/2=63 RETURN 940 CLR DOT P-P2/2,78 945 P=P+1 950 SET DOT P+P2/2,78 955 RETURN 960 REM ====RITA PADDEL======== 965 FOR I=1 TO 64 970 CLR DOT I,78 975 NEXT I 980 FOR I=P-P2/2 TO P+P2/2 985 SET DOT I,78 : NEXT I 990 RETURN 995 REM ========SERV=========== 1000 Y=100*RND : S1=0 1005 IF Y<5 OR Y>63 GOTO 1000 1010 P=34 1015 P2=P1 : GOSUB 960 1020 V=125+180*RND 1025 X=77 : N=N+1 1030 R2=1 : IF RND>.5 R2=-1 1035 T1=0 : R1=-1 1040 X1=X : Y1=Y 1045 W1=W : W2=W3 : B=B+1 1050 Z=FNLjud(1) 1055 RETURN 1060 DIM Asm$=15 1065 Asm$=CHR$(66,22,0,219,5,197,16,254,193,27,122,179,32,245,201) 1070 RETURN 1075 DEF FNLjud(S) LOCAL A,B,C 1080 ON S RESTORE 1145,1150,1155,1160,1165,1170 1085 WHILE -1 1090 READ A,B,C : IF A=0 THEN 1120 1095 IF C<=-255 FOR P=A TO B : NEXT P : GOTO 1090 1100 FOR Pp=A TO B STEP C 1105 Z=FNSoundx(Pp,10) 1110 NEXT Pp 1115 WEND 1120 RETURN 0 1125 FNEND 1130 ! 1135 DEF FNSoundx(Frekv,L{ngd)=CALL(VARPTR(Asm$),Frekv*256+L{ngd) 1140 ! 1145 DATA 1,30,6,0,0,0 1150 DATA 1,10,2,0,0,0 1155 DATA 55,50,-1,0,0,0 1160 DATA 35,50,1,35,50,1,35,50,1,35,50,1,35,50,1,0,0,0 1165 DATA 1,5,1,5,1,-1,1,5,1,5,1,-1,0,0,0 1170 DATA 100,30,1,200,30,-1,100,30,1,200,30,-1,100,30,1,200,30,-1,0,0,0 1175 ! 1180 ! 1185 DEF FNLista(Level) 1190 ; CHR$(12) STRING$(10,42) ' P A D D E L ' STRING$(10,42) 1195 ; CUR(4,5) 'Resultatlista, Niv}' Level 1200 ! 1205 FOR I=1 TO 10 1210 ; CUR(I+5,5); : ; USING '##' I; 1215 ; ' ' P9dat$(Level,I) ' ' P9$(Level,I) ' '; 1220 ; USING '#### po{ng' P9(Level,I) 1225 NEXT I 1230 ! 1235 RETURN 0 1240 FNEND 1245 ! 1250 DEF FNL{s 1255 ! 1260 ON ERROR GOTO 1330 1265 OPEN 'PADDEL.DAT' AS FILE 1 1270 FOR I=1 TO 10 1275 FOR J=1 TO 10 1280 INPUT #1,P9dat$(I,J) 1285 INPUT #1,P9$(I,J) 1290 INPUT #1,P9(I,J) 1295 NEXT J 1300 NEXT I 1305 CLOSE 1 1310 ! 1315 RETURN 0 1320 ! 1325 ! *Error* 1330 ON ERROR GOTO 1395 1335 PREPARE 'PADDEL.DAT' AS FILE 1 1340 FOR I=1 TO 10 1345 FOR J=1 TO 10 1350 ; #1 '00-00-00 00.00' 1355 ; #1 'ABC' 1360 ; #1;11-J 1365 NEXT J 1370 NEXT I 1375 CLOSE 1 1380 GOTO 1260 1385 ! 1390 ! *Can't prepare* 1395 CLOSE 1400 ; 'Errcode' ERRCODE 1405 STOP 1410 FNEND 1415 ! 1420 DEF FNSkriv 1425 PREPARE 'paddel.dat' AS FILE 1 1430 FOR I=1 TO 10 1435 FOR J=1 TO 10 1440 ; #1 P9dat$(I,J) 1445 ; #1 P9$(I,J) 1450 ; #1 P9(I,J) 1455 NEXT J 1460 NEXT I 1465 CLOSE 1 1470 RETURN 0 1475 FNEND 1480 ! 1485 DEF FNBubble 1490 ! 1495 FOR I=1 TO 10 1500 ! 1505 FOR J=10 TO I STEP -1 1510 ! 1515 IF P9(Current,J) Dagens datum ]],MM,DD,HH,MM : 'Z0,Z1,Z2,Z3,Z4 2070 POKE -17,Z0,Z1,Z2,Z3,Z4,0 2080 RETURN MID$(TIME$,Fr}ntkn,Tomtkn) 2090 FNEND 2100 !