--- uae/amiga/source/transdisk.c 2018/04/24 16:38:39 1.1 +++ uae/amiga/source/transdisk.c 2018/04/24 16:38:47 1.1.1.2 @@ -1,6 +1,7 @@ /* - * Transdisk V4 - * Copyright 1995,1996 Bernd Schmidt, Marcus Sundberg, Stefan Ropke + * Transdisk V4.1 + * Copyright 1995,1996 Bernd Schmidt, Marcus Sundberg, Stefan Ropke, + * Rodney Hester * * Use DICE and 2.0 includes or above to compile */ @@ -19,6 +20,7 @@ static void usage() { fprintf(stderr, "Usage: transdisk options\n"); fprintf(stderr, "Recognized options:\n"); + fprintf(stderr, "-h: Assume device is high density\n"); fprintf(stderr, "-d device unit: Use this device instead of DF0:\n"); fprintf(stderr, "-s n: Begin transfer at track n\n"); fprintf(stderr, "-e n: End transfer at track n\n"); @@ -38,7 +40,6 @@ int main(int argc, char **argv) FILE *ADFFile; int write=0; struct IOStdReq *ioreq; - int signal; struct MsgPort *port; UBYTE *buffer; @@ -47,6 +48,7 @@ int main(int argc, char **argv) char devicenum = 0; int i; int starttr = 0, endtr = 79; + int sectors = 11; for (i = 1; i < argc;) { if (argv[i][0] != '-' || argv[i][2] != 0) { @@ -54,6 +56,10 @@ int main(int argc, char **argv) exit(1); } switch (argv[i][1]) { + case 'h': + sectors = 22; + i++; + break; case 'd': if (i+2 >= argc) { usage(); @@ -95,7 +101,9 @@ int main(int argc, char **argv) } } fprintf(stderr,"Using %s unit %d\n", devicename, devicenum); + fprintf(stderr,"Tracks are %d sectors\n", sectors); fprintf(stderr,"First track %d, last track %d\n", starttr, endtr); + buffer = AllocMem(512, MEMF_CHIP); if (write) { ADFFile = fopen(filename,openMode); @@ -118,14 +126,14 @@ int main(int argc, char **argv) ioreq->io_Data = buffer; for (tr = starttr*2; tr < (endtr+1)*2; tr++) { fprintf(stderr,"Track: %d\r",tr/2); - for (sec = 0; sec < 11; sec++) { + for (sec = 0; sec < sectors; sec++) { fflush(stderr); if (write) if (fread(buffer, sizeof(UBYTE), 512, ADFFile) < 512) { - printf("Error: ADF file to short?\n"); + fprintf(stderr, "Error: ADF file to short?\n"); exit(1); } - ioreq->io_Offset = 512 * (tr * 11 + sec); + ioreq->io_Offset = 512 * (tr * sectors + sec); DoIO(ioreq); if (!write) fwrite(buffer, sizeof(UBYTE), 512, stdout);