Controlling Floppy Disk Head using C

Thread Solved
Reply

Join Date: Dec 2008
Posts: 7
Reputation: dinklebaga is an unknown quantity at this point 
Solved Threads: 0
dinklebaga dinklebaga is offline Offline
Newbie Poster

Controlling Floppy Disk Head using C

 
0
  #1
Dec 30th, 2008
Hi All,
I am researching writing a program in C that will allow me to control the read/write on a FDD and then to move onto HDD's. I have been given some code that will allow me to do this by one of my lecturers but uses the DOS.H library which the commands for controlling and storing data in the general purpose registers AH,AL,CX and DX are now redundant as i understand they were not carried forward onto 32-bit processor architecture for whatever reason.
While trying to look for a solution to this i noticed something about using Assembler code within the C (inline) to control the registers but i am wondering what is the best way to go about doing this. I am not looking for a program that already does this as it would defeat the point and not aid in my understanding.
If i were to use assembler code within the C would i be able pass through values that would allow me to write a file from a hard disk into specific sectors on a floopy? For the project i'm doing i cannot use the standard fwrite or fprintf functions available because i need to do it without the file system (FAT) being corrupted. Any help or links would be greatly appreciated.
Thanks,
Dinklebaga
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 5,851
Reputation: Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute 
Solved Threads: 749
Team Colleague
Salem's Avatar
Salem Salem is offline Offline
Void main'ers are DOOMed

Re: Controlling Floppy Disk Head using C

 
0
  #2
Dec 30th, 2008
Well the first thing you need to tell us is which OS you're using, and which compiler.

As you've already discovered, this kind of direct access to the hardware is highly specific to your own circumstances.
Reply With Quote Quick reply to this message  
Join Date: Dec 2008
Posts: 7
Reputation: dinklebaga is an unknown quantity at this point 
Solved Threads: 0
dinklebaga dinklebaga is offline Offline
Newbie Poster

Re: Controlling Floppy Disk Head using C

 
0
  #3
Dec 30th, 2008
Sorry Salem but the system i need to build on is on multiple OS's but so far i have worked on Linux and Windows XP using a MinGW C compiler.
Thanks
Dinklebaga
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 5,851
Reputation: Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute 
Solved Threads: 749
Team Colleague
Salem's Avatar
Salem Salem is offline Offline
Void main'ers are DOOMed

Re: Controlling Floppy Disk Head using C

 
0
  #4
Dec 31st, 2008
Conceptually, you'll need 4 files.

main.c - the portable part of your application, and #includes port.h
port.h - your abstracted interface to your floppy, with say move_head(int track);
port_win32.c - implements move_head(int track) and the rest of the API, for win32
port_linux.c - implements move_head(int track) and the rest of the API, for linux. If possible, try to do this using the POSIX API as much as possible. It'll save time when moving to other POSIX systems.

When you build a system, you choose (in your project / makefile) the appropriate port_xxx.c for the environment in which you're working.

Do you have specific questions for specific platforms still?
Reply With Quote Quick reply to this message  
Join Date: Dec 2008
Posts: 7
Reputation: dinklebaga is an unknown quantity at this point 
Solved Threads: 0
dinklebaga dinklebaga is offline Offline
Newbie Poster

Re: Controlling Floppy Disk Head using C

 
0
  #5
Jan 3rd, 2009
You are suggesting using the POSIX API's as much as possible but as far as i know these aren't supported within the MinGW Compiler for windows, would it be preferable to change the compiler i have to Cygwin which does or are there ways round this on the Windows based system?
Thanks,
Dinklebaga
Reply With Quote Quick reply to this message  
Join Date: Dec 2005
Posts: 5,851
Reputation: Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute Salem has a reputation beyond repute 
Solved Threads: 749
Team Colleague
Salem's Avatar
Salem Salem is offline Offline
Void main'ers are DOOMed

Re: Controlling Floppy Disk Head using C

 
0
  #6
Jan 3rd, 2009
>You are suggesting using the POSIX API's as much as possible
Only for true POSIX systems.

> would it be preferable to change the compiler i have to Cygwin which does
I dunno - that's for you to research.
From what you describe, it might be pushing it too much.
Reply With Quote Quick reply to this message  
Join Date: Dec 2008
Posts: 7
Reputation: dinklebaga is an unknown quantity at this point 
Solved Threads: 0
dinklebaga dinklebaga is offline Offline
Newbie Poster

Re: Controlling Floppy Disk Head using C

 
0
  #7
Jan 3rd, 2009
Many thanks for your help Salem
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:



Other Threads in the C Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC