Autor Thema: WinAPE: Breakpoints bei Diskettenzugriffen?  (Gelesen 125 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dettus

  • Schreibgeschützter
  • *
  • Beiträge: 13
  • Liked: 3
  • Karma: +2/-0
    • dettus.net
WinAPE: Breakpoints bei Diskettenzugriffen?
« am: 24. Oktober 2020, 10:53:34 »
Hallo.

Folgendes: Ich arbeite gerade an einem Reverse-Engineering projekt, um die alten Textadventures von Magnetic Scrolls auf moderner Hardware spielen zu koennen.
Die Homepage findet ihr hier: http://www.dettus.net/dMagnetic
Dabei benutze ich sehr viel WinAPE.

Ich bin schon in der Lage, von einem .DSK file ueber das CPM-Filesystem Dateien zu extrahieren, allerdings weiss ich noch nicht ganz genau, welche Datei genau was macht.
Ich wuerde daher gerne einen Breakpoint auf die Stellen setzen, wo eine Datei geladen wird, damit ich sehen kann was dabei genau passiert.
Und ob die hinerher irgendwie decrypted/entpackt oder aehnliches werden.

Weiss jemand, die das geht?

Thomas
Computer science is not about using a computer. It is about unleashing its power.

Offline almasys

  • CPC 664
  • ***
  • Beiträge: 143
  • Liked: 52
  • Karma: +21/-0
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #1 am: 24. Oktober 2020, 11:29:44 »
Indem Du Breakpoints an den für das Einlesen einer Datei zuständigen Vektoren setzt, als das wären

&BC77 DISC IN OPEN
&BC7A DISC IN CLOSE
&BC7D DISC IN ABANDON
&BC80 DISC IN CHAR
&BC83 DISC IN DIRECT

Dazu einfach im Debugger-Fenster mit der Maus in die Leiste links der Mnemonics klicken.

Offline dettus

  • Schreibgeschützter
  • *
  • Beiträge: 13
  • Liked: 3
  • Karma: +2/-0
    • dettus.net
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #2 am: 24. Oktober 2020, 11:34:48 »
super!
Das ist schonmal ein Schritt weiter fuer mich.
Weisst du zufaellig noch, wie ich dann an die gerade aktuellen Dateinamen komme?

Sprich: Was die ABI fuer diese System Calls ist?
Computer science is not about using a computer. It is about unleashing its power.

Offline dettus

  • Schreibgeschützter
  • *
  • Beiträge: 13
  • Liked: 3
  • Karma: +2/-0
    • dettus.net
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #3 am: 24. Oktober 2020, 11:46:03 »
http://www.cpcwiki.eu/index.php/BIOS_Function_Summary
Schon gut. Ich habs gefunden.

Leider, wenn ich auf BC77 einen Breakpoint setze, um zu gucken welche Datei er aufmacht, wird dieser nicht bei jedem Diskettenzugriff getroffen.

Gibt es auf dem CPC noch eine andere moeglichkeit, Daten von einer Diskette zu lesen?
Computer science is not about using a computer. It is about unleashing its power.

Offline almasys

  • CPC 664
  • ***
  • Beiträge: 143
  • Liked: 52
  • Karma: +21/-0
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #4 am: 24. Oktober 2020, 12:12:07 »
Eine Beschreibung der Firmware-Calls findest Du im Schneider CPC Systembuch. Dass da die Kassettenroutinen beschrieben sind ist egal, AMSDOS patcht diese und sie sind genauso zu behandeln.

An &BC77 CAS IN OPEN wird die Länge des Dateinamens in Register B, die Adresse des Strings in HL übergeben.

Anschließend kann die Datei Byte für Byte mit &BC80 CAS IN CHAR eingelesen oder am Stück mit &BC83 CAS IN DIRECT gelesen werden.

Da AMSDOS immer nur jeweils eine Datei zum Lesen und eine zum Schreiben geöffnet haben kann, gehen diese Zugriffe immer auf die zuletzt geöffnete Datei.

Selbstverständlich könnte man am Betriebssystem vorbei direkt auf die Diskette zugreifen, so bietet AMSDOS die Möglichkeit, einzelne Sektoren zu lesen.

Offline dettus

  • Schreibgeschützter
  • *
  • Beiträge: 13
  • Liked: 3
  • Karma: +2/-0
    • dettus.net
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #5 am: 24. Oktober 2020, 12:32:44 »
Zitat
Selbstverständlich könnte man am Betriebssystem vorbei direkt auf die Diskette zugreifen, so bietet AMSDOS die Möglichkeit, einzelne Sektoren zu lesen.
Ich vermute, dass genau das bei dem Spiel passiert.

Jetzt suche ich einen Weg, herauszufinden wie das geht. Und wie ich die Stelle im Code mit dem Emulator finde.

Computer science is not about using a computer. It is about unleashing its power.

Offline TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3211
  • Liked: 756
  • Karma: +39/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #6 am: 25. Oktober 2020, 18:09:47 »
Persönlich gefällt mir der WinCPC am besten zum debuggen etc. WinApe ist mMn nicht so toll. Der JavaCPC kann wohl noch mehr, aber ich muss mir das erst noch ansehen.  :)
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 24.11.2020)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 28.08.2019)

Offline dettus

  • Schreibgeschützter
  • *
  • Beiträge: 13
  • Liked: 3
  • Karma: +2/-0
    • dettus.net
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #7 am: 31. Oktober 2020, 15:16:18 »
Ich bin am Ende beim caprice gelandet. Der lies sich sogar auf meinem OpenBSD-System compilieren.
In der Datei z80.cpp  habe ich sogar eine Moeglichkeit gefunden unter bestimmten Umstaenden einen Memorydump zu triggern. Damit konnte ich nachvollziehen was sich zwischen verschiedenen Ereignissen geaendert hat.
Computer science is not about using a computer. It is about unleashing its power.

Offline TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3211
  • Liked: 756
  • Karma: +39/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: WinAPE: Breakpoints bei Diskettenzugriffen?
« Antwort #8 am: 03. November 2020, 15:24:48 »
Ja, so ein Memory Dump ist hilfreich. Hat sonnst wohl keiner.  :(
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 24.11.2020)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 28.08.2019)