/* uneekit.c -- a programme to stamp a new, random, serial number on an Atari diskette. This is specifically for diskettes formatted under MS-DOS, since TOS gets confused by their lack of unique serial numbers. Ivan D Reid, Untersiggenthal CH 9/12/1990 ivan@cageir5a.bitnet 20550::ivan ivan@cvax.psi.ch */ #include int buff[1024]; long filler; main() { register int i; register long status; register char c; for(;;) /* loop so we can fix more than one disk */ { filler=0; for (i=0; i<1024; i++) buff[i] = 0xdead; /* fill up array with noticeable pattern */ i= (Random() & 0x1FL) | '@'; /* random character */ Cconws("\033E\033e Insert diskette into drive A.\15\12 Press the <"); Cconout(i); /* just a little extra to make sure he's thinking */ Cconws("> key when ready or to quit..."); do c=Crawcin()&0x5f; while (c != 0x1b && c != i); /* look for the right key */ if (c == 0x1b) break; /* he wants out... */ Cconws("\15\12 "); status = Floprd(buff,filler,0,1,0,0,1); /* attempt a read */ if (status) Cconws("Error reading boot sector!"); else { i=0; while ((buff[i] != 0xdead) && (i<1024)) i++; /* see how much we read */ if (i != 256) Cconws("Non-standard sector -- no action."); else { Protobt(buff,0x1ffffffL,-1,-1); /* random SN */ if (Flopwr(buff,filler,0,1,0,0,1)) /* write boot sector */ Cconws("Error writing boot sector. Check write-protection!\15\12"); else Cconws("Diskette now has random serial number."); } } Cconws("\15\12 Press any key to continue ( quits)..."); if ((Crawcin()&0x7f)==0x1b) break; /* same deal as above */ } Cconws("\33f"); /* turn off cursor */ exit(0); /* by-bye */ }