Code Monkey home page Code Monkey logo

bbc-fdc's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bbc-fdc's Issues

Add C64 GCR support

I've tested C64 GCR processing against the raw sample files, so examples for this should be added.

It would be good if the raw sample parser was able to detect any valid sector from FM/MFM/GCR.

Detect disk density

It would be worth detecting the disk density if possible during detection phase to make sure capture is at the right level.

Unable to read 5.25 ADFS E discs

I have a number of 5.25 ADFS L format discs, non of which I can read. Ive successfully read 3.5 ADFS, 5.25 DFS and PC format discs, so I'm reasonably sure the hardware is ok.
ADFS L discs just don't get recognized:

frank@raspberrypi:~/bbc-fdc-master/tools $ sudo ./bbcfdc -c -v
Compiled on hardware with BCM2835 processor
Start with 937500 byte sample buffer
Starting at track zero
Disk is write-protected
Creating histogram for track 2, head 0 data sampled at 12500000 with 300.00 rpm
Maximum peak on track 2, head 0 at 42 samples, 3.360ms
Peak at 42 3.360ms
Peak at 61 4.880ms
Peak at 81 6.480ms
Found 3 peaks

[45bd] FM Index Address Mark
[4bbe] GCR DATA

[6112] FM Index Address Mark
[9a8b] GCR DATA

[c123] FM ID Address Mark
[c35e] FM Track 252 (2) Head 127 (0) Sector 127 Data size 95 CRC df3f BAD (76c9)

[c860] FM ID Address Mark
[ca7c] FM Track 60 (2) Head 175 (0) Sector 255 Data size 255 CRC fdff BAD (0e8b)
[12340] GCR DATA
[16644] GCR DATA

[1ba5d] FM ID Address Mark
[1bc8a] FM Track 247 (2) Head 242 (0) Sector 255 Data size 239 CRC fb3f BAD (ad9e)

[1c69a] FM ID Address Mark
[1c8b7] FM Track 255 (2) Head 135 (0) Sector 115 Data size 247 CRC f7ff BAD (d669)
[1f410] GCR DATA

[1f50d] FM ID Address Mark
[1f72f] FM Track 95 (2) Head 255 (0) Sector 251 Data size 245 CRC 7fde BAD (ffc5)

[1ff1d] FM ID Address Mark
[20145] FM Track 244 (2) Head 191 (0) Sector 223 Data size 255 CRC dfff BAD (7d69)

[22811] FM ID Address Mark
[22a3d] FM Track 95 (2) Head 255 (0) Sector 255 Data size 255 CRC f7f6 BAD (924b)

[27acd] FM ID Address Mark
[27cef] FM Track 61 (2) Head 15 (0) Sector 255 Data size 255 CRC fffd BAD (c5a3)
[29727] GCR DATA

[298d3] FM Index Address Mark

[2b5fe] FM ID Address Mark
[2b834] FM Track 255 (2) Head 247 (0) Sector 247 Data size 255 CRC e7fa BAD (5835)

[2c143] FM ID Address Mark
[2c370] FM Track 254 (2) Head 31 (0) Sector 173 Data size 250 CRC b7df BAD (96c0)
[2d318] GCR DATA
[338f4] GCR DATA
[37683] GCR DATA

[3bdb2] FM ID Address Mark
[3bfd9] FM Track 255 (2) Head 221 (0) Sector 251 Data size 237 CRC eff8 BAD (6e2c)

[43b5b] FM Index Address Mark
[4415b] GCR DATA

[456af] FM Index Address Mark
[49027] GCR DATA

[4b6bd] FM ID Address Mark
[4b8f8] FM Track 252 (2) Head 127 (0) Sector 127 Data size 95 CRC df3f BAD (76c9)

[4bdfa] FM ID Address Mark
[4c015] FM Track 60 (2) Head 175 (0) Sector 255 Data size 255 CRC fdff BAD (0e8b)
[518d9] GCR DATA
[55bde] GCR DATA

[5aff7] FM ID Address Mark
[5b223] FM Track 247 (2) Head 242 (0) Sector 255 Data size 239 CRC fb3f BAD (ad9e)

[5bc34] FM ID Address Mark
[5be51] FM Track 255 (2) Head 135 (0) Sector 115 Data size 247 CRC f7ff BAD (d669)
[5e9aa] GCR DATA

[5eaa6] FM ID Address Mark
[5ecc8] FM Track 95 (2) Head 255 (0) Sector 251 Data size 245 CRC 7fde BAD (ffc5)

[5f4b6] FM ID Address Mark
[5f6de] FM Track 244 (2) Head 191 (0) Sector 223 Data size 255 CRC dfff BAD (7d69)

[61dab] FM ID Address Mark
[61fd8] FM Track 95 (2) Head 255 (0) Sector 255 Data size 255 CRC f7f6 BAD (924b)

