Man möchte ja manchmal ein Programm bauen, was erkennt, ob man einen 464, einen 664 oder einen 6128 verwendet.
Nun müsste man noch wissen, wie man auf die Schnelle zwischen den 3 Modellen unterscheiden kann.
Zwischen 2 ist ja noch relativ einfach, in dem man die Firmware-Version liest.
Diese ist allerdings zwischen dem 664 und dem 6128 identisch...
Um nun aber doch erkennen zu können, welcher der 3 CPCs man hat, kann man folgendes BASIC Programm ausprobieren:
10 MODE 1
20 a=PEEK(&BD3D)
30 IF a=&EF THEN PRINT"You are using a CPC 464":END
40 a=PEEK(&BD5E)
50 IF a=&EF THEN PRINT"You are using a CPC 664":END
60 PRINT "You are using a CPC 6128 (or a fake CPC)"
oder so
20 file$="wm3-"
30 wert=PEEK(&BB4F)
40 IF wert=&78 THEN file$=file$+"464.bin":cpc$=" Schneider CPC 464"
50 IF wert=&70 THEN file$=file$+"664.bin":cpc$=" Schneider CPC 664"
60 IF wert=&74 THEN file$=file$+"6128.bin":cpc$=" Schneider CPC 6128"
70 print cpc$
oder so
;; JavaCPC disassembled binary
;; disassembled from #A6C5 to #A6FA
;; Mon Oct 21 20:58:56 CEST 2024
KL_PROBE_ROM equ &B915
org &8000
LD C,&FF
CALL KL_PROBE_ROM
ld a,h
cp 2
jr z,cpc_6128
cp 1
jr z,cpc_664
cp 0
jr z,cpc_464
ret
cpc_6128 ;do 6128 relevant patches
ld a,&38
call &bb5a
ret
cpc_664 ;do 664 relevant patches
ld a,&36
call &bb5a
ret
cpc_464 ;do 464 relevant patches
ld a,&34
call &bb5a
ret
Was ihr alle gemeinsam habt: Ihr prüft welches ROM vorhanden ist.
Aber welcher CPC es ist, das ist eine andere Sache. Oft nutzen ja Leute die CPC6128 ROMs am CPC464. Die Hardware bleibt aber ein CPC464 (der z.B. keine RAM Konfiguration kann wie der CPC6128).
Quote from: TFM on 22. October 2024, 00:18:04Was ihr alle gemeinsam habt: Ihr prüft welches ROM vorhanden ist.
Aber welcher CPC es ist, das ist eine andere Sache. Oft nutzen ja Leute die CPC6128 ROMs am CPC464. Die Hardware bleibt aber ein CPC464 (der z.B. keine RAM Konfiguration kann wie der CPC6128).
Die RAM Konfiguration ist ja auch eine ROM-Sache.
Wenn man an einem 464 die 6128 ROMs verwendet und 128k drin hat, sollte das auch gehen.
Quote from: Devilmarkus on 22. October 2024, 10:46:02Quote from: TFM on 22. October 2024, 00:18:04Was ihr alle gemeinsam habt: Ihr prüft welches ROM vorhanden ist.
Aber welcher CPC es ist, das ist eine andere Sache. Oft nutzen ja Leute die CPC6128 ROMs am CPC464. Die Hardware bleibt aber ein CPC464 (der z.B. keine RAM Konfiguration kann wie der CPC6128).
Die RAM Konfiguration ist ja auch eine ROM-Sache.
Wenn man an einem 464 die 6128 ROMs verwendet und 128k drin hat, sollte das auch gehen.
Leider nicht, wenn man beim CPC6128 die RAM-Konfiguration &C3 wählt, dann wird das Bildschirm-RAM von &C000 auf &4000 verlegt. Beim CPC464 ist das nicht so, also können ROMs nicht direkt aufs V-RAM zugreifen. Leider, deshalb gibt's z.B. den Schmier vom Mauspfeil unter FutureOS.
Die ROMs auszutauschen hat damit nichts zu tun. RAM und ROM werden unabhängig verwaltet. :)
ich glaub ihr schiesst wieder über das ziehl hinaus, es ging um eine simple abfrage was für ein cpc vorhaden ist, da gehe ich mal von orig, nicht modded nicht erweiter mit blabla aus.
Quote from: BadCPC on 23. October 2024, 12:04:02ich glaub ihr schiesst wieder über das ziehl hinaus, es ging um eine simple abfrage was für ein cpc vorhaden ist, da gehe ich mal von orig, nicht modded nicht erweiter mit blabla aus.
CPC ohne Erweiterungen?!? :gruebel:
mein 6128 hat nur eine rombox +gotec bzw 3 1/2 720k LW
Quote from: BadCPC on 23. October 2024, 15:08:59mein 6128 hat nur eine rombox +gotec bzw 3 1/2 720k LW
Und schwupps könnte er schon ein anderes ROM haben, z.B. das vom CPC464 um z.B. Kaiser spielen zu können. ;) :)
Ansonsten: Solide Grundausstattung! :smiley027:
kann ich auch so.. ätsch, habe ja meine 6128 version . . . baue aber grad an der 464/664/6128 version mit autodetect. . .
Also die Frage ob welchen CPC man so vor sich hat ist für die allermeisten Fälle sicher einfach die Frage welches ROM man hat, bzw. wie man das ansprechen muß.
Mit absoluter Ausnahme der Speicherverwaltung im 6128 sind ansonsten ja alle drei Hardwaremäßig genau gleich. Da macht eher die Frage welcher CRTC ist verbaut sinn - denn das ist wirklich ein Unterschied für bestimmte Programmiertricks.
Da hier allerdings eine BASIC Version geschrieben wurde kann man davon ausgehen, daß auch das keine Rolle spielt. BASIC ist halt viel zu langsam um sinnvoll irgendwelche CRTC Tricks (Rasters etc) zu bauen.
Also geht es wohl wie immer bei BASIC um patchen von bestimmten Vectoren, die halt bei den verschiedenen Modellen an verschiedenen Addressen liegen.
In sofern reicht also die ROM erkennung dafür komplett aus.