Rev 737 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 737 | Rev 738 | ||
|---|---|---|---|
| Line 545... | Line 545... | ||
| 545 | $fclose(fd); |
545 | $fclose(fd); |
| 546 | 546 | ||
| 547 | 547 | ||
| 548 | wait(res===1'b0); |
548 | wait(res===1'b0); |
| 549 | #(0.2); |
549 | #(0.2); |
| 550 | tb.DUT.zports.atm_turbo = 1'b0; |
550 | tb.DUT.zports.atm_turbo = 1'b1; |
| 551 | tb.DUT.zports.peff7_int[4] = 1'b0; |
551 | tb.DUT.zports.peff7_int[4] = 1'b0; |
| 552 | 552 | ||
| 553 | 553 | ||
| 554 | #(100000); // 100 us |
554 | #(100000); // 100 us |
| 555 | 555 | ||
| Line 557... | Line 557... | ||
| 557 | @(posedge fclk); |
557 | @(posedge fclk); |
| 558 | force tb.DUT.imm_nmi = 1'b1; |
558 | force tb.DUT.imm_nmi = 1'b1; |
| 559 | @(posedge fclk); |
559 | @(posedge fclk); |
| 560 | release tb.DUT.imm_nmi; |
560 | release tb.DUT.imm_nmi; |
| 561 | end |
561 | end |
| - | 562 | `endif |
|
| - | 563 | ||
| - | 564 | ||
| - | 565 | ||
| - | 566 | `ifdef NMITEST3 |
|
| - | 567 | `define M48K |
|
| - | 568 | ||
| - | 569 | initial |
|
| - | 570 | begin |
|
| - | 571 | int i,fd; |
|
| - | 572 | logic [7:0] ldbyte; |
|
| - | 573 | ||
| - | 574 | reset_pc=16'h0068; |
|
| - | 575 | reset_sp=16'h8000; |
|
| - | 576 | ||
| - | 577 | ||
| - | 578 | #(0.1); // let M48K rom load execute |
|
| - | 579 | ||
| - | 580 | fd = $fopen("dimkarom.bin","rb"); |
|
| - | 581 | if( !fd ) |
|
| - | 582 | begin |
|
| - | 583 | $display("Can't open 'dimkarom.bin'!"); |
|
| - | 584 | $stop; |
|
| - | 585 | end |
|
| - | 586 | ||
| - | 587 | i='h0066; |
|
| - | 588 | begin : load_loop |
|
| - | 589 | while(1) |
|
| - | 590 | begin |
|
| - | 591 | if( 1!=$fread(ldbyte,fd) ) disable load_loop; |
|
| - | 592 | tb.romko.zxevo_rom.mem[i]=ldbyte; |
|
| - | 593 | i=i+1; |
|
| - | 594 | end |
|
| - | 595 | end |
|
| - | 596 | $fclose(fd); |
|
| - | 597 | ||
| - | 598 | ||
| - | 599 | wait(res===1'b0); |
|
| - | 600 | #(0.2); |
|
| - | 601 | tb.DUT.zports.atm_turbo = 1'b1; |
|
| - | 602 | tb.DUT.zports.peff7_int[4] = 1'b0; |
|
| - | 603 | ||
| - | 604 | ||
| - | 605 | #(1000000); // 1 ms |
|
| - | 606 | ||
| - | 607 | //force nmi_n = 1'b0; |
|
| - | 608 | @(posedge fclk); |
|
| - | 609 | force tb.DUT.imm_nmi = 1'b1; |
|
| - | 610 | @(posedge fclk); |
|
| - | 611 | release tb.DUT.imm_nmi; |
|
| - | 612 | end |
|
| - | 613 | `endif |
|
| 562 | 614 | ||
| 563 | 615 | ||
| 564 | // port #FE monitor |
616 | // port #FE monitor |
| 565 | wire fe_write; |
617 | wire fe_write; |
| 566 | assign fe_write = (za[7:0]==8'hFE) && !wr_n && !iorq_n; |
618 | assign fe_write = (za[7:0]==8'hFE) && !wr_n && !iorq_n; |
| Line 569... | Line 621... | ||
| 569 | always @(negedge nmi_n) |
621 | always @(negedge nmi_n) |
| 570 | $display("nmi monitor: negative edge at %t",$time()); |
622 | $display("nmi monitor: negative edge at %t",$time()); |
| 571 | 623 | ||
| 572 | 624 | ||
| 573 | 625 | ||
| 574 | `endif |
- | |
| 575 | 626 | ||
| 576 | // start in 48k mode |
627 | // start in 48k mode |
| 577 | `ifdef M48K |
628 | `ifdef M48K |
| 578 | initial |
629 | initial |
| 579 | begin : force_48k_mode |
630 | begin : force_48k_mode |
| 580 | 631 | ||
| 581 | int i; |
632 | int i; |
| 582 | int fd; |
633 | int fd; |
| 583 | 634 | ||
| - | 635 | fd = $fopen("48.rom","rb"); |
|
| - | 636 | if( 16384!=$fread(tb.romko.zxevo_rom.mem,fd) ) |
|
| - | 637 | begin |
|
| - | 638 | $display("Couldn't load 48k ROM!\n"); |
|
| - | 639 | $stop; |
|
| - | 640 | end |
|
| 584 | wait(res===1'b0); |
641 | $fclose(fd); |
| - | 642 | ||
| 585 | 643 | ||
| - | 644 | wait(res===1'b0); |
|
| 586 | #(0.1); |
645 | #(0.1); |
| 587 | 646 | ||
| 588 | tb.DUT.zports.atm_turbo = 1'b0; |
647 | tb.DUT.zports.atm_turbo = 1'b0; |
| 589 | tb.DUT.zports.atm_pen = 1'b0; |
648 | tb.DUT.zports.atm_pen = 1'b0; |
| 590 | tb.DUT.zports.atm_cpm_n = 1'b1; |
649 | tb.DUT.zports.atm_cpm_n = 1'b1; |
| Line 640... | Line 699... | ||
| 640 | for(i=0;i<512;i=i+1) |
699 | for(i=0;i<512;i=i+1) |
| 641 | begin : set_palette // R G B |
700 | begin : set_palette // R G B |
| 642 | tb.DUT.video_top.video_palframe.palette[i] = { (i[1]?{1'b1,i[3]}:2'b00), 1'b0, (i[2]?{1'b1,i[3]}:2'b00), 1'b0, (i[0]?{1'b1,i[3]}:2'b00) }; |
701 | tb.DUT.video_top.video_palframe.palette[i] = { (i[1]?{1'b1,i[3]}:2'b00), 1'b0, (i[2]?{1'b1,i[3]}:2'b00), 1'b0, (i[0]?{1'b1,i[3]}:2'b00) }; |
| 643 | end |
702 | end |
| 644 | 703 | ||
| 645 | #1.0; |
- | |
| 646 | - | ||
| 647 | fd = $fopen("48.rom","rb"); |
- | |
| 648 | if( 16384!=$fread(tb.romko.zxevo_rom.mem,fd) ) |
- | |
| 649 | begin |
- | |
| 650 | $display("Couldn't load 48k ROM!\n"); |
- | |
| 651 | $stop; |
- | |
| 652 | end |
- | |
| 653 | $fclose(fd); |
- | |
| 654 | end |
704 | end |
| 655 | `endif |
705 | `endif |
| 656 | 706 | ||
| 657 | 707 | ||
| 658 | // load and start some code after we've reached "1982 Sinclair research ltd" |
708 | // load and start some code after we've reached "1982 Sinclair research ltd" |