[67069] FM ID Address Mark
[6728b] FM Track 61 (2) Head 15 (0) Sector 255 Data size 255 CRC fffd BAD (c5a3)
[68cc3] GCR DATA

[68e6e] FM Index Address Mark

[6ab9a] FM ID Address Mark
[6add0] FM Track 255 (2) Head 247 (0) Sector 247 Data size 255 CRC e7fa BAD (5835)

[6b6df] FM ID Address Mark
[6b90c] FM Track 254 (2) Head 31 (0) Sector 173 Data size 250 CRC b7df BAD (96c0)
[6c8b4] GCR DATA
[72e91] GCR DATA
[76c1d] GCR DATA

[7b391] FM ID Address Mark
[7b5b7] FM Track 255 (2) Head 221 (0) Sector 251 Data size 237 CRC eff8 BAD (6e2c)

[8313b] FM Index Address Mark
[8373c] GCR DATA

[84c91] FM Index Address Mark
[8860b] GCR DATA

[8aca2] FM ID Address Mark
[8aede] FM Track 252 (2) Head 127 (0) Sector 127 Data size 95 CRC df3f BAD (76c9)

[8b3df] FM ID Address Mark
[8b5fb] FM Track 60 (2) Head 175 (0) Sector 255 Data size 255 CRC fdff BAD (0e8b)
[90ec0] GCR DATA
[951c4] GCR DATA

[9a5de] FM ID Address Mark
[9a80b] FM Track 247 (2) Head 242 (0) Sector 255 Data size 239 CRC fb3f BAD (ad9e)

[9b21c] FM ID Address Mark
[9b439] FM Track 255 (2) Head 135 (0) Sector 115 Data size 247 CRC f7ff BAD (d669)
[9df92] GCR DATA

[9e08e] FM ID Address Mark
[9e2b0] FM Track 95 (2) Head 255 (0) Sector 251 Data size 245 CRC 7fde BAD (ffc5)

[9ea9e] FM ID Address Mark
[9ecc6] FM Track 244 (2) Head 191 (0) Sector 223 Data size 255 CRC dfff BAD (7d69)

[a1391] FM ID Address Mark
[a15be] FM Track 95 (2) Head 255 (0) Sector 255 Data size 255 CRC f7f6 BAD (924b)

[a664a] FM ID Address Mark
[a686c] FM Track 61 (2) Head 15 (0) Sector 255 Data size 255 CRC fffd BAD (c5a3)
[a82a3] GCR DATA

[a844f] FM Index Address Mark

[aa17a] FM ID Address Mark
[aa3b1] FM Track 255 (2) Head 247 (0) Sector 247 Data size 255 CRC e7fa BAD (5835)

[aacc0] FM ID Address Mark
[aaeed] FM Track 254 (2) Head 31 (0) Sector 173 Data size 250 CRC b7df BAD (96c0)
[abe95] GCR DATA
[b2472] GCR DATA
[b61ff] GCR DATA

[ba976] FM ID Address Mark
[bab9c] FM Track 255 (2) Head 221 (0) Sector 251 Data size 237 CRC eff8 BAD (6e2c)

[c271e] FM Index Address Mark
[c2d1e] GCR DATA

[c4272] FM Index Address Mark
[c7bea] GCR DATA

[ca281] FM ID Address Mark
[ca4bc] FM Track 252 (2) Head 127 (0) Sector 127 Data size 95 CRC df3f BAD (76c9)

[ca9bd] FM ID Address Mark
[cabd9] FM Track 60 (2) Head 175 (0) Sector 255 Data size 255 CRC fdff BAD (0e8b)
[d049d] GCR DATA
[d47a2] GCR DATA

[d9bbe] FM ID Address Mark
[d9deb] FM Track 247 (2) Head 242 (0) Sector 255 Data size 239 CRC fb3f BAD (ad9e)

[da7fc] FM ID Address Mark
[daa19] FM Track 255 (2) Head 135 (0) Sector 115 Data size 247 CRC f7ff BAD (d669)
[dd573] GCR DATA

[dd66f] FM ID Address Mark
[dd891] FM Track 95 (2) Head 255 (0) Sector 251 Data size 245 CRC 7fde BAD (ffc5)

[de07f] FM ID Address Mark
[de2a7] FM Track 244 (2) Head 191 (0) Sector 223 Data size 255 CRC dfff BAD (7d69)

[e0974] FM ID Address Mark
[e0ba0] FM Track 95 (2) Head 255 (0) Sector 255 Data size 255 CRC f7f6 BAD (924b)
No FM sector IDs found
No MFM sector IDs found
No C64 GCR sector IDs found
No Apple GCR sector IDs found
Creating histogram for track 2, head 1 data sampled at 12500000 with 300.00 rpm
Maximum peak on track 2, head 1 at 42 samples, 3.360ms
Peak at 42 3.360ms
Peak at 60 4.800ms
Peak at 81 6.480ms
Found 3 peaks
[1055] GCR DATA

