Autore Topic: Kernal Detect  (Letto 4858 volte)

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Kernal Detect
« il: 27 Aprile 2007, 22:43:58 »
 Il thread Modifica C64 e una vecchia discussione Versione Commodore 64, metodo per verificarla mi hanno invogliato a cercare maggiori info per fare un programma/funzione per determinare quale modello, revisione e modifica del Kernal abbiamo montato. Stavo facendo gia' il programmino quando semplicemente googlando per cercare Kernal ROMs che gia' non avessi, mi sono imbattuto in un codice in ungherese, che ho adattato alle mie esigenze, ampliando il numero di ROMs identificate; Gia' che c'ero ne ho fatto anche una versione in CRT per poter provare anche se funzionava il detect del C64GS, che accetta appunto solo cartucce. Il tutto e' stato testato solo in CCS e VICE, ma mi aspetto che funzioni regolarmente anche sui C64 veri.
Codice: [Seleziona]
;---------------------------------------
;C=64 KERNAL ROM Detector
;---------------------------------------
;based on http://c64.rulez.org/hardware/
;    hardwaredetection/romdetect/kernal/
;    kernaldetect.txt
;---------------------------------------
;enhanced by iAN CooG/HF
;---------------------------------------
Vunknown  = 0
Vc4064ty  = 1
Vr1       = 2
Vr2eng    = 3
Vr2sve    = 4
Vr3eng    = 5
Vr3sve    = 6
Vsx64eng  = 7
Vsx64sve  = 8
Vgs       = 9
Vc65_90   = 10
Vc65_91   = 11
Vcock     = 12
Vprolog   = 13
Vttran    = 14
Vtproc    = 15
Vtdrive   = 16
Vddos     = 17
Vdmag     = 18
Vjiffy    = 19
Vexos     = 20
Vbeast    = 21
Vde64erv  = 22
Vsdos     = 23
Vsdos40t  = 24
Vmicro    = 25
Vhbasic   = 26;add:iAN
Vdigi     = 27;add:iAN
Vdelta    = 28;add:iAN
Varmag    = 29;add:iAN, cockroach mod
Vsdosp    = 30;add:iAN, speeddos plus
Vpiffy    = 31;add:iAN, jiffydos mod
Vtaxs     = 32;add:iAN
;---------------------------------------
        * = $0801
        word eop
        word 7102
        byte $9e,"2061",0
eop     word 0
;---------------------------------------
        jsr identify
       ;return:
       ;X=0 unknown,
       ;X>0 ROM type
        lda strtablelow,x
        ldy strtable_hi,x
        jmp $ab1e
;---------------------------------------
identify
        ldx #Vunknown
        lda $ff80
       ;cmp #$00
        beq r2typ
t1      cmp #$03
        beq r3typ
t2      cmp #$04
        bne t3
        jmp c65typ
t3      cmp #$43
        bne t4
        jmp sx64r
t4      cmp #$53
        bne t5c
        jmp sdostyp
t5c     cmp #$c3
        beq cockarmag
        cmp #$64
        bne t6
        ldx #Vc4064ty
t6      cmp #$aa
        bne t744
        ldx #Vr1
t744    cmp #$44
        bne t7
        ldx #Vdigi
t7      rts
;---------------------------------------
cockarmag
        lda $f20d
        cmp #$3a
        bne cr1
        ldx #Vcock
cr1     cmp #$e7
        bne cr2
        ldx #Varmag
cr2     rts
;---------------------------------------
r2typ
        lda $fa26
        cmp #$65
        beq r2
        cmp #$18
        bne t8
        ldx #Vprolog
t8      cmp #$97
        bne t9
        ldx #Vttran
t9      cmp #$fa
        bne t10tx
        ldx #Vtproc
t10tx   cmp #$8d
        bne t10
        ldx #Vtaxs
t10     cmp #$c4
        bne t11
        ldx #Vhbasic
t11     rts
;---------------------------------------
r2      lda $ebf0
        cmp #$ba
        bne t12
        ldx #Vr2eng
t12     cmp #$dd
        bne t13
        ldx #Vr2sve
t13     rts
;---------------------------------------
r3typ   lda $fc00
        cmp #$01
        beq r3
t14     cmp #$20
        beq exbea
        cmp #$a3
        beq jifpif
t15     cmp #$43
        bne t16
        ldx #Vgs
t16     cmp #$91
        bne t17
        ldx #Vtdrive
t17     cmp #$a2
        bne t19
        ldx #Vddos
t19     cmp #$dd
        bne t20d
        ldx #Vdmag
t20d    cmp #$f8
        bne t20
        ldx #Vdelta
