From: "Hervé Poussineau" <hpoussin@reactos.org>
To: qemu-devel@nongnu.org
Cc: "Kevin Wolf" <kwolf@redhat.com>,
"Hervé Poussineau" <hpoussin@reactos.org>
Subject: [Qemu-devel] [PATCH 01/10] fdc: take head count into account
Date: Sun, 8 Jan 2012 21:27:39 +0100 [thread overview]
Message-ID: <1326054468-5361-2-git-send-email-hpoussin@reactos.org> (raw)
In-Reply-To: <1326054468-5361-1-git-send-email-hpoussin@reactos.org>
Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
---
hw/fdc.c | 17 +++++++++++------
1 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/hw/fdc.c b/hw/fdc.c
index 70aa5c7..c1898a6 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -95,16 +95,19 @@ static void fd_init(FDrive *drv)
drv->max_track = 0;
}
+#define NUM_SIDES(drv) ((drv)->flags & FDISK_DBL_SIDES ? 2 : 1)
+
static int fd_sector_calc(uint8_t head, uint8_t track, uint8_t sect,
- uint8_t last_sect)
+ uint8_t last_sect, uint8_t num_sides)
{
- return (((track * 2) + head) * last_sect) + sect - 1;
+ return (((track * num_sides) + head) * last_sect) + sect - 1;
}
/* Returns current position, in sectors, for given drive */
static int fd_sector(FDrive *drv)
{
- return fd_sector_calc(drv->head, drv->track, drv->sect, drv->last_sect);
+ return fd_sector_calc(drv->head, drv->track, drv->sect, drv->last_sect,
+ NUM_SIDES(drv));
}
/* Seek to a new position:
@@ -135,7 +138,7 @@ static int fd_seek(FDrive *drv, uint8_t head, uint8_t track, uint8_t sect,
drv->max_track, drv->last_sect);
return 3;
}
- sector = fd_sector_calc(head, track, sect, drv->last_sect);
+ sector = fd_sector_calc(head, track, sect, drv->last_sect, NUM_SIDES(drv));
ret = 0;
if (sector != fd_sector(drv)) {
#if 0
@@ -1019,7 +1022,8 @@ static void fdctrl_start_transfer(FDCtrl *fdctrl, int direction)
ks = fdctrl->fifo[4];
FLOPPY_DPRINTF("Start transfer at %d %d %02x %02x (%d)\n",
GET_CUR_DRV(fdctrl), kh, kt, ks,
- fd_sector_calc(kh, kt, ks, cur_drv->last_sect));
+ fd_sector_calc(kh, kt, ks, cur_drv->last_sect,
+ NUM_SIDES(cur_drv)));
switch (fd_seek(cur_drv, kh, kt, ks, fdctrl->config & FD_CONFIG_EIS)) {
case 2:
/* sect too big */
@@ -1289,7 +1293,8 @@ static void fdctrl_format_sector(FDCtrl *fdctrl)
ks = fdctrl->fifo[8];
FLOPPY_DPRINTF("format sector at %d %d %02x %02x (%d)\n",
GET_CUR_DRV(fdctrl), kh, kt, ks,
- fd_sector_calc(kh, kt, ks, cur_drv->last_sect));
+ fd_sector_calc(kh, kt, ks, cur_drv->last_sect,
+ NUM_SIDES(cur_drv)));
switch (fd_seek(cur_drv, kh, kt, ks, fdctrl->config & FD_CONFIG_EIS)) {
case 2:
/* sect too big */
--
1.7.7.3
next prev parent reply other threads:[~2012-01-08 20:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-08 20:27 [Qemu-devel] [PATCH 00/10] Misc fixes for floppy emulation Hervé Poussineau
2012-01-08 20:27 ` Hervé Poussineau [this message]
2012-01-08 20:27 ` [Qemu-devel] [PATCH 02/10] fdc: set busy bit when starting a command Hervé Poussineau
2012-01-08 20:27 ` [Qemu-devel] [PATCH 03/10] fdc: most control commands do not generate interrupts Hervé Poussineau
2012-01-08 20:27 ` [Qemu-devel] [PATCH 04/10] fdc: emulate stepping 0 Hervé Poussineau
2012-01-08 20:27 ` [Qemu-devel] [PATCH 05/10] fdc: handle read-only floppies (abort early on write commands) Hervé Poussineau
2012-01-08 20:27 ` [Qemu-devel] [PATCH 06/10] block: add a transfer rate for floppy types Hervé Poussineau
2012-01-08 20:27 ` [Qemu-devel] [PATCH 07/10] fdc: check if media rate is correct before doing any transfer Hervé Poussineau
2012-01-11 20:51 ` Andreas Färber
2012-01-08 20:27 ` [Qemu-devel] [PATCH 08/10] fdc: add CCR (Configuration Control Register) write register Hervé Poussineau
2012-01-09 8:09 ` Paolo Bonzini
2012-01-11 20:30 ` Andreas Färber
2012-01-08 20:27 ` [Qemu-devel] [PATCH 09/10] fdc: fix seek command, which shouldn't check tracks Hervé Poussineau
2012-01-08 20:27 ` [Qemu-devel] [PATCH 10/10] fdc: DIR (Digital Input Register) should return status of current drive Hervé Poussineau
2012-01-11 20:48 ` Andreas Färber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1326054468-5361-2-git-send-email-hpoussin@reactos.org \
--to=hpoussin@reactos.org \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).