CPUID.CAS

A CPUID cassette image was uploaded to the 'Tandy Color Computer (CoCo)' group on Facebook by Matteo Trevisan on 2017/07/31:
https://www.facebook.com/groups/2359462640/permalink/10155535779897641/

The CPUID code consists of a BASIC wrapper written by Stephen J. Woolham that pokes object code into RAM $D00, executes it, and uses the result to output a CPUID byte to location 157 in RAM.

HOW IT WORKS

The actual identification method is to setup the B accumulator with a known value $FF, then execute a 6309-only CLRD opcode.

The CLRD will clear the B accumulator if run on a true 6309.

If CLRD is run on a 6809, the 6809 does not recognize the opcode and treats it as a 1-byte NOP.

Next, a test is done to see if the zero flag is set.

If the CLRD executed, then B accumulator = 0 and Z flag = 1 (TRUE): Branch to the code that sets the output value in RAM location $9D to indicate a 6309.

Otherwise, set the output value in RAM location $9D to indicate a 6809.

Save out the result and exit.

BASIC WRAPPER

10 '6309/6809 CPUID PROGRAM
20 'FOR THE COCO/COCOIII
30 'AND DRAGON 32/64
40 'BY STEPHEN J WOOLHAM
50 '
60 START=&HD00
70 FOR I=START TO START+15:READ A$:POKE I,VAL("&H"+A$):C=C+PEEK(I):NEXT:IF C <> 1363 THEN PRINT"ERROR IN DATALINE":END
80 EXEC START
90 IF PEEK(157)=3 THEN CPU$="6309"ELSE IF PEEK(157)=9 THEN CPU$="6809"
100 PRINT"A "+CPU$+" CPU IS PRESENT...":END
110 DATA C6,FF,10,4F,5D,27,04,86,9,20,2,86,3,97,9D,39

OBJECT CODE DISASSEMBLY

0D00: C6 FF          LDB   #$FF
0D02: 10 4F          CLRD
0D04: 5D             TSTB
0D05: 27 04          BEQ   $0D0B
0D07: 86 09          LDA   #$09
0D09: 20 02          BRA   $0D0D
0D0B: 86 03          LDA   #$03
0D0D: 97 9D          STA   $9D
0D0F: 39             RTS

NOTE

The 6309 Book by Chris Burke, section 4.2 in the second edition, includes a different identification method using the COMplement instruction.

RTS

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies