## Greaseweazle disk definitions. # Syntax should be fairly obvious from the examples below. # # A disk definition is declared by "disk "; scope extends to # the matching "end". Each disk definition must contain the following: # cyls: Number of cylinders (1-255) # heads: Number of heads/sides (1-2) # Also, optionally: # step: Number of physical drive steps per image step (1-4) # # Each non-empty track in a disk requires a track definition: # "tracks " # Where: # format ::= ibm.fm | ibm.mfm # track-list ::= * | [,] # track-range ::= [.] | -[.] # cylinder ::= [0-9][0-9]* # head ::= 0|1 # "*" means match all otherwise-unmatched tracks (ie. this is the default track # definition). If no head is specified in a track-range, then all heads are # assumed. Scope of a track definition extends to the matching "end". # # The ibm.fm and ibm.mfm formats accept the following parameters: # secs: Number of sectors (0-256, default: 0) # bps: Bytes per sector (128, 256, 512, 1024, 2048, 4096, 8192) # List all sizes if the size varies (eg. see "ensoniq.mirage" below) # iam: Index Address Mark (yes|no, default: yes) # cskew: Sector skew per cylinder (0-255, default: 0) # hskew: Sector skew per head (0-255, default: 0) # interleave: Sector interleave, N:1 (1-255, default: 1) # id: Sector ID (aka R) of logical first sector (0-255, default: 1) # h: Head (aka H) byte value in each sector header (0-255, default: auto) # gap1: Post-IAM Gap size (0-255, default: auto) # gap2: Post-IDAM Gap size (0-255, default: auto) # gap3: Post-DAM Gap size (0-255, default: auto) # gap4a: Post-Index Gap size (0-255, default: auto) # gapbyte: Byte value used to fill the above gaps (0-255, default: auto) # rate: Data rate in kbps (1-2000, default: auto) # eg. 250kbps is MFM DD, 500kbps is MFM HD, 1000kbps is MFM ED # rpm: Disk spin speed in RPM (1-2000, default: 300) # img_bps: Bytes per sector in IMG file (short sectors are padded) disk abc.80.0 cyls = 40 heads = 1 tracks * ibm.fm secs = 8 bps = 256 gap3 = 84 rate = 250 end end disk abc.80.1 cyls = 40 heads = 1 tracks * ibm.fm secs = 16 bps = 128 rate = 125 end end disk abc.160 cyls = 40 heads = 1 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 42 rate = 250 end end disk abc.320 cyls = 40 heads = 2 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 42 rate = 250 end end disk abc.640 cyls = 80 heads = 2 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 42 rate = 250 end end disk abc.1000 cyls = 77 heads = 2 tracks * ibm.mfm secs =26 bps = 256 rate = 500 gap3 = 84 rpm = 360 end end disk abc.1000d cyls = 77 heads = 2 tracks 0.0 ibm.fm secs =26 bps = 128 gap3 = 42 rate = 250 rpm = 360 end tracks * ibm.mfm secs =26 bps = 256 gap3 = 84 rate = 500 rpm = 360 end end disk abc.1000s cyls = 77 heads = 1 tracks 0.0 ibm.fm secs =26 bps = 128 gap3 = 42 rate = 250 rpm = 360 end tracks * ibm.mfm secs =26 bps = 256 gap3 = 84 rate = 500 rpm = 360 end end disk abc.1000data cyls = 77 heads = 2 tracks 0.0 ibm.mfm secs =15 bps = 512 gap3 = 84 rate = 500 rpm = 360 end tracks * ibm.mfm secs =26 bps = 256 gap3 = 84 rate = 500 rpm = 360 end end disk os8.1000 cyls = 77 heads = 2 tracks 0.0 ibm.fm secs =26 bps = 128 gap3 = 42 rate = 250 rpm = 360 end tracks * ibm.mfm secs =26 bps = 256 gap3 = 84 rate = 500 rpm = 360 end end disk amiga.amigados cyls = 80 heads = 2 tracks * amiga.amigados secs = 11 end end disk amiga.amigados_hd cyls = 80 heads = 2 tracks * amiga.amigados secs = 22 end end disk acorn.adfs.160 cyls = 40 heads = 1 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 57 id = 0 rate = 250 end end disk acorn.adfs.320 cyls = 80 heads = 1 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 57 id = 0 rate = 250 end end disk acorn.adfs.640 cyls = 80 heads = 2 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 57 id = 0 rate = 250 end end disk acorn.adfs.800 cyls = 80 heads = 2 tracks * ibm.mfm secs = 5 bps = 1024 gap3 = 116 id = 0 rate = 250 end end disk acorn.adfs.1600 cyls = 80 heads = 2 tracks * ibm.mfm secs = 10 bps = 1024 gap3 = 116 id = 0 rate = 500 end end disk acorn.dfs.ss cyls = 40 heads = 1 tracks * ibm.fm secs = 10 bps = 256 iam = no gap3 = 21 id = 0 cskew = 3 rate = 125 end end disk acorn.dfs.ds cyls = 40 heads = 2 tracks * ibm.fm secs = 10 bps = 256 iam = no gap3 = 21 id = 0 cskew = 3 rate = 125 end end disk akai.800 cyls = 80 heads = 2 tracks * ibm.mfm secs = 5 bps = 1024 gap3 = 116 id = 1 rate = 250 cskew = 2 end end disk akai.1600 cyls = 80 heads = 2 tracks * ibm.mfm secs = 10 bps = 1024 gap3 = 116 id = 1 rate = 500 cskew = 5 end end disk atari.90 cyls = 40 heads = 1 tracks * ibm.fm secs = 18 bps = 128 iam = yes gap1 = 6 gap3 = 17 id = 1 cskew = 3 rate = 130 end end disk atarist.360 cyls = 80 heads = 1 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 iam = no cskew = 2 end end disk atarist.400 cyls = 80 heads = 1 tracks * ibm.mfm secs = 10 bps = 512 gap3 = 30 rate = 250 iam = no end end disk atarist.440 cyls = 80 heads = 1 tracks * ibm.mfm secs = 11 bps = 512 gap3 = 3 rate = 261 iam = no end end disk atarist.720 cyls = 80 heads = 2 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 iam = no cskew = 4 hskew = 2 end end disk atarist.800 cyls = 80 heads = 2 tracks * ibm.mfm secs = 10 bps = 512 gap3 = 30 rate = 250 iam = no end end disk atarist.880 cyls = 80 heads = 2 tracks * ibm.mfm secs = 11 bps = 512 gap3 = 3 rate = 261 iam = no end end disk coco.decb cyls = 35 heads = 1 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 5 iam = no rate = 250 end end disk coco.decb.40t cyls = 40 heads = 1 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 5 iam = no rate = 250 end end # TRS CoCo OS-9 disk coco.os9.40ss cyls = 40 heads = 1 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 3 iam = no rate = 250 end end disk coco.os9.40ds cyls = 40 heads = 2 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 3 iam = no rate = 250 end end disk coco.os9.80ss cyls = 80 heads = 1 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 3 iam = no rate = 250 end end disk coco.os9.80ds cyls = 80 heads = 2 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 3 iam = no rate = 250 end end disk commodore.1541 cyls = 40 heads = 1 tracks 0-16 c64.gcr clock = 3.25 secs = 21 end tracks 17-23 c64.gcr clock = 3.50 secs = 19 end tracks 24-29 c64.gcr clock = 3.75 secs = 18 end tracks * c64.gcr clock = 4.00 secs = 17 end end disk commodore.1571 cyls = 35 heads = 2 tracks 0-16 c64.gcr clock = 3.25 secs = 21 end tracks 17-23 c64.gcr clock = 3.50 secs = 19 end tracks 24-29 c64.gcr clock = 3.75 secs = 18 end tracks * c64.gcr clock = 4.00 secs = 17 end end disk commodore.1581 cyls = 80 heads = 2 tracks 0-79.0 ibm.mfm secs = 10 bps = 512 gap3 = 30 rate = 250 h = 1 end tracks 0-79.1 ibm.mfm secs = 10 bps = 512 gap3 = 30 rate = 250 h = 0 end end disk dec.rx01 cyls = 77 heads = 1 tracks * ibm.fm secs = 26 bps = 128 gap3 = 26 rate = 250 rpm = 360 end end disk dec.rx02 cyls = 77 heads = 1 tracks * dec.rx02 secs = 26 bps = 128 # Actually 256 bytes, at double rate, MMFM coded gap3 = 26 rate = 250 rpm = 360 end end disk dragon.40ss cyls = 40 heads = 1 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 2 iam = no end end disk dragon.40ds cyls = 40 heads = 2 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 2 iam = no end end disk dragon.80ss cyls = 80 heads = 1 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 2 iam = no end end disk dragon.80ds cyls = 80 heads = 2 tracks * ibm.mfm secs = 18 bps = 256 id = 1 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 2 iam = no end end disk ensoniq.800 cyls = 80 heads = 2 tracks * ibm.mfm secs = 10 bps = 512 gap3 = 30 id = 0 rate = 250 end end disk ensoniq.1600 cyls = 80 heads = 2 tracks * ibm.mfm secs = 20 bps = 512 gap3 = 40 id = 0 rate = 500 end end disk ensoniq.mirage cyls = 80 heads = 1 tracks * ibm.mfm # The sectors are a tight fit so squeeze the post-index gaps a little gap1 = 20 gap4a = 20 secs = 6 bps = 1024*5,512 id = 0 rate = 250 end end # General Music (GEM) S2 and S3 disk gem.1600 cyls = 80 heads = 2 tracks * ibm.mfm secs = 10 bps = 1024 gap3 = 116 id = 1 rate = 500 cskew = 5 end end disk ibm.160 cyls = 40 heads = 1 tracks * ibm.mfm secs = 8 bps = 512 gap3 = 84 rate = 250 end end disk ibm.180 cyls = 40 heads = 1 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end disk jet.8 cyls = 77 heads = 2 tracks * ibm.mfm secs = 8 bps = 1024 gap3 = 84 rate = 250 end end disk jet.5 cyls = 80 heads = 2 tracks * ibm.mfm secs = 5 bps = 1024 gap3 = 84 rate = 250 end end disk monroe.320 cyls = 80 heads = 1 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 84 rate = 250 end end disk ibm.320 cyls = 40 heads = 2 tracks * ibm.mfm secs = 8 bps = 512 gap3 = 84 rate = 250 end end disk ibm.360 cyls = 40 heads = 2 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end disk ibm.720 cyls = 80 heads = 2 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end disk ibm.800 cyls = 80 heads = 2 tracks * ibm.mfm secs = 10 bps = 512 gap3 = 30 rate = 250 end end disk ibm.1200 cyls = 80 heads = 2 tracks * ibm.mfm secs = 15 bps = 512 gap3 = 84 rate = 500 rpm = 360 end end disk ibm.1440 cyls = 80 heads = 2 tracks * ibm.mfm secs = 18 bps = 512 gap3 = 84 rate = 500 end end disk ibm.1680 cyls = 80 heads = 2 tracks * ibm.mfm secs = 21 bps = 512 gap3 = 12 cskew = 3 interleave = 2 rate = 500 end end # alias for ibm.1680 disk ibm.dmf cyls = 80 heads = 2 tracks * ibm.mfm secs = 21 bps = 512 gap3 = 12 cskew = 3 interleave = 2 rate = 500 end end disk ibm.2880 cyls = 80 heads = 2 tracks * ibm.mfm secs = 36 bps = 512 gap2 = 41 rate = 1000 end end # Generic IBM format codec which will scan a track for any valid FM/MFM # sectors at standard rates (125kbps, 250kbps, 500kbps) and RPMs (300, 360). disk ibm.scan cyls = 80 heads = 2 tracks * ibm.scan # Following options restrict the scanner's search # rate = 250 # rpm = 300 end end disk mac.400 cyls = 80 heads = 1 tracks 0-15 mac.gcr clock = 2.63 secs = 12 format = 0x02 interleave = 2 end tracks 16-31 mac.gcr clock = 2.89 secs = 11 format = 0x02 interleave = 2 end tracks 32-47 mac.gcr clock = 3.20 secs = 10 format = 0x02 interleave = 2 end tracks 48-63 mac.gcr clock = 3.57 secs = 9 format = 0x02 interleave = 2 end tracks * mac.gcr clock = 3.98 secs = 8 format = 0x02 interleave = 2 end end disk mac.800 cyls = 80 heads = 2 tracks 0-15 mac.gcr clock = 2.63 secs = 12 format = 0x22 interleave = 2 end tracks 16-31 mac.gcr clock = 2.89 secs = 11 format = 0x22 interleave = 2 end tracks 32-47 mac.gcr clock = 3.20 secs = 10 format = 0x22 interleave = 2 end tracks 48-63 mac.gcr clock = 3.57 secs = 9 format = 0x22 interleave = 2 end tracks * mac.gcr clock = 3.98 secs = 8 format = 0x22 interleave = 2 end end # MM/1 3.5" HD 32SPT Microware OS-9 disk mm1.os9.80ds.hd32spt cyls = 80 heads = 2 tracks * ibm.mfm secs = 32 bps = 256 id = 0 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 3 iam = no rate = 500 end end # MM/1 3.5" HD 36SPT Microware OS-9 disk mm1.os9.80ds.hd36spt cyls = 80 heads = 2 tracks * ibm.mfm secs = 32 bps = 256 id = 0 gap2 = 22 gap3 = 24 gap4a = 32 interleave = 3 iam = no rate = 500 end end disk msx.1d cyls = 40 heads = 1 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end disk msx.1dd cyls = 80 heads = 1 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end disk msx.2d cyls = 40 heads = 2 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end disk msx.2dd cyls = 80 heads = 2 tracks * ibm.mfm secs = 9 bps = 512 gap3 = 84 rate = 250 end end # Osborne 1 Single Density disk occ1.sd cyls = 40 heads = 1 tracks * ibm.fm secs = 10 bps = 256 rate = 125 end end # Osborne 1 Double Density disk occ1.dd cyls = 40 heads = 1 tracks * ibm.mfm secs = 5 bps = 1024 rate = 250 end end # Olivetti M20 360kB DD floppies disk olivetti.m20 cyls = 35 heads = 2 tracks 0.0 ibm.fm secs = 16 bps = 128 rate = 125 img_bps = 256 end tracks * ibm.mfm secs = 16 bps = 256 rate = 250 end end disk pc98.2d cyls = 40 heads = 2 tracks * ibm.mfm secs = 8 bps = 512 gap3 = 57 rate = 250 rpm = 300 end end disk pc98.2dd cyls = 77 heads = 2 tracks * ibm.mfm secs = 8 bps = 512 gap3 = 57 rate = 250 rpm = 360 end end disk pc98.2hd cyls = 77 heads = 2 tracks * ibm.mfm secs = 8 bps = 1024 gap3 = 116 rate = 500 rpm = 360 end end # Used by N88-Basic disks for NEC PC-98 disk pc98.n88basic.hd cyls = 77 heads = 2 tracks 0.0 ibm.fm secs = 26 bps = 128 gap3 = 26 rate = 250 rpm = 360 end tracks * ibm.mfm secs = 26 bps = 256 gap3 = 26 rate = 500 rpm = 360 end end disk pc98.2hs cyls = 81 heads = 2 tracks * ibm.mfm secs = 9 bps = 1024 gap3 = 116 rate = 500 rpm = 300 end end disk raw.125 # 125kbps (eg. FM, 5.25") cyls = 81 heads = 2 tracks * bitcell clock = 4.0 end end disk raw.250 # 250 kbps (eg. MFM DD, 3.5") cyls = 81 heads = 2 tracks * bitcell clock = 2.0 end end disk raw.500 # 500 kbps (eg. MFM HD, 3.5") cyls = 81 heads = 2 tracks * bitcell clock = 1.0 end end # Sequential Circuits Prophet disk sci.prophet cyls = 80 heads = 2 tracks * ibm.mfm # gap1 is reduced to give a bit more leeway at the end of the track gap1 = 20 secs = 6 bps = 1024*5,256 id = 0 rate = 250 end end disk sega.sf7000 cyls = 40 heads = 1 tracks * ibm.mfm secs = 16 bps = 256 gap3 = 42 id = 1 rate = 250 end end # TSC FLEX: DS/DD with SD (FM) cylinder 0. # Sector numbering and interleave is continuous across drive heads. Since # there is no direct way to flag this, we implement it here by explicitly # specifying head 1 track formats: with sector @id following on from head 0, # and with @hskew shifting the first sector of side 1 the correct amount to # simulate cross-track interleave. disk tsc.flex.dsdd cyls = 80 heads = 2 tracks 0.0 ibm.fm bps = 256 iam = no gap3 = 16 gap4a = 16 secs = 10 interleave = 4 id = 1 h = 0 end tracks 0.1 ibm.fm bps = 256 iam = no gap3 = 16 gap4a = 16 secs = 10 interleave = 4 hskew = 1 id = 11 # Follows on from head 0 (1..10 -> 11..20) h = 0 end tracks 1-79.0 ibm.mfm bps = 256 iam = no gap3 = 16 gap4a = 16 secs = 18 interleave = 6 id = 1 h = 1 end tracks 1-79.1 ibm.mfm bps = 256 iam = no gap3 = 16 gap4a = 16 secs = 18 interleave = 6 hskew = 5 id = 19 # Follows on from head 0 (1..18 -> 19..36) h = 1 end end # TSC FLEX: SS/DD with SD (FM) cylinder 0. # Definition is a simplified version of the DS/DD format. disk tsc.flex.ssdd cyls = 80 heads = 1 tracks 0.0 ibm.fm bps = 256 iam = no gap3 = 16 gap4a = 16 secs = 10 interleave = 4 id = 1 h = 0 end tracks 1-79.0 ibm.mfm bps = 256 iam = no gap3 = 16 gap4a = 16 secs = 18 interleave = 6 id = 1 h = 1 end end disk zx.trdos.640 cyls = 80 heads = 2 tracks * ibm.mfm secs = 16 bps = 256 h = 0 end end # Quorum (ZX Spectrum clone) running CP/M-80 disk zx.quorum.800 cyls = 80 heads = 2 tracks * ibm.mfm secs = 5 bps = 1024 end end