cpu 49 include/struct.h CPU *cpu; /**<CPU */ cpu 11 src/dump.c fprintf(stdout, "#%04X: adr :", sys->cpu->pr); cpu 24 src/dump.c fprintf(stdout, "#%04X: %04X: ", sys->cpu->pr, i); cpu 42 src/dump.c char *sp = word2bit(sys->cpu->sp); cpu 43 src/dump.c char *pr = word2bit(sys->cpu->pr); cpu 44 src/dump.c char *fr = word2bit(sys->cpu->fr); cpu 49 src/dump.c fprintf(stdout, "#%04X: GR%d: ", sys->cpu->pr, i); cpu 50 src/dump.c print_dumpword(sys->cpu->gr[i], execmode.logical); cpu 53 src/dump.c fprintf(stdout, "#%04X: SP: %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->sp, sys->cpu->sp, sp); cpu 54 src/dump.c fprintf(stdout, "#%04X: PR: %6d = #%04X = %s\n", sys->cpu->pr, sys->cpu->pr, sys->cpu->pr, pr); cpu 55 src/dump.c fprintf(stdout, "#%04X: FR (OF SF ZF): %s\n", sys->cpu->pr, fr + L3BIT); /* FRは下位3けたを表示 */ cpu 64 src/dump.c if(sys->cpu->pr == execptr->start && execmode.reverse == true) { /* reverseオプション指定時、スタート時にプログラム全体を逆アセンブル */ cpu 68 src/dump.c fprintf(stdout, "#%04X: Register::::\n", sys->cpu->pr); cpu 72 src/dump.c fprintf(stdout, "#%04X: Memory::::\n", sys->cpu->pr); cpu 76 src/dump.c fprintf(stdout, "#%04X: Disassemble::::", sys->cpu->pr); cpu 77 src/dump.c disassemble_memory(sys->memory, sys->cpu->pr, sys->cpu->pr + code2cmdwordlen(sys->memory[sys->cpu->pr] & 0xFF00) - 1); cpu 114 src/exec.c sys->memory[sys->cpu->gr[1]] = 0x0; cpu 115 src/exec.c sys->memory[sys->cpu->gr[2]] = 0xFFFF; cpu 123 src/exec.c if(sys->cpu->gr[1] + i >= execptr->end) { cpu 127 src/exec.c sys->memory[sys->cpu->gr[1] + i] = buf[i]; cpu 128 src/exec.c sys->memory[sys->cpu->gr[2]] = i + 1; cpu 138 src/exec.c for(i = 0; i < sys->memory[sys->cpu->gr[2]]; i++) { cpu 139 src/exec.c if(sys->cpu->gr[1] + i >= execptr->end) { cpu 146 src/exec.c if(((w = sys->memory[sys->cpu->gr[1]+i]) >= 0x20 && w <= 0x7E) || /* JIS X 0201ラテン文字 */ cpu 159 src/exec.c sys->cpu->fr = 0x0; cpu 162 src/exec.c sys->cpu->fr += SF; cpu 166 src/exec.c sys->cpu->fr += ZF; cpu 176 src/exec.c setcerr(205, s = pr2str(sys->cpu->pr)); /* r/r1 in word #1 - not GR */ cpu 189 src/exec.c setcerr(206, s = pr2str(sys->cpu->pr)); /* r/r1 in word #1 - not GR */ cpu 202 src/exec.c a += sys->cpu->gr[x]; cpu 213 src/exec.c setcerr(207, s = pr2str(sys->cpu->pr + 1)); /* address in word #2 - out of memory */ cpu 228 src/exec.c sys->cpu->pr += getcmdwordlen("NOP", NONE); cpu 233 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 234 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] = get_val_adr_x(w[1], w[0])); cpu 235 src/exec.c sys->cpu->pr += getcmdwordlen("LD", R_ADR_X); cpu 240 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 241 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] = sys->cpu->gr[get_x_r2(w[0])]); cpu 242 src/exec.c sys->cpu->pr += getcmdwordlen("LD", R1_R2); cpu 247 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 248 src/exec.c sys->memory[get_adr_x(w[1], w[0])] = sys->cpu->gr[get_r_r1(w[0])]; cpu 249 src/exec.c sys->cpu->pr += getcmdwordlen("ST", R_ADR_X); cpu 254 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 255 src/exec.c sys->cpu->gr[get_r_r1(w[0])] = get_adr_x(w[1], w[0]); cpu 256 src/exec.c sys->cpu->pr += getcmdwordlen("LAD", R_ADR_X); cpu 263 src/exec.c sys->cpu->fr = 0x0; cpu 266 src/exec.c if((tmp = (short)(sys->cpu->gr[r]) + (short)val) > 32767 || tmp < -32768) { cpu 267 src/exec.c sys->cpu->fr += OF; cpu 270 src/exec.c sys->cpu->gr[r] = (WORD)(tmp & 0xFFFF); cpu 271 src/exec.c if((sys->cpu->gr[r] & 0x8000) == 0x8000) { cpu 272 src/exec.c sys->cpu->fr += SF; cpu 273 src/exec.c } else if(sys->cpu->gr[r] == 0x0) { cpu 274 src/exec.c sys->cpu->fr += ZF; cpu 280 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 282 src/exec.c sys->cpu->pr += getcmdwordlen("ADDA", R_ADR_X); cpu 287 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 288 src/exec.c adda(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]); cpu 289 src/exec.c sys->cpu->pr += getcmdwordlen("ADDA", R1_R2); cpu 294 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 296 src/exec.c sys->cpu->pr += getcmdwordlen("SUBA", R_ADR_X); cpu 301 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 302 src/exec.c adda(get_r_r1(w[0]), ~(sys->cpu->gr[get_x_r2(w[0])]) + 1); cpu 303 src/exec.c sys->cpu->pr += getcmdwordlen("SUBA", R1_R2); cpu 311 src/exec.c o = sys->cpu->gr[r]; cpu 312 src/exec.c sys->cpu->fr = 0; /* flag initialize */ cpu 317 src/exec.c sys->cpu->fr += OF; cpu 321 src/exec.c sys->cpu->fr += OF; cpu 328 src/exec.c sys->cpu->gr[r] = (WORD)s; cpu 331 src/exec.c sys->cpu->fr += SF; cpu 334 src/exec.c sys->cpu->fr += ZF; cpu 340 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 342 src/exec.c sys->cpu->pr += getcmdwordlen("ADDL", R_ADR_X); cpu 347 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 348 src/exec.c addl_gr(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])], true); cpu 349 src/exec.c sys->cpu->pr += getcmdwordlen("ADDL", R1_R2); cpu 354 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 356 src/exec.c sys->cpu->pr += getcmdwordlen("SUBL", R_ADR_X); cpu 361 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 362 src/exec.c addl_gr(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])], false); cpu 363 src/exec.c sys->cpu->pr += getcmdwordlen("SUBL", R1_R2); cpu 368 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 369 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] &= get_val_adr_x(w[1], w[0])); cpu 370 src/exec.c sys->cpu->pr += getcmdwordlen("AND", R_ADR_X); cpu 375 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 376 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] &= sys->cpu->gr[get_x_r2(w[0])]); cpu 377 src/exec.c sys->cpu->pr += getcmdwordlen("AND", R1_R2); cpu 382 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 383 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] |= get_val_adr_x(w[1], w[0])); cpu 384 src/exec.c sys->cpu->pr += getcmdwordlen("OR", R_ADR_X); cpu 389 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 390 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] |= sys->cpu->gr[get_x_r2(w[0])]); cpu 391 src/exec.c sys->cpu->pr += getcmdwordlen("OR", R1_R2); cpu 396 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 397 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] ^= get_val_adr_x(w[1], w[0])); cpu 398 src/exec.c sys->cpu->pr += getcmdwordlen("XOR", R_ADR_X); cpu 403 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 404 src/exec.c setfr(sys->cpu->gr[get_r_r1(w[0])] ^= sys->cpu->gr[get_x_r2(w[0])]); cpu 405 src/exec.c sys->cpu->pr += getcmdwordlen("XOR", R1_R2); cpu 410 src/exec.c sys->cpu->fr = 0; cpu 411 src/exec.c if((short)sys->cpu->gr[r] < (short)val) { cpu 412 src/exec.c sys->cpu->fr = SF; cpu 413 src/exec.c } else if(sys->cpu->gr[r] == val) { cpu 414 src/exec.c sys->cpu->fr = ZF; cpu 420 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 422 src/exec.c sys->cpu->pr += getcmdwordlen("CPA", R_ADR_X); cpu 427 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 428 src/exec.c cpa(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]); cpu 429 src/exec.c sys->cpu->pr += getcmdwordlen("CPA", R1_R2); cpu 434 src/exec.c sys->cpu->fr = 0x0; cpu 435 src/exec.c if(sys->cpu->gr[r] < val) { cpu 436 src/exec.c sys->cpu->fr = SF; cpu 437 src/exec.c } else if(sys->cpu->gr[r] == val) { cpu 438 src/exec.c sys->cpu->fr = ZF; cpu 444 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 446 src/exec.c sys->cpu->pr += getcmdwordlen("CPL", R_ADR_X); cpu 451 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 452 src/exec.c cpl(get_r_r1(w[0]), sys->cpu->gr[get_x_r2(w[0])]); cpu 453 src/exec.c sys->cpu->pr += getcmdwordlen("CPL", R1_R2); cpu 458 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 460 src/exec.c WORD sign = sys->cpu->gr[r] & 0x8000; cpu 463 src/exec.c sys->cpu->fr = 0; cpu 464 src/exec.c sys->cpu->gr[r] &= 0x7FFF; cpu 466 src/exec.c last = sys->cpu->gr[r] & 0x4000; cpu 467 src/exec.c sys->cpu->gr[r] <<= 1; cpu 469 src/exec.c sys->cpu->gr[r] = sign | (sys->cpu->gr[r] & 0x7FFF); cpu 472 src/exec.c sys->cpu->fr += OF; cpu 476 src/exec.c sys->cpu->fr += SF; cpu 479 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 480 src/exec.c sys->cpu->fr += ZF; cpu 482 src/exec.c sys->cpu->pr += getcmdwordlen("SLA", R_ADR_X); cpu 487 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 489 src/exec.c WORD sign = sys->cpu->gr[r] & 0x8000; cpu 492 src/exec.c sys->cpu->fr = 0; cpu 493 src/exec.c sys->cpu->gr[r] &= 0x7FFF; cpu 495 src/exec.c last = sys->cpu->gr[r] & 0x1; cpu 496 src/exec.c sys->cpu->gr[r] >>= 1; cpu 498 src/exec.c sys->cpu->gr[r] |= 0x4000; cpu 501 src/exec.c sys->cpu->gr[r] = sign | sys->cpu->gr[r]; cpu 504 src/exec.c sys->cpu->fr += OF; cpu 508 src/exec.c sys->cpu->fr += SF; cpu 511 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 512 src/exec.c sys->cpu->fr += ZF; cpu 514 src/exec.c sys->cpu->pr += getcmdwordlen("SRA", R_ADR_X); cpu 519 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 523 src/exec.c sys->cpu->fr = 0x0; cpu 525 src/exec.c last = sys->cpu->gr[r] & 0x8000; cpu 526 src/exec.c sys->cpu->gr[r] <<= 1; cpu 530 src/exec.c sys->cpu->fr += OF; cpu 533 src/exec.c if((sys->cpu->gr[r] & 0x8000) > 0x0) { cpu 534 src/exec.c sys->cpu->fr += SF; cpu 537 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 538 src/exec.c sys->cpu->fr += ZF; cpu 540 src/exec.c sys->cpu->pr += getcmdwordlen("SLL", R_ADR_X); cpu 545 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 549 src/exec.c sys->cpu->fr = 0x0; cpu 551 src/exec.c last = sys->cpu->gr[r] & 0x0001; cpu 552 src/exec.c sys->cpu->gr[r] >>= 1; cpu 556 src/exec.c sys->cpu->fr += OF; cpu 559 src/exec.c if((sys->cpu->gr[r] & 0x8000) > 0x0) { cpu 560 src/exec.c sys->cpu->fr += SF; cpu 563 src/exec.c if(sys->cpu->gr[r] == 0x0) { cpu 564 src/exec.c sys->cpu->fr += ZF; cpu 566 src/exec.c sys->cpu->pr += getcmdwordlen("SRL", R_ADR_X); cpu 571 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 572 src/exec.c if((sys->cpu->fr & SF) > 0) { cpu 573 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 575 src/exec.c sys->cpu->pr += getcmdwordlen("JMI", ADR_X); cpu 581 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 582 src/exec.c if((sys->cpu->fr & ZF) == 0) { cpu 583 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 585 src/exec.c sys->cpu->pr += getcmdwordlen("JNZ", ADR_X); cpu 591 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 592 src/exec.c if((sys->cpu->fr & ZF) > 0) { cpu 593 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 595 src/exec.c sys->cpu->pr += getcmdwordlen("JZE", ADR_X); cpu 601 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 602 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 607 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 608 src/exec.c if((sys->cpu->fr & (SF | ZF)) == 0) { cpu 609 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 611 src/exec.c sys->cpu->pr += getcmdwordlen("JPL", ADR_X); cpu 617 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 618 src/exec.c if((sys->cpu->fr & OF) > 0) { cpu 619 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 621 src/exec.c sys->cpu->pr += getcmdwordlen("JOV", ADR_X); cpu 627 src/exec.c assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); cpu 628 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 629 src/exec.c sys->memory[--(sys->cpu->sp)] = get_adr_x(w[1], w[0]); cpu 630 src/exec.c sys->cpu->pr += getcmdwordlen("PUSH", ADR_X); cpu 635 src/exec.c assert(sys->cpu->sp > execptr->end); cpu 636 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr]}; cpu 639 src/exec.c if(sys->cpu->sp >= sys->memsize) { cpu 640 src/exec.c setcerr(203, s = pr2str(sys->cpu->pr)); /* Stack Pointer (SP) - stack underflow */ cpu 643 src/exec.c sys->cpu->gr[get_r_r1(w[0])] = sys->memory[(sys->cpu->sp)++]; cpu 644 src/exec.c sys->cpu->pr += getcmdwordlen("POP", R_); cpu 650 src/exec.c assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); cpu 651 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 652 src/exec.c sys->memory[--(sys->cpu->sp)] = sys->cpu->pr + 1; cpu 653 src/exec.c sys->cpu->pr = get_adr_x(w[1], w[0]); cpu 658 src/exec.c assert(sys->cpu->sp <= sys->memsize); cpu 659 src/exec.c if(sys->cpu->sp == sys->memsize) { cpu 661 src/exec.c } else if(sys->cpu->sp < sys->memsize) { cpu 662 src/exec.c sys->cpu->pr = sys->memory[(sys->cpu->sp)++] + 1; cpu 668 src/exec.c WORD w[] = {sys->memory[sys->cpu->pr], sys->memory[sys->cpu->pr + 1]}; cpu 681 src/exec.c sys->cpu->pr += getcmdwordlen("SVC", ADR_X); cpu 695 src/exec.c sys->cpu->pr = execptr->start; cpu 700 src/exec.c if((execmode.monitor == true && execptr->started == false) || execptr->stop == true || execmode.step == true || getbps(sys->cpu->pr) == true) cpu 713 src/exec.c if(sys->cpu->pr >= sys->memsize) { cpu 714 src/exec.c setcerr(201, s = pr2str(sys->cpu->pr)); /* Program Register (PR) - memory overflow */ cpu 718 src/exec.c if(sys->cpu->sp <= execptr->end) { cpu 719 src/exec.c setcerr(202, s = pr2str(sys->cpu->pr)); /* Stack Pointer (SP) - stack overflow */ cpu 724 src/exec.c if((cmdptr = getcmdptr(sys->memory[sys->cpu->pr] & 0xFF00)) == NULL) { cpu 725 src/exec.c setcerr(204, s = pr2str(sys->cpu->pr)); /* OP in word #1 - not command code */ cpu 330 src/monitor.c fprintf(stdout, "#%04X: Register::::\n", sys->cpu->pr); cpu 338 src/struct.c sys->cpu = malloc_chk(sizeof(CPU), "comet2_init.cpu"); cpu 354 src/struct.c sys->cpu->gr[i] = 0x0; cpu 356 src/struct.c sys->cpu->sp = sys->memsize; /* スタックポインタ */ cpu 357 src/struct.c sys->cpu->pr = 0x0; /* プログラムレジスタ */ cpu 358 src/struct.c sys->cpu->fr = 0x0; /* フラグレジスタ */ cpu 403 src/struct.c FREE(sys->cpu);