Page 1 of 1

Need 16 bit targa images extracted from proprietary floppy

Posted: 2014-04-07T15:38:53-07:00
by rmay635703
I have an antique QLT Futura Computer Portrait system (innovion PGSIII) this was used for early animations and also by people like me for photography in ages long gone.

I would like a simple utility that downloads the targa image file off the proprietary 720k IDos III disk from the Futura.

I am able to read images and copy this disks using various disk imaging programs and have manually gotten the "image" out of the disk but the images always end up with the color maps messed up.

I am thinking a simple program that dumps the disk and extracts the targa file out would be ideal, not a whole lot of money in it but I can provide an image of one or two of the photo disks (slow connection here, if you have a place to place the files for download it would be great), really simple to copy and dump using herne data systems old software.

The disk basically has some extraneous data then the targa file and then nothing, easy to see in a hex editor but not sure how to image a non-dos disk and dump the right part to a file all in one simple step.

Anyone think imagemagick could do this? I couldn't find anything that would "find" the image since its just a bunch of hex without any real headers.

Thanx
Ryan

Re: Need 16 bit targa images extracted from proprietary flop

Posted: 2014-04-07T15:47:19-07:00
by dlemstra
You could post your image on dropbox. And do you have some more info on how you manually detected the location of the file? And how many disks are you planning to convert? Might be cheaper to do it manually.

Re: Need 16 bit targa images extracted from proprietary flop

Posted: 2014-04-07T15:50:39-07:00
by rmay635703
Cheaper to do manually but I will probably do several hundred images.
It literally should only take 15 minutes for the right person to make a program to dump the disk, I found the image location by looking at the disk in HEX, I dumped it to a file, changed the extension and deleted the useless bits so it would match up to the targa header requirement. Voila I can see the image and vaguely know what it is but sadly its all pseudo colors.

One guy gave me a bit of C code that should have dumped the disk to a file and I just needed to provide the locations of the info, sadly I couldn't get it to compile and work (my antique Hi-c may not have been up to the task, that and I only had one C++ coarse and probably botched something)

Ah well.

Re: Need 16 bit targa images extracted from proprietary flop

Posted: 2014-04-07T15:56:27-07:00
by dlemstra
What is the operating system you are working on and how do you access the disk?

Re: Need 16 bit targa images extracted from proprietary flop

Posted: 2014-04-07T16:04:55-07:00
by rmay635703
Right now I am dumping the disk using an antique program called herne data systems maxidisk.

In the past I have used other imaging programs, not sure what the best one is to dump it clean in original format.

This program basically images the whole floppy to a file, I then use a random hex editor to remove what I don't want, but this method results in a viewable but useless file because the colors are jacked up.

Right now I am playing under Windows 98 but I would prefer to be able to do it in Windows 2k or XP but 9x is OK if it needs to be done that way.

Thanx
Ryan

Re: Need 16 bit targa images extracted from proprietary flop

Posted: 2014-04-07T16:12:55-07:00
by rmay635703
been sitting on this a while, not sure it could dump a floppy with no file system though

#include <iostream>

#include <fstream>



int main ()

{

const size_t OFFSET = 0x2400;

const std::streamsize IMGSIZE = 720 * 1024 - OFFSET;



const char header [] =

{

0xDE, 0xAD, 0xC0, 0xDE, 0xDE, 0xAD, 0xC0, 0xDE,

0xDE, 0xAD, 0xC0, 0xDE, 0xDE, 0xAD, 0xC0, 0xDE,

0xDE, 0xAD, 0xC0, 0xDE, 0xDE, 0xAD, 0xC0, 0xDE,

0xDE, 0xAD, 0xC0, 0xDE, 0xDE, 0xAD, 0xC0, 0xDE

};



char buffer [IMGSIZE];

std::ifstream img;

std::streamoff length;



img.exceptions (std::ios::failbit | std::ios::badbit);

try

{

img.open ("\\\\.\\A:", std::ios::in);



img.seekg (OFFSET, std::ios::beg);

img.read (buffer, sizeof (buffer));

length = img.tellg ();

if (length == -1)

{

std::cerr << "Unable to determine the length of the "

"read-in data, aborting." << std::endl;

return 1;

}

else

length -= OFFSET;

img.close ();

}

catch (std::ifstream::failure &e)

{

std::cerr << "Unable to load the image: " << e.what () <<

std::endl;

return 2;

}



std::ofstream writeout;



writeout.exceptions (std::ios::failbit | std::ios::badbit);

try

{

writeout.open ("extracted.tga", std::ios::out);

writeout.write (header, sizeof (header));

writeout.write (buffer, length);

writeout.close ();



std::cout << "Wrote " << length + sizeof (header) <<

" bytes of data." << std::endl;

}

catch (std::ofstream::failure &e)

{

std::cerr << "Unable to write out the image: " << e.what () <<

std::endl;

return 3;

}



return 0;

}



The basic idea is that if you open \\.\A:, it works as a bag of bits. (The only time you need to bother with cylinders, heads and sectors is if you're writing a floppy bootloader, since the BIOS services to access a floppy disk only understand cylinders heads and sectors. For everything else, the BIOS supports the use of logical block addressing, i.e. LBA, which makes the device look like an array of sectors indexed by sector number. And all modern OSes let you access devices as bags of bits just like any other file.)

Re: Need 16 bit targa images extracted from proprietary flop

Posted: 2014-04-07T16:38:11-07:00
by dlemstra
Can you post the dump of the disk on dropbox (https://www.dropbox.com)?