/* (bbcim) set_boot.c * * Copyright (c) 1997 W.H. Scholten */ /* Acorn DFS */ int disk_set_boot(struct diskimage *image, int bootoption, int verbose) { FILE *fpdisk; byte filebyte; long i; char *disk; disk=image->filename; if (diskimage_sanitycheck(image, verbose)) return bbcim_errno; fpdisk=fopen(disk,"rb+"); filebyte=0; switch(image->type) { case DFS_DISK: if (image->sides==2) { bbcim_errno=BBC_NOT_IMPLEMENTED; break; } fseek(fpdisk,256+6L,SEEK_SET); /* voor kant 2 van 2 zijdig: 256+6+image->sectors*image->bytes */ fread(&filebyte,1,1,fpdisk); /* disksize 4MSB + bootoption */ filebyte &=0x0f; fseek(fpdisk,256+6L,SEEK_SET); /* voor kant 2 van 2 zijdig: 256+6+image->sectors*image->bytes */ filebyte |=bootoption<<4; fwrite(&filebyte,1,1,fpdisk); /* bootoption, sect on disk='size' */ break; case ADFS_DISK: default: bbcim_errno=BBC_NOT_IMPLEMENTED; } fclose(fpdisk); if (bbcim_errno==BBC_NOT_IMPLEMENTED) { #ifdef NL bbcim_error="Niet geimplementeerd\n"; #else bbcim_error="Not implemented\n"; #endif } if (verbose) fprintf(stderr, bbcim_error); return bbcim_errno; }