Previous 15994 Revisions Next

r8686 Sunday 1st August, 2010 at 20:50:19 UTC by Angelo Salese
[PC-6001]: Added a cheap hack to load ADC'ed tapes as 'cart2', system is now in a somewhat working state again
[src/mess/drivers]pc6001.c

src/mess/drivers/pc6001.c
r8685r8686
105105static UINT8 irq_vector = 0x00;
106106static UINT8 cas_switch,sys_latch;
107107static UINT32 cas_offset;
108static UINT32 cas_maxsize;
108109
109#define CAS_LENGTH 0x1655
110//#define CAS_LENGTH 0x1655
110111
111112static VIDEO_START( pc6001 )
112113{
r8685r8686
255256   if((!(sys_latch & 8)) && data & 0x8) //PLAY tape cmd
256257   {
257258      cas_switch = 1;
258      cassette_change_state(space->machine->device("cass" ),CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR);
259      cassette_change_state(space->machine->device("cass" ),CASSETTE_PLAY,CASSETTE_MASK_UISTATE);
259      //cassette_change_state(space->machine->device("cass" ),CASSETTE_MOTOR_ENABLED,CASSETTE_MASK_MOTOR);
260      //cassette_change_state(space->machine->device("cass" ),CASSETTE_PLAY,CASSETTE_MASK_UISTATE);
260261   }
261262   if((sys_latch & 8) && ((data & 0x8) == 0)) //STOP tape cmd
262263   {
263264      cas_switch = 0;
264      cassette_change_state(space->machine->device("cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);
265      cassette_change_state(space->machine->device("cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE);
265      //cassette_change_state(space->machine->device("cass" ),CASSETTE_MOTOR_DISABLED,CASSETTE_MASK_MOTOR);
266      //cassette_change_state(space->machine->device("cass" ),CASSETTE_STOPPED,CASSETTE_MASK_UISTATE);
266267      //irq_vector = 0x00;
267268      //cputag_set_input_line(space->machine,"maincpu", 0, ASSERT_LINE);
268269   }
r8685r8686
740741
741742static TIMER_CALLBACK(cassette_callback)
742743{
743   //UINT8 *gfx_data = memory_region(machine, "cas");
744
745744   if(cas_switch == 1)
746745   {
746      #if 0
747747      static UINT8 cas_data_i = 0x80,cas_data_poll;
748748      //cur_keycode = gfx_data[cas_offset++];
749749      if(cassette_input(machine->device("cass")) > 0.03)
r8685r8686
760760      }
761761      else
762762         cas_data_i>>=1;
763      #else
764         UINT8 *cas_data = memory_region(machine, "cas");
763765
764      //popmessage("%04x %02x",cas_offset,cas_switch);
765      #if 0
766      if(cas_offset >= CAS_LENGTH)
767      {
768         cas_offset = 0;
769         cas_switch = 0;
770         irq_vector = 0x12;
771         cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
772      }
766         cur_keycode = cas_data[cas_offset++];
767         popmessage("%04x %02x",cas_offset,cas_switch);
768         if(cas_offset >= cas_maxsize)
769         {
770            cas_offset = 0;
771            cas_switch = 0;
772            irq_vector = 0x12;
773            cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
774         }
775         else
776         {
777            irq_vector = 0x08;
778            cputag_set_input_line(machine,"maincpu", 0, ASSERT_LINE);
779         }
773780      #endif
774781   }
775782}
r8685r8686
876883   NULL
877884};
878885
886static DEVICE_IMAGE_LOAD( pc6001_cass )
887{
888   UINT8 *cas = memory_region(image.device().machine, "cas");
889   UINT32 size;
890
891   size = image.length();
892   if (image.fread( cas, size) != size)
893   {
894      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unable to fully read from file");
895      return IMAGE_INIT_FAIL;
896   }
897
898   cas_maxsize = size;
899
900   return IMAGE_INIT_PASS;
901}
902
879903static MACHINE_DRIVER_START( pc6001 )
880904   /* basic machine hardware */
881905   MDRV_CPU_ADD("maincpu",Z80, 7987200 / 4)
r8685r8686
909933   MDRV_CARTSLOT_EXTENSION_LIST("bin")
910934   MDRV_CARTSLOT_NOT_MANDATORY
911935
912   MDRV_CASSETTE_ADD("cass",pc6001_cassette_config)
936//   MDRV_CASSETTE_ADD("cass",pc6001_cassette_config)
937   MDRV_CARTSLOT_ADD("cass")
938   MDRV_CARTSLOT_EXTENSION_LIST("cass")
939   MDRV_CARTSLOT_NOT_MANDATORY
940   MDRV_CARTSLOT_INTERFACE("pc6001_cass")
941   MDRV_CARTSLOT_LOAD(pc6001_cass)
913942
914943   MDRV_SPEAKER_STANDARD_MONO("mono")
915944   MDRV_SOUND_ADD("ay8910", AY8910, XTAL_4MHz/2)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team