![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
Guest
Posts: n/a
|
Egan Ford wrote:
> 1. Is there a CLI tool (with source, preferably POSIX) that will > convert unprotected NIB to DSK? I've searched and have not found much > (with links that still exist). BTW, is there a NIB format description > floating around anywhere? > > 2. From time to time I encounter a DSK file that is not 143360 in > length. Is the assumption that the rest of the file is zeros? > > Thanks. > Here's a program for item 2. I used this make some very old partial DSK files somewhat to mostly usable again. To build and use it: make zerofill /zerofill < undersized.dsk > therightsize.dsk http://hoop-la.ca/apple2/src/zerofill.c #include <stdio.h> #define DISK_LENGTH 143360 int main(int argc, char * argv[]) { int c; int i; int not_end_of_file; not_end_of_file = 1; for (i = 0; i < DISK_LENGTH; i++) { if (not_end_of_file) { c = getchar(); if (c == EOF) { c = not_end_of_file = 0; } } putchar(c); } return 0; } |
|
![]() |
![]() |
|
Guest
Posts: n/a
|
On Feb 7, 6:17*pm, mmpho...@macgui.com (Mark Stock) wrote:
> Egan Ford wrote: > > 1. *Is there a CLI tool (with source, preferably POSIX) that will > > convert unprotected NIB to DSK? *I've searched and have not found much > > (with links that still exist). *BTW, is there a NIB format description > > floating around anywhere? > > > 2. *From time to time I encounter a DSK file that is not 143360 in > > length. *Is the assumption that the rest of the file is zeros? > > > Thanks. > > Here's a program for item 2. *I used this make some very old partial DSK > files somewhat to mostly usable again. > To build and use it: > > make zerofill > /zerofill < undersized.dsk > therightsize.dsk > > http://hoop-la.ca/apple2/src/zerofill.c > > #include <stdio.h> > > #define DISK_LENGTH 143360 > > int main(int argc, char * argv[]) > { > * * * * int c; > * * * * int i; > * * * * int not_end_of_file; > > * * * * not_end_of_file = 1; > * * * * for (i = 0; i < DISK_LENGTH; i++) { > * * * * * * * * if (not_end_of_file) { > * * * * * * * * * * * * c = getchar(); > * * * * * * * * * * * * if (c == EOF) { > * * * * * * * * * * * * * * * * c = not_end_of_file = 0; > * * * * * * * * * * * * } > * * * * * * * * } > * * * * * * * * putchar(c); > * * * * } > > * * * * return 0; > > > > > > > > } Thanks. Here is my perl version if any are interested. my $dsk = shift; if(-s $dsk < 143360) { open(DSK,">>$dsk") || die("Cannot append to '$dsk'"); print DSK chr(0) x (143360 - (-s $dsk)); close DSK; } While I am at it, here is my .po to .do, quick and dirty, needs error checking: #include <stdio.h> typedef struct s { unsigned char bytes[256]; } sector; typedef struct t { sector sectors[16]; } track; typedef struct d { track tracks[35]; } disk; int main(int argc, char **argv) { disk po; FILE *ifp, *ofp; int i,j,k; unsigned int xref[]={0x0,0xE,0xD,0xC,0xB,0xA, 0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0xF}; if ((ifp = fopen(argv[1], "rb")) == NULL) { fprintf(stderr,"Cannot read: %s\n\n",argv[1]); return 1; } if ((ofp = fopen(argv[2], "w")) == NULL) { fprintf(stderr,"Cannot write: %s\n\n",argv[2]); return 1; } fread(&po, 143360, 1, ifp); for(i=0;i<35;i++) for(j=0;j<16;j++) for(k=0;k<256;k++) fprintf(ofp,"%c",po.tracks[i].sectors[xref[j]].bytes[k]); return 0; } |
|
| Copyright ©2007-2008 MacShock.com. |
Powered by vBulletin Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. |