write raw track to disk file */
| 2852 | |
| 2853 | /* write raw track to disk file */ |
| 2854 | static int drive_write_ext2 (uae_u16 *bigmfmbuf, struct zfile *diskfile, trackid *ti, int tracklen) |
| 2855 | { |
| 2856 | int len, i, offset; |
| 2857 | |
| 2858 | offset = 0; |
| 2859 | len = (tracklen + 7) / 8; |
| 2860 | if (len > ti->len) { |
| 2861 | write_log (_T("disk raw write: image file's track %d is too small (%d < %d)!\n"), ti->track, ti->len, len); |
| 2862 | offset = (len - ti->len) / 2; |
| 2863 | len = ti->len; |
| 2864 | } |
| 2865 | diskfile_update (diskfile, ti, tracklen, TRACK_RAW); |
| 2866 | for (i = 0; i < ti->len / 2; i++) { |
| 2867 | uae_u16 *mfm = bigmfmbuf + ((i + offset) % MAXMFMBUF); |
| 2868 | uae_u16 *mfmw = bigmfmbufw + ((i + offset) % MAXMFMBUF); |
| 2869 | uae_u8 *data = (uae_u8 *) mfm; |
| 2870 | *mfmw = 256 * *data + *(data + 1); |
| 2871 | } |
| 2872 | zfile_fseek (diskfile, ti->offs, SEEK_SET); |
| 2873 | zfile_fwrite (bigmfmbufw, 1, len, diskfile); |
| 2874 | return 1; |
| 2875 | } |
| 2876 | |
| 2877 | static void drive_write_data (drive * drv); |
| 2878 |
no test coverage detected