[209a] FM ID Address Mark
[22bb] FM Track 189 (2) Head 255 (1) Sector 255 Data size 231 CRC ffeb BAD (68f0)
[52a3] GCR DATA
[9cf8] GCR DATA

[9fd7] FM Data Address Mark, distance from ID 9fd7
[dce7] GCR DATA

[eb81] FM ID Address Mark
[edbe] FM Track 255 (2) Head 239 (1) Sector 255 Data size 247 CRC fffe BAD (ba56)

[10d4e] FM Data Address Mark, distance from ID 10d4e
[13f39] GCR DATA

[1592d] FM Deleted Data Address Mark, distance from ID 1592d

[1697c] FM Index Address Mark
[183f7] GCR DATA

[19c98] FM Deleted Data Address Mark, distance from ID 19c98

[20015] FM Data Address Mark, distance from ID 20015

[20c51] FM ID Address Mark
[20e82] FM Track 191 (2) Head 255 (1) Sector 203 Data size 255 CRC f8ff BAD (dff0)

[21c8a] FM ID Address Mark
[21ea6] FM Track 191 (2) Head 249 (1) Sector 255 Data size 221 CRC fd9f BAD (a021)

[24cc2] FM ID Address Mark
[24ef4] FM Track 249 (2) Head 127 (1) Sector 247 Data size 255 CRC eeff BAD (ed57)
[266d6] GCR DATA

[27d00] FM Index Address Mark

[27dfc] FM Data Address Mark, distance from ID 27dfc

[2ca3a] FM Data Address Mark, distance from ID 2ca3a
[305d2] GCR DATA

[31db7] FM Data Address Mark, distance from ID 31db7

[326fd] FM ID Address Mark
[32912] FM Track 207 (2) Head 233 (1) Sector 202 Data size 191 CRC dfff BAD (17b3)

[32c70] FM ID Address Mark
[32e9b] FM Track 127 (2) Head 253 (1) Sector 255 Data size 255 CRC ff2f BAD (cb65)

[340d3] FM Data Address Mark, distance from ID 340d3

[34eba] FM Data Address Mark, distance from ID 34eba

[350d1] FM Data Address Mark, distance from ID 350d1
[36418] GCR DATA

[36687] FM Index Address Mark
[3a506] GCR DATA

[3a99f] FM Data Address Mark, distance from ID 3a99f
[4063e] GCR DATA

[41683] FM ID Address Mark
[418a4] FM Track 189 (2) Head 255 (1) Sector 255 Data size 231 CRC ffeb BAD (68f0)
[4488b] GCR DATA
[492de] GCR DATA

[495bd] FM Data Address Mark, distance from ID 495bd
[4da50] GCR DATA

[4e165] FM ID Address Mark
[4e3a1] FM Track 255 (2) Head 239 (1) Sector 255 Data size 247 CRC fffe BAD (ba56)

[50331] FM Data Address Mark, distance from ID 50331

[54f0f] FM Deleted Data Address Mark, distance from ID 54f0f
[55d1e] GCR DATA

[55f5e] FM Index Address Mark

[5927c] FM Deleted Data Address Mark, distance from ID 5927c
[5a278] GCR DATA

[5f5fe] FM Data Address Mark, distance from ID 5f5fe

[6023a] FM ID Address Mark
[6046b] FM Track 191 (2) Head 255 (1) Sector 203 Data size 255 CRC f8ff BAD (dff0)

[61273] FM ID Address Mark
[61490] FM Track 191 (2) Head 249 (1) Sector 255 Data size 221 CRC fd9f BAD (a021)

[642ad] FM ID Address Mark
[644df] FM Track 249 (2) Head 127 (1) Sector 247 Data size 255 CRC eeff BAD (ed57)
[65cc1] GCR DATA

[672eb] FM Index Address Mark

[673e7] FM Data Address Mark, distance from ID 673e7

[6c024] FM Data Address Mark, distance from ID 6c024
[6fbb9] GCR DATA

[7139d] FM Data Address Mark, distance from ID 7139d

[71ce3] FM ID Address Mark
[71ef8] FM Track 207 (2) Head 233 (1) Sector 202 Data size 191 CRC dfff BAD (17b3)

[72256] FM ID Address Mark
[72482] FM Track 127 (2) Head 253 (1) Sector 255 Data size 255 CRC ff2f BAD (cb65)

[736b9] FM Data Address Mark, distance from ID 736b9

[744a0] FM Data Address Mark, distance from ID 744a0

[746b7] FM Data Address Mark, distance from ID 746b7
[759ff] GCR DATA

[75c6e] FM Index Address Mark
[79af1] GCR DATA

[79f8a] FM Data Address Mark, distance from ID 79f8a
[7fc2a] GCR DATA

[80c6f] FM ID Address Mark
[80e90] FM Track 189 (2) Head 255 (1) Sector 255 Data size 231 CRC ffeb BAD (68f0)
[83e78] GCR DATA
[888cc] GCR DATA

