ZitatOriginal von strik
Interessant ist z.B. auch Ms Pacman, welches als Einsprungadresse und als NMI-Adresse $7502 (!) angibt! Ich bezweifle, dass das Cartridge nach $A000 geladen werden soll. Es gibt auch viele JSR in den Bereich $7xxx hinein. Andererseits gibt es die Kennung a0CBM, die dafür spricht, dass es mal im $A000 Bereich lag.OB hier jemand mal versucht hat, die Cartridge ans RAM anzupassen?
Inzwischen habe ich eine andere Vermutung. Die Cartridge könnte so gebaut sein, dass der Speicher gleich mehrfach im Adreßraum eingeblendet wird. Z.B. könnte die Cartridge ab $a000-$bfff sowie auch von $6000-$7fff eingeblendet werden. Ich habe das mal probiert, wobei ich der Vollständigkeit halber auch noch $4000-5fff und $2000-$3fff mit dem Image belegt habe.
Nun ja, "wirklich" gut ist das nicht, aber zumindest landen wir im ausführbaren Program:
** Monitor 014 025
(C:$7502) r
ADDR AC XR YR SP 00 01 NV-BDIZC LIN CYC
.;7502 41 00 ff ff 00 ff 00100111 014 025
(C:$7502) d 7502 754e
.C:7502 B4 60 LDY $60,X
.C:7504 85 1B STA $1B
.C:7506 A9 00 LDA #$00
.C:7508 85 1C STA $1C
.C:750a A9 00 LDA #$00
.C:750c 85 16 STA $16
.C:750e A9 80 LDA #$80
.C:7510 85 17 STA $17
.C:7512 06 1B ASL $1B
.C:7514 26 1C ROL $1C
.C:7516 06 1B ASL $1B
.C:7518 26 1C ROL $1C
.C:751a 06 1B ASL $1B
.C:751c 26 1C ROL $1C
.C:751e A5 16 LDA $16
.C:7520 18 CLC
.C:7521 65 1B ADC $1B
.C:7523 85 16 STA $16
.C:7525 A5 17 LDA $17
.C:7527 65 1C ADC $1C
.C:7529 85 17 STA $17
.C:752b A0 07 LDY #$07
.C:752d B1 16 LDA ($16),Y
.C:752f 91 1F STA ($1F),Y
.C:7531 88 DEY
.C:7532 10 F9 BPL $752D
.C:7534 A5 1F LDA $1F
.C:7536 18 CLC
.C:7537 69 C0 ADC #$C0
.C:7539 85 1F STA $1F
.C:753b 90 02 BCC $753F
.C:753d E6 20 INC $20
.C:753f 60 RTS
.C:7540 A9 00 LDA #$00
.C:7542 85 14 STA $14
.C:7544 8A TXA
.C:7545 18 CLC
.C:7546 69 44 ADC #$44
.C:7548 85 13 STA $13
.C:754a 90 02 BCC $754E
.C:754c E6 14 INC $14
.C:754e 60 RTS
Alles anzeigen
Ich vermute, dass hiermit verschleiert werden soll, wo der tatsächliche Programmstart ist. Hat jemand eine Idee, was die Routine genau tut? Jedenfalls schreibt sie ab $0100-$0101 zwei Werte, die offenbar als Rücksprungadresse für das RTS dienen. Bloß habe ich es in der Kürze der mir zur Verfügung stehenden Zeit nicht geschafft, hier sinnvolle Werte zu generieren.
Das wäre vielleicht was für die Assembler-Programmierer als Nuß, die es zu knacken gilt?
Gruß,
- Spiro.