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 seems. Nicolas - This message was sent through the cbm-hackers mailing list. To unsubscribe: echo unsubscribe | mail email@example.com.
Archive generated by hypermail 2.1.1.