[88bab] FM Data Address Mark, distance from ID 88bab
[8d03f] GCR DATA

[8d754] FM ID Address Mark
[8d990] FM Track 255 (2) Head 239 (1) Sector 255 Data size 247 CRC fffe BAD (ba56)

[8f920] FM Data Address Mark, distance from ID 8f920
[92b0b] GCR DATA

[94500] FM Deleted Data Address Mark, distance from ID 94500

[9554f] FM Index Address Mark
[96fcb] GCR DATA

[9886d] FM Deleted Data Address Mark, distance from ID 9886d

[9ebef] FM Data Address Mark, distance from ID 9ebef

[9f82b] FM ID Address Mark
[9fa5c] FM Track 191 (2) Head 255 (1) Sector 203 Data size 255 CRC f8ff BAD (dff0)

[a0864] FM ID Address Mark
[a0a80] FM Track 191 (2) Head 249 (1) Sector 255 Data size 221 CRC fd9f BAD (a021)

[a389c] FM ID Address Mark
[a3ace] FM Track 249 (2) Head 127 (1) Sector 247 Data size 255 CRC eeff BAD (ed57)
[a52b0] GCR DATA

[a68da] FM Index Address Mark

[a69d6] FM Data Address Mark, distance from ID a69d6

[ab612] FM Data Address Mark, distance from ID ab612
[af1a9] GCR DATA

[b098c] FM Data Address Mark, distance from ID b098c

[b12d2] FM ID Address Mark
[b14e7] FM Track 207 (2) Head 233 (1) Sector 202 Data size 191 CRC dfff BAD (17b3)

[b1845] FM ID Address Mark
[b1a71] FM Track 127 (2) Head 253 (1) Sector 255 Data size 255 CRC ff2f BAD (cb65)

[b2ca8] FM Data Address Mark, distance from ID b2ca8

[b3a8f] FM Data Address Mark, distance from ID b3a8f

[b3ca6] FM Data Address Mark, distance from ID b3ca6
[b4fee] GCR DATA

[b525c] FM Index Address Mark
[b90de] GCR DATA

[b9577] FM Data Address Mark, distance from ID b9577
[bf218] GCR DATA

[c025c] FM ID Address Mark
[c047e] FM Track 189 (2) Head 255 (1) Sector 255 Data size 231 CRC ffeb BAD (68f0)
[c3465] GCR DATA
[c7eb6] GCR DATA

[c8195] FM Data Address Mark, distance from ID c8195
[cbea2] GCR DATA

[ccd3c] FM ID Address Mark
[ccf78] FM Track 255 (2) Head 239 (1) Sector 255 Data size 247 CRC fffe BAD (ba56)

[cef08] FM Data Address Mark, distance from ID cef08
[d20f3] GCR DATA

[d3ae8] FM Deleted Data Address Mark, distance from ID d3ae8

[d4b37] FM Index Address Mark
[d65b1] GCR DATA

[d7e53] FM Deleted Data Address Mark, distance from ID d7e53
[dc588] GCR DATA

[de1d4] FM Data Address Mark, distance from ID de1d4

[dee11] FM ID Address Mark
[df042] FM Track 191 (2) Head 255 (1) Sector 203 Data size 255 CRC f8ff BAD (dff0)

[dfe4a] FM ID Address Mark
[e0067] FM Track 191 (2) Head 249 (1) Sector 255 Data size 221 CRC fd9f BAD (a021)

[e2e83] FM ID Address Mark
[e30b5] FM Track 249 (2) Head 127 (1) Sector 247 Data size 255 CRC eeff BAD (ed57)
[e4897] GCR DATA
Creating histogram for track 2, head 1 data sampled at 12500000 with 300.00 rpm
Maximum peak on track 2, head 1 at 42 samples, 3.360ms
Peak at 42 3.360ms
Peak at 60 4.800ms
Peak at 81 6.480ms
Found 3 peaks

[8c] FM Index Address Mark

[1ea1] FM ID Address Mark
[20d7] FM Track 255 (2) Head 233 (1) Sector 247 Data size 255 CRC efb5 BAD (0057)

[21fd] FM Data Address Mark, distance from ID 21fd

[48b8] FM ID Address Mark
[4adf] FM Track 223 (2) Head 126 (1) Sector 255 Data size 151 CRC fbf5 BAD (aeb7)

[4afe] FM Index Address Mark
[88ba] GCR DATA

[bb8f] FM Data Address Mark, distance from ID bb8f

[d00b] FM Deleted Data Address Mark, distance from ID d00b

[d284] FM ID Address Mark
[d4bb] FM Track 118 (2) Head 127 (1) Sector 223 Data size 255 CRC fffd BAD (6bce)

[1009f] FM Index Address Mark

[10e77] FM ID Address Mark
[110c1] FM Track 239 (2) Head 255 (1) Sector 235 Data size 253 CRC ffbf BAD (8c6f)

[11376] FM Deleted Data Address Mark, distance from ID 11376

