After installing djgpp I tried to compile the source file "hed.c" . My system type is Windows XP sp2, gcc version is 4.1.2, (target djgpp); configuration build is as follows: /gnu/gcc-4.12/configure djgpp --prefix=/dev/env/DJDIR --disable-nls --disable-werror --enable-languages=c,c++,fortran,objc,obj-c++,ada . The command line was "gcc hed.c -o hed.exe"; the intermediate output was : # 1 "hed.c" # 1 "<built-in>" # 1 "<command line>" # 1 "d:/djgpp/bin/../lib/gcc/djgpp/4.12/djgpp.ver" 1 # 1 "d:/djgpp/include/sys/version.h" 1 3 4 # 2 "d:/djgpp/bin/../lib/gcc/djgpp/4.12/djgpp.ver" 2 # 1 "<command line>" 2 # 1 "hed.c" # 12 "hed.c" # 1 "d:/djgpp/include/stdio.h" 1 3 4 # 13 "d:/djgpp/include/stdio.h" 3 4 # 1 "d:/djgpp/include/sys/version.h" 1 3 4 # 14 "d:/djgpp/include/stdio.h" 2 3 4 # 1 "d:/djgpp/include/sys/djtypes.h" 1 3 4 # 15 "d:/djgpp/include/stdio.h" 2 3 4 # 35 "d:/djgpp/include/stdio.h" 3 4 typedef __builtin_va_list va_list;
typedef long unsigned int size_t; typedef struct { int _cnt; char *_ptr; char *_base; int _bufsiz; int _flag; int _file; char *_name_to_remove; int _fillsize; } FILE; typedef unsigned long fpos_t; extern FILE __dj_stdin, __dj_stdout, __dj_stderr; void clearerr(FILE *_stream); int fclose(FILE *_stream); int feof(FILE *_stream); int ferror(FILE *_stream); int fflush(FILE *_stream); int fgetc(FILE *_stream); int fgetpos(FILE *_stream, fpos_t *_pos); char * fgets(char *_s, int _n, FILE *_stream); FILE * fopen(const char *_filename, const char *_mode); int fprintf(FILE *_stream, const char *_format, ...); int fputc(int _c, FILE *_stream); int fputs(const char *_s, FILE *_stream); size_t fread(void *_ptr, size_t _size, size_t _nelem, FILE *_stream); FILE * freopen(const char *_filename, const char *_mode, FILE *_stream); int fscanf(FILE *_stream, const char *_format, ...); int fseek(FILE *_stream, long _offset, int _mode); int fsetpos(FILE *_stream, const fpos_t *_pos); long ftell(FILE *_stream); size_t fwrite(const void *_ptr, size_t _size, size_t _nelem, FILE *_stream); int getc(FILE *_stream); int getchar(void); char * gets(char *_s); void perror(const char *_s); int printf(const char *_format, ...); int putc(int _c, FILE *_stream); int putchar(int _c); int puts(const char *_s); int remove(const char *_filename); int rename(const char *_old, const char *_new); void rewind(FILE *_stream); int scanf(const char *_format, ...); void setbuf(FILE *_stream, char *_buf); int setvbuf(FILE *_stream, char *_buf, int _mode, size_t _size); int sprintf(char *_s, const char *_format, ...); int sscanf(const char *_s, const char *_format, ...); FILE * tmpfile(void); char * tmpnam(char *_s); int ungetc(int _c, FILE *_stream); int vfprintf(FILE *_stream, const char *_format, va_list _ap); int vprintf(const char *_format, va_list _ap); int vsprintf(char *_s, const char *_format, va_list _ap); int fileno(FILE *_stream); FILE * fdopen(int _fildes, const char *_type); int pclose(FILE *_pf); FILE * popen(const char *_command, const char *_mode); extern FILE __dj_stdprn, __dj_stdaux; void _djstat_describe_lossage(FILE *_to_where); int _doprnt(const char *_fmt, va_list _args, FILE *_f); int _doscan(FILE *_f, const char *_fmt, void **_argp); int _doscan_low(FILE *, int (*)(FILE *_get), int (*_unget)(int, FILE *), const char *_fmt, void **_argp); int fpurge(FILE *_f); int getw(FILE *_f); int mkstemp(char *_template); char * mktemp(char *_template); int putw(int _v, FILE *_f); void setbuffer(FILE *_f, void *_buf, int _size); void setlinebuf(FILE *_f); char * tempnam(const char *_dir, const char *_prefix); int _rename(const char *_old, const char *_new); int vfscanf(FILE *_stream, const char *_format, va_list _ap); int vscanf(const char *_format, va_list _ap); int vsscanf(const char *_s, const char *_format, va_list _ap); # 13 "hed.c" 2 # 1 "d:/djgpp/include/conio.h" 1 3 4 # 17 "d:/djgpp/include/conio.h" 3 4 extern int directvideo; extern int _wscroll; struct text_info { unsigned char winleft; unsigned char wintop; unsigned char winright; unsigned char winbottom; unsigned char attribute; unsigned char normattr; unsigned char currmode; unsigned char screenheight; unsigned char screenwidth; unsigned char curx; unsigned char cury; }; enum text_modes { LASTMODE=-1, BW40=0, C40, BW80, C80, MONO=7, C4350=64 }; enum COLORS { BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE }; void blinkvideo(void); char * cgets(char *_str); void clreol(void); void clrscr(void); int _conio_kbhit(void); int cprintf(const char *_format, ...) __attribute__((format(printf,1,2))); int cputs(const char *_str); int cscanf(const char *_format, ...) __attribute__((format(scanf,1,2))); void delline(void); int getch(void); int getche(void); int gettext(int _left, int _top, int _right, int _bottom, void *_destin); void gettextinfo(struct text_info *_r); void gotoxy(int _x, int _y); void gppconio_init(void); void highvideo(void); void insline(void); void intensevideo(void); void lowvideo(void); int movetext(int _left, int _top, int _right, int _bottom, int _destleft, int _desttop); void normvideo(void); int putch(int _c); int puttext(int _left, int _top, int _right, int _bottom, void *_source); void _setcursortype(int _type); void _set_screen_lines(int _nlines); void textattr(int _attr); void textbackground(int _color); void textcolor(int _color); void textmode(int _mode); int ungetch(int); int wherex(void); int wherey(void); void window(int _left, int _top, int _right, int _bottom); # 14 "hed.c" 2 # 1 "d:/djgpp/include/dos.h" 1 3 4 # 13 "d:/djgpp/include/dos.h" 3 4 # 1 "d:/djgpp/include/pc.h" 1 3 4 # 17 "d:/djgpp/include/pc.h" 3 4 unsigned char inportb (unsigned short _port); unsigned short inportw (unsigned short _port); unsigned long inportl (unsigned short _port); void inportsb (unsigned short _port, unsigned char *_buf, unsigned _len); void inportsw (unsigned short _port, unsigned short *_buf, unsigned _len); void inportsl (unsigned short _port, unsigned long *_buf, unsigned _len); void outportb (unsigned short _port, unsigned char _data); void outportw (unsigned short _port, unsigned short _data); void outportl (unsigned short _port, unsigned long _data); void outportsb(unsigned short _port, const unsigned char *_buf, unsigned _len); void outportsw(unsigned short _port, const unsigned short *_buf, unsigned _len); void outportsl(unsigned short _port, const unsigned long *_buf, unsigned _len); unsigned char inp(unsigned short _port); unsigned short inpw(unsigned short _port); void outp(unsigned short _port, unsigned char _data); void outpw(unsigned short _port, unsigned short _data); int getkey(void); int getxkey(void); void sound(int _frequency); extern unsigned char ScreenAttrib; int ScreenMode(void); int ScreenRows(void); int ScreenCols(void); void ScreenPutChar(int _ch, int _attr, int _x, int _y); void ScreenGetChar(int *_ch, int *_attr, int _x, int _y); void ScreenPutString(const char *_ch, int _attr, int _x, int _y); void ScreenSetCursor(int _row, int _col); void ScreenGetCursor(int *_row, int *_col); void ScreenClear(void); void ScreenUpdate(const void *_virtual_screen); void ScreenUpdateLine(const void *_virtual_screen_line, int _row); void ScreenRetrieve(void *_virtual_screen); void ScreenVisualBell(void); # 1 "d:/djgpp/include/inlines/pc.h" 1 3 4 # 10 "d:/djgpp/include/inlines/pc.h" 3 4 extern __inline__ unsigned char inportb (unsigned short _port) { unsigned char rv; __asm__ __volatile__ ("inb %1, %0" : "=a" (rv) : "dN" (_port)); return rv; } extern __inline__ unsigned short inportw (unsigned short _port) { unsigned short rv; __asm__ __volatile__ ("inw %1, %0" : "=a" (rv) : "dN" (_port)); return rv; } extern __inline__ unsigned long inportl (unsigned short _port) { unsigned long rv; __asm__ __volatile__ ("inl %1, %0" : "=a" (rv) : "dN" (_port)); return rv; } extern __inline__ void outportb (unsigned short _port, unsigned char _data) { __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data)); } extern __inline__ void outportw (unsigned short _port, unsigned short _data) { __asm__ __volatile__ ("outw %1, %0" : : "dN" (_port), "a" (_data)); } extern __inline__ void outportl (unsigned short _port, unsigned long _data) { __asm__ __volatile__ ("outl %1, %0" : : "dN" (_port), "a" (_data)); } # 69 "d:/djgpp/include/pc.h" 2 3 4 # 14 "d:/djgpp/include/dos.h" 2 3 4 extern int _8087; int _detect_80387(void); struct DWORDREGS { unsigned long edi; unsigned long esi; unsigned long ebp; unsigned long cflag; unsigned long ebx; unsigned long edx; unsigned long ecx; unsigned long eax; unsigned short eflags; }; struct DWORDREGS_W { unsigned long di; unsigned long si; unsigned long bp; unsigned long cflag; unsigned long bx; unsigned long dx; unsigned long cx; unsigned long ax; unsigned short flags; }; struct WORDREGS { unsigned short di, _upper_di; unsigned short si, _upper_si; unsigned short bp, _upper_bp; unsigned short cflag, _upper_cflag; unsigned short bx, _upper_bx; unsigned short dx, _upper_dx; unsigned short cx, _upper_cx; unsigned short ax, _upper_ax; unsigned short flags; }; struct BYTEREGS { unsigned short di, _upper_di; unsigned short si, _upper_si; unsigned short bp, _upper_bp; unsigned long cflag; unsigned char bl; unsigned char bh; unsigned short _upper_bx; unsigned char dl; unsigned char dh; unsigned short _upper_dx; unsigned char cl; unsigned char ch; unsigned short _upper_cx; unsigned char al; unsigned char ah; unsigned short _upper_ax; unsigned short flags; }; union REGS { struct DWORDREGS d; struct DWORDREGS_W x; struct WORDREGS w; struct BYTEREGS h; }; struct SREGS { unsigned short es; unsigned short ds; unsigned short fs; unsigned short gs; unsigned short cs; unsigned short ss; }; struct ftime { unsigned ft_tsec:5; unsigned ft_min:6; unsigned ft_hour:5; unsigned ft_day:5; unsigned ft_month:4; unsigned ft_year:7; }; struct date { short da_year; char da_day; char da_mon; }; struct time { unsigned char ti_min; unsigned char ti_hour; unsigned char ti_hund; unsigned char ti_sec; }; struct dfree { unsigned df_avail; unsigned df_total; unsigned df_bsec; unsigned df_sclus; }; extern unsigned short _osmajor, _osminor; extern const char * _os_flavor; extern int _doserrno; unsigned short _get_dos_version(int); int int86(int ivec, union REGS *in, union REGS *out); int int86x(int ivec, union REGS *in, union REGS *out, struct SREGS *seg); int intdos(union REGS *in, union REGS *out); int intdosx(union REGS *in, union REGS *out, struct SREGS *seg); int bdos(int func, unsigned dx, unsigned al); int bdosptr(int func, void *dx, unsigned al); int enable(void); int disable(void); int getftime(int handle, struct ftime *ftimep); int setftime(int handle, struct ftime *ftimep); int getcbrk(void); int setcbrk(int new_value); void getdate(struct date *); void gettime(struct time *); void setdate(struct date *); void settime(struct time *); void getdfree(unsigned char drive, struct dfree *ptr); void delay(unsigned msec); # 186 "d:/djgpp/include/dos.h" 3 4 struct _dosdate_t { unsigned char day; unsigned char month; unsigned short year; unsigned char dayofweek; }; struct _dostime_t { unsigned char hour; unsigned char minute; unsigned char second; unsigned char hsecond; }; struct _find_t { char reserved[21] __attribute__((packed)); unsigned char attrib __attribute__((packed)); unsigned short wr_time __attribute__((packed)); unsigned short wr_date __attribute__((packed)); unsigned long size __attribute__((packed)); char name[256] __attribute__((packed)); }; struct _diskfree_t { unsigned short total_clusters; unsigned short avail_clusters; unsigned short sectors_per_cluster; unsigned short bytes_per_sector; }; struct _DOSERROR { int exterror; char class; char action; char locus; }; unsigned int _dos_creat(const char *_filename, unsigned int _attr, int *_handle); unsigned int _dos_creatnew(const char *_filename, unsigned int _attr, int *_handle); unsigned int _dos_open(const char *_filename, unsigned int _mode, int *_handle); unsigned int _dos_write(int _handle, const void *_buffer, unsigned int _count, unsigned int *_result); unsigned int _dos_read(int _handle, void *_buffer, unsigned int _count, unsigned int *_result); unsigned int _dos_close(int _handle); unsigned int _dos_commit(int _handle); unsigned int _dos_findfirst(const char *_name, unsigned int _attr, struct _find_t *_result); unsigned int _dos_findnext(struct _find_t *_result); void _dos_getdate(struct _dosdate_t *_date); unsigned int _dos_setdate(struct _dosdate_t *_date); void _dos_gettime(struct _dostime_t *_time); unsigned int _dos_settime(struct _dostime_t *_time); unsigned int _dos_getftime(int _handle, unsigned int *_p_date, unsigned int *_p_time); unsigned int _dos_setftime(int _handle, unsigned int _date, unsigned int _time); unsigned int _dos_getfileattr(const char *_filename, unsigned int *_p_attr); unsigned int _dos_setfileattr(const char *_filename, unsigned int _attr); void _dos_getdrive(unsigned int *_p_drive); void _dos_setdrive(unsigned int _drive, unsigned int *_p_drives); unsigned int _dos_getdiskfree(unsigned int _drive, struct _diskfree_t *_diskspace); int _dosexterr(struct _DOSERROR *_p_error); # 15 "hed.c" 2 # 1 "d:/djgpp/include/dir.h" 1 3 4 # 21 "d:/djgpp/include/dir.h" 3 4 #pragma pack(1) struct ffblk { char lfn_magic[6] __attribute__((packed)); short lfn_handle __attribute__((packed)); unsigned short lfn_ctime __attribute__((packed)); unsigned short lfn_cdate __attribute__((packed)); unsigned short lfn_atime __attribute__((packed)); unsigned short lfn_adate __attribute__((packed)); char _ff_reserved[5] __attribute__((packed)); unsigned char ff_attrib __attribute__((packed)); unsigned short ff_ftime __attribute__((packed)); unsigned short ff_fdate __attribute__((packed)); unsigned long ff_fsize __attribute__((packed)); char ff_name[260] __attribute__((packed)); }; struct ffblklfn { unsigned long fd_attrib __attribute__((packed)); unsigned long long fd_ctime __attribute__((packed)); unsigned long long fd_atime __attribute__((packed)); unsigned long long fd_mtime __attribute__((packed)); unsigned long fd_sizehi __attribute__((packed)); unsigned long fd_size __attribute__((packed)); unsigned long long fd_reserved __attribute__((packed)); char fd_longname[260] __attribute__((packed)); char fd_name[14] __attribute__((packed)); }; #pragma pack(4) # 72 "d:/djgpp/include/dir.h" 3 4 int __file_tree_walk(const char *_dir, int (*_fn)(const char *_path, const struct ffblk *_ff)); int findfirst(const char *_pathname, struct ffblk *_ffblk, int _attrib); int findnext(struct ffblk *_ffblk); void fnmerge (char *_path, const char *_drive, const char *_dir, const char *_name, const char *_ext); int fnsplit (const char *_path, char *_drive, char *_dir, char *_name, char *_ext); int getdisk(void); char * searchpath(const char *_program); int setdisk(int _drive); # 16 "hed.c" 2 # 1 "d:/djgpp/include/bios.h" 1 3 4 # 16 "d:/djgpp/include/bios.h" 3 4 int bioscom(int _cmd, char _data, int _port); int biosdisk(int _cmd, int _drive, int _head, int _track, int _sector, int _nsects, void *_buffer); int biosequip(void); int bioskey(int cmd); int biosmemory(void); int biosprint(int _cmd, int _byte, int _port); long biostime(int _cmd, long _newtime); struct _diskinfo_t { unsigned drive; unsigned head; unsigned track; unsigned sector; unsigned nsectors; void *buffer; }; # 98 "d:/djgpp/include/bios.h" 3 4 unsigned _bios_disk(unsigned _cmd, struct _diskinfo_t *_di); unsigned _bios_timeofday(unsigned _cmd, unsigned long *_timeval); # 17 "hed.c" 2 # 1 "d:/djgpp/include/ctype.h" 1 3 4 # 11 "d:/djgpp/include/ctype.h" 3 4 int isalnum(int c); int isalpha(int c); int iscntrl(int c); int isdigit(int c); int isgraph(int c); int islower(int c); int isprint(int c); int ispunct(int c); int isspace(int c); int isupper(int c); int isxdigit(int c); int tolower(int c); int toupper(int c); # 1 "d:/djgpp/include/inlines/ctype.ha" 1 3 4 # 16 "d:/djgpp/include/inlines/ctype.ha" 3 4 extern unsigned short __dj_ctype_flags[]; extern unsigned char __dj_ctype_toupper[]; extern unsigned char __dj_ctype_tolower[]; # 27 "d:/djgpp/include/ctype.h" 2 3 4 int isascii(int c); int toascii(int c); # 1 "d:/djgpp/include/inlines/ctype.hd" 1 3 4 # 38 "d:/djgpp/include/ctype.h" 2 3 4 # 18 "hed.c" 2 # 1 "d:/djgpp/include/dirent.h" 1 3 4 # 16 "d:/djgpp/include/dirent.h" 3 4 typedef struct __dj_DIR DIR; struct dirent { char d_namlen; char d_name[256]; }; int closedir(DIR *dirp); DIR * opendir(const char *_dirname); struct dirent * readdir(DIR *_dirp); void rewinddir(DIR *_dirp); extern int __opendir_flags; void seekdir(DIR *_dir, long _loc); long telldir(DIR *_dir); void __set_need_fake_dot_dotdot(DIR *_dir); void _lfn_find_close(int _handle); # 19 "hed.c" 2 # 1 "d:/djgpp/include/stdlib.h" 1 3 4 # 24 "d:/djgpp/include/stdlib.h" 3 4 extern int __dj_mb_cur_max; typedef struct { int quot; int rem; } div_t; typedef struct { long quot; long rem; } ldiv_t; typedef unsigned short wchar_t; void abort(void) __attribute__((noreturn)); int abs(int _i); int atexit(void (*_func)(void)); double atof(const char *_s); int atoi(const char *_s); long atol(const char *_s); void * bsearch(const void *_key, const void *_base, size_t _nelem, size_t _size, int (*_cmp)(const void *_ck, const void *_ce)); void * calloc(size_t _nelem, size_t _size); div_t div(int _numer, int _denom); void exit(int _status) __attribute__((noreturn)); void free(void *_ptr); char * getenv(const char *_name); long labs(long _i); ldiv_t ldiv(long _numer, long _denom); void * malloc(size_t _size); int mblen(const char *_s, size_t _n); size_t mbstowcs(wchar_t *_wcs, const char *_s, size_t _n); int mbtowc(wchar_t *_pwc, const char *_s, size_t _n); void qsort(void *_base, size_t _nelem, size_t _size, int (*_cmp)(const void *_e1, const void *_e2)); int rand(void); void * realloc(void *_ptr, size_t _size); void srand(unsigned _seed); double strtod(const char *_s, char **_endptr); long strtol(const char *_s, char **_endptr, int _base); unsigned long strtoul(const char *_s, char **_endptr, int _base); int system(const char *_s); size_t wcstombs(char *_s, const wchar_t *_wcs, size_t _n); int wctomb(char *_s, wchar_t _wchar); typedef struct { long long quot; long long rem; } lldiv_t; void * alloca(size_t _size); long double _atold(const char *_s); long long atoll(const char *_s); void cfree(void *_ptr); double drand48(void); char * ecvtbuf(double _val, int _nd, int *_dp, int *_sn, char *_bf); char * ecvt(double _val, int _nd, int *_dp, int *_sn); double erand48(unsigned short state[3]); char * fcvtbuf(double _val, int _nd, int *_dp, int *_sn, char *_bf); char * fcvt(double _val, int _nd, int *_dp, int *_sn); char * gcvt(double _val, int _nd, char *_buf); char * getpass(const char *_prompt); int getlongpass(const char *_prompt, char *_buffer, int _max_len); char * itoa(int value, char *buffer, int radix); long jrand48(unsigned short state[3]); long long llabs(long long _i); lldiv_t lldiv(long long _numer, long long _denom); void lcong48(unsigned short param[7]); unsigned long lrand48(void); long mrand48(void); unsigned long nrand48(unsigned short state[3]); int putenv(const char *_val); unsigned short *seed48(unsigned short state_seed[3]); int setenv(const char *_var, const char *_val, int _replace); void srand48(long seedval); int stackavail(void); long double _strtold(const char *_s, char **_endptr); long long strtoll(const char *_s, char **_endptr, int _base); unsigned long long strtoull(const char *_s, char **_endptr, int _base); void swab(const void *from, void *to, int nbytes); char * initstate (unsigned _seed, char *_arg_state, int _n); char * setstate(char *_arg_state); long random(void); int srandom(int _seed); # 140 "d:/djgpp/include/stdlib.h" 3 4 extern int __system_flags; # 20 "hed.c" 2 # 1 "d:/djgpp/include/string.h" 1 3 4 # 19 "d:/djgpp/include/string.h" 3 4 void * memchr(const void *_s, int _c, size_t _n); int memcmp(const void *_s1, const void *_s2, size_t _n); void * memcpy(void *_dest, const void *_src, size_t _n); void * memmove(void *_s1, const void *_s2, size_t _n); void * memset(void *_s, int _c, size_t _n); char * strcat(char *_s1, const char *_s2); char * strchr(const char *_s, int _c); int strcmp(const char *_s1, const char *_s2); int strcoll(const char *_s1, const char *_s2); char * strcpy(char *_s1, const char *_s2); size_t strcspn(const char *_s1, const char *_s2); char * strerror(int _errcode); size_t strlen(const char *_s); char * strncat(char *_s1, const char *_s2, size_t _n); int strncmp(const char *_s1, const char *_s2, size_t _n); char * strncpy(char *_s1, const char *_s2, size_t _n); char * strpbrk(const char *_s1, const char *_s2); char * strrchr(const char *_s, int _c); size_t strspn(const char *_s1, const char *_s2); char * strstr(const char *_s1, const char *_s2); char * strtok(char *_s1, const char *_s2); size_t strxfrm(char *_s1, const char *_s2, size_t _n); # 1 "d:/djgpp/include/sys/movedata.h" 1 3 4 # 18 "d:/djgpp/include/sys/movedata.h" 3 4 # 27 "d:/djgpp/include/sys/movedata.h" 3 4 void dosmemget(unsigned long _offset, size_t _length, void *_buffer); void dosmemput(const void *_buffer, size_t _length, unsigned long _offset); void _dosmemgetb(unsigned long _offset, size_t _xfers, void *_buffer); void _dosmemgetw(unsigned long _offset, size_t _xfers, void *_buffer); void _dosmemgetl(unsigned long _offset, size_t _xfers, void *_buffer); void _dosmemputb(const void *_buffer, size_t _xfers, unsigned long _offset); void _dosmemputw(const void *_buffer, size_t _xfers, unsigned long _offset); void _dosmemputl(const void *_buffer, size_t _xfers, unsigned long _offset); void movedata(unsigned _source_selector, unsigned _source_offset, unsigned _dest_selector, unsigned _dest_offset, size_t _length); void _movedatab(unsigned, unsigned, unsigned, unsigned, size_t); void _movedataw(unsigned, unsigned, unsigned, unsigned, size_t); void _movedatal(unsigned, unsigned, unsigned, unsigned, size_t); # 51 "d:/djgpp/include/string.h" 2 3 4 int bcmp(const void *_ptr1, const void *_ptr2, int _length); void * bcopy(const void *_a, void *_b, size_t _len); int ffs(int _mask); char * index(const char *_string, int _c); void * memccpy(void *_to, const void *_from, int c, size_t n); int memicmp(const void *_s1, const void *_s2, size_t _n); char * rindex(const char *_string, int _c); char * stpcpy(char *_dest, const char *_src); char * strdup(const char *_s); char * strlwr(char *_s); int strcasecmp(const char *_s1, const char *_s2); int stricmp(const char *_s1, const char *_s2); int strncasecmp(const char *_s1, const char *_s2, size_t _n); int strnicmp(const char *_s1, const char *_s2, size_t _n); char * strsep(char **_stringp, const char *_delim); char * strupr(char *_s); # 21 "hed.c" 2 # 38 "hed.c" struct boot { unsigned char code[3] ; unsigned char system_id[8] ; int bytes_per_sec ; char sec_per_clus ; int res_sec ; char fat_copies ; int root_dir_entry ; unsigned int no_sects ; unsigned char format_id ; int sec_per_fat ; int sec_per_trk ; int no_sides ; int no_sp_res_sect ; unsigned char rest_code[482] ; } ; struct boot b ; struct ffblk ffblk; unsigned char buff[512],temp[512]; char fl[512][14]; int drive,head,track,sector,lsect,maxc,i,i5=0,i6=0,x,y,a,indicator,of=0,ftp=1; FILE *fp1; FILE *fs; static int x1=2; void update(int i); void filemode(); void dispfl(char *fl); void help(); void part(); void disclam(); void chdr(char a); char *getascii (unsigned int in_data [], int off_start, int off_end); void lay() { int p,q; gotoxy(1,1); textcolor(15); cprintf(" Disk Editor(version 2.0) "); for(q=2;q<=24;q++) {gotoxy(1,q); cprintf("%c",186); gotoxy(80,q); cprintf("%c",186); } for(p=2;p<80;p++) { gotoxy(p,24); cprintf("%c",205);} gotoxy(80,24); cprintf("%c",188); gotoxy(1,24); cprintf("%c",200); for(p=2;p<25;p++) {gotoxy(p,1); cprintf("%c",205);} for(p=53;p<80;p++) {gotoxy(p,1); cprintf("%c",205);} gotoxy(1,1); cprintf("%c",201); gotoxy(80,1); cprintf("%c",187); } void hdinfo () { unsigned int dd [256]; unsigned int dd_off; unsigned int loop=0; int num_drv; union REGS registers; unsigned int bios_cyl [2], bios_head [2], bios_sec [2]; while (inp (0x1F7) != 0x50) ; outp (0x1F6, 0xA0 ); outp (0x1F7, 0xEC); while (inp (0x1F7) != 0x58) ; for (dd_off = 0; dd_off != 256; dd_off++) dd [dd_off] = inpw (0x1F0); registers.h.ah = 0x8; registers.h.dl = 0x80 ; int86 (0x13, ®isters, ®isters); if (! registers.x.cflag) { bios_head [loop] = registers.h.dh + 1; bios_sec [loop] = registers.h.cl & 0x3F; bios_cyl [loop] = ((registers.h.cl & 0xC0) << 2) + registers.h.ch + 2; } gotoxy(2,2); printf ( " DRIVE %d:\n", loop); gotoxy(2,3); printf ( " Model Number______________________: %s\n", getascii (dd, 27, 46)); gotoxy(2,4); printf ( " Serial Number_____________________: %s\n", getascii (dd, 10, 19)); gotoxy(2,5); printf ( " Controller Revision Number________: %s\n\n", getascii (dd, 23, 26)); gotoxy(2,7); printf ( " Able to do Double Word Transfer___: %6s\n", (dd [48] == 0 ? "No" : "Yes")); gotoxy(2,8); printf ( " Controller type___________________: %04X\n", dd [20]); gotoxy(2,9); printf ( " Controller buffer size (bytes)____: %6u\n", dd [21] * 512); gotoxy(2,10); printf ( " Number of ECC bytes transferred___: %6u\n", dd [22]); gotoxy(2,11); printf ( " Number of sectors per interrupt___: %6u\n\n", dd [47]); gotoxy(2,13); printf ( " Hard Disk Reports\n"); gotoxy(2,14); printf ( " Number of Cylinders (Fixed)_______: %6u\n", dd [1]); gotoxy(2,15); printf ( " Number of Heads___________________: %6u\n", dd [3]); gotoxy(2,16); printf ( " Number of Sectors per Track_______: %6u\n\n", dd [6]); gotoxy(2,18); printf ( " BIOS Reports\n"); gotoxy(2,19); printf ( " Number of Cylinders_______________: %6u\n", bios_cyl [loop]); gotoxy(2,20); printf ( " Number of Heads___________________: %6u\n", bios_head [loop]); gotoxy(2,21); printf ( " Number of Sectors per Track_______: %6u\n\n", bios_sec [loop]); gotoxy(49,23); printf ( "press a key to continue...."); getch (); part(); } char *getascii (unsigned int in_data [], int off_start, int off_end) { static char ret_val [255]; int loop, loop1; for (loop = off_start, loop1 = 0; loop <= off_end; loop++) { ret_val [loop1++] = (char) (in_data [loop] / 256); ret_val [loop1++] = (char) (in_data [loop] % 256); } ret_val [loop1] = '\0'; return (ret_val); } void part() { struct partition { unsigned char bootable ; unsigned char start_side ; unsigned int start_sec_cyl ; unsigned char parttype ; unsigned char end_side ; unsigned int end_sec_cyl ; unsigned long part_beg ; unsigned long plen ; } ; struct part { unsigned char master_boot[446] ; struct partition pt[4] ; int lasttwo ; } ; struct part p ; int p1,q; unsigned int s_sec, s_trk, e_sec, e_trk, i, t1, t2 ; char type[20], boot[5] ; clrscr(); biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ; printf("\n Part. Boot Startlocation EndLocation Relative sec Number of"); printf("\n Type Side Cyl Sector Side Cyl Sector begin end Sectors\n"); for ( i = 0 ; i <= 3 ; i++ ) { if ( p.pt[i].bootable == 0x80 ) strcpy ( boot, "Yes" ) ; else strcpy ( boot, "No" ) ; switch ( p.pt[i].parttype ) { case 0 : strcpy ( type, "Unused" ) ; break ; case 1 : strcpy ( type, "12-Bit" ) ; break ; case 2 : strcpy ( type, "Xenix" ) ; break ; case 4 : strcpy ( type, "16-Bit" ) ; break ; case 5 : strcpy ( type, "Extended" ) ; break ; case 6 : strcpy ( type, "Huge" ) ; break ; default : strcpy ( type, "Unknown" ) ; break ; } s_sec = ( p.pt[i].start_sec_cyl & 0x3f ) ; t1 = ( p.pt[i].start_sec_cyl & 0xff00 ) >> 8 ; t2 = ( p.pt[i].start_sec_cyl & 0x00c0 ) << 2 ; s_trk = t1 | t2 ; e_sec = ( p.pt[i].end_sec_cyl & 0x3f ) ; t1 = ( p.pt[i].end_sec_cyl & 0xff00 ) >> 8 ; t2 = ( p.pt[i].end_sec_cyl & 0x00c0 ) << 2 ; e_trk = t1 | t2 ; printf ( "\n %6s %3s", type, boot ) ; printf ( " %d %6d %d", p.pt[i].start_side, s_trk,s_sec ) ; printf ( " %7d%6u %8u ", p.pt[i].end_side, e_trk, e_sec ) ; printf ( "%8lu%10lu", p.pt[i].part_beg, p.pt[i].plen ) ; } lay(); for(p1=2;p1<80;p1++) { gotoxy(p1,4); printf("%c",205); gotoxy(p1,9); printf("%c",205); } for(q=2;q<9;q++) { gotoxy(9,q); printf("%c",179); gotoxy(16,q); printf("%c",179); gotoxy(37,q); printf("%c",179); gotoxy(53,q); printf("%c",179); gotoxy(68,q); printf("%c",179); } for(q=5;q<9;q++) { gotoxy(22,q); printf("%c",179); gotoxy(29,q); printf("%c",179); gotoxy(45,q); printf("%c",179); gotoxy(59,q); printf("%c",179); } gotoxy(37,9); printf("%c",207); gotoxy(29,9); printf("%c",207); gotoxy(22,9); printf("%c",207); gotoxy(16,9); printf("%c",207); gotoxy(9,9); printf("%c",207); gotoxy(45,9); printf("%c",207); gotoxy(53,9); printf("%c",207); gotoxy(59,9); printf("%c",207); gotoxy(68,9); printf("%c",207); gotoxy(37,4); printf("%c",216); gotoxy(29,4); printf("%c",209); gotoxy(22,4); printf("%c",209); gotoxy(16,4); printf("%c",216); gotoxy(9,4); printf("%c",216); gotoxy(45,4); printf("%c",209); gotoxy(53,4); printf("%c",216); gotoxy(59,4); printf("%c",209); gotoxy(68,4); printf("%c",216); gotoxy(25,12); printf("Press any key to continue and don't forgot to vote:)"); getch(); } display(int i4) { int r,c,a,i=0,p,q; unsigned char ch; textbackground(4); clrscr(); textcolor(11); if(drive==0) cprintf("Relative sector displayed is %06d",lsect); else if(drive==0x80) cprintf("Head:%03d, Track:%06d, Sector:%08d",head,track,sector); else if(drive==405) { if(i6==0) {gotoxy(1,1); cprintf("File=%s",fl[i4]); fread(buff,512,1,fs);} gotoxy(1,1); cprintf("File=%s",fl[i4]); } textcolor(14); printf("\n"); gotoxy(21,2); cprintf("Hex codes"); textcolor(11); for(q=2;q<20;q++) { gotoxy(q,2); cprintf("%c",205); } for(q=31;q<=54;q++) { gotoxy(q,2); cprintf("%c",205);} gotoxy(1,2); cprintf("%c",201); for(q=3;q<=24;q++) { gotoxy(1,q); cprintf("%c",186); } for(q=3;q<=24;q++) { gotoxy(55,q); cprintf("%c",186); } gotoxy(55,2); cprintf("%c",203); for(q=56;q<61;q++) { gotoxy(q,2); cprintf("%c",205); } textcolor(14); cprintf(" Ascii values "); textcolor(11); for(q=75;q<=80;q++) { gotoxy(q,2); cprintf("%c",205); } for(r=3;r<=24;r++) { for(c=2;c<=55;c+=2) { ch=buff[i]; gotoxy(c,r); textcolor(15); cprintf("%02x",ch); gotoxy(57+(i%24),r); if(ch==7||ch==8||ch==13||ch==10) printf(" "); else { cprintf("%c",ch); } i++; if(i%4==0) c++; if(i==512) { maxc=c+1; break; } } } textcolor(11); printf("\n"); if(drive==0) {cprintf("F1-Restore;F2-Save changes,F5-Jump to sec,Pgdwn-Next sec,Pgup-Prev sec,Esc-Exit"); gotoxy(52,1); cprintf("F3-Edit hex,F4-Edit ascii ");} else if(drive==0x80) { cprintf("F1-Restore,F2-Save,F3-Edit hex,F4-Edit ascii,F5-Head,F6-Track,F7-Sector"); gotoxy(41,1); cprintf("Pg up-Prev sec,Pg down-Next sec,Esc-Exit");} else if(drive==405) { cprintf("F2-Save,F3-Edit hex,F4-Edit ascii"); gotoxy(38,1); cprintf("Pg up-Prev Page,Pg down-Next page,Esc-Exit");} return 0 ; } void fp() { int a; clrscr(); lay(); a=absread(0,1,0,&b); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } gotoxy(6,4); cprintf("System id: %s", b.system_id); gotoxy(6,7); cprintf("Bytes per sector : %d", b.bytes_per_sec ) ; gotoxy(6,10); cprintf("Sectors per cluster : %d", b.sec_per_clus ) ; gotoxy(6,13); cprintf("Reserved sectors : %d", b.res_sec ) ; gotoxy(6,16); cprintf("FAT copies : %d", b.fat_copies ) ; gotoxy(6,19); cprintf("Root directory entries : %d", b.root_dir_entry ) ; gotoxy(44,4); cprintf("No. of sectors on disk : %u", b.no_sects ) ; gotoxy(44,7); cprintf("Format id : %X", b.format_id ) ; gotoxy(44,10); cprintf("Sectors per FAT : %d", b.sec_per_fat ) ; gotoxy(44,13); cprintf("Sectors per track : %d", b.sec_per_trk ) ; gotoxy(44,16); cprintf("No. of sides : %d", b.no_sides ) ; gotoxy(44,19); cprintf("No. of reserved sectors : %d", b.no_sp_res_sect ) ; gotoxy(48,22); printf("Press any key to continue...\n hey u like it not??? "); getch(); } void options() { char ch; int dr;char name[20]; textbackground(4); clrscr(); while(ch!=27) {clrscr(); lay(); _setcursortype(0); gotoxy(28,4); cprintf("F : Floppy drive info"); gotoxy(28,6); cprintf("M : Harddisk info"); gotoxy(28,8); cprintf("A : Edit Floppy sector"); gotoxy(28,10); cprintf("C : Edit Harddisk sector"); gotoxy(28,12); cprintf("F2 : File mode"); gotoxy(28,14); cprintf("T : Save to file"); gotoxy(28,16); cprintf("W : Write from file"); gotoxy(28,18); cprintf("F1 : Help"); gotoxy(28,20); cprintf("D : Disclamier"); gotoxy(28,22); cprintf("Esc : Exit"); textcolor(15); gotoxy(5,25); cprintf("Copyright (c) 2003 by Hardik Shah. Released Under GNU-GPL."); ch=getch(); _setcursortype(2); switch(ch) { case 'F': case 'f':clrscr(); lay(); gotoxy(2,2); printf("Please insert a floppy disk in drive and press any key...."); getch(); clrscr(); fp(); break; case 'M': case 'm':clrscr(); lay(); gotoxy(2,2); printf("This option is not compatible with all the drivers.If your screen goes blank"); gotoxy(2,3); printf("then press ctrl+pause to exit.press any key to continue...."); getch(); clrscr(); lay(); hdinfo(); break; case 'A': case 'a':clrscr(); lay(); gotoxy(4,4); cprintf("Enter logical sector you wish to edit:"); scanf("%d",&lsect); drive=0; a=absread(drive,1,lsect,buff); if(a==-1) { perror("Disk Read/Write error:"); getch(); break; } display(0); edit(); break; case 'C': case 'c': clrscr(); lay(); drive=0x80; gotoxy(4,4); cprintf("Enter the head:"); scanf("%d",&head); gotoxy(4,6); cprintf("Enter the track:"); scanf("%d",&track); gotoxy(4,8); cprintf("Enter the sector:"); scanf("%d",§or); biosdisk(2,0x80,head,track,sector,1,buff); display(0); edit(); break; case 'T': case 't':clrscr(); lay(); chdir("c:\\windows\\desktop"); gotoxy(2,2); cprintf("Enter the file name with extension:"); scanf("%s",name); fp1=fopen(name,"wb+"); if(fp1==0) perror("can't open file!!!"); else { gotoxy(2,3); cprintf("Select Drive"); gotoxy(2,4); cprintf("1)Harddisk"); gotoxy(2,5); cprintf("2)Floppy disk"); gotoxy(2,6); printf("ur choice:"); dr=getche(); dr=dr-48; while(dr!=1&&dr!=2) {gotoxy(2,4); cprintf("Please enter a valid choice!!!"); dr=getche(); dr=dr-48;} switch(dr) { case 1:clrscr(); lay(); gotoxy(12,2); cprintf("write the hard disk sector to file!!!"); gotoxy(2,4); cprintf("enter the head:"); scanf("%d",&head); gotoxy(2,6); cprintf("enter the track:"); scanf("%d",&track); gotoxy(2,8); cprintf("enter the sector:"); scanf("%d",§or); biosdisk(2,0x80,head,track,sector,1,buff); fwrite(&buff,sizeof(buff),1,fp1); fclose(fp1); gotoxy(2,10); cprintf("the sector is stored to the file \"c:\\windows\\desktop\\%s\"",name); getch(); break; case 2:clrscr(); lay(); gotoxy(12,2); cprintf("write the floppy disk sector to file!!!"); gotoxy(2,4); cprintf("enter logical sector:"); scanf("%d",&lsect); gotoxy(2,6); cprintf("writing...."); a=absread(drive,1,lsect,buff); if(a==-1) { perror("Disk Read/Write error:"); getch(); break; } fwrite(&buff,sizeof(buff),1,fp1); fclose(fp1); gotoxy(2,8); cprintf("the sector is stored to the file \"c:\\windows\\desktop\\%s\"",name); getch(); } } break; case 'W': case 'w': clrscr(); lay(); chdir("c:\\windows\\desktop"); gotoxy(2,2); cprintf("enter the file name with extension:"); scanf("%s",name); fp1=fopen(name,"rb+"); if(fp1==0) {perror("can't open file!!!"); getch(); break; } else { gotoxy(2,3); cprintf("enter the drive"); gotoxy(2,4); cprintf("1)for harddisk"); gotoxy(2,5); cprintf("2)for floppy disk"); gotoxy(2,6); printf("ur choice:"); dr=getche(); dr=dr-48; while(dr!=1&&dr!=2) {gotoxy(2,8); printf("please enter a valid choice!!!"); dr=getche(); dr=dr-48; } switch(dr) { case 1:clrscr(); lay(); gotoxy(12,2); cprintf("write to hard disk **from** file!!!"); gotoxy(2,4); cprintf("enter the head:"); scanf("%d",&head); gotoxy(2,6); cprintf("enter the track:"); scanf("%d",&track); gotoxy(2,8); cprintf("enter the sector:"); scanf("%d",§or); fread(&buff,512,1,fp1); biosdisk(3,0x80,head,track,sector,1,buff); fclose(fp1); gotoxy(2,10); cprintf("successfully write to the disk!!!"); getch(); break; case 2:clrscr(); lay(); gotoxy(12,2); cprintf("write to floppy disk sector **from** file!!!"); gotoxy(2,4); cprintf("enter logical sector:"); scanf("%d",&lsect); fread(&buff,512,1,fp1); gotoxy(2,6); cprintf("writing...." ); a=abswrite(drive,1,lsect,buff); if(a==-1) { perror("Disk Read/Write error:"); getch(); break; } fclose(fp1); gotoxy(2,8); cprintf("successfully write to the disk!!!"); getch(); } } break; case 27: textbackground(0); clrscr(); gotoxy(2,2); printf("thanks for using this!!!"); gotoxy(2,3); printf("if u found this software usefull then simply drop me a mail at:-\n [EMAIL PROTECTED]"); gotoxy(2,5); printf("or send a letter to:-\nhardik Shah\nI-405 L.I.G. Colony,\nIndira chowk,\nindore(M.P),\nPin-452008\n India"); gotoxy(13,12); printf("web:-\n-hardik shah\nwww.hardikshah.cjb.net"); chdr('c'); exit(1); break; case 59:clrscr(); help(); getch(); break; case 60:clrscr(); filemode(); break; case 'd': case 'D':clrscr(); disclam(); lay(); getch(); break; } } } edit() { int ch,ch1,j,flg=0; x=2; y=3; indicator=1; i=0; for(j=0;j<=511;j++) temp[j]=buff[j]; while(1) { gotoxy(x,y); ch=bioskey(0); ch1=(__dj_ctype_toupper[(int)(ch)+1]); if(ch1>='0'&&ch1<='9'||ch1>='A'&&ch1<='F') { putch((__dj_ctype_toupper[(int)(ch)+1])); indicator=!(indicator); x++; if(((x-1)%9==0)&&(x>=9)) x++; if(indicator==0) { gotoxy(x,y); printf(" "); } ch1=ch1-48; if(ch1>9) ch1=ch1-7; if(indicator==0) { ch1=ch1<<4; temp[i]=temp[i]&0x0f; flg=1; } else { flg=0; temp[i]=temp[i]&0xf0; } temp[i]=temp[i]|ch1; if(x>=19&&y==24) flg=0; gotoxy((57+(i%24)),y); printf("%c",temp[i]); if(flg==0) i++; sound(0); update(0); } else { switch(ch) { case 0x4D00: if((x==8)||(x==17)||(x==26)||(x==35)||(x==44)) x++; update(1); break; case 0x4B00: if(((x-2)%9==0)&&(x>=9)) x--; update(2); break; case 0x5000: update(3); break; case 0x04800: update(4); break; case 0x3B00: x=2; y=3; i=0; display(0); break; case 0x3C00:i=0; gotoxy(52,1); printf(" saving...."); for(j=0;j<=511;j++) buff[j]=temp[j]; if(drive==0) {a=abswrite(drive,1,lsect,temp); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } clrscr(); a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } } else if(drive==0x80) {biosdisk(3,drive,head,track,sector,1,buff); clrscr(); biosdisk(4,drive,head,track,sector,1,buff); } else if(drive==405) {fseek(fs,-512,1); fwrite(buff,512,1,fs); fseek(fs,-512,1); i6=0; display(i5); edit(); break; } display(0); edit(); break; case 0x3f00: if(drive==0) {i=0; gotoxy(1,25); textcolor(2); cprintf(" enter the sector you wish to modify: "); gotoxy(55,25); scanf("%d",&lsect); textcolor(15); a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } } else if(drive==0x80) {i=0; gotoxy(6,1); textcolor(2); printf(" "); gotoxy(6,1); scanf("%d",&head); textcolor(15); biosdisk(2,drive,head,track,sector,1,buff); } display(0); edit(); break; case 0x4900: if(drive==0) {i=0; lsect--; if(lsect<0) lsect=0; a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } else display(0); } else if(drive==0x80) {i=0; sector--; if(sector<1) sector=1; biosdisk(2,drive,head,track,sector,1,buff); display(0);} else if(drive==405) {if(ftp>1) {ftp--; if(ftp<=-1) ftp=0; if(ftp==0) {i6=0; fseek(fs,-512,1); display(i5);} else if(ftp>0) { i6=0; fseek(fs,-512,1); fseek(fs,-512,1); display(i5); } } else {i6=1; display(i5);} } edit(); break; case 0x5100: if(drive==0) {i=0; lsect++; a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } else display(0); } else if(drive==0x80) { i=0; sector++; biosdisk(2,drive,head,track,sector,1,buff); display(0); } else if(drive==405) {ftp++; i6=0; clrscr(); if((ch=fread(buff,512,1,fs))!=0) { fseek(fs,-512,1); display(i5); } else {fseek(fs,-512,1); i6=1; display(i5);} } edit(); break; case 0x3e00: i=0; edascii(); break; case 0x4000: if(drive==0x80) {i=0; gotoxy(17,1); textcolor(2); printf(" "); gotoxy(17,1); scanf("%d",&track); textcolor(15); biosdisk(2,drive,head,track,sector,1,buff); display(0); edit(); } break; case 0x4100: if(drive==0x80) {i=0; gotoxy(32,1); textcolor(2); printf(" "); gotoxy(32,1); scanf("%d",§or); textcolor(15); biosdisk(2,drive,head,track,sector,1,buff); display(0); edit(); } break; case 0x11B:if(drive==405) fclose(fs); options(); break; } } } } void update(int i1) { if(x==2&&y==3) i=0; if(i1==0) if(x>=55) { x=2; y++; } if(y==24&&x>=maxc+1) { y=24; x=17; i=511; } if(i1==1) { if((y<=23)||(y==24&&x<18)) i++; x+=2; if(x>=55) { x=2; y++; } if(y==24&&x>=maxc+1) { y=24; x=17; i=511; } } else if(i1==2) { i--; x-=2; if(x<2) { x=55; y--; } if(y<3) { i=0; y=3; x=2; } } else if(i1==3) { indicator=1; if((y<24&&x<=18)||(y<23&&x>18)) i+=24; y++; if(y>=24) y=24; if(y>=23&&x>18) y=23; } else if(i1==4) {indicator=0; if(y>3) i-=24; y--; if(y<3) y=3; } if(x==2&&y==3) i=0; } edascii() { int ch,ch1,j,x2,fkey=0; x=57,y=3; gotoxy(57,3); for(j=0;j<=511;j++) temp[j]=buff[j]; while(1) { gotoxy(x,y); ch=getch(); if(ch==27) { options();} else if(ch==0) {fkey=1; ch=getch(); } else fkey=0; if(fkey!=1) { putch(ch); x++; temp[i]=ch; if(x1==10||x1==19||x1==28||x1==37||x1==46) x1++; if(x1>=54) x1=2; gotoxy(x1,y); printf("%02x",temp[i]); if((y==24&&x<64)||(y<=23)) i++; x1+=2; upascii(0); } else { switch(ch) { case 77: x1+=2; if(x1==10||x1==19||x1==28||x1==37||x1==46) x1++; if(x1>=54) x1=2; upascii(1); break; case 75: x1-=2; if(x1==10||x1==19||x1==28||x1==37||x1==46) x1--; if(x1>=54||x1<=2) x1=2; upascii(2); break; case 80: upascii(3); break; case 72: upascii(4); break; case 59: i=0; x1=2; x=57; y=3; display(0); break; case 60: i=0; gotoxy(52,1); printf(" saving...."); for(j=0;j<=511;j++) buff[j]=temp[j]; if(drive!=0x80) {a=abswrite(drive,1,lsect,temp); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } clrscr(); a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } } else {biosdisk(3,drive,head,track,sector,1,buff); clrscr(); biosdisk(4,drive,head,track,sector,1,buff); } display(0); edascii(); break; case 63: i=0; gotoxy(1,25); textcolor(2); if(drive!=0x80) {cprintf(" enter the sector you wish to modify: "); gotoxy(55,25); scanf("%d",&lsect); textcolor(15); a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); } } else {i=0; gotoxy(6,1); textcolor(2); printf(" "); gotoxy(6,1); scanf("%d",&head); textcolor(15); biosdisk(2,drive,head,track,sector,1,buff); } display(0); edascii(); break; case 61: edit(); break; case 73: i=0; if(drive!=0x80) { lsect--; if(lsect<0) lsect=0; a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); }} else { sector--; if(sector<1) sector=1; biosdisk(2,drive,head,track,sector,1,buff); } display(0); edascii(); break; case 81: i=0; if(drive!=0x80) { lsect++; a=absread(drive,1,lsect,buff); if(a==-1) { clrscr(); perror("Disk Read/Write error:"); getch(); }} else { sector++; biosdisk(2,drive,head,track,sector,1,buff); } display(0); edascii(); break; case 62: i=0; x1=2; edascii(); break; case 64: if(drive==0x80) {i=0; gotoxy(17,1); textcolor(2); printf(" "); gotoxy(17,1); scanf("%d",&track); textcolor(15); biosdisk(2,drive,head,track,sector,1,buff); display(0); edit(); } break; case 65: if(drive==0x80) {i=0; gotoxy(32,1); textcolor(2); printf(" "); gotoxy(32,1); scanf("%d",§or); textcolor(15); biosdisk(2,drive,head,track,sector,1,buff); display(0); edit(); } break; } } } } upascii(int i1) { if(x>=64&&y==24) x=64; if((x==64)&&(y==24)) x1=17; if(i1==0) { if(x>=81) {x=57; y++; } } else if(i1==1) { if((y==24&&x<64)||(y<=23)) i++; x++; if(x>=81) { x=57; y++; } if(y>24) y=24; if(x>64&&y==23) y=23; if(x>=64&&y==24) x=64; } else if(i1==2) { if(x>57&&y>=3) i--; x--; if(x<=56) { i--; x=80; y--; if(y<3) { y=3; x=57; } } if(x==57&&y==3) i=0; if((x<=57)&&(y<=3)) { x=57; y=3; } } else if(i1==3) { if((y==23&&x<65)||(y<23)) i+=24; y++; if(y>=23&&x>=65) y=23; if((y>24)) y=24; } else if(i1==4) {if(y>3) i-=24; y--; if(x==57&&y==3) i=0; if(y<3) y=3; } return; } void chdr(char a) { int chdr; switch(a) { case 'A': case 'a':chdr=_chdrive(1); break; case 'B': case 'b':chdr=_chdrive(2); break; case 'C': case 'c':chdr=_chdrive(3); break; case 'D': case 'd':chdr=_chdrive(4); break; case 'E': case 'e':chdr=_chdrive(5); break; case 'F': case 'f':chdr=_chdrive(6); break; case 'G': case 'g':chdr=_chdrive(7); break; case 'H': case 'h':chdr=_chdrive(8); break; case 'I': case 'i':chdr=_chdrive(9); break; case 'J': case 'j':chdr=_chdrive(10); break; } if(chdr!=0) {clrscr(); printf("An Unexpected ERROR Occured!!!\n Please Restart The Application....."); exit(1);} } void filemode() {char buffer[260],ch2,t1[4],tm[3]={'a','m'}; int y2=3,i2=0,y3=4,i3=0,len,done,max=0; unsigned int hr,min,sec,yr,mon,day; clrscr(); lay(); getcwd(buffer, 260); _setcursortype(0); gotoxy(2,2); cprintf("Current dir %s\n", buffer); done = findfirst("*.*",&ffblk,1|2|4|8|16|32); while (1) {if(done==0) { gotoxy(36,2); printf("Time"); gotoxy(47,2); printf("Date"); gotoxy(57,2); printf("Size(in bytes)"); gotoxy(3,y2); printf(" %s", ffblk.ff_name); if(ffblk.ff_attrib==2) {gotoxy(22,y2); printf(" hidden"); } if(ffblk.ff_attrib==1) {gotoxy(22,y2); printf(" read only"); } if(ffblk.ff_attrib==4) {gotoxy(22,y2); printf(" system");} if(ffblk.ff_attrib==8) {gotoxy(22,y2); printf(" vol");} if(ffblk.ff_attrib==16) {gotoxy(22,y2); printf(" dir");} if(ffblk.ff_attrib==32) {gotoxy(22,y2); printf(" archive");} hr=ffblk.ff_ftime>>11; if(hr>12) {tm[0]='p'; hr=hr-12; } min=(ffblk.ff_ftime<<5)>>10; sec= ((ffblk.ff_ftime<<11)>>11)*2; gotoxy(33,y2); printf("%02u:%02u:%02u%s",hr,min,sec,tm); gotoxy(45,y2); yr=1980+(ffblk.ff_fdate>>9); mon=(ffblk.ff_fdate<<7)>>12; day=(ffblk.ff_fdate<<11)>>11; printf("%02u\-%02u\-%04u",day,mon,yr); gotoxy(57,y2); printf("%lu",ffblk.ff_fsize); printf("\n"); len=strlen(ffblk.ff_name); strcpy(fl[i2],ffblk.ff_name); fl[i2][len+1]='\0'; y2++; i2++; max++; } if((y2==24)||done) {gotoxy(4,3); printf("%c",16); gotoxy(5,25); printf("F1-Change directory"); gotoxy(30,25); printf("F2-change drive"); gotoxy(51,25); printf("Esc-Main menu"); y2=3; while(1) { ch2=getch(); switch(ch2) { case 80: if(!done) { if(y3!=25) { y3++; i3++; i5=i3; gotoxy(4,y3-2); printf(" "); gotoxy(4,y3-1); printf("%c",16); } } else {if(i3<max-1) {y3++; i3++; i5=i3; gotoxy(4,y3-2); printf(" "); gotoxy(4,y3-1); printf("%c",16); } } break; case 72: if(y3>=5) { gotoxy(4,y3-1); printf(" "); gotoxy(4,y3-2); printf("%c",16); y3--; i3--; i5=i3; } break; case 59:gotoxy(2,2); _setcursortype(2); printf("enter the directory: "); gotoxy(22,2); scanf("%s",buffer); _setcursortype(0); if(buffer[1]==':') chdr(buffer[0]); chdir(buffer); filemode(); return; case 60: gotoxy(2,2); printf(" "); gotoxy(2,2); _setcursortype(2); printf("Enter Drive:"); scanf("%s",t1); chdr(t1[0]); filemode(); return; case 13:clrscr(); drive =405; _setcursortype(2); ftp=1; findfirst(fl[i3],&ffblk,1|2|4|8|16|32); if(ffblk.ff_attrib==16) {chdir(fl[i3]); filemode(); return; } else {fs=fopen(fl[i3],"rb+"); display(i3); edit(); } break; case 27: return; } if(y3==25) {clrscr(); lay(); y3=4; break; } } } done = findnext(&ffblk); } } void help() { printf("\n"); printf("\n"); textcolor(10); cprintf(" Disk Editor is a utility to see,modify disk sectors.you can edit any"); printf("\n"); cprintf(" sector on your disk drive."); printf("\n"); printf("\n"); textcolor(11); cprintf(" -:Varius commands are as bellow:-"); printf("\n"); printf("\n"); textcolor(14); cprintf(" F1 - It is use to restore the disk sector.it means this command re-read"); printf("\n"); cprintf(" the sector and then display the contains of the sector again on the screen"); printf("\n"); printf("\n"); cprintf(" F2 - It is use to save the changes made by you."); printf("\n"); printf("\n"); cprintf(" F3 - If you want to edit sectors in Hex mode then press this key."); printf("\n"); printf("\n"); cprintf(" F4 - If you want to edit the sectors in ascii mode then use this key."); printf("\n"); printf("\n"); cprintf(" F5 - By using this you can direct jump to any sector"); printf("\n"); printf("\n"); cprintf(" Page Up - Go to previous sector."); printf("\n"); printf("\n"); cprintf(" Page Down - Go to next sector"); printf("\n"); printf("\n"); cprintf(" Esc - Exit from Disk Editor"); printf("\n Press any key to Exit...."); textcolor(14); gotoxy(8,25); cprintf("Copyright (c) 2003 by Hardik Shah. Released Under GNU-GPL."); lay(); } void disclam() { int p; gotoxy(2,3); printf(" Disclamier:-"); for(p=3;p<13;p++) { gotoxy(p,4); printf("%c",205);} gotoxy(2,5); printf(" This software is provided on \"AS-IS\" basis.As this software is direct access-"); gotoxy(2,6); printf(" es the disk drives, I am not responsible for any damage caused to you or your"); gotoxy(2,7); printf(" computer's hardware or software through proper or inproper use of this soft-"); gotoxy(2,8); printf(" ware.Please do not change any critical sectors on your drive otherwise you "); gotoxy(2,9); printf(" can damage your computer."); gotoxy(2,10); printf(" This software is Released Under GNU-GPL.you should get a copy "); gotoxy(2,11); printf(" of GPL licence.You can use,modify this software as you wish.If u make some "); gotoxy(2,12); printf(" changes then kindly add ur name,e-mail and comment:) If you found any bug or "); gotoxy(2,13); printf(" wish to give any suggestion then please contact me at:-"); gotoxy(26,16); cprintf("E-mail:-"); gotoxy(29,17); cprintf("[EMAIL PROTECTED]"); gotoxy(26,18); cprintf("web:-"); gotoxy(29,19); cprintf("www.hardikshah.cjb.net"); textcolor(14); gotoxy(8,25); cprintf("Copyright (c) 2003 by Hardik Shah. Released Under GNU-GPL."); } void main() { clrscr(); textcolor(11); options(); } The compiler output was: hed.c:1531:14: warning: unknown escape sequence '\-' hed.c:1531:14: warning: unknown escape sequence '\-' hed.c: In function 'main': hed.c:1729: warning: return type of 'main' is not 'int' gcc.exe: Internal error: (null) (program as) Please submit a full bug report. See <URL:http:/gcc.gnu.org/bugs.html> for instructions. -- Summary: internal error - compiling DiskEditor (hed.c) Product: gcc Version: 4.1.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: mu8ja0i at earthlink dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32763