This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/32763] New: internal error - compiling DiskEditor (hed.c)


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, &registers, &registers);
      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",&sector);
       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",&sector);
      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",&sector);
      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
hardik_shah_cu@rediffmail.com");
     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",&sector);
    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",&sector);
    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("hardik_shah_cu@rediffmail.com");
   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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]