Re: 6510 and 8500 differences

From: Richard Atkinson (
Date: 2000-07-29 01:03:32

On Thu, 27 Jul 2000, Nicolas Welte wrote:

> Is someone willing to time out the differences exactly? I'm quite sure
> that there will be no sharp values, but HMOS and NMOS chips should be
> different enough to use this as an extra method to distinguish HMOS and
> NMOS CPUs. Since it is internal to the chip, it should be much more
> reliable than the $DE00 method.

Here's a short program to do it. You can run it from BASIC and read the
results stored in result, lsb and msb. In a few minutes I will try it out
(for the first time) on a plastic C128D, then maybe a breadbox C64. The
use of bit 7 to do the testing should mean that it applies to the 8502 as

If result = $00, the port bit returned to zero, and lsb and msb contain
the number of iterations of the test loop it took. If result = $80, lsb
and msb both contain zero and the bit never returned to zero within 65536
iterations of the loop. The inner loop takes 12 cycles so the maximum time
tested is roughly 0.8 seconds.

I have rather a lot of C64s to try this on if it works... (sigh!)


Richard Atkinson
Software Engineer
Tenison Technology EDA Ltd

start	sei
	ldx #$00	zero counter LSB
	ldy #$00	zero counter MSB
	lda $00		data direction register
	pha		store old value
	ora #$80	bit 7 = output
	sta $00
	lda $01		data register
	pha		store old value
	ora #$80	bit 7 = one
	sta $01
	lda $00
	and #$7f	bit 7 = input
	sta $00
loop	lda $01
	and #$80
	beq exit	exit if bit 7 = 0
	bne loop
	bne loop
exit	sta result	$00 if bit returned to zero, $80 if not
	stx lsb
	sty msb
	pla		retrieve old data register value
	sta $01
	pla		retrieve old data direction register value
	sta $00

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

Archive generated by hypermail 2.1.1.