Vielen Dank für die nützlichen Infos.
Danke für den Tip über den Akku eine Speicherzelle zu decrementieren.
Ich habe mein Beispiel in verschiedenen Online Assembler(in ermangelung eines passenden Windows Z80 ASM) websites eingegeben und keine hat es fehlerfrei assembliert.
Meine alten DOS Z80 Assembler habe ich verloren da mein alter 1995 Laptop das zeitliche inzwischen gesegnet hat (Dalls Uhrbatterie im Eimer)
BIOS kommt nicht klar weil ich die Festplattenparameter (heads,cylinder,bla bla) inzwischen vergessen habe und damals zu dumm war
das auf die Platte zu schreiben (analog meine ich)
also ich habe jetzt meinen code entsprechend modifiziert, per Hand assembliert und denke das er nicht richtig funktioniert.
Mein Ziel ist es den Code in ein Arcade Spiel am Mame hinein zu integrieren.
Warum das ganze:
Ich portiere ein Arcade Spiel auf eine andere Spielplatine des gleichen Herstellers.
Der Spielcode braucht IRQ0 (RST 38) und IRQ10 (RST 10) um die Spielfiguren zu animieren und musik zu spielen (welche auf einem 2. Z80 Läuft)
verbunden mit der ersten über ein Soundlatch (=communikationsspeicherzelle) und einen IRQ.
In meiner aktuellen Spielplatine wird aber nur RST 38 verwendet und den RST 10 nie, da die Hardware dazu fehlt.
alle 16 Vertical Blanks (RST10) führe ich einen RST 38 aus um den Rest des Spiels updaten zu lassen.
Mein Code bis dato:
1) 000a ROM init patch: Variable vorbereiten
ld a,$10 ; lade 16 in den Akku
ld (fdea),a ; und in speicher RAM ADresse fdea ablegen
jp $8004 ; Spielstart
2) alter RST 38 Vector mit JUMP patchen:
0038:c3 LO HI jp $7850 ; Freier Speicher im Spielcode am Ende Bank1
neuerIRQHandler:
f5 push af
3a ea fd ld a,($fdea)
3d dec a
32 ea fd ld ($ffea),a
28 04 jr z,istNull ; springe 4byte weiter wenn es null ist (!)
f1 pop af
c3 10 00 jp $0010 ; RST 10 ausführen
istnull:
3e 10 ld a,$10
32 ea fd ld ($fdea),a
f1 pop af
2A 80 ed ld hl,(ed80) ; anfang vom alten 0038 Handler ..... muss jetzt ausgeführt werden.
c3 3b 00 jp $003B ; zurück in die alte RST38 Routine
ergibt:
F5 3A EA FD 3D 32 EA FD 28 04 F1 C3 10 00 3E 10 32 EA FD F1 2A 80 ED C3 3B 00 00 FF 00 FF 00 FF 3E 10 32 EA FD C3 4A 00 FF 00 FF 00 FF 00 FF 00
Alles anzeigen