Hallo!
Ich bräuchte für die Erstellung einer eigenen Interruptroutine in TurboPascal3 (für einen NCR DMV), auf die der Interruptvektor Int21 temporär umgebogen werden soll, den assembler-code eben jener original int21 interrupt routine, um sie bis auf kleine Änderungen "nachbauen" zu können.
Ich habe nie mit dem "debug.com" Programm gearbeitet und kenne mich auch mit anderen Programmen, die Ähnliches tun, nicht aus, denke aber, daß debug ein geeignetes Werkzeug sein könnte.
Ich stelle mir vor, mit einem geeigneten Programm an die Speicheradresse des Int21 zu gehen. Diese Adresse findet man in der Interruptvektortabelle.
Kann man dann ab dieser Adresse das Programm veranlassen, ein Dis-assembling bis zu jenem OpCode vorzunehmen (IRET), der die Interruptroutine abschließt und dieses disassembling in eine Datei schreiben? Dann könnte ich es in Ruhe studieren und an geeigneter Stelle die für mich sinnvollen Änderungen vornehmen.
Wenn sich hier jemand mit so einer Aufgabenstellung auskennt bitte möglichst Schritt für Schritt beschreiben, wie das zu machen ist. Ich wäre sehr dankbar!
Ich brauche keine Hilfestellung wie man in TP eine Interruptroutine schreibt und einsetzt, es geht mir nur darum an den code des int21 zu kommen, der für die abwicklung der Unterfunktion 3fH zuständig ist.
Hintergrund: Ich möchte in TurboPascal einen Ersatz für die blockread(params....) Prozedur schreiben, welcher eine Datei einliest, deren Bytes bevor sie noch im RAM landen aber on-the-fly verändert TPs original blockread() ruft dazu den int21 Unterfunktion 3FH auf. 3FH holt ein Byte nach dem anderen von der Datei und schreibt das Byte an eine Speicheradresse, die ihr beim Aufruf übergeben wurde. Meine Interruptroutine soll nun den int21/3fh ersetzen. Zu 99% wird das einfach eine Kopie, vor dem Befehl das Byte in den RAM zu schreiben kommt bei mir aber noch die gewünschte Änderung des Wertes und dann erst das mov es:[di],al oder stosb. Auf diesem Weg erspare ich mir das höchst zeitaufwändige nochmalige Einlesen vom RAM in die CPU, Änderung des Wertes, Zurückschreiben ins RAM.