AtariSIO icon indicating copy to clipboard operation
AtariSIO copied to clipboard

Format detection fails (error 140) with Atari 810 disk drive

Open OronDF343 opened this issue 10 months ago • 3 comments

Hi, I am using a new Lotharek 1050-2-PC and am unable to read disks from an Atari 810 disk drive (US) with atarixfer. The format detection fails (probably because the 810 does not support any additional formats).

oron@legacy-lp:~/atr$ lotharek-switch 1050
successfully switched interface to 1050-2-PC mode
oron@legacy-lp:~/atr$ atarixfer -f /dev/ttyUSB0 -r pm.atr
atarixfer 0.30-221009
(c) 2002-2022 Matthias Reichl <[email protected]>
get percom block ... failed [atari error 146]
get status ... failed [atari error 140]
cannot determine density!

However sectors can be read, as evident when I run with -x, it reads sector 4 successfully:

oron@legacy-lp:~/atr$ atarixfer -f /dev/ttyUSB0 -r pm.atr -x
atarixfer 0.30-221009
(c) 2002-2022 Matthias Reichl <[email protected]>
reading sector 4 ... OK
get percom block ... failed [atari error 146]
get status ... failed [atari error 140]
cannot determine density!

On Windows, the cable and drive work fine with ALibPc and I was able to backup a couple of disks and load them in atari800.

Does atarixfer simply not support the 810?

OronDF343 avatar Apr 11 '24 18:04 OronDF343

I don't own a 810 so it's hard to tell if this is a 810 specific or some other general issue.

Do you have some other drives or drive emulators (SIO2SD, SDrive, SIO2PC, ...) to test with? If yes it would be interesting to know if atarixfer fails with them, too.

Can you please also test if using the -u option helps?

If it fails with -u please change the UTRACE_MASK in tools/UserspaceSIOWrapper.cpp to 0x10, rebuild atarisio and run atarixfer with the -d option, this should then print a lot more info. https://github.com/HiassofT/AtariSIO/blob/master/tools/UserspaceSIOWrapper.cpp#L41

#define UTRACE_MASK 0x10
atarixfer -f /dev/ttyUSB0 -d -u -r pm.atr

HiassofT avatar Apr 12 '24 10:04 HiassofT

-u did not help, here is the output with the debug info:

oron@legacy-lp:~/AtariSIO$ atarixfer -f /dev/ttyUSB0 -r pm.atr -d -u
atarixfer 0.30-221009
(c) 2002-2022 Matthias Reichl <[email protected]>
using userspace driver
activated realtime scheduling
mlockall(2) succeeded
get status ...Debug: SendCommandFrame returned 1140
Debug: SendCommandFrame returned 1140
 failed [atari error 140]
cannot determine density!

I have an SIO2SD 2.0 but I don't know how to make it work together with the 1050-2-PC (all I got is a blank screen so far). I'll have to try it with the 800XL another day

OronDF343 avatar Apr 13 '24 20:04 OronDF343

Can you please update to the current version from the master branch, set UTRACE_MASK to 0xfff and repeat the test?

I've extended debug logging, this should hopefully give more insight what's failing

HiassofT avatar Apr 14 '24 10:04 HiassofT

Here is the output:

Debug: change baudrate from 0 to 19200, now = 1
using userspace driver
activated realtime scheduling
mlockall(2) succeeded
Debug: change baudrate from 19200 to 19200, now = 1
atarixfer 0.30-221009
(c) 2002-2022 Matthias Reichl <[email protected]>
get status ...Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 00
Debug: got 00 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: SendCommandFrame returned 1140
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 00
Debug: got 00 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 00
Debug: got 00 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 00
Debug: got 00 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 00
Debug: got 00 instead of command ACK/NAK
Debug: SendCommandFrame returned 1140
 failed [atari error 140]
cannot determine density!

OronDF343 avatar Apr 16 '24 18:04 OronDF343

Receiving mostly ff and sometimes 00 or 43 instead of the expected 41 command ACK is very weird.

Please run sudo lsof /dev/ttyUSB0 to check if some other program in the background is accessing /dev/ttyUSB0 as well (usual suspects would be modemmanager or gettys), which would interfere with atarixfer.

If you're sure nothing interferes please also repeat the test with -x instead of -u - that will give additional info from the other SIO commands

HiassofT avatar Apr 17 '24 14:04 HiassofT

I am certain that nothing else is accessing the device.

Some additional info about my config that may or may not be interesting:

  • I am using a US disk drive with a cheap step-down transformer, so it is actually running at 50Hz instead of 60Hz
  • When using ALibPc I had to change the handshake method to RTS as the drive was not detected with the default DTR option
  • If there is reason to believe that USB hardware or distro are at play, please note that I am not using the same PC for the different OS and software. My tests of atarixfer are all done on my old laptop (Intel Haswell) running a fresh install of Fedora 39 while the previous tests with ALibPc on Windows 10 were done on my desktop PC (AMD Ryzen 3000)
  • The disk drive has not been modified. I have recently opened it to reset the board and connectors to get it working and am certain that it was never opened before this. It needs some cleaning though

For now, here is the output I got with -x. I might have some more time to test things on Friday.

Debug: change baudrate from 0 to 19200, now = 1
using userspace driver
activated realtime scheduling
mlockall(2) succeeded
Debug: change baudrate from 19200 to 19200, now = 1
atarixfer 0.30-221009
(c) 2002-2022 Matthias Reichl <[email protected]>
reading sector 4 ...Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 41
Debug: SendCommandFrame returned 0
Debug: Receive command complete returned 67
 OK
get status ...Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: SendCommandFrame returned 1140
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char ff
Debug: got ff instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 43
Debug: got 43 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: asserting command line
Debug: begin TransmitBuf 5
Debug: WaitTransmitComplete
Debug: begin WaitTransmitComplete()
Debug: tcdrain start
Debug: tcdrain finished
Debug: checked lsr 1 times
Debug: end WaitTransmitComplete
Debug: end TransmitBuf 5
Debug: de-asserting command line
Debug: got command ACK char 10
Debug: got 10 instead of command ACK/NAK
Debug: SendCommandFrame returned 1140
 failed [atari error 140]
cannot determine density!

OronDF343 avatar Apr 17 '24 16:04 OronDF343

Thanks a lot for the log!

It is really puzzling, the (partial) read sector command looks fine, NAKing of the get percom block command (in your very first post) also seems fine but the drive seems to send garbage in response to the get status command...

Could you please update to HEAD of the master branch, I've added a new -F option that allows you to bypass density detection and force use a specific density instead (eg -F s to force single density).

Just run atarixfer -f /dev/ttyUSB -F s -r disk.atr first, if this fails post the output you got on screen, enable debugging as before and post the output, too

HiassofT avatar Apr 19 '24 13:04 HiassofT

It is able to read consistently with the new option! I have also verified that the image has identical contents and works as expected in the emulator.

Thank a lot for the help!

OronDF343 avatar Apr 20 '24 17:04 OronDF343

Thanks for reporting back and I'm glad it helped!

I've now also documented the option in the README

HiassofT avatar Apr 28 '24 14:04 HiassofT