Skip to content

Commit 5c4a1ea

Browse files
committed
Attempt to modernise the TRS-80 format.
1 parent 76f18ff commit 5c4a1ea

File tree

7 files changed

+214
-145
lines changed

7 files changed

+214
-145
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ choices because they can store multiple types of file system.
147147
| [`ti99`](doc/disk-ti99.md) | TI-99: 90kB 35-track SSSD | 🦖 | | |
148148
| [`tids990`](doc/disk-tids990.md) | Texas Instruments DS990: 1126kB 8" DSSD | 🦖 | 🦖 | |
149149
| [`tiki`](doc/disk-tiki.md) | Tiki 100: CP/M | | | CPMFS |
150+
| [`trs80`](doc/disk-trs80.md) | : TRS-80 88kB 5.25" 35-track 10-sector SSSD | | | |
150151
| [`victor9k`](doc/disk-victor9k.md) | Victor 9000 / Sirius One: 1224kB 5.25" DSDD GCR | 🦖 | 🦖 | |
151152
| [`zilogmcz`](doc/disk-zilogmcz.md) | Zilog MCZ: 320kB 8" 77-track SSSD hard-sectored | 🦖 | | ZDOS |
152153
{: .datatable }

build.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@
7272
("rx50", "", ""),
7373
("tartu", "", "--390 --drivetype=40"),
7474
("tartu", "", "--780"),
75+
("trs80", "", "--88 --drivetype=40"),
76+
("trs80", "", "--100 --drivetype=40"),
77+
("trs80", "", "--175 --drivetype=40"),
78+
("trs80", "", "--200 --drivetype=40"),
7579
("tids990", "", ""),
7680
("victor9k", "", "--612"),
7781
("victor9k", "", "--1224"),

doc/disk-trs80.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
trs80
2+
====
3+
## TRS-80 88kB 5.25" 35-track 10-sector SSSD
4+
<!-- This file is automatically generated. Do not edit. -->
5+
6+
Insert documentation here.
7+
8+
## Options
9+
10+
- Format variants:
11+
- `88`: 87.5kB SSSD 35-track
12+
- `100`: 100kB SSSD 40-track
13+
- `175`: 175kB SSDD 35-track
14+
- `200`: 200kB SSDD 40-track
15+
16+
## Examples
17+
18+
To read:
19+
20+
- `fluxengine read -c trs80 --88 -s drive:0 -o trs80.img`
21+
- `fluxengine read -c trs80 --100 -s drive:0 -o trs80.img`
22+
- `fluxengine read -c trs80 --175 -s drive:0 -o trs80.img`
23+
- `fluxengine read -c trs80 --200 -s drive:0 -o trs80.img`
24+
25+
To write:
26+
27+
- `fluxengine write -c trs80 --88 -d drive:0 -i trs80.img`
28+
- `fluxengine write -c trs80 --100 -d drive:0 -i trs80.img`
29+
- `fluxengine write -c trs80 --175 -d drive:0 -i trs80.img`
30+
- `fluxengine write -c trs80 --200 -d drive:0 -i trs80.img`
31+

src/formats/build.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"ti99",
3838
"tids990",
3939
"tiki",
40+
"trs80",
4041
"victor9k",
4142
"zilogmcz",
4243
]

src/formats/trs80.textpb

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
comment: 'TRS-80 88kB 5.25" 35-track 10-sector SSSD'
2+
3+
documentation:
4+
<<<
5+
Insert documentation here.
6+
>>>
7+
8+
image_reader {
9+
filename: "trs80.img"
10+
img {}
11+
}
12+
13+
image_writer {
14+
filename: "trs80.img"
15+
img {}
16+
}
17+
18+
encoder {
19+
ibm {}
20+
}
21+
22+
decoder {
23+
ibm {}
24+
}
25+
26+
layout {
27+
format_type: FORMATTYPE_40TRACK
28+
}
29+
30+
option_group {
31+
comment: "$formats"
32+
33+
option {
34+
name: "88"
35+
comment: "87.5kB SSSD 35-track"
36+
37+
config {
38+
layout {
39+
tracks: 35
40+
sides: 1
41+
layoutdata {
42+
sector_size: 256
43+
physical {
44+
start_sector: 0
45+
count: 10
46+
}
47+
}
48+
}
49+
50+
encoder {
51+
ibm {
52+
trackdata {
53+
target_rotational_period_ms: 167
54+
target_clock_period_us: 3.333
55+
emit_iam: false
56+
use_fm: true
57+
gap0: 0x10
58+
gap2: 0x09
59+
gap3: 0x10
60+
idam_byte: 0xf57e
61+
dam_byte: 0xf56f
62+
gap_fill_byte: 0xffff
63+
}
64+
}
65+
}
66+
}
67+
}
68+
69+
option {
70+
name: "100"
71+
comment: "100kB SSSD 40-track"
72+
73+
config {
74+
layout {
75+
tracks: 40
76+
sides: 1
77+
layoutdata {
78+
sector_size: 256
79+
physical {
80+
start_sector: 0
81+
count: 10
82+
}
83+
}
84+
}
85+
86+
encoder {
87+
ibm {
88+
trackdata {
89+
target_rotational_period_ms: 167
90+
target_clock_period_us: 3.333
91+
emit_iam: false
92+
use_fm: true
93+
gap0: 0x10
94+
gap2: 0x09
95+
gap3: 0x10
96+
idam_byte: 0xf57e
97+
dam_byte: 0xf56f
98+
gap_fill_byte: 0xffff
99+
}
100+
}
101+
}
102+
}
103+
}
104+
105+
option {
106+
name: "175"
107+
comment: "175kB SSDD 35-track"
108+
109+
config {
110+
layout {
111+
tracks: 35
112+
sides: 1
113+
layoutdata {
114+
sector_size: 512
115+
physical {
116+
start_sector: 0
117+
count: 10
118+
}
119+
}
120+
}
121+
122+
encoder {
123+
ibm {
124+
trackdata {
125+
target_rotational_period_ms: 167
126+
target_clock_period_us: 3.333
127+
emit_iam: false
128+
gap0: 80
129+
gap2: 22
130+
gap3: 34
131+
}
132+
trackdata {
133+
track: 17
134+
dam_byte: 0xf56e
135+
}
136+
}
137+
}
138+
}
139+
}
140+
141+
option {
142+
name: "200"
143+
comment: "200kB SSDD 40-track"
144+
145+
config {
146+
layout {
147+
tracks: 40
148+
sides: 1
149+
layoutdata {
150+
sector_size: 512
151+
physical {
152+
start_sector: 0
153+
count: 10
154+
}
155+
}
156+
}
157+
158+
encoder {
159+
ibm {
160+
trackdata {
161+
target_rotational_period_ms: 167
162+
target_clock_period_us: 3.333
163+
emit_iam: false
164+
gap0: 80
165+
gap2: 22
166+
gap3: 34
167+
}
168+
trackdata {
169+
track: 17
170+
dam_byte: 0xf56e
171+
}
172+
}
173+
}
174+
}
175+
}
176+
}
177+

src/formats/trs80_175.textpb

Lines changed: 0 additions & 71 deletions
This file was deleted.

src/formats/trs80_88.textpb

Lines changed: 0 additions & 74 deletions
This file was deleted.

0 commit comments

Comments
 (0)