diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..b32182c --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ + +WIN32GCC = /usr/local/gcc-4.8.0-qt-4.8.4-for-mingw32/win32-gcc/bin/i586-mingw32-gcc + +all: bin/c2d + +windows: bin/c2d.exe + +dist: all windows + +bin/c2d: c2d.c c2d.h + gcc -Wall -Wno-missing-braces -I. -O3 -o bin/c2d c2d.c -lm + +bin/c2d.exe: c2d.c c2d.h + $(WIN32GCC) -Wall -Wno-missing-braces -I. -O3 -o bin/c2d.exe c2d.c + +clean: + rm -f bin/* diff --git a/c2d b/bin/c2d similarity index 95% rename from c2d rename to bin/c2d index 8b71b8e..06c6b0b 100755 Binary files a/c2d and b/bin/c2d differ diff --git a/c2d.exe b/bin/c2d.exe similarity index 69% rename from c2d.exe rename to bin/c2d.exe index 44fb2bd..8a23acc 100755 Binary files a/c2d.exe and b/bin/c2d.exe differ diff --git a/c2d.c b/c2d.c index db6208d..e0a1586 100644 --- a/c2d.c +++ b/c2d.c @@ -1,8 +1,8 @@ /* -c2d, Code to Disk, Version 0.1, Fri Feb 24 22:04:42 GMT 2012 +c2d, Code to Disk, Version 0.2, Sun Apr 2 00:59:38 UTC 2017 -(c) 2012 All Rights Reserved, Egan Ford (egan@sense.net) +(c) 2012,2017 All Rights Reserved, Egan Ford (egan@sense.net) THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE @@ -53,7 +53,7 @@ Bugs: #include #include "c2d.h" -#define VERSION "Version 0.1" +#define VERSION "Version 0.2" #define INFILE argv[argc-2] #define OUTFILE argv[argc-1] #define BINARY 0 @@ -65,7 +65,7 @@ char *getext(char *filename); int main(int argc, char **argv) { FILE *ifp, *ofp; - int c, i, j, k, start, inputtype, warm = 0, filesize = 0; + int c, j, k, start, inputtype, warm = 0, filesize = 0; struct stat st; char *filetypes[] = {"BINARY","MONITOR"}; char *ext, filename[256], load_address[10]; @@ -140,6 +140,8 @@ int main(int argc, char **argv) filesize |= b << 8; } +printf("debug: %x %x\n\n",start,start&0xFF); + //check for errors fread(&blank.track[1].sector[0].byte[start & 0xFF], filesize, 1, ifp); } @@ -174,12 +176,12 @@ int main(int argc, char **argv) fprintf(stderr,"%04X, length: %d\n",start,filesize); fprintf(stderr,"\n"); - blank.track[0].sector[1].byte[0xE0] = ceil(filesize / 256.0); + blank.track[0].sector[1].byte[0xE0] = ceil((filesize + (start & 0xFF)) / 256.0); blank.track[0].sector[1].byte[0xE7] = ((start + filesize - 1) >> 8) + 1; - blank.track[0].sector[1].byte[0x15] = ceil(filesize / 4096.0); - blank.track[0].sector[1].byte[0x1A] = ceil(filesize / 256.0) - 16*(ceil(filesize / 4096.0) - 1) - 1; + blank.track[0].sector[1].byte[0x15] = ceil((filesize + (start & 0xFF))/ 4096.0); + blank.track[0].sector[1].byte[0x1A] = ceil((filesize + (start & 0xFF))/ 256.0) - 16*(ceil((filesize + (start & 0xFF)) / 4096.0) - 1) - 1; - fprintf(stderr,"Number of sectors: %d\n",(int)ceil(filesize / 256.0)); + fprintf(stderr,"Number of sectors: %d\n",(int)ceil((filesize + (start & 0xFF)) / 256.0)); fprintf(stderr,"Sector page range: $%02X - $%02X\n",start >> 8,(start + filesize - 1) >> 8); if(warm)