Since lower ROM doesn't have a header, does anyone know a way to identify the installed firmware (464 spanish, 664 , 6128 danish, etc) ?
The only way I can think for now is to have a table with all checksums, but it's a quite big task.
You have some text in Low Rom. You can also check what codes are assigned to the keys. Qwery Azerty.
Check address and value first difference from compare with english version
464 #66E
"64K Microcomputer (d1)" DK e.t.c.
664 #66F
"64K Microcomputer (v2)" EN
6128 #689
"128K Microcomputer (d3)" DK
"128K Microcomputer (s3)" SP
"128K Microcomputer (f3)" FR
"128K Microcomputer (v3)" EN
Quote from: McArti0 on 17:27, 09 May 24464 #66E
"64K Microcomputer (d1)" DK e.t.c.
664 #66F
"64K Microcomputer (v2)" EN
6128 #689
"128K Microcomputer (d3)" DK
"128K Microcomputer (s3)" SP
"128K Microcomputer (f3)" FR
"128K Microcomputer (v3)" EN
yeah, that's a good plan. Thanks for the suggestion
The game Jungle Jane (1985) used this snippet of code to identify the firmware version :
jungle jane © bug-byte (1985) (cpc-power.com) (https://www.cpc-power.com/index.php?page=detail&onglet=dumps&num=1225)
Comments are in french, but you can translate in spanish from CPC-power website I guess.
CD 00 B9 ... CALL &B900 .... (sélectionner la ROM supérieur)
3A 02 C0 ... LD A,(&C002) .. A = l'octet en &C002 (CPC 464 = 0 ; CPC 664 = 1 ; CPC 6128 = 2 ; CPC 6128+ = 4)
F5 ......... PUSH AF ....... Sauver les registres A et F
CD 03 B9 ... CALL &B903 .... Coupe la ROM supérieure pour resélectionner la RAM
F1 ......... POP AF ........ Restaurer les registres A et F
32 00 02 ... LD (&0200),A .. Ecrire en &0200 la valeur du registre A
C9 ......... RET
https://www.cpcwiki.eu/forum/programming/how-know-the-keyboard-layout-(cpctelera)/msg147702/#msg147702
Quote from: abalore on 16:05, 09 May 24Since lower ROM doesn't have a header, does anyone know a way to identify the installed firmware (464 spanish, 664 , 6128 danish, etc) ?
The code below is how I do it using a firmware CALL (KL PROBE ROM). It reads the first few bytes of one of the upper ROMs (in this case, BASIC) and returns the version number in H. The code copies it into the A register so that values can be compared.
ld c,0 ;C = ROM number to select
call &b915 ;Get the class and version number of the ROM
ld a,h ;A = version number (0 = CPC464, 1 = CPC664,
;2 = CPC6128, 4 = Plus)