From: j8takagi <j8takagi@nifty.com> Date: Sun, 3 Jun 2018 23:45:24 +0000 (+0900) Subject: SUBLで、OVフラグが正常に動作しないバグの修正を開始 X-Git-Tag: v0.3p2~4 X-Git-Url: https://www.j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ae04e48ee62a95f6f77794d5611db189a19e70de;p=YACASL2.git SUBLで、OVフラグが正常に動作しないバグの修正を開始 --- diff --git a/as/casl2lib/outl.casl b/as/casl2lib/outl.casl index bf16e79..09cc91f 100644 --- a/as/casl2lib/outl.casl +++ b/as/casl2lib/outl.casl @@ -3,7 +3,7 @@ OUTL START RPUSH LAD GR2,10 ; GR2ã«10鲿°ã®ã10ããæ ¼ç´ã - LAD GR0,0 ; GR0 <- 0 + XOR GR0,GR0 ; GR0 <- 0 XOR GR4,GR4 ; æ´æ°å¤ã®é·ã AND GR1,GR1 ; GR1ããã¹ã JZE ZERO ; GR1ã0ã®å ´åãZEROã«ã¸ã£ã³ã diff --git a/as/cmd/ADDL/addl_r_adr__as1.casl b/as/cmd/ADDL/addl_r_adr__as1.casl index 0bc77d4..72fbced 100644 --- a/as/cmd/ADDL/addl_r_adr__as1.casl +++ b/as/cmd/ADDL/addl_r_adr__as1.casl @@ -1,4 +1,4 @@ -;;; ADDL r,adr æ¼ç®çµæãè² æ°(r < adr) +;;; ADDL r,adr MAIN START LD GR1,A ADDL GR1,B diff --git a/as/cmd/ADDL/addl_r_adr__az.casl b/as/cmd/ADDL/addl_r_adr__az.casl index aeff1ed..a82ebf2 100644 --- a/as/cmd/ADDL/addl_r_adr__az.casl +++ b/as/cmd/ADDL/addl_r_adr__az.casl @@ -3,6 +3,6 @@ MAIN START LD GR1,A ADDL GR1,B RET -A DC #FFF6 ; -10 +A DC #FFF6 ; 65526 B DC 10 END diff --git a/as/cmd/SUBL/subl_r_adr__o.casl b/as/cmd/SUBL/subl_r_adr__o.casl index 5920644..6abefbe 100644 --- a/as/cmd/SUBL/subl_r_adr__o.casl +++ b/as/cmd/SUBL/subl_r_adr__o.casl @@ -1,8 +1,8 @@ -;;; SUBL r,adr ãªã¼ãã¼ããã¼ +;;; SUBL r,adr è«çæ¼ç®ã§ã¯ãªã¼ãã¼ããã¼ãªãï¼ç®è¡æ¸ç®ã§ã¯ãªã¼ãã¼ããã¼ï¼ MAIN START LD GR1,A SUBL GR1,B RET -A DC #8002 ; -32766 +A DC #8002 ; 32770 B DC #7FFF ; 32767 END diff --git a/as/cmd/SUBL/subl_r_adr_x.casl b/as/cmd/SUBL/subl_r_adr_x.casl index caafd27..db8c991 100644 --- a/as/cmd/SUBL/subl_r_adr_x.casl +++ b/as/cmd/SUBL/subl_r_adr_x.casl @@ -4,6 +4,6 @@ BEGIN LD GR1,A LAD GR2,1 SUBL GR1,A,GR2 RET -A DC 3 - DC 1 +A DC 5 + DC 2 END diff --git a/as/fe_tests/2011_10/Q12/Q12.txt b/as/fe_tests/2011_10/Q12/Q12.txt index fa089cb..3caa0c5 100644 --- a/as/fe_tests/2011_10/Q12/Q12.txt +++ b/as/fe_tests/2011_10/Q12/Q12.txt @@ -1,3 +1,4 @@ +https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2011h23_2/2011h23a_fe_pm_qs.pdf P.56 - P.59 次ã®ã¢ã»ã³ãã©ããã°ã©ã ã®èª¬æåã³ããã°ã©ã ãèªãã§ï¼è¨å1ï¼2ã«çããã ãããã°ã©ã 1ã®èª¬æã @@ -15,6 +16,7 @@ (2) å¯ããã°ã©ã DIV ããæ»ãã¨ãï¼æ±ç¨ã¬ã¸ã¹ã¿ GR6, GR7 ã®å 容ã¯å ã«æ»ãã +è¨å1. ããã°ã©ã 1ä¸ã® ã«å ¥ããæ£ããçããï¼è§£ç群ã®ä¸ããé¸ã¹ã a ã«é¢ããè§£ç群 @@ -26,3 +28,10 @@ b ã«é¢ããè§£ç群 㢠JMI ADJ2 㤠JMI CONT 㦠JOV ADJ2 㨠JOV CONT 㪠JPL ADJ2 ã« JPL CONT + +è¨å2. +10é²è¡¨è¨ã§ 0ï½99999 ã®å¤ã®æ´æ°ã32ããã符å·ãªãæ´æ°ã¨ãã¦ä¸ããã¨ãï¼DIV ãç¨ãã¦10鲿°æååã«å¤æããå¯ããã°ã©ã BTOD ãç°ãªãã¢ã«ã´ãªãºã ã§2種é¡ä½æãããããã°ã©ã 2ã¯10é²è¡¨è¨ã®ä¸ä½æ¡ããæ±ãããã®ã§ããï¼ããã°ã©ã 3ã¯10é²è¡¨è¨ã®ä¸ä½æ¡ããæ±ãããã®ã§ãããããã°ã©ã 2ï¼ããã°ã©ã 3ä¸ã®ãã«å ¥ããæ£ããçããï¼è§£ç群ã®ä¸ããé¸ã¹ã +BTOD ã¯32ããã符å·ãªãæ´æ°ã®ä¸ä½èªã GR1 ã«ï¼ä¸ä½èªã GR2 ã«ï¼å¤æçµæãæ ¼ç´ããé åã®å é ã¢ãã¬ã¹ã GR3 ã«è¨å®ãã¦å¼ã³åºãããã +夿å¾ã®10鲿°æååã¯5èªã®é åã«æ ¼ç´ãããããã ãï¼5æ¡ã«æºããªãå ´åã¯ä¸ä½æ¡ã«"0"ãè£ãããã対象æ°å¤ã16é²è¡¨è¨ã§ 0000054D ã®å ´åã®å®è¡çµæãï¼æ¬¡ã«ç¤ºãã +pm12_3.gif/image-size:317Ã50 +å¯ããã°ã©ã BTOD ããæ»ãã¨ãï¼æ±ç¨ã¬ã¸ã¹ã¿ GR1ï½GR7 ã®å 容ã¯å ã«æ»ãã diff --git a/as/fe_tests/2011_10/Q12/btod1.casl b/as/fe_tests/2011_10/Q12/btod1.casl index f67c7f4..4532738 100644 --- a/as/fe_tests/2011_10/Q12/btod1.casl +++ b/as/fe_tests/2011_10/Q12/btod1.casl @@ -11,7 +11,7 @@ LAD GR6,1,GR6 LD GR1,GR4 ; è¢«é¤æ°ã®åè¨å® LD GR2,GR5 - + JUMP LP FIN RPOP RET diff --git a/as/fe_tests/2011_10/Q12/call_div.casl b/as/fe_tests/2011_10/Q12/call_div.casl index 87f12a3..592fcf4 100644 --- a/as/fe_tests/2011_10/Q12/call_div.casl +++ b/as/fe_tests/2011_10/Q12/call_div.casl @@ -1,3 +1,8 @@ -MAIN START - RPUSH - +MAIN START + LAD GR1,0 + LAD GR2,15 + LAD GR3,OP + CALL DIV + RET +OP DC 0,3 + END diff --git a/as/fe_tests/2011_10/Q12/call_div.o.casl b/as/fe_tests/2011_10/Q12/call_div.o.casl new file mode 100644 index 0000000..400f320 --- /dev/null +++ b/as/fe_tests/2011_10/Q12/call_div.o.casl @@ -0,0 +1,37 @@ +MAIN START + LAD GR1,#0000 ; #0000: #1210 #0000 + LAD GR2,#000F ; #0002: #1220 #000F + LAD GR3,#0009 ; #0004: #1230 #0009 + CALL #000B ; #0006: #8000 #000B + RET ; #0008: #8100 + NOP ; #0009: #0000 + DC 3 ; #000A: #0003 :: 3 = #0003 = 0000000000000011 + PUSH #0000,GR6 ; #000B: #7006 #0000 + PUSH #0000,GR7 ; #000D: #7007 #0000 + LD GR6,GR1 ; #000F: #1461 + LD GR7,GR2 ; #0010: #1472 + LD GR1,#0032 ; #0011: #1010 #0032 + LD GR2,#0033 ; #0013: #1020 #0033 + LD GR4,GR6 ; #0015: #1446 + LD GR5,GR7 ; #0016: #1457 + ADDL GR2,#0034 ; #0017: #2220 #0034 + JOV #001D ; #0019: #6600 #001D + JUMP #001F ; #001B: #6400 #001F + ADDL GR1,#0035 ; #001D: #2210 #0035 + SUBL GR6,#0000,GR3 ; #001F: #2363 #0000 + JOV #002F ; #0021: #6600 #002F + SUBL GR7,#0001,GR3 ; #0023: #2373 #0001 + JOV #0029 ; #0025: #6600 #0029 + JUMP #0015 ; #0027: #6400 #0015 + SUBL GR6,#0036 ; #0029: #2360 #0036 + JOV #002F ; #002B: #6600 #002F + JUMP #0015 ; #002D: #6400 #0015 + POP GR7 ; #002F: #7170 + POP GR6 ; #0030: #7160 + RET ; #0031: #8100 + DC 65535 ; #0032: #FFFF :: 65535 = #FFFF = 1111111111111111 + DC 65535 ; #0033: #FFFF :: 65535 = #FFFF = 1111111111111111 + DC 1 ; #0034: #0001 :: 1 = #0001 = 0000000000000001 + DC 1 ; #0035: #0001 :: 1 = #0001 = 0000000000000001 + DC 1 ; #0036: #0001 :: 1 = #0001 = 0000000000000001 + END diff --git a/as/fe_tests/2011_10/Q12/div.casl b/as/fe_tests/2011_10/Q12/div.casl index bfc5630..13b75dd 100644 --- a/as/fe_tests/2011_10/Q12/div.casl +++ b/as/fe_tests/2011_10/Q12/div.casl @@ -1,26 +1,26 @@ -DIV START ; æ¸ç®ãç¨ãã 32 ãããé¤ç® - PUSH 0,GR6 - PUSH 0,GR7 - LD GR6,GR1 - LD GR7,GR2 - LD GR1,=#FFFF ; åã®åæå - LD GR2,=#FFFF - LP LD GR4,GR6 - LD GR5,GR7 - ADDL GR2,=1 ; åã®ã«ã¦ã³ãã¢ãã - JOV ADJ1 - JUMP CONT - ADJ1 - CONT SUBL GR6,0,GR3 - J0V FIN - SUBL GR7,1,GR3 - - JUMP LP - ADJ2 SUBL GR6,=1 - J0V FIN - JUMP LP - FIN POP GR7 - POP GR6 - RET - END - +DIV START ; æ¸ç®ãç¨ãã32ãããé¤ç® + PUSH 0,GR6 + PUSH 0,GR7 + LD GR6,GR1 + LD GR7,GR2 + LD GR1,=#FFFF ; åã®åæå + LD GR2,=#FFFF +LP LD GR4,GR6 + LD GR5,GR7 + ADDL GR2,=1 ; åã®ã«ã¦ã³ãã¢ãã + JOV ADJ1 + JUMP CONT +ADJ1 ADDL GR1,=1 +CONT SUBL GR6,0,GR3 + JOV FIN + SUBL GR7,1,GR3 + JOV ADJ2 + JUMP LP +ADJ2 SUBL GR6,=1 + JOV FIN + JUMP LP +FIN POP GR7 + POP GR6 + RET + END + diff --git a/src/disassemble.c b/src/disassemble.c index 7aef8bd..9c2a341 100644 --- a/src/disassemble.c +++ b/src/disassemble.c @@ -19,11 +19,10 @@ char *grstr(WORD word) bool disassemble(const char *file) { - FILE *fp; bool stat = true; - int i = 0; - WORD w, cmd, r, x, r1, r2, adr; - CMDTYPE type = 0; + FILE *fp; + WORD i = 0, w, cmd, r, x, r1, r2, adr; + CMDTYPE cmdtype = 0; char *cmdname; assert(file != NULL); @@ -35,41 +34,47 @@ bool disassemble(const char *file) create_code_cmdtype(); /* å½ä»¤ã®ã³ã¼ãã¨ã¿ã¤ãããã¼ã®ããã·ã¥è¡¨ã使 */ fprintf(stdout, "MAIN\tSTART\n"); - for( ; !feof(fp); ) { + for(; ;) { fread(&w, sizeof(WORD), 1, fp); + if(feof(fp)) { + break; + } cmd = w & 0xFF00; cmdname = getcmdname(cmd); + cmdtype = getcmdtype(cmd); if(cmd == 0xFF00 || (w != 0 && cmd == 0x0000)) { - fprintf(stdout, "\tDC\t%d\t\t; #%04X", w, i++); - } else if((type = getcmdtype(cmd)) == R_ADR_X || type == ADR_X) { + fprintf(stdout, "\tDC\t%d\t\t\t\t; #%04X: #%04X :: ", w, i++, w); + print_dumpword(w, true); + } else if(cmdtype == R_ADR_X || cmdtype == ADR_X) { fread(&adr, sizeof(WORD), 1, fp); fprintf(stdout, "\t%s\t", cmdname); - if(type == R_ADR_X) { - r = (w & 0x00F0) >> 4; + if(cmdtype == R_ADR_X) { + r = (w & 0x00F0) >> 4; fprintf(stdout, "%s,", grstr(r)); } fprintf(stdout, "#%04X", adr); - if((x = w & 0x000F) != 0) { + if((x = w & 0x000F) != 0) { fprintf(stdout, ",%s", grstr(x)); } - fprintf(stdout, "\t\t; #%04X", i); + fprintf(stdout, "\t\t\t\t; #%04X: #%04X #%04X", i, w, adr); i += 2; } else { fprintf(stdout, "\t%s", cmdname); - if(type == R1_R2) { - r1 = (w & 0x00F0) >> 4; - r2 = w & 0x000F; + if(cmdtype == R1_R2) { + r1 = (w & 0x00F0) >> 4; + r2 = w & 0x000F; fprintf(stdout, "\t%s,%s", grstr(r1), grstr(r2)); - } else if(type == R_) { + } else if(cmdtype == R_) { r = (w & 0x00F0) >> 4; fprintf(stdout, "\t%s", grstr(r)); } - fprintf(stdout, "\t\t; #%04X", i++); + fprintf(stdout, "\t\t\t\t; #%04X: #%04X", i++, w); } fprintf(stdout, "\n"); } fprintf(stdout, "\tEND\n"); free_code_cmdtype(); + fclose(fp); return stat; } diff --git a/src/dump.c b/src/dump.c index 70d4e2e..f9daf35 100644 --- a/src/dump.c +++ b/src/dump.c @@ -32,6 +32,7 @@ void dspregister() for(i = 0; i < GRSIZE; i++ ) { fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i); print_dumpword(sys->cpu->gr[i], (&execmode)->logical); + fprintf(stdout, "\n"); } fprintf(stdout, "#%04X: SP: %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, sp = word2bit(sys->cpu->sp)); diff --git a/src/dumpword.c b/src/dumpword.c index 0c75337..ad3564e 100644 --- a/src/dumpword.c +++ b/src/dumpword.c @@ -64,5 +64,6 @@ int main(int argc, char *argv[]) } fprintf(stdout, "%6s: ", argv[optind]); print_dumpword(word, logicalmode); + fprintf(stdout, "\n"); return 0; } diff --git a/src/exec.c b/src/exec.c index a447aa7..3ef778d 100644 --- a/src/exec.c +++ b/src/exec.c @@ -345,21 +345,43 @@ void suba_r1_r2() sys->cpu->pr += 1; } -void addl(WORD r, WORD val) +void addl_subl_flagset(long val) { - long tmp; sys->cpu->fr = 0x0; - if((tmp = sys->cpu->gr[r] + val) < 0 || tmp > 65535) { + if(val > 65535) { sys->cpu->fr += OF; } - if(((sys->cpu->gr[r] = (WORD)(tmp & 0xFFFF)) & 0x8000) == 0x8000) { + if(((WORD)(val) & 0x8000) == 0x8000) { sys->cpu->fr += SF; - } else if(sys->cpu->gr[r] == 0x0) { + } else if(val == 0x0) { sys->cpu->fr += ZF; } } +void addl(WORD r, WORD val) +{ + long s; + + s = sys->cpu->gr[r] + val; + sys->cpu->gr[r] = (WORD)s; + addl_subl_flagset(s); +} + +void subl(WORD r, WORD val) +{ + long s; + + if((s = sys->cpu->gr[r] + (~val + 1)) > 0x10000) { + s -= 0x10000; + } + sys->cpu->gr[r] = (WORD)s; + addl_subl_flagset(s); + if(r < val) { + sys->cpu->fr += OF; + } +} + void addl_r_adr_x() { WORD w[2]; @@ -382,7 +404,7 @@ void subl_r_adr_x() WORD w[2]; w[0] = sys->memory[sys->cpu->pr]; w[1] = sys->memory[sys->cpu->pr + 1]; - addl(get_r_r1(w[0]), ~(get_val_adr_x(w[1], w[0])) + 1); + subl(get_r_r1(w[0]), (get_val_adr_x(w[1], w[0]))); sys->cpu->pr += 2; } @@ -390,7 +412,7 @@ void subl_r1_r2() { WORD w[1]; w[0] = sys->memory[sys->cpu->pr]; - addl(get_r_r1(w[0]), ~(sys->cpu->gr[get_x_r2(w[0])]) + 1); + subl(get_r_r1(w[0]), (sys->cpu->gr[get_x_r2(w[0])])); sys->cpu->pr += 1; } diff --git a/src/word.c b/src/word.c index 6f43dc1..64e9f55 100644 --- a/src/word.c +++ b/src/word.c @@ -149,6 +149,5 @@ void print_dumpword(WORD word, bool logicalmode) } else if(word == '\t') { fprintf(stdout, " = \'\\t\'"); } - fprintf(stdout, "\n"); FREE(b); } diff --git a/test/system/Makefile b/test/system/Makefile index cb6f2a9..3436644 100644 --- a/test/system/Makefile +++ b/test/system/Makefile @@ -1,5 +1,5 @@ # è¤æ°ã®åãã£ã¬ã¯ããªã¼ã§makeãå®è¡ -CMD = casl2_smoke casl2_opt casl2_cmd casl2_err casl2_lib comet2_smoke comet2_opt comet2_cmd comet2_err comet2_lib dumpword +CMD = casl2_smoke casl2_opt casl2_cmd casl2_err casl2_lib comet2_smoke comet2_opt comet2_cmd comet2_err comet2_lib disassemble dumpword define make_dirs $(foreach d,$1,$(MAKE) -sC $d $2) endef diff --git a/test/system/casl2_cmd/cmd_addl_r_adr__as1/0.txt b/test/system/casl2_cmd/cmd_addl_r_adr__as1/0.txt index c8ebb33..d3b765f 100644 --- a/test/system/casl2_cmd/cmd_addl_r_adr__as1/0.txt +++ b/test/system/casl2_cmd/cmd_addl_r_adr__as1/0.txt @@ -1,4 +1,4 @@ -;;; ADDL r,adr æ¼ç®çµæãè² æ°(r < adr) +;;; ADDL r,adr MAIN START LD GR1,A ADDL GR1,B @@ -10,7 +10,7 @@ B DC #000A ; 10 Assemble ../../../../as/cmd/ADDL/addl_r_adr__as1.casl (0) Assemble ../../../../as/cmd/ADDL/addl_r_adr__as1.casl (1) -../../../../as/cmd/ADDL/addl_r_adr__as1.casl: 1:;;; ADDL r,adr æ¼ç®çµæãè² æ°(r < adr) +../../../../as/cmd/ADDL/addl_r_adr__as1.casl: 1:;;; ADDL r,adr ../../../../as/cmd/ADDL/addl_r_adr__as1.casl: 2:MAIN START ../../../../as/cmd/ADDL/addl_r_adr__as1.casl: 3: LD GR1,A #0000 #1010 @@ -44,7 +44,7 @@ Executing machine codes #0000: 0000: 1010 0005 2210 0006 8100 FFEC 000A 0000 #0002: Register:::: #0002: GR0: 0 = #0000 = 0000000000000000 -#0002: GR1: -20 = #FFEC = 1111111111101100 +#0002: GR1: 65516 = #FFEC = 1111111111101100 #0002: GR2: 0 = #0000 = 0000000000000000 #0002: GR3: 0 = #0000 = 0000000000000000 #0002: GR4: 0 = #0000 = 0000000000000000 @@ -59,7 +59,7 @@ Executing machine codes #0002: 0000: 1010 0005 2210 0006 8100 FFEC 000A 0000 #0004: Register:::: #0004: GR0: 0 = #0000 = 0000000000000000 -#0004: GR1: -10 = #FFF6 = 1111111111110110 +#0004: GR1: 65526 = #FFF6 = 1111111111110110 #0004: GR2: 0 = #0000 = 0000000000000000 #0004: GR3: 0 = #0000 = 0000000000000000 #0004: GR4: 0 = #0000 = 0000000000000000 @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 010 +#0004: FR (OF SF ZF): 110 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2210 0006 8100 FFEC 000A 0000 diff --git a/test/system/casl2_cmd/cmd_addl_r_adr__as1/cmd b/test/system/casl2_cmd/cmd_addl_r_adr__as1/cmd index 1bcf0e9..d41bc25 100755 --- a/test/system/casl2_cmd/cmd_addl_r_adr__as1/cmd +++ b/test/system/casl2_cmd/cmd_addl_r_adr__as1/cmd @@ -1,2 +1,2 @@ cat ../../../../as/cmd/ADDL/addl_r_adr__as1.casl -../../../../casl2 -atd -M8 ../../../../as/cmd/ADDL/addl_r_adr__as1.casl +../../../../casl2 -aTd -M8 ../../../../as/cmd/ADDL/addl_r_adr__as1.casl diff --git a/test/system/casl2_cmd/cmd_addl_r_adr__az/0.txt b/test/system/casl2_cmd/cmd_addl_r_adr__az/0.txt index 69618fa..3e4554c 100644 --- a/test/system/casl2_cmd/cmd_addl_r_adr__az/0.txt +++ b/test/system/casl2_cmd/cmd_addl_r_adr__az/0.txt @@ -3,7 +3,7 @@ MAIN START LD GR1,A ADDL GR1,B RET -A DC #FFF6 ; -10 +A DC #FFF6 ; 65526 B DC 10 END @@ -20,7 +20,7 @@ Assemble ../../../../as/cmd/ADDL/addl_r_adr__az.casl (1) #0003 #0006 ../../../../as/cmd/ADDL/addl_r_adr__az.casl: 5: RET #0004 #8100 -../../../../as/cmd/ADDL/addl_r_adr__az.casl: 6:A DC #FFF6 ; -10 +../../../../as/cmd/ADDL/addl_r_adr__az.casl: 6:A DC #FFF6 ; 65526 #0005 #FFF6 ../../../../as/cmd/ADDL/addl_r_adr__az.casl: 7:B DC 10 #0006 #000A @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 101 +#0004: FR (OF SF ZF): 100 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2210 0006 8100 FFF6 000A 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r1_r2/0.txt b/test/system/casl2_cmd/cmd_subl_r1_r2/0.txt index 1be84b7..56de451 100644 --- a/test/system/casl2_cmd/cmd_subl_r1_r2/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r1_r2/0.txt @@ -89,7 +89,7 @@ Executing machine codes #0005: GR7: 0 = #0000 = 0000000000000000 #0005: SP: 16 = #0010 = 0000000000010000 #0005: PR: 5 = #0005 = 0000000000000101 -#0005: FR (OF SF ZF): 100 +#0005: FR (OF SF ZF): 000 #0005: Memory:::: #0005: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F #0005: 0000: 1010 0006 1020 0007 2712 8100 0003 0001 0000 0000 0000 0000 0000 0000 0000 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr/0.txt index 035b608..08ac601 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr/0.txt @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 100 +#0004: FR (OF SF ZF): 000 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2310 0006 8100 0003 0001 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr__ao/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr__ao/0.txt index 5176e36..96dbb9f 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr__ao/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr__ao/0.txt @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 010 +#0004: FR (OF SF ZF): 110 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2310 0006 8100 7FFE FFF6 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr__as0/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr__as0/0.txt index c52633a..8fcd52e 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr__as0/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr__as0/0.txt @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 010 +#0004: FR (OF SF ZF): 110 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2310 0006 8100 000A 0014 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr__lo/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr__lo/0.txt index 2e733b3..5c1f890 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr__lo/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr__lo/0.txt @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 010 +#0004: FR (OF SF ZF): 110 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2310 0006 8100 0002 000F 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr__o/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr__o/0.txt index f819ea0..92cbcc6 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr__o/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr__o/0.txt @@ -1,16 +1,16 @@ -;;; SUBL r,adr ãªã¼ãã¼ããã¼ +;;; SUBL r,adr ç®è¡æ¸ç®ã§ã¯ãªã¼ãã¼ããã¼ãè«çæ¼ç®ã§ã¯ãªã¼ãã¼ããã¼ãªã MAIN START LD GR1,A SUBL GR1,B RET -A DC #8002 ; -32766 +A DC #8002 ; 32770 B DC #7FFF ; 32767 END Assemble ../../../../as/cmd/SUBL/subl_r_adr__o.casl (0) Assemble ../../../../as/cmd/SUBL/subl_r_adr__o.casl (1) -../../../../as/cmd/SUBL/subl_r_adr__o.casl: 1:;;; SUBL r,adr ãªã¼ãã¼ããã¼ +../../../../as/cmd/SUBL/subl_r_adr__o.casl: 1:;;; SUBL r,adr ç®è¡æ¸ç®ã§ã¯ãªã¼ãã¼ããã¼ãè«çæ¼ç®ã§ã¯ãªã¼ãã¼ããã¼ãªã ../../../../as/cmd/SUBL/subl_r_adr__o.casl: 2:MAIN START ../../../../as/cmd/SUBL/subl_r_adr__o.casl: 3: LD GR1,A #0000 #1010 @@ -20,7 +20,7 @@ Assemble ../../../../as/cmd/SUBL/subl_r_adr__o.casl (1) #0003 #0006 ../../../../as/cmd/SUBL/subl_r_adr__o.casl: 5: RET #0004 #8100 -../../../../as/cmd/SUBL/subl_r_adr__o.casl: 6:A DC #8002 ; -32766 +../../../../as/cmd/SUBL/subl_r_adr__o.casl: 6:A DC #8002 ; 32770 #0005 #8002 ../../../../as/cmd/SUBL/subl_r_adr__o.casl: 7:B DC #7FFF ; 32767 #0006 #7FFF @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 100 +#0004: FR (OF SF ZF): 000 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2310 0006 8100 8002 7FFF 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr__z/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr__z/0.txt index b8ae6f1..63e7372 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr__z/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr__z/0.txt @@ -68,7 +68,7 @@ Executing machine codes #0004: GR7: 0 = #0000 = 0000000000000000 #0004: SP: 8 = #0008 = 0000000000001000 #0004: PR: 4 = #0004 = 0000000000000100 -#0004: FR (OF SF ZF): 101 +#0004: FR (OF SF ZF): 001 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 #0004: 0000: 1010 0005 2310 0006 8100 FFF6 FFF6 0000 diff --git a/test/system/casl2_cmd/cmd_subl_r_adr_x/0.txt b/test/system/casl2_cmd/cmd_subl_r_adr_x/0.txt index 5ecdef3..794d7d3 100644 --- a/test/system/casl2_cmd/cmd_subl_r_adr_x/0.txt +++ b/test/system/casl2_cmd/cmd_subl_r_adr_x/0.txt @@ -4,8 +4,8 @@ BEGIN LD GR1,A LAD GR2,1 SUBL GR1,A,GR2 RET -A DC 3 - DC 1 +A DC 5 + DC 2 END Assemble ../../../../as/cmd/SUBL/subl_r_adr_x.casl (0) @@ -24,10 +24,10 @@ Assemble ../../../../as/cmd/SUBL/subl_r_adr_x.casl (1) #0005 #0007 ../../../../as/cmd/SUBL/subl_r_adr_x.casl: 6: RET #0006 #8100 -../../../../as/cmd/SUBL/subl_r_adr_x.casl: 7:A DC 3 - #0007 #0003 -../../../../as/cmd/SUBL/subl_r_adr_x.casl: 8: DC 1 - #0008 #0001 +../../../../as/cmd/SUBL/subl_r_adr_x.casl: 7:A DC 5 + #0007 #0005 +../../../../as/cmd/SUBL/subl_r_adr_x.casl: 8: DC 2 + #0008 #0002 ../../../../as/cmd/SUBL/subl_r_adr_x.casl: 9: END Executing machine codes @@ -45,11 +45,11 @@ Executing machine codes #0000: FR (OF SF ZF): 000 #0000: Memory:::: #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F -#0000: 0000: 1010 0007 1220 0001 2312 0007 8100 0003 0001 0000 0000 0000 0000 0000 0000 0000 +#0000: 0000: 1010 0007 1220 0001 2312 0007 8100 0005 0002 0000 0000 0000 0000 0000 0000 0000 #0002: Register:::: #0002: GR0: 0 = #0000 = 0000000000000000 -#0002: GR1: 3 = #0003 = 0000000000000011 +#0002: GR1: 5 = #0005 = 0000000000000101 #0002: GR2: 0 = #0000 = 0000000000000000 #0002: GR3: 0 = #0000 = 0000000000000000 #0002: GR4: 0 = #0000 = 0000000000000000 @@ -61,11 +61,11 @@ Executing machine codes #0002: FR (OF SF ZF): 000 #0002: Memory:::: #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F -#0002: 0000: 1010 0007 1220 0001 2312 0007 8100 0003 0001 0000 0000 0000 0000 0000 0000 0000 +#0002: 0000: 1010 0007 1220 0001 2312 0007 8100 0005 0002 0000 0000 0000 0000 0000 0000 0000 #0004: Register:::: #0004: GR0: 0 = #0000 = 0000000000000000 -#0004: GR1: 3 = #0003 = 0000000000000011 +#0004: GR1: 5 = #0005 = 0000000000000101 #0004: GR2: 1 = #0001 = 0000000000000001 #0004: GR3: 0 = #0000 = 0000000000000000 #0004: GR4: 0 = #0000 = 0000000000000000 @@ -77,11 +77,11 @@ Executing machine codes #0004: FR (OF SF ZF): 000 #0004: Memory:::: #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F -#0004: 0000: 1010 0007 1220 0001 2312 0007 8100 0003 0001 0000 0000 0000 0000 0000 0000 0000 +#0004: 0000: 1010 0007 1220 0001 2312 0007 8100 0005 0002 0000 0000 0000 0000 0000 0000 0000 #0006: Register:::: #0006: GR0: 0 = #0000 = 0000000000000000 -#0006: GR1: 2 = #0002 = 0000000000000010 +#0006: GR1: 3 = #0003 = 0000000000000011 #0006: GR2: 1 = #0001 = 0000000000000001 #0006: GR3: 0 = #0000 = 0000000000000000 #0006: GR4: 0 = #0000 = 0000000000000000 @@ -90,8 +90,8 @@ Executing machine codes #0006: GR7: 0 = #0000 = 0000000000000000 #0006: SP: 16 = #0010 = 0000000000010000 #0006: PR: 6 = #0006 = 0000000000000110 -#0006: FR (OF SF ZF): 100 +#0006: FR (OF SF ZF): 000 #0006: Memory:::: #0006: adr : 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F -#0006: 0000: 1010 0007 1220 0001 2312 0007 8100 0003 0001 0000 0000 0000 0000 0000 0000 0000 +#0006: 0000: 1010 0007 1220 0001 2312 0007 8100 0005 0002 0000 0000 0000 0000 0000 0000 0000 diff --git a/test/system/disassemble/sum_10/0.txt b/test/system/disassemble/sum_10/0.txt index f1bd9f2..4b20b83 100644 --- a/test/system/disassemble/sum_10/0.txt +++ b/test/system/disassemble/sum_10/0.txt @@ -1,16 +1,15 @@ MAIN START - PUSH #0000,GR1 ; #0000 - LAD GR0,#0000 ; #0002 - LD GR1,#0011 ; #0004 - ADDL GR0,GR1 ; #0006 - ADDL GR1,#0013 ; #0007 - CPL GR1,#0012 ; #0009 - JPL #000F ; #000B - JUMP #0006 ; #000D - POP GR1 ; #000F - RET ; #0010 - DC 1 ; #0011 - DC 10 ; #0012 - DC 1 ; #0013 - DC 1 ; #0014 + PUSH #0000,GR1 ; #0000: #7001 #0000 + LAD GR0,#0000 ; #0002: #1200 #0000 + LD GR1,#0011 ; #0004: #1010 #0011 + ADDL GR0,GR1 ; #0006: #2601 + ADDL GR1,#0013 ; #0007: #2210 #0013 + CPL GR1,#0012 ; #0009: #4110 #0012 + JPL #000F ; #000B: #6500 #000F + JUMP #0006 ; #000D: #6400 #0006 + POP GR1 ; #000F: #7110 + RET ; #0010: #8100 + DC 1 ; #0011: #0001 :: 1 = #0001 = 0000000000000001 + DC 10 ; #0012: #000A :: 10 = #000A = 0000000000001010 = '\n' + DC 1 ; #0013: #0001 :: 1 = #0001 = 0000000000000001 END