Ich bastel noch immer an meinem Disassembler und nutze zur Überprüfung den OnlineDisassembler https://onlinedisassembler.com/odaweb/
Zum testen habe ich das Spiel Uridium.rom hochgeladen und bekomme das als Textfile zurück:
.data:0000c000 01 00 00 ld bc,0x0000
.data:0000c003 01 0c c0 ld bc,0xc00c
.data:0000c006 c3 1b c0 jp 0xc01b
.data:0000c009 c3 1c c0 jp 0xc01c
.data:0000c00c 55 ld d,l
.data:0000c00d 72 ld (hl),d
.data:0000c00e 69 ld l,c
.data:0000c00f 64 ld h,h
.data:0000c010 69 ld l,c
.data:0000c011 75 ld (hl),l
.data:0000c012 ed 55 defb 0xed, 0x55
.data:0000c014 52 ld d,d
.data:0000c015 49 ld c,c
.data:0000c016 44 ld b,h
.data:0000c017 49 ld c,c
.data:0000c018 55 ld d,l
.data:0000c019 cd 00 c9 call 0xc900
.data:0000c01c 21 2a c0 ld hl,0xc02a
.data:0000c01f 11 98 67 ld de,0x6798
.data:0000c022 01 58 3e ld bc,0x3e58
.data:0000c025 ed b0 ldir
.data:0000c027 c3 10 a5 jp 0xa510
.data:0000c02a f8 ret m
.data:0000c02b 67 ld h,a
.data:0000c02c 00 nop
.data:0000c02d 00 nop
.data:0000c02e 00 nop
Ich hätte vermutet das ein Programm oder Spiel welches als ROM vorliegt immer am Anfang seine Startaddresse hat.
Mir scheint aber, das dies in meinem Beipspiel keinen Sinn ergibt.
Wie ist also die Einsprungadresse bei einem ROM und wie kann man die herausfinden?
Der Aufbau eines ROMs wird im Schneider CPC Systembuch gut erklärt: https://k1.spdns.de/Vintage/Schneider%20CPC/Das%20Schneider%20CPC%20Systembuch/z91.htm#C
An &C000 steht der ROM-Typ,
&C001 bis &C003 die Versionsnummer,
&C004 und &C005 zeigen auf die RSX-Tabelle (deren erster Eintrag der ROM-Name ist),
&C006 den JP in die Init-Routine,
ab &C009 die JPs für den jeweiligen RSX-Befehl.
Grüßle,
Mr. AMS
Danke.
Das muss heute irgendwie an der Wärme liegen das ich das nicht selbst gefunden hatte.
Es ist nicht immer bei allen ROMs gleich, mit ROManager oder ähnlicher Software kann man im spezifischen ROM nachsehen. Ansonsten hat der Mr. AMS das super erklärt! :smiley027:
Ich hatte mich vom Betriebssystem ROM (Kernel) in die Irre führen lassen.
Mit z.B. dem X-MEM kann man auch das untere ROM austauschen. Beim Einschalten bzw. Reset springt die Z80 direkt an die Adresse 0. Also wenn man den CPC übernehmen will, dann kann man ab hier Code schreiben, allerdings muss dann die Hardware selbst initialisiert werden, z.B. der CRTC.
Software die so etwas macht ist z.B. das Multiface II (auf Knopfdruck) und die Autostart-FutureOS-Cartridges für den Plus (bzw. das FutureOS lower ROM).
Für Spiele kann so etwas ein cooler Effekt sein :-)