mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-03-07 11:51:49 +09:00
TerranBASIC: installing sample BASIC codes on new run
This commit is contained in:
@@ -5,8 +5,7 @@ import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
|
|||||||
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
|
import com.badlogic.gdx.graphics.glutils.ShaderProgram;
|
||||||
import net.torvald.tsvm.peripheral.*;
|
import net.torvald.tsvm.peripheral.*;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class TerranBASIC {
|
public class TerranBASIC {
|
||||||
@@ -17,22 +16,77 @@ public class TerranBASIC {
|
|||||||
public static int WIDTH = 640;
|
public static int WIDTH = 640;
|
||||||
public static int HEIGHT = 480;
|
public static int HEIGHT = 480;
|
||||||
|
|
||||||
|
public static String OSName = System.getProperty("os.name");
|
||||||
|
public static String OSVersion = System.getProperty("os.version");
|
||||||
|
|
||||||
public static String diskDir = "My_BASIC_Programs";
|
public static String operationSystem;
|
||||||
|
/** %appdata%/TerranBASIC, without trailing slash */
|
||||||
|
public static String defaultDir;
|
||||||
|
/** For Demo version only. defaultDir + "/Saves", without trailing slash */
|
||||||
|
public static String diskDir;
|
||||||
|
|
||||||
private static void createDirs() {
|
private static void getDefaultDirectory() {
|
||||||
File[] dirs = {
|
String OS = OSName.toUpperCase();
|
||||||
new File(diskDir)
|
if (OS.contains("WIN")) {
|
||||||
};
|
operationSystem = "WINDOWS";
|
||||||
|
defaultDir = System.getenv("APPDATA") + "/TerranBASIC";
|
||||||
for (File it : dirs) {
|
|
||||||
if (!it.exists())
|
|
||||||
it.mkdirs();
|
|
||||||
}
|
}
|
||||||
|
else if (OS.contains("OS X") || OS.contains("MACOS")) { // OpenJDK for mac will still report "Mac OS X" with version number "10.16", even on Big Sur and beyond
|
||||||
|
operationSystem = "OSX";
|
||||||
|
defaultDir = System.getProperty("user.home") + "/Library/Application Support/TerranBASIC";
|
||||||
|
}
|
||||||
|
else if (OS.contains("NUX") || OS.contains("NIX") || OS.contains("BSD")) {
|
||||||
|
operationSystem = "LINUX";
|
||||||
|
defaultDir = System.getProperty("user.home") + "/.TerranBASIC";
|
||||||
|
}
|
||||||
|
else if (OS.contains("SUNOS")) {
|
||||||
|
operationSystem = "SOLARIS";
|
||||||
|
defaultDir = System.getProperty("user.home") + "/.TerranBASIC";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
operationSystem = "UNKNOWN";
|
||||||
|
defaultDir = System.getProperty("user.home") + "/.TerranBASIC";
|
||||||
|
}
|
||||||
|
|
||||||
|
diskDir = defaultDir + "/My_Programs";
|
||||||
|
|
||||||
|
System.out.println(String.format("os.name = %s (with identifier %s)", OSName, operationSystem));
|
||||||
|
System.out.println(String.format("os.version = %s", OSVersion));
|
||||||
|
System.out.println(String.format("default directory: %s", defaultDir));
|
||||||
|
System.out.println(String.format("java version = %s", System.getProperty("java.version")));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void installSamplePrograms() {
|
||||||
|
System.out.println("Installing sample programs...");
|
||||||
|
|
||||||
|
String[] samplePrograms = {"99.bas","amazing.bas","array.bas","array0.bas","brb.bas","closure.bas","currying.bas","downkeys.bas","facclosure.bas","facmap.bas","factorial.bas","fib2.bas","fib3.bas","fibonacci.bas","funs.bas","hamurabi.bas","hangman.bas","highorder.bas","monadlaws.bas","monadlaws2.bas","myfirst.bas","plotter.bas","qsort.bas","recursion.bas","rmaze.bas","sqrt.bas","triangle1.bas","triangle2.bas","writermonad.bas","yourname.bas"};
|
||||||
|
|
||||||
|
for (String s : samplePrograms) {
|
||||||
|
try {
|
||||||
|
byte[] prg = TerranBASIC.class.getClassLoader().getResourceAsStream("net/torvald/tsvm/TerranBasicSamplePrograms/"+s).readAllBytes();
|
||||||
|
OutputStream prgOs = new BufferedOutputStream(new FileOutputStream(new File(diskDir, s)));
|
||||||
|
prgOs.write(prg);
|
||||||
|
prgOs.flush();prgOs.close();
|
||||||
|
System.out.println(s);
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
System.out.println(("Failed to install " + s));
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
createDirs();
|
getDefaultDirectory();
|
||||||
|
|
||||||
|
File myProgramsDir = new File(diskDir);
|
||||||
|
if (!myProgramsDir.exists()) {
|
||||||
|
if (myProgramsDir.mkdirs())
|
||||||
|
installSamplePrograms();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ShaderProgram.pedantic = false;
|
ShaderProgram.pedantic = false;
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
10 FOR I = 99 TO 1 STEP -1
|
||||||
|
20 MODE = 1
|
||||||
|
30 GOSUB 120
|
||||||
|
40 PRINT I;" bottle";BOTTLES;" of beer on the wall, ";i;" bottle";BOTTLES;" of beer."
|
||||||
|
50 MODE = 2
|
||||||
|
60 GOSUB 120
|
||||||
|
70 PRINT "Take one down and pass it around, ";(I-1);" bottle";BOTTLES;" of beer on the wall."
|
||||||
|
80 NEXT
|
||||||
|
90 PRINT "No more bottles of beer on the wall, no more bottles of beer."
|
||||||
|
100 PRINT "Go to the store and buy some more. 99 bottles of beer on the wall."
|
||||||
|
110 END
|
||||||
|
120 IF I == MODE THEN BOTTLES = "" ELSE BOTTLES = "s"
|
||||||
|
130 RETURN
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
1 OPTIONBASE 1
|
||||||
|
10 PRINT SPC(28);"AMAZING PROGRAM"
|
||||||
|
20 PRINT SPC(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||||
|
30 PRINT:PRINT:PRINT
|
||||||
|
100 PRINT "WHAT ARE YOUR WIDTH";:INPUT H
|
||||||
|
102 PRINT "WHAT ARE YOUR LENGTH";:INPUT V
|
||||||
|
105 IF H<>1 AND V<>1 THEN GOTO 110
|
||||||
|
106 PRINT "MEANINGLESS DIMENSIONS. TRY AGAIN.":GOTO 100
|
||||||
|
110 WS=DIM(H,V):VS=DIM(H,V)
|
||||||
|
120 PRINT:PRINT:PRINT:PRINT
|
||||||
|
160 Q=0:Z=0: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:WS(X,1)=C:C=C+1
|
||||||
|
200 R=X:S=1:GOTO 260
|
||||||
|
210 IF R<>H THEN GOTO 240
|
||||||
|
215 IF S<>V THEN GOTO 230
|
||||||
|
220 R=1:S=1
|
||||||
|
222 GOTO 250
|
||||||
|
230 R=1:S=S+1: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 ON X GOTO 790,820,860
|
||||||
|
334 IF Z==1 THEN GOTO 370
|
||||||
|
338 Q=1:GOTO 350
|
||||||
|
340 IF WS(R,S+1)<>0 THEN GOTO 370
|
||||||
|
350 X=INT(RND(1)*3+1)
|
||||||
|
360 ON X GOTO 790,820,910
|
||||||
|
370 X=INT(RND(1)*2+1)
|
||||||
|
380 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:GOTO 430
|
||||||
|
420 IF WS(R,S+1)<>0 THEN GOTO 450
|
||||||
|
430 X=INT(RND(1)*3+1)
|
||||||
|
440 ON X GOTO 790,860,910
|
||||||
|
450 X=INT(RND(1)*2+1)
|
||||||
|
460 ON X GOTO 790,860
|
||||||
|
470 IF S<>V THEN GOTO 490
|
||||||
|
480 IF Z==1 THEN GOTO 520
|
||||||
|
485 Q=1:GOTO 500
|
||||||
|
490 IF WS(R,S+1)<>0 THEN GOTO 520
|
||||||
|
500 X=INT(RND(1)*2+1)
|
||||||
|
510 ON X GOTO 790,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:GOTO 570
|
||||||
|
560 IF WS(R,S+1)<>0 THEN GOTO 590
|
||||||
|
570 X=INT(RND(1)*3+1)
|
||||||
|
580 ON X GOTO 820,860,910
|
||||||
|
590 X=INT(RND(1)*2+1)
|
||||||
|
600 ON X GOTO 820,860
|
||||||
|
610 IF S<>V THEN GOTO 630
|
||||||
|
620 IF Z==1 THEN GOTO 660
|
||||||
|
625 Q=1:GOTO 640
|
||||||
|
630 IF WS(R,S+1)<>0 THEN GOTO 660
|
||||||
|
640 X=INT(RND(1)*2+1)
|
||||||
|
650 ON X GOTO 820,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:GOTO 830
|
||||||
|
700 IF WS(R,S+1)<>0 THEN GOTO 730
|
||||||
|
710 X=INT(RND(1)*2+1)
|
||||||
|
720 ON X GOTO 860,910
|
||||||
|
730 GOTO 860
|
||||||
|
740 IF S<>V THEN GOTO 760
|
||||||
|
750 IF Z==1 THEN GOTO 780
|
||||||
|
755 Q=1: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:VS(R-1,S)=2:R=R-1
|
||||||
|
810 IF C==H*V+1 THEN GOTO 1010
|
||||||
|
815 Q=0:GOTO 260
|
||||||
|
820 WS(R,S-1)=C
|
||||||
|
830 C=C+1
|
||||||
|
840 VS(R,S-1)=1:S=S-1:IF C==H*V+1 THEN GOTO 1010
|
||||||
|
850 Q=0:GOTO 260
|
||||||
|
860 WS(R+1,S)=C
|
||||||
|
870 C=C+1:IF VS(R,S)==0 THEN GOTO 880
|
||||||
|
875 VS(R,S)=3: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:C=C+1:IF VS(R,S)==0 THEN GOTO 940
|
||||||
|
930 VS(R,S)=3:GOTO 950
|
||||||
|
940 VS(R,S)=1
|
||||||
|
950 S=S+1: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:Q=0:GOTO 1000
|
||||||
|
980 VS(R,S)=1:Q=0:R=1:S=1:GOTO 250
|
||||||
|
1000 GOTO 210
|
||||||
|
1010 FOR J=1 TO V
|
||||||
|
1011 PRINT "|";
|
||||||
|
1012 FOR I=1 TO H
|
||||||
|
1013 IF VS(I,J)<2 THEN GOTO 1030
|
||||||
|
1020 PRINT " ";
|
||||||
|
1021 GOTO 1040
|
||||||
|
1030 PRINT " |";
|
||||||
|
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
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
10 A={{"O","X","O"},{"X","O","X"},{"X","X","O"}}
|
||||||
|
20 FOR Y=0 TO LEN(A)-1
|
||||||
|
30 FOR X=0 TO LEN(A(Y))-1
|
||||||
|
40 PRINT(A(Y,X);" ";)
|
||||||
|
50 NEXT
|
||||||
|
60 PRINT
|
||||||
|
70 NEXT
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
10 A={2,3,5,7,11,13,17}
|
||||||
|
100 FOR K=0 TO LEN(A)-1
|
||||||
|
110 PRINT A(K)
|
||||||
|
120 NEXT
|
||||||
|
200 FOREACH AK=A
|
||||||
|
210 PRINT AK
|
||||||
|
220 NEXT
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
10 DEFUN FAC(N)=N*FAC(N-1)
|
||||||
|
20 FOR K=1 TO 6
|
||||||
|
30 PRINT FAC(K)
|
||||||
|
40 NEXT
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
10 F=[X]~>MAP([X]~>[X]<=5,X)
|
||||||
|
20 PRINT F(1 TO 10)
|
||||||
@@ -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'
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
10 PRINT GETKEYSDOWN()
|
||||||
|
20 GOTO 10
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
10 FAC=[N]~>IF N==0 THEN 1 ELSE N*FAC(N-1)
|
||||||
|
20 K=MAP(FAC, 1 TO 10)
|
||||||
|
30 PRINT K
|
||||||
@@ -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
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
10 DEFUN FAC(N)=IF N==0 THEN 1 ELSE N*FAC(N-1)
|
||||||
|
20 FOR K=1 TO 10
|
||||||
|
30 PRINT FAC(K)
|
||||||
|
40 NEXT
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
10 FIB_=[N,M]~>IF LEN(MJOIN(M))>=N THEN HEAD(MJOIN(M)) ELSE FIB_(N,M>>=([XS]~>MRET((XS(0)+XS(1))!XS)))
|
||||||
|
11 FIB=[N]~>FIB_(N,MRET({1,1}))
|
||||||
|
100 FOR K=1 TO 10
|
||||||
|
110 PRINT FIB(K);" ";
|
||||||
|
120 NEXT
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
10 FIB = [N,M] ~> IF (M==UNDEFINED) THEN FIB(N, MRET({1, 1})) ELSE IF (LEN(MJOIN(M)) >= N) THEN HEAD(MJOIN(M)) ELSE FIB(N, M >>= ([XS] ~> MRET((XS(0) + XS(1)) ! XS)))
|
||||||
|
20 FOR K = 1 TO 10
|
||||||
|
30 PRINT FIB(K);" ";
|
||||||
|
40 NEXT
|
||||||
@@ -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 10
|
||||||
|
30 PRINT FIB(K);" ";
|
||||||
|
40 NEXT
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
10 DEFUN POW2(N)=2^N
|
||||||
|
20 DEFUN DCOS(N)=COS(PI*N/180)
|
||||||
|
30 FOR X=0 TO 8
|
||||||
|
40 PRINT X,POW2(X)
|
||||||
|
50 NEXT
|
||||||
|
60 PRINT "----------------"
|
||||||
|
70 FOREACH A={0,45,90,135,180}
|
||||||
|
80 PRINT A,DCOS(A)
|
||||||
|
90 NEXT
|
||||||
@@ -0,0 +1,138 @@
|
|||||||
|
10 PRINT SPC(32);"HAMURABI"
|
||||||
|
20 PRINT SPC(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||||
|
30 PRINT:PRINT:PRINT
|
||||||
|
80 PRINT "TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA"
|
||||||
|
90 PRINT "FOR A TEN-YEAR TERM OF OFFICE.":PRINT
|
||||||
|
95 D1=0:P1=0
|
||||||
|
100 Z=0:P=95:S=2800:H=3000:E=H-S
|
||||||
|
110 Y=3:A=H/Y:I=5:Q=1
|
||||||
|
210 D=0
|
||||||
|
215 PRINT:PRINT:PRINT "HAMURABI: I BEG TO REPORT TO YOU,":Z=Z+1
|
||||||
|
217 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:S=S-Y*Q: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:S=S+Y*Q: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:C=1: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:H=D*Y: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 EMIT 7;
|
||||||
|
993 NEXT
|
||||||
|
995 PRINT "SO LONG FOR NOW."
|
||||||
|
996 PRINT
|
||||||
|
999 END
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
1 OPTIONBASE 1
|
||||||
|
10 PRINT SPC(32);"HANGMAN"
|
||||||
|
20 PRINT SPC(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
||||||
|
21 PRINT:PRINT SPC(14);"EDITOR'S NOTE: ALWAYS TYPE IN CAPITAL LETTERS!"
|
||||||
|
25 PRINT:PRINT
|
||||||
|
30 PSTR=DIM(12,12):LSTR=DIM(20):DSTR=DIM(20):NSTR=DIM(26):U=DIM(50)
|
||||||
|
40 C=1: N=50
|
||||||
|
50 FOR I=1 TO 20: DSTR(I)="-": NEXT: M=0
|
||||||
|
60 FOR I=1 TO 26: NSTR(I)="": NEXT
|
||||||
|
70 FOR I=1 TO 12: FOR J=1 TO 12: PSTR(I,J)=" ": NEXT: NEXT
|
||||||
|
80 FOR I=1 TO 12: PSTR(I,1)="X": NEXT
|
||||||
|
90 FOR I=1 TO 7: PSTR(1,I)="X": NEXT: PSTR(2,7)="X"
|
||||||
|
95 IF C<N THEN GOTO 100
|
||||||
|
97 PRINT "YOU DID ALL THE WORDS!!": END
|
||||||
|
100 Q=INT(N*RND(1))+1
|
||||||
|
110 IF U(Q)==1 THEN GOTO 100
|
||||||
|
115 U(Q)=1: C=C+1: RESTORE: T1=0
|
||||||
|
150 FOR I=1 TO Q: READ ASTR: NEXT
|
||||||
|
160 L=LEN(ASTR): FOR I=1 TO LEN(ASTR): LSTR(I)=MID(ASTR,I,1): NEXT
|
||||||
|
170 PRINT "HERE ARE THE LETTERS YOU USED:"
|
||||||
|
180 FOR I=1 TO 26: PRINT NSTR(I);: IF NSTR(I+1)=="" THEN GOTO 200
|
||||||
|
190 PRINT ",";: NEXT
|
||||||
|
200 PRINT: PRINT: FOR I=1 TO L: PRINT DSTR(I);: NEXT: PRINT: PRINT
|
||||||
|
210 PRINT "WHAT IS YOUR GUESS";:INPUT GSTR: R=0
|
||||||
|
220 FOR I=1 TO 26: IF NSTR(I)=="" THEN GOTO 250
|
||||||
|
230 IF GSTR==NSTR(I) THEN DO(PRINT "YOU GUESSED THAT LETTER BEFORE!"; GOTO 170)
|
||||||
|
240 NEXT: PRINT "PROGRAM ERROR. RUN AGAIN.": END
|
||||||
|
250 NSTR(I)=GSTR: T1=T1+1
|
||||||
|
260 FOR I=1 TO L: IF LSTR(I)==GSTR THEN GOTO 280
|
||||||
|
270 NEXT: IF R==0 THEN GOTO 290
|
||||||
|
275 GOTO 300
|
||||||
|
280 DSTR(I)=GSTR: R=R+1: GOTO 270
|
||||||
|
290 M=M+1: GOTO 400
|
||||||
|
300 FOR I=1 TO L: IF DSTR(I)=="-" THEN GOTO 320
|
||||||
|
310 NEXT: GOTO 390
|
||||||
|
320 PRINT: FOR I=1 TO L: PRINT DSTR(I);: NEXT: PRINT: PRINT
|
||||||
|
330 PRINT "WHAT IS YOUR GUESS FOR THE WORD";:INPUT BSTR
|
||||||
|
340 IF ASTR==BSTR THEN GOTO 360
|
||||||
|
350 PRINT "WRONG. TRY ANOTHER LETTER.": PRINT: GOTO 170
|
||||||
|
360 PRINT "RIGHT!! IT TOOK YOU ";T1;" GUESSES!"
|
||||||
|
370 PRINT "WANT ANOTHER WORD";:INPUT WSTR: IF WSTR=="YES" THEN GOTO 50
|
||||||
|
380 PRINT: PRINT "IT'S BEEN FUN! BYE FOR NOW.": GOTO 999
|
||||||
|
390 PRINT "YOU FOUND THE WORD!": GOTO 370
|
||||||
|
400 PRINT: PRINT: PRINT"SORRY, THAT LETTER ISN'T IN THE WORD."
|
||||||
|
410 ON M GOTO 415,420,425,430,435,440,445,450,455,460
|
||||||
|
415 PRINT "FIRST, WE DRAW A HEAD": GOTO 470
|
||||||
|
420 PRINT "NOW WE DRAW A BODY.": GOTO 470
|
||||||
|
425 PRINT "NEXT WE DRAW AN ARM.": GOTO 470
|
||||||
|
430 PRINT "THIS TIME IT'S THE OTHER ARM.": GOTO 470
|
||||||
|
435 PRINT "NOW, LET'S DRAW THE RIGHT LEG.": GOTO 470
|
||||||
|
440 PRINT "THIS TIME WE DRAW THE LEFT LEG.": GOTO 470
|
||||||
|
445 PRINT "NOW WE PUT UP A HAND.": GOTO 470
|
||||||
|
450 PRINT "NEXT THE OTHER HAND.": GOTO 470
|
||||||
|
455 PRINT "NOW WE DRAW ONE FOOT": GOTO 470
|
||||||
|
460 PRINT "HERE'S THE OTHER FOOT -- YOU'RE HUNG!!"
|
||||||
|
470 ON M GOTO 480,490,500,510,520,530,540,550,560,570
|
||||||
|
480 PSTR(3,6)="-": PSTR(3,7)="-": PSTR(3,8)="-": PSTR(4,5)="(": PSTR(4,6)="."
|
||||||
|
481 PSTR(4,8)=".":PSTR(4,9)=")":PSTR(5,6)="-":PSTR(5,7)="-":PSTR(5,8)="-":GOTO 580
|
||||||
|
490 FOR I=6 TO 9: PSTR(I,7)="X": NEXT: GOTO 580
|
||||||
|
500 FOR I=4 TO 7: PSTR(I,I-1)="\": NEXT: GOTO 580
|
||||||
|
510 PSTR(4,11)="/": PSTR(5,10)="/": PSTR(6,9)="/": PSTR(7,8)="/": GOTO 580
|
||||||
|
520 PSTR(10,6)="/": PSTR(11,5)="/": GOTO 580
|
||||||
|
530 PSTR(10,8)="\": PSTR(11,9)="\": GOTO 580
|
||||||
|
540 PSTR(3,11)="\": GOTO 580
|
||||||
|
550 PSTR(3,3)="/": GOTO 580
|
||||||
|
560 PSTR(12,10)="\": PSTR(12,11)="-": GOTO 580
|
||||||
|
570 PSTR(12,3)="-": PSTR(12,4)="/"
|
||||||
|
580 FOR I=1 TO 12: FOR J=1 TO 12: PRINT PSTR(I,J);: NEXT
|
||||||
|
590 PRINT: NEXT: PRINT: PRINT: IF M<>10 THEN GOTO 170
|
||||||
|
600 PRINT "SORRY, YOU LOSE. THE WORD WAS ";ASTR
|
||||||
|
610 PRINT "YOU MISSED THAT ONE. DO YOU ";: GOTO 370
|
||||||
|
620 PRINT "TYPE YES OR NO";:INPUT YSTR: IF LEFT(YSTR,1)=="Y" THEN GOTO 50
|
||||||
|
700 DATA "GUM","SIN","FOR","CRY","LUG","BYE","FLY"
|
||||||
|
710 DATA "UGLY","EACH","FROM","WORK","TALK","WITH","SELF"
|
||||||
|
720 DATA "PIZZA","THING","FEIGN","FIEND","ELBOW","FAULT","DIRTY"
|
||||||
|
730 DATA "BUDGET","SPIRIT","QUAINT","MAIDEN","ESCORT","PICKAX"
|
||||||
|
740 DATA "EXAMPLE","TENSION","QUININE","KIDNEY","REPLICA","SLEEPER"
|
||||||
|
750 DATA "TRIANGLE","KANGAROO","MAHOGANY","SERGEANT","SEQUENCE"
|
||||||
|
760 DATA "MOUSTACHE","DANGEROUS","SCIENTIST","DIFFERENT","QUIESCENT"
|
||||||
|
770 DATA "MAGISTRATE","ERRONEOUSLY","LOUDSPEAKER","PHYTOTOXIC"
|
||||||
|
780 DATA "MATRIMONIAL","PARASYMPATHOMIMETIC","THIGMOTROPISM"
|
||||||
|
990 PRINT "BYE NOW"
|
||||||
|
999 END
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
10 DEFUN APPLY(F,X)=F(X)
|
||||||
|
20 DEFUN FUN(X)=X^2
|
||||||
|
30 K=APPLY(FUN,42)
|
||||||
|
40 PRINT K
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
10 F=[X]~>X*2 : G=[X]~>X^3 : RETN=[X]~>MRET(X)
|
||||||
|
|
||||||
|
100 PRINT:PRINT "First law: 'return a >>= k' equals to 'k a'"
|
||||||
|
110 K=[X]~>RETN(F(X)) : REM K is monad-returning function
|
||||||
|
120 A=42
|
||||||
|
130 KM=RETN(A)>>=K
|
||||||
|
140 KO=K(A)
|
||||||
|
150 PRINT("KM is ";TYPEOF(KM);", ";MJOIN(KM))
|
||||||
|
160 PRINT("KO is ";TYPEOF(KO);", ";MJOIN(KO))
|
||||||
|
|
||||||
|
200 PRINT:PRINT "Second law: 'm >>= return' equals to 'm'"
|
||||||
|
210 M=MRET(G(42))
|
||||||
|
220 MM=M>>=RETN
|
||||||
|
230 MO=M
|
||||||
|
240 PRINT("MM is ";TYPEOF(MM);", ";MJOIN(MM))
|
||||||
|
250 PRINT("MO is ";TYPEOF(MO);", ";MJOIN(MO))
|
||||||
|
|
||||||
|
300 PRINT:PRINT "Third law: 'm >>= (\x -> k x >>= h)' equals to '(m >>= k) >>= h'"
|
||||||
|
310 REM see line 110 for the definition of K
|
||||||
|
320 H=[X]~>RETN(G(X)) : REM H is monad-returning function
|
||||||
|
330 M=MRET(69)
|
||||||
|
340 M1=M>>=([X]~>K(X)>>=H)
|
||||||
|
350 M2=(M>>=K)>>=H
|
||||||
|
360 PRINT("M1 is ";TYPEOF(M1);", ";MJOIN(M1))
|
||||||
|
370 PRINT("M2 is ";TYPEOF(M2);", ";MJOIN(M2))
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
10 F=[X]~>RETN(X~LAST(X)*2) : G=[X]~>RETN(X~LAST(X)^3) : RETN=[X]~>MRET(X)
|
||||||
|
|
||||||
|
100 PRINT:PRINT "First law: 'return a >>= k' equals to 'k a'"
|
||||||
|
110 K=[X]~>F(X) : REM K is monad-returning function
|
||||||
|
120 A=42!NIL
|
||||||
|
130 KM=RETN(A)>>=K
|
||||||
|
140 KO=K(A)
|
||||||
|
150 PRINT("KM is ";TYPEOF(KM);", ";MJOIN(KM))
|
||||||
|
160 PRINT("KO is ";TYPEOF(KO);", ";MJOIN(KO))
|
||||||
|
|
||||||
|
200 PRINT:PRINT "Second law: 'm >>= return' equals to 'm'"
|
||||||
|
210 M=G(42!NIL)
|
||||||
|
220 MM=M>>=RETN
|
||||||
|
230 MO=M
|
||||||
|
240 PRINT("MM is ";TYPEOF(MM);", ";MJOIN(MM))
|
||||||
|
250 PRINT("MO is ";TYPEOF(MO);", ";MJOIN(MO))
|
||||||
|
|
||||||
|
300 PRINT:PRINT "Third law: 'm >>= (\x -> k x >>= h)' equals to '(m >>= k) >>= h'"
|
||||||
|
310 REM see line 110 for the definition of K
|
||||||
|
320 H=[X]~>G(X) : REM H is monad-returning function
|
||||||
|
330 M=RETN(69!NIL)
|
||||||
|
340 M1=M>>=([X]~>K(X)>>=H)
|
||||||
|
350 M2=(M>>=K)>>=H
|
||||||
|
360 PRINT("M1 is ";TYPEOF(M1);", ";MJOIN(M1))
|
||||||
|
370 PRINT("M2 is ";TYPEOF(M2);", ";MJOIN(M2))
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
10 PRINT(2+2)
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
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 DEFUN PLOTLINE(F,X)=FOLD(SCONCAT,"",MAP(TOCHAR~<F(X),1 TO ZEROLINE+AMP))
|
||||||
|
100 FOR I=-40 TO 40
|
||||||
|
110 PRINT PLOTLINE(SINC,I)
|
||||||
|
120 NEXT
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
10 QSORT = [XS] ~> IF (LEN(XS) < 1) THEN NIL ELSE QSORT(FILTER([X] ~> X < HEAD XS, TAIL XS)) # {HEAD XS} # QSORT(FILTER([X] ~> X >= HEAD XS, TAIL XS))
|
||||||
|
100 L={7,9,4,5,2,3,1,8,6}
|
||||||
|
110 PRINT L
|
||||||
|
120 PRINT QSORT(L)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
10 DEFUN F(STR,XS)=IF (XS==UNDEFINED) THEN F(STR,{}) ELSE IF (LEN(STR)==0) THEN XS ELSE F(RIGHT(STR,LEN(STR)-1),IF (LEN(XS)==0) THEN XS ~ {LEFT(STR,1),1} ELSE IF (XS(LEN(XS)-1,0)><LEFT(STR,1)) THEN XS ~ {LEFT(STR,1),1} ELSE INIT(XS) ~ {LEFT(STR,1),1+XS(LEN(XS)-1,1)})
|
||||||
|
100 PAIRS=F("aaaabbbccaxyzzy")
|
||||||
|
110 PRINT PAIRS
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
10 PRINT(CHR(47+ROUND(RND(1))*45);)
|
||||||
|
20 GOTO 10
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
10 X=1337
|
||||||
|
20 Y=0.5*X
|
||||||
|
30 Z=Y
|
||||||
|
40 Y=Y-((Y^2)-X)/(2*Y)
|
||||||
|
50 IF NOT(Z==Y) THEN GOTO 30 : REM 'NOT(Z==Y)' can be rewritten to 'Z<>Y'
|
||||||
|
100 PRINT "Square root of ";X;" is approximately ";Y
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
10 GOTO 1000
|
||||||
|
100 REM subroutine to draw a segment. Size is stored to 'Q'
|
||||||
|
110 PRINT SPC(20-Q);
|
||||||
|
120 Q1=1 : REM loop counter for this subroutine
|
||||||
|
130 PRINT "*";
|
||||||
|
140 Q1=Q1+1
|
||||||
|
150 IF Q1<=Q*2-1 THEN GOTO 130
|
||||||
|
160 PRINT : RETURN : REM this line will take us back from the jump
|
||||||
|
1000 Q=1 : REM this is our loop counter
|
||||||
|
1010 GOSUB 100
|
||||||
|
1020 Q=Q+1
|
||||||
|
1030 IF Q<=20 THEN GOTO 1010
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
10 GOTO 1000
|
||||||
|
100 REM subroutine to draw a segment. Size is stored to 'Q'
|
||||||
|
110 PRINT SPC(20-Q);
|
||||||
|
120 FOR Q1=1 TO Q*2-1
|
||||||
|
130 PRINT "*";
|
||||||
|
140 NEXT : PRINT
|
||||||
|
150 RETURN
|
||||||
|
1000 FOR Q=1 TO 20
|
||||||
|
1010 GOSUB 100
|
||||||
|
1020 NEXT
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
10 WRITER=[VALUE]~>{VALUE,{}}
|
||||||
|
20 UNIT=[VALUE]~>{VALUE,{}}
|
||||||
|
30 SQUARED=[X]~>{X*X,{""+X+" WAS SQUARED. "}}
|
||||||
|
40 HALVED=[X]~>{X/2,{""+X+" WAS HALVED. "}}
|
||||||
|
50 BIND=[WRITER,TRANSFORM]~>(WRITER() >>= ([VALUELOG]~>(TRANSFORM(VALUELOG(0)) >>= ([RESULTUPDATES]~>(MRET({RESULTUPDATES(0), VALUELOG(1) # RESULTUPDATES(1)}))))))
|
||||||
|
60 PIPELOG=[WRITER,TRANSFORMS]~>FOLD(BIND,WRITER,TRANSFORMS)
|
||||||
|
100 LOGOBJ=PIPELOG(UNIT(4),{SQUARED,HALVED})
|
||||||
|
110 PRINT(LOGOBJ)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
10 PRINT "WHAT IS YOUR NAME";
|
||||||
|
20 INPUT NAME
|
||||||
|
30 PRINT "HELLO, ";NAME
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
if (( $EUID == 0 )); then echo "The build process is not meant to be run with root privilege, exiting now." >&2; exit 1; fi
|
||||||
|
|
||||||
cd "${0%/*}"
|
cd "${0%/*}"
|
||||||
APPIMAGETOOL="appimagetool-x86_64.AppImage"
|
APPIMAGETOOL="appimagetool-x86_64.AppImage"
|
||||||
SRCFILES="tbaslinux_arm"
|
SRCFILES="tbaslinux_arm"
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
if (( $EUID == 0 )); then echo "The build process is not meant to be run with root privilege, exiting now." >&2; exit 1; fi
|
||||||
|
|
||||||
cd "${0%/*}"
|
cd "${0%/*}"
|
||||||
APPIMAGETOOL="appimagetool-x86_64.AppImage"
|
APPIMAGETOOL="appimagetool-x86_64.AppImage"
|
||||||
SRCFILES="tbaslinux_x86"
|
SRCFILES="tbaslinux_x86"
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
if (( $EUID == 0 )); then echo "The build process is not meant to be run with root privilege, exiting now." >&2; exit 1; fi
|
||||||
|
|
||||||
cd "${0%/*}"
|
cd "${0%/*}"
|
||||||
SRCFILES="tbasmac_arm"
|
SRCFILES="tbasmac_arm"
|
||||||
DESTDIR="out/TerranBASIC_macOS.arm.app"
|
DESTDIR="out/TerranBASIC_macOS.arm.app"
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
if (( $EUID == 0 )); then echo "The build process is not meant to be run with root privilege, exiting now." >&2; exit 1; fi
|
||||||
|
|
||||||
cd "${0%/*}"
|
cd "${0%/*}"
|
||||||
SRCFILES="tbasmac_x86"
|
SRCFILES="tbasmac_x86"
|
||||||
DESTDIR="out/TerranBASIC_macOS.x86.app"
|
DESTDIR="out/TerranBASIC_macOS.x86.app"
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
if (( $EUID == 0 )); then echo "The build process is not meant to be run with root privilege, exiting now." >&2; exit 1; fi
|
||||||
|
|
||||||
cd "${0%/*}"
|
cd "${0%/*}"
|
||||||
SRCFILES="tbaswindows_x86"
|
SRCFILES="tbaswindows_x86"
|
||||||
DESTDIR="TerranBASIC_windows.x86.exe"
|
DESTDIR="TerranBASIC_windows.x86.exe"
|
||||||
|
|||||||
Reference in New Issue
Block a user