diff mbox series

[v2,16/20] mac_via: implement ADB_STATE_IDLE state if shift register in input mode

Message ID 20230909094827.33871-17-mark.cave-ayland@ilande.co.uk
State New
Headers show
Series q800: add support for booting MacOS Classic - part 2 | expand

Commit Message

Mark Cave-Ayland Sept. 9, 2023, 9:48 a.m. UTC
NetBSD switches directly to IDLE state without switching the shift register to
input mode. Duplicate the existing ADB_STATE_IDLE logic in input mode from when
the shift register is in output mode which allows the ADB autopoll handler to
handle the response.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/misc/mac_via.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Laurent Vivier Sept. 26, 2023, 8:05 a.m. UTC | #1
Le 09/09/2023 à 11:48, Mark Cave-Ayland a écrit :
> NetBSD switches directly to IDLE state without switching the shift register to
> input mode. Duplicate the existing ADB_STATE_IDLE logic in input mode from when
> the shift register is in output mode which allows the ADB autopoll handler to
> handle the response.
> 
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>   hw/misc/mac_via.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c
> index 208216aed3..398e8d1967 100644
> --- a/hw/misc/mac_via.c
> +++ b/hw/misc/mac_via.c
> @@ -702,6 +702,12 @@ static void adb_via_send(MOS6522Q800VIA1State *v1s, int state, uint8_t data)
>           break;
>   
>       case ADB_STATE_IDLE:
> +        ms->b |= VIA1B_vADBInt;
> +        adb_autopoll_unblock(adb_bus);
> +
> +        trace_via1_adb_send("IDLE", data,
> +                            (ms->b & VIA1B_vADBInt) ? "+" : "-");
> +
>           return;
>       }
>   
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
diff mbox series

Patch

diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c
index 208216aed3..398e8d1967 100644
--- a/hw/misc/mac_via.c
+++ b/hw/misc/mac_via.c
@@ -702,6 +702,12 @@  static void adb_via_send(MOS6522Q800VIA1State *v1s, int state, uint8_t data)
         break;
 
     case ADB_STATE_IDLE:
+        ms->b |= VIA1B_vADBInt;
+        adb_autopoll_unblock(adb_bus);
+
+        trace_via1_adb_send("IDLE", data,
+                            (ms->b & VIA1B_vADBInt) ? "+" : "-");
+
         return;
     }