the MSX emulator that aims for perfection http://openmsx.org
  • C++ 89%
  • Tcl 7.4%
  • Python 2.1%
  • Makefile 0.6%
  • Meson 0.2%
  • Other 0.7%
Find a file
Sandy Pleyte d1c161a93b TC8566AF: don't fast-fail RECALIBRATE on a missing drive
The dummy-drive shortcut in doSeek() set ST0_NR and immediately
  called endSeek(), which clears the drive-busy bit in the main
  status register. That hid the failure from any disk driver that
  follows the textbook probe pattern:

    1. write RECALIBRATE
    2. poll the main status register for a drive-busy bit
    3. if busy, issue SENSE INTERRUPT STATUS and inspect ST0

  Because the shortcut completed in zero emulated time, the busy
  bit was already cleared by the time step 2 ran. The driver never
  reached step 3, never read ST0, and never saw the NR or any
  error indication. RECALIBRATE on a non-existent drive therefore
  looked indistinguishable from success.

  FastCopy 3.0 on a single-drive Turbo-R (FS-A1GT) hit this and
  reported "Number of drives: 2", because its drive-B detection
  relies entirely on the EC bit observed via SENSE INTERRUPT
  STATUS after RECALIBRATE.

  Drop the early-return. Mark the drive Not Ready, then fall
  through into the regular RECALIBRATE path. On a DummyDrive,
  isTrack00() always returns false and step() is a no-op, so the
  loop walks down its 255-step budget, holding the drive-busy bit
  high the whole time while emulated time advances. When the
  budget is exhausted, the existing code sets ST0_EC and ends the
  seek -- the same observable behavior real hardware produces for
  an absent drive, and the sequence drivers are written to detect.

  SEEK on a dummy drive still "completes" silently (no EC), which
  matches what the TC8566AF datasheet allows when the drive does
  not acknowledge -- and drivers that care about presence use
  RECALIBRATE for that check, not SEEK.
2026-06-02 09:20:21 +02:00
.github Update Node.js 20 actions to Node.js 24 versions. 2026-05-05 20:52:37 +02:00
build Add Namco mapper for A13-not-connected 16kB cartridges 2026-06-01 23:01:46 +02:00
Contrib MSXPi: Fixed grammatical error in Contrib/README.MSXPi 2025-09-29 16:29:30 +01:00
doc Fix some commands from console help 2026-04-27 08:10:33 +02:00
share Add Namco mapper for A13-not-connected 16kB cartridges 2026-06-01 23:01:46 +02:00
src TC8566AF: don't fast-fail RECALIBRATE on a missing drive 2026-06-02 09:20:21 +02:00
.gitignore Implement horizontal screen stretching in fullscreen mode 2025-09-16 18:25:09 +02:00
configure Various text-processing stuff 2013-04-24 16:39:29 +02:00
GNUmakefile Process multiple goals sequentially. 2007-07-02 00:23:15 +00:00
meson.build Use std::filesystem::remove_all() to implement FileOperations::deleteRecursive() 2025-03-06 16:48:47 +01:00
meson_options.txt Reformat Meson options definitions file 2022-01-20 18:48:04 +01:00
README Change URL to HTTPS 2019-10-15 12:42:35 +03:00

----------------------------------------------------------------------------
openMSX - the MSX emulator that aims for perfection
----------------------------------------------------------------------------

openMSX comes with a set of HTML manuals that tell what you need to know
to install, configure and run openMSX. You can find these manuals in the
directory 'manual' inside the directory 'doc'. You can read them using
a web browser.

You can read what has changed in this and the previous releases in the
release notes. You can find the release notes of this release in the file
'release-notes.txt' in the directory 'doc'. Highlights of previous releases
can be found in 'release-history.txt'.

All source code and other works that are part of, or distributed with
openMSX are copyrighted by their respective authors. The file 'authors.txt'
contains a list of people who made works for openMSX or contributed works
to openMSX.

Some source files contain a license notice; all other source files are
licensed under the GNU Public License (GPL), of which you can find a copy
in the file 'GPL.txt'. If you got a binary release of openMSX and are
interested in the sources, please visit our home page:
    https://openmsx.org/

Happy MSX-ing!
                        the openMSX developers

----------------------------------------------------------------------------