|
Post by mirkosoft on Nov 6, 2014 19:23:04 GMT
Hi!
I wrote all routines to identify Commodore computers by CPU, only 264 series is impossible to detect if it's 7501 or 8501... I wrote also Z80 check to avoid conflict with SCPU and if then mark it as inactive.
This my Q is more harder: Everybody knows that DCR and D are different in many ways - in case of built-in 1571 it's not only DOS, it's also in MB. D has extra MB for 1571 and DCR has 1571's MB integrated into main.
So, to Q:
Is possible to detect 1571's MOS6510 CPU in DCR to mark it as internal? Really it's hard possible to check CPU, but even check that's internal on DCR's MB... To be even hard: Is possible to detect CPU of 1571 in D as internal?
Really I mean not, but more brains give objective thing, not subjective...
Miro
|
|
|
Post by hydrophilic on Nov 8, 2014 9:50:43 GMT
I *think* the C128-D has almost true 1571 built into case, but 128 DCR has stripped-down (cost-reduced) version. I only own flat C128 so I can not be sure... But if my thought is correct, then you could test the CIA of the built-in disk drive... As I understand, real 1571 and disk drive C128D have a true CIA (6526) which has TOD registers... but in the DCR there is only a cost-reduced 'fake' CIA which lacks TOD (and maybe other features). Sorry I don't know where I read this, so I don't know the chip-number of the 'fake' CIA... maybe 8526? I would try that... if I had C128D and DCR to do experiments!
|
|
wegi
KIM-1 User
Posts: 35
|
Post by wegi on Sept 14, 2017 18:04:32 GMT
Trully C128D is a 2 apart units embedded in one case (C128 and 1571) so you can't recognize connected external 1571 to c128D also. You could be try compare kernal ROM and DOS ROM for guessing. I never had any C128.
|
|
|
Post by mirkosoft on Sept 14, 2017 22:23:04 GMT
Yes, D is impossible... I got one and it has separate boards.
DCR - own one - has in one mainboard computer and 1571CR - I can recognize it while is DOS not replaced - there's CBM DOS 3.1 - this has no other Commodore disk drive. But when is DOS replaced e.g. by JiffyDOS? What then?
Miro
|
|
wegi
KIM-1 User
Posts: 35
|
Post by wegi on Sept 14, 2017 23:44:18 GMT
JD is dedicated to drive type. You can recognize JD version. Also you could check 1570/71 between 1541/1541 II - $1801 ora #$20 switching 2MHZ on. For example:
Drive code:
*=$0300
sei
ldx #$00 ldy #$10 dex bne *-1 dey bne *-4 ;delay for commodore wait
lda $1801 pha ora #$20 sta $1801 ;switch 2MHZ ON (if present)
lda $1c00 ora #$08 sta $1c00 ; set led ON
lda $1800 eor #$02 sta $1800 ; change serial line (blink line)
jsr delay_1_sec ;here you do delay 1 sec for 1MHZ - if 2MHZ is present so delay will be 0.5 sec
lda $1800 eor #$02 sta $1800 ; change serial line
pla sta $1801 ;restore $1801
lda $1c00 eor #$08 sta $1c00 ;LED OFF
cli rts
C64 code...
... ... ...
jsr $ffae ; finishing memory execute $0300 (before of corse memory write above code) sei
lda $dd00 and #$03 sta $dd00 ;Lines for wait
lda $dd00 cmp $dd00 beq *-3
lda $dd00 ldx #$00 ldy #$00
check
cmp $dd00 bne check_time inx bne check iny bne check jmp wrong ;time up - error
check_time
Y value determinate 0.5 or 1 sec
... ... ...
sth like that should be work
edit
Also you can check in drive and compare $8000 - $80ff to $c000 - $c0ff (for example)
In 1541/1541 II have 16KB ROM which is mirrored from $8000 so if its this same you gotta 1541/1541 II 1570/71 have 32KB ROM from $8000 and this area are different betwen $c000
|
|