SVC 1の動作を、領域が満ちるまで文字が入力されるよう修正。
[YACASL2.git] / src / exec.c
index 00cee8d..4851aea 100644 (file)
@@ -1,6 +1,9 @@
 #include "casl2.h"
 #include "exec.h"
 
+/* 実行モード: trace, logical, dump */
+EXECMODE execmode = {false, false, false};
+
 /* 標準入力から文字データを読込(SVC 1) */
 void svcin()
 {
@@ -8,11 +11,10 @@ void svcin()
     char *buffer = malloc(INSIZE + 1);
 
     if(fgets(buffer, INSIZE, stdin) == NULL) {
-        memory[GR[1]] = 0x0;
-        memory[GR[2]] = 0x0;
+        memory[GR[1]] = memory[GR[2]] = 0x0;
         return;
     }
-    for(i = 0; i < GR[1] && i < INSIZE; i++) {
+    for(i = 0; i < INSIZE; i++) {
         if(*(buffer + i) == '\0' || *(buffer + i) == '\n') {
             --i;
             break;
@@ -149,7 +151,7 @@ WORD sla(WORD val0, WORD val1)
         last = res & 0x4000;
         res <<= 1;
     }
-    res = sign | res;
+    res = sign | (res & 0x7FFF);
     /* OFに、レジスタから最後に送り出されたビットの値を設定 */
     if(last > 0x0) {
         FR += OF;