moving everything neatly into the assets directory

This commit is contained in:
minjaesong
2020-12-24 11:00:32 +09:00
parent 74b1279ed4
commit 608f61c617
111 changed files with 98 additions and 28 deletions

View 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

View 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

View 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

View 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

View 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'

View 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)

View File

@@ -0,0 +1,2 @@
10 PRINT GETKEYSDOWN()
20 GOTO 10

View 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

View File

@@ -0,0 +1,3 @@
10 for k=0 to 1024
20 emit(k mod 1024;)
30 next

View 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

View 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

View 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

View 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

View 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

View 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")

View 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

View 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

View 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"

View 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"

View 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)

View File

@@ -0,0 +1,2 @@
10 print(chr(47+round(rnd(1))*45);)
20 goto 10

View File

@@ -0,0 +1,4 @@
10 DEFUN SINC(X)=SIN(X)/X
20 FOR K=1 TO 10
30 PRINT SINC(K)
40 NEXT

View 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

View 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)

View 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

View 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