t20     rts
;---------------------------------------
jifpif
        lda $e4ee
        cmp #$44
        bne j2
        ldx #Vjiffy
j2      cmp #$52
        bne j3
        ldx #Vpiffy
j3      rts
;---------------------------------------
r3      lda $ebf0
        cmp #$ba
        bne t21
        ldx #Vr3eng
t21     cmp #$dd
        bne t22
        ldx #Vr3sve
t22     rts
;---------------------------------------
exbea   lda $e000
        cmp #$85
        bne t23
        ldx #Vexos
t23     cmp #$2c
        bne t24
        ldx #Vbeast
t24     rts
;---------------------------------------
c65typ  lda $f888
        cmp #$30
        bne t25
        ldx #Vc65_90
t25     cmp #$31
        bne t26
        ldx #Vc65_91
t26     rts
;---------------------------------------
sx64r   lda $fa26
        cmp #$65
        beq sx64typ
t27     cmp #$a0
        bne t28
        ldx #Vde64erv
t28     rts
;---------------------------------------
sx64typ lda $ebf0
        cmp #$ba
        bne t29
        ldx #Vsx64eng
t29     cmp #$dd
        bne t30
        ldx #Vsx64sve
t30     rts
;---------------------------------------
sdostyp lda $e479
        cmp #$20
        bne t31p
        ldx #Vsdos
t31p    cmp #$2a
        bne t31
        ldx #Vsdosp
t31     cmp #$43
        bne t32
        ldx #Vsdos40t
t32     cmp #$4b
        bne t33
        ldx #Vmicro
t33     rts
;---------------------------------------
_unknown   text "unknown"             ,0
_c4064ty   text "4064/educator"       ,0
_r1        text "c64 rev1"            ,0
_r2eng     text "c64 rev2"            ,0
_r2sve     text "c64 rev2 sweden"     ,0
_r3eng     text "c64 rev3"            ,0
_r3sve     text "c64 rev3 sweden"     ,0
_sx64eng   text "sx64"                ,0
_sx64sve   text "sx64 sweden"         ,0
_gs        text "c64 games system"    ,0
_c65_90    text "c65 1990"            ,0
_c65_91    text "c65 1991"            ,0
_cock      text "cockroach"           ,0
_prolog    text "prologic dos"        ,0
_ttran     text "turbo trans"         ,0
_tproc     text "turbo process"       ,0
_taxs      text "turbo access"        ,0
_tdrive    text "turbo drive"         ,0
_ddos      text "dolphindos 2"        ,0
_dmag      text "dolphinmager"        ,0
_jiffy     text "jiffydos 6.01"       ,0
_piffy     text "piffydos"            ,0
_exos      text "exos v3"             ,0
_beast     text "beast system"        ,0
_de64erv   text "64'er v3"            ,0
_sdos      text "speeddos"            ,0
_sdosp     text "speeddos plus"       ,0
_sdos40t   text "speeddos 40tracks"   ,0
_micro     text "microtronic prof.dos",0
_hbasic    text "dos-hypra-cent"      ,0
_digi      text "digidos"             ,0
_delta     text "delta electronics"   ,0
_armag     text "armageddon"          ,0

;---------------------------------------
strtablelow
           byte <_unknown
           byte <_c4064ty
           byte <_r1
           byte <_r2eng
           byte <_r2sve
           byte <_r3eng
           byte <_r3sve
           byte <_sx64eng
           byte <_sx64sve
           byte <_gs
           byte <_c65_90
           byte <_c65_91
           byte <_cock
           byte <_prolog
           byte <_ttran
           byte <_tproc
           byte <_tdrive
           byte <_ddos
           byte <_dmag
           byte <_jiffy
           byte <_exos
           byte <_beast
           byte <_de64erv
           byte <_sdos
           byte <_sdos40t
           byte <_micro
           byte <_hbasic
           byte <_digi
           byte <_delta
           byte <_armag
           byte <_sdosp
           byte <_piffy
           byte <_taxs

strtable_hi
           byte >_unknown
           byte >_c4064ty
           byte >_r1
           byte >_r2eng
           byte >_r2sve
           byte >_r3eng
           byte >_r3sve
           byte >_sx64eng
           byte >_sx64sve
           byte >_gs
           byte >_c65_90
           byte >_c65_91
           byte >_cock
           byte >_prolog
           byte >_ttran
           byte >_tproc
           byte >_tdrive
           byte >_ddos
           byte >_dmag
           byte >_jiffy
           byte >_exos
           byte >_beast
           byte >_de64erv
           byte >_sdos
           byte >_sdos40t
           byte >_micro
           byte >_hbasic
           byte >_digi
           byte >_delta
           byte >_armag
           byte >_sdosp
           byte >_piffy
           byte >_taxs
