X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Fmacro.c;fp=src%2Fmacro.c;h=0000000000000000000000000000000000000000;hb=7f7bde5dd1305cfc598fe09030c69aad0dc01368;hp=e41eef923b68f139e68f5585c21da0e69fdb1e02;hpb=373540e9b114c01712121c36b40f47a98e12d263;p=YACASL2.git diff --git a/src/macro.c b/src/macro.c deleted file mode 100644 index e41eef9..0000000 --- a/src/macro.c +++ /dev/null @@ -1,143 +0,0 @@ -#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 */ -bool writeIN(const char *ibuf, const char *len, PASS pass) -{ - bool status = false; - - /* PUSH 0,GR1 */ - writememory(0x7001, (asprop->ptr)++, pass); - writememory(0x0, (asprop->ptr)++, pass); - /* PUSH 0,GR2 */ - writememory(0x7002, (asprop->ptr)++, pass); - writememory(0x0, (asprop->ptr)++, pass); - /* LAD GR1,IBUF */ - writememory(0x1210, (asprop->ptr)++, pass); - writememory(getadr(asprop->prog, ibuf, pass), (asprop->ptr)++, pass); - /* LAD GR2,LEN */ - writememory(0x1220, (asprop->ptr)++, pass); - writememory(getadr(asprop->prog, len, pass), (asprop->ptr)++, pass); - /* SVC 1 */ - writememory(0xF000, (asprop->ptr)++, pass); - writememory(0x0001, (asprop->ptr)++, pass); - /* POP GR2 */ - writememory(0x7120, (asprop->ptr)++, pass); - /* POP GR1 */ - 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 */ -/* 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, (asprop->ptr)++, pass); - writememory(0x0, (asprop->ptr)++, pass); - /* PUSH 0,GR2 */ - writememory(0x7002, (asprop->ptr)++, pass); - writememory(0x0, (asprop->ptr)++, pass); - /* LAD GR1,OBUF */ - 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, (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) { - (asprop->ptr)++; - } else { - writememory(asprop->lptr, (asprop->ptr)++, pass); /* リテラルのアドレスを書込 */ - } - writememory(0x1, (asprop->lptr)++, pass); - /* SVC 2 */ - writememory(0xF000, (asprop->ptr)++, pass); - writememory(0x0002, (asprop->ptr)++, pass); - /* POP GR2 */ - writememory(0x7120, (asprop->ptr)++, pass); - /* POP GR1 */ - writememory(0x7110, (asprop->ptr)++, pass); - if(cerr->num == 0) { - status = true; - } - return status; -} - -/* マクロ命令「RPUSH」をメモリに書き込む - PUSH 0,GR1 - PUSH 0,GR2 - PUSH 0,GR3 - PUSH 0,GR4 - PUSH 0,GR5 - PUSH 0,GR6 - PUSH 0,GR7 - */ -bool writeRPUSH(PASS pass) { - int i; - bool status = false; - - for(i = 1; i <= 7; i++) { - writememory(0x7000 + i, (asprop->ptr)++, pass); /* PUSH GRn */ - writememory(0x0, (asprop->ptr)++, pass); - } - 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 - */ -bool writeRPOP(PASS pass) { - int i; - bool status = false; - for(i = 7; i >= 1; i--) { - writememory((0x7100 + (i << 4)), (asprop->ptr)++, pass); /* POP GRn */ - } - if(cerr->num == 0) { - status = true; - } - return status; -}