[113d8] FM Index Address Mark

[127c4] FM ID Address Mark
[129f0] FM Track 223 (2) Head 251 (1) Sector 255 Data size 127 CRC 7fef BAD (023b)

[142c1] FM Data Address Mark, distance from ID 142c1

[16aef] FM Data Address Mark, distance from ID 16aef

[17762] FM Data Address Mark, distance from ID 17762

[1b9d5] FM Index Address Mark

[1d931] FM Deleted Data Address Mark, distance from ID 1d931
[1ecbe] GCR DATA

[20538] FM Index Address Mark

[20d24] FM Deleted Data Address Mark, distance from ID 20d24

[2141f] FM Data Address Mark, distance from ID 2141f
[228c0] GCR DATA

[2548a] FM Data Address Mark, distance from ID 2548a
[2bd67] GCR DATA

[2cebc] FM Data Address Mark, distance from ID 2cebc
[2fa14] GCR DATA

[30526] FM Data Address Mark, distance from ID 30526

[342e4] FM Index Address Mark

[34bd1] FM ID Address Mark
[34df1] FM Track 255 (2) Head 126 (1) Sector 126 Data size 83 CRC 97ff BAD (2898)
[35538] GCR DATA
[3a37d] GCR DATA

[3abdc] FM Index Address Mark

[3bae5] FM ID Address Mark
[3bd1c] FM Track 155 (2) Head 255 (1) Sector 190 Data size 127 CRC ba7f BAD (446b)

[3cb62] FM Index Address Mark
[3ef08] GCR DATA

[3f673] FM Index Address Mark

[41488] FM ID Address Mark
[416be] FM Track 255 (2) Head 233 (1) Sector 247 Data size 255 CRC efb5 BAD (0057)

[417e3] FM Data Address Mark, distance from ID 417e3

[43e9e] FM ID Address Mark
[440c5] FM Track 223 (2) Head 126 (1) Sector 255 Data size 151 CRC fbf5 BAD (aeb7)

[440e4] FM Index Address Mark
[4a9a4] GCR DATA

[4b175] FM Data Address Mark, distance from ID 4b175

[4c5f1] FM Deleted Data Address Mark, distance from ID 4c5f1

[4c86a] FM ID Address Mark
[4caa1] FM Track 118 (2) Head 127 (1) Sector 223 Data size 255 CRC fffd BAD (6bce)

[4f686] FM Index Address Mark

[5045e] FM ID Address Mark
[506a8] FM Track 239 (2) Head 255 (1) Sector 235 Data size 253 CRC ffbf BAD (8c6f)

[5095e] FM Deleted Data Address Mark, distance from ID 5095e

[509c0] FM Index Address Mark

[51dac] FM ID Address Mark
[51fd8] FM Track 223 (2) Head 251 (1) Sector 255 Data size 127 CRC 7fef BAD (023b)

[538a9] FM Data Address Mark, distance from ID 538a9

[560d6] FM Data Address Mark, distance from ID 560d6
[5636f] GCR DATA

[56d4a] FM Data Address Mark, distance from ID 56d4a

[5afbe] FM Index Address Mark

[5cf1c] FM Deleted Data Address Mark, distance from ID 5cf1c
[5e2aa] GCR DATA

[5fb24] FM Index Address Mark

[60311] FM Deleted Data Address Mark, distance from ID 60311

[60a0c] FM Data Address Mark, distance from ID 60a0c
[61ead] GCR DATA

[64a78] FM Data Address Mark, distance from ID 64a78
[6b354] GCR DATA

[6c4a9] FM Data Address Mark, distance from ID 6c4a9
[6f002] GCR DATA

[6fb14] FM Data Address Mark, distance from ID 6fb14

[738d3] FM Index Address Mark
[7419f] GCR DATA

[741c1] FM ID Address Mark
[743e1] FM Track 255 (2) Head 126 (1) Sector 126 Data size 83 CRC 97ff BAD (2898)
[7996b] GCR DATA

[7a1ca] FM Index Address Mark

[7b0d3] FM ID Address Mark
[7b30a] FM Track 155 (2) Head 255 (1) Sector 190 Data size 127 CRC ba7f BAD (446b)

[7c151] FM Index Address Mark
[7e4f7] GCR DATA

[7ec62] FM Index Address Mark

[80a77] FM ID Address Mark
[80cad] FM Track 255 (2) Head 233 (1) Sector 247 Data size 255 CRC efb5 BAD (0057)

[80dd3] FM Data Address Mark, distance from ID 80dd3

[8348f] FM ID Address Mark
[836b6] FM Track 223 (2) Head 126 (1) Sector 255 Data size 151 CRC fbf5 BAD (aeb7)

[836d5] FM Index Address Mark
[89f95] GCR DATA

[8a766] FM Data Address Mark, distance from ID 8a766

[8bbe2] FM Deleted Data Address Mark, distance from ID 8bbe2

