--- np2/fdd/newdisk.c 2004/01/22 01:10:04 1.4 +++ np2/fdd/newdisk.c 2004/01/27 07:24:25 1.6 @@ -8,7 +8,7 @@ // ---- fdd -void newdisk_fdd(const char *fname, BYTE type, const char *label) { +void newdisk_fdd(const char *fname, REG8 type, const char *label) { _D88HEAD d88head; FILEH fh; @@ -27,8 +27,6 @@ void newdisk_fdd(const char *fname, BYTE // ---- hdd -static const char vhd_ver[] = "VHD1.00"; - static BOOL writezero(FILEH fh, UINT size) { BYTE work[256]; @@ -78,6 +76,31 @@ void newdisk_thd(const char *fname, UINT } } +void newdisk_nhd(const char *fname, UINT hddsize) { + + FILEH fh; + NHDHDR nhd; + UINT tmp; + + if ((fname == NULL) || (hddsize < 5) || (hddsize > 512)) { + return; + } + fh = file_create(fname); + if (fh != FILEH_INVALID) { + ZeroMemory(&nhd, sizeof(nhd)); + CopyMemory(&nhd.sig, sig_nhd, 15); + STOREINTELDWORD(nhd.headersize, sizeof(nhd)); + tmp = hddsize * 16; + STOREINTELDWORD(nhd.cylinders, tmp); + STOREINTELWORD(nhd.surfaces, 8); + STOREINTELWORD(nhd.sectors, 32); + STOREINTELWORD(nhd.sectorsize, 256); + file_write(fh, &nhd, sizeof(nhd)); + writehddipl(fh, 256); + file_close(fh); + } +} + // hddtype = 0:5MB / 1:10MB / 2:15MB / 3:20MB / 5:30MB / 6:40MB void newdisk_hdi(const char *fname, UINT hddtype) { @@ -121,7 +144,7 @@ void newdisk_vhd(const char *fname, UINT fh = file_create(fname); if (fh != FILEH_INVALID) { ZeroMemory(&vhd, sizeof(vhd)); - CopyMemory(&vhd.sig, vhd_ver, 7); + CopyMemory(&vhd.sig, sig_vhd, 7); STOREINTELWORD(vhd.mbsize, (UINT16)hddsize); STOREINTELWORD(vhd.sectorsize, 256); vhd.sectors = 32;