;---------------------------------------
;eof

Sorgenti, prg e crt li hosto sul mio sito
http://iancoog.altervista.org/hid/kernaldetect.rar
 
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Cbm

  • Utente
  • **
  • Post: 423
  • Gioco Preferito: Wonderboy
Kernal Detect
« Risposta #1 il: 27 Aprile 2007, 23:53:49 »
 Molto interessante ed utile.

Ho appena provato la cartuccia con il ccs normale (rilevazione: kernal r2) e modificato con il tuo kernal autoavviante (kernal r3)
C= - Dal 1985! Lunga vita e prosperità.

albman

  • Utente
  • **
  • Post: 125
  • Gioco Preferito: Wonder Boy / Bubble Bobble
Kernal Detect
« Risposta #2 il: 28 Aprile 2007, 12:07:23 »
 grazie iAN, tool molto utile... provato con biscottone e c64c, entrambi rev3

non sono documentato sui kernal, è normale che queste due macchine montino la stessa rev?
"If you want to become the old figure, use the power of your friendship, and fight me"

eregil

  • Administrator
  • Utente
  • *****
  • Post: 714
  • Gioco Preferito: Impossible Mission
Kernal Detect
« Risposta #3 il: 28 Aprile 2007, 13:53:21 »
 Sì, è normale: la revision 1 si trova solo sui primissimi esemplari americani, la revision 2 si trova su C64 prodotti nel 1982 o al massimo 1983. La revision 3 si trova sulla stragrande maggioranza dei C64, non solo "nuovi" ma anche biscottoni.
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Kernal Detect
« Risposta #4 il: 28 Aprile 2007, 21:18:26 »
 Dovendo aggiungere una nuova revisione del DolphinDos mi sono accorto che mantenere 2 copie dello stesso programma diventava impraticabile, e ho modularizzato il tutto. Con una sola define ora si puo' generare la versione prg standalone e la versione da convertire in CRT.
Riprendete il rar se interessati, e ovviamente se trovate kernals non identificati fatemelo sapere ;)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Kernal Detect
« Risposta #5 il: 28 Aprile 2007, 23:52:23 »
 Nuovo aggiornamento, ora i kernals riconosciuti sono 40.
Se qualcuno ha Hyprados e Fastdos faccia un fischio.
Intanto posto tutti i miei KERNALS, c'e' anche il rom.cfg per CCS.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Kernal Detect
« Risposta #6 il: 01 Maggio 2007, 14:05:21 »
 *Bump*
Aggiornati i files col 41esimo Kernal, SpecialROM di Thomas Tempelmann, e il 42esimo, TurbotapeROM/Onslaught.
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Kernal Detect
« Risposta #7 il: 10 Agosto 2007, 15:22:03 »
 Altro aggiornamento.
Aggiunti
- Commodore MAX
- Commodore 64 Japan
- C64DTV Kernals (varianti di TLR e Peiselulli's, provati con vicedtv)
- Prism Software Custom-M5

Altro Kernal che mi mancherebbe e' "Magnum Load" di cui ho scoperto l'esistenza proprio ieri su Lemon64, ma il possessore si rifiuta di dumparlo e condividerlo (complimenti davvero, se fossero tutti come lui a quest'ora non ci sarebbe nulla di emulabile)
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Kernal Detect
« Risposta #8 il: 11 Agosto 2007, 20:09:03 »
 Ho trovato un altro pacco di kernals, alcuni hack dei vari speeddos, altri mai visti prima. Ho dovuto rimaneggiare un bel po' per distinguerli.

- completamente rivisto il riconoscimento degli Speeddos e cloni
  per poterli distinguere meglio.
- cambiata descrizione "prism custom-m5" in "prism m5 inspector"
- cambiata descrizione "armageddon" in "speeddos system/arm"
- cambiata descrizione "speeddos 40tracks" in "speeddos 40trks/v1.1"

- 2 differenti id bytes per la rom Cockroach, il resto della rom e' identica
- C64 rev3 + 2mhz patch
- C64 rev3 + 3mhz patch
- C64 rev3 + 4mhz patch
- 64'er v1
- 64 turbodisk
- Ewing Dos v3
- Hyperdos
- Speeddos expert
- Speeddos plus+
- Speeddos maba
- Speeddos 85'er
- Flash crack rom (hack dello Speeddos 85'er ma non funzionante negli emu)

Tutti i files sono aggiornati.
Programma, CRT e sorgente

Versione a linea di comando win32+sorgente C

Tutti i miei Kernals
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -