Atari 8bit computers, XF-551 disk drive.

HxC Floppy emulator support for all others computers...
namachari
Posts: 59
Joined: Tue Aug 23, 2016 11:33 am

Re: Atari 8bit computers, XF-551 disk drive.

Post by namachari »

Hello again,
I posted a few videos showing the issues with the games images and the need to boot DOSXL first before the games disk would work.

After making the videos, I had an idea...
I powered the Gotek externally (seperate from the XF551 drive hardware). I then powered down just the XF551 hardware while keeping the Gotek still powered. After doing this I was again unable to boot the games disks.

...so my thought is that there is a bit of "code" on the disks that the XF551 drive uses to know it is supposed to read and write DD format. That code is present on the DOSXL image, but not on the games images. That is why I have to run DOSXL first to be able to then boot Games disks. Once powered off the XF551 defaults to SD.

Does this sound right to you?

namachari
Posts: 59
Joined: Tue Aug 23, 2016 11:33 am

Re: Atari 8bit computers, XF-551 disk drive.

Post by namachari »

ok...I did another test.
I wanted to see if it really was some "code" that loaded from the disk that initialises the drive for DD functionality. Or was it more fundamental in the way the different disk images were made.

...So I copied the content of one of the games disk images onto the DOSXL disk image using a copy program on the Atari. The resultant image would not boot. This makes me believe there really is some code in the disk that tells the drive controller that it's dealing with a DD disk, and this code is possibly missing from the games images. Not much you can do about that I guess???

Not conclusive, but possibly helpful information.

EDIT: I found this thread about density switching on the XF551. Wonder if burning a HyperXF EPROM may solve these issues:
https://atariage.com/forums/topic/10847 ... es/page/2/

namachari
Posts: 59
Joined: Tue Aug 23, 2016 11:33 am

Re: Atari 8bit computers, XF-551 disk drive.

Post by namachari »

Great News!
I burnt a HyperXF EPROM to replace the stock ROM in the drive, and now I have no trouble at all booting any of the game disk images first time. No need to load DOSXL or anything. It all just works perfectly (fingers crossed). It is also faster than the standard ROM!!!

So whatever you did to fix the translation from atr to hfe works great. Will you be incorporating that into the next HxC tools update? There are a few more atr images I'd like to get working at some stage.

Anyway, thank you very much for all your time and effort. Success!

Philip

Jeff
Site Admin
Posts: 8092
Joined: Fri Oct 20, 2006 12:12 am
Location: Paris
Contact:

Re: Atari 8bit computers, XF-551 disk drive.

Post by Jeff »

Here it is : https://hxc2001.com/download/floppy_dri ... t_beta.zip

Please test and share the non-working images (if any).
(I didn't test the double sided atr).

cube1us
Posts: 25
Joined: Wed Feb 05, 2014 12:59 am

Re: Atari 8bit computers, XF-551 disk drive.

Post by cube1us »

Jeff wrote:
Mon Dec 28, 2020 12:07 pm
namachari wrote:
Mon Dec 28, 2020 11:45 am
Unfortunately I still get a boot error
Is there an ATR version of one of your SCP dump ? (the DD version is the most interesting version)
Maybe you can generate an ATR from the SCP with a tool ?
Just today I wrote a tool to take a .img file (created from an .scp file via hxcfe) and write a .atr file. Currently single density - but I expect it would not take too much work to make a DD version of it.

(Unfortunately, it won't let me attach it as a file.)

#!/usr/bin/perl

#
# Perl program to convert a "raw" hxc disk .img file (with just the
# sector data, but it is inverted) to a .atr Atari file format
#
# Usage: hxcimgtoatr.pl [-n] [-s sectorsize] [-c sectorcount] -i <input file> -o <output file>
#
# Default sector size is 128, default sector count is 720 (Atari 810)
#
# -n designates file data will NOT be inverted
#

use Getopt::Std;
use FileHandle;
use File::stat;

#
# Process command line arguments
#

$opt_n = 0;
getopts('nc:s:i:o:') || usage();
if(!$opt_i || !$opt_o) {
usage();
}

$debug = 0;

#
# Open the files and process the sector size and count options
#

if(!open(INFILE,"<$opt_i")) {
print "Unable to open input file: $opt_i\n";
flush;
exit 8;
}
if(!open(OUTFILE,">$opt_o")) {
close(INFILE);
print "Unable to open output file: $opt_o\n";
flush;
exit 8;
}

if($opt_s) {
$sectorsize = $opt_s;
}
else {
$sectorsize = 128;
}

if($opt_c) {
$sectorcount= $opt_c;
}
else {
$sectorcount = 720;
}

binmode INFILE;
binmode OUTFILE;

#
# Check sizes, and create the .ATR file header
#

$filestats = stat($opt_i);
$filesize = $filestats -> size;
$paragraphs = int(($filesize+15) / 16);
$filesectors = $filesize / $sectorsize;
$nickatari = 0x0296;

if($filesize % $sectorsize != 0) {
print STDERR "Warning: Filesize of $filesize is not an integer multiple of sector size $sectorsize\n";
}

if($filesize / $sectorsize != $sectorcount) {
print STDERR "Warning: File size of $filesize is not equal to Sector size of $sectorsize * " .
"Sector count of $sectorcount.\n";
}

$atrheader = (pack "C6x10",$nickatari & 0xff,
$nickatari >> 8,
$paragraphs & 0xff,
($paragraphs >> 8) & 0xff,
$sectorsize & 0xff,
$sectorsize >> 8);

print OUTFILE $atrheader;

#
# Loop through the data - by default, inverting the bits in each byte
#

while($s_len = read(INFILE,$buf_s,$sectorsize)) {
if(!$opt_n) {
@mybuf = unpack "C" . $sectorsize, $buf_s;
for($i = 0; $i < $sectorsize; ++$i) {
$mybuf[$i] = ~$mybuf[$i];
}
$buf_s = pack "C" . $sectorsize, @mybuf;
}
print OUTFILE $buf_s;
}

close INFILE;
close OUTFILE;


#
# Routine to tell user how to use program.
#
sub usage() {
print "Usage: perl hxcimgtoatr.pl [-n] [-s sectorsize (128)] [-c sectorcount (720)] -i <input file> -o <output file>\n";
print " -n causes the conversion to NOT invert the input sector data.\n";
exit(1);
}

Post Reply