Mercurial > hg > Members > kono > os9 > sbc09
comparison os9/os9disass.c @ 8:96a067cf4c4f
level2 rom done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 05 Jul 2018 12:07:06 +0900 |
parents | 3c736a81b886 |
children | 111e5defb8ab |
comparison
equal
deleted
inserted
replaced
7:a6db579d8c11 | 8:96a067cf4c4f |
---|---|
1108 char *suffix; | 1108 char *suffix; |
1109 { | 1109 { |
1110 int offset; | 1110 int offset; |
1111 | 1111 |
1112 offset = prog[pc+1]; | 1112 offset = prog[pc+1]; |
1113 fprintf(fp,"%0.2X %0.2X %s%s $%0.2X", | 1113 fprintf(fp,"%0.2X %0.2X %s%s <$%0.2X", |
1114 code, offset, suffix, op->name, offset); | 1114 code, offset, suffix, op->name, offset); |
1115 return op->bytes; | 1115 return op->bytes; |
1116 } | 1116 } |
1117 | 1117 |
1118 #pragma argsused | 1118 #pragma argsused |
1305 break; | 1305 break; |
1306 case 0x0c : | 1306 case 0x0c : |
1307 offset = (prog[pc+2]+pc+3) & 0xFFFF; | 1307 offset = (prog[pc+2]+pc+3) & 0xFFFF; |
1308 s = "<"; | 1308 s = "<"; |
1309 fprintf(fp,"%0.2X %0.2X %0.2X %s%s %s$%0.2X,PCR", | 1309 fprintf(fp,"%0.2X %0.2X %0.2X %s%s %s$%0.2X,PCR", |
1310 code, postbyte, prog[pc+2], suffix, op->name, s, pc+3+offset+adoffset); | 1310 code, postbyte, prog[pc+2], suffix, op->name, s, offset+adoffset); |
1311 extrabytes = 1; | 1311 extrabytes = 1; |
1312 break; | 1312 break; |
1313 case 0x0d : | 1313 case 0x0d : |
1314 offset = (prog[pc+2] * 256 + prog[pc+3]+pc+4) & 0xFFFF; | 1314 offset = (prog[pc+2] * 256 + prog[pc+3]+pc+4) & 0xFFFF; |
1315 s = ">"; | 1315 s = ">"; |
1316 fprintf(fp,"%0.2X %0.2X %0.2X %0.2X %s%s %s$%0.4X,PCR", | 1316 fprintf(fp,"%0.2X %0.2X %0.2X %0.2X %s%s %s$%0.4X,PCR", |
1317 code, postbyte, prog[pc+2], prog[pc+3], suffix, op->name, s, offset+pc+4+adoffset); | 1317 code, postbyte, prog[pc+2], prog[pc+3], suffix, op->name, s, offset+adoffset); |
1318 extrabytes = 2; | 1318 extrabytes = 2; |
1319 break; | 1319 break; |
1320 case 0x0e : | 1320 case 0x0e : |
1321 break; | 1321 break; |
1322 case 0x0f : | 1322 case 0x0f : |
1385 break; | 1385 break; |
1386 case 0x1c : | 1386 case 0x1c : |
1387 offset = (prog[pc+2]+pc+3) & 0xFFFF; | 1387 offset = (prog[pc+2]+pc+3) & 0xFFFF; |
1388 s = "<"; | 1388 s = "<"; |
1389 fprintf(fp,"%0.2X %0.2X %0.2X %s%s [%s$%0.2X,PCR]", | 1389 fprintf(fp,"%0.2X %0.2X %0.2X %s%s [%s$%0.2X,PCR]", |
1390 code, postbyte, prog[pc+2], suffix, op->name, s, offset+pc+2+adoffset); | 1390 code, postbyte, prog[pc+2], suffix, op->name, s, offset+adoffset); |
1391 extrabytes = 1; | 1391 extrabytes = 1; |
1392 break; | 1392 break; |
1393 case 0x1d : | 1393 case 0x1d : |
1394 offset = (prog[pc+2] * 256 + prog[pc+3]+pc+4) & 0xFFFF; | 1394 offset = (prog[pc+2] * 256 + prog[pc+3]+pc+4) & 0xFFFF; |
1395 s = ">"; | 1395 s = ">"; |
1396 fprintf(fp,"%0.2X %0.2X %0.2X %0.2X %s%s [%s$%0.4X,PCR]", | 1396 fprintf(fp,"%0.2X %0.2X %0.2X %0.2X %s%s [%s$%0.4X,PCR]", |
1397 code, postbyte, prog[pc+2], prog[pc+3], suffix, op->name, s, offset+pc+3+adoffset); | 1397 code, postbyte, prog[pc+2], prog[pc+3], suffix, op->name, s, offset+adoffset); |
1398 extrabytes = 2; | 1398 extrabytes = 2; |
1399 break; | 1399 break; |
1400 case 0x1e : | 1400 case 0x1e : |
1401 break; | 1401 break; |
1402 case 0x1f : | 1402 case 0x1f : |
1637 fprintf(stderr, " where start and end are in hex.\n"); | 1637 fprintf(stderr, " where start and end are in hex.\n"); |
1638 exit(1); | 1638 exit(1); |
1639 } | 1639 } |
1640 | 1640 |
1641 sscanf(argv[2],"%x",&start); start -= adoffset; | 1641 sscanf(argv[2],"%x",&start); start -= adoffset; |
1642 sscanf(argv[3],"%x",&end); end -= adoffset; | 1642 sscanf(argv[3],"%x",&end); end -= adoffset; |
1643 printf("disass %x - %x\n",start,end); | |
1643 | 1644 |
1644 fp = stdout; | 1645 fp = stdout; |
1645 | 1646 |
1646 fd = open(argv[1], O_RDONLY, S_IREAD|S_IWRITE); | 1647 fd = open(argv[1], O_RDONLY, S_IREAD|S_IWRITE); |
1647 size = read(fd, &prog[0x0000], 0xffff); | 1648 size = read(fd, &prog[0x0000], 0xffff); |