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" |