|
@@ -114,6 +114,9 @@
|
|
|
#define VIA1A_CPUID1 0x04 /* CPU id bit 0 on RBV, others */
|
|
|
#define VIA1A_CPUID2 0x10 /* CPU id bit 0 on RBV, others */
|
|
|
#define VIA1A_CPUID3 0x40 /* CPU id bit 0 on RBV, others */
|
|
|
+#define VIA1A_CPUID_MASK (VIA1A_CPUID0 | VIA1A_CPUID1 | \
|
|
|
+ VIA1A_CPUID2 | VIA1A_CPUID3)
|
|
|
+#define VIA1A_CPUID_Q800 (VIA1A_CPUID0 | VIA1A_CPUID2)
|
|
|
|
|
|
/*
|
|
|
* Info on VIA1B is from Macintosh Family Hardware & MkLinux.
|
|
@@ -872,9 +875,18 @@ static uint64_t mos6522_q800_via1_read(void *opaque, hwaddr addr, unsigned size)
|
|
|
{
|
|
|
MOS6522Q800VIA1State *s = MOS6522_Q800_VIA1(opaque);
|
|
|
MOS6522State *ms = MOS6522(s);
|
|
|
+ uint64_t ret;
|
|
|
|
|
|
addr = (addr >> 9) & 0xf;
|
|
|
- return mos6522_read(ms, addr, size);
|
|
|
+ ret = mos6522_read(ms, addr, size);
|
|
|
+ switch (addr) {
|
|
|
+ case VIA_REG_A:
|
|
|
+ case VIA_REG_ANH:
|
|
|
+ /* Quadra 800 Id */
|
|
|
+ ret = (ret & ~VIA1A_CPUID_MASK) | VIA1A_CPUID_Q800;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static void mos6522_q800_via1_write(void *opaque, hwaddr addr, uint64_t val,
|