|
|
1.1 ! root 1: ! 2: /* ! 3: * Transdisk V3 ! 4: * Copyright 1995,1996 Bernd Schmidt, Marcus Sundberg ! 5: * ! 6: * Use DICE and 2.0 includes or above to compile ! 7: */ ! 8: ! 9: #include <stdio.h> ! 10: ! 11: #include <exec/devices.h> ! 12: #include <exec/io.h> ! 13: #include <exec/memory.h> ! 14: #include <devices/trackdisk.h> ! 15: ! 16: #include <clib/alib_protos.h> ! 17: #include <clib/exec_protos.h> ! 18: ! 19: static void usage() ! 20: { ! 21: fprintf(stderr, "Usage: transdisk options\n"); ! 22: fprintf(stderr, "Recognized options:\n"); ! 23: fprintf(stderr, "-d device unit: Use this device instead of DF0:\n"); ! 24: fprintf(stderr, "-s n: Begin transfer at track n\n"); ! 25: fprintf(stderr, "-e n: End transfer at track n\n"); ! 26: fprintf(stderr, "Example:\n"); ! 27: fprintf(stderr, "transdisk >RAM:df1.adf.1 -d trackdisk 1 -s 0 -e 39\n"); ! 28: fprintf(stderr, "transfers the first half of the floppy in DF1: into\n"); ! 29: fprintf(stderr, "a file in the RAM disk.\n"); ! 30: } ! 31: ! 32: int main(int argc, char **argv) ! 33: { ! 34: struct IOStdReq *ioreq; ! 35: int signal; ! 36: struct MsgPort *port; ! 37: ! 38: UBYTE *buffer; ! 39: char devicebuf[256]; ! 40: char *devicename = "trackdisk.device"; ! 41: char devicenum = 0; ! 42: int i; ! 43: int starttr = 0, endtr = 79; ! 44: ! 45: for (i = 1; i < argc;) { ! 46: if (argv[i][0] != '-' || argv[i][2] != 0) { ! 47: usage(); ! 48: exit(1); ! 49: } ! 50: switch (argv[i][1]) { ! 51: case 'd': ! 52: if (i+2 >= argc) { ! 53: usage(); ! 54: exit(1); ! 55: } ! 56: devicenum = atoi(argv[i+2]); ! 57: sprintf(devicebuf, "%s.device", argv[i+1]); ! 58: devicename = devicebuf; ! 59: i += 3; ! 60: break; ! 61: case 's': ! 62: if (i+1 >= argc) { ! 63: usage(); ! 64: exit(1); ! 65: } ! 66: starttr = atoi(argv[i+1]); ! 67: i += 2; ! 68: break; ! 69: case 'e': ! 70: if (i+1 >= argc) { ! 71: usage(); ! 72: exit(1); ! 73: } ! 74: endtr = atoi(argv[i+1]); ! 75: i += 2; ! 76: break; ! 77: default: ! 78: usage(); ! 79: exit(1); ! 80: } ! 81: } ! 82: fprintf(stderr,"Using %s unit %d\n", devicename, devicenum); ! 83: fprintf(stderr,"First track %d, last track %d\n", starttr, endtr); ! 84: buffer = AllocMem(512, MEMF_CHIP); ! 85: port = CreatePort(0, 0); ! 86: if (port) { ! 87: ioreq = CreateStdIO(port); ! 88: if (ioreq) { ! 89: if (OpenDevice(devicename, devicenum, ioreq, 0) == 0) { ! 90: int tr, sec; ! 91: ioreq->io_Command = CMD_READ; ! 92: ioreq->io_Length = 512; ! 93: ioreq->io_Data = buffer; ! 94: for (tr = starttr*2; tr < (endtr+1)*2; tr++) { ! 95: for (sec = 0; sec < 11; sec++) { ! 96: ioreq->io_Offset = 512 * (tr * 11 + sec); ! 97: DoIO(ioreq); ! 98: fwrite(buffer, sizeof(UBYTE), 512, stdout); ! 99: } ! 100: } ! 101: CloseDevice(ioreq); ! 102: } else ! 103: fprintf(stderr,"Unable to open %s unit %d\n", devicename, devicenum); ! 104: DeleteStdIO(ioreq); ! 105: } ! 106: } ! 107: FreeMem(buffer, 512); ! 108: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.