From: Alan Cox Date: Tue, 2 Jun 2015 22:56:45 +0000 (+0100) Subject: dragon-nx-32: first floppy fixes X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=664d4066efb5292942abad33fd2f9956eac9b502;p=FUZIX.git dragon-nx-32: first floppy fixes Track 0 now behaves. Seeking to other tracks breaks. --- diff --git a/Kernel/platform-dragon-nx32/devfd.c b/Kernel/platform-dragon-nx32/devfd.c index 5bd22196..56e48230 100644 --- a/Kernel/platform-dragon-nx32/devfd.c +++ b/Kernel/platform-dragon-nx32/devfd.c @@ -14,7 +14,7 @@ static uint8_t motorct; static uint8_t fd_selected = 0xFF; -extern uint8_t *fd_tab; +extern uint8_t fd_tab[]; static void fd_motor_busy(void) { @@ -89,14 +89,18 @@ static int fd_transfer(uint8_t minor, bool is_read, uint8_t rawflag) while (nblock) { for (tries = 0; tries < 4 ; tries++) { + kprintf("fd sector %d track %d\n", cmd[3], cmd[2]); err = fd_operation(cmd, driveptr); if (err == 0) break; - if (tries > 1) + kprintf("fd error %d\n", err); + if (tries > 1) { + kputs("fd reset\n"); fd_reset(driveptr); + } } /* FIXME: should we try the other half and then bale out ? */ - if (tries == 3) + if (tries == 4) goto bad; cmd[5]++; /* Move on 256 bytes in the buffer */ cmd[3]++; /* Next sector for next block */ diff --git a/Kernel/platform-dragon-nx32/floppy.s b/Kernel/platform-dragon-nx32/floppy.s index 7c980151..6382024c 100644 --- a/Kernel/platform-dragon-nx32/floppy.s +++ b/Kernel/platform-dragon-nx32/floppy.s @@ -320,7 +320,7 @@ _fd_operation: orcc #0x40 ; Make sure FIR is off jsr piasave ldy 6,s ; Drive struct - tst ,y+ ; User or kernel ? + tst ,x+ ; User or kernel ? beq fd_op_k jsr map_process_always fd_op_k: