Hallo zusammen,
im Grunde ist die Idee mit den NOPs ja richtig - es frisst Zeit. So, wie markpot4 das beschrieben hat, geht das ziemlich sicher nicht. Dazu ein paar Gedanken / Fragen.
Wie setzt Du das um?
Man kann die NOPs in einem Basic-Programm mit POKE "an ihre Stelle bringen". Das ist dann relativ aufwändig (OP-Codes sämtlich einzeln an ihre Stelle poken) und was ist dann mit dem ganzen Rest des Programmes?
Oder verwendest Du etwa MASM von Kleinst und Weich nebst Linker oder etwas Vergleichbares?
Durch die NOPs wird das Assemblerprogramm länger. Zumindest unter GWBasic bleiben maximal 64 Bytes bis zum "oberen Ende".
Allgemein: es werden ja auch die Einsprungsadressen nach dem geänderten Code verschoben. Wenn dann die "alten" Einsprungadressen angesprungen werden, dann steht da ja "irgendwas"-es ist dann auch möglich dass das Programm oder die ganze Umgebung abstürzt.
Nach wie vor glaube ich, dass des Pudels Kern in der Windows-Umgebung steckt. Hier wird vieles durch Interrupts gesteuert, und es ist nur bedingt bis gar nicht nachvollziehbar, ob irgendein "feuernder" Interrupt nicht ein sorgsam gestricktes Timing durcheinanderbringt. Selbst in der DOS-Umgebung werden Interrupts jeweils nach Einsprung mit CLI gesperrt und später mit STI wieder freigegeben.
Bitte beachten: eine DOS-BOX in Windows darf nicht mit einer "uralten" DOS-Umgebung verglichen werden. Bei der DOS-BOX ist immer ein gut Teil Windows noch enthalten.
Es gab einmal eine Version von UMFISH.ZIP mit einer DLL, die die Programmierung unter C (und PASCAL ?) erleichtert hat. Leider ist die frühest habhafte Variante davon heute (seit 2009) schon für den TX-Controller umgeschrieben, ältere Version/en sind im "Nach Server Zusammenbruch Nirvana" verschwunden (fehlschlagende Links aus der ft:pedia heraus). Sollte jemand das lesen und noch einen funktionierenden Link haben: bitte mitteilen!
Und noch einmal einen anderen Ansatz. Unter
https://www.nachthacker.de/ findest Du eine "FTToolbox". Die habe ich selber noch nicht ausprobiert, weil ich den "reine DOS Umgebung" Pfad eingeschlagen und bislang erfolgreich beschritten habe. Die Programmierung findet in C statt - was relativ einfach nach Turbo-Pascal oder Delphi zu übertragen sein sollte. Ziemlich sicher funktioniert das aber nicht in 64 bit Umgebungen - dieses Problem solltest Du mit W98 aber nicht haben.
Zum Thema Messen. Für meine Versuche habe ich das LabNation Mini-Oszilloskop SmartScope (200 bis 400 Euro) verwendet. Das Ding hat einen 8 kanaligen Digitalen Logger und ist für Timing-Messungen hervorragend geeignet. Das im Original-Handbuch meines Interface dargestellte Timing-Diagramm konnte ich damit exakt nachstellen und untersuchen. So bin ich übrigens auf diese Pegel-Geschichte gestoßen - ich habe die Puls-Leitung analog nachgemessen.
Wenn Du Interesse an einer Messkampagne unter Hobbyisten hast, schreibe mir bitte eine PN. Ein Besuch meinerseits ist natürlich ein wenig abhängig von der zu überwindenden Distanz . . .
Freundliche Grüße aus Braunschweig,
Matthias (fiten3rd)