Mercurial > hg > Members > kono > os9 > sbc09
diff d09.c @ 33:7c5379eb406e
nitors9 version
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Jul 2018 15:22:54 +0900 |
parents | 10e33568b38a |
children | 2032755628dc |
line wrap: on
line diff
--- a/d09.c Sat Jul 14 15:16:39 2018 +0900 +++ b/d09.c Sat Jul 14 15:22:54 2018 +0900 @@ -1304,14 +1304,15 @@ code, postbyte, suffix, op->name, IndexRegister(postbyte)); break; case 0x0c : - offset = (prog[pc+2]+pc+3) & 0xFFFF; + offset = (*(char *)(prog+pc+2)+pc+3) & 0xFFFF; s = "<"; fprintf(fp,"%0.2X %0.2X %0.2X %s%s %s$%0.2X,PCR", code, postbyte, prog[pc+2], suffix, op->name, s, offset+adoffset); extrabytes = 1; break; case 0x0d : - offset = (prog[pc+2] * 256 + prog[pc+3]+pc+4) & 0xFFFF; + offset = prog[pc+2] * 256 + prog[pc+3]; + offset = ((offset>0x7fff?offset-0x8001 : offset )+pc+4) & 0xFFFF; s = ">"; fprintf(fp,"%0.2X %0.2X %0.2X %0.2X %s%s %s$%0.4X,PCR", code, postbyte, prog[pc+2], prog[pc+3], suffix, op->name, s, offset+adoffset); @@ -1384,14 +1385,15 @@ code, postbyte, suffix, op->name, IndexRegister(postbyte)); break; case 0x1c : - offset = (prog[pc+2]+pc+3) & 0xFFFF; + offset = (*((char*)prog+pc+2)+pc+3) & 0xFFFF; s = "<"; fprintf(fp,"%0.2X %0.2X %0.2X %s%s [%s$%0.2X,PCR]", code, postbyte, prog[pc+2], suffix, op->name, s, offset+adoffset); extrabytes = 1; break; case 0x1d : - offset = (prog[pc+2] * 256 + prog[pc+3]+pc+4) & 0xFFFF; + offset = prog[pc+2] * 256 + prog[pc+3]; + offset = ((offset>0x7fff?offset-0x8001 : offset )+pc+4) & 0xFFFF; s = ">"; fprintf(fp,"%0.2X %0.2X %0.2X %0.2X %s%s [%s$%0.4X,PCR]", code, postbyte, prog[pc+2], prog[pc+3], suffix, op->name, s, offset+adoffset);