diff --git a/README.md b/README.md index 3f38972e..f34486ac 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,7 @@ choices because they can store multiple types of file system. | [`ti99`](doc/disk-ti99.md) | TI-99: 90kB 35-track SSSD | 🦖 | | | | [`tids990`](doc/disk-tids990.md) | Texas Instruments DS990: 1126kB 8" DSSD | 🦖 | 🦖 | | | [`tiki`](doc/disk-tiki.md) | Tiki 100: CP/M | | | CPMFS | +| [`trs80`](doc/disk-trs80.md) | : TRS-80 88kB 5.25" 35-track 10-sector SSSD | | | | | [`victor9k`](doc/disk-victor9k.md) | Victor 9000 / Sirius One: 1224kB 5.25" DSDD GCR | 🦖 | 🦖 | | | [`zilogmcz`](doc/disk-zilogmcz.md) | Zilog MCZ: 320kB 8" 77-track SSSD hard-sectored | 🦖 | | ZDOS | {: .datatable } diff --git a/build.py b/build.py index bb626049..5ea498e6 100644 --- a/build.py +++ b/build.py @@ -72,6 +72,10 @@ ("rx50", "", ""), ("tartu", "", "--390 --drivetype=40"), ("tartu", "", "--780"), + ("trs80", "", "--88 --drivetype=40"), + ("trs80", "", "--100 --drivetype=40"), + ("trs80", "", "--175 --drivetype=40"), + ("trs80", "", "--200 --drivetype=40"), ("tids990", "", ""), ("victor9k", "", "--612"), ("victor9k", "", "--1224"), diff --git a/doc/disk-trs80.md b/doc/disk-trs80.md new file mode 100644 index 00000000..ff26d4d6 --- /dev/null +++ b/doc/disk-trs80.md @@ -0,0 +1,31 @@ +trs80 +==== +## TRS-80 88kB 5.25" 35-track 10-sector SSSD + + +Insert documentation here. + +## Options + + - Format variants: + - `88`: 87.5kB SSSD 35-track + - `100`: 100kB SSSD 40-track + - `175`: 175kB SSDD 35-track + - `200`: 200kB SSDD 40-track + +## Examples + +To read: + + - `fluxengine read -c trs80 --88 -s drive:0 -o trs80.img` + - `fluxengine read -c trs80 --100 -s drive:0 -o trs80.img` + - `fluxengine read -c trs80 --175 -s drive:0 -o trs80.img` + - `fluxengine read -c trs80 --200 -s drive:0 -o trs80.img` + +To write: + + - `fluxengine write -c trs80 --88 -d drive:0 -i trs80.img` + - `fluxengine write -c trs80 --100 -d drive:0 -i trs80.img` + - `fluxengine write -c trs80 --175 -d drive:0 -i trs80.img` + - `fluxengine write -c trs80 --200 -d drive:0 -i trs80.img` + diff --git a/src/formats/build.py b/src/formats/build.py index 99f0591e..73f6862a 100644 --- a/src/formats/build.py +++ b/src/formats/build.py @@ -37,6 +37,7 @@ "ti99", "tids990", "tiki", + "trs80", "victor9k", "zilogmcz", ] diff --git a/src/formats/trs80.textpb b/src/formats/trs80.textpb new file mode 100644 index 00000000..276e133a --- /dev/null +++ b/src/formats/trs80.textpb @@ -0,0 +1,177 @@ +comment: 'TRS-80 88kB 5.25" 35-track 10-sector SSSD' + +documentation: +<<< +Insert documentation here. +>>> + +image_reader { + filename: "trs80.img" + img {} +} + +image_writer { + filename: "trs80.img" + img {} +} + +encoder { + ibm {} +} + +decoder { + ibm {} +} + +layout { + format_type: FORMATTYPE_40TRACK +} + +option_group { + comment: "$formats" + + option { + name: "88" + comment: "87.5kB SSSD 35-track" + + config { + layout { + tracks: 35 + sides: 1 + layoutdata { + sector_size: 256 + physical { + start_sector: 0 + count: 10 + } + } + } + + encoder { + ibm { + trackdata { + target_rotational_period_ms: 167 + target_clock_period_us: 3.333 + emit_iam: false + use_fm: true + gap0: 0x10 + gap2: 0x09 + gap3: 0x10 + idam_byte: 0xf57e + dam_byte: 0xf56f + gap_fill_byte: 0xffff + } + } + } + } + } + + option { + name: "100" + comment: "100kB SSSD 40-track" + + config { + layout { + tracks: 40 + sides: 1 + layoutdata { + sector_size: 256 + physical { + start_sector: 0 + count: 10 + } + } + } + + encoder { + ibm { + trackdata { + target_rotational_period_ms: 167 + target_clock_period_us: 3.333 + emit_iam: false + use_fm: true + gap0: 0x10 + gap2: 0x09 + gap3: 0x10 + idam_byte: 0xf57e + dam_byte: 0xf56f + gap_fill_byte: 0xffff + } + } + } + } + } + + option { + name: "175" + comment: "175kB SSDD 35-track" + + config { + layout { + tracks: 35 + sides: 1 + layoutdata { + sector_size: 512 + physical { + start_sector: 0 + count: 10 + } + } + } + + encoder { + ibm { + trackdata { + target_rotational_period_ms: 167 + target_clock_period_us: 3.333 + emit_iam: false + gap0: 80 + gap2: 22 + gap3: 34 + } + trackdata { + track: 17 + dam_byte: 0xf56e + } + } + } + } + } + + option { + name: "200" + comment: "200kB SSDD 40-track" + + config { + layout { + tracks: 40 + sides: 1 + layoutdata { + sector_size: 512 + physical { + start_sector: 0 + count: 10 + } + } + } + + encoder { + ibm { + trackdata { + target_rotational_period_ms: 167 + target_clock_period_us: 3.333 + emit_iam: false + gap0: 80 + gap2: 22 + gap3: 34 + } + trackdata { + track: 17 + dam_byte: 0xf56e + } + } + } + } + } +} +