http://wiki.kasettilamerit.fi/wiki/index.php?title=Brother&feed=atom&action=history
Brother - Muutoshistoria
2024-03-29T10:23:21Z
Tämän sivun muutoshistoria
MediaWiki 1.29.2
http://wiki.kasettilamerit.fi/wiki/index.php?title=Brother&diff=62&oldid=prev
Lameriadmin (29. huhtikuuta 2018 kello 15.45)
2018-04-29T15:45:17Z
<p></p>
<table class="diff diff-contentalign-left" data-mw="interface">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='fi'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Vanhempi versio</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Versio 29. huhtikuuta 2018 kello 15.45</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l2" >Rivi 2:</td>
<td colspan="2" class="diff-lineno">Rivi 2:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>== Brother LW-20, LW-30 LW-100 LW-400 and WP-70 disk format ==</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>== Brother LW-20, LW-30 LW-100 LW-400 and WP-70 disk format ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>* Based on one set of Brother LW-30 dumps. All were single sided, tracks were offset, logical track 0 is on physical track 2, 12 sectors per track, 256 bytes per sector.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> </div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> </del>* Bitcell timing is the same as with 300 rpm FM.</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Based on one set of Brother LW-30 dumps. All were single sided, tracks were offset, logical track 0 is on physical track 2, 12 sectors per track, 256 bytes per sector.</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* Bitcell timing is the same as with 300 rpm FM.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''Documentation'''</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>'''Documentation'''</div></td></tr>
</table>
Lameriadmin
http://wiki.kasettilamerit.fi/wiki/index.php?title=Brother&diff=61&oldid=prev
Lameriadmin: Ak: Uusi sivu: == Brother LW-20, LW-30 LW-100 LW-400 and WP-70 disk format == * Based on one set of Brother LW-30 dumps. All were single sided, tracks were offset, logical track 0 is on physic...
2018-04-29T15:44:24Z
<p>Ak: Uusi sivu: == Brother LW-20, LW-30 LW-100 LW-400 and WP-70 disk format == * Based on one set of Brother LW-30 dumps. All were single sided, tracks were offset, logical track 0 is on physic...</p>
<p><b>Uusi sivu</b></p><div><br />
== Brother LW-20, LW-30 LW-100 LW-400 and WP-70 disk format ==<br />
<br />
* Based on one set of Brother LW-30 dumps. All were single sided, tracks were offset, logical track 0 is on physical track 2, 12 sectors per track, 256 bytes per sector.<br />
* Bitcell timing is the same as with 300 rpm FM.<br />
<br />
'''Documentation'''<br />
<br />
8-bit GCR (MSB always 1) to 5 bits of data, translated in continuous stream, 8 GCR bytes into 5 decoded bytes at a time:<br />
<br />
<nowiki>AA 00 BA 08 DA 10 EE 18<br />
AB 01 BB 09 DB 11 EF 19<br />
AD 02 BD 0A DD 12 F5 1A<br />
AE 03 BE 0B DE 13 F6 1B<br />
AF 04 BF 0C DF 14 F7 1C<br />
B5 05 D5 0D EA 15 FA 1D<br />
B6 06 D6 0E EB 16 FB 1E<br />
B7 07 D7 0F ED 17 FD 1F</nowiki><br />
<br />
<br />
16-bit GCR to track/sector number translation table:<br />
<br />
<nowiki>EFDA 00 DEEB 10 D5DE 20 B7EF 30 ABFD 40 D5B5 50 B7BE 60 ABDB 70<br />
ADB7 01 F7D5 11 EBBD 21 DADA 31 BDEB 41 EBF7 51 DAAD 61 BDBA 71<br />
BEFB 02 B5AF 12 FDAB 22 EFB7 32 DED5 42 FDDE 52 EFEF 62 DEFD 72<br />
DFEA 03 D6F6 13 BAEE 23 ADFB 33 F7AF 43 BABD 53 ADDA 63 F7EB 73<br />
FABF 04 EDDD 14 DBD7 24 BEEA 34 B5F6 44 DBAB 54 BEB7 64 B5D5 74<br />
B6AE 05 AABB 15 F5B6 25 DFBF 35 D6DD 45 F5EE 55 DFFB 65 D6AF 75<br />
D7F5 06 BBED 16 AEFA 26 FAAE 36 EDBB 46 AED7 56 FAEA 66 EDF6 76<br />
EEDB 07 DDD6 17 BFDF 27 B6F5 37 DDAA 47 BFB6 57 B6BF 67 AADD 77<br />
ABBA 08 F6B5 18 EABE 28 D7DB 38 F6ED 48 EAFA 58 D7AE 68 BBD6 78<br />
BDFD 09 AFF7 19 FBAD 29 EEBA 39 AFD6 49 FBDF 59 EEF5 69 DDB5 79</nowiki><br />
<br />
<br />
Three sector interleave tables:<br />
<br />
<nowiki> 1 1 1<br />
6 2 4<br />
11 3 7<br />
4 4 10<br />
9 5 6<br />
2 6 9<br />
7 7 12<br />
12 8 3<br />
5 9 11<br />
10 10 2<br />
3 11 5<br />
8 12 8</nowiki><br />
<br />
<br />
Sector layout (sectors are read and written one at a time):<br />
<br />
<nowiki>0xAA<br />
0xAA * 0x30<br />
0xBF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFE<br />
<br />
0xAB Sector header lead byte checked by the ROM routine<br />
DATA = 16 bit value for track + 16 bit value for sector from translation table<br />
0xDD Sector header trail byte checked by the ROM routine<br />
<br />
0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xBF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFE<br />
<br />
0xED Sector data lead byte checked by the ROM routine<br />
DATA + CRC = 416 GCR bytes that decodes to 256 databytes and 4 CRC-bytes<br />
0xF5 Sector data trail byte 1 checked by the ROM routine<br />
0xDD Sector data trail byte 2 checked by the ROM routine<br />
<br />
0xDD 0xDD 0xDD 0xDD 0xDD 0xDD 0xDD 0xDD 0xDD</nowiki><br />
<br />
<br />
CRC routine, in the end regC, regD & regE contain the three CRC bytes calculated from the decoded databytes, fourth byte always decodes to 0x58 or else ROM checksum routine fails:<br />
<br />
<nowiki>int offset = 0;<br />
unsigned char regC = buffer[offset++];<br />
unsigned char regD = buffer[offset++];<br />
unsigned char regE = buffer[offset++];<br />
unsigned char bytes = 0xFD;<br />
<br />
while (bytes) {<br />
regA = regD;<br />
if (regC >> 7) regA ^= 1;<br />
regD = regC;<br />
regC = regA;<br />
regA = (regD << 1) ^ regE;<br />
regE = regD;<br />
regD = regA;<br />
regE ^= buffer[offset++];<br />
bytes--;<br />
};</nowiki></div>
Lameriadmin