X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=pc-tools%2Fldc%2Fldc.c;h=81fd9e1d1048e43358238d90ba52bb05adfb17db;hb=0413f345edd99f59fae2209eb70e54ffb71bc6b4;hp=7d67a28bf2a215e0bed2dd5622f902a38cf11118;hpb=437b3ba835f66625031f4711cd0a963be67ccf5a;p=h316.git diff --git a/pc-tools/ldc/ldc.c b/pc-tools/ldc/ldc.c index 7d67a28..81fd9e1 100644 --- a/pc-tools/ldc/ldc.c +++ b/pc-tools/ldc/ldc.c @@ -32,6 +32,9 @@ int inputfd; int ignore = 0; int dosplit = 0; int splitnum = 0; +int silent = 0; +int read_pos = -5; +int block_pos= -5; /********************************************************/ @@ -90,7 +93,7 @@ void errf (char *format, ...) void say (char *string) { - printf ("%s\n", string); + if (!silent) printf ("%s\n", string); } void sayf (char *format, ...) @@ -213,7 +216,8 @@ datablock *get_block() if (tapemode) tapestart (); do { - ret = read (inputfd, buffer, 1); + read_pos+=ret=read (inputfd, buffer, 1); + #ifdef HARDCORE_DEBUG msgf ("READ : (hex)%02x (bin)%s (dec)%3i (oct)%3o", buffer[0], bin2str (buffer[0], 8), buffer[0], buffer[0]); @@ -233,7 +237,8 @@ datablock *get_block() } } while (*buffer != (unsigned char) CHAR_START); - + + block_pos=read_pos; msg ("get_block(): Blockstart erkannt"); // blk_data = (hw16 *) malloc (MAX_BLOCK_SIZE * sizeof (hw16)); @@ -245,6 +250,7 @@ datablock *get_block() do { complete = 0; ret = read (inputfd, buffer + round, 1); + read_pos+=ret; #ifdef HARDCORE_DEBUG static int lochzahl = 0; char *bin = bin2str (buffer[round], 8); @@ -301,12 +307,13 @@ datablock *get_block() if (checksum_error (blk_data, blk_size)) { - err ("get_block(): Checksummenfehler"); + errf ("get_block(): Checksum error!\nBlock start: %i (0x%x), read address %i (0x%x).", + block_pos,block_pos,read_pos,read_pos); #ifdef CHECKSUM_DUMP dump_data (buffer, 3); - read (inputfd, buffer, 3); + read_pos+=read (inputfd, buffer, 3); dump_data (buffer, 3); #endif @@ -348,16 +355,19 @@ int main (int argc, char **args) //msgf ("Action %c, Arg dazu:%s", action, parm); switch (action) { case 'I': - ignore++; + ignore=1; break; case 't': - tapemode++; + tapemode=1; break; case 'S': - splitnum++; + splitnum=1; case 's': - dosplit++; + dosplit=1; break; + case 'l': + silent=1; + break; default: say ("Usage:\n"); sayf ("%s [-t] [-S] [-n] [-I] [filename]", args[0]); @@ -366,6 +376,7 @@ int main (int argc, char **args) sayf (" -S Split library tape into separate numbered files"); sayf (" -s same as -S but no numbering"); sayf (" -I Ignore errors"); + sayf (" -l be silent"); sayf (""); exit (1); break; @@ -402,6 +413,9 @@ int main (int argc, char **args) } datablock *akt_block; + /* Initialize read position */ + read_pos=0; + while (1) { msg ("********************************************************"); msgf ("Block no. %5i", blk_no++);