dirkwhoffmann/vAmiga

Support for Atari ST floppy disk file format

mithrendal opened this issue · 6 comments

If EmuTOS kickstart rom replacement is installed in vAmiga kickstart rom socket

vAmiga looks and feels like an Atari ST 🤓

IMG_0110

Here vAmiga on iPad via (vAmigaWeb)

Tried to throw some .ST disks on it failed…

PNG-Bild

It does not accept these Atari floppy disks … it seems so.

for example this disk

https://www.atarimania.com/game-atari-st-drachen_23256.html

Spiele Drachen V2.0.st.zip

Findings:

  • ST disks can be treated just as regular 720K MSDOS disks.
  • EmuTOS reports a damaged disk if drives are emulated accurately.
  • Everything works as expected if TurboDrives are selected (infinite speed).
Bildschirmfoto 2024-03-26 um 19 20 33

TODO: Find out which drive parameters (mechanical delays) cause the problem.

More findings:

  • Everything works fine if vAmiga is compiled with debug option ALIGN_HEAD = 1. This option causes the disk head to be repositioned at the beginning of a track whenever the head moves. In reality, the head will be somewhere in the middle of a track as the head can step any time.
Bildschirmfoto 2024-03-27 um 12 42 22

Bottom line: EmuTOS may (unintentionally) expect a specific disk layout, i.e., it seems to depend on two consecutive tracks to be aligned in a certain way.

Even more findings...

  • The game works fine if the track size is increased... (e.g., to 14668)
void
FloppyDisk::init(Diameter dia, Density den)
{
    diameter = dia;
    density = den;
    
    u32 trackLength = 0;
    
    if (dia == INCH_35  && den == DENSITY_DD) trackLength = 12668;
    if (dia == INCH_35  && den == DENSITY_HD) trackLength = 24636;
    if (dia == INCH_525 && den == DENSITY_DD) trackLength = 12668;
    
    if (trackLength == 0 || FORCE_DISK_INVALID_LAYOUT) {
        throw VAError(ERROR_DISK_INVALID_LAYOUT);
    }
    
    // REMOVE ASAP
    trackLength = 14668;
    
    for (isize i = 0; i < 168; i++) length.track[i] = trackLength;
    clearDisk();
}

Hi, is this the way to have a new emulator ?
VirtualSt ?
If this could be possible it would be nice !

A new VirtualST emulator would be a great idea! There are no good ST emulators for Mac, and there would be a good way to improve knowledge for TOS.
If "convert" VAmiga to VirtualST could be not too complex it would be fine to run a ST with blitter and 1MB ram emulated !
Atari hardware should be less than Amiga "multi-cpu" or something like.
Bye

I have too much on my plate to write an ST emulator myself (besides, I never had an ST, thus lacking the necessary passion for the device). What might come is an Atari 2600 emulator at some point in time (just for fun), but also not in the short term.