src/mess/drivers/x1.c
| r5870 | r5871 | |
| 643 | 643 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); |
| 644 | 644 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE); |
| 645 | 645 | cmt_test = 1; |
| 646 | popmessage("CMT: Stop"); |
| 646 | 647 | break; |
| 647 | 648 | case 0x02: // Play |
| 648 | 649 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); |
| 649 | 650 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_PLAY,CASSETTE_MASK_UISTATE); |
| 651 | popmessage("CMT: Play"); |
| 650 | 652 | break; |
| 653 | case 0x03: // Fast Forward |
| 654 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); |
| 655 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE); |
| 656 | popmessage("CMT: Fast Forward"); |
| 657 | break; |
| 658 | case 0x04: // Rewind |
| 659 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); |
| 660 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE); |
| 661 | popmessage("CMT: Rewind"); |
| 662 | break; |
| 663 | case 0x05: // APSS Fast Forward |
| 664 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); |
| 665 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE); |
| 666 | popmessage("CMT: APSS Fast Forward"); |
| 667 | break; |
| 668 | case 0x06: // APSS Rewind |
| 669 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); |
| 670 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE); |
| 671 | popmessage("CMT: APSS Rewind"); |
| 672 | break; |
| 651 | 673 | case 0x0a: // Record |
| 652 | 674 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR); |
| 653 | 675 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_RECORD,CASSETTE_MASK_UISTATE); |
| 676 | popmessage("CMT: Record"); |
| 654 | 677 | break; |
| 655 | 678 | default: |
| 656 | 679 | logerror("Unimplemented or invalid CMT command (0x%02x)\n",cmd); |
| r5870 | r5871 | |
| 658 | 681 | logerror("CMT: Command 0xe9-0x%02x received.\n",cmd); |
| 659 | 682 | } |
| 660 | 683 | |
| 684 | static TIMER_CALLBACK( cmt_wind_timer ) |
| 685 | { |
| 686 | const device_config* cmt = devtag_get_device(machine,"cass"); |
| 687 | switch(cmt_current_cmd) |
| 688 | { |
| 689 | case 0x03: |
| 690 | case 0x05: // Fast Forwarding tape |
| 691 | cassette_seek(cmt,1,SEEK_CUR); |
| 692 | if(cassette_get_position(cmt) >= cassette_get_length(cmt)) // at end? |
| 693 | cmt_command(machine,0x01); // Stop tape |
| 694 | break; |
| 695 | case 0x04: |
| 696 | case 0x06: // Rewinding tape |
| 697 | cassette_seek(cmt,-1,SEEK_CUR); |
| 698 | if(cassette_get_position(cmt) <= 0) // at beginning? |
| 699 | cmt_command(machine,0x01); // Stop tape |
| 700 | break; |
| 701 | } |
| 702 | } |
| 703 | |
| 661 | 704 | static WRITE8_HANDLER( sub_io_w ) |
| 662 | 705 | { |
| 663 | 706 | mame_system_time systime; |
| r5870 | r5871 | |
| 1994 | 2037 | |
| 1995 | 2038 | //cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), x1_irq_callback); |
| 1996 | 2039 | timer_pulse(machine, ATTOTIME_IN_HZ(240), NULL, 0, keyboard_callback); |
| 1997 | | |
| 2040 | timer_pulse(machine, ATTOTIME_IN_HZ(16), NULL, 0, cmt_wind_timer); |
| 2041 | |
| 1998 | 2042 | cmt_current_cmd = 0; |
| 1999 | 2043 | cmt_test = 0; |
| 2000 | 2044 | cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR); |