From 820009bfb569aa740513bcedabb4ac155157e8a5 Mon Sep 17 00:00:00 2001 From: otya128 Date: Fri, 2 Sep 2016 22:04:28 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E5=BC=95=E6=95=B0=E3=82=92=E4=BD=BF=E3=81=86?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SMILEBASIC/main.d | 122 ++----------------------------------- SMILEBASIC/petitcomputer.d | 57 ++--------------- 2 files changed, 10 insertions(+), 169 deletions(-) diff --git a/SMILEBASIC/main.d b/SMILEBASIC/main.d index 5116bbf..ea57f8f 100644 --- a/SMILEBASIC/main.d +++ b/SMILEBASIC/main.d @@ -5,127 +5,17 @@ import std.file; import otya.smilebasic.parser; import otya.smilebasic.error; import otya.smilebasic.petitcomputer; +import std.getopt; + int main(string[] argv) { - version(none) - { - auto parser = new Parser("ADD(ADD(1,2,3,4,5,6),2,3,4,5,6)"); - writeln(parser.calc()); - } - - version(none) - { - auto parser = new Parser( -//"@A\nA=1+2+3+4\nPRINT 1+1,2+3;10-5,A:A=A*2 PRINT A -" -TEST2 6,7,8 OUT K,L,M -?K,L,M -IF 1 THEN PRINT 2 -IF 0 THEN PRINT 4 ELSE PRINT 5 -IF 0 THEN - PRINT 111 -ELSE - PRINT 222 -ENDIF - -FOR I=-2 TO -9 STEP -2 - PRINT I -NEXT -?I -?\"Hello, World!!\" -?\"A\"*4 -FOR I=0 TO 100 - IF I MOD 3==0 AND I MOD 5==0 THEN - ?\"FIZZBUZZ\" - ELSE - IF I MOD 3==0 THEN - ?\"FIZZ\" - ELSE - IF I MOD 5==0 THEN - ?\"BUZZ\" - ELSE - ?I - ENDIF - ENDIF - ENDIF -NEXT -?1 AND 1 OR 1 AND 0 -?(1 OR 2 XOR 3) -?(1 OR 2 XOR 3 OR 4) -?@HELLOWORLD -FOR I=0 TO 10 - IF I==4 THEN BREAK - IF I==1 THEN CONTINUE - ?I -NEXT -VAR V[10,10] -V[0,1]=12 -?V[0,1] -?\"ABC\"[1][0] -?1/2 -GOSUB @A -?A() -?B(1,2,3) -FOR I=0 TO 10 - ?I;\"!\",\"=\",FACT(I) -NEXT -TEST \"HELLO\",\",\",\"WORLD\" -TEST2 6,7,8 OUT K,L,M -?K,L,M -FACT 10 OUT F -?F -END -@A -?\"SUBROUTINE TEST\" -RETURN -DEF A() - ?\"FUNCTION A\" - RETURN 1 -END -DEF B(A,B[],C) - LOCAL=123 - ?\"FUNCTION B\",A,B,C - ?LOCAL - RETURN -1 -END -DEF FACT(N) - IF N<=1 THEN RETURN 1 - RETURN N*FACT(N-1) -END -DEF TEST A,B,C - ?\"TEST\",A,B,C - RETURN -END -?\"CHECK\" -DEF TEST2 A,B,C OUT D,E,F - ?\"TEST2\",A,B,C - F=C - F=C - D=A - E=B - ?F - RETURN -END -"); - version(none) auto parser = new Parser(readText("FIZZBUZZ.TXT").to!wstring); - auto vm = parser.compile(); - try - { - vm.run(); - } - catch(SmileBasicError sbe) - { - writeln(sbe); - } - catch(Throwable t) - { - writeln(t); - } - } + bool nodirectmode; + string inputfile; + auto helpInformation = getopt(argv, "no-direct-mode", &nodirectmode, "file", &inputfile); //try { auto pc = new PetitComputer(); - pc.run(); + pc.run(nodirectmode, inputfile); } /*(Throwable t) { diff --git a/SMILEBASIC/petitcomputer.d b/SMILEBASIC/petitcomputer.d index b6e97e9..b52ee8d 100644 --- a/SMILEBASIC/petitcomputer.d +++ b/SMILEBASIC/petitcomputer.d @@ -1131,7 +1131,7 @@ class PetitComputer } Slot[] slot; bool isRunningDirectMode = false; - void run() + void run(bool nodirectmode = false, string inputfile = "") { slot = new Slot[5]; keybuffer = new Key[128]; @@ -1174,59 +1174,10 @@ class PetitComputer } //デバッグ用 version(NDirectMode) + nodirectmode = true; + if (nodirectmode) { - slot[0].load(readText("./TEST.TXT").to!wstring); - version(none) - parser = new Parser( - //readText("./SYS/GAME6TALK.TXT").to!wstring - //readText("./SYS/GAME7EXPAD.TXT").to!wstring - //readText("./SYS/GAME4SHOOTER.TXT").to!wstring - //readText("./SYS/GAME2RPG.TXT").to!wstring - //readText("./SYS/GAME1DOTRC.TXT").to!wstring - //readText(input("LOAD PROGRAM:", true).to!string).to!wstring - //readText("./SYS/EX8TECDEMO.TXT").to!wstring - //readText("./SYS/EX1TEXT.TXT").to!wstring - //readText("FIZZBUZZ.TXT").to!wstring - //readText("TEST.TXT").to!wstring - /*"?ABS(-1) - LOCATE 0,10 - COLOR 5 - FOR I=0 TO 10 - ?I;\"!\",\"=\",FACT(I) - NEXT - DEF FACT(N) - IF N<=1 THEN RETURN 1 - RETURN N*FACT(N-1) - END"*/ - /* - `CLS : CL=0 : Z=0 - WHILE 1 - INC Z : IF Z>200 THEN Z=0 - FOR I=0 TO 15 - LOCATE 9,4+I,Z : COLOR (CL+I) MOD 16 - PRINT "★ 梅雨で雨が多い季節ですね ★" - NEXT - CL=(CL+1) MOD 16 - WEND`*/ - /* - `CLS : CL=0 - WHILE 1 - FOR I=0 TO 15 - LOCATE 9,4+I : COLOR (CL+I) MOD 16 - PRINT "Ё プチコン3ゴウ Ж" - NEXT - CL=(CL+1) MOD 16 : VSYNC 1 - WEND` - /* - `CLS : CL=0 - @LOOP - FOR I=0 TO 15 - LOCATE 9,4+I : COLOR (CL+I) MOD 16 - PRINT "Ё プチコン3ゴウ Ж" - NEXT - CL=(CL+1) MOD 16 : VSYNC 1 - GOTO @LOOP`*/ - ); + slot[0].load(readText(inputfile).to!wstring); runSlot(0); } else