From newssun.med.miami.edu!news.miami.edu!usenet.ufl.edu!eng.ufl.edu!spool.mu.edu!howland.reston.ans.net!noc.near.net!uunet!world!tombaker Sat Apr 10 13:01:58 1993
Newsgroups: alt.emulators.ibmpc.apple2
Path: newssun.med.miami.edu!news.miami.edu!usenet.ufl.edu!eng.ufl.edu!spool.mu.edu!howland.reston.ans.net!noc.near.net!uunet!world!tombaker
From:
[email protected] (Tom A Baker)
Subject: Mapper.c -- repost with possible update
Message-ID: <
[email protected]>
Organization: Me, at The World Public Access UNIX, Brookline, MA
Date: Thu, 8 Apr 1993 15:19:51 GMT
Lines: 61
I understand that some folks out there have a different version
of mapper.c source code. Also, there results some differences in
how to use it. So...
Here is the version I use. It is as I retreived it, BUT I added
two #ifdef-#endif sections so it works under DOS if compiled with
Borland C.
The difference is that, unlike UNIX, MSDOS does not treat binary
and text streams the same.
To use: mapper < one > theother
tom
-------- cut here ----------8<-8<-8<----------------
#include <stdio.h>
#ifdef __BORLANDC__
#include <fcntl.h>
#endif
/*
* Map a disk image in Prodos block ordering to DOS 3.3 block ordering
* usage: mapper < old_image > new_image
*/
main() {
unsigned char buf[4096];
int track;
#ifdef __BORLANDC__
setmode( (stdin->fd), O_BINARY );
setmode( (stdout->fd), O_BINARY );
#endif
for (track = 0; track < 35; track++) {
if (read(0, buf, 4096) != 4096) {
perror("bad read");
exit(1);
}
write(1, buf, 256);
write(1, &buf[0xE00], 256);
write(1, &buf[0xD00], 256);
write(1, &buf[0xC00], 256);
write(1, &buf[0xB00], 256);
write(1, &buf[0xA00], 256);
write(1, &buf[0x900], 256);
write(1, &buf[0x800], 256);
write(1, &buf[0x700], 256);
write(1, &buf[0x600], 256);
write(1, &buf[0x500], 256);
write(1, &buf[0x400], 256);
write(1, &buf[0x300], 256);
write(1, &buf[0x200], 256);
write(1, &buf[0x100], 256);
write(1, &buf[0xF00], 256);
}
}