Previous 199869 Revisions Next

r18361 Monday 8th October, 2012 at 18:43:25 UTC by Curt Coder
(MESS) c64: Updated 1541/1571 stepper motor code to latest KF spec. (nw)
[src/mess/machine]64h156.c 64h156.h

trunk/src/mess/machine/64h156.c
r18360r18361
394394     m_buffer_pos(0),
395395     m_bit_pos(0),
396396     m_bit_count(0),
397     m_stp(-1),
398397     m_mtr(0),
399398     m_accl(1),
400399     m_ds(0),
r18360r18361
450449   save_item(NAME(m_cycles_until_next_bit));
451450   save_item(NAME(m_zero_count));
452451   save_item(NAME(m_cycles_until_random_flux));
453   save_item(NAME(m_stp));
454452   save_item(NAME(m_mtr));
455453   save_item(NAME(m_accl));
456454   save_item(NAME(m_ds));
r18360r18361
656654
657655void c64h156_device::stp_w(int data)
658656{
659   if (m_mtr && (m_stp != data))
657   if (m_mtr)
660658   {
661      int tracks = 0;
662
663      switch (m_stp)
659      int track = floppy_drive_get_current_track(m_image);
660      int tracks = (data - track) & 0x03;
661     
662      if (tracks == 3)
664663      {
665      case 0:   if (data == 1) tracks++; else if (data == 3) tracks--; break;
666      case 1:   if (data == 2) tracks++; else if (data == 0) tracks--; break;
667      case 2: if (data == 3) tracks++; else if (data == 1) tracks--; break;
668      case 3: if (data == 0) tracks++; else if (data == 2) tracks--; break;
664         tracks = -1;
669665      }
670666
671      if (tracks != 0)
667      if (tracks == -1 || tracks == 1)
672668      {
673669         // step read/write head
674670         floppy_drive_seek(m_image, tracks);
r18360r18361
676672         // read new track data
677673         read_current_track();
678674      }
679
680      m_stp = data;
681675   }
682676}
683677
trunk/src/mess/machine/64h156.h
r18360r18361
144144   devcb_resolved_write_line   m_out_sync_func;
145145   devcb_resolved_write_line   m_out_byte_func;
146146
147   required_device<device_t> m_image;
147   required_device<legacy_floppy_image_device> m_image;
148148
149149   // track
150150   UINT16 m_shift;
r18360r18361
160160   int m_cycles_until_random_flux;
161161
162162   // motors
163   int m_stp;                        // stepper motor phase
164163   int m_mtr;                        // spindle motor on
165164
166165   // signals

Previous 199869 Revisions Next


© 1997-2024 The MAME Team