Cpmtools
http://www.moria.de/~michael/cpmtools/
GUI → http://star.gmobb.jp/koji/cgi/wiki.cgi?page=CpmtoolsGUI
Format description
diskdef name format definition seclen n 128,256,512,1024,.. physical Sector length tracks n 1.. Number of tracks = (Cylinders * Sides) sectrk n 1.. phys. Sectors per track blocksize n 1024,2048,4096,8192,16384 Block size = (128*(BLM+1)) maxdir n 1.. Number of directory entries = (DRM+1) boottrk n Number of system tracks = OFS rest is optional dirblks n to allow reserving blocks after the directory using an inflated DPB ALV0 (since 2.21) bootsec n total numbers of sectors used by the boot area skew n 0.. Logical sector skew skewtab r1,r2,r3,... skew table offset n | nK | nM | nT | nS n Byte|n Kilobyte|n Megabyte|n Tracks|n Sectors logicalextents n Logical extents per physical extent os 2.2 | 3 | isx | p2dos | zsys libdsk:format name pcw720,cpcsys, etc. (Optional kann der Typ mit übergeben werden: format[,type]) end Berechnungen: size := (secLength*sectrk*(tracks-boottrk))/blksiz; if (extents==0) extents := ((size>=256 ? 8 : 16)*blksiz)/16384; if (extents==0) extents := 1; Allocatabledatablocks := size-(maxdir*32+blksiz-1)/blksiz); posix: physical pos := ((sector+track*sectrk)*secLength)+offset; win32c: SetFilePointer := ((sector+track*sectrk)*secLength)+offset; libdisk: physical sector := (track*sectrk + sector) + offset/secLength;
Viele Hinweise zu libsk, cpmtools, … und zur Analyse unbekannter Disketten gibt's von Larry Kraemer auf http://forums.debian.net/viewtopic.php?f=16&t=112244
Build
Erzeugen mit MINGW/MSYS
#------------------------------------------------------------------------------ # libdsk #------------------------------------------------------------------------------ tar zxvf libdsk-1.3.3.tar.gz cd libdsk-1.3.3 ./configure make strip *.exe make install cd .. #------------------------------------------------------------------------------ # cpmtools #------------------------------------------------------------------------------ PDCurses installieren, d:\devtools\MinGW\include\curses.h heißt schon richtig? cd d:\devtools\MinGW\lib\ copy libpdcurses.a libcurses.a #------------------------------------------------------------------------------ tar zxvf cpmtools-2.13.tar.gz cd cpmtools-2.13 ./configure --with-diskdefs="" --with-defformat="default" --with-libdsk=/local/ make make -i install strip /local/bin/*.exe #------------------------------------------------------------------------------ tar zxvf cpmtools-2.18.tar.gz cd cpmtools-2.18 es gibt Compiler-Probleme mit den mitgelieferten getopt-Daten, deshalb - in Makefile.in "getopt$(OBJEXT) getopt1$(OBJEXT) " überall löschen - leere Datei getopt_.h anlegen (oder vorhandene leeren) ./configure --with-diskdefs="" --with-defformat="default" --with-libdsk=/local/ make strip *.exe make -i install
Changes
Changes since 2.22: o Use 16 bit block pointers for file systems > 256 blocks, not >= 256 o Translate CP/M file name character '/' to ',' for the host and back o dirblks in Kaypro format fixed o Misc fixes for directory listing o Added bootsec diskdefs option o Check Device_close return value o Check for too small block number when reading file data o Replaced obsolete macros in configure.in o Cygwin/Windows support did not build any more and likely not for quite some time, so it was removed. Changes since 2.21: o Refactored curses terminal calls into own module o Many autoconf changes with the hope to improve portability and likely just breaking things o New diskdef for HP200 o Added dirblks to allow reserving blocks after the directory as used by Kaypro o Fixed user number output for cpmls -d o Added option -u to show all CP/M file names in uppercase Changes since 2.20: o rc759 diskdef renamed to rc75x, as it works for the series o diskdefs.5 added o Many disk formats from Larry Kraemer added o Renamed ampdsdd to ampro400d for consistency with libdsk and because ampdsdd very likely was wrong o Check for invalid block size o Output line number for diskdefs errors o Correctly output create or access time for CP/M 3 in cpmls o Spectravideo SVI-728 diskdef added o $DESTDIR support o Correctly handle empty files o Fix block allocation for large directories. o Fix time stamp conversion o Allow user number 16-31 for CP/M 2.2 o Intel MDS/22 formats added o Crash when using blocksize 16384 fixed Changes since 2.19: o Fixed bug in cpmfs leading to wrongly allocated blocks Changes since 2.18: o More diskdefs entries o New diskdefs option to set the libdsk format o Fixed various warnings o Fixed Makefile if building without curses Changes since 2.17: o Make timestamps in mkfs.com optional and add date stamper creation o Better cpm.5 documentation o Updated config.guess o Fixed error handling for corrupt images or diskdefs o Fixed off by one bug in fsck not detecting a wrong block number o Fixed too short directory buffer for directory sizes not matching whole blocks Changes since 2.16: o Improved filesystem documentation o Many new diskdefs o device_win32.c fixed by Bill Buckels Changes since 2.15: * Various small fixes * Datestamper support * Image offset to access disk slices
libdisk-Formate und Typen
d:>dskdump.exe -formats Disk formats supported: pcw180 : PCW / IBM 180k cpcsys : CPC System cpcdata : CPC Data pcw720 : PCW / IBM 720k pcw1440 : PcW16 / IBM 1440k ibm160 : IBM 160k (CP/M-86 / DOSPLUS) ibm320 : IBM 320k (CP/M-86 / DOSPLUS) ibm360 : IBM 360k (CP/M-86 / DOSPLUS) ibm720 : IBM 720k (144FEAT) ibm1200 : IBM 1.2M (144FEAT) ibm1440 : IBM 1.4M (144FEAT) acorn160 : Acorn 160k acorn320 : Acorn 320k acorn640 : Acorn 640k acorn800 : Acorn 800k acorn1600 : Acorn 1600k pcw800 : PCW 800k pcw200 : PCW 200k bbc100 : BBC 100k bbc200 : BBC 200k mbee400 : Microbee 400k mgt800 : MGT 800k trdos640 : TR-DOS 640k ampro200 : Ampro 40 track single-sided ampro400d : Ampro 40 track double-sided ampro400s : Ampro 80 track single-sided ampro800 : Ampro 80 track double-sided pcw1200 : PcW16 / IBM 1200k mac400 : Macintosh GCR 400k mac800 : Macintosh GCR 800k myz80 : MYZ80 8Mb pcpm320 : IBM 320k (CP/M-86 / DOSPLUS) d:>dskdump.exe -types Disk image types supported: ntwdm : NT WDM floppy driver floppy : Win32 floppy driver gotek : Gotek 1440k disc image collection gotek72 : Gotek 720k disc image collection remote : Remote LibDsk instance rcpmfs : Reverse CP/MFS driver dsk : CPCEMU .DSK driver edsk : Extended .DSK driver apridisk : APRIDISK file driver copyqm : CopyQM file driver tele : TeleDisk file driver ldbs : LibDsk block store sap : SAP file driver qrst : Quick Release Sector Transfer imd : IMD file driver ydsk : YAZE YDSK driver raw : Raw file driver (alternate sides) rawoo : Raw file driver (out and out) rawob : Raw file driver (out and back) myz80 : MYZ80 hard drive driver simh : SIMH disc image driver nanowasp : NanoWasp image file driver logical : Raw file logical sector order jv3 : JV3 file driver dc42 : Disk Copy 4.2 cfi : CFI file driver