summaryrefslogtreecommitdiffstats
path: root/development/minimal-basic/examples
diff options
context:
space:
mode:
Diffstat (limited to 'development/minimal-basic/examples')
-rw-r--r--development/minimal-basic/examples/BAGELS.BAS117
-rw-r--r--development/minimal-basic/examples/HAMURABI.BAS160
-rw-r--r--development/minimal-basic/examples/PI.BAS42
3 files changed, 319 insertions, 0 deletions
diff --git a/development/minimal-basic/examples/BAGELS.BAS b/development/minimal-basic/examples/BAGELS.BAS
new file mode 100644
index 0000000000..edd64d77a7
--- /dev/null
+++ b/development/minimal-basic/examples/BAGELS.BAS
@@ -0,0 +1,117 @@
+1 RANDOMIZE
+5 PRINT TAB(33);"BAGELS"
+10 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
+12 PRINT TAB(10);"ECMA-55 PORT BY. B. WATSON, URCHLAY AT SLACKWARE.UK"
+14 PRINT
+16 PRINT
+20 REM *** BAGELS NUMBER GUESSING GAME
+22 REM *** ORIGINAL SOURCE UNKNOWN BUT SUSPECTED TO BE
+25 REM *** LAWRENCE HALL OF SCIENCE, U.C. BERKELEY
+29 REM A = ACTUAL ANSWER, G = USER'S GUESS
+30 DIM A(3),G(3)
+40 LET Y=0
+50 PRINT
+55 PRINT
+60 PRINT
+70 PRINT "WOULD YOU LIKE THE RULES (1=YES, 0=NO)";
+80 INPUT N
+90 IF N=0 THEN 150
+100 PRINT
+105 PRINT "I AM THINKING OF A THREE-DIGIT NUMBER. TRY TO GUESS"
+110 PRINT "MY NUMBER AND I WILL GIVE YOU CLUES AS FOLLOWS:"
+120 PRINT " PICO - ONE DIGIT CORRECT BUT IN THE WRONG POSITION"
+130 PRINT " FERMI - ONE DIGIT CORRECT AND IN THE RIGHT POSITION"
+140 PRINT " BAGELS - NO DIGITS CORRECT"
+150 FOR I=1 TO 3
+160 LET A(I)=INT(10*RND)
+165 IF I-1=0 THEN 200
+170 FOR J=1 TO I-1
+180 IF A(I)=A(J) THEN 160
+190 NEXT J
+200 NEXT I
+210 PRINT
+215 PRINT "O.K. I HAVE A NUMBER IN MIND."
+220 FOR I=1 TO 20
+230 PRINT "GUESS #";I,
+240 INPUT N
+243 IF N>=1000 THEN 247
+245 IF N<0 THEN 247
+246 GOTO 250
+247 GOSUB 630
+248 GOTO 230
+250 LET G(1)=INT(N/100)
+260 LET G(2)=INT((N-G(1)*100)/10)
+270 LET G(3)=N-(G(1)*100+G(2)*10)
+290 REM UNCOMMENT NEXT LINE FOR DEBUGGING
+300 REM GOSUB 800
+320 LET F=0
+322 IF G(1)<>G(2) THEN 330
+325 LET F=1
+330 IF G(2)<>G(3) THEN 340
+335 LET F=1
+340 IF G(3)<>G(1) THEN 345
+342 LET F=1
+345 IF F=0 THEN 350
+347 GOSUB 650
+349 GOTO 230
+350 LET C=0
+355 LET D=0
+360 FOR J=1 TO 2
+370 IF A(J)<>G(J+1) THEN 390
+380 LET C=C+1
+390 IF A(J+1)<>G(J) THEN 410
+400 LET C=C+1
+410 NEXT J
+420 IF A(1)<>G(3) THEN 440
+430 LET C=C+1
+440 IF A(3)<>G(1) THEN 460
+450 LET C=C+1
+460 FOR J=1 TO 3
+470 IF A(J)<>G(J) THEN 490
+480 LET D=D+1
+490 NEXT J
+500 IF D=3 THEN 680
+505 IF C=0 THEN 545
+520 FOR J=1 TO C
+530 PRINT "PICO ";
+540 NEXT J
+545 IF D=0 THEN 580
+550 FOR J=1 TO D
+560 PRINT "FERMI ";
+570 NEXT J
+580 IF C+D<>0 THEN 600
+590 PRINT "BAGELS";
+600 PRINT
+605 NEXT I
+610 PRINT "OH WELL."
+612 PRINT "THAT'S TWENTY GUESSES. MY NUMBER WAS";100*A(1)+10*A(2)+A(3)
+614 LET N=100*A(1)+10*A(2)+A(3)
+615 IF N>=100 THEN 620
+617 PRINT "0";
+618 IF N>=10 THEN 620
+619 PRINT "0";
+620 PRINT N
+622 GOTO 700
+630 PRINT "TRY GUESSING A THREE-DIGIT NUMBER."
+635 RETURN
+650 PRINT "OH, I FORGOT TO TELL YOU THAT THE NUMBER I HAVE IN MIND"
+660 PRINT "HAS NO TWO DIGITS THE SAME."
+670 RETURN
+680 PRINT "YOU GOT IT!!!"
+685 PRINT
+690 LET Y=Y+1
+700 PRINT "PLAY AGAIN (1=YES, 0=NO)";
+710 INPUT N
+720 IF N<>0 THEN 150
+730 IF Y=0 THEN 750
+740 PRINT
+745 PRINT "A";Y;"POINT BAGELS BUFF!!"
+750 PRINT "HOPE YOU HAD FUN. BYE."
+760 GOTO 999
+799 REM CHEAT/DEBUG MODE. UNCOMMENT LINE 300 TO ACTIVATE THIS CODE
+800 PRINT "GUESS","ANSWER"
+805 FOR X=1 TO 3
+810 PRINT G(X),A(X)
+820 NEXT X
+830 RETURN
+999 END
diff --git a/development/minimal-basic/examples/HAMURABI.BAS b/development/minimal-basic/examples/HAMURABI.BAS
new file mode 100644
index 0000000000..7d8cf17976
--- /dev/null
+++ b/development/minimal-basic/examples/HAMURABI.BAS
@@ -0,0 +1,160 @@
+5 RANDOMIZE
+10 PRINT TAB(32);"HAMURABI"
+20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
+30 PRINT
+40 PRINT TAB(11);"ECMA-55 PORT BY B. WATSON, URCHLAY AT SLACKWARE.UK"
+50 PRINT
+80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA"
+90 PRINT "FOR A TEN-YEAR TERM OF OFFICE."
+92 PRINT
+95 LET D1=0
+97 LET P1=0
+100 LET Z=0
+102 LET P=95
+104 LET S=2800
+106 LET H=3000
+107 LET E=H-S
+110 LET Y=3
+120 LET A=H/Y
+130 LET I=5
+140 LET Q=1
+210 LET D=0
+215 PRINT
+216 PRINT
+217 PRINT "HAMURABI: I BEG TO REPORT TO YOU,"
+218 LET Z=Z+1
+220 PRINT "IN YEAR";Z;",";D;"PEOPLE STARVED,";I;"CAME TO THE CITY,"
+225 LET P=P+I
+227 IF Q>0 THEN 230
+228 LET 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 860
+310 LET C=INT(10*RND)
+311 LET 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 850
+323 IF Y*Q<=S THEN 330
+324 GOSUB 710
+325 GOTO 320
+330 IF Q=0 THEN 340
+331 LET A=A+Q
+332 LET S=S-Y*Q
+333 LET C=0
+334 GOTO 400
+340 PRINT "HOW MANY ACRES DO YOU WISH TO SELL";
+341 INPUT Q
+343 IF Q<0 THEN 850
+345 IF Q<A THEN 360
+347 GOSUB 720
+350 GOTO 340
+360 LET A=A-Q
+370 LET S=S+Y*Q
+380 LET C=0
+400 PRINT
+410 PRINT "HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE";
+411 INPUT Q
+412 IF Q<0 THEN 850
+418 REM *** TRYING TO USE MORE GRAIN THAN IS IN SILOS?
+420 IF Q<=S THEN 430
+421 GOSUB 710
+422 GOTO 410
+430 LET S=S-Q
+433 LET C=1
+435 PRINT
+440 PRINT "HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED";
+442 INPUT D
+443 IF D=0 THEN 511
+444 IF D<0 THEN 850
+445 REM *** TRYING TO PLANT MORE ACRES THAN YOU OWN?
+446 IF D<=A THEN 450
+447 GOSUB 720
+448 GOTO 440
+449 REM *** ENOUGH GRAIN FOR SEED?
+450 IF INT(D/2)<=S THEN 455
+452 GOSUB 710
+453 GOTO 440
+454 REM *** ENOUGH PEOPLE TO TEND THE CROPS?
+455 IF D<10*P THEN 510
+460 PRINT "BUT YOU HAVE ONLY";P;"PEOPLE TO TEND THE FIELDS! NOW THEN,"
+470 GOTO 440
+510 LET S=S-INT(D/2)
+511 GOSUB 800
+512 REM *** A BOUNTIFUL HARVEST!
+515 LET Y=C
+518 LET H=D*Y
+520 LET E=0
+521 GOSUB 800
+522 IF INT(C/2)<>C/2 THEN 530
+523 REM *** RATS ARE RUNNING WILD!!
+525 LET E=INT(S/C)
+530 LET S=S-E+H
+531 GOSUB 800
+532 REM *** LET'S HAVE SOME BABIES
+533 LET I=INT(C*(20*A+S)/P/100+1)
+539 REM *** HOW MANY PEOPLE HAD FULL TUMMIES?
+540 LET C=INT(Q/20)
+541 REM *** HORROS, A 15% CHANCE OF PLAGUE
+542 LET Q=INT(10*(2*RND-.3))
+550 IF P<C THEN 210
+551 REM *** STARVE ENOUGH FOR IMPEACHMENT?
+552 LET D=P-C
+553 IF D>.45*P THEN 560
+555 LET P1=((Z-1)*P1+D*100/P)/Z
+556 LET P=C
+557 LET D1=D1+D
+558 GOTO 215
+560 PRINT
+562 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!!!!"
+569 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 LET C=INT(RND*5)+1
+801 RETURN
+850 PRINT
+852 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!!"
+867 LET L=A/P
+870 PRINT "YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH"
+875 PRINT L;"ACRES PER PERSON."
+877 PRINT
+880 IF P1>33 THEN 565
+885 IF L<7 THEN 565
+890 IF P1>10 THEN 940
+892 IF L<9 THEN 940
+895 IF P1>3 THEN 960
+896 IF L<10 THEN 960
+900 PRINT "A FANTASTIC PERFORMANCE!!! CHARLEMANGE, DISRAELI, AND"
+905 PRINT "JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!"
+910 GOTO 990
+940 PRINT "YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV."
+945 PRINT "THE PEOPLE (REMAINING) FIND YOU AN UNPLEASANT RULER, AND,"
+950 PRINT "FRANKLY, HATE YOUR GUTS!!"
+955 GOTO 990
+960 PRINT "YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT"
+965 PRINT "REALLY WASN'T TOO BAD AT ALL. ";INT(P*.8*RND);"PEOPLE"
+970 PRINT "WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE"
+975 PRINT "OUR TRIVIAL PROBLEMS."
+989 REM BAS55 HAS NO CHR$() FUNCTION, NO WAY TO RING A BELL.
+990 REM 990 PRINT: FOR N=1 TO 10: PRINT CHR$(7);: NEXT N
+991 PRINT
+995 PRINT "SO LONG FOR NOW."
+997 PRINT
+999 END
diff --git a/development/minimal-basic/examples/PI.BAS b/development/minimal-basic/examples/PI.BAS
new file mode 100644
index 0000000000..8c79f03250
--- /dev/null
+++ b/development/minimal-basic/examples/PI.BAS
@@ -0,0 +1,42 @@
+1 REM PI CALCULATOR, B. WATSON, URCHLAY AT SLACKWARE.UK
+3 REM PORTED FROM PYTHON3, FROM "LEARNPYTHON" PROJECT ON GITHUB
+5 REM THE PYTHON VERSION IS MIT-LICENSED.
+10 PRINT "CALCULATE HOW MANY DIGITS OF PI";
+20 INPUT P
+25 LET P=INT(P)
+30 IF P>=1 THEN 60
+40 PRINT "PLEASE ENTER A POSITIVE NUMBER."
+50 GOTO 10
+60 IF P<20 THEN 100
+70 PRINT "WARNING: PROGRAM ONLY ACCURATE TO 20 DIGITS OR SO."
+100 LET Q=1
+110 LET R=0
+120 LET T=1
+130 LET K=1
+140 LET N=3
+150 LET L=3
+160 LET C=0
+200 IF (4*Q+R-T)>=(N*T) THEN 300
+210 PRINT N;
+215 IF C>0 THEN 220
+217 PRINT ".";
+220 LET C=C+1
+230 IF C=P THEN 500
+240 LET R1=10*(R-N*T)
+250 LET N=INT((10*(3*Q+R))/T)-10*N
+260 LET Q=Q*10
+270 LET R=R1
+280 GOTO 200
+300 LET R1=(2*Q+R)*L
+310 LET N1=INT((Q*(7*K)+2+(R*L))/(T*L))
+320 LET Q=Q*K
+330 LET T=T*L
+340 LET L=L+2
+350 LET K=K+1
+360 LET N=N1
+370 LET R=R1
+380 GOTO 200
+500 PRINT
+510 REM THE PRINT ABOVE IS NEEDED TO MAKE MINIMALBASIC FLUSH ITS
+520 REM OUTPUT BUFFER. OTHERWISE WE GET NO OUTPUT!
+9999 END