変数名の整理
[YACASL2.git] / src / macro.c
index 019b956..e41eef9 100644 (file)
 #include "casl2.h"
 #include "assemble.h"
 
-/*マクロ命令「IN IBUF,LEN」をメモリに書込  
-       PUSH 0,GR1
-       PUSH 0,GR2
-       LAD GR1,IBUF
-       LAD GR2,LEN
-        SVC 1
-       POP GR2
-       POP GR1
-*/
+/* マクロ命令「IN IBUF,LEN」をメモリに書込 */
+/*         PUSH 0,GR1   */
+/*         PUSH 0,GR2   */
+/*         LAD GR1,IBUF */
+/*         LAD GR2,LEN  */
+/*         SVC 1        */
+/*         POP GR2      */
+/*         POP GR1      */
 bool writeIN(const char *ibuf, const char *len, PASS pass)
 {
     bool status = false;
 
     /* PUSH 0,GR1 */
-    writememory(0x7001, ptr++, pass);
-    writememory(0x0, ptr++, pass);
+    writememory(0x7001, (asprop->ptr)++, pass);
+    writememory(0x0, (asprop->ptr)++, pass);
     /* PUSH 0,GR2 */
-    writememory(0x7002, ptr++, pass);
-    writememory(0x0, ptr++, pass);
+    writememory(0x7002, (asprop->ptr)++, pass);
+    writememory(0x0, (asprop->ptr)++, pass);
     /* LAD GR1,IBUF */
-    writememory(0x1210, ptr++, pass);
-    writememory(getadr(prog, ibuf, pass), ptr++, pass);
+    writememory(0x1210, (asprop->ptr)++, pass);
+    writememory(getadr(asprop->prog, ibuf, pass), (asprop->ptr)++, pass);
     /* LAD GR2,LEN */
-    writememory(0x1220, ptr++, pass);
-    writememory(getadr(prog, len, pass), ptr++, pass);
+    writememory(0x1220, (asprop->ptr)++, pass);
+    writememory(getadr(asprop->prog, len, pass), (asprop->ptr)++, pass);
     /* SVC 1 */
-    writememory(0xF000, ptr++, pass);
-    writememory(0x0001, ptr++, pass);
+    writememory(0xF000, (asprop->ptr)++, pass);
+    writememory(0x0001, (asprop->ptr)++, pass);
     /* POP GR2 */
-    writememory(0x7120, ptr++, pass);
+    writememory(0x7120, (asprop->ptr)++, pass);
     /* POP GR1 */
-    writememory(0x7110, ptr++, pass);
-    if(cerrno == 0) {
+    writememory(0x7110, (asprop->ptr)++, pass);
+    if(cerr->num == 0) {
         status = true;
     }
     return status;
 }
 
-/* マクロ命令「OUT OBUF,LEN」をメモリに書込
-       PUSH 0,GR1
-        PUSH 0,GR2
-        LAD GR1,OBUF
-        LD GR2,LEN
-        SVC 2
-       LAD GR1,=#A
-        LAD GR2,1
-        SVC 2
-        POP GR2
-        POP GR1
-*/
+/* マクロ命令「OUT OBUF,LEN」をメモリに書込 */
+/*         PUSH 0,GR1   */
+/*         PUSH 0,GR2   */
+/*         LAD GR1,OBUF */
+/*         LAD GR2,LEN  */
+/*         SVC 2        */
+/*         LAD GR1,=#A  */
+/*         LAD GR2,1    */
+/*         SVC 2        */
+/*         POP GR2      */
+/*         POP GR1      */
 bool writeOUT(const char *obuf, const char *len, PASS pass)
 {
     bool status = false;
 
     /* PUSH 0,GR1 */
-    writememory(0x7001, ptr++, pass);
-    writememory(0x0, ptr++, pass);
+    writememory(0x7001, (asprop->ptr)++, pass);
+    writememory(0x0, (asprop->ptr)++, pass);
     /* PUSH 0,GR2 */
-    writememory(0x7002, ptr++, pass);
-    writememory(0x0, ptr++, pass);
+    writememory(0x7002, (asprop->ptr)++, pass);
+    writememory(0x0, (asprop->ptr)++, pass);
     /* LAD GR1,OBUF */
-    writememory(0x1210, ptr++, pass);
-    writememory(getadr(prog, obuf, pass), ptr++, pass);
-    /* LD GR2,OLEN */
-    writememory(0x1020, ptr++, pass);
-    writememory(getadr(prog, len, pass), ptr++, pass);
+    writememory(0x1210, (asprop->ptr)++, pass);
+    writememory(getadr(asprop->prog, obuf, pass), (asprop->ptr)++, pass);
+    /* LAD GR2,OLEN */
+    writememory(0x1220, (asprop->ptr)++, pass);
+    writememory(getadr(asprop->prog, len, pass), (asprop->ptr)++, pass);
     /* SVC 2 */
-    writememory(0xF000, ptr++, pass);
-    writememory(0x0002, ptr++, pass);
-    /* LAD GR1,=#A */ 
-    writememory(0x1210, ptr++, pass);
+    writememory(0xF000, (asprop->ptr)++, pass);
+    writememory(0x0002, (asprop->ptr)++, pass);
+    /* LAD GR1,=#A */
+    writememory(0x1210, (asprop->ptr)++, pass);
+    if(pass == FIRST) {
+        (asprop->ptr)++;
+    } else {
+        writememory(asprop->lptr, (asprop->ptr)++, pass);    /* リテラルのアドレスを書込 */
+    }
+    writememory(0xA, (asprop->lptr)++, pass);
+    /* LAD GR2,=1 */
+    writememory(0x1220, (asprop->ptr)++, pass);
     if(pass == FIRST) {
-        ptr++;
+        (asprop->ptr)++;
     } else {
-        writememory(lptr, ptr++, pass);    /* リテラルのアドレスを書込 */
+        writememory(asprop->lptr, (asprop->ptr)++, pass);    /* リテラルのアドレスを書込 */
     }
-    writememory(0xA, lptr++, pass);
-    /* LAD GR2,1 */
-    writememory(0x1220, ptr++, pass);
-    writememory(0x0001, ptr++, pass);
+    writememory(0x1, (asprop->lptr)++, pass);
     /* SVC 2 */
-    writememory(0xF000, ptr++, pass);
-    writememory(0x0002, ptr++, pass);
+    writememory(0xF000, (asprop->ptr)++, pass);
+    writememory(0x0002, (asprop->ptr)++, pass);
     /* POP GR2 */
-    writememory(0x7120, ptr++, pass);
+    writememory(0x7120, (asprop->ptr)++, pass);
     /* POP GR1 */
-    writememory(0x7110, ptr++, pass);
-    if(cerrno == 0) {
+    writememory(0x7110, (asprop->ptr)++, pass);
+    if(cerr->num == 0) {
         status = true;
     }
     return status;
 }
 
 /* マクロ命令「RPUSH」をメモリに書き込む
-       PUSH 0,GR1
+        PUSH 0,GR1
         PUSH 0,GR2
-       PUSH 0,GR3
+        PUSH 0,GR3
         PUSH 0,GR4
-       PUSH 0,GR5
+        PUSH 0,GR5
         PUSH 0,GR6
-       PUSH 0,GR7
+        PUSH 0,GR7
  */
 bool writeRPUSH(PASS pass) {
     int i;
     bool status = false;
 
     for(i = 1; i <= 7; i++) {
-        writememory(0x7000 + i, ptr++, pass);   /* PUSH GRn */
-        writememory(0x0, ptr++, pass);
+        writememory(0x7000 + i, (asprop->ptr)++, pass);   /* PUSH GRn */
+        writememory(0x0, (asprop->ptr)++, pass);
     }
-    if(cerrno == 0) {
+    if(cerr->num == 0) {
         status = true;
     }
     return status;
 }
 
 /* マクロ命令「RPOP」をメモリに書き込む
-       POP GR7
-       POP GR6
-       POP GR5
-       POP GR4
-       POP GR3
-       POP GR3
-       POP GR2
-       POP GR1
+        POP GR7
+        POP GR6
+        POP GR5
+        POP GR4
+        POP GR3
+        POP GR3
+        POP GR2
+        POP GR1
  */
 bool writeRPOP(PASS pass) {
     int i;
     bool status = false;
     for(i = 7; i >= 1; i--) {
-        writememory((0x7100 + (i << 4)), ptr++, pass);  /* POP GRn */
+        writememory((0x7100 + (i << 4)), (asprop->ptr)++, pass);  /* POP GRn */
     }
-    if(cerrno == 0) {
+    if(cerr->num == 0) {
         status = true;
     }
     return status;