hello , there are some problems here !
first when i try to compile these codes i get negetive numbers while im supposed to get positive ones! i used different specifiers such as "%ld, %d , %i, %u ,and etc .and all i knew in order to check if one could give me a close answer! but no luck ...
the number i should get is sth like 1,475,365 or so , that according to my knowledge an unsigned long should give me that! or i can get such number with a "long" specifier ... any way when i try to use a long specifier i only get an irrelevant number of 136,465,321 or stuff like that ! well im using an ancient compiler name TC version 3 .. cause i need to program under dos and 16 bit based progs .. im tring on these .so a compiler like Tc can do the job for me ..but as you all know its only supports C90 standard! and i have difficulties using INT_MAX and stuff like that ...
please help me on this
and the second problem is that ..when i palce the whole structure above the "main() function " in order to use other functions to organize the whole program ... it just wont run ! it compiles without any problem ! but when i press "Enter" to start the program it just exits ! why ? !! is there any way to use functions ?
(if you notice you will see i commented a function that used to call FAT infos to be printed on screen ! thats why i commented it ! )
well, ill be really very happy if you help me n this
thanx in advance and i appreciate your kind help
Code://In the name of GOD //version 0.1.0 /* Using Structure to hold data+Floppy disk stats Original code :A Piece of COde that extracts floppy disk geometry information, its been writen in pure C and has been tested and ran seccessfully under TC 3 ... Added session:Floppy Disk Stat reader!, it is intended to show the floppy -disk information rather than its FAT info or floppy geometry! Cod3r :Seyyed HOssein hasn pour in NOvember 12th 2007 www.PersianOs.org*/ //##################Define Session###################### typedef unsigned char BYTE; typedef short int WORD; typedef int DWORD; //###################Main Session####################### void profile_1(void); //void FLOPPY_STATS(void); #include <stdio.h> #include <process.h> #include <string.h> #include <conio.h> #include <dos.h> int main(void) { //###################Structure To hold data############# struct Floppy_DISK_INFORMATION { BYTE jumpCode[3]; BYTE oemName[8]; WORD bytes_Sector; BYTE sec_Cluster; WORD size_Sector_Reserved; BYTE fatCount; WORD Max_Root_Entry; WORD Total_Sector_FS; BYTE Media_Type; WORD sectors_per_fat; WORD sectors_per_track; WORD total_Head_Count; DWORD no_Sectors_Before_Part; DWORD no_Sector_FS32; BYTE BIOS_13h_Drive_No; BYTE reserved; BYTE ext_Boot_Part_Signature; DWORD vol_Serial_Number; BYTE vol_Label_Name[11]; BYTE FS_Type[8]; BYTE boot_Code[448]; WORD signature; } fdi; //###################Declaring variables################# int j,i,start,sector,bad_counter=0,sector_counter=0; char buf[512]; profile_1(); sector =0; //#################Reading From Floppy Disk ############# if (absread (0, 1, sector,&fdi)!=0) { printf ("An Error Has Occurred!"); exit(1); } printf("Read Seccessfully !\n"); //################Printing The Infos on Consol############## printf("Floppy Disk Information: \n"); printf("===========================\n"); printf("Assembly Instruction to jump to Boot code: 0x%x\n", fdi.jumpCode); printf("OEM Name: %s\n",&fdi.oemName); printf("Bytes per sector: %d\n",fdi.bytes_Sector); printf("Sector per cluster: %d\n", fdi.sec_Cluster); printf("Size in sector for reserved area(Boot Sector): %d\n", fdi.size_Sector_Reserved); printf("Number of FATs(File Allocation Table): %d\n", fdi.fatCount); printf("Number of files for root directory: %d\n", fdi.Max_Root_Entry); printf("Number of Sectors in File System: %d\n", fdi.Total_Sector_FS); printf("Media Type\n(According to Microsoft,0xF8 == fixed disk and 0xF0 == Removable disk):0x%x\n", fdi.Media_Type); printf("Number of Sectors for each FAT: %d\n", fdi.sectors_per_fat); printf("Sectors per track: %d\n", fdi.sectors_per_track); printf("Number of head in storage device: %d\n", fdi.total_Head_Count); printf("BIOS INT13h Drive number: 0x%x\n", fdi.BIOS_13h_Drive_No); printf("Volume Serial Number: %d\n", fdi.vol_Serial_Number); printf("Volume label Name: %s\n", fdi.vol_Label_Name); printf("Boot Sector Signature: 0x%x\n", fdi.signature); //#######################FLP STATS################# for(i=0;i<=fdi.Total_Sector_FS;i++){ if (absread (0, 1,i,&fdi)!=0) //&fdi is a memory buffer that we will use to hold data { bad_counter++;}//number of bad sectors { sector_counter++;//number of used sectors } } //############declaring x and temp ############### unsigned long int x=fdi.bytes_Sector*fdi.Total_Sector_FS,y=fdi.bytes_Sector; unsigned long temp = (unsigned long)fdi.bytes_Sector * (unsigned long)fdi.Total_Sector_FS; //################################################ printf("\n ################## FLOPPY_STATS###############"); printf("\n\nYour Floppy Disk Stats are as follows\n"); printf("You have currently %ld Bytes on your Disk\n",x); printf("You have currently %d Sectors of your disk space occupied\n",sector_counter); printf("You have currently %d bad sectors in YOur Floppy Disk\n",bad_counter); printf("Total used space on YOur Floppy disk is %d %% \n",(y*sector_counter)/100); printf("Total Free space on Your Floppy disk is %d %% \n",(x)-(y*sector_counter)/100); printf("\n\nX= %d %ul %i %li\n\n",x,x,x,x); printf("YOu have currently %ld Bytes on your disk",temp); //###################End of Cods############################# printf("\n\n Programed By Seyyed Hossein Hasan Pour\n"); printf(" December 12th 2007 "); printf("\n http://www.codeguru.com/forum "); getch(); return 0; } //############This will pirnt the coder info ################ void profile_1(void) { int k; clrscr(); gotoxy(27,5); printf("In the name of God\n"); gotoxy(22,7); printf("A S.Hossein hasan pour Project\n\n"); printf ("This program will show you the information stored on sector 0 of the Floppy Disk\n\n (FAT TABLE INFORMATION).\n\n\n if you are ready press any key to continue "); for (k=0;k<=3;k++){ //delay(50); printf("."); } getch(); }



LinkBack URL
About LinkBacks



).
