diskdef ibm-3740
  seclen 128
  tracks 77
  sectrk 26
  blocksize 1024
  maxdir 64
  skew 6
  boottrk 2
  os p2dos
end

diskdef 4mb-hd
  seclen 128
  tracks 1024
  sectrk 32
  blocksize 2048
  maxdir 256
  skew 1
  boottrk 0
  os p2dos
end

diskdef pcw
  seclen 512
  tracks 40
  sectrk 9
  blocksize 1024
  maxdir 64
  skew 1
  boottrk 1
  os 3
end

diskdef pc1.2m
  seclen 512
  tracks 80
  # this format uses 15 sectors per track, but 30 per cylinder
  sectrk 30
  blocksize 4096
  maxdir 256
  skew 1
  boottrk 0
  os 3
end

# CP/M 86 on 1.44MB floppies
diskdef cpm86-144feat
  seclen 512
  tracks 160
  sectrk 18
  blocksize 4096
  maxdir 256
  skew 1
  boottrk 2
  os 3
end

diskdef cf2dd
  seclen 512
  tracks 160
  sectrk 9
  blocksize 2048
  maxdir 256
  skew 1
  boottrk 1
  os 3
end

#amstrad: values are read from super block (special name hardcoded)

# Royal alphatronic
# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2
diskdef alpha
  seclen 256
  tracks 40
  sectrk 32
  blocksize 2048
  maxdir 128
  skew 1
  boottrk 2
  os 2.2
end

# Apple II CP/M skew o Apple II DOS 3.3 skew
diskdef apple-do
  seclen 256
  tracks 35
  sectrk 16
  blocksize 1024
  maxdir 64
  skew 0
  boottrk 3
  os 2.2
end

# Apple II CP/M skew o Apple II PRODOS skew
diskdef apple-po
  seclen 256
  tracks 35
  sectrk 16
  blocksize 1024
  maxdir 64
  skew 0
  boottrk 3
  os 2.2
end

# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header)
diskdef myz80
  seclen 1024
  tracks 64
  sectrk 128
  blocksize 4096
  maxdir 1024
  skew 1
  boottrk 0
  os 3
end

# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad 
# superblock. You'll need to use libdsk to access them because the Linux 
# and Windows kernel drivers won't touch them.
diskdef cpcsys
  seclen 512
  tracks 40
  sectrk 9
  blocksize 1024
  maxdir 64
  skew 1
  boottrk 2
  os 3
end
diskdef cpcdata
  seclen 512
  tracks 40
  sectrk 9
  blocksize 1024
  maxdir 64
  skew 1
  boottrk 0
  os 3
end

# after being read in with no sector skew.
diskdef nigdos
  seclen 512
  # NigDos double sided disk format, 42 tracks * 2 sides
  tracks 84
  sectrk 10
  blocksize 2048
  maxdir 128
  skew 1
  boottrk 0
  # this format wastes half of the directory entry
  logicalextents 1
  os 3
end

diskdef epsqx10
  seclen 512
  tracks 40
  sectrk 20
  blocksize 2048
  maxdir 128
  skew 0
  boottrk 2
  os 2.2
end

diskdef ibm-8ss
  seclen 512
  tracks 40
  sectrk 8
  blocksize 1024
  maxdir 64
  skew 0
  boottrk 1
  os 2.2
end

diskdef ibm-8ds
  seclen 512
  tracks 40
  sectrk 8
  blocksize 1024
  maxdir 64
  skew 0
  boottrk 1
  os 2.2
end

diskdef electroglas
  seclen 512
  tracks 80
  sectrk 10
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 1
  os 3
end

# IBM CP/M-86
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1
diskdef ibmpc-514ss
   seclen 512
   tracks 40
   sectrk 8
   blocksize 1024
   maxdir 64
   skew 1
   boottrk 1
   os 2.2
end

# IBM CP/M-86
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48
diskdef ibmpc-514ds
   seclen 512
   tracks 80
   sectrk 8
   blocksize 2048
   maxdir 64
   skew 0
   boottrk 2
   os 2.2
end

diskdef p112
  seclen 512
  tracks 160
  sectrk 18
  blocksize 2048
  maxdir 256
  skew 1
  boottrk 2
  os 3
end

diskdef p112-old
  seclen 512
  tracks 160
  sectrk 18
  blocksize 2048
  maxdir 128
  skew 1
  boottrk 1
  os 3
end

diskdef kpii
  seclen 512
  tracks 40
  sectrk 10
  blocksize 1024
  maxdir 32
  skew 0
  boottrk 1
  os 2.2
end

# setfdprm /dev/fd0 dd sect=10
diskdef interak
  seclen 512
  tracks 80
  sectrk 20
  blocksize 4096
  maxdir 256
  skew 0
  boottrk 2
  os 2.2
end

# RomWBW 128KB ROM Disk

diskdef wbw_rom128
  seclen 512
  tracks 4
  sectrk 64
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 0
  os 2.2
end

# RomWBW 256KB ROM Disk

diskdef wbw_rom256
  seclen 512
  tracks 8
  sectrk 64
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 0
  os 2.2
end

# RomWBW 384KB ROM Disk

