Re: Playing samples on both new and old SIDs

From: Nicolas Welte (
Date: 2000-07-27 18:52:14

On Thu, 27 Jul 2000, [ISO-8859-1] Marko Mäkelä wrote:

> On Thu, 27 Jul 2000, Nicolas Welte wrote:
> > First, you can detect a 128 by it's additional hardware and therefore can
> > sort out the 8502.
> The simplest thing to do is to check whether the data direction register
> at location 0 remembers the value you write to bit 6.  The 6510/8500 has a
> 6-bit I/O port, while the 8502 has 7 bits (and the 7th bit is connected to
> the CAPS LOCK a.k.a. ASCII/DIN a.k.a. ASC/CC key).

This is what I also remembered, but I think recently I tested this and I
think I was able to write values to bits 6 and 7 of the DDR in the C64 (no
idea if it was a 6510 or 8500) and when they were set to output, I could
also write values to the data register and I could read back all of them.
But what was strange, when I switched those bits back to input, the data
register would still give back the values I wrote into it. But when the
port was set to input, the data register wouldn't accept new values. I'm
not very sure about this, but I think the extra bits are in the chip, just
not bonded out. But I have no idea why the data register behaves so
strangely. Maybe a missing pullup resistor and the HMOS chip remembering
the last state for several seconds. Wouldn't be the first time.

My opinion is that using the CPU port register is not a very reliable
method to determine the machine type. Presence of the VDC is more
reliable, but needs some setup to store some key values in its registers
or even its memory. I've seen example code of someone who just tested the
presence of $d700, but that doesn't work of course. The C64 has the SID
mirror registers there and they do read back the written value for some
time. Normally that should be a write only register, but the written value
still is present for some time on the SIDs internal data lines as it


This message was sent through the cbm-hackers mailing list.
To unsubscribe: echo unsubscribe | mail

Archive generated by hypermail 2.1.1.