From eee00dfabe9f5f90d83fb68c05b77fec55907286 Mon Sep 17 00:00:00 2001 From: nick Date: Mon, 22 Oct 2001 07:15:04 +0000 Subject: re-eng tool git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2356 b3059339-0415-0410-9bf9-f77b7e298cf2 --- TOOLS/bios2dump.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ TOOLS/c | 1 + 2 files changed, 56 insertions(+) create mode 100644 TOOLS/bios2dump.c (limited to 'TOOLS') diff --git a/TOOLS/bios2dump.c b/TOOLS/bios2dump.c new file mode 100644 index 0000000000..5c9bc5a1ff --- /dev/null +++ b/TOOLS/bios2dump.c @@ -0,0 +1,55 @@ +/* + bios2dump.c - Was designed to extract BIOS of your PC and save it to file. + Usage: as argument requires DOS interrupt number in hexadecimal form. + as output - will write 64KB file which will named: SSSS_OOOO.intXX + where: SSSS - segment of BIOS interrupt handler + OOOO - offset of BIOS interrupt handler + XX - interrupt number which was passed as argument + Licence: GNU GPL v2 + Copyright: Nick Kurshev +*/ +#include +#include + +int main( int argc, char *argv[]) +{ + FILE * fd_mem, *fd_out; + unsigned short int_seg,int_off; + unsigned long bios_off; + int int_no; + size_t i; + char outname[80]; + unsigned char ch; + if(argc < 2) + { + printf("Usage: %s int_no(in hex)\n",argv[0]); + return EXIT_FAILURE; + } + int_no = strtol(argv[1],NULL,16); + if(!(fd_mem = fopen("/dev/mem","rb"))) + { + perror("Can't open file - /dev/mem"); + return EXIT_FAILURE; + } + fseek(fd_mem,int_no*4,SEEK_SET); + fread(&int_off,sizeof(unsigned short),1,fd_mem); + fread(&int_seg,sizeof(unsigned short),1,fd_mem); + sprintf(outname,"%04X_%04X.int%02X",int_seg,int_off,int_no); + if(!(fd_out = fopen(outname,"wb"))) + { + perror("Can't open file - /dev/mem"); + fclose(fd_mem); + return EXIT_FAILURE; + } + bios_off = (int_seg << 4) + int_off; + bios_off &= 0xf0000; + fseek(fd_mem,bios_off,SEEK_SET); + for(i=0;i<0x10000;i++) + { + fread(&ch,1,1,fd_mem); + fwrite(&ch,1,1,fd_out); + } + fclose(fd_out); + fclose(fd_mem); + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/TOOLS/c b/TOOLS/c index 9733123858..c96750ac55 100755 --- a/TOOLS/c +++ b/TOOLS/c @@ -1,3 +1,4 @@ +gcc bios2dump.c -o bios2dump gcc subreader.c -o subreader gcc movinfo.c -o movinfo -- cgit v1.2.3