diskdef wbw_rom384
  seclen 512
  tracks 12
  sectrk 64
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 0
  os 2.2
end

# RomWBW 896KB ROM Disk

diskdef wbw_rom896
  seclen 512
  tracks 28
  sectrk 64
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 0
  os 2.2
end

# RomWBW 720K floppy media

diskdef wbw_fd720
  seclen 512
  tracks 160
  sectrk 9
  blocksize 2048
  maxdir 128
  skew 0
  boottrk 4
  os 2.2
end

# RomWBW 1.44M floppy media

diskdef wbw_fd144
  seclen 512
  tracks 160
  sectrk 18
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 2
  os 2.2
end

# RomWBW 360K floppy media

diskdef wbw_fd360
  seclen 512
  tracks 80
  sectrk 9
  blocksize 2048
  maxdir 128
  skew 0
  boottrk 4
  os 2.2
end

# RomWBW 1.20M floppy media

diskdef wbw_fd120
  seclen 512
  tracks 160
  sectrk 15
  blocksize 2048
  maxdir 256
  skew 0
  boottrk 2
  os 2.2
end

# RomWBW 8320KB Hard Disk Slice (512 directory entry format)
# Legacy format: 512 dir entries, 16,630 sectors / slice

diskdef wbw_hd512
  seclen 512
  tracks 1040
  sectrk 16
  blocksize 4096
  maxdir 512
  skew 0
  boottrk 16
  os 2.2
end

# First 4 slices of wbw_hd512
# Assumes first slice (slice 0) starts at sector 0
# Offset of any slice (in tracks) = (1040 * <slice_num>)

diskdef wbw_hd512_0
  seclen 512
  tracks 1040
  sectrk 16
  blocksize 4096
  maxdir 512
  skew 0
  boottrk 16
  offset 0T
  os 2.2
end

diskdef wbw_hd512_1
  seclen 512
  tracks 1040
  sectrk 16
  blocksize 4096
  maxdir 512
  skew 0
  boottrk 16
  offset 1040T
  os 2.2
end

diskdef wbw_hd512_2
  seclen 512
  tracks 1040
  sectrk 16
  blocksize 4096
  maxdir 512
  skew 0
  boottrk 16
  offset 2080T
  os 2.2
end

diskdef wbw_hd512_3
  seclen 512
  tracks 1040
  sectrk 16
  blocksize 4096
  maxdir 512
  skew 0
  boottrk 16
  offset 3120T
  os 2.2
end

# RomWBW 8MB Hard Disk (1024 directory entry format)
# New format: 1024 dir entries, 16,384 sectors / slice
# Pure filesystem image, no MBR prefix

diskdef wbw_hd1k
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 2
  os 2.2
end

# First 4 slices of wbw_hd1k
# Assumes standard 1MB prefix
# Offset of any slice (in tracks) = 128 + (1024 * <slice_num)

diskdef wbw_hd1k_0
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 2
  offset 128T
  os 2.2
end

diskdef wbw_hd1k_1
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 2
  offset 1152T
  os 2.2
end

diskdef wbw_hd1k_2
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 2
  offset 2176T
  os 2.2
end

diskdef wbw_hd1k_3
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 2
  offset 3200T
  os 2.2
end

# SmallZ80 Hard Disk Image
# 5 slices

diskdef smz80_hd0
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 0
  offset 10T
  os 2.2
end

diskdef smz80_hd1
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 0
  offset 1034T
  os 2.2
end

diskdef smz80_hd2
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 0
  offset 2058T
  os 2.2
end

diskdef smz80_hd3
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 0
  offset 3082T
  os 2.2
end

diskdef smz80_hd4
  seclen 512
  tracks 1024
  sectrk 16
  blocksize 4096
  maxdir 1024
  skew 0
  boottrk 0
  offset 4106T
  os 2.2
end

# RC2014 standard (Grant Searle) hard disk image
# Slices A-P
# Offset of slice (in tracks) = (512 * <slice_num>)

diskdef rc2014a
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 1
  offset 0T
  os 2.2
end

diskdef rc2014b
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 512T
  os 2.2
end

diskdef rc2014c
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 1024T
  os 2.2
end

diskdef rc2014d
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 1536T
  os 2.2
end

diskdef rc2014e
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 2048T
  os 2.2
end

diskdef rc2014f
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 2560T
  os 2.2
end

diskdef rc2014g
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 3072T
  os 2.2
end

diskdef rc2014h
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 3584T
  os 2.2
end

diskdef rc2014i
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 4096T
  os 2.2
end

diskdef rc2014j
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 4608T
  os 2.2
end

diskdef rc2014k
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 5120T
  os 2.2
end

diskdef rc2014l
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 5632T
  os 2.2
end

diskdef rc2014m
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 6144T
  os 2.2
end

diskdef rc2014n
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 6656T
  os 2.2
end

diskdef rc2014o
  seclen 512
  tracks 512
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 7168T
  os 2.2
end

diskdef rc2014p
  seclen 512
  tracks 128
  sectrk 32
  blocksize 4096
  maxdir 512
  boottrk 0
  offset 7680T
  os 2.2
end
