[Coco] Detecting CoCo 1 versus CoCo 2

Paul F fiscap0768 at gmail.com
Thu Oct 17 19:05:35 EDT 2024


You are absolutely correct Jim - Darren posted a snippet of code a few
months back on Discord (possibly Hardware-General), outlining exactly what
you stated. I'm just leaving the office now, but I'll try to dig it up when
I get home later this evening.

However, I do know that Darren's method isn't 100% accurate in detecting a
CoCo 1 as it does not work on at least one of my F-board CoCo 1 systems.
I'm not sure what your particular application/use-case might be, but if
you're looking for 100% accuracy, I don't believe you're going to get it
using current known methods.

I have a utility (CoCoID) which 'attempts' to detect the difference between
CoCo 1/2, using both Darren's method as well as CRC checks on the CB and
ECB ROM versions. It's a heuristic approach (best guess), but it's pretty
good at detecting a CoCo that is NOT a CoCo-2. That is, if it passes the
ROM checks to detect earlier/original CoCo 1 ROMs, it's pretty certain that
it is a CoCo-1 - while some people maybe upgrade their CoCo-1 to newer
ROMs, it's probably an extremely rare case for someone to downgrade their
CoCo-2 to use CoCo-1 ROMs.


On Thu, Oct 17, 2024 at 5:26 PM RETRO Innovations via Coco <
coco at maltedmedia.com> wrote:

> On 10/17/2024 2:23 PM, Sean Conner via Coco wrote:
> > It was thus said that the Great Juan Castro via Coco once stated:
> >>>  From Darren Atkison:
> >>> The audio MUX on the CoCo 1 is bi-directional, but the integrated
> >>> DAC/MUX on the CoCo 2 is uni-directional. There is a test you can do
> >>> where you toggle the single-bit sound output and check to see if the
> >>> cassette input level changes to match. If it does change then it's a
> >>> CoCo 1.
> >> Oh man, if anybody here has that code I'd like to see it.
> >    If I understand the explanation right, then something like:
> >
> >       lda     $FF22
> >       ora     #2
> >       sta     $FF22           ; enable single bit output
> >       lda     $FF20
> >       bita    #1              ; check cassette data input
> >       beq     coco2           ; if not 1, then CoCo2
> >
> > would work.  In BASIC, this would be:
> >
> >       10 A = PEEK&HFF22
> >       20 A = A OR 2
> >       30 POKE&HFF22,A
> >       40 A = PEEK&HFF20
> >       50 A = A AND 1
> >       60 IF A == 0 THEN PRINT "COCO2"
> >
> >    -spc
> >
> >
> Don't you need to set the DDR and the port and make sure the state is
> different from the current cassette in state?
>
> JIm
>
>
>
> --
> RETRO Innovations, Contemporary Gear for Classic Systems
> www.go4retro.com
> store.go4retro.com
>
>
> --
> Coco mailing list
> Coco at maltedmedia.com
> https://pairlist5.pair.net/mailman/listinfo/coco
>


More information about the Coco mailing list