cpu 46 include/struct.h CPU *cpu; /**<CPU */ cpu 9 src/dump.c fprintf(stdout, "#%04X: adr :", sys->cpu->pr); cpu 22 src/dump.c fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i); cpu 40 src/dump.c char *sp = word2bit(sys->cpu->sp); cpu 41 src/dump.c char *pr = word2bit(sys->cpu->pr); cpu 42 src/dump.c char *fr = word2bit(sys->cpu->fr); cpu 47 src/dump.c fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i); cpu 48 src/dump.c print_dumpword(sys->cpu->gr[i], execmode.logical); cpu 51 src/dump.c fprintf(stdout, "#%04X: SP: %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, sp); cpu 52 src/dump.c fprintf(stdout, "#%04X: PR: %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, pr); cpu 53 src/dump.c fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n", sys->cpu->pr, fr + L3BIT); /* FRは下位3けたを表示 */ cpu 103 src/exec.c sys->memory[sys->cpu->gr[1]] = sys->memory[sys->cpu->gr[2]] = 0x0; cpu 111 src/exec.c if(sys->cpu->gr[1] + i > execptr->end) { cpu 115 src/exec.c sys->memory[sys->cpu->gr[1] + i] = buf[i]; cpu 117 src/exec.c sys->memory[sys->cpu->gr[2]] = i + 1; cpu 126 src/exec.c for(i = 0; i < sys->memory[sys->cpu->gr[2]]; i++) { cpu 127 src/exec.c if(sys->cpu->gr[1] + i > execptr->end) { cpu 134 src/exec.c if(((w = sys->memory[sys->cpu->gr[1]+i]) >= 0x20 && w <= 0x7E) || /* JIS X 0201ラテン文字 */ cpu 147 src/exec.c sys->cpu->fr = 0x0; cpu 150 src/exec.c sys->cpu->fr += SF; cpu 154 src/exec.c sys->cpu->fr += ZF; cpu 164 src/exec.c setcerr(205, s = pr2str(sys->cpu->pr)); /* r/r1 in word #1 - not GR */ cpu 177 src/exec.c setcerr(206, s = pr2str(sys->cpu->pr)); /* r/r1 in word #1 - not GR */ cpu 190 src/exec.c a += sys->cpu->gr[x]; cpu 201 src/exec.c setcerr(207, s = pr2str(sys->cpu->pr + 1)); /* address in word #2 - out of memory */ cpu 216 src/exec.c sys->cpu->pr += 1; cpu 221 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 222 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] = get_val_adr_x(w[1], w[0])); cpu 223 src/exec.c sys->cpu->pr += 2; cpu 228 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 229 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] = sys->cpu->gr[get_x_r2(w[0])]); cpu 230 src/exec.c sys->cpu->pr += 1; cpu 235 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 236 src/exec.c sys->memory[get_adr_x(w[1], w[0])] = sys->cpu->gr[get_r_r1(w[0])]; cpu 237 src/exec.c sys->cpu->pr += 2; cpu 242 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 243 src/exec.c sys->cpu->gr[get_r_r1(w[0])] = get_adr_x(w[1], w[0]); cpu 244 src/exec.c sys->cpu->pr += 2; cpu 251 src/exec.c sys->cpu->fr = 0x0; cpu 254 src/exec.c if((tmp = (short)(sys->cpu->gr[r]) + (short)val) > 32767 || tmp < -32768) { cpu 255 src/exec.c sys->cpu->fr += OF; cpu 258 src/exec.c sys->cpu->gr[r] = (WORD)(tmp & 0xFFFF); cpu 259 src/exec.c if((sys->cpu->gr[r] & 0x8000) == 0x8000) { cpu 260 src/exec.c sys->cpu->fr += SF; cpu 261 src/exec.c } else if(sys->cpu->gr[r] == 0x0) { cpu 262 src/exec.c sys->cpu->fr += ZF; cpu 268 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 270 src/exec.c sys->cpu->pr += 2; cpu 275 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 276 src/exec.c adda(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]); cpu 277 src/exec.c sys->cpu->pr += 1; cpu 282 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 284 src/exec.c sys->cpu->pr += 2; cpu 289 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 290 src/exec.c adda(get_r_r1(w[0]), ~(sys->cpu->gr[get_x_r2(w[0])]) + 1); cpu 291 src/exec.c sys->cpu->pr += 1; cpu 299 src/exec.c o = sys->cpu->gr[r]; cpu 300 src/exec.c sys->cpu->fr = 0; /* flag initialize */ cpu 305 src/exec.c sys->cpu->fr += OF; cpu 309 src/exec.c sys->cpu->fr += OF; cpu 316 src/exec.c sys->cpu->gr[r] = (WORD)s; cpu 319 src/exec.c sys->cpu->fr += SF; cpu 322 src/exec.c sys->cpu->fr += ZF; cpu 328 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 330 src/exec.c sys->cpu->pr += 2; cpu 335 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 336 src/exec.c addl_gr(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])], true); cpu 337 src/exec.c sys->cpu->pr += 1; cpu 342 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 344 src/exec.c sys->cpu->pr += 2; cpu 349 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 350 src/exec.c addl_gr(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])], false); cpu 351 src/exec.c sys->cpu->pr += 1; cpu 356 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 357 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] &= get_val_adr_x(w[1], w[0])); cpu 358 src/exec.c sys->cpu->pr += 2; cpu 363 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 364 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] &= sys->cpu->gr[get_x_r2(w[0])]); cpu 365 src/exec.c sys->cpu->pr += 1; cpu 370 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 371 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] |= get_val_adr_x(w[1], w[0])); cpu 372 src/exec.c sys->cpu->pr += 2; cpu 377 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 378 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] |= sys->cpu->gr[get_x_r2(w[0])]); cpu 379 src/exec.c sys->cpu->pr += 1; cpu 384 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 385 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] ^= get_val_adr_x(w[1], w[0])); cpu 386 src/exec.c sys->cpu->pr += 2; cpu 391 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 392 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] ^= sys->cpu->gr[get_x_r2(w[0])]); cpu 393 src/exec.c sys->cpu->pr += 1; cpu 398 src/exec.c sys->cpu->fr = 0; cpu 399 src/exec.c if((short)sys->cpu->gr[r] < (short)val) { cpu 400 src/exec.c sys->cpu->fr = SF; cpu 401 src/exec.c } else if(sys->cpu->gr[r] == val) { cpu 402 src/exec.c sys->cpu->fr = ZF; cpu 408 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 410 src/exec.c sys->cpu->pr += 2; cpu 415 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 416 src/exec.c cpa(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]); cpu 417 src/exec.c sys->cpu->pr += 1; cpu 422 src/exec.c sys->cpu->fr = 0x0; cpu 423 src/exec.c if(sys->cpu->gr[r] < val) { cpu 424 src/exec.c sys->cpu->fr = SF; cpu 425 src/exec.c } else if(sys->cpu->gr[r] == val) { cpu 426 src/exec.c sys->cpu->fr = ZF; cpu 432 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 434 src/exec.c sys->cpu->pr += 2; cpu 439 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 440 src/exec.c cpl(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]); cpu 441 src/exec.c sys->cpu->pr += 1; cpu 446 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 448 src/exec.c WORD sign = sys->cpu->gr[r] & 0x8000; cpu 451 src/exec.c sys->cpu->fr = 0; cpu 452 src/exec.c sys->cpu->gr[r] &= 0x7FFF; cpu 454 src/exec.c last = sys->cpu->gr[r] & 0x4000; cpu 455 src/exec.c sys->cpu->gr[r] <<= 1; cpu 457 src/exec.c sys->cpu->gr[r] = sign | (sys->cpu->gr[r] & 0x7FFF); cpu 460 src/exec.c sys->cpu->fr += OF; cpu 464 src/exec.c sys->cpu->fr += SF; cpu 467 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 468 src/exec.c sys->cpu->fr += ZF; cpu 470 src/exec.c sys->cpu->pr += 2; cpu 475 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 477 src/exec.c WORD sign = sys->cpu->gr[r] & 0x8000; cpu 480 src/exec.c sys->cpu->fr = 0; cpu 481 src/exec.c sys->cpu->gr[r] &= 0x7FFF; cpu 483 src/exec.c last = sys->cpu->gr[r] & 0x1; cpu 484 src/exec.c sys->cpu->gr[r] >>= 1; cpu 486 src/exec.c sys->cpu->gr[r] |= 0x4000; cpu 489 src/exec.c sys->cpu->gr[r] = sign | sys->cpu->gr[r]; cpu 492 src/exec.c sys->cpu->fr += OF; cpu 496 src/exec.c sys->cpu->fr += SF; cpu 499 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 500 src/exec.c sys->cpu->fr += ZF; cpu 502 src/exec.c sys->cpu->pr += 2; cpu 507 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 511 src/exec.c sys->cpu->fr = 0x0; cpu 513 src/exec.c last = sys->cpu->gr[r] & 0x8000; cpu 514 src/exec.c sys->cpu->gr[r] <<= 1; cpu 518 src/exec.c sys->cpu->fr += OF; cpu 521 src/exec.c if((sys->cpu->gr[r] & 0x8000) > 0x0) { cpu 522 src/exec.c sys->cpu->fr += SF; cpu 525 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 526 src/exec.c sys->cpu->fr += ZF; cpu 528 src/exec.c sys->cpu->pr += 2; cpu 533 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 537 src/exec.c sys->cpu->fr = 0x0; cpu 539 src/exec.c last = sys->cpu->gr[r] & 0x0001; cpu 540 src/exec.c sys->cpu->gr[r] >>= 1; cpu 544 src/exec.c sys->cpu->fr += OF; cpu 547 src/exec.c if((sys->cpu->gr[r] & 0x8000) > 0x0) { cpu 548 src/exec.c sys->cpu->fr += SF; cpu 551 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 552 src/exec.c sys->cpu->fr += ZF; cpu 554 src/exec.c sys->cpu->pr += 2; cpu 559 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 560 src/exec.c if((sys->cpu->fr & (SF | ZF)) == 0) { cpu 561 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 563 src/exec.c sys->cpu->pr += 2; cpu 569 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 570 src/exec.c if((sys->cpu->fr & SF) > 0) { cpu 571 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 573 src/exec.c sys->cpu->pr += 2; cpu 579 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 580 src/exec.c if((sys->cpu->fr & ZF) == 0) { cpu 581 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 583 src/exec.c sys->cpu->pr += 2; cpu 589 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 590 src/exec.c if((sys->cpu->fr & ZF) > 0) { cpu 591 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 593 src/exec.c sys->cpu->pr += 2; cpu 599 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 600 src/exec.c if((sys->cpu->fr & OF) > 0) { cpu 601 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 603 src/exec.c sys->cpu->pr += 2; cpu 609 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 610 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 615 src/exec.c assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); cpu 616 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 617 src/exec.c sys->memory[--(sys->cpu->sp)] = get_adr_x(w[1], w[0]); cpu 618 src/exec.c sys->cpu->pr += 2; cpu 623 src/exec.c assert(sys->cpu->sp > execptr->end); cpu 624 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 627 src/exec.c if(sys->cpu->sp >= sys->memsize) { cpu 628 src/exec.c setcerr(203, s = pr2str(sys->cpu->pr)); /* Stack Pointer (SP) - stack underflow */ cpu 631 src/exec.c sys->cpu->gr[get_r_r1(w[0])] = sys->memory[(sys->cpu->sp)++]; cpu 632 src/exec.c sys->cpu->pr += 1; cpu 638 src/exec.c assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); cpu 639 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 640 src/exec.c sys->memory[--(sys->cpu->sp)] = sys->cpu->pr + 1; cpu 641 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 646 src/exec.c assert(sys->cpu->sp <= sys->memsize); cpu 647 src/exec.c if(sys->cpu->sp == sys->memsize) { cpu 649 src/exec.c } else if(sys->cpu->sp < sys->memsize) { cpu 650 src/exec.c sys->cpu->pr = sys->memory[(sys->cpu->sp)++] + 1; cpu 656 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 669 src/exec.c sys->cpu->pr += 2; cpu 686 src/exec.c for (sys->cpu->pr = execptr->start; ; ) { cpu 690 src/exec.c fprintf(stdout, "#%04X: Register::::\n", sys->cpu->pr); cpu 694 src/exec.c fprintf(stdout, "#%04X: Memory::::\n", sys->cpu->pr); cpu 701 src/exec.c (execmode.monitor == true && sys->cpu->pr == execptr->start) || cpu 702 src/exec.c execmode.step == true || getbps(sys->cpu->pr) == true) cpu 704 src/exec.c if(sys->cpu->pr == execptr->start) { cpu 710 src/exec.c if(sys->cpu->pr >= sys->memsize) { cpu 711 src/exec.c setcerr(201, s = pr2str(sys->cpu->pr)); /* Program Register (PR) - memory overflow */ cpu 715 src/exec.c if(sys->cpu->sp <= execptr->end) { cpu 716 src/exec.c setcerr(202, s = pr2str(sys->cpu->pr)); /* Stack Pointer (SP) - stack overflow */ cpu 721 src/exec.c if((cmdptr = getcmdptr(sys->memory[sys->cpu->pr] & 0xFF00)) == NULL) { cpu 722 src/exec.c setcerr(204, s = pr2str(sys->cpu->pr)); /* OP in word #1 - not command code */ cpu 327 src/monitor.c fprintf(stdout, "#%04X: Register::::\n", sys->cpu->pr); cpu 337 src/monitor.c fprintf(stdout, "#%04X: Register::::\n", sys->cpu->pr); cpu 263 src/struct.c sys->cpu = malloc_chk(sizeof(CPU), "cpu"); cpu 265 src/struct.c sys->cpu->gr[i] = 0x0; cpu 267 src/struct.c sys->cpu->sp = sys->memsize; /* スタックポインタ */ cpu 268 src/struct.c sys->cpu->pr = 0x0; /* プログラムレジスタ */ cpu 269 src/struct.c sys->cpu->fr = 0x0; /* フラグレジスタ */ cpu 282 src/struct.c FREE(sys->cpu);