Inhaltsverzeichnis

Cpmtools

http://www.moria.de/~michael/cpmtools/

GUIhttp://star.gmobb.jp/koji/cgi/wiki.cgi?page=CpmtoolsGUI

https://www.seasip.info/Unix/LibDsk/

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