Previous 15994 Revisions Next

r5871 Thursday 24th September, 2009 at 03:05:52 UTC by Barry Rodewald
[X1] Implemented CMT Rewind and Fast Forward commands. APSS Rew and FF commands are currently treated the same.
[src/mess/drivers]x1.c

src/mess/drivers/x1.c
r5870r5871
643643         cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);
644644         cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE);
645645         cmt_test = 1;
646         popmessage("CMT: Stop");
646647         break;
647648      case 0x02:  // Play
648649         cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR);
649650         cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_PLAY,CASSETTE_MASK_UISTATE);
651         popmessage("CMT: Play");
650652         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;
651673      case 0x0a:  // Record
652674         cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR);
653675         cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_RECORD,CASSETTE_MASK_UISTATE);
676         popmessage("CMT: Record");
654677         break;
655678      default:
656679         logerror("Unimplemented or invalid CMT command (0x%02x)\n",cmd);
r5870r5871
658681   logerror("CMT: Command 0xe9-0x%02x received.\n",cmd);
659682}
660683
684static 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
661704static WRITE8_HANDLER( sub_io_w )
662705{
663706   mame_system_time systime;
r5870r5871
19942037
19952038   //cpu_set_irq_callback(cputag_get_cpu(machine, "maincpu"), x1_irq_callback);
19962039   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   
19982042   cmt_current_cmd = 0;
19992043   cmt_test = 0;
20002044   cassette_change_state(devtag_get_device(machine, "cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);

Previous 15994 Revisions Next


© 1998-2018 The MESS Team