aboutsummaryrefslogtreecommitdiff
path: root/circuitpython/lib/adafruit_floppy/standalone
diff options
context:
space:
mode:
Diffstat (limited to 'circuitpython/lib/adafruit_floppy/standalone')
-rw-r--r--circuitpython/lib/adafruit_floppy/standalone/main.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/circuitpython/lib/adafruit_floppy/standalone/main.c b/circuitpython/lib/adafruit_floppy/standalone/main.c
new file mode 100644
index 0000000..fee8142
--- /dev/null
+++ b/circuitpython/lib/adafruit_floppy/standalone/main.c
@@ -0,0 +1,49 @@
+// SPDX-FileCopyrightText: 2022 Jeff Epler for Adafruit Industries
+//
+// SPDX-License-Identifier: MIT
+
+#include <stdio.h>
+
+struct mfm_io {};
+
+#include "mfm_impl.h"
+
+void hexdump(void *buf_in, size_t n) {
+ unsigned char *buf = buf_in;
+ size_t i = 0;
+ for (; i < n; i++) {
+ if (i % 16 == 0) {
+ printf("%04zx ", i);
+ }
+ printf("%02x%c", buf[i], (i % 16 == 15) ? '\n' : ' ');
+ }
+ if (i % 16 != 0) {
+ putchar('\n');
+ }
+}
+
+static inline mfm_io_symbol_t mfm_io_read_symbol(mfm_io_t *io) {
+ int c = getchar();
+ return (mfm_io_symbol_t)(c - '0');
+}
+
+static void mfm_io_reset_sync_count(mfm_io_t *io) {}
+
+static inline int mfm_io_get_sync_count(mfm_io_t *io) {
+ return feof(stdin) ? 2 : 0;
+}
+
+int main() {
+ enum { n_sectors = 18 };
+ char data[n_sectors * blocksize];
+ uint8_t validity[n_sectors];
+ struct mfm_io io;
+ read_track(io, n_sectors, data, validity);
+ for (int i = 0; i < n_sectors; i++) {
+ printf("validity[% 2d] = %d\n", i, validity[i]);
+ if (validity[i]) {
+ hexdump(data + i * blocksize, blocksize);
+ printf("\n");
+ }
+ }
+}