[8be5c] FM ID Address Mark
[8c093] FM Track 118 (2) Head 127 (1) Sector 223 Data size 255 CRC fffd BAD (6bce)

[8ec77] FM Index Address Mark

[8fa4f] FM ID Address Mark
[8fc99] FM Track 239 (2) Head 255 (1) Sector 235 Data size 253 CRC ffbf BAD (8c6f)

[8ff4f] FM Deleted Data Address Mark, distance from ID 8ff4f

[8ffb0] FM Index Address Mark

[9139c] FM ID Address Mark
[915c8] FM Track 223 (2) Head 251 (1) Sector 255 Data size 127 CRC 7fef BAD (023b)

[92e98] FM Data Address Mark, distance from ID 92e98

[956c6] FM Data Address Mark, distance from ID 956c6

[96339] FM Data Address Mark, distance from ID 96339

[9a5ad] FM Index Address Mark

[9c50a] FM Deleted Data Address Mark, distance from ID 9c50a
[9d898] GCR DATA

[9f112] FM Index Address Mark

[9f8fe] FM Deleted Data Address Mark, distance from ID 9f8fe

[9fff8] FM Data Address Mark, distance from ID 9fff8
[a149a] GCR DATA

[a4064] FM Data Address Mark, distance from ID a4064
[aa93f] GCR DATA

[aba93] FM Data Address Mark, distance from ID aba93
[ae5ea] GCR DATA

[af0fb] FM Data Address Mark, distance from ID af0fb

[b2eba] FM Index Address Mark

[b37a7] FM ID Address Mark
[b39c7] FM Track 255 (2) Head 126 (1) Sector 126 Data size 83 CRC 97ff BAD (2898)
[b410e] GCR DATA
[b8f55] GCR DATA

[b97b5] FM Index Address Mark

[ba6bd] FM ID Address Mark
[ba8f4] FM Track 155 (2) Head 255 (1) Sector 190 Data size 127 CRC ba7f BAD (446b)

[bb73c] FM Index Address Mark
[bdae3] GCR DATA

[be24d] FM Index Address Mark

[c0062] FM ID Address Mark
[c0299] FM Track 255 (2) Head 233 (1) Sector 247 Data size 255 CRC efb5 BAD (0057)

[c03be] FM Data Address Mark, distance from ID c03be

[c2a79] FM ID Address Mark
[c2ca0] FM Track 223 (2) Head 126 (1) Sector 255 Data size 151 CRC fbf5 BAD (aeb7)

[c2cbe] FM Index Address Mark
[c957a] GCR DATA

[c9d4b] FM Data Address Mark, distance from ID c9d4b

[cb1c6] FM Deleted Data Address Mark, distance from ID cb1c6

[cb43f] FM ID Address Mark
[cb676] FM Track 118 (2) Head 127 (1) Sector 223 Data size 255 CRC fffd BAD (6bce)

[ce25a] FM Index Address Mark

[cf031] FM ID Address Mark
[cf27b] FM Track 239 (2) Head 255 (1) Sector 235 Data size 253 CRC ffbf BAD (8c6f)

[cf531] FM Deleted Data Address Mark, distance from ID cf531

[cf593] FM Index Address Mark

[d097e] FM ID Address Mark
[d0bab] FM Track 223 (2) Head 251 (1) Sector 255 Data size 127 CRC 7fef BAD (023b)

[d247b] FM Data Address Mark, distance from ID d247b

[d4ca9] FM Data Address Mark, distance from ID d4ca9
[d4f41] GCR DATA

[d591c] FM Data Address Mark, distance from ID d591c

[d9b91] FM Index Address Mark

[dbaef] FM Deleted Data Address Mark, distance from ID dbaef
[dce7e] GCR DATA

[de6f9] FM Index Address Mark

[ded41] FM Index Address Mark

[ded6f] FM Data Address Mark, distance from ID ded6f

[deee5] FM Deleted Data Address Mark, distance from ID deee5

[df5e0] FM Data Address Mark, distance from ID df5e0
[e0a82] GCR DATA

[e364d] FM Data Address Mark, distance from ID e364d
Single-sided disk assumed, only found data on side 0
Sampling data for track 00 head 00
Creating histogram for track 0, head 0 data sampled at 12500000 with 300.00 rpm
Maximum peak on track 0, head 0 at 41 samples, 3.280ms
Peak at 41 3.280ms
Peak at 62 4.960ms
Found 2 peaks
[1bec1] GCR DATA
[30d0e] GCR DATA

[34c56] FM Data Address Mark, distance from ID 34c56
[3a5e5] GCR DATA
[5b496] GCR DATA
[702e4] GCR DATA

[741b4] FM Data Address Mark, distance from ID 741b4
[79b43] GCR DATA
[9aa15] GCR DATA
[af85c] GCR DATA

[b37a2] FM Data Address Mark, distance from ID b37a2
[b9132] GCR DATA
[da008] GCR DATA

