Cpmtools

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

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.. Sectors per track
  blocksize n				1024,2048,4096,8192,16384 Block size = (128*(BLM+1))
  maxdir n				1.. Number of directory entries      = (DRM+1)
  skew n				0.. Logical sector skew
  skewtab r1,r2,r3,...			skew table
  boottrk n				Number of system tracks              = OFS
  offset n | nK | nM | nT		n Byte|n Kilobyte|n Megabyte|n Tracks
  logicalextents			Logical extents per physical extent
  os 2.2 | 3 | isx | p2dos | zsys	
  libdsk:format name			pcw720, cpcsys
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

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 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 
  

d:\user\pohlers\AltairSIMH>dskscan -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
 myz80      : MYZ80 8Mb
 pcpm320    : IBM 320k (CP/M-86 / DOSPLUS)