mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-14 23:16:06 +09:00
moving everything neatly into the assets directory
This commit is contained in:
13
assets/disk0/home/basic/99.bas
Normal file
13
assets/disk0/home/basic/99.bas
Normal file
@@ -0,0 +1,13 @@
|
||||
1 FOR I = 99 TO 1 STEP -1
|
||||
2 MODE = 1
|
||||
3 GOSUB 12
|
||||
4 PRINT I;" bottle";BOTTLES;" of beer on the wall, ";i;" bottle";BOTTLES;" of beer."
|
||||
5 MODE = 2
|
||||
6 GOSUB 12
|
||||
7 PRINT "Take one down and pass it around, ";(I-1);" bottle";BOTTLES;" of beer on the wall."
|
||||
8 NEXT
|
||||
9 PRINT "No more bottles of beer on the wall, no more bottles of beer."
|
||||
10 PRINT "Go to the store and buy some more. 99 bottles of beer on the wall."
|
||||
11 END
|
||||
12 IF I == MODE THEN BOTTLES = "" ELSE BOTTLES = "s"
|
||||
13 RETURN
|
||||
203
assets/disk0/home/basic/amazing.bas
Normal file
203
assets/disk0/home/basic/amazing.bas
Normal file
@@ -0,0 +1,203 @@
|
||||
1 OPTIONBASE 1
|
||||
10 PRINT SPC(28);"AMAZING PROGRAM"
|
||||
20 PRINT SPC(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
30 PRINT
|
||||
31 PRINT
|
||||
32 PRINT
|
||||
33 PRINT
|
||||
100 PRINT "WHAT ARE YOUR WIDTH";
|
||||
101 INPUT H
|
||||
102 PRINT "WHAT ARE YOUR LENGTH";
|
||||
103 INPUT V
|
||||
105 IF H<>1 AND V<>1 THEN GOTO 110
|
||||
106 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN."
|
||||
107 GOTO 100
|
||||
110 WS=DIM(H,V)
|
||||
111 VS=DIM(H,V)
|
||||
120 PRINT
|
||||
130 PRINT
|
||||
140 PRINT
|
||||
150 PRINT
|
||||
160 Q=0
|
||||
161 Z=0
|
||||
162 X=INT(RND(1)*H+1)
|
||||
165 FOR I=1 TO H
|
||||
170 IF I==X THEN GOTO 173
|
||||
171 PRINT ".--";
|
||||
172 GOTO 175
|
||||
173 PRINT ". ";
|
||||
180 NEXT
|
||||
190 PRINT "."
|
||||
195 C=1
|
||||
196 WS(X,1)=C
|
||||
197 C=C+1
|
||||
200 R=X
|
||||
201 S=1
|
||||
202 GOTO 260
|
||||
210 IF R<>H THEN GOTO 240
|
||||
215 IF S<>V THEN GOTO 230
|
||||
220 R=1
|
||||
221 S=1
|
||||
222 GOTO 250
|
||||
230 R=1
|
||||
231 S=S+1
|
||||
232 GOTO 250
|
||||
240 R=R+1
|
||||
250 IF WS(R,S)==0 THEN GOTO 210
|
||||
260 IF R-1==0 THEN GOTO 530
|
||||
265 IF WS(R-1,S)<>0 THEN GOTO 530
|
||||
270 IF S-1==0 THEN GOTO 390
|
||||
280 IF WS(R,S-1)<>0 THEN GOTO 390
|
||||
290 IF R==H THEN GOTO 330
|
||||
300 IF WS(R+1,S)<>0 THEN GOTO 330
|
||||
310 X=INT(RND(1)*3+1)
|
||||
320 REM ON X GOTO 790,820,860
|
||||
321 IF X==1 THEN GOTO 790
|
||||
322 IF X==2 THEN GOTO 820
|
||||
323 IF X==3 THEN GOTO 860
|
||||
330 IF S<>V THEN GOTO 340
|
||||
334 IF Z==1 THEN GOTO 370
|
||||
338 Q=1
|
||||
339 GOTO 350
|
||||
340 IF WS(R,S+1)<>0 THEN GOTO 370
|
||||
350 X=INT(RND(1)*3+1)
|
||||
360 REM ON X GOTO 790,820,910
|
||||
361 IF X==1 THEN GOTO 790
|
||||
362 IF X==2 THEN GOTO 820
|
||||
363 IF X==3 THEN GOTO 910
|
||||
370 X=INT(RND(1)*2+1)
|
||||
380 REM ON X GOTO 790,820
|
||||
390 IF R==H THEN GOTO 470
|
||||
400 IF WS(R+1,S)<>0 THEN GOTO 470
|
||||
405 IF S<>V THEN GOTO 420
|
||||
410 IF Z==1 THEN GOTO 450
|
||||
415 Q=1
|
||||
416 GOTO 430
|
||||
420 IF WS(R,S+1)<>0 THEN GOTO 450
|
||||
430 X=INT(RND(1)*3+1)
|
||||
440 REM ON X GOTO 790,860,910
|
||||
441 IF X==1 THEN GOTO 790
|
||||
442 IF X==2 THEN GOTO 860
|
||||
443 IF X==3 THEN GOTO 910
|
||||
450 X=INT(RND(1)*2+1)
|
||||
460 REM ON X GOTO 790,860
|
||||
470 IF S<>V THEN GOTO 490
|
||||
480 IF Z==1 THEN GOTO 520
|
||||
485 Q=1
|
||||
486 GOTO 500
|
||||
490 IF WS(R,S+1)<>0 THEN GOTO 520
|
||||
500 X=INT(RND(1)*2+1)
|
||||
510 REM ON X GOTO 790,910
|
||||
511 IF X==1 THEN GOTO 790
|
||||
512 IF X==2 THEN GOTO 910
|
||||
520 GOTO 790
|
||||
530 IF S-1==0 THEN GOTO 670
|
||||
540 IF WS(R,S-1)<>0 THEN GOTO 670
|
||||
545 IF R==H THEN GOTO 610
|
||||
547 IF WS(R+1,S)<>0 THEN GOTO 610
|
||||
550 IF S<>V THEN GOTO 560
|
||||
552 IF Z==1 THEN GOTO 590
|
||||
554 Q=1
|
||||
555 GOTO 570
|
||||
560 IF WS(R,S+1)<>0 THEN GOTO 590
|
||||
570 X=INT(RND(1)*3+1)
|
||||
580 REM ON X GOTO 820,860,910
|
||||
581 IF X==0 THEN GOTO 820
|
||||
582 IF X==1 THEN GOTO 860
|
||||
583 IF X==2 THEN GOTO 910
|
||||
590 X=INT(RND(1)*2+1)
|
||||
600 REM ON X GOTO 820,860
|
||||
601 IF X==1 THEN GOTO 820
|
||||
602 IF X==2 THEN GOTO 860
|
||||
610 IF S<>V THEN GOTO 630
|
||||
620 IF Z==1 THEN GOTO 660
|
||||
625 Q=1
|
||||
626 GOTO 640
|
||||
630 IF WS(R,S+1)<>0 THEN GOTO 660
|
||||
640 X=INT(RND(1)*2+1)
|
||||
650 REM ON X GOTO 820,910
|
||||
651 IF X==0 THEN GOTO 820
|
||||
652 IF X==1 THEN GOTO 910
|
||||
660 GOTO 820
|
||||
670 IF R==H THEN GOTO 740
|
||||
680 IF WS(R+1,S)<>0 THEN GOTO 740
|
||||
685 IF S<>V THEN GOTO 700
|
||||
690 IF Z==1 THEN GOTO 730
|
||||
695 Q=1
|
||||
696 GOTO 830
|
||||
700 IF WS(R,S+1)<>0 THEN GOTO 730
|
||||
710 X=INT(RND(1)*2+1)
|
||||
720 REM ON X GOTO 860,910
|
||||
721 IF X==0 THEN GOTO 860
|
||||
722 IF X==1 THEN GOTO 910
|
||||
730 GOTO 860
|
||||
740 IF S<>V THEN GOTO 760
|
||||
750 IF Z==1 THEN GOTO 780
|
||||
755 Q=1
|
||||
756 GOTO 770
|
||||
760 IF WS(R,S+1)<>0 THEN GOTO 780
|
||||
770 GOTO 910
|
||||
780 GOTO 1000
|
||||
790 WS(R-1,S)=C
|
||||
800 C=C+1
|
||||
801 VS(R-1,S)=2
|
||||
802 R=R-1
|
||||
810 IF C==H*V+1 THEN GOTO 1010
|
||||
815 Q=0
|
||||
816 GOTO 260
|
||||
820 WS(R,S-1)=C
|
||||
830 C=C+1
|
||||
840 VS(R,S-1)=1
|
||||
841 S=S-1
|
||||
842 IF C==H*V+1 THEN GOTO 1010
|
||||
850 Q=0
|
||||
851 GOTO 260
|
||||
860 WS(R+1,S)=C
|
||||
870 C=C+1
|
||||
871 IF VS(R,S)==0 THEN GOTO 880
|
||||
875 VS(R,S)=3
|
||||
876 GOTO 890
|
||||
880 VS(R,S)=2
|
||||
890 R=R+1
|
||||
900 IF C==H*V+1 THEN GOTO 1010
|
||||
905 GOTO 530
|
||||
910 IF Q==1 THEN GOTO 960
|
||||
920 WS(R,S+1)=C
|
||||
921 C=C+1
|
||||
922 IF VS(R,S)==0 THEN GOTO 940
|
||||
930 VS(R,S)=3
|
||||
931 GOTO 950
|
||||
940 VS(R,S)=1
|
||||
950 S=S+1
|
||||
951 IF C==H*V+1 THEN GOTO 1010
|
||||
955 GOTO 260
|
||||
960 Z=1
|
||||
970 IF VS(R,S)==0 THEN GOTO 980
|
||||
975 VS(R,S)=3
|
||||
976 Q=0
|
||||
977 GOTO 1000
|
||||
980 VS(R,S)=1
|
||||
981 Q=0
|
||||
982 R=1
|
||||
983 S=1
|
||||
984 GOTO 250
|
||||
1000 GOTO 210
|
||||
1010 FOR J=1 TO V
|
||||
1011 PRINT "I";
|
||||
1012 FOR I=1 TO H
|
||||
1013 IF VS(I,J)<2 THEN GOTO 1030
|
||||
1020 PRINT " ";
|
||||
1021 GOTO 1040
|
||||
1030 PRINT " I";
|
||||
1040 NEXT
|
||||
1041 PRINT
|
||||
1043 FOR I=1 TO H
|
||||
1045 IF VS(I,J)==0 THEN GOTO 1060
|
||||
1050 IF VS(I,J)==2 THEN GOTO 1060
|
||||
1051 PRINT ": ";
|
||||
1052 GOTO 1070
|
||||
1060 PRINT ":--";
|
||||
1070 NEXT
|
||||
1071 PRINT "."
|
||||
1072 NEXT
|
||||
1073 END
|
||||
320
assets/disk0/home/basic/blackjack.bas
Normal file
320
assets/disk0/home/basic/blackjack.bas
Normal file
@@ -0,0 +1,320 @@
|
||||
1 OPTIONBASE 1
|
||||
2 PRINT SPC(31);"BLACK JACK"
|
||||
4 PRINT SPC(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
6 PRINT:PRINT:PRINT
|
||||
10 DEFUN TRUNCATEHAND(Q)=Q+11*(Q>=22)
|
||||
20 HANDCARDS=DIM(15,12):HANDTOTAL=DIM(15):DECK=DIM(52):DISCARD=DIM(52):PTOTAL=DIM(8):THISHNDFOR=DIM(7):BETS=DIM(15)
|
||||
30 CARDLEN=DIM(15)
|
||||
31 ZARR=DIM(10)
|
||||
40 REM--HANDCARDS(I,J) IS THE JTH CARD IN HAND I, HANDTOTAL(I) IS TOTAL OF HAND I
|
||||
50 REM--DECK IS THE DECK BEING DEALT FROM, DISCARD IS THE DISCARD PILE,
|
||||
60 REM--PTOTAL(I) IS THE TOTAL FOR PLAYER I, THISHNDFOR(I) IS THE TOTAL THIS HAND FOR
|
||||
70 REM--PLAYER I, BETS(I) IS TH BET FOR HAND I
|
||||
80 REM--CARDLEN(I) IS THE LENGTH OF HANDCARDS(I,*)
|
||||
90 GOTO 1500
|
||||
100 REM--SUBROUTINE TO GET A CARD. RESULT IS PUT IN X.
|
||||
110 IF C<51 THEN GOTO 230
|
||||
120 PRINT "RESHUFFLING"
|
||||
130 FOR D=D TO 1 STEP -1
|
||||
140 C=C-1
|
||||
150 DECK(C)=DISCARD(D)
|
||||
160 NEXT
|
||||
170 FOR C1=52 TO C STEP -1
|
||||
180 C2=INT(RND(1)*(C1-C+1))+C
|
||||
190 C3=DECK(C2)
|
||||
200 DECK(C2)=DECK(C1)
|
||||
210 DECK(C1)=C3
|
||||
220 NEXT
|
||||
230 X=DECK(C)
|
||||
240 C=C+1
|
||||
250 RETURN
|
||||
300 REM--SUBROUTINE TO EVALUATE HAND I. TOTAL IS PUT INTO
|
||||
310 REM--HANDTOTAL(I). TOTALS HAVE THE FOLLOWING MEANING:
|
||||
320 REM-- 2-10...HARD 2-10
|
||||
330 REM-- 11-21...SOFT 11-21
|
||||
340 REM-- 22-32...HARD 11-21
|
||||
350 REM-- 33+....BUSTED
|
||||
360 Q=0
|
||||
370 FOR Q2=1 TO CARDLEN(I)
|
||||
380 X=HANDCARDS(I,Q2)
|
||||
390 GOSUB 500
|
||||
400 NEXT
|
||||
410 HANDTOTAL(I)=Q
|
||||
420 RETURN
|
||||
500 REM--SUBROUTINE TO ADD CARD X TO TOTAL Q.
|
||||
510 X1=X: IF X1>10 THEN X1=10: REM SAME AS X1=10 MIN X
|
||||
520 Q1=Q+X1
|
||||
530 IF Q>=11 THEN GOTO 590
|
||||
540 IF X>1 THEN GOTO 570
|
||||
550 Q=Q+11
|
||||
560 RETURN
|
||||
570 Q=Q1-11*(Q1>=11)
|
||||
580 RETURN
|
||||
590 Q=Q1-(Q<=21 AND Q1>21)
|
||||
600 IF Q<33 THEN GOTO 620
|
||||
610 Q=-1
|
||||
620 RETURN
|
||||
700 REM--CARD PRINTING SUBROUTINE
|
||||
710 REM DSTR DEFINED ELSEWHERE
|
||||
720 PRINT MID(DSTR,3*X-2,3);
|
||||
730 PRINT " ";
|
||||
740 RETURN
|
||||
750 REM--ALTERNATIVE PRINTING ROUTINE
|
||||
760 PRINT " ";MID(DSTR,3*X-1,2);
|
||||
770 PRINT " ";
|
||||
780 RETURN
|
||||
800 REM--SUBROUTINE TO PLAY OUT A HAND.
|
||||
810 REM--NO SPLITTING OR BLACKJACKS ALLOWED
|
||||
820 H1=5
|
||||
830 GOSUB 1410
|
||||
840 H1=3
|
||||
850 ON H GOTO 950,930
|
||||
860 GOSUB 100
|
||||
870 BETS(I)=BETS(I)*2
|
||||
880 PRINT "RECEIVED A";
|
||||
890 GOSUB 700
|
||||
900 GOSUB 1100
|
||||
910 IF Q>0 THEN GOSUB 1300
|
||||
920 RETURN
|
||||
930 GOSUB 1320
|
||||
940 RETURN
|
||||
950 GOSUB 100
|
||||
960 PRINT "RECEIVED A";
|
||||
970 GOSUB 700
|
||||
980 GOSUB 1100
|
||||
990 IF Q<0 THEN GOTO 940
|
||||
1000 PRINT "HIT";
|
||||
1010 GOTO 830
|
||||
1100 REM--SUBROUTINE TO ADD A CARD TO ROW I
|
||||
1110 CARDLEN(I)=CARDLEN(I)+1
|
||||
1120 HANDCARDS(I,CARDLEN(I))=X
|
||||
1130 Q=HANDTOTAL(I)
|
||||
1140 GOSUB 500
|
||||
1150 HANDTOTAL(I)=Q
|
||||
1160 IF Q>=0 THEN GOTO 1190
|
||||
1170 PRINT "...BUSTED"
|
||||
1180 GOSUB 1200
|
||||
1190 RETURN
|
||||
1200 REM--SUBROUTINE TO DISCARD ROW I
|
||||
1210 IF CARDLEN(I)<>0 THEN GOTO 1230
|
||||
1220 RETURN
|
||||
1230 D=D+1
|
||||
1240 DISCARD(D)=HANDCARDS(I,CARDLEN(I))
|
||||
1250 CARDLEN(I)=CARDLEN(I)-1
|
||||
1260 GOTO 1210
|
||||
1300 REM--PRINTS TOTAL OF HAND I
|
||||
1310 PRINT
|
||||
1320 AA=TRUNCATEHAND(HANDTOTAL(I))
|
||||
1325 PRINT "TOTAL IS";AA
|
||||
1330 RETURN
|
||||
1400 REM--SUBROUTINE TO READ REPLY
|
||||
1410 REM ISTR DEFINED ELSEWHERE
|
||||
1420 INPUT HSTR: HSTR=LEFT(HSTR,1)
|
||||
1430 FOR H=1 TO H1 STEP 2
|
||||
1440 IF HSTR==MID(ISTR,H,1) THEN GOTO 1480
|
||||
1450 NEXT
|
||||
1460 PRINT "TYPE ";MID(ISTR,1,H1-1);" OR ";MID(ISTR,H1,2);" PLEASE";
|
||||
1470 GOTO 1420
|
||||
1480 H=(H+1)/2
|
||||
1490 RETURN
|
||||
1500 REM--PROGRAM STARTS HERE
|
||||
1510 REM--INITIALIZE
|
||||
1520 DSTR="N A 2 3 4 5 6 7N 8 9 10 J Q K"
|
||||
1530 ISTR="H,S,D,/,"
|
||||
1540 FOR I=1 TO 13
|
||||
1550 FOR J=4*I-3 TO 4*I
|
||||
1560 DISCARD(J)=I
|
||||
1570 NEXT
|
||||
1580 NEXT
|
||||
1590 D=52
|
||||
1600 C=53
|
||||
1610 PRINT "DO YOU WANT INSTRUCTIONS";
|
||||
1620 INPUT HSTR
|
||||
1630 IF LEFT(HSTR,1)=="N" OR LEFT(HSTR,1)=="n" THEN GOTO 1760
|
||||
1640 PRINT "THIS IS THE GAME OF 21. AS MANY AS 7 PLAYERS MAY PLAY THE"
|
||||
1650 PRINT "GAME. ON EACH DEAL, BETS WILL BE ASKED FOR, AND THE"
|
||||
1660 PRINT "PLAYERS' BETS SHOULD BE TYPED IN. THE CARDS WILL THEN BE"
|
||||
1670 PRINT "DEALT, AND EACH PLAYER IN TURN PLAYS HIS HAND. THE"
|
||||
1680 PRINT "FIRST RESPONSE SHOULD BE EITHER 'D', INDICATING THAT THE"
|
||||
1690 PRINT "PLAYER IS DOUBLING DOWN, 'S', INDICATING THAT HE IS"
|
||||
1700 PRINT "STANDING, 'H', INDICATING HE WANTS ANOTHER CARD, OR '/',"
|
||||
1710 PRINT "INDICATING THAT HE WANTS TO SPLIT HIS CARDS. AFTER THE"
|
||||
1720 PRINT "INITIAL RESPONSE, ALL FURTHER RESPONSES SHOULD BE 'S' OR"
|
||||
1730 PRINT "'H', UNLESS THE CARDS WERE SPLIT, IN WHICH CASE DOUBLING"
|
||||
1740 PRINT "DOWN IS AGAIN PERMITTED. IN ORDER TO COLLECT FOR"
|
||||
1750 PRINT "BLACKJACK, THE INITIAL RESPONSE SHOULD BE 'S'."
|
||||
1760 PRINT "NUMBER OF PLAYERS";
|
||||
1770 INPUT N
|
||||
1775 PRINT
|
||||
1780 IF N<1 OR N>7 OR N>INT(N) THEN GOTO 1760
|
||||
1790 FOR I=1 TO 8: PTOTAL(I)=0: NEXT
|
||||
1800 D1=N+1
|
||||
1810 IF 2*D1+C>=52 THEN GOSUB 120
|
||||
1820 IF C==2 THEN C=C-1
|
||||
1830 FOR I=1 TO N: ZARR(I)=0: NEXT
|
||||
1840 FOR I=1 TO 15: BETS(I)=0: NEXT
|
||||
1850 FOR I=1 TO 15: HANDTOTAL(I)=0: NEXT
|
||||
1860 FOR I=1 TO 7: THISHNDFOR(I)=0: NEXT
|
||||
1870 FOR I=1 TO 15: CARDLEN(I)=0: NEXT
|
||||
1880 PRINT "BETS:"
|
||||
1890 FOR I=1 TO N: PRINT "#";I;: INPUT ZARR(I): NEXT
|
||||
1900 FOR I=1 TO N
|
||||
1910 IF ZARR(I)<=0 OR ZARR(I)>500 THEN GOTO 1880
|
||||
1920 BETS(I)=ZARR(I)
|
||||
1930 NEXT
|
||||
1940 PRINT "PLAYER";
|
||||
1950 FOR I=1 TO N
|
||||
1960 PRINT I;" ";
|
||||
1970 NEXT
|
||||
1980 PRINT "DEALER"
|
||||
1990 FOR J=1 TO 2
|
||||
2000 PRINT SPC(5);
|
||||
2010 FOR I=1 TO D1
|
||||
2020 GOSUB 100
|
||||
2030 HANDCARDS(I,J)=X
|
||||
2040 IF J==1 OR I<=N THEN GOSUB 750
|
||||
2050 NEXT
|
||||
2060 PRINT
|
||||
2070 NEXT
|
||||
2080 FOR I=1 TO D1
|
||||
2090 CARDLEN(I)=2
|
||||
2100 NEXT
|
||||
2110 REM--TEST FOR INSURANCE
|
||||
2120 IF HANDCARDS(D1,1)>1 THEN GOTO 2240
|
||||
2130 PRINT "ANY INSURANCE";
|
||||
2140 INPUT HSTR
|
||||
2150 IF LEFT(HSTR,1)<>"Y" THEN GOTO 2240
|
||||
2160 PRINT "INSURANCE BETS"
|
||||
2170 FOR I=1 TO N: PRINT "#";I;: INPUT ZARR(I): NEXT
|
||||
2180 FOR I=1 TO N
|
||||
2190 IF ZARR(I)<0 OR ZARR(I)>BETS(I)/2 THEN GOTO 2160
|
||||
2200 NEXT
|
||||
2210 FOR I=1 TO N
|
||||
2220 THISHNDFOR(I)=ZARR(I)*(3*(-(HANDCARDS(D1,2)>=10))-1)
|
||||
2230 NEXT
|
||||
2240 REM--TEST FOR DEALER BLACKJACK
|
||||
2250 L1=1: L2=1
|
||||
2252 IF HANDCARDS(D1,1)==1 AND HANDCARDS(D1,2)>9 THEN L1=0: L2=0
|
||||
2253 IF HANDCARDS(D1,2)==1 AND HANDCARDS(D1,1)>9 THEN L1=0: L2=0
|
||||
2254 IF L1<>0 OR L2<>0 THEN GOTO 2320
|
||||
2260 PRINT:PRINT "DEALER HAS A";MID(DSTR,3*HANDCARDS(D1,2)-2,3);" IN THE HOLE ";
|
||||
2270 PRINT "FOR BLACKJACK"
|
||||
2280 FOR I=1 TO D1
|
||||
2290 GOSUB 300
|
||||
2300 NEXT
|
||||
2310 GOTO 3140
|
||||
2320 REM--NO DEALER BLACKJACK
|
||||
2330 IF HANDCARDS(D1,1)>1 AND HANDCARDS(D1,1)<10 THEN GOTO 2350
|
||||
2340 PRINT:PRINT "NO DEALER BLACKJACK."
|
||||
2350 REM--NOW PLAY THE HANDS
|
||||
2360 FOR I=1 TO N
|
||||
2370 PRINT "PLAYER";I;
|
||||
2380 H1=7
|
||||
2390 GOSUB 1410
|
||||
2400 ON H GOTO 2550,2410,2510,2600
|
||||
2410 REM--PLAYER WANTS TO STAND
|
||||
2420 GOSUB 300
|
||||
2430 IF HANDTOTAL(I)<>21 THEN GOTO 2490
|
||||
2440 PRINT "BLACKJACK"
|
||||
2450 THISHNDFOR(I)=THISHNDFOR(I)+1.5*BETS(I)
|
||||
2460 BETS(I)=0
|
||||
2470 GOSUB 1200
|
||||
2480 GOTO 2900
|
||||
2490 GOSUB 1320
|
||||
2500 GOTO 2900
|
||||
2510 REM--PLAYER WANTS TO DOUBLE DOWN
|
||||
2520 GOSUB 300
|
||||
2530 GOSUB 860
|
||||
2540 GOTO 2900
|
||||
2550 REM--PLAYER WANTS TO BE HIT
|
||||
2560 GOSUB 300
|
||||
2570 H1=3
|
||||
2580 GOSUB 950
|
||||
2590 GOTO 2900
|
||||
2600 REM--PLAYER WANTS TO SPLIT
|
||||
2610 L1=HANDCARDS(I,1): IF HANDCARDS(I,1)>10 THEN L1=10
|
||||
2612 L2=HANDCARDS(I,2): IF HANDCARDS(I,2)>10 THEN L2=10
|
||||
2614 IF L1==L2 THEN GOTO 2640
|
||||
2620 PRINT "SPLITTING NOT ALLOWED."
|
||||
2630 GOTO 2370
|
||||
2640 REM--PLAY OUT SPLIT
|
||||
2650 I1=I+D1
|
||||
2660 CARDLEN(I1)=2
|
||||
2670 HANDCARDS(I1,1)=HANDCARDS(I,2)
|
||||
2680 BETS(I+D1)=BETS(I)
|
||||
2690 GOSUB 100
|
||||
2700 PRINT "FIRST HAND RECEIVES A";
|
||||
2710 GOSUB 700
|
||||
2720 HANDCARDS(I,2)=X
|
||||
2730 GOSUB 300
|
||||
2740 PRINT
|
||||
2750 GOSUB 100
|
||||
2760 PRINT "SECOND HAND RECEIVES A";
|
||||
2770 I=I1
|
||||
2780 GOSUB 700
|
||||
2790 HANDCARDS(I,2)=X
|
||||
2800 GOSUB 300
|
||||
2810 PRINT
|
||||
2820 I=I1-D1
|
||||
2830 IF HANDCARDS(I,1)==1 THEN GOTO 2900
|
||||
2840 REM--NOW PLAY THE TWO HANDS
|
||||
2850 PRINT "HAND";1-(I>D1);
|
||||
2860 GOSUB 800
|
||||
2870 I=I+D1
|
||||
2880 IF I==I1 THEN GOTO 2850
|
||||
2890 I=I1-D1
|
||||
2900 NEXT
|
||||
2910 GOSUB 300
|
||||
2920 REM--TEST FOR PLAYING DEALER'S HAND
|
||||
2930 FOR I=1 TO N
|
||||
2940 IF CARDLEN(I)>0 OR CARDLEN(I+D1)>0 THEN GOTO 3010
|
||||
2950 NEXT
|
||||
2960 PRINT "DEALER HAD A";
|
||||
2970 X=HANDCARDS(D1,2)
|
||||
2980 GOSUB 700
|
||||
2990 PRINT " CONCEALED."
|
||||
3000 GOTO 3140
|
||||
3010 PRINT "DEALER HAS A";MID(DSTR,3*HANDCARDS(D1,2)-2,3);" CONCEALED ";
|
||||
3020 I=D1
|
||||
3030 AA=TRUNCATEHAND(HANDTOTAL(I))
|
||||
3035 PRINT "FOR A TOTAL OF";AA
|
||||
3040 IF AA>16 THEN GOTO 3130
|
||||
3050 PRINT "DRAWS";
|
||||
3060 GOSUB 100
|
||||
3070 GOSUB 750
|
||||
3080 GOSUB 1100
|
||||
3090 AA=TRUNCATEHAND(Q)
|
||||
3095 IF Q>0 AND AA<17 THEN GOTO 3060
|
||||
3100 HANDTOTAL(I)=Q-(Q<0)/2
|
||||
3110 IF Q<0 THEN GOTO 3140
|
||||
3120 AA=TRUNCATEHAND(Q)
|
||||
3125 PRINT "---TOTAL IS";AA
|
||||
3130 PRINT
|
||||
3140 REM--TALLY THE RESULT
|
||||
3150 REM
|
||||
3160 ZSTR="LOSES PUSHES WINS "
|
||||
3165 PRINT
|
||||
3170 FOR I=1 TO N
|
||||
3180 AA=TRUNCATEHAND(HANDTOTAL(I))
|
||||
3182 AB=TRUNCATEHAND(HANDTOTAL(I+D1))
|
||||
3184 AC=TRUNCATEHAND(HANDTOTAL(D1))
|
||||
3186 THISHNDFOR(I)=THISHNDFOR(I)+BETS(I)*SGN(AA-AC)+BETS(I+D1)*SGN(AB-AC)
|
||||
3188 BETS(I+D1)=0
|
||||
3200 PRINT "PLAYER";I;
|
||||
3210 PRINT MID(ZSTR,SGN(THISHNDFOR(I))*6+7,6);" ";
|
||||
3220 IF THISHNDFOR(I)<>0 THEN GOTO 3250
|
||||
3230 PRINT " ";
|
||||
3240 GOTO 3260
|
||||
3250 PRINT ABS(THISHNDFOR(I));
|
||||
3260 PTOTAL(I)=PTOTAL(I)+THISHNDFOR(I)
|
||||
3270 PRINT "TOTAL=";PTOTAL(I)
|
||||
3280 GOSUB 1200
|
||||
3290 PTOTAL(D1)=PTOTAL(D1)-THISHNDFOR(I)
|
||||
3300 I=I+D1
|
||||
3310 GOSUB 1200
|
||||
3320 I=I-D1
|
||||
3330 NEXT
|
||||
3340 PRINT "DEALER'S TOTAL=";PTOTAL(D1)
|
||||
3345 PRINT
|
||||
3350 GOSUB 1200
|
||||
3360 GOTO 1810
|
||||
6
assets/disk0/home/basic/curryarray.bas
Normal file
6
assets/disk0/home/basic/curryarray.bas
Normal file
@@ -0,0 +1,6 @@
|
||||
1 KS=4!1!2!5!3!NIL
|
||||
10 DEFUN LESSER(P,X)=X<P
|
||||
11 KLS=LESSER<~HEAD KS
|
||||
20 FOR K=1 TO 5
|
||||
21 PRINT KLS(K)
|
||||
22 NEXT
|
||||
4
assets/disk0/home/basic/currytest.bas
Normal file
4
assets/disk0/home/basic/currytest.bas
Normal file
@@ -0,0 +1,4 @@
|
||||
10 DEFUN F(K,T)=ABS(T)==K
|
||||
20 CF=F<~32
|
||||
30 PRINT CF(24) : REM will print 'false'
|
||||
40 PRINT CF(-32) : REM will print 'true'
|
||||
3
assets/disk0/home/basic/dotest.bas
Normal file
3
assets/disk0/home/basic/dotest.bas
Normal file
@@ -0,0 +1,3 @@
|
||||
10 DEFUN KA(X)=IF X>2 THEN DO(PRINT("HAI");PRINT(X)) ELSE DO(PRINT("BYE");PRINT(X))
|
||||
20 INPUT N
|
||||
30 KA(N)
|
||||
2
assets/disk0/home/basic/downkeys.bas
Normal file
2
assets/disk0/home/basic/downkeys.bas
Normal file
@@ -0,0 +1,2 @@
|
||||
10 PRINT GETKEYSDOWN()
|
||||
20 GOTO 10
|
||||
6
assets/disk0/home/basic/downkeys2.bas
Normal file
6
assets/disk0/home/basic/downkeys2.bas
Normal file
@@ -0,0 +1,6 @@
|
||||
10 POKE -40,255
|
||||
20 FOR K=-41 TO -48 STEP -1
|
||||
30 PRINT(PEEK(K);" ";)
|
||||
40 NEXT
|
||||
50 PRINT
|
||||
60 GOTO 10
|
||||
3
assets/disk0/home/basic/emit.bas
Normal file
3
assets/disk0/home/basic/emit.bas
Normal file
@@ -0,0 +1,3 @@
|
||||
10 for k=0 to 1024
|
||||
20 emit(k mod 1024;)
|
||||
30 next
|
||||
3
assets/disk0/home/basic/facmap.bas
Normal file
3
assets/disk0/home/basic/facmap.bas
Normal file
@@ -0,0 +1,3 @@
|
||||
10 DEFUN FAC(N)=IF N==0 THEN 1 ELSE N*FAC(N-1)
|
||||
20 K=MAP FAC, 1 TO 10
|
||||
30 PRINT K
|
||||
4
assets/disk0/home/basic/facrec.bas
Normal file
4
assets/disk0/home/basic/facrec.bas
Normal file
@@ -0,0 +1,4 @@
|
||||
10 DEFUN FAC(N)=IF N==0 THEN 1 ELSE N*FAC(N-1)
|
||||
20 FOR K=1 TO 6
|
||||
30 PRINT FAC(K)
|
||||
40 NEXT
|
||||
4
assets/disk0/home/basic/fib.bas
Normal file
4
assets/disk0/home/basic/fib.bas
Normal file
@@ -0,0 +1,4 @@
|
||||
10 DEFUN FIB(N)=IF N==0 THEN 0 ELSE IF N==1 THEN 1 ELSE FIB(N-1)+FIB(N-2)
|
||||
20 FOR K=1 TO 12
|
||||
30 PRINT FIB(K);" ";
|
||||
40 NEXT
|
||||
4
assets/disk0/home/basic/filtercurry.bas
Normal file
4
assets/disk0/home/basic/filtercurry.bas
Normal file
@@ -0,0 +1,4 @@
|
||||
1 XS=4!1!2!3!5!NIL
|
||||
10 DEFUN K(P,X)=X<P
|
||||
20 NXS=FILTER(K<~HEAD XS,XS)
|
||||
30 PRINT NXS
|
||||
13
assets/disk0/home/basic/formut.bas
Normal file
13
assets/disk0/home/basic/formut.bas
Normal file
@@ -0,0 +1,13 @@
|
||||
1 k=0
|
||||
2 goto 100
|
||||
20 k=1
|
||||
30 a=10
|
||||
40 return
|
||||
100 for a=5 to 1 step -1
|
||||
110 print a
|
||||
120 if a==3 and k==0 then gosub 20
|
||||
130 next
|
||||
140 print "=="
|
||||
150 print a
|
||||
1000 rem expected output according to gw-basic:
|
||||
1001 rem 5 4 3 9 8 7 6 5 4 3 2 1 == 0
|
||||
7
assets/disk0/home/basic/gosubtest.bas
Normal file
7
assets/disk0/home/basic/gosubtest.bas
Normal file
@@ -0,0 +1,7 @@
|
||||
1 GOTO START
|
||||
100 LABEL PRINTRNDNUM
|
||||
110 K=FIX(RND(1)*256)
|
||||
120 PRINT " ";K;" ";
|
||||
130 RETURN
|
||||
1000 LABEL START
|
||||
1010 PRINT "HELLO,";:GOSUB PRINTRNDNUM:PRINT(IF K==1 THEN "WORLD" ELSE "WORLDS")
|
||||
6
assets/disk0/home/basic/gugu.bas
Normal file
6
assets/disk0/home/basic/gugu.bas
Normal file
@@ -0,0 +1,6 @@
|
||||
10 FOR I = 2 TO 9
|
||||
20 FOR J = 1 TO 9
|
||||
30 PRINT I; "*"; J; "="; I * J
|
||||
40 NEXT
|
||||
50 INPUT "Press Enter Key..."
|
||||
60 NEXT
|
||||
160
assets/disk0/home/basic/hamurabi.bas
Normal file
160
assets/disk0/home/basic/hamurabi.bas
Normal file
@@ -0,0 +1,160 @@
|
||||
10 PRINT SPC(32);"HAMURABI"
|
||||
20 PRINT SPC(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||
30 PRINT
|
||||
31 PRINT
|
||||
32 PRINT
|
||||
80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA"
|
||||
90 PRINT "FOR A TEN-YEAR TERM OF OFFICE."
|
||||
91 PRINT
|
||||
95 D1=0
|
||||
96 P1=0
|
||||
100 Z=0
|
||||
101 P=95
|
||||
102 S=2800
|
||||
103 H=3000
|
||||
104 E=H-S
|
||||
110 Y=3
|
||||
111 A=H/Y
|
||||
112 I=5
|
||||
113 Q=1
|
||||
210 D=0
|
||||
215 PRINT
|
||||
216 PRINT
|
||||
217 PRINT "HAMURABI: I BEG TO REPORT TO YOU,"
|
||||
218 Z=Z+1
|
||||
219 PRINT "IN YEAR ";Z;", ";D;" PEOPLE STARVED, ";I;" CAME TO THE CITY,"
|
||||
220 P=P+I
|
||||
227 IF Q>0 THEN GOTO 230
|
||||
228 P=INT(P/2)
|
||||
229 PRINT "A HORRIBLE PLAGUE STRUCK! HALF THE PEOPLE DIED."
|
||||
230 PRINT "POPULATION IS NOW ";P
|
||||
232 PRINT "THE CITY NOW OWNS ";A;" ACRES."
|
||||
235 PRINT "YOU HARVESTED ";Y;" BUSHELS PER ACRE."
|
||||
250 PRINT "THE RATS ATE ";E;" BUSHELS."
|
||||
260 PRINT "YOU NOW HAVE ";S;" BUSHELS IN STORE."
|
||||
261 PRINT
|
||||
270 IF Z==11 THEN GOTO 860
|
||||
310 C=INT(10*RND(1))
|
||||
311 Y=C+17
|
||||
312 PRINT "LAND IS TRADING AT ";Y;" BUSHELS PER ACRE."
|
||||
320 PRINT "HOW MANY ACRES DO YOU WISH TO BUY";
|
||||
321 INPUT Q
|
||||
322 IF Q<0 THEN GOTO 850
|
||||
323 IF Y*Q<=S THEN GOTO 330
|
||||
324 GOSUB 710
|
||||
325 GOTO 320
|
||||
330 IF Q==0 THEN GOTO 340
|
||||
331 A=A+Q
|
||||
332 S=S-Y*Q
|
||||
333 C=0
|
||||
334 GOTO 400
|
||||
340 PRINT "HOW MANY ACRES DO YOU WISH TO SELL";
|
||||
341 INPUT Q
|
||||
342 IF Q<0 THEN GOTO 850
|
||||
343 IF Q<A THEN GOTO 350
|
||||
344 GOSUB 720
|
||||
345 GOTO 340
|
||||
350 A=A-Q
|
||||
351 S=S+Y*Q
|
||||
352 C=0
|
||||
400 PRINT
|
||||
410 PRINT "HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE";
|
||||
411 INPUT Q
|
||||
412 IF Q<0 THEN GOTO 850
|
||||
418 REM *** TRYING TO USE MORE GRAIN THAN IS IN SILOS?
|
||||
420 IF Q<=S THEN GOTO 430
|
||||
421 GOSUB 710
|
||||
422 GOTO 410
|
||||
430 S=S-Q
|
||||
431 C=1
|
||||
432 PRINT
|
||||
440 PRINT "HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED";
|
||||
441 INPUT D
|
||||
442 IF D==0 THEN GOTO 511
|
||||
443 IF D<0 THEN GOTO 850
|
||||
444 REM *** TRYING TO PLANT MORE ACRES THAN YOU OWN?
|
||||
445 IF D<=A THEN GOTO 450
|
||||
446 GOSUB 720
|
||||
447 GOTO 440
|
||||
449 REM *** ENOUGH GRAIN FOR SEED?
|
||||
450 IF INT(D/2)<=S THEN GOTO 455
|
||||
452 GOSUB 710
|
||||
453 GOTO 440
|
||||
454 REM *** ENOUGH PEOPLE TO TEND THE CROPS?
|
||||
455 IF D<10*P THEN GOTO 510
|
||||
460 PRINT "BUT YOU HAVE ONLY ";P;" PEOPLE TO TEND THE FIELDS! NOW THEN,"
|
||||
470 GOTO 440
|
||||
510 S=S-INT(D/2)
|
||||
511 GOSUB 800
|
||||
512 REM *** A BOUNTIFUL HARVEST!
|
||||
515 Y=C
|
||||
516 H=D*Y
|
||||
517 E=0
|
||||
521 GOSUB 800
|
||||
522 IF INT(C/2)<>C/2 THEN GOTO 530
|
||||
523 REM *** RATS ARE RUNNING WILD!!
|
||||
525 E=INT(S/C)
|
||||
530 S=S-E+H
|
||||
531 GOSUB 800
|
||||
532 REM *** LET'S HAVE SOME BABIES
|
||||
533 I=INT(C*(20*A+S)/P/100+1)
|
||||
539 REM *** HOW MANY PEOPLE HAD FULL TUMMIES?
|
||||
540 C=INT(Q/20)
|
||||
541 REM *** HORROS, A 15% CHANCE OF PLAGUE
|
||||
542 Q=INT(10*(2*RND(1)-0.3))
|
||||
550 IF P<C THEN GOTO 210
|
||||
551 REM *** STARVE ENOUGH FOR IMPEACHMENT?
|
||||
552 D=P-C
|
||||
553 IF D>0.45*P THEN GOTO 560
|
||||
554 P1=((Z-1)*P1+D*100/P)/Z
|
||||
555 P=C
|
||||
556 D1=D1+D
|
||||
557 GOTO 215
|
||||
560 PRINT
|
||||
561 PRINT "YOU STARVED ";D;" PEOPLE IN ONE YEAR!!!"
|
||||
565 PRINT "DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY"
|
||||
566 PRINT "BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE"
|
||||
567 PRINT "ALSO BEEN DECLARED NATIONAL FINK!!!!"
|
||||
568 GOTO 990
|
||||
710 PRINT "HAMURABI: THINK AGAIN. YOU HAVE ONLY"
|
||||
711 PRINT S;" BUSHELS OF GRAIN. NOW THEN,"
|
||||
712 RETURN
|
||||
720 PRINT "HAMURABI: THINK AGAIN. YOU OWN ONLY ";A;" ACRES. NOW THEN,"
|
||||
730 RETURN
|
||||
800 C=INT(RND(1)*5)+1
|
||||
801 RETURN
|
||||
850 PRINT
|
||||
851 PRINT "HAMURABI: I CANNOT DO WHAT YOU WISH."
|
||||
855 PRINT "GET YOURSELF ANOTHER STEWARD!!!!!"
|
||||
857 GOTO 990
|
||||
860 PRINT "IN YOUR 10-YEAR TERM OF OFFICE, ";P1;" PERCENT OF THE"
|
||||
862 PRINT "POPULATION STARVED PER YEAR ON THE AVERAGE, I.E. A TOTAL OF"
|
||||
865 PRINT D1;"PEOPLE DIED!!"
|
||||
866 L=A/P
|
||||
870 PRINT "YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH"
|
||||
875 PRINT L;"ACRES PER PERSON."
|
||||
876 PRINT
|
||||
880 IF P1>33 THEN GOTO 565
|
||||
885 IF L<7 THEN GOTO 565
|
||||
890 IF P1>10 THEN GOTO 940
|
||||
892 IF L<9 THEN GOTO 940
|
||||
895 IF P1>3 THEN GOTO 960
|
||||
896 IF L<10 THEN GOTO 960
|
||||
900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND"
|
||||
905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!"
|
||||
906 GOTO 990
|
||||
940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV."
|
||||
945 PRINT "THE PEOPLE (REMIANING) FIND YOU AN UNPLEASANT RULER, AND,"
|
||||
950 PRINT "FRANKLY, HATE YOUR GUTS!!"
|
||||
951 GOTO 990
|
||||
960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT"
|
||||
965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";INT(P*0.8*RND(1));" PEOPLE"
|
||||
970 PRINT "WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR"
|
||||
975 PRINT "TRIVIAL PROBLEMS."
|
||||
990 PRINT
|
||||
991 FOR N=1 TO 10
|
||||
992 PRINT EMIT(7;)
|
||||
993 NEXT
|
||||
995 PRINT "SO LONG FOR NOW."
|
||||
996 PRINT
|
||||
999 END
|
||||
25
assets/disk0/home/basic/multable.bas
Normal file
25
assets/disk0/home/basic/multable.bas
Normal file
@@ -0,0 +1,25 @@
|
||||
1 PRINT SPC(35);"MULT-TABLE"
|
||||
2 PRINT "THIS PROGRAM TESTS THE MULTIDIMENSIONAL ARRAY ALLOCATING AND INDEXING"
|
||||
3 PRINT
|
||||
4 OPTIONBASE 1
|
||||
5 OPTIONDEBUG 1
|
||||
6 OPTIONTRACE 1
|
||||
9 I=DIM(2)
|
||||
10 PRINT "TABLE WIDTH";
|
||||
11 INPUT I(1)
|
||||
20 PRINT "TABLE HEIGHT";
|
||||
21 INPUT I(2)
|
||||
30 T=DIM(I(2),I(1))
|
||||
40 FOR Y=1 TO I(2)
|
||||
50 FOR X=1 TO I(1)
|
||||
60 T(Y,X)=X*Y
|
||||
70 NEXT
|
||||
80 NEXT
|
||||
90 RESOLVE T
|
||||
100 FOR Y=1 TO I(2)
|
||||
110 FOR X=1 TO I(1)
|
||||
120 PRINT T(Y,X);" ";
|
||||
130 NEXT
|
||||
140 PRINT
|
||||
150 NEXT
|
||||
200 PRINT "ENDE"
|
||||
15
assets/disk0/home/basic/onlabeltest.bas
Normal file
15
assets/disk0/home/basic/onlabeltest.bas
Normal file
@@ -0,0 +1,15 @@
|
||||
1 OPTIONBASE 1
|
||||
2 GOTO STARTPOINT
|
||||
100 LABEL PRINTA
|
||||
110 PRINT "A"
|
||||
120 RETURN
|
||||
200 LABEL PRINTB
|
||||
210 PRINT "B":PRINT "B"
|
||||
220 RETURN
|
||||
300 LABEL PRINTC
|
||||
310 PRINT "C":PRINT 2+2
|
||||
320 RETURN
|
||||
1000 INPUT K:LABEL STARTPOINT
|
||||
1001 IF K>3 OR K<1 THEN DO(PRINT "INPUT MUST BE 1,2 OR 3";GOTO STARTPOINT)
|
||||
1010 ON K GOSUB PRINTA,PRINTB,PRINTC
|
||||
1020 PRINT "BYE"
|
||||
8
assets/disk0/home/basic/qsort.bas
Normal file
8
assets/disk0/home/basic/qsort.bas
Normal file
@@ -0,0 +1,8 @@
|
||||
1 REM qsort [] = []
|
||||
2 REM qsort xs = qsort [x | x<-tail xs, x<head xs] ++ [head xs] ++ qsort [x | x<-tail xs, x>=head xs]
|
||||
10 DEFUN LESS(P,X)=X<P
|
||||
11 DEFUN GTEQ(P,X)=X>=P
|
||||
12 DEFUN QSORT(XS)=IF LEN(XS)<1 THEN NIL ELSE QSORT(FILTER(LESS<~HEAD(XS),TAIL(XS))) # HEAD(XS)!NIL # QSORT(FILTER(GTEQ<~HEAD(XS),TAIL(XS)))
|
||||
100 L=7!9!4!5!2!3!1!8!6!NIL
|
||||
110 PRINT L
|
||||
120 PRINT QSORT(L)
|
||||
2
assets/disk0/home/basic/rmaze.bas
Normal file
2
assets/disk0/home/basic/rmaze.bas
Normal file
@@ -0,0 +1,2 @@
|
||||
10 print(chr(47+round(rnd(1))*45);)
|
||||
20 goto 10
|
||||
4
assets/disk0/home/basic/sinc.bas
Normal file
4
assets/disk0/home/basic/sinc.bas
Normal file
@@ -0,0 +1,4 @@
|
||||
10 DEFUN SINC(X)=SIN(X)/X
|
||||
20 FOR K=1 TO 10
|
||||
30 PRINT SINC(K)
|
||||
40 NEXT
|
||||
17
assets/disk0/home/basic/sinc1.bas
Normal file
17
assets/disk0/home/basic/sinc1.bas
Normal file
@@ -0,0 +1,17 @@
|
||||
1 ZEROLINE=10
|
||||
2 AMP=20
|
||||
3 GOTO 1000
|
||||
100 LABEL SINCQ:REM gets Sinc(Q)
|
||||
110 Q=IF I==0 THEN 1.0 ELSE SIN(I)/I
|
||||
120 RETURN
|
||||
200 LABEL PLOTLINE:REM Converts 0-1 value into screen line. input is Q, results are stored to SQ
|
||||
210 SQ=CHR(0)
|
||||
220 FOR X=1 TO ZEROLINE+AMP
|
||||
230 SQ=SQ+(IF X==ROUND(ZEROLINE+Q*AMP) THEN "@" ELSE IF X==10 THEN "|" ELSE CHR(250))
|
||||
240 NEXT
|
||||
250 RETURN
|
||||
1000 FOR I=0 TO 20
|
||||
1010 GOSUB SINCQ
|
||||
1020 GOSUB PLOTLINE
|
||||
1030 PRINT(SQ)
|
||||
1040 NEXT
|
||||
17
assets/disk0/home/basic/sinc2.bas
Normal file
17
assets/disk0/home/basic/sinc2.bas
Normal file
@@ -0,0 +1,17 @@
|
||||
1 ZEROLINE=10
|
||||
2 AMP=20
|
||||
10 DEFUN SINC(P)=IF P==0 THEN 1.0 ELSE SIN(P)/P
|
||||
20 DEFUN TOCHAR(P,X)=IF (X==ROUND(ZEROLINE+P*AMP)) THEN "@" ELSE IF (X==ZEROLINE) THEN "|" ELSE CHR(250)
|
||||
30 DEFUN SCONCAT(ACC,S)=ACC+S
|
||||
40 REM DEFUN PLOTLINE(X)=FOLD(SCONCAT,CHR(0),MAP(TOCHAR<~X,1 TO ZEROLINE+AMP))
|
||||
41 DEFUN PLOTLINE(F,X)=FOLD(SCONCAT,CHR(0),MAP(TOCHAR<~F(X),1 TO ZEROLINE+AMP))
|
||||
100 FOR I=0 TO 20
|
||||
110 PRINT PLOTLINE(SINC(I))
|
||||
120 NEXT
|
||||
999 END
|
||||
|
||||
1000 REM Known bugs
|
||||
1010 DEFUN PLOTLINE(F,X)=FOLD(SCONCAT,CHR(0),MAP(TOCHAR<~F(X),1 TO ZEROLINE+AMP))
|
||||
1011 REM calling user-defined function within DEFUN is not working
|
||||
|
||||
1020 REM empty string literal "" is translated to number zero (another JS blunder)
|
||||
7
assets/disk0/home/basic/sqrt.bas
Normal file
7
assets/disk0/home/basic/sqrt.bas
Normal file
@@ -0,0 +1,7 @@
|
||||
1 REM Calculates a square root using newtonian method
|
||||
20 INPUT X
|
||||
30 Y = 0.5 * X
|
||||
40 Z = Y
|
||||
50 Y = Y-(((Y^2)-X)/(2*Y))
|
||||
60 IF Z <> Y THEN GOTO 40
|
||||
100 PRINT "Square root of ";X;" is approximately ";Y
|
||||
6
assets/disk0/home/basic/tri.bas
Normal file
6
assets/disk0/home/basic/tri.bas
Normal file
@@ -0,0 +1,6 @@
|
||||
10 FOR I = 1 TO 20
|
||||
20 PRINT SPC(20-I);
|
||||
30 FOR J = 1 TO I*2-1
|
||||
40 PRINT "*";
|
||||
50 NEXT:PRINT
|
||||
60 NEXT
|
||||
Reference in New Issue
Block a user