Unknown logical disk format

Finished
Total extracted sectors: 0

Summary:
Drive tracks 80
Single sided capture
Detected density : Unknown density
Exit function

frank@raspberrypi:~/bbc-fdc-master/tools $ sudo ./drivetest
Start
Starting at track zero
Disk is write-protected
Approximate RPM 361.21
Exit function

Is ADFS-L Assuming 300 rpm? Can I force a format to be used?

sch file view problem

Hello, I wanted to see your schematics but I can't figure out what program was used to generate them. EasyEDA supports Altium, Eagle and Kicad but can't open your file... There would be great to have schematics in PDF.

/thanks

Sort sectors by their physical position

When capturing data sectors are added to the disk store in the order which they were found.

Since we are doing 3 passes for each track it can happen that some sectors were missed on the first rotation but read on the second or third. Which results in the sectors being ordered out of sequence.

For raw formats and sector dump images this doesn't matter, but for those formats which store sectors as found regardless of id (like .td0 and .fsd) we need to preserve the physical location order.

Raspberry Pi Zero W

Is it possible to get this to run correctly on Raspberry Pi Zero W. I've use a RPi3 it works fine. I switched to using a RPiZeroW and it gives errors. Could it be a CPU frequency issue?

Great project and I've gone back to using the RPi3.

Improve raw sample processing

The raw sample processing engine currently just uses samples between rising edges to assign values to the output bitstream.

There is no PLL sync so only samples which fit within the 4us bitcell window will be detected correctly.

I've created code to do this and to track bitcells with auto pulse centering and window width adjustment to overcome some drive speed variations.

This needs integrating, but since this is a slower method than just counting samples between pulses, perhaps this should only be applied to parts of the raw sample where nothing has yet been found.

double step

option to read 40 track disc's in a 80 track drive, i.e. a double step (40/80) switch.

Add ADFS listings support

When a DFS disk is detected, the catalogue is listed, this is useful to determine what is on a disk before imaging.

I could do the same for ADFS.

Add Apple GCR Support

Apple GCR support should be added...
It is similar enough to Commodore GCR, except that the sector count does not change and the preamble and sector headers are different.

Add some common disk image formats to output types

The .SSD and .DSD files work fine in emulators except they don't support copy protected disks very well and also lots of potentially valuable information is not stored.

