View Single Post
Old 24 May 2016, 22:19   #1
BlankVector
Registered User
 
Join Date: Jun 2012
Location: Paris, France
Posts: 148
IDE trouble with 68060 + EmuTOS

Hello.

I experience strange IDE trouble with some EmuTOS builds when using WinUAE configured with 68060. It has been happening since WinUAE 3.2.0, including 3.3.0 beta 15. It worked fine with previous WinUAE versions.

Strangely, it works fine as soon as I select a CPU different than 68060. The problem can also disappear/reappear depending on the EmuTOS optimization level (-O2 or -Os).

What happens:
- at EmuTOS startup, the IDE hard disk and partition are properly detected
- I use some autostart programs. At some point, EmuTOS tries to read 31 sectors in 1 command. Then it seems that something gets out of sync, a few "IDE INT" messages are missing. See full WinUAE traces as attachment.

Normal traces:
Code:
**** IDE0 command 20 
IDE0 read off=1409, sec=31 (0) lba48=0 

IDE0 off=1409, nsec=31 (0) lba48=0 
IDE0 initial read, 15872 bytes 
IDE0 read, read 512/15872 bytes, buffer offset=0 
IDE INT 80 -> 08 

IDE0 off=1410, nsec=30 (0) lba48=0 
IDE0 read, read 512/15360 bytes, buffer offset=512 
IDE INT 08 -> 08 

IDE0 off=1411, nsec=29 (0) lba48=0 
IDE0 read, read 512/14848 bytes, buffer offset=1024 
IDE INT 08 -> 08 

... 

IDE0 off=1439, nsec=1 (0) lba48=0 
IDE0 read, read 512/512 bytes, buffer offset=15360 
IDE INT 08 -> 08 
IDE0 read finished
Notes:
- "read off" means starting sector
- (0) means that the "read multiple" command is not used
- "IDE INT 80 -> 08" indicates an interrupt, with the previous and new value of the status register
- 80 means IDE_STATUS_BSY
- 08 means IDE_STATUS_DRQ

In the case it does not work, it looks like this:
Code:
**** IDE0 command 20 
IDE0 read off=1409, sec=31 (0) lba48=0 

IDE0 off=1409, nsec=31 (0) lba48=0 
IDE0 initial read, 15872 bytes 
IDE0 read, read 512/15872 bytes, buffer offset=0 
IDE INT 80 -> 08 

IDE0 off=1410, nsec=30 (0) lba48=0 
IDE0 read, read 512/15360 bytes, buffer offset=512 
IDE INT 08 -> 08 

IDE0 off=1411, nsec=29 (0) lba48=0 
IDE0 read, read 512/14848 bytes, buffer offset=1024 
IDE INT 08 -> 08 

IDE0 off=1412, nsec=28 (0) lba48=0 
IDE0 read, read 512/14336 bytes, buffer offset=1536 
# Note: interrupt not generated! 

IDE0 off=1413, nsec=27 (0) lba48=0 
IDE0 read, read 512/13824 bytes, buffer offset=2048 
IDE INT 08 -> 08 

... 

IDE0 off=1439, nsec=1 (0) lba48=0 
IDE0 read, read 512/512 bytes, buffer offset=15360 
IDE0 read finished 
IDE INT 00 -> 08 
# Note strange 00 compared to good case.
Is there a good reason that the "IDE INT" trace is missing in some cases? And that strange "IDE INT 00 -> 08" at the end?
Could this be a WinUAE bug with very special timings? Or an EmuTOS bug?
Any hint will be welcome.
Attached Files
File Type: zip traces.zip (2.3 KB, 21 views)
BlankVector is offline  
AdSense AdSense  
 
Page generated in 0.08412 seconds with 10 queries