Some potential other disk image formats I could support are :

  • .DSK (libdisk) disk image file format
  • .DFI DiscFerret flux dump
  • Kryoflux STREAM
  • .IMD ImageDisk - Dave Dunfield's format to replace Teledisk
  • .HFE HxC Floppy Emulator
  • .SCP Supercard Pro
  • .IPF (Interchangeable Preservation Format) Software Preservation Society
  • .FSD Bill Carr's "Flexible Sector Dump" BBC Micro disc image (seems to only be single sided - due to lack of distinction between logical and physical heads)
  • .TD0 Sydex Teledisk
  • .FDI Formatted Disk Image
  • .UEF Unified emulator format (0x02XX disc chunks don't support copy protection)
  • .ADS / .ADM / .ADL / .ADF e.t.c ADFS disk images

Enhance .RAW output

The current .raw output method gives great sampling of the flux transitions detected by the drive, however initially they were just meant to contain 1Mb per track for all 40 or 80 tracks.

I propose two enhancements :

  1. Write a short header to say if it's single/double sided and 40/80 track, possibly also the sampling frequency. Then with another short header, record per-track which head and track the sample relates to. Also the RPM may be useful for disks which vary this depending on track.

  2. Compress the .raw data with RLE to reduce file size but remain lossless.

PCBs - not an issue, more of a personal message.

Hi Picosonic - loving the project, and I just ordered some PCBs made so I can build and play with one myself. It was the same price for me to buy 10 PCBs as for 1 so if you have any requests for bare PCBs I have 9 spare for the cost of the postage. Cheers.

Head cleaning cycle [enhancement]

I've been thinking about the problem of cleaning the heads of a 5.25" drive - "spinning" cleaning discs are almost impossible to find these days, but I think you could clean the heads using an empty disc sleeve with a cleaning material and some IPA in the read window of the disc...if you could get the heads to track up and down a few times.

Presumably one could do this with something like [drivetest -tmax 40 -noindex -seek 40]

But, it seems to me (as a non-programmer) it could be fairly trivial to add a function to drivetest such as [drivetest -clean] which would run the heads to max and min a few times without spinning up the motor.

Add MFM support

I've tested MFM processing against the raw sample files, so examples for this should be added.

I've heard that some disks mix both FM and MFM on the same disks, sometimes even on the same track!

So it would be good if the raw sample parser was able to detect any valid sector from FM/MFM.

non standard .scp .fsd format

Created a .scp file from a BBC disc but it will not load into HxCFloppyEmulator it just sits there saying loading and does not go further.
so suspect the .scp file that bbcfdc creates is a non standard format.
creating a .ssd works fine so the hardware and floppy drive work fine with bbcfdc, just not with trying to create protected disc images.
Also tried the .fsd format but I was unable to load the image in beebjit which can read .fsd images.

Gcc Compilation Issue

I tried compiling this on the following configuration:

  • Raspberry Pi 3 Model B Rev 1.2
  • gcc 8.3.0
  • Raspbian 10 (buster)
  • Linux raspberrypi 5.4.51-v7+ #1327 SMP Thu Jul 23 10:58:46 BST 2020 armv7l GNU/Linux

And received the following errors:

hardware.c:8:5: error: conflicting types for ‘hw_maxtracks’
 int hw_maxtracks = HW_MAXTRACKS;
     ^~~~~~~~~~~~
In file included from hardware.c:5:
hardware.h:43:21: note: previous declaration of ‘hw_maxtracks’ was here
 extern unsigned int hw_maxtracks;
                     ^~~~~~~~~~~~
hardware.c:9:5: error: conflicting types for ‘hw_currenttrack’
 int hw_currenttrack = 0;
     ^~~~~~~~~~~~~~~
In file included from hardware.c:5:
hardware.h:44:21: note: previous declaration of ‘hw_currenttrack’ was here
 extern unsigned int hw_currenttrack;
                     ^~~~~~~~~~~~~~~
hardware.c:10:5: error: conflicting types for ‘hw_currenthead’
 int hw_currenthead = 0;
     ^~~~~~~~~~~~~~
In file included from hardware.c:5:
hardware.h:45:21: note: previous declaration of ‘hw_currenthead’ was here
 extern unsigned int hw_currenthead;
                     ^~~~~~~~~~~~~~

It was complaining about unsigned versus (implicitly) signed int mismatch.

I created a pull request for this #16

Detect and process data from "flippy" disks

I've got some flippy disks with two sets of index holes, these normally would be flipped upside down to be read.

I could just sample the lower surface with the disk inserted label up and then reverse the sample buffer processing to remove the need for flipping.

Add support for reading .HFE files as the flux input

I now have .RFI and .SCP as input to the flux parsers.

I've seen lots of images in the .HFE format (both v1 and v3), so it would be good to add support for these (normalised) flux files captured on other hardware.

As such it would be good to add support for SDCard HxC Floppy Emulator (*.HFE) files as flux input.

Improve support for RPi1 revisions

RPi1 B - 26-pin GPIO header had some pinout changes between revision 1 and 2.

Currently all detected RPi1 revision codes are treated the same.

However the 26 pins of the B board revision 2 match the 40 pin GPIO pinouts of later models.

Pin 3 was GPIO0 on Rev 1 and GPIO2 on Rev 2
PIn 13 was GPIO21 on Rev 1 and GPIO27 on Rev 2

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-revision-codes

This means revision codes found in /proc/cpuinfo of 0002 and 0003 might need to be treated differently to all other RPi1 pinouts.

This does need testing on actual hardware.

binary

is there a precompiled binary available?

or directions on making the binary for someone who has never done so before?

hfe support

Is it possible to support hfe file types as that format is more useful than fsd, especial if you have a flashfloppy drive emulator and for any type of copy protected discs that you may want to copy with it, as fsd's are not supported by flashfloppy
Thanks,
Peter.

Add ability to specify side to rip when using -ss switch

I extended the -ss switch to optionally include a side to rip e.g. -ss 0 or -ss 1. If nothing is specified then it defaults to 0.

For BBC DFS disks at least, this provides the following benefits:

  1. If the first side is corrupt or unwanted, then you can capture the second side to an .ssd/.sdd/other file
  2. If the second side is in a different format to the first side, then you can write to their own .ssd/.sdd file
  3. If you want to create a second disk easily for the second side then you can

Changes are in #19

CPU / processor identification in hw.sh during compilation on later Raspberry Pi OS versions.

hw.sh no longer returns an expected string on later versions of Raspberry Pi OS

Building on a fresh Raspberry Pi OS install on a Raspberry Pi 3 and getting a few "Built on unknown processor" warnings. I looked into hw.sh and how it works. The expected output from cat /proc/cpuinfo is not as expected and always ends up with HW_UNKNOWN.

Here is a sample of what is returned:

processor       : 0
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 1
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 2
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

processor       : 3
BogoMIPS        : 38.40
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

Revision        : a02082
Serial          : REDACTED
Model           : Raspberry Pi 3 Model B Rev 1.2

This lead me to the following documentation: https://github.com/raspberrypi/documentation/blob/develop/documentation/asciidoc/computers/raspberry-pi/revision-codes.adoc

It seems the way to go is to read information from elsewhere and set the CPU accordingly through a lookup table or similar.

Hope this is a useful report.

Add support for reading .SCP files as the flux input

Currently only custom .rfi files are supported when processing flux to extract data.

It would be good to also support flux files captured on other hardware.

As such I want to add support for SuperCardPro (*.scp) files as the flux input.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.